From c2cc8ee741c303f234fe3d7b2a55423a0daced9d Mon Sep 17 00:00:00 2001 From: Son Pin Date: Mon, 11 Mar 2024 00:39:48 +0700 Subject: [PATCH 1/3] test with mint entry included both term and deadline --- src/runes.rs | 293 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 293 insertions(+) diff --git a/src/runes.rs b/src/runes.rs index 1de3fb8544..6464dd56f1 100644 --- a/src/runes.rs +++ b/src/runes.rs @@ -4753,6 +4753,298 @@ mod tests { ); } + #[test] + fn open_etchings_with_end_before_deadline() { + let context = Context::builder().arg("--index-runes").build(); + + context.mine_blocks(1); + + let txid0 = context.rpc_server.broadcast_tx(TransactionTemplate { + inputs: &[(1, 0, 0, Witness::new())], + op_return: Some( + Runestone { + etching: Some(Etching { + rune: Some(Rune(RUNE)), + mint: Some(Mint { + limit: Some(1000), + deadline: Some(5), + term: Some(2), + ..Default::default() + }), + ..Default::default() + }), + ..Default::default() + } + .encipher(), + ), + ..Default::default() + }); + + context.mine_blocks(1); + + let id = RuneId { + height: 2, + index: 1, + }; + + context.assert_runes( + [( + id, + RuneEntry { + etching: txid0, + rune: Rune(RUNE), + timestamp: 2, + mint: Some(MintEntry { + deadline: Some(5), + end: Some(4), + limit: Some(1000), + ..Default::default() + }), + ..Default::default() + }, + )], + [], + ); + + let txid1 = context.rpc_server.broadcast_tx(TransactionTemplate { + inputs: &[(2, 0, 0, Witness::new())], + op_return: Some( + Runestone { + edicts: vec![Edict { + id: u128::from(id), + amount: 1000, + output: 0, + }], + claim: Some(u128::from(id)), + ..Default::default() + } + .encipher(), + ), + ..Default::default() + }); + + context.mine_blocks(1); + + context.assert_runes( + [( + id, + RuneEntry { + rune: Rune(RUNE), + supply: 1000, + timestamp: 2, + mints: 1, + etching: txid0, + mint: Some(MintEntry { + deadline: Some(5), + end: Some(4), + limit: Some(1000), + ..Default::default() + }), + ..Default::default() + }, + )], + [( + OutPoint { + txid: txid1, + vout: 0, + }, + vec![(id, 1000)], + )], + ); + + context.rpc_server.broadcast_tx(TransactionTemplate { + inputs: &[(3, 0, 0, Witness::new())], + op_return: Some( + Runestone { + edicts: vec![Edict { + id: u128::from(id), + amount: 1000, + output: 0, + }], + claim: Some(u128::from(id)), + ..Default::default() + } + .encipher(), + ), + ..Default::default() + }); + + context.mine_blocks(1); + + context.assert_runes( + [( + id, + RuneEntry { + etching: txid0, + rune: Rune(RUNE), + supply: 1000, + timestamp: 2, + mint: Some(MintEntry { + limit: Some(1000), + deadline: Some(5), + end: Some(4), + ..Default::default() + }), + mints: 1, + ..Default::default() + }, + )], + [( + OutPoint { + txid: txid1, + vout: 0, + }, + vec![(id, 1000)], + )], + ); + } + + #[test] + fn open_etchings_with_deadline_before_end() { + let context = Context::builder().arg("--index-runes").build(); + + context.mine_blocks(1); + + let txid0 = context.rpc_server.broadcast_tx(TransactionTemplate { + inputs: &[(1, 0, 0, Witness::new())], + op_return: Some( + Runestone { + etching: Some(Etching { + rune: Some(Rune(RUNE)), + mint: Some(Mint { + limit: Some(1000), + deadline: Some(4), + term: Some(3), + ..Default::default() + }), + ..Default::default() + }), + ..Default::default() + } + .encipher(), + ), + ..Default::default() + }); + + context.mine_blocks(1); + + let id = RuneId { + height: 2, + index: 1, + }; + + context.assert_runes( + [( + id, + RuneEntry { + etching: txid0, + rune: Rune(RUNE), + timestamp: 2, + mint: Some(MintEntry { + deadline: Some(4), + end: Some(5), + limit: Some(1000), + ..Default::default() + }), + ..Default::default() + }, + )], + [], + ); + + let txid1 = context.rpc_server.broadcast_tx(TransactionTemplate { + inputs: &[(2, 0, 0, Witness::new())], + op_return: Some( + Runestone { + edicts: vec![Edict { + id: u128::from(id), + amount: 1000, + output: 0, + }], + claim: Some(u128::from(id)), + ..Default::default() + } + .encipher(), + ), + ..Default::default() + }); + + context.mine_blocks(1); + + context.assert_runes( + [( + id, + RuneEntry { + rune: Rune(RUNE), + supply: 1000, + timestamp: 2, + mints: 1, + etching: txid0, + mint: Some(MintEntry { + deadline: Some(4), + end: Some(5), + limit: Some(1000), + ..Default::default() + }), + ..Default::default() + }, + )], + [( + OutPoint { + txid: txid1, + vout: 0, + }, + vec![(id, 1000)], + )], + ); + + context.rpc_server.broadcast_tx(TransactionTemplate { + inputs: &[(3, 0, 0, Witness::new())], + op_return: Some( + Runestone { + edicts: vec![Edict { + id: u128::from(id), + amount: 1000, + output: 0, + }], + claim: Some(u128::from(id)), + ..Default::default() + } + .encipher(), + ), + ..Default::default() + }); + + context.mine_blocks(1); + + context.assert_runes( + [( + id, + RuneEntry { + etching: txid0, + rune: Rune(RUNE), + supply: 1000, + timestamp: 2, + mint: Some(MintEntry { + limit: Some(1000), + deadline: Some(4), + end: Some(5), + ..Default::default() + }), + mints: 1, + ..Default::default() + }, + )], + [( + OutPoint { + txid: txid1, + vout: 0, + }, + vec![(id, 1000)], + )], + ); + } + #[test] fn open_etchings_can_be_limited_to_deadline() { let context = Context::builder().arg("--index-runes").build(); @@ -4895,6 +5187,7 @@ mod tests { ); } + #[test] fn open_etching_claims_can_use_split() { let context = Context::builder().arg("--index-runes").build(); From a1d13e0badf6d9c40f976c19d7469dd238fee5d1 Mon Sep 17 00:00:00 2001 From: raphjaph Date: Sun, 17 Mar 2024 16:09:00 -0700 Subject: [PATCH 2/3] Amend --- src/runes.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/runes.rs b/src/runes.rs index 44ab7bbfce..be453183c6 100644 --- a/src/runes.rs +++ b/src/runes.rs @@ -4834,7 +4834,7 @@ mod tests { amount: 1000, output: 0, }], - claim: Some(u128::from(id)), + claim: Some(id), ..Default::default() } .encipher(), @@ -4880,7 +4880,7 @@ mod tests { amount: 1000, output: 0, }], - claim: Some(u128::from(id)), + claim: Some(id), ..Default::default() } .encipher(), @@ -4980,7 +4980,7 @@ mod tests { amount: 1000, output: 0, }], - claim: Some(u128::from(id)), + claim: Some(id), ..Default::default() } .encipher(), @@ -5026,7 +5026,7 @@ mod tests { amount: 1000, output: 0, }], - claim: Some(u128::from(id)), + claim: Some(id), ..Default::default() } .encipher(), @@ -5206,7 +5206,6 @@ mod tests { ); } - #[test] fn open_etching_claims_can_use_split() { let context = Context::builder().arg("--index-runes").build(); From 29e20c2b2628b6585ad34d981baf490fc813afb0 Mon Sep 17 00:00:00 2001 From: raphjaph Date: Sun, 17 Mar 2024 16:14:21 -0700 Subject: [PATCH 3/3] Amend --- src/runes.rs | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/runes.rs b/src/runes.rs index be453183c6..e2b6e8c754 100644 --- a/src/runes.rs +++ b/src/runes.rs @@ -4788,7 +4788,6 @@ mod tests { limit: Some(1000), deadline: Some(5), term: Some(2), - ..Default::default() }), ..Default::default() }), @@ -4817,7 +4816,6 @@ mod tests { deadline: Some(5), end: Some(4), limit: Some(1000), - ..Default::default() }), ..Default::default() }, @@ -4857,7 +4855,6 @@ mod tests { deadline: Some(5), end: Some(4), limit: Some(1000), - ..Default::default() }), ..Default::default() }, @@ -4902,7 +4899,6 @@ mod tests { limit: Some(1000), deadline: Some(5), end: Some(4), - ..Default::default() }), mints: 1, ..Default::default() @@ -4934,7 +4930,6 @@ mod tests { limit: Some(1000), deadline: Some(4), term: Some(3), - ..Default::default() }), ..Default::default() }), @@ -4963,7 +4958,6 @@ mod tests { deadline: Some(4), end: Some(5), limit: Some(1000), - ..Default::default() }), ..Default::default() }, @@ -5003,7 +4997,6 @@ mod tests { deadline: Some(4), end: Some(5), limit: Some(1000), - ..Default::default() }), ..Default::default() }, @@ -5048,7 +5041,6 @@ mod tests { limit: Some(1000), deadline: Some(4), end: Some(5), - ..Default::default() }), mints: 1, ..Default::default()