From ad2eca11b4a8d91682de3dbde72d4a24fad029b9 Mon Sep 17 00:00:00 2001 From: Rigidity Date: Fri, 17 May 2024 10:35:35 -0400 Subject: [PATCH] Simplify CAT issuance info --- src/parser/puzzles/cat.rs | 6 +----- src/spends/puzzles/cat/issue_cat.rs | 27 ++++++++++++++++----------- src/spends/puzzles/offer.rs | 8 +------- 3 files changed, 18 insertions(+), 23 deletions(-) diff --git a/src/parser/puzzles/cat.rs b/src/parser/puzzles/cat.rs index 5206ea51..51a995ef 100644 --- a/src/parser/puzzles/cat.rs +++ b/src/parser/puzzles/cat.rs @@ -121,11 +121,7 @@ mod tests { asset_id: issuance_info.asset_id, p2_puzzle_hash: puzzle_hash, coin: Coin::new(issuance_info.eve_coin.coin_id(), cat_puzzle_hash.into(), 1), - lineage_proof: LineageProof { - parent_parent_coin_id: issuance_info.eve_coin.parent_coin_info, - parent_inner_puzzle_hash: issuance_info.eve_inner_puzzle_hash, - parent_amount: 1, - }, + lineage_proof: issuance_info.lineage_proof, }; StandardSpend::new() diff --git a/src/spends/puzzles/cat/issue_cat.rs b/src/spends/puzzles/cat/issue_cat.rs index 119c0f1b..8d3fc5b3 100644 --- a/src/spends/puzzles/cat/issue_cat.rs +++ b/src/spends/puzzles/cat/issue_cat.rs @@ -1,7 +1,8 @@ use chia_bls::PublicKey; use chia_protocol::{Bytes32, Coin, CoinSpend}; -use chia_puzzles::cat::{ - CatArgs, CatSolution, CoinProof, EverythingWithSignatureTailArgs, CAT_PUZZLE_HASH, +use chia_puzzles::{ + cat::{CatArgs, CatSolution, CoinProof, EverythingWithSignatureTailArgs, CAT_PUZZLE_HASH}, + LineageProof, }; use clvm_traits::clvm_quote; use clvm_utils::CurriedProgram; @@ -16,8 +17,8 @@ pub struct IssueCat { pub struct CatIssuanceInfo { pub asset_id: Bytes32, + pub lineage_proof: LineageProof, pub eve_coin: Coin, - pub eve_inner_puzzle_hash: Bytes32, } impl IssueCat { @@ -56,10 +57,10 @@ impl IssueCat { program: tail, solution: NodePtr::NIL, })?) - .finish(ctx, asset_id, amount) + .finish_raw(ctx, asset_id, amount) } - pub fn finish( + pub fn finish_raw( self, ctx: &mut SpendContext, asset_id: Bytes32, @@ -80,13 +81,13 @@ impl IssueCat { })?; let puzzle_hash = ctx.tree_hash(puzzle).into(); - let coin = Coin::new(self.parent_coin_id, puzzle_hash, amount); + let eve_coin = Coin::new(self.parent_coin_id, puzzle_hash, amount); let solution = ctx.serialize(CatSolution { inner_puzzle_solution: (), lineage_proof: None, - prev_coin_id: coin.coin_id(), - this_coin_info: coin, + prev_coin_id: eve_coin.coin_id(), + this_coin_info: eve_coin, next_coin_proof: CoinProof { parent_coin_info: self.parent_coin_id, inner_puzzle_hash, @@ -97,7 +98,7 @@ impl IssueCat { })?; let puzzle_reveal = ctx.serialize(puzzle)?; - ctx.spend(CoinSpend::new(coin, puzzle_reveal, solution)); + ctx.spend(CoinSpend::new(eve_coin, puzzle_reveal, solution)); let chained_spend = ChainedSpend { parent_conditions: vec![ctx.alloc(CreateCoinWithMemos { @@ -109,8 +110,12 @@ impl IssueCat { let issuance_info = CatIssuanceInfo { asset_id, - eve_coin: coin, - eve_inner_puzzle_hash: inner_puzzle_hash, + lineage_proof: LineageProof { + parent_parent_coin_id: eve_coin.parent_coin_info, + parent_inner_puzzle_hash: inner_puzzle_hash, + parent_amount: eve_coin.amount, + }, + eve_coin, }; Ok((chained_spend, issuance_info)) diff --git a/src/spends/puzzles/offer.rs b/src/spends/puzzles/offer.rs index 187a7c4e..9235cdfd 100644 --- a/src/spends/puzzles/offer.rs +++ b/src/spends/puzzles/offer.rs @@ -207,12 +207,6 @@ mod tests { let assert_cat = offer_announcement_id(&mut ctx, cat_settlements_hash.into(), cat_payment.clone())?; - let lineage_proof = LineageProof { - parent_parent_coin_id: parent.coin_id(), - parent_inner_puzzle_hash: cat_info.eve_inner_puzzle_hash, - parent_amount: 1000, - }; - let inner_spend = StandardSpend::new() .condition(ctx.alloc(CreateCoinWithMemos { puzzle_hash: SETTLEMENT_PAYMENTS_PUZZLE_HASH.into(), @@ -225,7 +219,7 @@ mod tests { .inner_spend(&mut ctx, pk)?; CatSpend::new(cat_info.asset_id) - .spend(cat, inner_spend, lineage_proof, 0) + .spend(cat, inner_spend, cat_info.lineage_proof, 0) .finish(&mut ctx)?; let cat_puzzle_hash = CurriedProgram {