Skip to content

Commit

Permalink
Fix for Babbage Mint for preprod
Browse files Browse the repository at this point in the history
Fixes an issue introduced in #327

Fixes: Improper support for indefinite encoded mints + typo causing
problem with multiple mints inside one policy id (not present in the
test case)
  • Loading branch information
rooooooooob committed May 3, 2024
1 parent b0283a8 commit b1c74fb
Showing 1 changed file with 18 additions and 2 deletions.
20 changes: 18 additions & 2 deletions multi-era/rust/src/babbage/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -188,8 +188,7 @@ impl Serialize for BabbageMint {
.to_len_sz(assets.len() as u64, force_canonical),
)?;

let mut inner_key_order = self
.assets
let mut inner_key_order = assets
.iter()
.enumerate()
.map(|(i, _)| i)
Expand All @@ -216,7 +215,17 @@ impl Serialize for BabbageMint {
)?;
}
}
i_encs
.as_ref()
.map(|(_, e, _)| *e)
.unwrap_or_default()
.end(serializer, force_canonical)?;
}
self.encodings
.as_ref()
.map(|encs| encs.len_encoding)
.unwrap_or_default()
.end(serializer, force_canonical)?;
Ok(serializer)
}
}
Expand Down Expand Up @@ -293,4 +302,11 @@ mod tests {
let babbage_block = BabbageBlock::from_cbor_bytes(&bytes).unwrap();
assert_eq!(bytes, babbage_block.to_cbor_bytes());
}

#[test]
fn babbage_tx_hash_mismatch_duplicate_mint() {
let bytes = hex::decode("85828a1a0002b9921a00a322425820581063827053ccc7d81dbac8141d9c2c509516bafd5599d9c15daa9b2eb15ce65820f270c16659735ec4b65d15d1cbef937e50e608585ac3b71a4cd117fdb761624e5820ebb507d7e0b0399ffced1a35297203134f8a2a85b616c3591c452cbefa61b88a825840199fd347919a2befa7995d869744808df54d5f9608a1de89d25e0b2837386861ea57394e0c13d858ae9e1b3bc5ffb952399fb258d2d670748ff0533a9547f03858503721a2acd37fc0e328f3749b7b4b797d37deb9c778d33b3058ee2fb631531f137d3320449dfedb74259269a1c5da254efe3afaf4626e86c470684353b7a9b7381d978a5a7d66abca9adad56b79bd6d02190bf458203648f02334769911ab0d9422311675c125cd9bd3871746b17c88ef7b0c3afe13845820e947674a4b27747fbdb5512190d79643e013cbb2ffc9346b49bd65e093cadd7301183c5840926b676216ae9db730e2d2ae9fe0308152dc5468acb3d573d7ddd0fedda8ed760f0058110a41c3db2b526e2365062f6f78f8397b5d76d5dacf07d3304d3bf7058207005901c0c3f9dcb6e03112878798fc303808f7c3ee12b6351674514d0ef0343ce9ed5011712431fc59b1c86a637e40c13191b29bdb29ece2ca14d44d21a5556528af640fb0b308ded9d94eca36532dea9fcb00f7f64792216090422ce127021da8a6fd3577d545c8cd4b7e7dcf219bbcda733e709ca8acf7f45990076820cfa8777776708422e34683c07b4f0e25689d990cc40626a44b7f6eddbcda58423416461648efb319189d242ee580efc4c89ec46de3a715ccd57c68d5e59b54759cee2d5be64b862eee54f19f06fc0e5388a7e1abbf7716cb7ef3bf8d4fad009a77de8233ba187cc0a4712c28b90b80885649eda709180911d23b71e1d494b80f4d6bb1aa5d6511dfdc7de150eed972facf595801eba808adb730ec5111bd36175a29c08e8643e2da2fcbe41a97049abd814bfbb12c895f1e55f6c9b8c81b3e3e1e276fc74ae1d1b5b7e8c26d763835c10880b6996d64aeb443e64c13c8cc1518ba9befce9660334d061489404e282ef00967f097cc64f9ef802193cecb31c04b1779a2605a5132ee4c168c60f152bda320a4c82c348559cb3600321930f5c9cbcbcddf64582ada49fc04c5a4f4ccdf58a47d4a025270e45dedf923f87baee972b0e3549b75d082a600838258207fc36e487fc641ad98963b7ec45d94ef6729acb15d993c67b564c1f845eb837e008258207fc36e487fc641ad98963b7ec45d94ef6729acb15d993c67b564c1f845eb837e028258207fc36e487fc641ad98963b7ec45d94ef6729acb15d993c67b564c1f845eb837e030184825839005ecffdc54a493a3f11b149c922ddb6c0f2622efc5e1651ccc4d4bfaf0298b4b8579f55b767c32f8137067d7f8a83879802317b10ce954e911a140cacd882583900377c5ff6ad6ab6814e108a9f7c298d467ab071d94fe02a8d0ce1f1812cf859673b01e57891f55a55ca600c7428f47e9b94a94ccbbfdb8c771a00839b68825839005ecffdc54a493a3f11b149c922ddb6c0f2622efc5e1651ccc4d4bfaf0298b4b8579f55b767c32f8137067d7f8a83879802317b10ce954e91821a001a4ec4a1581c99027c7af372116f0716ee02008739ec51224bcfdd54398ec16217efa5484d6565726b61743401484d6565726b61743601494d6565726b6174313501494d6565726b6174323201494d6565726b6174333501825839005ecffdc54a493a3f11b149c922ddb6c0f2622efc5e1651ccc4d4bfaf0298b4b8579f55b767c32f8137067d7f8a83879802317b10ce954e91821b000000023eeaf5a2a1581c99027c7af372116f0716ee02008739ec51224bcfdd54398ec16217efa3484d6565726b61743201494d6565726b6174313801494d6565726b6174333201021a00044271031a00a32588075820e17f14914a4c11738d1a391ac645b8a8c077acf8ef3b06e7be52d3007058002f09a1581c99027c7af372116f0716ee02008739ec51224bcfdd54398ec16217efa5484d6565726b61743401484d6565726b61743601494d6565726b6174313501494d6565726b6174323201494d6565726b6174333501a40081825820ad0b622e745b250833b2d9b5ba097f1eda98af919df7f79bf06db0200530df16000182a200581d609e5614893238cf85e284c61ec56d5efd9f9cdc4863ba7e1bf00c2c7d011b0067d5c8983f93cca2005839009e5614893238cf85e284c61ec56d5efd9f9cdc4863ba7e1bf00c2c7dd12d53af25a20a84981b873d3117cc21324ba035366a466c330ff790011b000000e8d4a51000021a00029309048182008200581cd12d53af25a20a84981b873d3117cc21324ba035366a466c330ff79082a2008282582033846103a1478022104669a9653dcca4c8b93ceb1ddc1045027df1a871ddabca584059e5b2c5032d044d522f7b15d5bbc957ac6d28f2f26b13ff294366a31da52dde6a3ce42b3c57719b5f98ff9e57c776e8bd3285f02ecfc69d4d1eaf2f98d27a0d825820ddc1c2e930eda0c6df23fd811b9ff40059b88338582611b966a3bd156a49cfff58401cd7f2e92a465f21981b74b253ceed7a7d48147f49de21dd9cfb99caf320a0e84a14e0b18e21fd83909c68a41d558eb3ab396dcd7a3bdc87cc4efcb2759d920001818201828200581c2b354356304a1ccb513a8bc12b278e3c4f421c692c89cf7855a2739e82051a056557faa1008182582069a14b724409e0ceef671c76ec4f8bce7509b5919bb971b3855bf92ca56532225840c180d20a83b5879609fa35c2a423b4bd08642add58e5782102e79e40f833fcb96f5546c3bd776da14717aa41360bb748bffc868a9303c7672814e9a503ccbd07a10082a11902d1a178383939303237633761663337323131366630373136656530323030383733396563353132323462636664643534333938656331363231376566a5684d6565726b617434ad63486174764469616d6f6e642048616e647320536e61706261636b64457965736b4e6f726d616c20426c7565644d61736b644e6f6e6564536b696e66446573657274646e616d656a4d6565726b6174202334654d6f757468724d6f7573746163686520416e6420506970656566696c657381a3637372637835697066733a2f2f516d614c6d566176334577427567657968425a357363387533746b61434a6851647575436b534c35654559647a35646e616d656a4d6565726b6174202334696d656469615479706569696d6167652f706e6765696d6167657835697066733a2f2f516d614c6d566176334577427567657968425a357363387533746b61434a6851647575436b534c35654559647a3566546174746f6f644e6f6e6568436c6f7468696e676a41726d79205368697274696d656469615479706569696d6167652f706e676a4261636b67726f756e646659656c6c6f776d456172204163636573736f7279644e6f6e65684d6565726b617436ad63486174644e6f6e6564457965736b4e6f726d616c20426c7565644d61736b644e6f6e6564536b696e6753747269706564646e616d656a4d6565726b6174202336654d6f757468644772696e6566696c657381a3637372637835697066733a2f2f516d59736d53564d75766245636d473545387873385466445065546f374b5634715346704d5932504a6974487852646e616d656a4d6565726b6174202336696d656469615479706569696d6167652f706e6765696d6167657835697066733a2f2f516d59736d53564d75766245636d473545387873385466445065546f374b5634715346704d5932504a697448785266546174746f6f66447261676f6e68436c6f7468696e676c426c61636b2054757865646f696d656469615479706569696d6167652f706e676a4261636b67726f756e646450696e6b6d456172204163636573736f7279644e6f6e65694d6565726b61743135ad6348617468526963652048617464457965736b4e6f726d616c20426c7565644d61736b644e6f6e6564536b696e6443616d6f646e616d656b4d6565726b617420233135654d6f75746865536e616b656566696c657381a3637372637835697066733a2f2f516d59364c5065766d714d4d3373716334374364637341353241784b4e626f3247527274354a66584b39484d4c33646e616d656b4d6565726b617420233135696d656469615479706569696d6167652f706e6765696d6167657835697066733a2f2f516d59364c5065766d714d4d3373716334374364637341353241784b4e626f3247527274354a66584b39484d4c3366546174746f6f644e6f6e6568436c6f7468696e676e486177616969616e205368697274696d656469615479706569696d6167652f706e676a4261636b67726f756e64694772617665796172646d456172204163636573736f7279644e6f6e65694d6565726b61743232ad63486174644e6f6e6564457965736c4e6f726d616c2042726f776e644d61736b644e6f6e6564536b696e6753747269706564646e616d656b4d6565726b617420233232654d6f7574686853747261696768746566696c657381a3637372637835697066733a2f2f516d665334707a7653466a76687a537a38356b44326547435453525252514e704d736e4b63436f66636f77325a74646e616d656b4d6565726b617420233232696d656469615479706569696d6167652f706e6765696d6167657835697066733a2f2f516d665334707a7653466a76687a537a38356b44326547435453525252514e704d736e4b63436f66636f77325a7466546174746f6f644e6f6e6568436c6f7468696e6766507269657374696d656469615479706569696d6167652f706e676a4261636b67726f756e64644c696d656d456172204163636573736f7279644e6f6e65694d6565726b61743335ad63486174764469616d6f6e642048616e647320536e61706261636b64457965736c4e6f726d616c2042726f776e644d61736b644e6f6e6564536b696e6a476f6c6420416c706861646e616d656b4d6565726b617420233335654d6f757468644772696e6566696c657381a3637372637835697066733a2f2f516d534766323873446f62765178727443453673364b323152776f5143756f7969574c544774436e7a76374e4337646e616d656b4d6565726b617420233335696d656469615479706569696d6167652f706e6765696d6167657835697066733a2f2f516d534766323873446f62765178727443453673364b323152776f5143756f7969574c544774436e7a76374e433766546174746f6f644e6f6e6568436c6f7468696e67694e6176792053756974696d656469615479706569696d6167652f706e676a4261636b67726f756e64694772617665796172646d456172204163636573736f72796d476f6c642045617272696e67738080").unwrap();
let babbage_block = BabbageBlock::from_cbor_bytes(&bytes).unwrap();
assert_eq!(bytes, babbage_block.to_cbor_bytes());
}
}

0 comments on commit b1c74fb

Please sign in to comment.