@laceio/sdk 0.1.1 → 0.1.2-canary.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{TransactionBuilder-DrB3NVTi.cjs → TransactionBuilder-X1H9Gze6.cjs} +64 -14
- package/dist/{TransactionBuilder-V6aLx4SV.js → TransactionBuilder-bp2aMDhg.js} +23 -15
- package/dist/{_polyfill-buffer-patch-BnPVerlG.cjs → _polyfill-buffer-patch-CM8X7JiY.cjs} +21 -2
- package/dist/_polyfill-buffer-patch-yNxN4d5E.js +1467 -0
- package/dist/_web-crypto-random-bytes-Bo-GTcRS.js +197 -0
- package/dist/acc-module-4iIUv6My.cjs +27654 -0
- package/dist/acc-module-Cmj8EsIb.js +27624 -0
- package/dist/account-BOQruszJ.js +6 -0
- package/dist/account-BUOj4pYJ.cjs +11 -0
- package/dist/account-call-7wnopBq0.cjs +5 -0
- package/dist/account-call-B9d_2Xwi.js +4 -0
- package/dist/account-call-Bd4Rpbvt.cjs +323 -0
- package/dist/account-call-C3CkDqEC.js +276 -0
- package/dist/account-guards-BtjTGxDZ.cjs +42 -0
- package/dist/account-guards-D9Lu5T3W.js +36 -0
- package/dist/account-tokens-DvkOFVON.js +16 -0
- package/dist/account-tokens-nwcvwLu4.cjs +21 -0
- package/dist/{activity-type.stable-BJEfeLxL.cjs → activity-type-Ch6ljxBy.cjs} +2 -1
- package/dist/{activity-type.stable-C76_hWd7.js → activity-type-GsJGWs-3.js} +2 -1
- package/dist/address-B9ntKL8K.js +13761 -0
- package/dist/address-BXp-mY8H.cjs +11270 -0
- package/dist/{address-book-address-validator-DIUolI-s.js → address-book-address-validator-0J9XAADH.js} +2 -2
- package/dist/address-book-address-validator-DK0dnsRS.cjs +41 -0
- package/dist/address-book-address-validator-Di_ywo8M.js +39 -0
- package/dist/{address-book-address-validator-DNwQGlOB.cjs → address-book-address-validator-Dte_YQ2L.cjs} +2 -2
- package/dist/artefact-loader-BWWYAD7E.cjs +183 -0
- package/dist/artefact-loader-Dik4HIfv.js +160 -0
- package/dist/auto-dismiss-failure-on-success-C-qoJuid.cjs +37 -0
- package/dist/auto-dismiss-failure-on-success-s8MGDEIu.js +31 -0
- package/dist/bip32-D6wd_QMn.cjs +3851 -0
- package/dist/bitcoin-data-provider-BYPSmuZS.js +21 -0
- package/dist/bitcoin-data-provider-w1oEDSU3.cjs +26 -0
- package/dist/bitcoin.cjs +45 -0
- package/dist/bitcoin.d.ts +29906 -1
- package/dist/bitcoin.js +20 -0
- package/dist/{blockfrost-tx-submit-provider-DPTrapz-.js → blockfrost-tx-submit-provider-CBWQ0wK9.js} +5 -157
- package/dist/{blockfrost-tx-submit-provider-BAIzV5o3.cjs → blockfrost-tx-submit-provider-CLNQ5ycR.cjs} +3 -167
- package/dist/bn-d3nSOIf7.cjs +2553 -0
- package/dist/browser-B1eMbDwh.js +7468 -0
- package/dist/bytes.vo-BB7_4JK6.js +23 -0
- package/dist/bytes.vo-BNRquqaO.cjs +34 -0
- package/dist/cardano-DfPwhwm-.js +3 -0
- package/dist/{cardano-network-id.vo-DSxrFk9S.cjs → cardano-network-id.vo-BEDPn6Li.cjs} +1 -1
- package/dist/{cardano-network-id.vo-CK1tNQDg.js → cardano-network-id.vo-Cfpvbod9.js} +1 -1
- package/dist/cardano.cjs +22 -18
- package/dist/cardano.d.ts +16962 -1716
- package/dist/cardano.js +16 -11
- package/dist/client-DXBLHk7K.cjs +808 -0
- package/dist/codecs-Cswkg7Tm.cjs +4051 -0
- package/dist/codecs-Dc1Krpbt.js +3903 -0
- package/dist/{const-C84qHkjp.js → const-BJfIK_G-.js} +4 -4
- package/dist/const-BhYOdznB.cjs +42 -0
- package/dist/const-BsnjG2_Q.cjs +32071 -0
- package/dist/const-CUnCl5U0.js +13 -0
- package/dist/{const-DXk2tFyv.js → const-CjmfjBP3.js} +1 -1
- package/dist/{const-BDEg2Trq.cjs → const-D-eZIS4n.cjs} +4 -4
- package/dist/const-D0CbQlo4.js +154 -0
- package/dist/{const-BY8B3_0_.cjs → const-iwzZEE_w.cjs} +1 -1
- package/dist/contract-1R86jhSw.js +171 -0
- package/dist/contract-MKLzYVkW.cjs +189 -0
- package/dist/create-add-accounts-Brqk84vF.js +102 -0
- package/dist/create-add-accounts-DzXIh7Ot.cjs +114 -0
- package/dist/{delegation-tx-builder-CRpLP6jH.cjs → delegation-tx-builder-Dof_0N_d.cjs} +6 -6
- package/dist/{delegation-tx-builder-CGVqlaFE.js → delegation-tx-builder-Dy3-2Auz.js} +5 -5
- package/dist/{deregistration-tx-builder-DZGwB4cz.cjs → deregistration-tx-builder-CcLwyFpj.cjs} +6 -6
- package/dist/{deregistration-tx-builder-B-CrUyX6.js → deregistration-tx-builder-QkWW_gWl.js} +5 -5
- package/dist/device-commitment-hex.vo-5wFtQvDS.js +26 -0
- package/dist/device-commitment-hex.vo-CT3RmAug.cjs +31 -0
- package/dist/device-readers-CUHYoYOH.js +145 -0
- package/dist/device-readers-CdxS2btd.cjs +168 -0
- package/dist/device-readers-D_JZeNL2.cjs +8 -0
- package/dist/device-readers-DwSNCGPP.js +4 -0
- package/dist/dist-BMi5ZjEq.cjs +43175 -0
- package/dist/dist-BtIq4XFn.cjs +535 -0
- package/dist/dist-C3SHC_Ho.cjs +1394 -0
- package/dist/dist-CykEjYEX.cjs +3814 -0
- package/dist/dist-Dcsxh3be.cjs +3452 -0
- package/dist/dist-DqJfSlTd.cjs +4413 -0
- package/dist/dist-nTZ70qj7.cjs +1306 -0
- package/dist/{earn-rewards-tx-builder-D5sUT5v8.cjs → earn-rewards-tx-builder-BP5JMIKS.cjs} +6 -6
- package/dist/{earn-rewards-tx-builder-BDbTDZmD.js → earn-rewards-tx-builder-Cku4BmNU.js} +5 -5
- package/dist/enc-key-circuits-B7BjgUL9.js +13 -0
- package/dist/enc-key-circuits-BLrZrBVI.cjs +24 -0
- package/dist/english-Byb9M0E_.cjs +2057 -0
- package/dist/envelopes-BGoO_v8m.js +1621 -0
- package/dist/envelopes-CH25R-DN.cjs +1722 -0
- package/dist/errors-BIftM8ZN.cjs +688 -0
- package/dist/errors-DSq5wUwt.js +466 -0
- package/dist/esm-HBSUQw3w.js +384 -0
- package/dist/esm-LZuaZjMf.cjs +389 -0
- package/dist/experimental.cjs +7349 -0
- package/dist/experimental.d.ts +86279 -0
- package/dist/experimental.js +7184 -0
- package/dist/gated-call-CDCVZIK-.cjs +5 -0
- package/dist/gated-call-D-tT7P_t.js +722 -0
- package/dist/gated-call-D_VT2quk.js +4 -0
- package/dist/gated-call-DgJm1Mi_.cjs +787 -0
- package/dist/grant-circuits-DswmW3nI.cjs +71 -0
- package/dist/grant-circuits-Jxb5y1HW.js +42 -0
- package/dist/grant-rules-By07_eDi.js +6824 -0
- package/dist/grant-rules-BzVTWXS7.cjs +7099 -0
- package/dist/grant-spend-B3Md9L0n.js +215 -0
- package/dist/grant-spend-oWmzRsjH.cjs +217 -0
- package/dist/grant-status-B2y49iIu.js +2688 -0
- package/dist/grant-status-DOr3t_u8.cjs +2820 -0
- package/dist/grants-2BZ-qEVQ.js +5 -0
- package/dist/grants-BPoLSiMt.cjs +18 -0
- package/dist/grants-BoI5uwSF.cjs +272 -0
- package/dist/grants-CtofFu-e.js +213 -0
- package/dist/{group-cardano-addresses-by-account-B533oVXR.cjs → group-cardano-addresses-by-account-Bp0g4wEY.cjs} +3 -39
- package/dist/{group-cardano-addresses-by-account-RHKoEskR.js → group-cardano-addresses-by-account-SR8MMrZf.js} +5 -35
- package/dist/{guarded-transaction-signer-Bxl6_XNd.cjs → guarded-transaction-signer-MFpPg98D.cjs} +17 -18
- package/dist/{guarded-transaction-signer-CpKLj8Kp.js → guarded-transaction-signer-P6Rp1faj.js} +8 -15
- package/dist/hex-D9ITYbwt.cjs +263 -0
- package/dist/hex-mkXcV3pN.js +191 -0
- package/dist/http-client-B3N-TMxu.cjs +167 -0
- package/dist/http-client-TRlhDZGh.js +155 -0
- package/dist/identity-BMLuufva.cjs +263 -0
- package/dist/identity-DII6f-h7.js +233 -0
- package/dist/in-memory-wallet-integration-B2xzxORj.cjs +20741 -0
- package/dist/in-memory-wallet-integration-CBRiPjLO.js +130 -0
- package/dist/in-memory-wallet-integration-CULUB5Tf.cjs +240 -0
- package/dist/{in-memory-wallet-integration-D-qn65Kx.js → in-memory-wallet-integration-ChIOirMW.js} +5 -2
- package/dist/{in-memory-wallet-integration-Croiuopx.js → in-memory-wallet-integration-CljprQQV.js} +7 -104
- package/dist/{in-memory-wallet-integration-DVh9sRXa.cjs → in-memory-wallet-integration-Cm6P8sk6.cjs} +3 -2
- package/dist/in-memory-wallet-integration-TM9bBphA.js +20738 -0
- package/dist/{in-memory-wallet-integration-CnLYeX4-.cjs → in-memory-wallet-integration-t9I00R_V.cjs} +17 -108
- package/dist/index.cjs +84 -47
- package/dist/index.d.ts +37505 -10036
- package/dist/index.js +52 -24
- package/dist/{init-CLHuAMB-.js → init-0zzs9aqU.js} +4 -4
- package/dist/{init-U8c9yHYx.cjs → init-5KcGcBb5.cjs} +1 -1
- package/dist/{init-CigestoM.js → init-B3-1ghyx.js} +2 -2
- package/dist/init-B8U3ABhS.cjs +107 -0
- package/dist/init-BJn-8_hf.js +141 -0
- package/dist/init-BPU3j8sT.cjs +6 -0
- package/dist/init-BRzH6xu-2.cjs +2797 -0
- package/dist/init-BmzfDaKL.js +1142 -0
- package/dist/{init-C-jErzp5.cjs → init-BopV9ed4.cjs} +2 -2
- package/dist/init-BpHTq2R5.js +105 -0
- package/dist/init-BpSITBfF.js +39 -0
- package/dist/{init-DX4WyB0R.cjs → init-BrdVzxei.cjs} +3 -3
- package/dist/{init-LfyMo-sS.cjs → init-BwkU0ruo.cjs} +2 -2
- package/dist/{init-CB__aLD7.cjs → init-C-G32J12.cjs} +2 -2
- package/dist/init-C00gw1zi.js +422 -0
- package/dist/{init-TkPq_Ny_.js → init-C2RgrfZe.js} +1 -1
- package/dist/init-C5mYyFTv.js +3584 -0
- package/dist/{init-DcYY6zMD.js → init-C8URA2OX.js} +1 -1
- package/dist/init-CDkRynJa.js +2796 -0
- package/dist/{init-Cg9XdAru.js → init-CNM5m7M2.js} +4 -4
- package/dist/init-CR7BfztQ.cjs +18 -0
- package/dist/{init-CSHwHnfg.cjs → init-CSDpdu0Q.cjs} +2 -2
- package/dist/{init-aJHl-7AO.js → init-CX0AMQUn.js} +2 -2
- package/dist/{init-FMGDET-9.js → init-CfTbSEKy.js} +259 -60
- package/dist/{init-CR6tpw1B.js → init-Cigr_tKx.js} +47 -43
- package/dist/init-Clu8pxwQ.cjs +1181 -0
- package/dist/{init-CFYsq82V.js → init-CyAY4Lzl.js} +1 -1
- package/dist/{init-BKhH6mVR.cjs → init-D6BxBs7e.cjs} +1 -1
- package/dist/init-D8OeObDF.cjs +1141 -0
- package/dist/init-D9g1HXYf.cjs +40 -0
- package/dist/{init-CNLGJJRx.js → init-DA7zmptx.js} +1 -1
- package/dist/{init-DkIc5nqF.cjs → init-DFMiP2ZH.cjs} +1 -1
- package/dist/{init-zSzCjoor.js → init-DFjT8YvT.js} +4 -4
- package/dist/init-DGjXwWs2.cjs +143 -0
- package/dist/init-DHrCbpkW.cjs +121 -0
- package/dist/init-DRzJR02G.cjs +3585 -0
- package/dist/{init-B64zCLxG.cjs → init-DUF4ar8P.cjs} +4 -4
- package/dist/init-DlqJuHhl.js +119 -0
- package/dist/{init-y2Ra0vZP.js → init-Dnsv155v.js} +3 -3
- package/dist/init-DuYENxci.js +17 -0
- package/dist/{init-D6DBUsD3.cjs → init-Dv3zKj0r.cjs} +4 -4
- package/dist/{init-BtzMZ7Pk.cjs → init-Dy-05ktr.cjs} +1 -1
- package/dist/{init-BsCBAGWf.cjs → init-EP0CUWNK.cjs} +2 -2
- package/dist/{init-BJVU54pI.cjs → init-EhzD7a8i.cjs} +1 -1
- package/dist/{init-w9GEs73W.js → init-Fw89ZmrR.js} +2 -2
- package/dist/init-GsT2AEa4.cjs +424 -0
- package/dist/{init-Rxohwpmu.js → init-NCjgwCZy.js} +2 -2
- package/dist/{init-DxUHsN53.cjs → init-NdhG_VrF.cjs} +6 -6
- package/dist/{init-DDdhguVC.js → init-SZ01tARX2.js} +2 -2
- package/dist/{init-BAJJzBza.js → init-Y3mkB4XS.js} +2 -2
- package/dist/init-c4l6r-o-.js +5 -0
- package/dist/{init-Dku4b2lG.js → init-kEfUTuG2.js} +1 -1
- package/dist/{init-C7IeJwQR.cjs → init-lzHt4Cli.cjs} +256 -59
- package/dist/init-qSEd_Spq.js +1182 -0
- package/dist/{init-anYu6XB7.cjs → init-rmt7-fQE.cjs} +2 -2
- package/dist/{init-C4Bkib9u.cjs → init-zU-_9Gsp.cjs} +67 -65
- package/dist/{is-retriable-error-BU0e3hVI.js → is-retriable-error-BUiVJDwH.js} +1 -1
- package/dist/{is-retriable-error-CeeuHqDa.cjs → is-retriable-error-Dpt860if.cjs} +1 -1
- package/dist/jubjub-authoriser-D7zDXu3V.js +86 -0
- package/dist/jubjub-authoriser-Dgu6o3Sv.cjs +87 -0
- package/dist/key-source-5oUBFiC7.cjs +583 -0
- package/dist/key-source-B08HukZg.js +2550 -0
- package/dist/keyDerivation-D3k9XyHg.js +4077 -0
- package/dist/keyDerivation-u0nBA93T.cjs +274 -0
- package/dist/{lace-context-CZcNHr4M.js → lace-context-BZciB9c7.js} +4 -4
- package/dist/{lace-context-fJTDghdp.cjs → lace-context-DgR6vLli.cjs} +4 -4
- package/dist/lib--iqvW4O_.js +2354 -0
- package/dist/lib-Yk6Upl5D.cjs +2359 -0
- package/dist/{libsodium-wrappers-UH0LaOUE.js → libsodium-wrappers-BhbOA8dQ.js} +3 -1647
- package/dist/midnight-account-id.vo-0x9X-r3l.cjs +10 -0
- package/dist/midnight-account-id.vo-DjCAGcqc.js +5 -0
- package/dist/midnight-engine-DpemplKO.js +5 -0
- package/dist/midnight-engine-xU1wotne.cjs +6 -0
- package/dist/midnight-wallet-DIsAlSn6.js +18 -0
- package/dist/midnight-wallet-XTZc2li7.cjs +24 -0
- package/dist/midnight.cjs +1408 -0
- package/dist/midnight.d.ts +28934 -0
- package/dist/midnight.js +1352 -0
- package/dist/modules-cardano-D9Gs2j60.cjs +1108 -0
- package/dist/modules-cardano-VIM8fKu-.js +995 -0
- package/dist/node-relay-DWe1U0w2.cjs +49 -0
- package/dist/node-relay-h4i5IlAQ.js +48 -0
- package/dist/outputs-Bd2yZVjx.js +720 -0
- package/dist/outputs-CJoQBIA2.cjs +990 -0
- package/dist/pbkdf2-CIW-oWrm.cjs +1337 -0
- package/dist/pending-operation-B0_P78Jo.cjs +26 -0
- package/dist/pending-operation-BIS6mpjB.js +21 -0
- package/dist/providers-FjhM47BH.cjs +388 -0
- package/dist/providers-WtiSuxFu.js +365 -0
- package/dist/redacted-BmE2aXqr.js +81 -0
- package/dist/redacted-CRZJLS3w.cjs +86 -0
- package/dist/{retry-config-DC5IMaH7.cjs → retry-config-BaCfVC1H.cjs} +1 -1
- package/dist/{retry-config-BcUmMS--.js → retry-config-Dmgt28wM.js} +1 -1
- package/dist/safe-buffer-B_vMqJWU.js +43 -0
- package/dist/safe-buffer-DYOwEfHB.cjs +48 -0
- package/dist/sdk-Cb-gZnS9.js +1241 -0
- package/dist/sdk-DffwmX8b.cjs +1439 -0
- package/dist/sdk-init-Bln9rFtn.js +4138 -0
- package/dist/sdk-init-CYViTJY_.cjs +3841 -0
- package/dist/{seam-cardano-CATqBEyK.js → seam-cardano-B_etH4F4.js} +1 -1
- package/dist/{bytes.vo-TgiwogWF.js → secret-box-DUR0ACYz.js} +3 -25
- package/dist/{bytes.vo-Ck5u40RA.cjs → secret-box-DrjLZuS1.cjs} +1 -35
- package/dist/send-proof-progress-C-ljq1x5.js +30 -0
- package/dist/send-proof-progress-vmsaSfbz.cjs +47 -0
- package/dist/side-effects-BnqYz7Nl.js +768 -0
- package/dist/side-effects-CngaeXi0.cjs +804 -0
- package/dist/sign-bitcoin-transaction-with-seed-D4z62-jV.js +147 -0
- package/dist/sign-bitcoin-transaction-with-seed-DsLYXnCY.cjs +158 -0
- package/dist/signer-3fk8lZtE.cjs +7 -0
- package/dist/signer-CsL28DrK.cjs +121 -0
- package/dist/signer-DGluibtn.js +92 -0
- package/dist/signer-RqB5pu3K.js +2 -0
- package/dist/signer-factory-BA7WFJVZ.js +282 -0
- package/dist/signer-factory-Cwd6o-lG.cjs +281 -0
- package/dist/{signer-factory-9URFliA5.js → signer-factory-DObB55D4.js} +6 -3
- package/dist/signer-factory-DhZiE03y.cjs +149 -0
- package/dist/{signer-factory-BWGUmnvm.cjs → signer-factory-Ds6G2AZk.cjs} +4 -3
- package/dist/signer-factory-hzSRaIw2.js +148 -0
- package/dist/{slice-CuHUaPZx.cjs → slice-7G2xxYKJ.cjs} +3 -3
- package/dist/{slice-DZmQJNV8.cjs → slice-B4CdYoPu.cjs} +2 -2
- package/dist/slice-BPNuHKfw.js +9091 -0
- package/dist/{slice-DGcNrbPR.cjs → slice-Bg6HEr3K.cjs} +4 -4
- package/dist/{slice-DtaO72qY.cjs → slice-Bs2aMERu.cjs} +3 -3
- package/dist/{slice-HeHCv3bl.cjs → slice-C34iOOUH.cjs} +7 -7
- package/dist/{slice-Do2R2CYW.cjs → slice-C9TT5KhY.cjs} +6 -6
- package/dist/{slice-eIwcwKHI.js → slice-CK07EBCo.js} +4 -4
- package/dist/{slice-CnyWevM9.js → slice-CU80pbiu.js} +3 -3
- package/dist/{slice-CobanYgn.js → slice-CwyYrh1H.js} +2 -2
- package/dist/slice-Czfp6t84.cjs +436 -0
- package/dist/{slice-d0p6-xj5.js → slice-D-9aPKG-.js} +6 -6
- package/dist/{slice-maaskdUn.js → slice-DBpJ2QGf.js} +6 -6
- package/dist/{slice-mxLQ_FeY.cjs → slice-DTZTiJle.cjs} +352 -39
- package/dist/{slice-zJ9XVYjZ.js → slice-Da426sf9.js} +1 -1
- package/dist/{slice-D11m2EKl.cjs → slice-DayJvMRD.cjs} +1 -1
- package/dist/slice-DnBWfA-k.cjs +9109 -0
- package/dist/{slice-oqm_r1cS.cjs → slice-DnG-yvpI.cjs} +2 -2
- package/dist/{slice-BNu73oBa.js → slice-DyNs7oWp.js} +2 -2
- package/dist/{slice-CB4SnzMm.js → slice-GwiiJRoq.js} +3 -3
- package/dist/slice-oWnc7YVD.js +412 -0
- package/dist/{slice-B2PhoWAg.js → slice-qt0uBExh.js} +325 -37
- package/dist/slice-t8Gzj55G2.cjs +106 -0
- package/dist/slice-t8Q1cHm-.js +88 -0
- package/dist/src-BDzYIksE.cjs +20637 -0
- package/dist/src-BFoefPv_.js +20755 -0
- package/dist/store-B1Lq3cEf.cjs +66 -0
- package/dist/store-DuBG8qh5.js +37 -0
- package/dist/submit-Bs77dPn_.cjs +413 -0
- package/dist/submit-DOv8Z0Vf.js +336 -0
- package/dist/submit-bitcoin-tx-D6oYgH5S.js +983 -0
- package/dist/submit-bitcoin-tx-goFuRL7K.cjs +1049 -0
- package/dist/{sync-operation-utils-BYXLO80m.js → sync-operation-utils-31iFLExW.js} +2 -38
- package/dist/{sync-operation-utils-SdPbwFoD.cjs → sync-operation-utils-COIZ66-I.cjs} +1 -67
- package/dist/token-id-mapper-Bnds3xKH.cjs +18 -0
- package/dist/{token-id-mapper-DsPAL6Nh.cjs → token-id-mapper-CVyQJUKY.cjs} +2 -2
- package/dist/token-id-mapper-CnKHQ8DV.js +16 -0
- package/dist/{token-id-mapper-B2ivlLv3.js → token-id-mapper-D29Ggv8h.js} +2 -2
- package/dist/tokens-Cevp7rdU.cjs +62 -0
- package/dist/tokens-Diw4MLRM.js +44 -0
- package/dist/types-B8uiJn-X.js +12 -0
- package/dist/types-BHC12eSa.js +33 -0
- package/dist/types-CJT6XF2c.js +10 -0
- package/dist/types-CLRUYpfe.cjs +23 -0
- package/dist/types-Cc3mC8u0.cjs +50 -0
- package/dist/types-DWbVZpnF.cjs +15 -0
- package/dist/unwrap-provider-result-BZSiwabU.js +32 -0
- package/dist/unwrap-provider-result-ZqfBsTkk.cjs +39 -0
- package/dist/{util-CGzqQ8IV.cjs → util-Bu4W5lF4.cjs} +1 -1
- package/dist/{util-BaLzwa32.js → util-Cp5cZkfK.js} +1 -1
- package/dist/{utils-o8aMjfln.js → utils-BfBEUvWA.js} +2 -2
- package/dist/utils-DFwzEvbv.js +65 -0
- package/dist/{utils-5JvjbqH3.cjs → utils-DsElZgCI.cjs} +7 -1
- package/dist/utils-IXxR-Djh.cjs +112 -0
- package/dist/v8Signatures-CO_Uloy7.cjs +71 -0
- package/dist/{vote-delegation-tx-builder-CmKv6GoG.js → vote-delegation-tx-builder-BsBSDmcX.js} +5 -5
- package/dist/{vote-delegation-tx-builder-BpEMSti4.cjs → vote-delegation-tx-builder-DSs8nybk.cjs} +6 -6
- package/dist/watch-CUEvcP-V.js +21997 -0
- package/dist/watch-DMF2s-II.cjs +52281 -0
- package/package.json +96 -4
- package/dist/account-guards.stable-B1DSSh9D.cjs +0 -10
- package/dist/account-guards.stable-JRQ5qx2V.js +0 -5
- package/dist/codecs-B7X9pAsK.cjs +0 -1945
- package/dist/codecs-CC1Xjntz.js +0 -1882
- package/dist/init-Bv53hpLM.js +0 -19
- package/dist/init-CRbjI7p1.js +0 -3494
- package/dist/init-DAna1KCg.cjs +0 -3495
- package/dist/init-DGe47B22.cjs +0 -364
- package/dist/init-DMtyvYfC.cjs +0 -21
- package/dist/init-TkPDD750.js +0 -363
- package/dist/modules-cardano-BDvuL4Xx.js +0 -5248
- package/dist/modules-cardano-D2G3De2P.cjs +0 -5432
- package/dist/slice-CGVHXHDt.cjs +0 -125
- package/dist/slice-DhvF7L6X.js +0 -107
- /package/dist/{account-id.vo-LvCBVn5r.cjs → account-id.vo-DwqFjK5u.cjs} +0 -0
- /package/dist/{account-id.vo-MYSI7YFm.js → account-id.vo-OPz2v-JZ.js} +0 -0
- /package/dist/{actions-DdGbj7c7.cjs → actions-B2BJ4RTy.cjs} +0 -0
- /package/dist/{actions-9QSQR-GB.js → actions-iLXdgL5Y.js} +0 -0
- /package/dist/{apply-vkey-witnesses-ClZbpk5w.js → apply-vkey-witnesses-BKx3lcs0.js} +0 -0
- /package/dist/{apply-vkey-witnesses-CLzVSWxl.cjs → apply-vkey-witnesses-ZnFS0jnJ.cjs} +0 -0
- /package/dist/{asyncoption-Cw07zPH7.js → asyncoption-CruEYOBI.js} +0 -0
- /package/dist/{asyncoption-DYoGuQfP.cjs → asyncoption-i0VbqVTq.cjs} +0 -0
- /package/dist/{bignum.vo-B0rK_PQ1.js → bignum.vo-CEXOIew0.js} +0 -0
- /package/dist/{bignum.vo-DsG3kNiZ.cjs → bignum.vo-hx2kuqlA.cjs} +0 -0
- /package/dist/{bip32ed25519-1ApqeAZk.cjs → bip32ed25519-B7Yat217.cjs} +0 -0
- /package/dist/{bip32ed25519-DetAdGwD.js → bip32ed25519-FQ8qvdcq.js} +0 -0
- /package/dist/{blake2b-DOEVc57D.js → blake2b-BiQTw3GC.js} +0 -0
- /package/dist/{blake2b-B9tftbvG.cjs → blake2b-DEeVUdKR.cjs} +0 -0
- /package/dist/{blockchain-network-id.vo-BXpZhvvQ.cjs → blockchain-network-id.vo-BAKEwGjG.cjs} +0 -0
- /package/dist/{blockchain-network-id.vo-DNRkuT5B.js → blockchain-network-id.vo-CiVykuqG.js} +0 -0
- /package/dist/{blockingWithLatestFrom-C5wp_uA-.js → blockingWithLatestFrom-Cd8c8EPG.js} +0 -0
- /package/dist/{blockingWithLatestFrom-DY8OPg0w.cjs → blockingWithLatestFrom-D8kBPBMX.cjs} +0 -0
- /package/dist/{cardano-network-id-to-network-type-CrZfUcyP.js → cardano-network-id-to-network-type-BWwzeEtM.js} +0 -0
- /package/dist/{cardano-network-id-to-network-type-BDTF-HmK.cjs → cardano-network-id-to-network-type-C0ufJOyE.cjs} +0 -0
- /package/dist/{cardano-tx-id.vo-BPhV-AmZ.cjs → cardano-tx-id.vo-TLjJZHCI.cjs} +0 -0
- /package/dist/{cardano-tx-id.vo-DF9NzZXk.js → cardano-tx-id.vo-eVnKuzlm.js} +0 -0
- /package/dist/{composite-signer-factory-_46QsNBz.js → composite-signer-factory-CR8YHA1y.js} +0 -0
- /package/dist/{composite-signer-factory-BpF1mIYA.cjs → composite-signer-factory-m5cVs9h_.cjs} +0 -0
- /package/dist/{error-CNIquqT5.cjs → error-Cb3EnD0u.cjs} +0 -0
- /package/dist/{error-BCp9NkPi.js → error-DIZOY2Lw.js} +0 -0
- /package/dist/{esm-browser-C93Q-EOI.js → esm-browser-MG97cre9.js} +0 -0
- /package/dist/{esm-browser-DTc9IK3D.cjs → esm-browser-bweqfBlL.cjs} +0 -0
- /package/dist/{feature-flag-key.vo-ofrB6ZVQ.js → feature-flag-key.vo-DN_-4-sG.js} +0 -0
- /package/dist/{feature-flag-key.vo-BPz-ZAp6.cjs → feature-flag-key.vo-RlfHL3hq.cjs} +0 -0
- /package/dist/{first-state-of-status-OROkXcRv.cjs → first-state-of-status-CbT7hPa4.cjs} +0 -0
- /package/dist/{first-state-of-status-DQnMT3ya.js → first-state-of-status-unPynOuM.js} +0 -0
- /package/dist/{init-Es3wHW7D.js → init-829HRYcz.js} +0 -0
- /package/dist/{init-CKipPE_c.js → init-A-VyGSNW2.js} +0 -0
- /package/dist/{init-DFQQ9dTW.cjs → init-Atisw4x2.cjs} +0 -0
- /package/dist/{init-C5CEZ1m0.cjs → init-BFcvPHL-.cjs} +0 -0
- /package/dist/{init-IAk_CkGa.cjs → init-BgNobbNq.cjs} +0 -0
- /package/dist/{init-cqN3uX2j.js → init-atCFur0v.js} +0 -0
- /package/dist/{is-redux-persist-state-CTn3WZVh.cjs → is-redux-persist-state-BCFnSm36.cjs} +0 -0
- /package/dist/{is-redux-persist-state-Cxcd0_bM.js → is-redux-persist-state-yBfq0h_E.js} +0 -0
- /package/dist/{key-value-store-8cMzeNyG.js → key-value-store--W3SrMaw.js} +0 -0
- /package/dist/{key-value-store-DUAepXQf.cjs → key-value-store-C2Xt5Emp.cjs} +0 -0
- /package/dist/{repo-slice-WxetRhMY.cjs → repo-slice-7X4AYYVm.cjs} +0 -0
- /package/dist/{repo-slice-DwyMhCR1.js → repo-slice-RxFm0zDZ.js} +0 -0
- /package/dist/{reselect-CRDqmQY9.cjs → reselect-Bd94u0K-.cjs} +0 -0
- /package/dist/{reselect-C06X06oX.js → reselect-CGoLzEPv.js} +0 -0
- /package/dist/{serializable-B8GahgE1.js → serializable-BHdKIgk3.js} +0 -0
- /package/dist/{serializable-CRdnFaLZ.cjs → serializable-BxHkoPdk.cjs} +0 -0
- /package/dist/{slice-D11FHQuQ.cjs → slice-BiRsDKOK.cjs} +0 -0
- /package/dist/{slice-Be7hj4Iy.js → slice-Bk0Sv05J.js} +0 -0
- /package/dist/{slice-FioKeHtA.cjs → slice-Dqw1ecum.cjs} +0 -0
- /package/dist/{slice-B87b52iM.js → slice-obCSLm1x.js} +0 -0
- /package/dist/{src-vq1wS9sZ.js → src-BlxEp6Mm.js} +0 -0
- /package/dist/{src-BTPIvlDI.cjs → src-Cqp0B2M_.cjs} +0 -0
- /package/dist/{time.vo-CQ8pSXz2.cjs → time.vo-D3wWRw9L.cjs} +0 -0
- /package/dist/{time.vo-DkYYGYp6.js → time.vo-tNheinXm.js} +0 -0
- /package/dist/{toEmpty-CgAl3097.js → toEmpty-8Zax1MPd.js} +0 -0
- /package/dist/{toEmpty-DAMmNB5r.cjs → toEmpty-CYAbupM4.cjs} +0 -0
- /package/dist/{token-id.vo-ClsroxHO.js → token-id.vo-Bvwhr3ZE.js} +0 -0
- /package/dist/{token-id.vo-BxG9TG0O.cjs → token-id.vo-DXv5uS9n.cjs} +0 -0
- /package/dist/{util-DxzlYNS5.js → util-C8a4fA9p.js} +0 -0
- /package/dist/{util-CmdAhheh.cjs → util-CzeB3hfa.cjs} +0 -0
- /package/dist/{util-selector-CcK-GAdE.js → util-selector-BSTsxgne.js} +0 -0
- /package/dist/{util-selector-BcAncU4L.cjs → util-selector-BWPH68_l.cjs} +0 -0
- /package/dist/{while-active-BpppWuCs.js → while-active-B0lWy_6l.js} +0 -0
- /package/dist/{while-active-Dhc2LwOm.cjs → while-active-Dsowp0Fi.cjs} +0 -0
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import "./_polyfill-buffer-patch-yNxN4d5E.js";
|
|
2
|
+
import "./codecs-Dc1Krpbt.js";
|
|
3
|
+
import { n as HexBytes, t as ByteArray } from "./bytes.vo-BB7_4JK6.js";
|
|
4
|
+
import { L as sha256, w as GrantSpendRefusedError } from "./errors-DSq5wUwt.js";
|
|
5
|
+
import { W as GrantSlot, a as zero32, i as granteePoint, t as RECIPIENT_KINDS } from "./grant-rules-By07_eDi.js";
|
|
6
|
+
import { a as grantWithdrawalCircuit } from "./grant-circuits-Jxb5y1HW.js";
|
|
7
|
+
import { a as pureCircuits } from "./acc-module-Cmj8EsIb.js";
|
|
8
|
+
import { a as originHash, n as deriveGrantId, t as K256_GRANT_ENVELOPE } from "./grants-CtofFu-e.js";
|
|
9
|
+
//#region ../../packages/module/passport-account/src/acc/grant-spend-challenges.ts
|
|
10
|
+
/** The grantee's secp256k1 point, read from the key its policy carries. */
|
|
11
|
+
const k256Point = (publicKey) => {
|
|
12
|
+
return granteePoint({
|
|
13
|
+
scheme: "secp256k1-ecdsa",
|
|
14
|
+
publicKey
|
|
15
|
+
}).point;
|
|
16
|
+
};
|
|
17
|
+
/** The grantee's jubjub point, read from the key its policy carries. */
|
|
18
|
+
const jubjubPoint = (publicKey) => {
|
|
19
|
+
return granteePoint({
|
|
20
|
+
scheme: "jubjub-schnorr",
|
|
21
|
+
publicKey
|
|
22
|
+
}).point;
|
|
23
|
+
};
|
|
24
|
+
const address = (context) => ({ bytes: context.contractAddress });
|
|
25
|
+
const coinOf = ({ coin }) => ({
|
|
26
|
+
nonce: coin.nonce,
|
|
27
|
+
color: coin.color,
|
|
28
|
+
value: coin.value,
|
|
29
|
+
mt_index: coin.mtIndex
|
|
30
|
+
});
|
|
31
|
+
/**
|
|
32
|
+
* The challenge builders of the grant withdrawals, for both grantee
|
|
33
|
+
* schemes. The preimage layout is the contract's own: each builder calls
|
|
34
|
+
* the pure circuit the withdrawal recomputes its challenge with, over the
|
|
35
|
+
* account address, the grantee key, the grant id and issue time, the
|
|
36
|
+
* withdrawal's arguments in declaration order and the record's nonce,
|
|
37
|
+
* with the announcement and grind nonce first and last on the jubjub arm.
|
|
38
|
+
* A shielded challenge also binds the change entry, the encryption key
|
|
39
|
+
* and the held coin the withdrawal spends.
|
|
40
|
+
*/
|
|
41
|
+
const grantSpendChallenges = {
|
|
42
|
+
"secp256k1-ecdsa": {
|
|
43
|
+
"withdraw-unshielded": (context, withdrawal) => pureCircuits.challenge_withdraw_unshielded_with_grant_k256(address(context), k256Point(context.granteePublicKey), context.grantId, context.issuedAt, withdrawal.color, withdrawal.amount, { bytes: withdrawal.recipient }, context.nonce),
|
|
44
|
+
"withdraw-shielded": (context, withdrawal) => pureCircuits.challenge_withdraw_shielded_with_grant_k256(address(context), k256Point(context.granteePublicKey), context.grantId, context.issuedAt, { bytes: withdrawal.recipient }, withdrawal.color, withdrawal.amount, withdrawal.changeEntry, withdrawal.encPublicKey, coinOf(withdrawal), context.nonce),
|
|
45
|
+
"withdraw-shielded-to-contract": (context, withdrawal) => pureCircuits.challenge_withdraw_shielded_to_contract_with_grant_k256(address(context), k256Point(context.granteePublicKey), context.grantId, context.issuedAt, { bytes: withdrawal.recipient }, withdrawal.color, withdrawal.amount, withdrawal.changeEntry, withdrawal.encPublicKey, coinOf(withdrawal), context.nonce)
|
|
46
|
+
},
|
|
47
|
+
"jubjub-schnorr": {
|
|
48
|
+
"withdraw-unshielded": (context, withdrawal) => {
|
|
49
|
+
const pk = jubjubPoint(context.granteePublicKey);
|
|
50
|
+
return (sigR, grindNonce) => pureCircuits.challenge_withdraw_unshielded_with_grant_jubjub(address(context), sigR, pk, context.grantId, context.issuedAt, withdrawal.color, withdrawal.amount, { bytes: withdrawal.recipient }, context.nonce, grindNonce);
|
|
51
|
+
},
|
|
52
|
+
"withdraw-shielded": (context, withdrawal) => {
|
|
53
|
+
const pk = jubjubPoint(context.granteePublicKey);
|
|
54
|
+
return (sigR, grindNonce) => pureCircuits.challenge_withdraw_shielded_with_grant_jubjub(address(context), sigR, pk, context.grantId, context.issuedAt, { bytes: withdrawal.recipient }, withdrawal.color, withdrawal.amount, withdrawal.changeEntry, withdrawal.encPublicKey, coinOf(withdrawal), context.nonce, grindNonce);
|
|
55
|
+
},
|
|
56
|
+
"withdraw-shielded-to-contract": (context, withdrawal) => {
|
|
57
|
+
const pk = jubjubPoint(context.granteePublicKey);
|
|
58
|
+
return (sigR, grindNonce) => pureCircuits.challenge_withdraw_shielded_to_contract_with_grant_jubjub(address(context), sigR, pk, context.grantId, context.issuedAt, { bytes: withdrawal.recipient }, withdrawal.color, withdrawal.amount, withdrawal.changeEntry, withdrawal.encPublicKey, coinOf(withdrawal), context.nonce, grindNonce);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
//#endregion
|
|
63
|
+
//#region ../../packages/module/passport-account/src/acc/grant-spend.ts
|
|
64
|
+
/** The recipient kind each withdrawal pays, which a pinned grant must name. */
|
|
65
|
+
const PAID_RECIPIENT_KINDS = {
|
|
66
|
+
"withdraw-unshielded": "user-address",
|
|
67
|
+
"withdraw-shielded": "coin-public-key",
|
|
68
|
+
"withdraw-shielded-to-contract": "contract-address"
|
|
69
|
+
};
|
|
70
|
+
const refuse = (reason) => {
|
|
71
|
+
throw new GrantSpendRefusedError(`The grant does not allow this spend: ${reason}.`);
|
|
72
|
+
};
|
|
73
|
+
const bytesOf = (hex) => ByteArray.fromHex(HexBytes(hex));
|
|
74
|
+
/**
|
|
75
|
+
* Checks a spend against the grant's scope as its policy states it, in
|
|
76
|
+
* the contract's order, so a spend the contract would refuse is caught
|
|
77
|
+
* before it is signed and proved. Expiry is checked against this
|
|
78
|
+
* machine's clock, which the contract checks again against the block's.
|
|
79
|
+
*/
|
|
80
|
+
const assertSpendAllowed = (policy, spend) => {
|
|
81
|
+
const { expiresAt } = policy;
|
|
82
|
+
if (expiresAt !== null && Math.floor(Date.now() / 1e3) >= expiresAt) refuse(`it expired at ${expiresAt}`);
|
|
83
|
+
if (!policy.operations.includes(spend.operation)) refuse(`${spend.operation} is not in its scope`);
|
|
84
|
+
if (spend.amount > BigInt(policy.perCallCap)) refuse(`${spend.amount} is above the per-call cap ${policy.perCallCap}`);
|
|
85
|
+
if (spend.spent + spend.amount > BigInt(policy.cap)) refuse(`${spend.amount} after ${spend.spent} spent exceeds the cap ${policy.cap}`);
|
|
86
|
+
const { recipient } = policy;
|
|
87
|
+
if (recipient.kind !== "any") {
|
|
88
|
+
if (recipient.kind !== PAID_RECIPIENT_KINDS[spend.operation]) refuse(`it pins a ${recipient.kind} recipient, which ${spend.operation} does not pay`);
|
|
89
|
+
if (HexBytes.fromByteArray(spend.recipient) !== recipient.value) refuse("the recipient is not the one it pins");
|
|
90
|
+
}
|
|
91
|
+
if (spend.operation !== "withdraw-unshielded") {
|
|
92
|
+
if (HexBytes.fromByteArray(spend.coin.color) !== policy.color) refuse("the coin is not of its colour");
|
|
93
|
+
if (spend.coin.value > BigInt(policy.maxCoinValue)) refuse(`the coin of ${spend.coin.value} is above its coin bound ${policy.maxCoinValue}`);
|
|
94
|
+
if (spend.coin.value < spend.amount) refuse(`the coin of ${spend.coin.value} cannot pay the amount ${spend.amount}`);
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
/** The withdrawal's own arguments, in the circuit's declaration order. */
|
|
98
|
+
const withdrawalArgs = (spend, color) => spend.operation === "withdraw-unshielded" ? [
|
|
99
|
+
color,
|
|
100
|
+
spend.amount,
|
|
101
|
+
{ bytes: spend.recipient }
|
|
102
|
+
] : [
|
|
103
|
+
{ bytes: spend.recipient },
|
|
104
|
+
color,
|
|
105
|
+
spend.amount,
|
|
106
|
+
spend.changeEntry,
|
|
107
|
+
spend.encPublicKey
|
|
108
|
+
];
|
|
109
|
+
const k256Challenge = (context, spend, color) => {
|
|
110
|
+
const builders = grantSpendChallenges["secp256k1-ecdsa"];
|
|
111
|
+
switch (spend.operation) {
|
|
112
|
+
case "withdraw-unshielded": return builders[spend.operation](context, {
|
|
113
|
+
...spend,
|
|
114
|
+
color
|
|
115
|
+
});
|
|
116
|
+
case "withdraw-shielded": return builders[spend.operation](context, {
|
|
117
|
+
...spend,
|
|
118
|
+
color
|
|
119
|
+
});
|
|
120
|
+
case "withdraw-shielded-to-contract": return builders[spend.operation](context, {
|
|
121
|
+
...spend,
|
|
122
|
+
color
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
const jubjubChallenge = (context, spend, color) => {
|
|
127
|
+
const builders = grantSpendChallenges["jubjub-schnorr"];
|
|
128
|
+
switch (spend.operation) {
|
|
129
|
+
case "withdraw-unshielded": return builders[spend.operation](context, {
|
|
130
|
+
...spend,
|
|
131
|
+
color
|
|
132
|
+
});
|
|
133
|
+
case "withdraw-shielded": return builders[spend.operation](context, {
|
|
134
|
+
...spend,
|
|
135
|
+
color
|
|
136
|
+
});
|
|
137
|
+
case "withdraw-shielded-to-contract": return builders[spend.operation](context, {
|
|
138
|
+
...spend,
|
|
139
|
+
color
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* Prepares a spend under the grant a policy describes: checks it against
|
|
145
|
+
* the grant's scope, checks that the policy's grant id derives from its
|
|
146
|
+
* account, grantee key, origin and slot, and returns the withdrawal
|
|
147
|
+
* circuit, its arguments up to the signature and the challenge to sign.
|
|
148
|
+
* The arguments carry the grantee key, the origin hash, the slot, the
|
|
149
|
+
* scope salt and the object fields the contract opens its commitments
|
|
150
|
+
* with, and on the secp256k1 arm the plain ECDSA envelope.
|
|
151
|
+
*
|
|
152
|
+
* @throws {@link GrantSpendRefusedError} when the grant does not allow
|
|
153
|
+
* the spend, or the policy's grant id is not its own.
|
|
154
|
+
*/
|
|
155
|
+
const prepareGrantSpend = async (policy, spend) => {
|
|
156
|
+
assertSpendAllowed(policy, spend);
|
|
157
|
+
const contractAddress = bytesOf(policy.account);
|
|
158
|
+
const grantee = granteePoint({
|
|
159
|
+
scheme: policy.granteeScheme,
|
|
160
|
+
publicKey: policy.granteePublicKey
|
|
161
|
+
});
|
|
162
|
+
const origin = await originHash(policy.origin);
|
|
163
|
+
const grantId = deriveGrantId({
|
|
164
|
+
contractAddress,
|
|
165
|
+
granteePublicKey: grantee,
|
|
166
|
+
originHash: origin,
|
|
167
|
+
slot: GrantSlot(policy.slot)
|
|
168
|
+
});
|
|
169
|
+
if (grantId !== policy.grantId) refuse(`its id ${policy.grantId} does not derive from the policy's account, grantee, origin and slot`);
|
|
170
|
+
const color = bytesOf(policy.color);
|
|
171
|
+
const context = {
|
|
172
|
+
contractAddress,
|
|
173
|
+
granteePublicKey: policy.granteePublicKey,
|
|
174
|
+
grantId: bytesOf(grantId),
|
|
175
|
+
issuedAt: spend.issuedAt,
|
|
176
|
+
nonce: spend.nonce
|
|
177
|
+
};
|
|
178
|
+
const scopeArgs = [
|
|
179
|
+
origin,
|
|
180
|
+
BigInt(policy.slot),
|
|
181
|
+
bytesOf(policy.scopeSalt),
|
|
182
|
+
RECIPIENT_KINDS[policy.recipient.kind],
|
|
183
|
+
policy.recipient.kind === "any" ? zero32() : bytesOf(policy.recipient.value),
|
|
184
|
+
BigInt(policy.maxCoinValue),
|
|
185
|
+
spend.spent
|
|
186
|
+
];
|
|
187
|
+
const circuit = grantWithdrawalCircuit(policy.granteeScheme, spend.operation);
|
|
188
|
+
if (grantee.scheme === "secp256k1-ecdsa") {
|
|
189
|
+
const challenge = k256Challenge(context, spend, color);
|
|
190
|
+
return {
|
|
191
|
+
scheme: grantee.scheme,
|
|
192
|
+
circuit,
|
|
193
|
+
args: [
|
|
194
|
+
...withdrawalArgs(spend, color),
|
|
195
|
+
grantee.point,
|
|
196
|
+
K256_GRANT_ENVELOPE,
|
|
197
|
+
...scopeArgs
|
|
198
|
+
],
|
|
199
|
+
challenge,
|
|
200
|
+
digest: sha256(challenge)
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
return {
|
|
204
|
+
scheme: grantee.scheme,
|
|
205
|
+
circuit,
|
|
206
|
+
args: [
|
|
207
|
+
...withdrawalArgs(spend, color),
|
|
208
|
+
grantee.point,
|
|
209
|
+
...scopeArgs
|
|
210
|
+
],
|
|
211
|
+
challenge: jubjubChallenge(context, spend, color)
|
|
212
|
+
};
|
|
213
|
+
};
|
|
214
|
+
//#endregion
|
|
215
|
+
export { grantSpendChallenges, prepareGrantSpend };
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
require("./rolldown-runtime-Br2OG8yv.cjs");
|
|
2
|
+
require("./_polyfill-buffer-patch-CM8X7JiY.cjs");
|
|
3
|
+
require("./codecs-Cswkg7Tm.cjs");
|
|
4
|
+
const require_bytes_vo = require("./bytes.vo-BNRquqaO.cjs");
|
|
5
|
+
const require_errors = require("./errors-BIftM8ZN.cjs");
|
|
6
|
+
const require_grant_rules = require("./grant-rules-BzVTWXS7.cjs");
|
|
7
|
+
const require_grant_circuits = require("./grant-circuits-DswmW3nI.cjs");
|
|
8
|
+
const require_acc_module = require("./acc-module-4iIUv6My.cjs");
|
|
9
|
+
const require_grants = require("./grants-BoI5uwSF.cjs");
|
|
10
|
+
//#region ../../packages/module/passport-account/src/acc/grant-spend-challenges.ts
|
|
11
|
+
/** The grantee's secp256k1 point, read from the key its policy carries. */
|
|
12
|
+
const k256Point = (publicKey) => {
|
|
13
|
+
return require_grant_rules.granteePoint({
|
|
14
|
+
scheme: "secp256k1-ecdsa",
|
|
15
|
+
publicKey
|
|
16
|
+
}).point;
|
|
17
|
+
};
|
|
18
|
+
/** The grantee's jubjub point, read from the key its policy carries. */
|
|
19
|
+
const jubjubPoint = (publicKey) => {
|
|
20
|
+
return require_grant_rules.granteePoint({
|
|
21
|
+
scheme: "jubjub-schnorr",
|
|
22
|
+
publicKey
|
|
23
|
+
}).point;
|
|
24
|
+
};
|
|
25
|
+
const address = (context) => ({ bytes: context.contractAddress });
|
|
26
|
+
const coinOf = ({ coin }) => ({
|
|
27
|
+
nonce: coin.nonce,
|
|
28
|
+
color: coin.color,
|
|
29
|
+
value: coin.value,
|
|
30
|
+
mt_index: coin.mtIndex
|
|
31
|
+
});
|
|
32
|
+
/**
|
|
33
|
+
* The challenge builders of the grant withdrawals, for both grantee
|
|
34
|
+
* schemes. The preimage layout is the contract's own: each builder calls
|
|
35
|
+
* the pure circuit the withdrawal recomputes its challenge with, over the
|
|
36
|
+
* account address, the grantee key, the grant id and issue time, the
|
|
37
|
+
* withdrawal's arguments in declaration order and the record's nonce,
|
|
38
|
+
* with the announcement and grind nonce first and last on the jubjub arm.
|
|
39
|
+
* A shielded challenge also binds the change entry, the encryption key
|
|
40
|
+
* and the held coin the withdrawal spends.
|
|
41
|
+
*/
|
|
42
|
+
const grantSpendChallenges = {
|
|
43
|
+
"secp256k1-ecdsa": {
|
|
44
|
+
"withdraw-unshielded": (context, withdrawal) => require_acc_module.pureCircuits.challenge_withdraw_unshielded_with_grant_k256(address(context), k256Point(context.granteePublicKey), context.grantId, context.issuedAt, withdrawal.color, withdrawal.amount, { bytes: withdrawal.recipient }, context.nonce),
|
|
45
|
+
"withdraw-shielded": (context, withdrawal) => require_acc_module.pureCircuits.challenge_withdraw_shielded_with_grant_k256(address(context), k256Point(context.granteePublicKey), context.grantId, context.issuedAt, { bytes: withdrawal.recipient }, withdrawal.color, withdrawal.amount, withdrawal.changeEntry, withdrawal.encPublicKey, coinOf(withdrawal), context.nonce),
|
|
46
|
+
"withdraw-shielded-to-contract": (context, withdrawal) => require_acc_module.pureCircuits.challenge_withdraw_shielded_to_contract_with_grant_k256(address(context), k256Point(context.granteePublicKey), context.grantId, context.issuedAt, { bytes: withdrawal.recipient }, withdrawal.color, withdrawal.amount, withdrawal.changeEntry, withdrawal.encPublicKey, coinOf(withdrawal), context.nonce)
|
|
47
|
+
},
|
|
48
|
+
"jubjub-schnorr": {
|
|
49
|
+
"withdraw-unshielded": (context, withdrawal) => {
|
|
50
|
+
const pk = jubjubPoint(context.granteePublicKey);
|
|
51
|
+
return (sigR, grindNonce) => require_acc_module.pureCircuits.challenge_withdraw_unshielded_with_grant_jubjub(address(context), sigR, pk, context.grantId, context.issuedAt, withdrawal.color, withdrawal.amount, { bytes: withdrawal.recipient }, context.nonce, grindNonce);
|
|
52
|
+
},
|
|
53
|
+
"withdraw-shielded": (context, withdrawal) => {
|
|
54
|
+
const pk = jubjubPoint(context.granteePublicKey);
|
|
55
|
+
return (sigR, grindNonce) => require_acc_module.pureCircuits.challenge_withdraw_shielded_with_grant_jubjub(address(context), sigR, pk, context.grantId, context.issuedAt, { bytes: withdrawal.recipient }, withdrawal.color, withdrawal.amount, withdrawal.changeEntry, withdrawal.encPublicKey, coinOf(withdrawal), context.nonce, grindNonce);
|
|
56
|
+
},
|
|
57
|
+
"withdraw-shielded-to-contract": (context, withdrawal) => {
|
|
58
|
+
const pk = jubjubPoint(context.granteePublicKey);
|
|
59
|
+
return (sigR, grindNonce) => require_acc_module.pureCircuits.challenge_withdraw_shielded_to_contract_with_grant_jubjub(address(context), sigR, pk, context.grantId, context.issuedAt, { bytes: withdrawal.recipient }, withdrawal.color, withdrawal.amount, withdrawal.changeEntry, withdrawal.encPublicKey, coinOf(withdrawal), context.nonce, grindNonce);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
//#endregion
|
|
64
|
+
//#region ../../packages/module/passport-account/src/acc/grant-spend.ts
|
|
65
|
+
/** The recipient kind each withdrawal pays, which a pinned grant must name. */
|
|
66
|
+
const PAID_RECIPIENT_KINDS = {
|
|
67
|
+
"withdraw-unshielded": "user-address",
|
|
68
|
+
"withdraw-shielded": "coin-public-key",
|
|
69
|
+
"withdraw-shielded-to-contract": "contract-address"
|
|
70
|
+
};
|
|
71
|
+
const refuse = (reason) => {
|
|
72
|
+
throw new require_errors.GrantSpendRefusedError(`The grant does not allow this spend: ${reason}.`);
|
|
73
|
+
};
|
|
74
|
+
const bytesOf = (hex) => require_bytes_vo.ByteArray.fromHex(require_bytes_vo.HexBytes(hex));
|
|
75
|
+
/**
|
|
76
|
+
* Checks a spend against the grant's scope as its policy states it, in
|
|
77
|
+
* the contract's order, so a spend the contract would refuse is caught
|
|
78
|
+
* before it is signed and proved. Expiry is checked against this
|
|
79
|
+
* machine's clock, which the contract checks again against the block's.
|
|
80
|
+
*/
|
|
81
|
+
const assertSpendAllowed = (policy, spend) => {
|
|
82
|
+
const { expiresAt } = policy;
|
|
83
|
+
if (expiresAt !== null && Math.floor(Date.now() / 1e3) >= expiresAt) refuse(`it expired at ${expiresAt}`);
|
|
84
|
+
if (!policy.operations.includes(spend.operation)) refuse(`${spend.operation} is not in its scope`);
|
|
85
|
+
if (spend.amount > BigInt(policy.perCallCap)) refuse(`${spend.amount} is above the per-call cap ${policy.perCallCap}`);
|
|
86
|
+
if (spend.spent + spend.amount > BigInt(policy.cap)) refuse(`${spend.amount} after ${spend.spent} spent exceeds the cap ${policy.cap}`);
|
|
87
|
+
const { recipient } = policy;
|
|
88
|
+
if (recipient.kind !== "any") {
|
|
89
|
+
if (recipient.kind !== PAID_RECIPIENT_KINDS[spend.operation]) refuse(`it pins a ${recipient.kind} recipient, which ${spend.operation} does not pay`);
|
|
90
|
+
if (require_bytes_vo.HexBytes.fromByteArray(spend.recipient) !== recipient.value) refuse("the recipient is not the one it pins");
|
|
91
|
+
}
|
|
92
|
+
if (spend.operation !== "withdraw-unshielded") {
|
|
93
|
+
if (require_bytes_vo.HexBytes.fromByteArray(spend.coin.color) !== policy.color) refuse("the coin is not of its colour");
|
|
94
|
+
if (spend.coin.value > BigInt(policy.maxCoinValue)) refuse(`the coin of ${spend.coin.value} is above its coin bound ${policy.maxCoinValue}`);
|
|
95
|
+
if (spend.coin.value < spend.amount) refuse(`the coin of ${spend.coin.value} cannot pay the amount ${spend.amount}`);
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
/** The withdrawal's own arguments, in the circuit's declaration order. */
|
|
99
|
+
const withdrawalArgs = (spend, color) => spend.operation === "withdraw-unshielded" ? [
|
|
100
|
+
color,
|
|
101
|
+
spend.amount,
|
|
102
|
+
{ bytes: spend.recipient }
|
|
103
|
+
] : [
|
|
104
|
+
{ bytes: spend.recipient },
|
|
105
|
+
color,
|
|
106
|
+
spend.amount,
|
|
107
|
+
spend.changeEntry,
|
|
108
|
+
spend.encPublicKey
|
|
109
|
+
];
|
|
110
|
+
const k256Challenge = (context, spend, color) => {
|
|
111
|
+
const builders = grantSpendChallenges["secp256k1-ecdsa"];
|
|
112
|
+
switch (spend.operation) {
|
|
113
|
+
case "withdraw-unshielded": return builders[spend.operation](context, {
|
|
114
|
+
...spend,
|
|
115
|
+
color
|
|
116
|
+
});
|
|
117
|
+
case "withdraw-shielded": return builders[spend.operation](context, {
|
|
118
|
+
...spend,
|
|
119
|
+
color
|
|
120
|
+
});
|
|
121
|
+
case "withdraw-shielded-to-contract": return builders[spend.operation](context, {
|
|
122
|
+
...spend,
|
|
123
|
+
color
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
const jubjubChallenge = (context, spend, color) => {
|
|
128
|
+
const builders = grantSpendChallenges["jubjub-schnorr"];
|
|
129
|
+
switch (spend.operation) {
|
|
130
|
+
case "withdraw-unshielded": return builders[spend.operation](context, {
|
|
131
|
+
...spend,
|
|
132
|
+
color
|
|
133
|
+
});
|
|
134
|
+
case "withdraw-shielded": return builders[spend.operation](context, {
|
|
135
|
+
...spend,
|
|
136
|
+
color
|
|
137
|
+
});
|
|
138
|
+
case "withdraw-shielded-to-contract": return builders[spend.operation](context, {
|
|
139
|
+
...spend,
|
|
140
|
+
color
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
/**
|
|
145
|
+
* Prepares a spend under the grant a policy describes: checks it against
|
|
146
|
+
* the grant's scope, checks that the policy's grant id derives from its
|
|
147
|
+
* account, grantee key, origin and slot, and returns the withdrawal
|
|
148
|
+
* circuit, its arguments up to the signature and the challenge to sign.
|
|
149
|
+
* The arguments carry the grantee key, the origin hash, the slot, the
|
|
150
|
+
* scope salt and the object fields the contract opens its commitments
|
|
151
|
+
* with, and on the secp256k1 arm the plain ECDSA envelope.
|
|
152
|
+
*
|
|
153
|
+
* @throws {@link GrantSpendRefusedError} when the grant does not allow
|
|
154
|
+
* the spend, or the policy's grant id is not its own.
|
|
155
|
+
*/
|
|
156
|
+
const prepareGrantSpend = async (policy, spend) => {
|
|
157
|
+
assertSpendAllowed(policy, spend);
|
|
158
|
+
const contractAddress = bytesOf(policy.account);
|
|
159
|
+
const grantee = require_grant_rules.granteePoint({
|
|
160
|
+
scheme: policy.granteeScheme,
|
|
161
|
+
publicKey: policy.granteePublicKey
|
|
162
|
+
});
|
|
163
|
+
const origin = await require_grants.originHash(policy.origin);
|
|
164
|
+
const grantId = require_grants.deriveGrantId({
|
|
165
|
+
contractAddress,
|
|
166
|
+
granteePublicKey: grantee,
|
|
167
|
+
originHash: origin,
|
|
168
|
+
slot: require_grant_rules.GrantSlot(policy.slot)
|
|
169
|
+
});
|
|
170
|
+
if (grantId !== policy.grantId) refuse(`its id ${policy.grantId} does not derive from the policy's account, grantee, origin and slot`);
|
|
171
|
+
const color = bytesOf(policy.color);
|
|
172
|
+
const context = {
|
|
173
|
+
contractAddress,
|
|
174
|
+
granteePublicKey: policy.granteePublicKey,
|
|
175
|
+
grantId: bytesOf(grantId),
|
|
176
|
+
issuedAt: spend.issuedAt,
|
|
177
|
+
nonce: spend.nonce
|
|
178
|
+
};
|
|
179
|
+
const scopeArgs = [
|
|
180
|
+
origin,
|
|
181
|
+
BigInt(policy.slot),
|
|
182
|
+
bytesOf(policy.scopeSalt),
|
|
183
|
+
require_grant_rules.RECIPIENT_KINDS[policy.recipient.kind],
|
|
184
|
+
policy.recipient.kind === "any" ? require_grant_rules.zero32() : bytesOf(policy.recipient.value),
|
|
185
|
+
BigInt(policy.maxCoinValue),
|
|
186
|
+
spend.spent
|
|
187
|
+
];
|
|
188
|
+
const circuit = require_grant_circuits.grantWithdrawalCircuit(policy.granteeScheme, spend.operation);
|
|
189
|
+
if (grantee.scheme === "secp256k1-ecdsa") {
|
|
190
|
+
const challenge = k256Challenge(context, spend, color);
|
|
191
|
+
return {
|
|
192
|
+
scheme: grantee.scheme,
|
|
193
|
+
circuit,
|
|
194
|
+
args: [
|
|
195
|
+
...withdrawalArgs(spend, color),
|
|
196
|
+
grantee.point,
|
|
197
|
+
require_grants.K256_GRANT_ENVELOPE,
|
|
198
|
+
...scopeArgs
|
|
199
|
+
],
|
|
200
|
+
challenge,
|
|
201
|
+
digest: require_errors.sha256(challenge)
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
return {
|
|
205
|
+
scheme: grantee.scheme,
|
|
206
|
+
circuit,
|
|
207
|
+
args: [
|
|
208
|
+
...withdrawalArgs(spend, color),
|
|
209
|
+
grantee.point,
|
|
210
|
+
...scopeArgs
|
|
211
|
+
],
|
|
212
|
+
challenge: jubjubChallenge(context, spend, color)
|
|
213
|
+
};
|
|
214
|
+
};
|
|
215
|
+
//#endregion
|
|
216
|
+
exports.grantSpendChallenges = grantSpendChallenges;
|
|
217
|
+
exports.prepareGrantSpend = prepareGrantSpend;
|