diff --git a/src/psbt.h b/src/psbt.h index 585ca67da9..ff00faf297 100644 --- a/src/psbt.h +++ b/src/psbt.h @@ -925,7 +925,7 @@ struct PSBTInput { if (!key_lookup.emplace(key).second) { throw std::ios_base::failure("Duplicate Key, explicit value is already provided"); - } else if (key.size() != 1) { + } else if (subkey_len != 1) { throw std::ios_base::failure("Input explicit value is more than one byte type"); } CAmount v; @@ -937,7 +937,7 @@ struct PSBTInput { if (!key_lookup.emplace(key).second) { throw std::ios_base::failure("Duplicate Key, explicit value proof is already provided"); - } else if (key.size() != 1) { + } else if (subkey_len != 1) { throw std::ios_base::failure("Input explicit value proof is more than one byte type"); } s >> m_value_proof; @@ -947,7 +947,7 @@ struct PSBTInput { if (!key_lookup.emplace(key).second) { throw std::ios_base::failure("Duplicate Key, explicit asset is already provided"); - } else if (key.size() != 1) { + } else if (subkey_len != 1) { throw std::ios_base::failure("Input explicit asset is more than one byte type"); } UnserializeFromVector(s, m_explicit_asset); @@ -957,17 +957,17 @@ struct PSBTInput { if (!key_lookup.emplace(key).second) { throw std::ios_base::failure("Duplicate Key, explicit asset proof is already provided"); - } else if (key.size() != 1) { + } else if (subkey_len != 1) { throw std::ios_base::failure("Input explicit asset proof is more than one byte type"); } - s >> m_value_proof; + s >> m_asset_proof; break; } case PSBT_ELEMENTS_IN_BLINDED_ISSUANCE: { if (!key_lookup.emplace(key).second) { throw std::ios_base::failure("Duplicate Key, issuance needs blinded flag is already provided"); - } else if (key.size() != 1) { + } else if (subkey_len != 1) { throw std::ios_base::failure("Input issuance needs blinded flag is more than one byte type"); } bool b; @@ -1028,7 +1028,7 @@ struct PSBTInput if ((m_explicit_value.has_value() || !m_value_proof.empty()) && (!m_explicit_value.has_value() || m_value_proof.empty())) { throw std::ios_base::failure("Input explicit value and value proof must be provided together"); } - if ((!m_explicit_asset.IsNull() || !m_asset_proof.empty()) && (!m_explicit_asset.IsNull() || m_asset_proof.empty())) { + if ((!m_explicit_asset.IsNull() || !m_asset_proof.empty()) && (m_explicit_asset.IsNull() || m_asset_proof.empty())) { throw std::ios_base::failure("Input explicit asset and asset proof must be provided together"); } } diff --git a/test/functional/rpc_psbt.py b/test/functional/rpc_psbt.py index b164dd9398..8d36b135cb 100755 --- a/test/functional/rpc_psbt.py +++ b/test/functional/rpc_psbt.py @@ -824,6 +824,15 @@ def pset_confidential_proofs(self): NO_ASSET_PROOF = "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" BAD_ASSET_PROOF = "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" ONLY_BLIND = "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" + INPUT_ALL_PROOFS = "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" + INPUT_BAD_VALUE = "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" + INPUT_BAD_VALUE_PROOF = "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" + INPUT_BAD_ASSET = "cHNldP8BAgQCAAAAAQMEAAAAAAEEAQEBBQEDAfsEAgAAAAABAP19AQIAAAAAAqTuHc11KinNVvXd/9sQr+ipDYZjtigEcm2oUT69BIpzAAAAAAD9////pO4dzXUqKc1W9d3/2xCv6KkNhmO2KARybahRPr0EinMBAAAAAP3///8DC7mQAAC2x+7vHmDpKr609OKkdrg0eF1kBTx/wAEmdQdsCUtYYVDtovHBZr8q8sMVSW5ecl9gGAFx7fv6aiTdslG8A2MtncskgsY320AFJIcDbsam59WJAEAvWZPrYGNEbNjgFgAUl3Rcv6DUKzl5yB+5LJTsqra8YLgKzHQ1jw0pNVL+Aoicxf4EfueweOUt60iMBEeZV2FTLu0IgGd6tSBPsOyg7uvgs1084gyqdkEKToYDJ5cfvfCUNZkDxZhNJF/j/pBHW4I9RVFojsI0Iob7snJfOcPPYk8mmG8WABQsltC8n2vOc1kjzIs6Lhr4Q4ivxAEjD09dS3xvqEWAbuT2dxNFnhtp6OYPzuLklAx6DV3hsgEAAAAAAAABAQAAAAAAAAEBegrMdDWPDSk1Uv4CiJzF/gR+57B45S3rSIwER5lXYVMu7QiAZ3q1IE+w7KDu6+CzXTziDKp2QQpOhgMnlx+98JQ1mQPFmE0kX+P+kEdbgj1FUWiOwjQihvuycl85w89iTyaYbxYAFCyW0Lyfa85zWSPMizouGvhDiK/EIgYCe805REagU2O9f02V+8toEIHGdlsFtB6jnKwK6rkvntYQMS2SEQAAAIAAAACABAAAgAEOIBIOv8GomhHbERYzGvmdBWc7jzdsscdRxJZJn7RnkTqvAQ8EAQAAAAEQBP3///8H/ARwc2V0Dv1OEGAzAAAAAAAAAAEunv4A2qAui2yT75MMmSqcDy7H8X/myuWlEXfa7vrtrPsMLS5bWl3G2Pf3eNgiAQORf5P3/EG7CUSPTNzH/23M3yQ0VEA/MZpi2xIOaPkhvEi5asD91OCMR9hanjC4OrjRzSxJz1YYO7/f9Y8hXgxTQQnPb3N69LB4VeGCbtDMXbohoQonOfwY/aTpAIkbjX3Wnb0xjTtg6ulZ7xZYlRyU00ySPtSSx0TNKsSxXtLq9ddtda0BRfWAKNCLTPer2Ldv44ttJwee7I8acdN+2PqS/7jPHMUHF6PDiOBgu2RppI/UvQQby+Tfn4lwh9RRq1QB+q7J22rRoAWjxnRjSawleA9aczfi5ASI2bhZl3vHFEdjemwgeag6JQ6Bv1Z1UMopzgVL1vr+d+UgBUwHmQxW1zS4rwibcJEr78SfbNOXj+tN4J6xWB3xuGTp3G7k+L2w279uyGUBRbT5dHfwjZ18RH1yv0jZ5YNHN6TUDLBXipesDWsnH4Kh4EyC8Zo+ZnJmCIBu9YOMF7wAMiZMEnhBA6g9I06mhG7Whg4PBtsLKoiB+yr+m0JAazUbp2BMbjDLpEtNutoHTX4WWI9bnqX/f98LBTVXzcyBInNwlnqOyqtlHZX6oBULLVuZLaKj9ZCMY80o63uO2FH5twgWmcISvhWvaxNb1lY/Gt1t8UemdhwnsN7Bx4K0bHyataeYD886boPB5BqHtsb/h0AB0zrwymzpTsPe5ZBdj8wWAgQro3j5h6NAlQfnzCno06NXvkRgYUsd2XQNPTa8/fIDZxo4TFMflSRbBpxxs/h38xNgbBcdxBT7kLxLFxMZ60mhOT64dtrbIhjCDxZMs4TjgRBEM+AnGBsdq3gtzBEStt5bPOJyIpGu1/7k830MoDFC+l2Tev/xXznNhvMv9E1WK8oPzVQd3qwQyWPXGiUHlm8O/CgzRz/uLO6+KKmXFABukQzT500Hi71KU6jr7yCgTur6uO9lD1YZ5FqJY9ankzRhhh3A9rI/RGkYuEaBax4KlrPdsGx9FChMs4usWJ1PmNuA0MXlySFXNFopY+Knm3iSF/MymKSYFwEUjFzpcQ72M5OqU7JXgim+QTgb0v/WuwPw50rgivRXDAF1DynAGF8gy+LOtzftGbMESIB+2AGEgbvKCmKuw1V12Xd7XLUkKwJzLfHVopW4uv0EVslFwtPd5tWgBDLNhrlix3YOmVs0l5qPPxnYc9Ainhm7wptMJQg+bDvgSV2SxvYCiNtF6mINN8f3TEx8xfdKrV+4vhdJcS3YcgfWW0Bh+wwqnxbu0vmOf7LraVtI30K0xd11vpl8DXZGa7mO26gX1TKurDqu3jvR7K5tLENRt7O9QHhBSKaMTGg99rA7X0/tKT4eeTW+wztmGX3FvgfJJZ69VOC4Bl0mXmW6Xd80X6imfnSeqdGK97kZGkNZLU3vqbfP8DvntXtchWJXXHQBOASUUnGljstxFZvYgbm9398QN8KQGdCbmw77PCCbNqZHZ2wcEdr5YoacBZ6qCvSQ3VCT1XWI6yGJCZj4u2/Wz4mqiKu7j5/PmwFAiHrm7j09CjAdlpexLCVt13B58LSf9ZqsGfbT4cftYfL0aa4vgw8yqOG0JccTwDFh+crnbP87YpjGfBYwvdcSnMfzCP3ARZvj1N/q851bRtyS3kWlOZujH5qEYJ1wx/N1eJZm5+rU3CMDzbkehYJqwJp47XTac1lVWHd5pbZVKBgMVxxoN/e65MEznxU+GzN3o7FBrLVwXXt7PnL0cGkyuwVmWsFaBiXl2SsbnHcbtzlratjIDs+fpFuwCpldJUyHFnouqwMXH4CkoF6R/iOJM9HQI5ibPS2PgrxIYLJgPPkPCbglnVJlqvM97XbdQ7IwOEaGmhNQGdBhmsqw2tnHriG61jkruSsDBCap8TfdHGy849FVa8/tIRjEc1dibujtn/dryzT4WDUCNc/vnis+xM68RleRdaA8ESxuJS/7cdQvQIB7t1FeuOiqYobCimURIwaPRZHN5RkgNZpg0YmatqqP4AUretlf4zlkDwBcUN5eOrYqP15H12E5gTu+fd4QcNIfyMbojXsccCssM0hliXP8Fk0fzPEnMlgRTKxYWkFuKvaUm/F1ivkhsk4yfJfC4GROsmMNLOFCclTTqBgA+j+2Nv3WLu36yW+zBbqIMsedhnqdI1TYJF9zz+HvteoLSASZc6zCgnmzE4tbIgiC29Fr5W4SyUGfrqafKNOYwg2CnU7r6qNyiCdvXRjLpoBV2eKHgcVWKxI0QELOCXMYvUVXUxN8RlTdzdP9Y+3fmE/LpXJZOGn0RsrwRWDJBmjUduIH4HhX+x0dXEYYaoMU8Mf67LUtttZ1voDwdK2Jnb7KXeeEO8JkSwdw9z1Deg4vSnkkiZESVWulJLzEebv1hcj88+ZsxN20+wvcxzbK/CFGryeMOhsE795DpOyESk42raHViUPSZIvVxTGq1GEPtr4Z9ChcRj5SXkbltOEobXcTMWPFNTKhFHBve8QHjz5H55gFLqQ5+Eb2gpyLNaAR27dM51IWyX9+4gJpzyK+jyPuO6lD0m8uz3o5MKyh7ypvP5UrW4i2DukLv3Hu+HamoBR0Mw40lSLzZMc2W15oW6MAgc60HYg5bvPfVyaQjmPJelsz3vRPghRkeC1zAUb6/lTRt+NURtTFnB2GeELDsMK+1yvNYN8nHLGGcQRvkQ1e5Y3LaiJnXYlkPtDM1GnEWbVUTz8j8tT8SD8vWjrdGQIfn3qArVuEf7irEelvIYUDSCQfsKwLVgplU9zA4PaVRnddn9uKsFBpjM3p/AM6fN8cervTiNStO5N9G/mfHEoCu+Ofwcpr/RoPzUSDZj+C8E96wb6qZC+PYAvx5lYsVz38idK+hZN1/aRn/dgIZzYkpSM6Po92W39gt5VWbteSLZrYclZ/Zt0HwlIpm/LCFI/dshYc43vAmFYtPVUBgFNqp59YG1HeFx78wOk+F5EO5w+s5vN1q/QikT+wh2B2Eio9By8qxg3b2lg5acCUXWZ8bYq2IH6PaiI1nDmWqfgIctyHcToYijQCdZXJRnbHF+jXfJDEAEn7TBgknqur/OUlwE6U26vvANxPLkDnaoBdmwhOjwYAdE8w1D66ppVnwi9ji6/0RVy9LAnZx54n6WkrnT7YtDvKECtxjSbvQ5FNx+wbho+otZozuaa4LZv3vy9AxnM0PER0I6Bqd4GxRIo1e/HS3LAtN0ju16TPtEMDxW4HxScgdgvqjVQnlUeObHIOsYUY8aG/lf+MfHXgnWdNxF64CcTOlGFEa6/Sr5sOMHwTRJbU2txBXF67KS0wmZeZUlDAQ4VzdFWdNbgy+cFOHY7kJFDIE3kGrZ6tlTHu60JFfpe4XycM9xbaf1vMno3qQhRbSy4NlDwGVT14v8Qk9zq7fpVZjedfeU2RZ54Khr3Rf8/v5uMWZsp6Il87CwbtPfIF7UQiLXZWZQMsYr19Gz0zCt6RoKyGfu1ixEaENbYNm5zVbxRpVs1hrLCXh2vjZvEBneSCF5//gsDIpkUW1pXkLgetKTHtVUhYTw4E7IKfaWoxWdxWQ1s5xtEH8w998I3Siy0X37zImvdtaxLdus6sH2cGJ3xg6WnMTcCh5DeohxawGmjjgsnBnNb7FOh0wc/54Mk7/YwWTEeJCIzTj4ktlIfjWxq3Gmq8dI7zgP6B2DiVuDCwmpuNSyzKiEaQgljZK9BJgE7tpW/U1HJbF4BzrwkiSMnzzd9PZPF2oVZ/Fpl31PurFQL5UyQnwDSb2Lv+mzMTa4jMJUc9rDcCzclBVl4EdatFsr+RLYD/IIPLYMQV9MWajKVI77G1iysPANrmgEZqmk19y1Xv+QbYsgbSGrq9lwhVUhMIciOoNUCc3z6fIcg9QlV1gmJFLBOLINI55rpOzA2bu5qw9Z16JLk/uU4qw/g3bKByehr2OM66YM7pUykm9OAtOamc9JAnOiT3sMVE9KqUnBC/jldSt0Sx1Nb4HYg16EDsJiUPphsQHbhTGQNNBSD0IDf+A1R6vIs5HWUVmpqp+RPPQCOO8OXEeqvFwnYJZ35BWQibSBaR/Fvr5dhQd+w+Q8vQr4rqj+SEI+YPXfgo5Gf1r5IIualuC4e3SevLYOyoCBIiCAltzIqcFkQn6PiNCnzp9vWm2TeTIS3fL3LAwEVOXdmu88dNk15xpl0//jhh46p6HjvWsmi3ERlxXF/YBl+CXsNJuGALFWFDVDrPhFLUVCM+634fEDV0J4ZR3YTkFdUjAiEJcMYpLLoHEXjOyR1WjeQxFCdIT98MtPusDW+u4QTdvLqbg3bG3QkNvjEJCsB6J7hoJlC8BtXaRAQVLothhZhC/PDCUfIWIalOIKYO5EYopKniAbhTBT4ta5bU2eS/m9fSEnyMCQewvN0WOPHmAnyLZt0BNHQkIrYAl2DLPrnI9E899zXABCP2YYIg3z90Tdel3fsYYhaJtnjEsQECo1itI3BaK6pGkRCeylYr3bcmLWT/OBnABoeQkpl99Wg5xuNfAqEj97gPSeuQAwE69jbqj2IwXCOSThot6BViv8NA0ihyiUmQnP9ENYurh70tF+KhesWjd3Fn0LmycD7rf0dfa+rSgPoEnAasLNtlqIeYjM0k7Fhics4I8WKYwgXTU2ISmSgi7VxuiSyuxawmA12UmWimG7QHv3BfpcNZXIPDXW0g/pgWbeE9Wk4z1zFxbsuzWIWC9tKXRsg9eY9I0Twe56XUy5KF+Ooqwz+ZpUneW346ofXoZJEz3fbBTgY1pigqisaeZT6n2yMV/KJb6HqgernmP2WssPqm0OYaZCBu3O0jqA0rv40zu48P8vtge2DMEyBO7oKVGP1/Rdykl/dTZNuIOTqPKsIXCUqJrRpiF7bJnUPl98xU65sfI0/fbZX4KYC1o4k7PpiG7Q95M8eI+lKTLBcsV1dd+KFNoe2EretAJisd8HpexR1JcUmmWNoRmfmXAVEz0Uhxu+Cw6hBB6xIOW3nE7vrRcQ3/V/KyfUFIp5PlSADqxXsA0+JSkuEN2JY0O/0JJekOsPgYsMNaGl38X67wIPuOeNNATbIVklfd4S+31FFwVTt6y0QpHgx/Sdm9hqOTWmKxm3+3sdnnJHQ3lsrJLuy7rYOkOmjMcrHWP/qyjYzhMKuDVC5QEOFV4XDFWDOFdBof0ccH5DbdWgor4oYNv+6Sn5xzaLmcjSDmlxzZIsAQacOuG5SkabpPe0cnrzmLcqdQhKxGqERDLvFWSkVjQLZx6SHQk87EgcYH7srP47pWhWMsq4vntCfMv+hHpbh9/O0bmypCSJodkHiWlsUYnrCXbhtjWPypax+QpKRjcxwRy9eICbitSrpU82twbU/pJYms84Ho37jlh/oLOQCPzB4hWouEq32k2FC0vnACs1F6QFntpINrxlueGEnFpSAva8gsiqZvbWqXO+9S16+UKB4lZ1qlBXZeue+4sm/PM+HwYy27CKmu/Ju85BvIUmTrl8qrT7TCzs7TxQ5UdVwZRhq7E1Z/6FMYh1Y2sGBrzxnrOq/Vayw/LigH/ARwc2V0EQgACK8vAAAAAAf8BHBzZXQSSSAAAAAAL68IAOfA50MdepGFbjUOkF5BpuN9RllcqNE6E+vIA+DZrtXr3UkFaMr99CYyxxUGqzBXO2gnZDGPKRw4Q97c0L8fibUH/ARwc2V0EyAjD09dS3xvqEWAbuT2dxNFnhtp6OYPzuLklAx6DV3hsQf8BHBzZXQUQwEAAdsxNzWMrM4t4sNB0P2+1i1MJuLDswnBqLV5do/fwC+shXVYYNelfQoUqCbwCQZr1wNze4zc9m4wFw5ICDcAos8AIgIDb7DkaJ5uRSbHwQjjdOGADSnot8s8QMpRMk/DkQWJMMQQMS2SEQAAAIABAACABQAAgAEDCAei4REAAAAAAQQWABTxz85fpm8iPOpY0fuqQVyJEdiZwQf8BHBzZXQCICMPT11LfG+oRYBu5PZ3E0WeG2no5g/O4uSUDHoNXeGyB/wEcHNldAYhAgFJhKmTr/gus/JPF6lNs1zX548bWxaCiruPlaJcQkEBB/wEcHNldAgEAAAAAAAiAgJ7zTlERqBTY71/TZX7y2gQgcZ2WwW0HqOcrArquS+e1hAxLZIRAAAAgAAAAIAEAACAAQMIAGXNHQAAAAABBBYAFCyW0Lyfa85zWSPMizouGvhDiK/EB/wEcHNldAIgIw9PXUt8b6hFgG7k9ncTRZ4baejmD87i5JQMeg1d4bIH/ARwc2V0BiEDwfXIBuUb9hTv7Y+HYiPhOjNYIPvpn86jit1qob7Yo4YH/ARwc2V0CAQAAAAAAAEDCPkAAAAAAAAAAQQAB/wEcHNldAIgIw9PXUt8b6hFgG7k9ncTRZ4baejmD87i5JQMeg1d4bIH/ARwc2V0CAQAAAAAAA==" + INPUT_BAD_ASSET_PROOF = "cHNldP8BAgQCAAAAAQMEAAAAAAEEAQEBBQEDAfsEAgAAAAABAP19AQIAAAAAAqTuHc11KinNVvXd/9sQr+ipDYZjtigEcm2oUT69BIpzAAAAAAD9////pO4dzXUqKc1W9d3/2xCv6KkNhmO2KARybahRPr0EinMBAAAAAP3///8DC7mQAAC2x+7vHmDpKr609OKkdrg0eF1kBTx/wAEmdQdsCUtYYVDtovHBZr8q8sMVSW5ecl9gGAFx7fv6aiTdslG8A2MtncskgsY320AFJIcDbsam59WJAEAvWZPrYGNEbNjgFgAUl3Rcv6DUKzl5yB+5LJTsqra8YLgKzHQ1jw0pNVL+Aoicxf4EfueweOUt60iMBEeZV2FTLu0IgGd6tSBPsOyg7uvgs1084gyqdkEKToYDJ5cfvfCUNZkDxZhNJF/j/pBHW4I9RVFojsI0Iob7snJfOcPPYk8mmG8WABQsltC8n2vOc1kjzIs6Lhr4Q4ivxAEjD09dS3xvqEWAbuT2dxNFnhtp6OYPzuLklAx6DV3hsgEAAAAAAAABAQAAAAAAAAEBegrMdDWPDSk1Uv4CiJzF/gR+57B45S3rSIwER5lXYVMu7QiAZ3q1IE+w7KDu6+CzXTziDKp2QQpOhgMnlx+98JQ1mQPFmE0kX+P+kEdbgj1FUWiOwjQihvuycl85w89iTyaYbxYAFCyW0Lyfa85zWSPMizouGvhDiK/EIgYCe805REagU2O9f02V+8toEIHGdlsFtB6jnKwK6rkvntYQMS2SEQAAAIAAAACABAAAgAEOIBIOv8GomhHbERYzGvmdBWc7jzdsscdRxJZJn7RnkTqvAQ8EAQAAAAEQBP3///8H/ARwc2V0Dv1OEGAzAAAAAAAAAAEunv4A2qAui2yT75MMmSqcDy7H8X/myuWlEXfa7vrtrPsMLS5bWl3G2Pf3eNgiAQORf5P3/EG7CUSPTNzH/23M3yQ0VEA/MZpi2xIOaPkhvEi5asD91OCMR9hanjC4OrjRzSxJz1YYO7/f9Y8hXgxTQQnPb3N69LB4VeGCbtDMXbohoQonOfwY/aTpAIkbjX3Wnb0xjTtg6ulZ7xZYlRyU00ySPtSSx0TNKsSxXtLq9ddtda0BRfWAKNCLTPer2Ldv44ttJwee7I8acdN+2PqS/7jPHMUHF6PDiOBgu2RppI/UvQQby+Tfn4lwh9RRq1QB+q7J22rRoAWjxnRjSawleA9aczfi5ASI2bhZl3vHFEdjemwgeag6JQ6Bv1Z1UMopzgVL1vr+d+UgBUwHmQxW1zS4rwibcJEr78SfbNOXj+tN4J6xWB3xuGTp3G7k+L2w279uyGUBRbT5dHfwjZ18RH1yv0jZ5YNHN6TUDLBXipesDWsnH4Kh4EyC8Zo+ZnJmCIBu9YOMF7wAMiZMEnhBA6g9I06mhG7Whg4PBtsLKoiB+yr+m0JAazUbp2BMbjDLpEtNutoHTX4WWI9bnqX/f98LBTVXzcyBInNwlnqOyqtlHZX6oBULLVuZLaKj9ZCMY80o63uO2FH5twgWmcISvhWvaxNb1lY/Gt1t8UemdhwnsN7Bx4K0bHyataeYD886boPB5BqHtsb/h0AB0zrwymzpTsPe5ZBdj8wWAgQro3j5h6NAlQfnzCno06NXvkRgYUsd2XQNPTa8/fIDZxo4TFMflSRbBpxxs/h38xNgbBcdxBT7kLxLFxMZ60mhOT64dtrbIhjCDxZMs4TjgRBEM+AnGBsdq3gtzBEStt5bPOJyIpGu1/7k830MoDFC+l2Tev/xXznNhvMv9E1WK8oPzVQd3qwQyWPXGiUHlm8O/CgzRz/uLO6+KKmXFABukQzT500Hi71KU6jr7yCgTur6uO9lD1YZ5FqJY9ankzRhhh3A9rI/RGkYuEaBax4KlrPdsGx9FChMs4usWJ1PmNuA0MXlySFXNFopY+Knm3iSF/MymKSYFwEUjFzpcQ72M5OqU7JXgim+QTgb0v/WuwPw50rgivRXDAF1DynAGF8gy+LOtzftGbMESIB+2AGEgbvKCmKuw1V12Xd7XLUkKwJzLfHVopW4uv0EVslFwtPd5tWgBDLNhrlix3YOmVs0l5qPPxnYc9Ainhm7wptMJQg+bDvgSV2SxvYCiNtF6mINN8f3TEx8xfdKrV+4vhdJcS3YcgfWW0Bh+wwqnxbu0vmOf7LraVtI30K0xd11vpl8DXZGa7mO26gX1TKurDqu3jvR7K5tLENRt7O9QHhBSKaMTGg99rA7X0/tKT4eeTW+wztmGX3FvgfJJZ69VOC4Bl0mXmW6Xd80X6imfnSeqdGK97kZGkNZLU3vqbfP8DvntXtchWJXXHQBOASUUnGljstxFZvYgbm9398QN8KQGdCbmw77PCCbNqZHZ2wcEdr5YoacBZ6qCvSQ3VCT1XWI6yGJCZj4u2/Wz4mqiKu7j5/PmwFAiHrm7j09CjAdlpexLCVt13B58LSf9ZqsGfbT4cftYfL0aa4vgw8yqOG0JccTwDFh+crnbP87YpjGfBYwvdcSnMfzCP3ARZvj1N/q851bRtyS3kWlOZujH5qEYJ1wx/N1eJZm5+rU3CMDzbkehYJqwJp47XTac1lVWHd5pbZVKBgMVxxoN/e65MEznxU+GzN3o7FBrLVwXXt7PnL0cGkyuwVmWsFaBiXl2SsbnHcbtzlratjIDs+fpFuwCpldJUyHFnouqwMXH4CkoF6R/iOJM9HQI5ibPS2PgrxIYLJgPPkPCbglnVJlqvM97XbdQ7IwOEaGmhNQGdBhmsqw2tnHriG61jkruSsDBCap8TfdHGy849FVa8/tIRjEc1dibujtn/dryzT4WDUCNc/vnis+xM68RleRdaA8ESxuJS/7cdQvQIB7t1FeuOiqYobCimURIwaPRZHN5RkgNZpg0YmatqqP4AUretlf4zlkDwBcUN5eOrYqP15H12E5gTu+fd4QcNIfyMbojXsccCssM0hliXP8Fk0fzPEnMlgRTKxYWkFuKvaUm/F1ivkhsk4yfJfC4GROsmMNLOFCclTTqBgA+j+2Nv3WLu36yW+zBbqIMsedhnqdI1TYJF9zz+HvteoLSASZc6zCgnmzE4tbIgiC29Fr5W4SyUGfrqafKNOYwg2CnU7r6qNyiCdvXRjLpoBV2eKHgcVWKxI0QELOCXMYvUVXUxN8RlTdzdP9Y+3fmE/LpXJZOGn0RsrwRWDJBmjUduIH4HhX+x0dXEYYaoMU8Mf67LUtttZ1voDwdK2Jnb7KXeeEO8JkSwdw9z1Deg4vSnkkiZESVWulJLzEebv1hcj88+ZsxN20+wvcxzbK/CFGryeMOhsE795DpOyESk42raHViUPSZIvVxTGq1GEPtr4Z9ChcRj5SXkbltOEobXcTMWPFNTKhFHBve8QHjz5H55gFLqQ5+Eb2gpyLNaAR27dM51IWyX9+4gJpzyK+jyPuO6lD0m8uz3o5MKyh7ypvP5UrW4i2DukLv3Hu+HamoBR0Mw40lSLzZMc2W15oW6MAgc60HYg5bvPfVyaQjmPJelsz3vRPghRkeC1zAUb6/lTRt+NURtTFnB2GeELDsMK+1yvNYN8nHLGGcQRvkQ1e5Y3LaiJnXYlkPtDM1GnEWbVUTz8j8tT8SD8vWjrdGQIfn3qArVuEf7irEelvIYUDSCQfsKwLVgplU9zA4PaVRnddn9uKsFBpjM3p/AM6fN8cervTiNStO5N9G/mfHEoCu+Ofwcpr/RoPzUSDZj+C8E96wb6qZC+PYAvx5lYsVz38idK+hZN1/aRn/dgIZzYkpSM6Po92W39gt5VWbteSLZrYclZ/Zt0HwlIpm/LCFI/dshYc43vAmFYtPVUBgFNqp59YG1HeFx78wOk+F5EO5w+s5vN1q/QikT+wh2B2Eio9By8qxg3b2lg5acCUXWZ8bYq2IH6PaiI1nDmWqfgIctyHcToYijQCdZXJRnbHF+jXfJDEAEn7TBgknqur/OUlwE6U26vvANxPLkDnaoBdmwhOjwYAdE8w1D66ppVnwi9ji6/0RVy9LAnZx54n6WkrnT7YtDvKECtxjSbvQ5FNx+wbho+otZozuaa4LZv3vy9AxnM0PER0I6Bqd4GxRIo1e/HS3LAtN0ju16TPtEMDxW4HxScgdgvqjVQnlUeObHIOsYUY8aG/lf+MfHXgnWdNxF64CcTOlGFEa6/Sr5sOMHwTRJbU2txBXF67KS0wmZeZUlDAQ4VzdFWdNbgy+cFOHY7kJFDIE3kGrZ6tlTHu60JFfpe4XycM9xbaf1vMno3qQhRbSy4NlDwGVT14v8Qk9zq7fpVZjedfeU2RZ54Khr3Rf8/v5uMWZsp6Il87CwbtPfIF7UQiLXZWZQMsYr19Gz0zCt6RoKyGfu1ixEaENbYNm5zVbxRpVs1hrLCXh2vjZvEBneSCF5//gsDIpkUW1pXkLgetKTHtVUhYTw4E7IKfaWoxWdxWQ1s5xtEH8w998I3Siy0X37zImvdtaxLdus6sH2cGJ3xg6WnMTcCh5DeohxawGmjjgsnBnNb7FOh0wc/54Mk7/YwWTEeJCIzTj4ktlIfjWxq3Gmq8dI7zgP6B2DiVuDCwmpuNSyzKiEaQgljZK9BJgE7tpW/U1HJbF4BzrwkiSMnzzd9PZPF2oVZ/Fpl31PurFQL5UyQnwDSb2Lv+mzMTa4jMJUc9rDcCzclBVl4EdatFsr+RLYD/IIPLYMQV9MWajKVI77G1iysPANrmgEZqmk19y1Xv+QbYsgbSGrq9lwhVUhMIciOoNUCc3z6fIcg9QlV1gmJFLBOLINI55rpOzA2bu5qw9Z16JLk/uU4qw/g3bKByehr2OM66YM7pUykm9OAtOamc9JAnOiT3sMVE9KqUnBC/jldSt0Sx1Nb4HYg16EDsJiUPphsQHbhTGQNNBSD0IDf+A1R6vIs5HWUVmpqp+RPPQCOO8OXEeqvFwnYJZ35BWQibSBaR/Fvr5dhQd+w+Q8vQr4rqj+SEI+YPXfgo5Gf1r5IIualuC4e3SevLYOyoCBIiCAltzIqcFkQn6PiNCnzp9vWm2TeTIS3fL3LAwEVOXdmu88dNk15xpl0//jhh46p6HjvWsmi3ERlxXF/YBl+CXsNJuGALFWFDVDrPhFLUVCM+634fEDV0J4ZR3YTkFdUjAiEJcMYpLLoHEXjOyR1WjeQxFCdIT98MtPusDW+u4QTdvLqbg3bG3QkNvjEJCsB6J7hoJlC8BtXaRAQVLothhZhC/PDCUfIWIalOIKYO5EYopKniAbhTBT4ta5bU2eS/m9fSEnyMCQewvN0WOPHmAnyLZt0BNHQkIrYAl2DLPrnI9E899zXABCP2YYIg3z90Tdel3fsYYhaJtnjEsQECo1itI3BaK6pGkRCeylYr3bcmLWT/OBnABoeQkpl99Wg5xuNfAqEj97gPSeuQAwE69jbqj2IwXCOSThot6BViv8NA0ihyiUmQnP9ENYurh70tF+KhesWjd3Fn0LmycD7rf0dfa+rSgPoEnAasLNtlqIeYjM0k7Fhics4I8WKYwgXTU2ISmSgi7VxuiSyuxawmA12UmWimG7QHv3BfpcNZXIPDXW0g/pgWbeE9Wk4z1zFxbsuzWIWC9tKXRsg9eY9I0Twe56XUy5KF+Ooqwz+ZpUneW346ofXoZJEz3fbBTgY1pigqisaeZT6n2yMV/KJb6HqgernmP2WssPqm0OYaZCBu3O0jqA0rv40zu48P8vtge2DMEyBO7oKVGP1/Rdykl/dTZNuIOTqPKsIXCUqJrRpiF7bJnUPl98xU65sfI0/fbZX4KYC1o4k7PpiG7Q95M8eI+lKTLBcsV1dd+KFNoe2EretAJisd8HpexR1JcUmmWNoRmfmXAVEz0Uhxu+Cw6hBB6xIOW3nE7vrRcQ3/V/KyfUFIp5PlSADqxXsA0+JSkuEN2JY0O/0JJekOsPgYsMNaGl38X67wIPuOeNNATbIVklfd4S+31FFwVTt6y0QpHgx/Sdm9hqOTWmKxm3+3sdnnJHQ3lsrJLuy7rYOkOmjMcrHWP/qyjYzhMKuDVC5QEOFV4XDFWDOFdBof0ccH5DbdWgor4oYNv+6Sn5xzaLmcjSDmlxzZIsAQacOuG5SkabpPe0cnrzmLcqdQhKxGqERDLvFWSkVjQLZx6SHQk87EgcYH7srP47pWhWMsq4vntCfMv+hHpbh9/O0bmypCSJodkHiWlsUYnrCXbhtjWPypax+QpKRjcxwRy9eICbitSrpU82twbU/pJYms84Ho37jlh/oLOQCPzB4hWouEq32k2FC0vnACs1F6QFntpINrxlueGEnFpSAva8gsiqZvbWqXO+9S16+UKB4lZ1qlBXZeue+4sm/PM+HwYy27CKmu/Ju85BvIUmTrl8qrT7TCzs7TxQ5UdVwZRhq7E1Z/6FMYh1Y2sGBrzxnrOq/Vayw/LigH/ARwc2V0EQgACK8vAAAAAAf8BHBzZXQSSSAAAAAAL68IAOfA50MdepGFbjUOkF5BpuN9RllcqNE6E+vIA+DZrtXr3UkFaMr99CYyxxUGqzBXO2gnZDGPKRw4Q97c0L8fibUH/ARwc2V0EyAjD09dS3xvqEWAbuT2dxNFnhtp6OYPzuLklAx6DV3hsgf8BHBzZXQUQwEAAdsxNzWMrM4t4sNB0P2+1i1MJuLDswnBqLV5do/fwC+shXVYYNelfQoUqCbwCQZr1wNze4zc9m4wFw5ICDcAos4AIgIDb7DkaJ5uRSbHwQjjdOGADSnot8s8QMpRMk/DkQWJMMQQMS2SEQAAAIABAACABQAAgAEDCAei4REAAAAAAQQWABTxz85fpm8iPOpY0fuqQVyJEdiZwQf8BHBzZXQCICMPT11LfG+oRYBu5PZ3E0WeG2no5g/O4uSUDHoNXeGyB/wEcHNldAYhAgFJhKmTr/gus/JPF6lNs1zX548bWxaCiruPlaJcQkEBB/wEcHNldAgEAAAAAAAiAgJ7zTlERqBTY71/TZX7y2gQgcZ2WwW0HqOcrArquS+e1hAxLZIRAAAAgAAAAIAEAACAAQMIAGXNHQAAAAABBBYAFCyW0Lyfa85zWSPMizouGvhDiK/EB/wEcHNldAIgIw9PXUt8b6hFgG7k9ncTRZ4baejmD87i5JQMeg1d4bIH/ARwc2V0BiEDwfXIBuUb9hTv7Y+HYiPhOjNYIPvpn86jit1qob7Yo4YH/ARwc2V0CAQAAAAAAAEDCPkAAAAAAAAAAQQAB/wEcHNldAIgIw9PXUt8b6hFgG7k9ncTRZ4baejmD87i5JQMeg1d4bIH/ARwc2V0CAQAAAAAAA==" + INPUT_MISSING_VALUE = "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" + INPUT_MISSING_VALUE_PROOF = "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" + INPUT_MISSING_ASSET = "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" + INPUT_MISSING_ASSET_PROOF = "cHNldP8BAgQCAAAAAQMEAAAAAAEEAQEBBQEDAfsEAgAAAAABAP19AQIAAAAAAqTuHc11KinNVvXd/9sQr+ipDYZjtigEcm2oUT69BIpzAAAAAAD9////pO4dzXUqKc1W9d3/2xCv6KkNhmO2KARybahRPr0EinMBAAAAAP3///8DC7mQAAC2x+7vHmDpKr609OKkdrg0eF1kBTx/wAEmdQdsCUtYYVDtovHBZr8q8sMVSW5ecl9gGAFx7fv6aiTdslG8A2MtncskgsY320AFJIcDbsam59WJAEAvWZPrYGNEbNjgFgAUl3Rcv6DUKzl5yB+5LJTsqra8YLgKzHQ1jw0pNVL+Aoicxf4EfueweOUt60iMBEeZV2FTLu0IgGd6tSBPsOyg7uvgs1084gyqdkEKToYDJ5cfvfCUNZkDxZhNJF/j/pBHW4I9RVFojsI0Iob7snJfOcPPYk8mmG8WABQsltC8n2vOc1kjzIs6Lhr4Q4ivxAEjD09dS3xvqEWAbuT2dxNFnhtp6OYPzuLklAx6DV3hsgEAAAAAAAABAQAAAAAAAAEBegrMdDWPDSk1Uv4CiJzF/gR+57B45S3rSIwER5lXYVMu7QiAZ3q1IE+w7KDu6+CzXTziDKp2QQpOhgMnlx+98JQ1mQPFmE0kX+P+kEdbgj1FUWiOwjQihvuycl85w89iTyaYbxYAFCyW0Lyfa85zWSPMizouGvhDiK/EIgYCe805REagU2O9f02V+8toEIHGdlsFtB6jnKwK6rkvntYQMS2SEQAAAIAAAACABAAAgAEOIBIOv8GomhHbERYzGvmdBWc7jzdsscdRxJZJn7RnkTqvAQ8EAQAAAAEQBP3///8H/ARwc2V0Dv1OEGAzAAAAAAAAAAEunv4A2qAui2yT75MMmSqcDy7H8X/myuWlEXfa7vrtrPsMLS5bWl3G2Pf3eNgiAQORf5P3/EG7CUSPTNzH/23M3yQ0VEA/MZpi2xIOaPkhvEi5asD91OCMR9hanjC4OrjRzSxJz1YYO7/f9Y8hXgxTQQnPb3N69LB4VeGCbtDMXbohoQonOfwY/aTpAIkbjX3Wnb0xjTtg6ulZ7xZYlRyU00ySPtSSx0TNKsSxXtLq9ddtda0BRfWAKNCLTPer2Ldv44ttJwee7I8acdN+2PqS/7jPHMUHF6PDiOBgu2RppI/UvQQby+Tfn4lwh9RRq1QB+q7J22rRoAWjxnRjSawleA9aczfi5ASI2bhZl3vHFEdjemwgeag6JQ6Bv1Z1UMopzgVL1vr+d+UgBUwHmQxW1zS4rwibcJEr78SfbNOXj+tN4J6xWB3xuGTp3G7k+L2w279uyGUBRbT5dHfwjZ18RH1yv0jZ5YNHN6TUDLBXipesDWsnH4Kh4EyC8Zo+ZnJmCIBu9YOMF7wAMiZMEnhBA6g9I06mhG7Whg4PBtsLKoiB+yr+m0JAazUbp2BMbjDLpEtNutoHTX4WWI9bnqX/f98LBTVXzcyBInNwlnqOyqtlHZX6oBULLVuZLaKj9ZCMY80o63uO2FH5twgWmcISvhWvaxNb1lY/Gt1t8UemdhwnsN7Bx4K0bHyataeYD886boPB5BqHtsb/h0AB0zrwymzpTsPe5ZBdj8wWAgQro3j5h6NAlQfnzCno06NXvkRgYUsd2XQNPTa8/fIDZxo4TFMflSRbBpxxs/h38xNgbBcdxBT7kLxLFxMZ60mhOT64dtrbIhjCDxZMs4TjgRBEM+AnGBsdq3gtzBEStt5bPOJyIpGu1/7k830MoDFC+l2Tev/xXznNhvMv9E1WK8oPzVQd3qwQyWPXGiUHlm8O/CgzRz/uLO6+KKmXFABukQzT500Hi71KU6jr7yCgTur6uO9lD1YZ5FqJY9ankzRhhh3A9rI/RGkYuEaBax4KlrPdsGx9FChMs4usWJ1PmNuA0MXlySFXNFopY+Knm3iSF/MymKSYFwEUjFzpcQ72M5OqU7JXgim+QTgb0v/WuwPw50rgivRXDAF1DynAGF8gy+LOtzftGbMESIB+2AGEgbvKCmKuw1V12Xd7XLUkKwJzLfHVopW4uv0EVslFwtPd5tWgBDLNhrlix3YOmVs0l5qPPxnYc9Ainhm7wptMJQg+bDvgSV2SxvYCiNtF6mINN8f3TEx8xfdKrV+4vhdJcS3YcgfWW0Bh+wwqnxbu0vmOf7LraVtI30K0xd11vpl8DXZGa7mO26gX1TKurDqu3jvR7K5tLENRt7O9QHhBSKaMTGg99rA7X0/tKT4eeTW+wztmGX3FvgfJJZ69VOC4Bl0mXmW6Xd80X6imfnSeqdGK97kZGkNZLU3vqbfP8DvntXtchWJXXHQBOASUUnGljstxFZvYgbm9398QN8KQGdCbmw77PCCbNqZHZ2wcEdr5YoacBZ6qCvSQ3VCT1XWI6yGJCZj4u2/Wz4mqiKu7j5/PmwFAiHrm7j09CjAdlpexLCVt13B58LSf9ZqsGfbT4cftYfL0aa4vgw8yqOG0JccTwDFh+crnbP87YpjGfBYwvdcSnMfzCP3ARZvj1N/q851bRtyS3kWlOZujH5qEYJ1wx/N1eJZm5+rU3CMDzbkehYJqwJp47XTac1lVWHd5pbZVKBgMVxxoN/e65MEznxU+GzN3o7FBrLVwXXt7PnL0cGkyuwVmWsFaBiXl2SsbnHcbtzlratjIDs+fpFuwCpldJUyHFnouqwMXH4CkoF6R/iOJM9HQI5ibPS2PgrxIYLJgPPkPCbglnVJlqvM97XbdQ7IwOEaGmhNQGdBhmsqw2tnHriG61jkruSsDBCap8TfdHGy849FVa8/tIRjEc1dibujtn/dryzT4WDUCNc/vnis+xM68RleRdaA8ESxuJS/7cdQvQIB7t1FeuOiqYobCimURIwaPRZHN5RkgNZpg0YmatqqP4AUretlf4zlkDwBcUN5eOrYqP15H12E5gTu+fd4QcNIfyMbojXsccCssM0hliXP8Fk0fzPEnMlgRTKxYWkFuKvaUm/F1ivkhsk4yfJfC4GROsmMNLOFCclTTqBgA+j+2Nv3WLu36yW+zBbqIMsedhnqdI1TYJF9zz+HvteoLSASZc6zCgnmzE4tbIgiC29Fr5W4SyUGfrqafKNOYwg2CnU7r6qNyiCdvXRjLpoBV2eKHgcVWKxI0QELOCXMYvUVXUxN8RlTdzdP9Y+3fmE/LpXJZOGn0RsrwRWDJBmjUduIH4HhX+x0dXEYYaoMU8Mf67LUtttZ1voDwdK2Jnb7KXeeEO8JkSwdw9z1Deg4vSnkkiZESVWulJLzEebv1hcj88+ZsxN20+wvcxzbK/CFGryeMOhsE795DpOyESk42raHViUPSZIvVxTGq1GEPtr4Z9ChcRj5SXkbltOEobXcTMWPFNTKhFHBve8QHjz5H55gFLqQ5+Eb2gpyLNaAR27dM51IWyX9+4gJpzyK+jyPuO6lD0m8uz3o5MKyh7ypvP5UrW4i2DukLv3Hu+HamoBR0Mw40lSLzZMc2W15oW6MAgc60HYg5bvPfVyaQjmPJelsz3vRPghRkeC1zAUb6/lTRt+NURtTFnB2GeELDsMK+1yvNYN8nHLGGcQRvkQ1e5Y3LaiJnXYlkPtDM1GnEWbVUTz8j8tT8SD8vWjrdGQIfn3qArVuEf7irEelvIYUDSCQfsKwLVgplU9zA4PaVRnddn9uKsFBpjM3p/AM6fN8cervTiNStO5N9G/mfHEoCu+Ofwcpr/RoPzUSDZj+C8E96wb6qZC+PYAvx5lYsVz38idK+hZN1/aRn/dgIZzYkpSM6Po92W39gt5VWbteSLZrYclZ/Zt0HwlIpm/LCFI/dshYc43vAmFYtPVUBgFNqp59YG1HeFx78wOk+F5EO5w+s5vN1q/QikT+wh2B2Eio9By8qxg3b2lg5acCUXWZ8bYq2IH6PaiI1nDmWqfgIctyHcToYijQCdZXJRnbHF+jXfJDEAEn7TBgknqur/OUlwE6U26vvANxPLkDnaoBdmwhOjwYAdE8w1D66ppVnwi9ji6/0RVy9LAnZx54n6WkrnT7YtDvKECtxjSbvQ5FNx+wbho+otZozuaa4LZv3vy9AxnM0PER0I6Bqd4GxRIo1e/HS3LAtN0ju16TPtEMDxW4HxScgdgvqjVQnlUeObHIOsYUY8aG/lf+MfHXgnWdNxF64CcTOlGFEa6/Sr5sOMHwTRJbU2txBXF67KS0wmZeZUlDAQ4VzdFWdNbgy+cFOHY7kJFDIE3kGrZ6tlTHu60JFfpe4XycM9xbaf1vMno3qQhRbSy4NlDwGVT14v8Qk9zq7fpVZjedfeU2RZ54Khr3Rf8/v5uMWZsp6Il87CwbtPfIF7UQiLXZWZQMsYr19Gz0zCt6RoKyGfu1ixEaENbYNm5zVbxRpVs1hrLCXh2vjZvEBneSCF5//gsDIpkUW1pXkLgetKTHtVUhYTw4E7IKfaWoxWdxWQ1s5xtEH8w998I3Siy0X37zImvdtaxLdus6sH2cGJ3xg6WnMTcCh5DeohxawGmjjgsnBnNb7FOh0wc/54Mk7/YwWTEeJCIzTj4ktlIfjWxq3Gmq8dI7zgP6B2DiVuDCwmpuNSyzKiEaQgljZK9BJgE7tpW/U1HJbF4BzrwkiSMnzzd9PZPF2oVZ/Fpl31PurFQL5UyQnwDSb2Lv+mzMTa4jMJUc9rDcCzclBVl4EdatFsr+RLYD/IIPLYMQV9MWajKVI77G1iysPANrmgEZqmk19y1Xv+QbYsgbSGrq9lwhVUhMIciOoNUCc3z6fIcg9QlV1gmJFLBOLINI55rpOzA2bu5qw9Z16JLk/uU4qw/g3bKByehr2OM66YM7pUykm9OAtOamc9JAnOiT3sMVE9KqUnBC/jldSt0Sx1Nb4HYg16EDsJiUPphsQHbhTGQNNBSD0IDf+A1R6vIs5HWUVmpqp+RPPQCOO8OXEeqvFwnYJZ35BWQibSBaR/Fvr5dhQd+w+Q8vQr4rqj+SEI+YPXfgo5Gf1r5IIualuC4e3SevLYOyoCBIiCAltzIqcFkQn6PiNCnzp9vWm2TeTIS3fL3LAwEVOXdmu88dNk15xpl0//jhh46p6HjvWsmi3ERlxXF/YBl+CXsNJuGALFWFDVDrPhFLUVCM+634fEDV0J4ZR3YTkFdUjAiEJcMYpLLoHEXjOyR1WjeQxFCdIT98MtPusDW+u4QTdvLqbg3bG3QkNvjEJCsB6J7hoJlC8BtXaRAQVLothhZhC/PDCUfIWIalOIKYO5EYopKniAbhTBT4ta5bU2eS/m9fSEnyMCQewvN0WOPHmAnyLZt0BNHQkIrYAl2DLPrnI9E899zXABCP2YYIg3z90Tdel3fsYYhaJtnjEsQECo1itI3BaK6pGkRCeylYr3bcmLWT/OBnABoeQkpl99Wg5xuNfAqEj97gPSeuQAwE69jbqj2IwXCOSThot6BViv8NA0ihyiUmQnP9ENYurh70tF+KhesWjd3Fn0LmycD7rf0dfa+rSgPoEnAasLNtlqIeYjM0k7Fhics4I8WKYwgXTU2ISmSgi7VxuiSyuxawmA12UmWimG7QHv3BfpcNZXIPDXW0g/pgWbeE9Wk4z1zFxbsuzWIWC9tKXRsg9eY9I0Twe56XUy5KF+Ooqwz+ZpUneW346ofXoZJEz3fbBTgY1pigqisaeZT6n2yMV/KJb6HqgernmP2WssPqm0OYaZCBu3O0jqA0rv40zu48P8vtge2DMEyBO7oKVGP1/Rdykl/dTZNuIOTqPKsIXCUqJrRpiF7bJnUPl98xU65sfI0/fbZX4KYC1o4k7PpiG7Q95M8eI+lKTLBcsV1dd+KFNoe2EretAJisd8HpexR1JcUmmWNoRmfmXAVEz0Uhxu+Cw6hBB6xIOW3nE7vrRcQ3/V/KyfUFIp5PlSADqxXsA0+JSkuEN2JY0O/0JJekOsPgYsMNaGl38X67wIPuOeNNATbIVklfd4S+31FFwVTt6y0QpHgx/Sdm9hqOTWmKxm3+3sdnnJHQ3lsrJLuy7rYOkOmjMcrHWP/qyjYzhMKuDVC5QEOFV4XDFWDOFdBof0ccH5DbdWgor4oYNv+6Sn5xzaLmcjSDmlxzZIsAQacOuG5SkabpPe0cnrzmLcqdQhKxGqERDLvFWSkVjQLZx6SHQk87EgcYH7srP47pWhWMsq4vntCfMv+hHpbh9/O0bmypCSJodkHiWlsUYnrCXbhtjWPypax+QpKRjcxwRy9eICbitSrpU82twbU/pJYms84Ho37jlh/oLOQCPzB4hWouEq32k2FC0vnACs1F6QFntpINrxlueGEnFpSAva8gsiqZvbWqXO+9S16+UKB4lZ1qlBXZeue+4sm/PM+HwYy27CKmu/Ju85BvIUmTrl8qrT7TCzs7TxQ5UdVwZRhq7E1Z/6FMYh1Y2sGBrzxnrOq/Vayw/LigH/ARwc2V0EQgACK8vAAAAAAf8BHBzZXQSSSAAAAAAL68IAOfA50MdepGFbjUOkF5BpuN9RllcqNE6E+vIA+DZrtXr3UkFaMr99CYyxxUGqzBXO2gnZDGPKRw4Q97c0L8fibUH/ARwc2V0EyAjD09dS3xvqEWAbuT2dxNFnhtp6OYPzuLklAx6DV3hsgAiAgNvsORonm5FJsfBCON04YANKei3yzxAylEyT8ORBYkwxBAxLZIRAAAAgAEAAIAFAACAAQMIB6LhEQAAAAABBBYAFPHPzl+mbyI86ljR+6pBXIkR2JnBB/wEcHNldAIgIw9PXUt8b6hFgG7k9ncTRZ4baejmD87i5JQMeg1d4bIH/ARwc2V0BiECAUmEqZOv+C6z8k8XqU2zXNfnjxtbFoKKu4+VolxCQQEH/ARwc2V0CAQAAAAAACICAnvNOURGoFNjvX9NlfvLaBCBxnZbBbQeo5ysCuq5L57WEDEtkhEAAACAAAAAgAQAAIABAwgAZc0dAAAAAAEEFgAULJbQvJ9rznNZI8yLOi4a+EOIr8QH/ARwc2V0AiAjD09dS3xvqEWAbuT2dxNFnhtp6OYPzuLklAx6DV3hsgf8BHBzZXQGIQPB9cgG5Rv2FO/tj4diI+E6M1gg++mfzqOK3Wqhvtijhgf8BHBzZXQIBAAAAAAAAQMI+QAAAAAAAAABBAAH/ARwc2V0AiAjD09dS3xvqEWAbuT2dxNFnhtp6OYPzuLklAx6DV3hsgf8BHBzZXQIBAAAAAAA" # Check warnings for PSETs stats = [output.get("status") for output in self.nodes[0].decodepsbt(UNBLINDED)["outputs"]] @@ -891,6 +900,16 @@ def pset_confidential_proofs(self): {"blind": False, "status": "done" }, ]) + assert "status" not in self.nodes[0].decodepsbt(INPUT_ALL_PROOFS)["inputs"][0] + assert_equal("ERROR: has invalid value proof, the value may be a lie!", self.nodes[0].decodepsbt(INPUT_BAD_VALUE)["inputs"][0]["status"]) + assert_equal("ERROR: has invalid value proof, the value may be a lie!", self.nodes[0].decodepsbt(INPUT_BAD_VALUE_PROOF)["inputs"][0]["status"]) + assert_equal("ERROR: has invalid asset proof, the asset may be a lie!", self.nodes[0].decodepsbt(INPUT_BAD_ASSET)["inputs"][0]["status"]) + assert_equal("ERROR: has invalid asset proof, the asset may be a lie!", self.nodes[0].decodepsbt(INPUT_BAD_ASSET_PROOF)["inputs"][0]["status"]) + assert_raises_rpc_error(-22, "TX decode failed Input explicit value and value proof must be provided together", self.nodes[0].decodepsbt, INPUT_MISSING_VALUE) + assert_raises_rpc_error(-22, "TX decode failed Input explicit value and value proof must be provided together", self.nodes[0].decodepsbt, INPUT_MISSING_VALUE_PROOF) + assert_raises_rpc_error(-22, "TX decode failed Input explicit asset and asset proof must be provided together", self.nodes[0].decodepsbt, INPUT_MISSING_ASSET) + assert_raises_rpc_error(-22, "TX decode failed Input explicit asset and asset proof must be provided together", self.nodes[0].decodepsbt, INPUT_MISSING_ASSET_PROOF) + # The fully-blinded (with proofs) PSET will combine with the blinded one, # and will copy the blinded data assert_equal (self.nodes[0].combinepsbt([UNBLINDED, BLINDED]), BLINDED)