Skip to content

Conversation

@Sdoba16
Copy link
Collaborator

@Sdoba16 Sdoba16 commented Jan 21, 2026

This PR is solving the verification for the #36
Solution described in #36 (comment)

@Sdoba16 Sdoba16 self-assigned this Jan 21, 2026
@Sdoba16 Sdoba16 marked this pull request as ready for review January 26, 2026 14:32
use simplicityhl::elements::pset::serialize::Deserialize;
use simplicityhl_core::{Encodable, SimplicityNetwork};

let option_arguments_str = "fcb7a36f69fcbfaa6f69fb10276418cc0bdc4df8f5df06800e3b492aff5bf5f5295b2664157a4335c5430e88fe2c499a818545f6bae39fc03b637f2a4e1e64e590cac1bc3a6f6d71aa4443654c14391c4baad811a338680dbcb604d12a25d5f572c3de85eda0fe7bd1a14b07666447e71872bb48043817401452a240bd62b71e2fc281238f22734500deba8062e10200cb099b2e5aab3b14397c50c4a76aac7dbadc984e2ccd2354d18b38360ef5a4e10600008000000000000000000000000000000000000000000000000000000000000000000000000000391c4baad811a338680dbcb604d12a25d5f572c3de85eda0fe7bd1a14b07666400010000000000000001cb099b2e5aab3b14397c50c4a76aac7dbadc984e2ccd2354d18b38360ef5a4e10600008000000000000000000000000000000000000000000000000000000000000000000000000000391c4baad811a338680dbcb604d12a25d5f572c3de85eda0fe7bd1a14b07666400010000000000000001040acd801ca88503da6cb3fbdefd1d9719b2f30c22130a673990ac331f9c31c4d18d0818b8c0a63b902f27bd4bc2e39ebe503ae787bb1f09757cd3e6c4734cb5d4c449029ee02144db462faa513f09ccfcd3e47bb121200fd3ee65809f0c36153a40e776225120fdf0f0f7950f613f7dd3cec55a9f184bc7bba22c2aec9dc21099e2fa7979f2060be29769950488b86587bf642cb81aa18be2c905f1ad323ee49a2ef5082074f82b09d906aacce8803d5718539d8ad8fc76b3733bf3bffe3239d03b899070891fe2960364f73da445ba97cd0991ff59a86bc7f2f2422d964db4ba08678b6913a3e87f7f225120fdf0f0f7950f613f7dd3cec55a9f184bc7bba22c2aec9dc21099e2fa7979f20601499a818545f6bae39fc03b637f2a4e1e64e590cac1bc3a6f6d71aa4443654c1401000000000007636400225120d46b80c1cbfac814f80e2d69ac0120ed3fab79b31445326e6e9fde1113f5d54301499a818545f6bae39fc03b637f2a4e1e64e590cac1bc3a6f6d71aa4443654c1401000000000000012400000000000000000440fd67a574e05ba788c8433df31aaeda51b1d190fd24dffb539e584b18461bf493571ee5a628dc4b68664cf71e6424a99c7e6b13b37e20ecab2156a8b342d03e8c76e06922d3d7831516611fba7dfd5ca2b0c39696aa7b0a9fed4819cf7e3879da4a49b9015a0a15c38735d772f07a13a9e8c81c672ff1b725794653e7b2a65b5569ecb5da314478a8c43860188599c502d8d8c399c5510915d0998008ab858317852c27b030a85d612fd7152321658700adbbf004300c4020d08e0537d066b7cc1e7631ad43e2b8515d63c69ef23749a364981385802b8b4821bfebc18a8b308fdd3efeae515861cb4b553d854ff6a40ce7bf1c3ced2524dc80ad0000000440fb1b2df0bce5c43ef35923b81493f53427fa4355a41290277cffe1d201fea2015f94e0b9e97533e0ef6c641ceb3d62dde6ed76729b5eb2e7b42238c1f826649376e06922d3d7831516611fba7dfd5ca2b0c39696aa7b0a9fed4819cf7e3879da4a49b9015a0a15c38735d772f07a13a9e8c81c672ff1b725794653e7b2a65b5569ecb5da314478a8c43860188599c502d8d8c399c5510915d0998008ab858317852c27b030a85d612fd7152321658700adbbf004300c4020d08e0537d066b7cc1e7631ad43e2b8515d63c69ef23749a364981385802b8b4821bfebc18a8b308fdd3efeae515861cb4b553d854ff6a40ce7bf1c3ced2524dc80ad0083040007f6689fde926b3f582187af0027e7b6a8a3737cc5c5a54357582caf7e76cba2dcae069b510d6e399c2ea2a5d2296d01ef80609a82128ac2a0c65a7fe0f9137626c54c1c39968212312d5de8e8dc3c0e4ed5698e6d643ad14d50a358a303b064d4455cf58cbd657d86921f2ff072f053b180f7b73e1599ffb3e75e9d2869a60bf8fd4e10603300000000000000012e279300db745b9b529f64b5e2dceaba12db7f696d173356f195f5e81489025aa5b2bc06ffda6f4b4bd90ca6c7ce7e7ad8c4415a1825cfe18442ac2ec4950a3fd31c89a07bfa1a955789be416c6cebd57a070cdb2a138859e5d8dedd50c1b08b9727aaaf769e6e506c5ee9faa859b86122a3eee8782822f10b1244774b68183d12590c94d59cc0b391e5ee8804fb1e12aec11cb500294656e043dbbf296526bd2c4845ea6d99310ab4b513f3892239a083cd0279cba2694f78ada9c50b33c07a25942e10ec03b16a7ae33bdb20a537a9031dea8559d5d9a9393dbe92dba0b2d69ba3ed7a2ca066c9fe96f3b1cb1ecd74793d97d86c87c6fa2aa93a4c6200024ded994dd5416b272a1942b71e2711fbdfc5fe772ec27edc69322f96cea68b061bcf84628330aa21d43a4f6b6259acd84c260e74fd65c674e42b2c982c0002c51728b3f78f3630fe4a8e7011d842d2526139a1f515cb78db33ad52f7d7c08ae255826d18bdd20d6bcac46431f4d101b9aabfde491c4ca404f7223505d07ecde07bd8ced8ed4f580b192eceb302ece4a4063a56b43f9125cd0d2b43d7dad59d9956b18b7f519f13ddd8eea3b2d56b382b40ccf1f6c0ac60197e3b0cbd9ba668339a44aebeac6770e4dae081c251452dcfdd1a5bd1a6ad0cd5c44e9182ac1f5f3d54b1d9e6d96b55145fc19398ca46eb4d4b61cba500b479b203e889a315f9fc73c7a066f78cd44c36c05a6d8f8f58a92a76875881dff076d5b99aa547bb87c1dd143df05f4fc378cc82d23ab5a643eb7edfb647a958ea97eaf563b4676aad24c0fbb9d0923aeb7ae65a81519601941a920952aaa98da5977c4c22523093c76f78fb1683e19fbfa6e65b414044bfad9d335d70a21168a5c9a276f1220c75a9f62089b11e8c26d25b513b2906c79169e942b0020af3566fd46806a3ed29e1c368e1767af2d0d57cc86f142264898ec15d8c5afd02bf5cfcb6b2d85ccfc7f487f430f0fed85956c3c59d4c061c8ea8984a10c6c07d2bfce207efa32455bc39bd6dc355fa55c43dbd7ed9254ed306a63fda47cbf7bf5d51412ab194e4a3be1172b38019f54dce2e9464c5b7f368053e57cec113ca27d3f112f835051f8510bbb62b90f954c42bce2fdf7b5460986c04cd334c8d51939b86d115c6aeaec0365411e593f01f269c942ce6ff9c7bf4e9c4ad547fc1fa8b24e8f6646e82e36bea79e0b673dfc1d9c836fab7bb0a9243b392db1e34e0793cfdcaa19dfb88cbd33a9545aa466fddd004e488deeb3cf99261f697cb7730906ccf6f60d014d0b8b156609e7a78a20724c833584ee1c7ec4bcd30d63a1754095c9e978e65d138c76bdd25d7e9e8e0f1f049e75f90940dd952be3937449ba94cf20706c2f94c62b024ec1c0926d25d307cb2d8916f4cae9054a71885fd36a1a225fd10aaa7666e8ddb78ce41ed6e300ef2ab539a92de0e5720ea894c6012a554f52aefc4e8082645df89e75673a7a7e1ef25aa1165d7b1ee53197bf2d867c548e5acab9d47a0cf6edb685fbd186d4231fe493a9a1ba8e5455b1aaa7cf425aefcb7bd3c170dcb74e56a35bbd4cde5cf718150d0467179acd2f3fa3a8d92c5407fda0b2812e33c07b5105d5ddb0e1774a588292376340e306b68f854a9c37ac1cbbeb1756ad8bbd9d6a54252e26f59b29f5787e9cccbb863593a9b26ab5284fcfe89f117ba1da1e7de8300db6657be7180893ef777e17313ab481cd670b63adcf53c752e43e8d40f29251cf248325d1a593a947c99b885fd255aaa63b2a20e4abc47ec5acb5c5f8a3bd206dbafd8d75cba9dcccc55b86291328ff252d7faba33ac3c48b08fc59976f54ceb34be3f7b172ad1fb5d2a4c0639b065419b2e3519dbce82ddb8f8b2ebf282437a8e5bce539b79b60f3f41990843ada1750596d33a822d53b063a2415f40abdbdeaf1115561cbb2cb377cc6f360bd789452628aa8d37e3fb07013bce889e3c409c7ceed84144e00b44e1fb66905cf37cb4df3e7b3ccbdf242c4e7098089df422d612872382dbc73ae856395d11fdc3853492d5b0f4433c0e3279bbfaa3e6e015861d92c82cf37606edc71c9f3348a955d764c9b7ad4362a181b4db4e943dfdc132be620ddb5e972d81e70c3667767e26f98ab093ca2c2da0dee971e628e530d6d3b98195009ebda6976902b8b0c8bfb81ea2ca145b9ce9ac2c34b8e30c3e265cf4abc7ec1d3f9471733c4b7d32f51c03fbb282ad261b60111aa3eafb511039632a6eaf2bd0a9cb7065503e448c3d215f0d6810bb2c563799b6041f230edba52e6756556f8d1bbffc5cf89068b7e11bedcf4c6326650f4b144b1b76499aa960a7ceaacf2a9b59abd20a6244421f492df03c6a6efaa59af40cecb85df5feddb7f80fbf0bfd267eb136ca0b51da88570abcec68fa05243118d22442fa2460952bb217120e12643fb86991313afa8994d859ad4080bfc9b9896cd1c73f6224b233ab1d4745a8ff31fc143e887bcc8ed153c332ba54409d3e7ddef68a7b1b95eee61dd3ebeab763ce867ebf4d3d70925fb6ae9b45de7311d70a3ec0e118974d03aeb8b4dc712333ede498d338da8212834248c5681e091ca35b910f1c46810549be4e3f605adcaefea3e59a9fa1b6e38a803076cbacc9c955fec0076b2e1fb267c814618470c6c71fe63c80a11861214e0721fa966cd11ce965533701130469ebf7de2fee32d9522397bc7939b3a6f57ee557463b25679c0496e6d6e5cce3703fd16617ef790b46690c8613104974a862fa4ac1c3da578f4120fe0d86a47f3c44dab88bd1777273f281625196f5223050769dc8d58f3baa0e93c540102baa6a5428e40b60d9bbfd43d9740e5a9349539d28e60f9640c4679367ba03dc7a36ba15828fe3c04673ee58c98dcbfde1f1d609ccdf4cd18dee330900cbfd8bdda0e5f5cdb3be0a2ec43a056683c7fdf91f6237eb67eb032fe8128d5168d384c8050c31f1e9b7e4c73334dbd2b663a296682ec9448acfc5f230c1730ed46c5386da2ba5e5f6a4471f1a2519e8e33ae64f9b1eecef0fedc31db17fb840fd38fa384dd9cbd182c942c9e02f17a2d0dfcb034afb06337291bebe92c8359b419d432ae9f5472727004a302277a851753ae75f38d5dc7a7b368164d64b8c0e3189e8226652467e36c4788023772b2efc93e3813e5f3dcef2b636cb85e50047892a4e0dde2ede1298976154d46bbb8ad99e10386d19d1da4a0b2e304cd5a0858dabe71580af9ea974d3a5df27a21c63db54f4a97516bd7f7347602b67415f44b5a082adb78eb1e5ccf55b105e294d643b053831a7324ee0db4d9c84c69e79be5cfdea9db2364bbd2b3aa0631018a684eb3414f05573d35c6ad224b5961eaabc5c09d4511d93d7dfbdc90b4cacd06a572e57f85e16b1e7a8017fb3b3f9c9ec8bbca684c1556786f49f2ba7179dcec0f6ec707316b0657f8bf2e09a080733432349c705c7c75bc953cef942e4b789fd5988624bf1e0d9fa0b3ba46cc11409ac25f2d61b7cb029a0ea0b225c531413e24f2a4ff161b5cd61c678ac40d69180dd63f66d1193770a8acddc077c828f0b2af9eaee3cca085d9d170b3454b9aa6b68d46a741074b7894f5d6e1e22bc19bc1b6711c9d74f706fb03d1e8c5270db6448c59dbfeed94cc32288114f572da2711d2c560ecd0315f72c3589ef242bd38c1d7dff1b7bad40aaeceb48346c12cc2b9a7c8a38c68fd4318c72eb6e5b1f28f506397b3a420d6f2cc34066e0fa3e6d2a4b24a78996378f2cb809405e3b9d1e508a9bcf1df0640731aa6cf6d0a5a7533f77e70d632730d2631ca107d471c27f99f81266ba8679e4b4857e8814a194e1792baf94317541d0393760dce500e64c62a40c4d29e57c22d95d062a131047f37c1906443cb7e7b3493b1e90032cff695bf49b39507d6905aeae9e7cf38850fc58aa45aa98ca7333a2ba3c41959655196a6a681ae8dc62bf948cddcdcfc3bf77dfe07b5a1727bc2e2779ced48cd05e6e40f2c827f091a3180bd7a5e9b40300a6f511d626ba0577875c7907609516b741a0133121c17928a87aa8f6254bf13800da5961d648530bf9465f7756243bb2d1948d67f711e49017e5d422160eedcf9aafef8897637b8b96f3b7fad43fe7a342105dd2e4b14058848528a3dd19a4bb8f600494910533c88984d58dcbdc049304ac2a0a324de348cc0f0f582155b9838977666b9cba77a5bbf8661c052cddc5f3b8d0b3fa5ef9d8e13b72b546935b6682b9ec8ad1a9b2a8fcb3177d87139ed6c4721f15964b55cbe641572ad80c1c2477a4d3c33adfd4d1639fe814f8d288234ce0fbbed02f9052b93d21270986856af2102b6ca08dc07d4c9eb13f15f97e8662ff73b500be77a553b2c2ee66fe55de8a4883bf5e9c3fdea985d6bb08b44669dbeb0652268ce498d1cfb3a2c3374da812e7e4a431d70483eae1c08ba7acf9230d8bbf468a684d6e87e673ee6466d0e244132752cf0800f495cef24fd970d66bab37128c671b34aa261b5f833eebd0723ebc20dedf60afe374636834b0fb935060a0a0308cf33b620ebb87f7591bfc7503fd1cf453ba03b6956c1ee6410a6a1742434910fbd54c8b13411e43fa2f03624b23f8731848b5471a98659f514d2223f0012fa50dd7827e1fb71f2f051a2371a43b464c5991e73598c5d1f230cd386ff5512c0b925e291c83f72867b2cec9d8d712e4c93c74f7823b0d72cbb807109974deb46ffb60c42dbae3e2b39178fab43e7e6f406d7462e1dea851789e678a1d02f511c1c14f94b475cb59027a631897ab79f5e4e98a9051a9775f1eded3e435f2c75908c465356bc715388e4e81756f7d3236b50be0599f517073ec74627972bf587c021e7b8116e6ee82b222183134be70efde5ea71c2a751ecd78282e61218fcb418fbb6841e2ab9b1c58bcbce998c3f88b6bb82f329cdf6d67d6eab7b7ed0142d0c39b7daf97b29c3b6f910ff832f74a82a0023d28df4e504cffd103eea3a780c0999ab763071fb97bd5979333145904b20143aec82d84e25c5ed6db981a4aa71903dc21c49f8984b749b4889c3216a1670d7ff88a90b369d88d11b0df4048c0b650fe304f920725d78e98f1df45cd5f5a81bc10253ccbe83a04044ee759d7b7e4a6e68b433ed2f8ad9ac79a5e91f8fb607d41ef5a77193a4a74ab16e18e1108d79075eb5ba90d4a8747cafb2a0a7ba7e5ac7ea2a7c96679bdac2344999fbd9a45781107ccb3524a5897eaabd710550fdd60f6baaeb7e1c32587b5ac82d2eeabdc856636e5d1ee3e798fa1edbb860f052f7b9c9f646d1f6e482ef03f768a4683fb1f276ec7cc3863dcf1baba777c9321e723f6001eeb8156ecce05e05ac0a4a0b0474edc15ca458f1525cdbfc932b58dedc3b894267eaa201d7aada67498cdbbf644328a5428e759c69f135db34c94a25f11bffaab5565eee685a0d2a1674e1fe9f8f920d8d76be67042666105ed7d71291e6843a7a2f3a62093c0e76fdc2271a94d53b98e2d3a4c51b541be2e5fbda45b44cb60a6388db4a77a61720140f54507317a8451c184cdd6826ff0a802b4579e439e31fde72b37c92acdb40a81a3bfc55c6787c4bab7cdf8ab66420939d48322f4a6bc316d05d533aa8e083757b27c4c41f55e7089727b4a80c8a50d8edbc4adcd20993a435b42eebe63d94cbeba86920d9623b493833947ee333b897ff2ebb533b0a55ca700d3e7d8e56c83073c3ab2d36c573b89a7e8bcbb2262ef9b12f520cdad6644f25b40cfd07a6f4e725ba41c89bb190530b004a966e88a159bb04af00832422e838754b0b82bdc503717de0d78e4c4bb0973ef98b57c517fa9f9e1b5fd8e2965c7b7ef3cec8f4581bf6f7365cde7ec74ba60ef4bb7d07437014f4cd6c97fc8df8304000e5b7e9d2520c06394edbfc3c6481cd917ebcb93893fcd621d6d98ff2d1c2f4093fa9f971168148f3be1474e89d1919e8aaff273e8b0b72eae2af7a3ded125fbd808c753cbd4bdaa25737154dc4335c8e75eee38b39a007ebcc21e042671f032ebd37c3267cc8074a172a15df838665f7003d79bf15fd5a186873a6c643ce6efe0fd4e1060330000000000000001e1cd0f01e8f01bc206edcf1042e48c920a700beca85dc20a00676696287d64d9037acd2c93e77f8b942d50f1429d684ebdd15a40c63b74dca52ce515a55616bf26b193ea8279e83c0bfaeeecc9224900cadfb0260b159beb3cdfeb63328493c1e1948037f819bca99a476d37fe6ea77eb4630763783c0c451489782c5d27dce3a33537d6c403d49c305d8e46fea39e9afc84e3ca335d2ea7a103e927e8bd5f076c05ab784e5ce39325d07ee179571c7c94541c67680262c6016c54d0ba93d7149d523431371bf8b7f18d27d9cb4e2955803e69d952a51ac794152e5f54434ca32a3d533ef7d4521c250829bed27a1e2b25d30f46ca605fcb6fc09d02a4c4bdf0f0e41749c4df549280a4f6d2f7ab2afbb6952cafa929d3757b35d25a589e37b8b308c2258c5501100e1b6c97953af2234b64276e2e4271fbcee5fe294ad00ec66f1204a52aa8ed64a8d12cf9aaa1d0a8d889f9d94b08a6ce21190a51c05a2db6ab4b707d7158c682fad814ff81afa9f5df1947e018d85ebad7e3c6933bb083af90f3788849553560b4fbbfbfd98c7ef81a755b703b887cb492e6624b74499ccb22ef723fa11584eee7886a80be93260c03876e95df5e33e68702ffa7a08e2bc45bb5d6201a2a3765291c2ce8333a785cb919e65a88a8a06558f2a1690a0af062beb0eb705e62aaf19c7c5ebbdc2808049bf3dc283d3e16f5d1ba2ba556b5a25cdf3a9804a667fa620134acfed38f3c73ce97c753b73b3ab407f7fbc5e51e07cfad309d9315134717b84243f960003a30a7ad913c92cc242bdde27e2ab762ae3098792749c57a6669de56d3c601ea1b1eebc02b19146bf457f76c816de9d60fc75602c90100df4844530c82bd4e72f426461ae08bec0279a413219189686f0f761cb007c631d991331c4bdf4555ecb4f64c4db1722d5018e736cf9245521a96356b96f81c967b8151e876b87c7820fd519eb420f33a290988a8ae60cd1d4a08a19f9ec100ab7d224eb6187ac075f0e06618952ffd34a100b761573888f3e8b42197e5fa1d59b8e03b2dbe0aa9e82b028c7acfc2946499308d1338e7c88ae485af96be048af3786d45ae59ef8ba0efae969fa224f441cc84059ef923c48e8c88339d2d939ceec83e59eba456d40d9a9233c2c6301f39c94b578843ffe309c3651b837752b067d814ffaf2a08938d2da42db0c46ef7385381e46f3a725e4def7a378433959445bd948ff45b3e26c8cde9614232f4e0231d360aed3124f14f1894d42c55daee80a48ecf926a63aa04ea07a7c022ca17620c5e1e7b8b8550ecf48021ffb56a6053ed4dfcf07729cf899c031a36d57676ced4edf8fbf9c4d6c45cdd36cb478d371e7a7ed1a2bd103393440eb3bea0cbfc9ff452bfe05b451ce7ca2f15fba65b4d1a9fed2deaf863b6ff79730e5343c834f0b3121329b35d5bd37125e1f91aae2252be0eef675965e91a8bfac8f50a83a570703a31b1cbead430c51d55887d11e798b822c1d1f6278bba2df6ae43639d7986d8abbc2f1194d8158ac48d7c13b5885bd06213157f884942e834a126a77cdf831ffe5930a2cc3042070c3db3dddc6f558c3bad6d690da69ef82ee4e8ec7ab07b4642c7983103c7f3a807233c81aea388fe196d0bc8dd072cb6c1449b1e8d2a88637f54269c1dd9a77c5b28a9dd247e91a96498a65804f43e75df32c36aef0d3e04c6a6c7603c18093653d9b86b0dce24ff78f959926ca794b8fc0b36d92ce97fb433191ad6f619c1a94fc9385ba0da3c0b12434b76c7e02c22e783ef4bb4c803c7c1eafe57680d645ee81f631da2cb62c72785eb4ccd398d363ebfb4b5a3808cc69b7bc038ea025004b903e8f4ffaf5c78694ab38b50a6ff48398b49035a67acbac554085bbd96cb2129877c89e807d939017e9b853920e0a80928c674832a56f1d980b8c05f657c0c573ba6cd086ad8aa860587b68428ce2825eaa2ff1ebd9ca5dc7c4121cd169f93bbf99d137bfef8834a6a91161b9d27592f19dccf956194eb271c60b915abca8b364abc40b34ae05c6b97e62da244f5f5499afc6667577cd4d66fa7a4613146ba2aea51222f3198c12f04745b6a1f49903e5d4c62daea29aafe2fa9c2775d0aa3f9e473eeea8fd3a98d2bde0520e766bcac3aafa32f4e61d8e64fe7ad2eceb85b820e7c161c67fae8a9c905db678f7226463f6992d4aac587aa71662b04da340604093496625222a5ce9e7e7bd2b6ac3ef76ea665706919438c1fc4549d90eb088718198d6adf06e5d6047fe2c5a221b529ab534ae6c605f28e658dfa45e9455b43c79180620e84130b0a8108ee08208c62970b12b4bb0b9b17f85b5b8f157d3c72d9b4e44659f88fc53cc8c0df557fab76382331d2d814d61270581d952f7565573114745b8588ffd7cce021276eed7f1fa8ea1351f80ea33f06e201e4926c2ee50b1ee2ea697551ea4db453274a4f7d166e8a96588ab879e753630d41a515729bd3b85f50adc65b275f44c83fb090555c22df1b2584c36bf3abdf55b5e01b312a5fdade1173eeadd27d3c5df051ae13a137a1987ae7d9117d73f9cd742d67572f66d43986965347ea8f3a13eb7c210cda5f063feaecd89652b1d22ec6b00ed7ad86e2e204674d121ecfda526f1cd9dc0d335d606c499a66f2b52fd13cafe5d56954a3682ad4571fd87b8cf821e44e0163de8979d7b4c645b86b09efabdc71f641dea89b892c0bc58868b51facfaaf5ceb5c79cbd15ce64993edb3154757a748f961797dc36de63cdb7450adbe6e0ba83533db3471c2cfe244984e6af81be09efddd7bf3a2b2b74e170baece80fad439b6f17978ad59a2555282d1d5a286b749d6dd1d7b77b955e95eb09ee0cc8a51075af3c626cac743c0c4f5d4bf08072c0445fbd9213075415689e49b2abc7937baca899f7011c342004695daa5ded0dca213e4581da2c64dc8147d9f10040af86e3446fcd4c44958ad051742c995dbdda5cdfbfaf7fb360a278845210e0acb07039f57b72f5801cde9a7af47cc9d5f63031a8e727cc8f452516d86342be076cd7cfb9707eddc29c28c0e7d8b206984a157923a707c36999d9c3f2f41991eb2e4c2c87a0ba1f700c7de4dec276f76050d0e22941f057b44d85434655305a242a01665570e2df47a1d4f5020e021146d4012a02972c36cac4bf329b7930396674f1df69bb3782ecc099f8dd3832c08c9d9ce1149a8f70c911b7ea1a26c973498737fdc75d292209122184ae8cb086bb64bb5efa881e66249b5f56b1473e14086f5e316f82092d319719e28a261b1fac41fbaae3f1f3782ee89a4e65da0717312c12a0baa7e7994e03519915d7091d50db843b24b426c3896600f0709e170306438b9bd9127309dc1684075ef0723f6631edcd773882cc398348b9d6374745df76c2b7e506c55e05d69db155dee754928fbc9d53a57233a999f7ccd1f9e92e3d246affe2135b690741f33fa455f35cc832b5d1c7cdfc3eafde04b6bb5fa0b1908823499a0361230b34366ecebf3ab6ccadb7a9851f561135d6fbcc6ab9d44f6ec4c7c89d24246c262b64d612b4b6bcebe75c25769f6a5d0b32d3f3be88916791144229b3d5f08b81c868cdcc0aa64f49c6a1bce9aa4a050a855faa1ba9c9ce723600d9c03f8ef93870f9466243fd12f41e3d4d52a3abf19c92606cf8c8427f1699d6848bb371ddbc310d568c43a8512bb1e6216e93906bbe687bb254937e00fa813bdee5ae835b8f4b538c089869e2809d071306dd66c4f1d9e9c36cfd041ab151c50ed7d51f1c9eba568d30cb7dc460fc1f3056c0434ed4067ed8512901274ed282d2fd9cd9f623a7041389276ef3d7246b01471f8520f945b4b82552eec9a6baf8bc928b9ff78acc0e4f1f61e628300516e8a2bbbde5724da34901ca8452c3d80f3cdf11e63fd49395659753f830e1e75c73dd4bbdde17884e9f08c67c881beb1bd3be7fc2860071a7186ac8ed5a62451d359a7ba97f45a58222800cfdd818c40b512fe3eb952fa86b9f5a6e2f03fbe47168fbf10f42f4058bc7c394de0460879fe63fe1bb6d54de98118733f8d80dd417c1c441f6d73e8dfd48f378f68795e65093c408d441e1e964ed72005eb56976d398b3e8d00ffeef4efeb32f351e546b7ad624da994cb9002d55a95b94e2a08e3defd169f2d08c2bc3ea254249b0a3257f8b31f720dec4965aa164434e943c43f8d36ad5548422a0906b2319e7771320a4410f05e10a00937fcea93a149110a4cee86b55a48adbb4a409f29f984ac38ae089dc534dc9717cc46a9716669a60f2d5998ef092db71a28cdc5e212e12d976e4e324dc237b70f95af7ef9257905df6c79c0b36e98c997b28cb1c79ceec919eeb69ac015559a90d681c23dcf97f5eeab04ffcd2475611b596f58dae7ae468d94d16f6f0d3e0d9ec2b00b2e755fa7fb251c45c76259ca6367493c52734912c82584aafc869508fcb99215904ec39ae48a530cbd4ca9a45824eccdc7a14069917b39b3e549489d1d8cbd40407cf6af5b6b01818002845161d5b9942b274ae86ceb96e1439cc83b666184380764fb736cf81c29ebeab7ccac5768860e7ae1efef4cc90600b14be357150ab82280183f90c70bf2fc5e5bf66ebdc65a974e60616745bae6f64715fe63c9442b7500e3275982469e1e4d8c6082f1ca5496c090b868cf489c449580914652799f7357d7713f98a9a5d6b1590becb92f176016899a305146c86d3cb866395fc6c42a1b141baf2f9b0688716759f53d59e94c564885bf69cbd13f52eda2ccdcb4945acf41199b2266dde78549ae60e96ed0f1a6db0aceb043512d46cd48b661bed21d9458c30e72c4705024ba7d0b3523e7d730ed9e0970657aed42dfcb7d9de473041f6b5d8bb9a2f7ac0f4caa36ea2230184fddcb58dde9ee79d7c74a1fb99f885ba92f52b51f3b136e0b7f76395870db9c1763db65566abee19dfd481573f3762f95760fbbba29d565636ba52018f6252df5ac9431ad8ea118e00e4a169cd454de69c613e6aed48d1958634619cd4eae0b53ef70cbf0bf7db1939361a0ab831b04c0040c29152cc31344b50c45bf602a7c77db5497be1d9986b21671bd64eff32ab7ee7f287293876fa60774347daef0b7850538d02b94a65c4d0eeeb3ed108bd1123e7e2127341a8510cf20d97aeac28dcd95c8934931fa0a159531691b328d623bb9d399f41f8e26381a3c5a20262d97bc49aa8189e0884838fb53b479b92bb795f0ed4e1db232652d02df93624f03be27738b78974b64bd7bdf13009fb7dee59f1a9003a0368d16b1618854880958885b696da0b9dc67eecadde0755fb43ec464a0398787a8647f4a7fd071469c1ccfba4ba82e0e916ed48320806189eed374fd77de246092f4c51f9d87dfdeb763aa255cd5dc9adec7e4f098bba9cd840a168dd92de2866586014759a61710fcc1dd649b8db82d309e2bb510a7eccc471f192b629a0820b17d465d4d2b3efd3c6c27ad088a7e4640dafff94e784ce3aec2887dd463aed8a76ba313e6458fd6b0a07a4d3217438a3022a834e7ec89548ba6bdd747bd758d606170fbfbd4abeae84f2fb17bb21f4af68c69ff5f0c1d2d85bd7aa17ca47e49dfd752370934f43406b6bcba0878000a40ca6a996b73e36eb4071569aff9182ff7c4f2420278f65908d8f1506ced3073d7dd83633f454876f03f4961b13140206ea1df9e3615394a26f32b8cfec6a8969e46da75aba4c297ba50e9b37d711514c90d3463f919f15003108c8ea3590ce99fdff1a47c068df5d7f57e7ff11176d23283b7343ea4f16a14993c878aab9fe274249f962fa4ae07f8bb4c5abd5a2c8f8e5a3ff1aa3fd90ed9bf567605bd1ade1eb48f341743d38763402839a556e40e952a4f8043d66600000000";
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pls move those hex strings to files, and use include_str! macros

let option_arguments: OptionsArguments =
OptionsArguments::decode(&hex::decode(option_arguments_str).expect("Invalid hex")).unwrap();

let taproot_str = "513bcc097c6a379a0c1ada4c896cae70df6b8b59734347e642598db966532d2b:02c6edd467c5aca948c6e43486c99393afa0b51802dad8c300a1b152b8fdda7969:tex1plhc0pau4pasn7lwnemz448ccf0rmhg3v9tkfmsssn83057te7grqwkp0xd";
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same

)
.unwrap();

let tx_hex = "02000000010247e71872bb48043817401452a240bd62b71e2fc281238f22734500deba8062e10200008000000000000000000000000000000000000000000000000000000000000000000000000000391c4baad811a338680dbcb604d12a25d5f572c3de85eda0fe7bd1a14b07666400010000000000000001cb099b2e5aab3b14397c50c4a76aac7dbadc984e2ccd2354d18b38360ef5a4e10600008000000000000000000000000000000000000000000000000000000000000000000000000000391c4baad811a338680dbcb604d12a25d5f572c3de85eda0fe7bd1a14b07666400010000000000000001040acd801ca88503da6cb3fbdefd1d9719b2f30c22130a673990ac331f9c31c4d18d0818b8c0a63b902f27bd4bc2e39ebe503ae787bb1f09757cd3e6c4734cb5d4c449029ee02144db462faa513f09ccfcd3e47bb121200fd3ee65809f0c36153a40e776225120fdf0f0f7950f613f7dd3cec55a9f184bc7bba22c2aec9dc21099e2fa7979f2060be29769950488b86587bf642cb81aa18be2c905f1ad323ee49a2ef5082074f82b09d906aacce8803d5718539d8ad8fc76b3733bf3bffe3239d03b899070891fe2960364f73da445ba97cd0991ff59a86bc7f2f2422d964db4ba08678b6913a3e87f7f225120fdf0f0f7950f613f7dd3cec55a9f184bc7bba22c2aec9dc21099e2fa7979f20601499a818545f6bae39fc03b637f2a4e1e64e590cac1bc3a6f6d71aa4443654c1401000000000007636400225120d46b80c1cbfac814f80e2d69ac0120ed3fab79b31445326e6e9fde1113f5d54301499a818545f6bae39fc03b637f2a4e1e64e590cac1bc3a6f6d71aa4443654c1401000000000000012400000000000000000440fd67a574e05ba788c8433df31aaeda51b1d190fd24dffb539e584b18461bf493571ee5a628dc4b68664cf71e6424a99c7e6b13b37e20ecab2156a8b342d03e8c76e06922d3d7831516611fba7dfd5ca2b0c39696aa7b0a9fed4819cf7e3879da4a49b9015a0a15c38735d772f07a13a9e8c81c672ff1b725794653e7b2a65b5569ecb5da314478a8c43860188599c502d8d8c399c5510915d0998008ab858317852c27b030a85d612fd7152321658700adbbf004300c4020d08e0537d066b7cc1e7631ad43e2b8515d63c69ef23749a364981385802b8b4821bfebc18a8b308fdd3efeae515861cb4b553d854ff6a40ce7bf1c3ced2524dc80ad0000000440fb1b2df0bce5c43ef35923b81493f53427fa4355a41290277cffe1d201fea2015f94e0b9e97533e0ef6c641ceb3d62dde6ed76729b5eb2e7b42238c1f826649376e06922d3d7831516611fba7dfd5ca2b0c39696aa7b0a9fed4819cf7e3879da4a49b9015a0a15c38735d772f07a13a9e8c81c672ff1b725794653e7b2a65b5569ecb5da314478a8c43860188599c502d8d8c399c5510915d0998008ab858317852c27b030a85d612fd7152321658700adbbf004300c4020d08e0537d066b7cc1e7631ad43e2b8515d63c69ef23749a364981385802b8b4821bfebc18a8b308fdd3efeae515861cb4b553d854ff6a40ce7bf1c3ced2524dc80ad0083040007f6689fde926b3f582187af0027e7b6a8a3737cc5c5a54357582caf7e76cba2dcae069b510d6e399c2ea2a5d2296d01ef80609a82128ac2a0c65a7fe0f9137626c54c1c39968212312d5de8e8dc3c0e4ed5698e6d643ad14d50a358a303b064d4455cf58cbd657d86921f2ff072f053b180f7b73e1599ffb3e75e9d2869a60bf8fd4e10603300000000000000012e279300db745b9b529f64b5e2dceaba12db7f696d173356f195f5e81489025aa5b2bc06ffda6f4b4bd90ca6c7ce7e7ad8c4415a1825cfe18442ac2ec4950a3fd31c89a07bfa1a955789be416c6cebd57a070cdb2a138859e5d8dedd50c1b08b9727aaaf769e6e506c5ee9faa859b86122a3eee8782822f10b1244774b68183d12590c94d59cc0b391e5ee8804fb1e12aec11cb500294656e043dbbf296526bd2c4845ea6d99310ab4b513f3892239a083cd0279cba2694f78ada9c50b33c07a25942e10ec03b16a7ae33bdb20a537a9031dea8559d5d9a9393dbe92dba0b2d69ba3ed7a2ca066c9fe96f3b1cb1ecd74793d97d86c87c6fa2aa93a4c6200024ded994dd5416b272a1942b71e2711fbdfc5fe772ec27edc69322f96cea68b061bcf84628330aa21d43a4f6b6259acd84c260e74fd65c674e42b2c982c0002c51728b3f78f3630fe4a8e7011d842d2526139a1f515cb78db33ad52f7d7c08ae255826d18bdd20d6bcac46431f4d101b9aabfde491c4ca404f7223505d07ecde07bd8ced8ed4f580b192eceb302ece4a4063a56b43f9125cd0d2b43d7dad59d9956b18b7f519f13ddd8eea3b2d56b382b40ccf1f6c0ac60197e3b0cbd9ba668339a44aebeac6770e4dae081c251452dcfdd1a5bd1a6ad0cd5c44e9182ac1f5f3d54b1d9e6d96b55145fc19398ca46eb4d4b61cba500b479b203e889a315f9fc73c7a066f78cd44c36c05a6d8f8f58a92a76875881dff076d5b99aa547bb87c1dd143df05f4fc378cc82d23ab5a643eb7edfb647a958ea97eaf563b4676aad24c0fbb9d0923aeb7ae65a81519601941a920952aaa98da5977c4c22523093c76f78fb1683e19fbfa6e65b414044bfad9d335d70a21168a5c9a276f1220c75a9f62089b11e8c26d25b513b2906c79169e942b0020af3566fd46806a3ed29e1c368e1767af2d0d57cc86f142264898ec15d8c5afd02bf5cfcb6b2d85ccfc7f487f430f0fed85956c3c59d4c061c8ea8984a10c6c07d2bfce207efa32455bc39bd6dc355fa55c43dbd7ed9254ed306a63fda47cbf7bf5d51412ab194e4a3be1172b38019f54dce2e9464c5b7f368053e57cec113ca27d3f112f835051f8510bbb62b90f954c42bce2fdf7b5460986c04cd334c8d51939b86d115c6aeaec0365411e593f01f269c942ce6ff9c7bf4e9c4ad547fc1fa8b24e8f6646e82e36bea79e0b673dfc1d9c836fab7bb0a9243b392db1e34e0793cfdcaa19dfb88cbd33a9545aa466fddd004e488deeb3cf99261f697cb7730906ccf6f60d014d0b8b156609e7a78a20724c833584ee1c7ec4bcd30d63a1754095c9e978e65d138c76bdd25d7e9e8e0f1f049e75f90940dd952be3937449ba94cf20706c2f94c62b024ec1c0926d25d307cb2d8916f4cae9054a71885fd36a1a225fd10aaa7666e8ddb78ce41ed6e300ef2ab539a92de0e5720ea894c6012a554f52aefc4e8082645df89e75673a7a7e1ef25aa1165d7b1ee53197bf2d867c548e5acab9d47a0cf6edb685fbd186d4231fe493a9a1ba8e5455b1aaa7cf425aefcb7bd3c170dcb74e56a35bbd4cde5cf718150d0467179acd2f3fa3a8d92c5407fda0b2812e33c07b5105d5ddb0e1774a588292376340e306b68f854a9c37ac1cbbeb1756ad8bbd9d6a54252e26f59b29f5787e9cccbb863593a9b26ab5284fcfe89f117ba1da1e7de8300db6657be7180893ef777e17313ab481cd670b63adcf53c752e43e8d40f29251cf248325d1a593a947c99b885fd255aaa63b2a20e4abc47ec5acb5c5f8a3bd206dbafd8d75cba9dcccc55b86291328ff252d7faba33ac3c48b08fc59976f54ceb34be3f7b172ad1fb5d2a4c0639b065419b2e3519dbce82ddb8f8b2ebf282437a8e5bce539b79b60f3f41990843ada1750596d33a822d53b063a2415f40abdbdeaf1115561cbb2cb377cc6f360bd789452628aa8d37e3fb07013bce889e3c409c7ceed84144e00b44e1fb66905cf37cb4df3e7b3ccbdf242c4e7098089df422d612872382dbc73ae856395d11fdc3853492d5b0f4433c0e3279bbfaa3e6e015861d92c82cf37606edc71c9f3348a955d764c9b7ad4362a181b4db4e943dfdc132be620ddb5e972d81e70c3667767e26f98ab093ca2c2da0dee971e628e530d6d3b98195009ebda6976902b8b0c8bfb81ea2ca145b9ce9ac2c34b8e30c3e265cf4abc7ec1d3f9471733c4b7d32f51c03fbb282ad261b60111aa3eafb511039632a6eaf2bd0a9cb7065503e448c3d215f0d6810bb2c563799b6041f230edba52e6756556f8d1bbffc5cf89068b7e11bedcf4c6326650f4b144b1b76499aa960a7ceaacf2a9b59abd20a6244421f492df03c6a6efaa59af40cecb85df5feddb7f80fbf0bfd267eb136ca0b51da88570abcec68fa05243118d22442fa2460952bb217120e12643fb86991313afa8994d859ad4080bfc9b9896cd1c73f6224b233ab1d4745a8ff31fc143e887bcc8ed153c332ba54409d3e7ddef68a7b1b95eee61dd3ebeab763ce867ebf4d3d70925fb6ae9b45de7311d70a3ec0e118974d03aeb8b4dc712333ede498d338da8212834248c5681e091ca35b910f1c46810549be4e3f605adcaefea3e59a9fa1b6e38a803076cbacc9c955fec0076b2e1fb267c814618470c6c71fe63c80a11861214e0721fa966cd11ce965533701130469ebf7de2fee32d9522397bc7939b3a6f57ee557463b25679c0496e6d6e5cce3703fd16617ef790b46690c8613104974a862fa4ac1c3da578f4120fe0d86a47f3c44dab88bd1777273f281625196f5223050769dc8d58f3baa0e93c540102baa6a5428e40b60d9bbfd43d9740e5a9349539d28e60f9640c4679367ba03dc7a36ba15828fe3c04673ee58c98dcbfde1f1d609ccdf4cd18dee330900cbfd8bdda0e5f5cdb3be0a2ec43a056683c7fdf91f6237eb67eb032fe8128d5168d384c8050c31f1e9b7e4c73334dbd2b663a296682ec9448acfc5f230c1730ed46c5386da2ba5e5f6a4471f1a2519e8e33ae64f9b1eecef0fedc31db17fb840fd38fa384dd9cbd182c942c9e02f17a2d0dfcb034afb06337291bebe92c8359b419d432ae9f5472727004a302277a851753ae75f38d5dc7a7b368164d64b8c0e3189e8226652467e36c4788023772b2efc93e3813e5f3dcef2b636cb85e50047892a4e0dde2ede1298976154d46bbb8ad99e10386d19d1da4a0b2e304cd5a0858dabe71580af9ea974d3a5df27a21c63db54f4a97516bd7f7347602b67415f44b5a082adb78eb1e5ccf55b105e294d643b053831a7324ee0db4d9c84c69e79be5cfdea9db2364bbd2b3aa0631018a684eb3414f05573d35c6ad224b5961eaabc5c09d4511d93d7dfbdc90b4cacd06a572e57f85e16b1e7a8017fb3b3f9c9ec8bbca684c1556786f49f2ba7179dcec0f6ec707316b0657f8bf2e09a080733432349c705c7c75bc953cef942e4b789fd5988624bf1e0d9fa0b3ba46cc11409ac25f2d61b7cb029a0ea0b225c531413e24f2a4ff161b5cd61c678ac40d69180dd63f66d1193770a8acddc077c828f0b2af9eaee3cca085d9d170b3454b9aa6b68d46a741074b7894f5d6e1e22bc19bc1b6711c9d74f706fb03d1e8c5270db6448c59dbfeed94cc32288114f572da2711d2c560ecd0315f72c3589ef242bd38c1d7dff1b7bad40aaeceb48346c12cc2b9a7c8a38c68fd4318c72eb6e5b1f28f506397b3a420d6f2cc34066e0fa3e6d2a4b24a78996378f2cb809405e3b9d1e508a9bcf1df0640731aa6cf6d0a5a7533f77e70d632730d2631ca107d471c27f99f81266ba8679e4b4857e8814a194e1792baf94317541d0393760dce500e64c62a40c4d29e57c22d95d062a131047f37c1906443cb7e7b3493b1e90032cff695bf49b39507d6905aeae9e7cf38850fc58aa45aa98ca7333a2ba3c41959655196a6a681ae8dc62bf948cddcdcfc3bf77dfe07b5a1727bc2e2779ced48cd05e6e40f2c827f091a3180bd7a5e9b40300a6f511d626ba0577875c7907609516b741a0133121c17928a87aa8f6254bf13800da5961d648530bf9465f7756243bb2d1948d67f711e49017e5d422160eedcf9aafef8897637b8b96f3b7fad43fe7a342105dd2e4b14058848528a3dd19a4bb8f600494910533c88984d58dcbdc049304ac2a0a324de348cc0f0f582155b9838977666b9cba77a5bbf8661c052cddc5f3b8d0b3fa5ef9d8e13b72b546935b6682b9ec8ad1a9b2a8fcb3177d87139ed6c4721f15964b55cbe641572ad80c1c2477a4d3c33adfd4d1639fe814f8d288234ce0fbbed02f9052b93d21270986856af2102b6ca08dc07d4c9eb13f15f97e8662ff73b500be77a553b2c2ee66fe55de8a4883bf5e9c3fdea985d6bb08b44669dbeb0652268ce498d1cfb3a2c3374da812e7e4a431d70483eae1c08ba7acf9230d8bbf468a684d6e87e673ee6466d0e244132752cf0800f495cef24fd970d66bab37128c671b34aa261b5f833eebd0723ebc20dedf60afe374636834b0fb935060a0a0308cf33b620ebb87f7591bfc7503fd1cf453ba03b6956c1ee6410a6a1742434910fbd54c8b13411e43fa2f03624b23f8731848b5471a98659f514d2223f0012fa50dd7827e1fb71f2f051a2371a43b464c5991e73598c5d1f230cd386ff5512c0b925e291c83f72867b2cec9d8d712e4c93c74f7823b0d72cbb807109974deb46ffb60c42dbae3e2b39178fab43e7e6f406d7462e1dea851789e678a1d02f511c1c14f94b475cb59027a631897ab79f5e4e98a9051a9775f1eded3e435f2c75908c465356bc715388e4e81756f7d3236b50be0599f517073ec74627972bf587c021e7b8116e6ee82b222183134be70efde5ea71c2a751ecd78282e61218fcb418fbb6841e2ab9b1c58bcbce998c3f88b6bb82f329cdf6d67d6eab7b7ed0142d0c39b7daf97b29c3b6f910ff832f74a82a0023d28df4e504cffd103eea3a780c0999ab763071fb97bd5979333145904b20143aec82d84e25c5ed6db981a4aa71903dc21c49f8984b749b4889c3216a1670d7ff88a90b369d88d11b0df4048c0b650fe304f920725d78e98f1df45cd5f5a81bc10253ccbe83a04044ee759d7b7e4a6e68b433ed2f8ad9ac79a5e91f8fb607d41ef5a77193a4a74ab16e18e1108d79075eb5ba90d4a8747cafb2a0a7ba7e5ac7ea2a7c96679bdac2344999fbd9a45781107ccb3524a5897eaabd710550fdd60f6baaeb7e1c32587b5ac82d2eeabdc856636e5d1ee3e798fa1edbb860f052f7b9c9f646d1f6e482ef03f768a4683fb1f276ec7cc3863dcf1baba777c9321e723f6001eeb8156ecce05e05ac0a4a0b0474edc15ca458f1525cdbfc932b58dedc3b894267eaa201d7aada67498cdbbf644328a5428e759c69f135db34c94a25f11bffaab5565eee685a0d2a1674e1fe9f8f920d8d76be67042666105ed7d71291e6843a7a2f3a62093c0e76fdc2271a94d53b98e2d3a4c51b541be2e5fbda45b44cb60a6388db4a77a61720140f54507317a8451c184cdd6826ff0a802b4579e439e31fde72b37c92acdb40a81a3bfc55c6787c4bab7cdf8ab66420939d48322f4a6bc316d05d533aa8e083757b27c4c41f55e7089727b4a80c8a50d8edbc4adcd20993a435b42eebe63d94cbeba86920d9623b493833947ee333b897ff2ebb533b0a55ca700d3e7d8e56c83073c3ab2d36c573b89a7e8bcbb2262ef9b12f520cdad6644f25b40cfd07a6f4e725ba41c89bb190530b004a966e88a159bb04af00832422e838754b0b82bdc503717de0d78e4c4bb0973ef98b57c517fa9f9e1b5fd8e2965c7b7ef3cec8f4581bf6f7365cde7ec74ba60ef4bb7d07437014f4cd6c97fc8df8304000e5b7e9d2520c06394edbfc3c6481cd917ebcb93893fcd621d6d98ff2d1c2f4093fa9f971168148f3be1474e89d1919e8aaff273e8b0b72eae2af7a3ded125fbd808c753cbd4bdaa25737154dc4335c8e75eee38b39a007ebcc21e042671f032ebd37c3267cc8074a172a15df838665f7003d79bf15fd5a186873a6c643ce6efe0fd4e1060330000000000000001e1cd0f01e8f01bc206edcf1042e48c920a700beca85dc20a00676696287d64d9037acd2c93e77f8b942d50f1429d684ebdd15a40c63b74dca52ce515a55616bf26b193ea8279e83c0bfaeeecc9224900cadfb0260b159beb3cdfeb63328493c1e1948037f819bca99a476d37fe6ea77eb4630763783c0c451489782c5d27dce3a33537d6c403d49c305d8e46fea39e9afc84e3ca335d2ea7a103e927e8bd5f076c05ab784e5ce39325d07ee179571c7c94541c67680262c6016c54d0ba93d7149d523431371bf8b7f18d27d9cb4e2955803e69d952a51ac794152e5f54434ca32a3d533ef7d4521c250829bed27a1e2b25d30f46ca605fcb6fc09d02a4c4bdf0f0e41749c4df549280a4f6d2f7ab2afbb6952cafa929d3757b35d25a589e37b8b308c2258c5501100e1b6c97953af2234b64276e2e4271fbcee5fe294ad00ec66f1204a52aa8ed64a8d12cf9aaa1d0a8d889f9d94b08a6ce21190a51c05a2db6ab4b707d7158c682fad814ff81afa9f5df1947e018d85ebad7e3c6933bb083af90f3788849553560b4fbbfbfd98c7ef81a755b703b887cb492e6624b74499ccb22ef723fa11584eee7886a80be93260c03876e95df5e33e68702ffa7a08e2bc45bb5d6201a2a3765291c2ce8333a785cb919e65a88a8a06558f2a1690a0af062beb0eb705e62aaf19c7c5ebbdc2808049bf3dc283d3e16f5d1ba2ba556b5a25cdf3a9804a667fa620134acfed38f3c73ce97c753b73b3ab407f7fbc5e51e07cfad309d9315134717b84243f960003a30a7ad913c92cc242bdde27e2ab762ae3098792749c57a6669de56d3c601ea1b1eebc02b19146bf457f76c816de9d60fc75602c90100df4844530c82bd4e72f426461ae08bec0279a413219189686f0f761cb007c631d991331c4bdf4555ecb4f64c4db1722d5018e736cf9245521a96356b96f81c967b8151e876b87c7820fd519eb420f33a290988a8ae60cd1d4a08a19f9ec100ab7d224eb6187ac075f0e06618952ffd34a100b761573888f3e8b42197e5fa1d59b8e03b2dbe0aa9e82b028c7acfc2946499308d1338e7c88ae485af96be048af3786d45ae59ef8ba0efae969fa224f441cc84059ef923c48e8c88339d2d939ceec83e59eba456d40d9a9233c2c6301f39c94b578843ffe309c3651b837752b067d814ffaf2a08938d2da42db0c46ef7385381e46f3a725e4def7a378433959445bd948ff45b3e26c8cde9614232f4e0231d360aed3124f14f1894d42c55daee80a48ecf926a63aa04ea07a7c022ca17620c5e1e7b8b8550ecf48021ffb56a6053ed4dfcf07729cf899c031a36d57676ced4edf8fbf9c4d6c45cdd36cb478d371e7a7ed1a2bd103393440eb3bea0cbfc9ff452bfe05b451ce7ca2f15fba65b4d1a9fed2deaf863b6ff79730e5343c834f0b3121329b35d5bd37125e1f91aae2252be0eef675965e91a8bfac8f50a83a570703a31b1cbead430c51d55887d11e798b822c1d1f6278bba2df6ae43639d7986d8abbc2f1194d8158ac48d7c13b5885bd06213157f884942e834a126a77cdf831ffe5930a2cc3042070c3db3dddc6f558c3bad6d690da69ef82ee4e8ec7ab07b4642c7983103c7f3a807233c81aea388fe196d0bc8dd072cb6c1449b1e8d2a88637f54269c1dd9a77c5b28a9dd247e91a96498a65804f43e75df32c36aef0d3e04c6a6c7603c18093653d9b86b0dce24ff78f959926ca794b8fc0b36d92ce97fb433191ad6f619c1a94fc9385ba0da3c0b12434b76c7e02c22e783ef4bb4c803c7c1eafe57680d645ee81f631da2cb62c72785eb4ccd398d363ebfb4b5a3808cc69b7bc038ea025004b903e8f4ffaf5c78694ab38b50a6ff48398b49035a67acbac554085bbd96cb2129877c89e807d939017e9b853920e0a80928c674832a56f1d980b8c05f657c0c573ba6cd086ad8aa860587b68428ce2825eaa2ff1ebd9ca5dc7c4121cd169f93bbf99d137bfef8834a6a91161b9d27592f19dccf956194eb271c60b915abca8b364abc40b34ae05c6b97e62da244f5f5499afc6667577cd4d66fa7a4613146ba2aea51222f3198c12f04745b6a1f49903e5d4c62daea29aafe2fa9c2775d0aa3f9e473eeea8fd3a98d2bde0520e766bcac3aafa32f4e61d8e64fe7ad2eceb85b820e7c161c67fae8a9c905db678f7226463f6992d4aac587aa71662b04da340604093496625222a5ce9e7e7bd2b6ac3ef76ea665706919438c1fc4549d90eb088718198d6adf06e5d6047fe2c5a221b529ab534ae6c605f28e658dfa45e9455b43c79180620e84130b0a8108ee08208c62970b12b4bb0b9b17f85b5b8f157d3c72d9b4e44659f88fc53cc8c0df557fab76382331d2d814d61270581d952f7565573114745b8588ffd7cce021276eed7f1fa8ea1351f80ea33f06e201e4926c2ee50b1ee2ea697551ea4db453274a4f7d166e8a96588ab879e753630d41a515729bd3b85f50adc65b275f44c83fb090555c22df1b2584c36bf3abdf55b5e01b312a5fdade1173eeadd27d3c5df051ae13a137a1987ae7d9117d73f9cd742d67572f66d43986965347ea8f3a13eb7c210cda5f063feaecd89652b1d22ec6b00ed7ad86e2e204674d121ecfda526f1cd9dc0d335d606c499a66f2b52fd13cafe5d56954a3682ad4571fd87b8cf821e44e0163de8979d7b4c645b86b09efabdc71f641dea89b892c0bc58868b51facfaaf5ceb5c79cbd15ce64993edb3154757a748f961797dc36de63cdb7450adbe6e0ba83533db3471c2cfe244984e6af81be09efddd7bf3a2b2b74e170baece80fad439b6f17978ad59a2555282d1d5a286b749d6dd1d7b77b955e95eb09ee0cc8a51075af3c626cac743c0c4f5d4bf08072c0445fbd9213075415689e49b2abc7937baca899f7011c342004695daa5ded0dca213e4581da2c64dc8147d9f10040af86e3446fcd4c44958ad051742c995dbdda5cdfbfaf7fb360a278845210e0acb07039f57b72f5801cde9a7af47cc9d5f63031a8e727cc8f452516d86342be076cd7cfb9707eddc29c28c0e7d8b206984a157923a707c36999d9c3f2f41991eb2e4c2c87a0ba1f700c7de4dec276f76050d0e22941f057b44d85434655305a242a01665570e2df47a1d4f5020e021146d4012a02972c36cac4bf329b7930396674f1df69bb3782ecc099f8dd3832c08c9d9ce1149a8f70c911b7ea1a26c973498737fdc75d292209122184ae8cb086bb64bb5efa881e66249b5f56b1473e14086f5e316f82092d319719e28a261b1fac41fbaae3f1f3782ee89a4e65da0717312c12a0baa7e7994e03519915d7091d50db843b24b426c3896600f0709e170306438b9bd9127309dc1684075ef0723f6631edcd773882cc398348b9d6374745df76c2b7e506c55e05d69db155dee754928fbc9d53a57233a999f7ccd1f9e92e3d246affe2135b690741f33fa455f35cc832b5d1c7cdfc3eafde04b6bb5fa0b1908823499a0361230b34366ecebf3ab6ccadb7a9851f561135d6fbcc6ab9d44f6ec4c7c89d24246c262b64d612b4b6bcebe75c25769f6a5d0b32d3f3be88916791144229b3d5f08b81c868cdcc0aa64f49c6a1bce9aa4a050a855faa1ba9c9ce723600d9c03f8ef93870f9466243fd12f41e3d4d52a3abf19c92606cf8c8427f1699d6848bb371ddbc310d568c43a8512bb1e6216e93906bbe687bb254937e00fa813bdee5ae835b8f4b538c089869e2809d071306dd66c4f1d9e9c36cfd041ab151c50ed7d51f1c9eba568d30cb7dc460fc1f3056c0434ed4067ed8512901274ed282d2fd9cd9f623a7041389276ef3d7246b01471f8520f945b4b82552eec9a6baf8bc928b9ff78acc0e4f1f61e628300516e8a2bbbde5724da34901ca8452c3d80f3cdf11e63fd49395659753f830e1e75c73dd4bbdde17884e9f08c67c881beb1bd3be7fc2860071a7186ac8ed5a62451d359a7ba97f45a58222800cfdd818c40b512fe3eb952fa86b9f5a6e2f03fbe47168fbf10f42f4058bc7c394de0460879fe63fe1bb6d54de98118733f8d80dd417c1c441f6d73e8dfd48f378f68795e65093c408d441e1e964ed72005eb56976d398b3e8d00ffeef4efeb32f351e546b7ad624da994cb9002d55a95b94e2a08e3defd169f2d08c2bc3ea254249b0a3257f8b31f720dec4965aa164434e943c43f8d36ad5548422a0906b2319e7771320a4410f05e10a00937fcea93a149110a4cee86b55a48adbb4a409f29f984ac38ae089dc534dc9717cc46a9716669a60f2d5998ef092db71a28cdc5e212e12d976e4e324dc237b70f95af7ef9257905df6c79c0b36e98c997b28cb1c79ceec919eeb69ac015559a90d681c23dcf97f5eeab04ffcd2475611b596f58dae7ae468d94d16f6f0d3e0d9ec2b00b2e755fa7fb251c45c76259ca6367493c52734912c82584aafc869508fcb99215904ec39ae48a530cbd4ca9a45824eccdc7a14069917b39b3e549489d1d8cbd40407cf6af5b6b01818002845161d5b9942b274ae86ceb96e1439cc83b666184380764fb736cf81c29ebeab7ccac5768860e7ae1efef4cc90600b14be357150ab82280183f90c70bf2fc5e5bf66ebdc65a974e60616745bae6f64715fe63c9442b7500e3275982469e1e4d8c6082f1ca5496c090b868cf489c449580914652799f7357d7713f98a9a5d6b1590becb92f176016899a305146c86d3cb866395fc6c42a1b141baf2f9b0688716759f53d59e94c564885bf69cbd13f52eda2ccdcb4945acf41199b2266dde78549ae60e96ed0f1a6db0aceb043512d46cd48b661bed21d9458c30e72c4705024ba7d0b3523e7d730ed9e0970657aed42dfcb7d9de473041f6b5d8bb9a2f7ac0f4caa36ea2230184fddcb58dde9ee79d7c74a1fb99f885ba92f52b51f3b136e0b7f76395870db9c1763db65566abee19dfd481573f3762f95760fbbba29d565636ba52018f6252df5ac9431ad8ea118e00e4a169cd454de69c613e6aed48d1958634619cd4eae0b53ef70cbf0bf7db1939361a0ab831b04c0040c29152cc31344b50c45bf602a7c77db5497be1d9986b21671bd64eff32ab7ee7f287293876fa60774347daef0b7850538d02b94a65c4d0eeeb3ed108bd1123e7e2127341a8510cf20d97aeac28dcd95c8934931fa0a159531691b328d623bb9d399f41f8e26381a3c5a20262d97bc49aa8189e0884838fb53b479b92bb795f0ed4e1db232652d02df93624f03be27738b78974b64bd7bdf13009fb7dee59f1a9003a0368d16b1618854880958885b696da0b9dc67eecadde0755fb43ec464a0398787a8647f4a7fd071469c1ccfba4ba82e0e916ed48320806189eed374fd77de246092f4c51f9d87dfdeb763aa255cd5dc9adec7e4f098bba9cd840a168dd92de2866586014759a61710fcc1dd649b8db82d309e2bb510a7eccc471f192b629a0820b17d465d4d2b3efd3c6c27ad088a7e4640dafff94e784ce3aec2887dd463aed8a76ba313e6458fd6b0a07a4d3217438a3022a834e7ec89548ba6bdd747bd758d606170fbfbd4abeae84f2fb17bb21f4af68c69ff5f0c1d2d85bd7aa17ca47e49dfd752370934f43406b6bcba0878000a40ca6a996b73e36eb4071569aff9182ff7c4f2420278f65908d8f1506ced3073d7dd83633f454876f03f4961b13140206ea1df9e3615394a26f32b8cfec6a8969e46da75aba4c297ba50e9b37d711514c90d3463f919f15003108c8ea3590ce99fdff1a47c068df5d7f57e7ff11176d23283b7343ea4f16a14993c878aab9fe274249f962fa4ae07f8bb4c5abd5a2c8f8e5a3ff1aa3fd90ed9bf567605bd1ade1eb48f341743d38763402839a556e40e952a4f8043d66600000000";
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same

tx: &Transaction,
def: &impl IssuanceSpec,
expected_covenant_script: &Script,
) -> Result<(), IssuanceVerificationError> {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
) -> Result<(), IssuanceVerificationError> {
pub fn verify_issuance(
tx: &Transaction,
expected_covenant_script: &Script,
issuance_input_ids: Vec<usize>
output_covenant_ids: Vec<usize>
) -> Result<(), IssuanceVerificationError> {

You can avoid defining trait, by providing the issuance inputs, and outputs

The idea that you check that, every input mentioned in the issuance_input_ids vector are:

  1. has issuance (throw error otherwise)

provided outputs:

  1. are locked to the covenant (if no, throw error otherwise)

We do not care which exactly asset is locked

Comment on lines +5 to +9
pub trait IssuanceSpec {
fn get_primary_issuance_id(&self) -> AssetId;
fn get_secondary_issuance_id(&self) -> AssetId;
fn get_controlling_reissuance_id(&self) -> AssetId;
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Then you can change this, to have a single function, based on this: https://github.com/BlockstreamResearch/simplicity-contracts/pull/59/changes#r2741112099

Comment on lines +14 to +38
InvalidIssuanceCount { found: usize },

#[error(
"Primary Generator input is missing or invalid. Check Asset ID, ensure Amount is Null and Inflation Keys are Explicit."
)]
InvalidPrimaryGeneratorInput,

#[error(
"Secondary Generator input is missing or invalid. Check Asset ID, ensure Amount is Null and Inflation Keys are Explicit."
)]
InvalidSecondaryGeneratorInput,

#[error(
"Security Breach: Controlling reissuance token explicitly sent to external wallet at output #{0}"
)]
ControllingReissuanceExplicitLeak(usize),

#[error(
"Potential Security Breach: Unknown confidential outputs detected outside the covenant"
)]
ConfidentialOutputLeak,

#[error("Failure: Controlling reissuance token not found in covenant")]
ControllingReissuanceMissingFromCovenant,
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Errors should contain more context

}

if potential_leak {
return Err(IssuanceVerificationError::ConfidentialOutputLeak);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This Output #{i} is Confidential and goes to an external address. should added to the ConfidentialOutputLeak

Also, do not collect errors, return it immediately

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants