Bitcoin address: bc1q2s0tachadhf8fnhk0x7ukfvxew46empfqz2ttl

SHOWING: First 60

.run_and_deserialize_output::<send::Output>() .transaction; rpc_server.mine_blocks(1); let output = CommandBuilder::new("wallet inscriptions") .rpc_server(&rpc_server) .run_and_deserialize_output::<Vec<inscriptions::Output>>(); assert_eq!(output.len(), 1); assert_eq!(output[0].inscription, inscription); assert_eq!(output[0].location, format!("{txid}:0:0").parse().unwrap()); } #[test] fn inscriptions_includes_locked_utxos() { let rpc_server = test_bitcoincore_rpc::spawn(); create_wallet(&rpc_server); rpc_server.mine_blocks(1); let (inscription, reveal) = inscribe(&rpc_server); rpc_server.mine_blocks(1); rpc_server.lock(OutPoint { txid: reveal, vout: 0, }); let output = CommandBuilder::new("wallet inscriptions") .rpc_server(&rpc_server) .run_and_deserialize_output::<Vec<inscriptions::Output>>(); assert_eq!(output.len(), 1); assert_eq!(output[0].inscription, inscription); assert_eq!(output[0].location, format!("{reveal}:0:0").parse().unwrap()); #45,161,844textuse {super::*, ord::subcommand::wallet::create, ord::subcommand::Empty}; #[test] fn restore_generates_same_descriptors() { let (mnemonic, descriptors) = { let rpc_server = test_bitcoincore_rpc::spawn(); let create::Output { mnemonic, .. } = CommandBuilder::new("wallet create") .rpc_server(&rpc_server) .run_and_deserialize_output(); (mnemonic, rpc_server.descriptors()) }; let rpc_server = test_bitcoincore_rpc::spawn(); CommandBuilder::new(["wallet", "restore", &mnemonic.to_string()]) .rpc_server(&rpc_server) .run_and_deserialize_output::<Empty>(); assert_eq!(rpc_server.descriptors(), descriptors); } #[test] fn restore_generates_same_descriptors_with_passphrase() { let passphrase = "foo"; let (mnemonic, descriptors) = { let rpc_server = test_bitcoincore_rpc::spawn(); let create::Output { mnemonic, .. } = CommandBuilder::new(["wallet", "create", "--passphrase", passphrase]) .rpc_server(&rpc_server) .run_and_deserialize_output(); #45,161,597text .write("tulip.png", [0; 555]) .write("meow.wav", [0; 2048]) .write( "batch.yaml", format!("parent: {parent_id}\nmode: shared-output\ninscriptions:\n- file: inscription.txt\n- file: tulip.png\n- file: meow.wav\n") ) .rpc_server(&rpc_server) .run_and_deserialize_output::<Inscribe>(); rpc_server.mine_blocks(1); let ord_server = TestServer::spawn_with_args(&rpc_server, &[]); ord_server.assert_response_regex( format!("/inscription/{}", output.inscriptions[0].id), r".*<dt>parent</dt>\s*<dd>.*</dd>.*", ); ord_server.assert_response_regex( format!("/inscription/{}", output.inscriptions[1].id), r".*<dt>parent</dt>\s*<dd>.*</dd>.*", ); let request = TestServer::spawn_with_args(&rpc_server, &[]) .request(format!("/content/{}", output.inscriptions[2].id)); assert_eq!(request.status(), 200); assert_eq!(request.headers().get("content-type").unwrap(), "audio/wav"); } #[test] fn batch_inscribe_respects_dry_run_flag() { let rpc_server = test_bitcoincore_rpc::spawn(); #45,161,298text let output = CommandBuilder::new("--index-sats wallet sats --tsv foo.tsv") .write("foo.tsv", "nvtcsezkbtg") .rpc_server(&rpc_server) .run_and_deserialize_output::<Vec<OutputTsv>>(); assert_eq!(output[0].sat, "nvtcsezkbtg"); assert_eq!(output[0].output.to_string(), format!("{second_coinbase}:0")); } #[test] fn sats_from_tsv_parse_error() { let rpc_server = test_bitcoincore_rpc::spawn(); create_wallet(&rpc_server); CommandBuilder::new("--index-sats wallet sats --tsv foo.tsv") .write("foo.tsv", "===") .rpc_server(&rpc_server) .expected_exit_code(1) .expected_stderr( "error: failed to parse sat from string \"===\" on line 1: invalid digit found in string\n", ) .run_and_extract_stdout(); } #[test] fn sats_from_tsv_file_not_found() { let rpc_server = test_bitcoincore_rpc::spawn(); create_wallet(&rpc_server); CommandBuilder::new("--index-sats wallet sats --tsv foo.tsv") .rpc_server(&rpc_server) .expected_exit_code(1) .stderr_regex("error: I/O error reading `.*`\nbecause: .*\n") #45,023,875textconsidered to have an implicit input equal in size to the subsidy, followed by an input for every fee-paying transaction in the block, in the order that those transactions appear in the block. The implicit subsidy input carries the block's newly created sats. The implicit fee inputs carry the sats that were paid as fees in the block's transactions. Underpaying the subsidy does not change the ordinal numbers of sats mined in subsequent blocks. Ordinals depend only on how many sats could have been mined, not how many actually were. === Specification === Sats are numbered and transferred with the following algorithm: <pre> # subsidy of block at given height def subsidy(height): return 50 * 100_000_000 >> height // 210_000 # first ordinal of subsidy of block at given height def first_ordinal(height): start = 0 for height in range(height): start += subsidy(height) return start # assign ordinals in given block def assign_ordinals(block): first = first_ordinal(block.height) last = first + subsidy(block.height)#45,023,734textmint2,500.csas#40,451,135brc-20mint2,500.csas#40,451,124brc-20mint2,500.csas#40,451,108brc-20mint2,500.csas#40,451,035brc-20mint2,500.csas#40,451,007brc-20mint2,500.csas#40,451,002brc-20mint2,500.csas#40,450,969brc-20mint2,500.csas#40,450,957brc-20mint2,500.csas#40,450,939brc-20mint2,500.csas#40,450,929brc-20mint2,500.csas#40,450,916brc-20mint2,500.csas#40,450,890brc-20mint2,500.csas#40,450,811brc-20mint2,500.csas#40,450,750brc-20mint2,500.csas#40,450,735brc-20mint2,500.csas#40,450,734brc-20transfer275,000.turt#8,891,673brc-20transfer200,000.turt#8,664,583brc-20transfer75,000.turt#8,662,121brc-20transfer10,080.vmpx#4,575,190brc-20mint420.vmpx#4,556,885brc-20mint420.vmpx#4,556,823brc-20mint420.vmpx#4,556,698brc-20mint420.vmpx#4,556,630brc-20mint420.vmpx#4,556,616brc-20mint420.vmpx#4,556,572brc-20mint420.vmpx#4,556,387brc-20mint420.vmpx#4,556,343brc-20mint420.vmpx#4,556,233brc-20mint420.vmpx#4,556,198brc-20mint420.vmpx#4,556,153brc-20mint420.vmpx#4,556,051brc-20mint420.vmpx#4,555,767brc-20mint420.vmpx#4,555,729brc-20mint420.vmpx#4,555,690brc-20mint420.vmpx#4,555,580brc-20mint420.vmpx#4,555,549brc-20mint420.vmpx#4,555,530brc-20mint420.vmpx#4,555,478brc-20mint420.vmpx#4,555,444brc-20mint420.vmpx#4,555,370brc-20mint420.vmpx#4,555,330brc-20mint420.vmpx#4,555,027brc-20mint420.vmpx#4,555,026brc-20transfer15,120.drac#4,268,465brc-20mint1,260.drac#4,217,986brc-20mint1,260.drac#4,217,910brc-20mint1,260.drac#4,217,886brc-20mint1,260.drac#4,217,876brc-20mint1,260.drac#4,217,870brc-20mint1,260.drac#4,217,867brc-20mint1,260.drac#4,217,853brc-20mint1,260.drac#4,217,845brc-20mint1,260.drac#4,217,833brc-20mint1,260.drac#4,217,828brc-20