Inscription #65922000#65,922,000pngInscription #65505657#65,505,657svg#64,429,075#52,237,360gltfmint.charactor:zombie#51,278,661brc-1024mint.charactor:malegod#51,278,659brc-1024mint.charactor:asura#51,274,240brc-1024mint.charactor:goddess#51,274,239brc-1024mint.charactor:succubus#51,274,238brc-1024mint.charactor:skeleton#51,269,033brc-1024mint.charactor:divinewarrior#51,268,995brc-1024Inscription #47627702#47,627,702jpgInscription #47627685#47,627,685jpgit's all about the culture. this is new art. you are now minting the concept of a concept.#47,429,422textInscription #46586939#46,586,939pngInscription #46575968#46,575,968pngInscription #45023699#45,023,699html .unwrap(); let sequence_number_to_satpoint = rtx.open_table(SEQUENCE_NUMBER_TO_SATPOINT).unwrap(); let sequence_number = rtx .open_table(INSCRIPTION_ID_TO_SEQUENCE_NUMBER) .unwrap() .get(&inscription_id.store()) .unwrap() .unwrap() .value(); assert_eq!( satpoint_to_sequence_number.len().unwrap(), sequence_number_to_satpoint.len().unwrap(), ); assert_eq!( SatPoint::load( *sequence_number_to_satpoint .get(sequence_number) .unwrap() .unwrap() .value() ), satpoint, ); assert!(satpoint_to_sequence_number .get(&satpoint.store()) .unwrap() .any(|result| result.unwrap().value() == sequence_number)); match sat { Some(sat) => { if self.index_sats { // unbound inscriptions should not be assigned to a sat assert!(satpoint.outpoint != unbound_outpoint()); assert!(rtx .open_multimap_table(SAT_TO_SEQUENCE_NUMBER) #44,984,864text ); let send_txid = context.rpc_server.broadcast_tx(TransactionTemplate { inputs: &[(2, 0, 0, Default::default()), (2, 1, 0, Default::default())], outputs: 2, ..Default::default() }); context.mine_blocks(1); context.index.assert_inscription_location( inscription_id, SatPoint { outpoint: OutPoint { txid: send_txid, vout: 1, }, offset: 0, }, Some(50 * COIN_VALUE), ); } } #[test] fn missing_inputs_are_fetched_from_bitcoin_core() { for args in [ ["--first-inscription-height", "2"].as_slice(), ["--first-inscription-height", "2", "--index-sats"].as_slice(), ] { let context = Context::builder().args(args).build(); context.mine_blocks(1); let txid = context.rpc_server.broadcast_tx(TransactionTemplate { inputs: &[(1, 0, 0, inscription("text/plain", "hello").to_witness())], ..Default::default() }); let inscription_id = InscriptionId { txid, index: 0 }; #44,982,448text Some(100 * COIN_VALUE), ); } } #[test] fn inscription_skips_zero_value_first_output_of_inscribe_transaction() { for context in Context::configurations() { context.mine_blocks(1); let txid = context.rpc_server.broadcast_tx(TransactionTemplate { inputs: &[(1, 0, 0, inscription("text/plain", "hello").to_witness())], outputs: 2, output_values: &[0, 50 * COIN_VALUE], ..Default::default() }); let inscription_id = InscriptionId { txid, index: 0 }; context.mine_blocks(1); context.index.assert_inscription_location( inscription_id, SatPoint { outpoint: OutPoint { txid, vout: 1 }, offset: 0, }, Some(50 * COIN_VALUE), ); } } #[test] fn inscription_can_be_lost_in_first_transaction() { for context in Context::configurations() { context.mine_blocks(1); let txid = context.rpc_server.broadcast_tx(TransactionTemplate { inputs: &[(1, 0, 0, inscription("text/plain", "hello").to_witness())], #44,982,429text ]) ); } #[test] fn list_null_output() { let context = Context::builder().arg("--index-sats").build(); context.mine_blocks(1); let no_value_output = TransactionTemplate { inputs: &[(1, 0, 0, Default::default())], fee: 50 * COIN_VALUE, ..Default::default() }; let txid = context.rpc_server.broadcast_tx(no_value_output); context.mine_blocks(1); assert_eq!( context.index.list(OutPoint::new(txid, 0)).unwrap().unwrap(), List::Unspent(Vec::new()) ); } #[test] fn list_null_input() { let context = Context::builder().arg("--index-sats").build(); context.mine_blocks(1); let no_value_output = TransactionTemplate { inputs: &[(1, 0, 0, Default::default())], fee: 50 * COIN_VALUE, ..Default::default() }; context.rpc_server.broadcast_tx(no_value_output); context.mine_blocks(1); let no_value_input = TransactionTemplate { inputs: &[(2, 1, 0, Default::default())], fee: 0, ..Default::default() #44,982,395textmint2,500.csas#40,369,306brc-20mint2,500.csas#40,369,305brc-20mint2,500.csas#40,369,304brc-20mint2,500.csas#40,369,303brc-20mint2,500.csas#40,369,302brc-20mint2,500.csas#40,369,301brc-20mint2,500.csas#40,369,300brc-20mint2,500.csas#40,369,299brc-20mint2,500.csas#40,369,298brc-20mint2,500.csas#40,369,297brc-20mint2,500.csas#40,369,296brc-20mint2,500.csas#40,369,295brc-20mint2,500.csas#40,369,294brc-20mint2,500.csas#40,369,293brc-20mint2,500.csas#40,369,292brc-20mint2,500.csas#40,369,291brc-20mint2,500.csas#40,369,290brc-20mint2,500.csas#40,369,289brc-20mint2,500.csas#40,369,288brc-20mint2,500.csas#40,369,287brc-20mint2,500.csas#40,369,286brc-20mint2,500.csas#40,369,285brc-20mint2,500.csas#40,369,284brc-20mint1,000.boss#17,829,623brc-20Inscription #12205039#12,205,039svg