@laceio/sdk 0.1.1 → 0.1.2-canary.0
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-CCjOn7NA.cjs} +42 -0
- package/dist/{TransactionBuilder-V6aLx4SV.js → TransactionBuilder-CIzdw18M.js} +1 -1
- 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 +16956 -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-CCjiakoy.cjs} +6 -6
- package/dist/{delegation-tx-builder-CGVqlaFE.js → delegation-tx-builder-DZFjHDS8.js} +5 -5
- package/dist/{deregistration-tx-builder-B-CrUyX6.js → deregistration-tx-builder-Bf6xAYp4.js} +5 -5
- package/dist/{deregistration-tx-builder-DZGwB4cz.cjs → deregistration-tx-builder-CQP35yex.cjs} +6 -6
- 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-BDbTDZmD.js → earn-rewards-tx-builder-Bsga3yFb.js} +5 -5
- package/dist/{earn-rewards-tx-builder-D5sUT5v8.cjs → earn-rewards-tx-builder-GuxofYns.cjs} +6 -6
- 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 +86273 -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 +37496 -10033
- 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-8v_n8boO.js +1177 -0
- 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-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-CuW7rHNA.js +3584 -0
- package/dist/{init-CFYsq82V.js → init-CyAY4Lzl.js} +1 -1
- package/dist/init-Cz0rz5fU.cjs +3585 -0
- 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-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-DrRdf5sZ.cjs +1176 -0
- 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-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-B1nDUWqy.js +995 -0
- package/dist/modules-cardano-BYeYHrRm.cjs +1108 -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-BpEMSti4.cjs → vote-delegation-tx-builder-BUg1S2Ep.cjs} +6 -6
- package/dist/{vote-delegation-tx-builder-CmKv6GoG.js → vote-delegation-tx-builder-C6FiS7zI.js} +5 -5
- 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,263 @@
|
|
|
1
|
+
require("./rolldown-runtime-Br2OG8yv.cjs");
|
|
2
|
+
const require_hex = require("./hex-D9ITYbwt.cjs");
|
|
3
|
+
let _laceio_cardano_core = require("@laceio/cardano/core");
|
|
4
|
+
//#region ../../packages/lib/cardano-custody/src/stake-script.ts
|
|
5
|
+
/** Flat-encoded program version 1.1.0: three one-byte naturals. */
|
|
6
|
+
const PROGRAM_VERSION = [
|
|
7
|
+
1,
|
|
8
|
+
1,
|
|
9
|
+
0
|
|
10
|
+
];
|
|
11
|
+
const PROGRAM_VERSION_BITS = PROGRAM_VERSION.length * 8;
|
|
12
|
+
const APPLY_TERM_TAG = 3;
|
|
13
|
+
const CONSTANT_TERM_TAG = 4;
|
|
14
|
+
const DATA_TYPE_TAG = 8;
|
|
15
|
+
const TERM_TAG_BITS = 4;
|
|
16
|
+
/** Writes the flat encoding: bits fill each byte from the most significant end. */
|
|
17
|
+
var FlatWriter = class {
|
|
18
|
+
bytes = [];
|
|
19
|
+
pending = 0;
|
|
20
|
+
pendingBits = 0;
|
|
21
|
+
get byteLength() {
|
|
22
|
+
return this.bytes.length;
|
|
23
|
+
}
|
|
24
|
+
writeBits(value, count) {
|
|
25
|
+
for (let shift = count - 1; shift >= 0; shift--) this.writeBit(value >> shift & 1);
|
|
26
|
+
}
|
|
27
|
+
writeBit(bit) {
|
|
28
|
+
this.pending = this.pending << 1 | bit;
|
|
29
|
+
this.pendingBits++;
|
|
30
|
+
if (this.pendingBits === 8) {
|
|
31
|
+
this.bytes.push(this.pending);
|
|
32
|
+
this.pending = 0;
|
|
33
|
+
this.pendingBits = 0;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/** Zero or more 0 bits and a closing 1 bit, ending on a byte boundary. */
|
|
37
|
+
writeFiller() {
|
|
38
|
+
while (this.pendingBits !== 7) this.writeBit(0);
|
|
39
|
+
this.writeBit(1);
|
|
40
|
+
}
|
|
41
|
+
/** Callers write whole bytes only after a filler or other whole bytes. */
|
|
42
|
+
writeAlignedBytes(bytes) {
|
|
43
|
+
this.bytes.push(...bytes);
|
|
44
|
+
}
|
|
45
|
+
toBytes() {
|
|
46
|
+
return Uint8Array.from(this.bytes);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
const bitAt = (bytes, position) => bytes[position >> 3] >> 7 - (position & 7) & 1;
|
|
50
|
+
/**
|
|
51
|
+
* Applies one Plutus Data byte-string parameter: a constant term of type
|
|
52
|
+
* `[data]` whose value is the CBOR of the data, as a flat byte string.
|
|
53
|
+
* Returns the offset, in the flat output, of the parameter's raw bytes.
|
|
54
|
+
*/
|
|
55
|
+
const writeDataBytesConstant = (writer, parameter) => {
|
|
56
|
+
writer.writeBits(CONSTANT_TERM_TAG, TERM_TAG_BITS);
|
|
57
|
+
writer.writeBit(1);
|
|
58
|
+
writer.writeBits(DATA_TYPE_TAG, TERM_TAG_BITS);
|
|
59
|
+
writer.writeBit(0);
|
|
60
|
+
const cbor = require_hex.hexToBytes(_laceio_cardano_core.Serialization.PlutusData.newBytes(parameter).toCbor());
|
|
61
|
+
writer.writeFiller();
|
|
62
|
+
writer.writeAlignedBytes([cbor.length]);
|
|
63
|
+
const parameterOffset = writer.byteLength + cbor.length - parameter.length;
|
|
64
|
+
writer.writeAlignedBytes(cbor);
|
|
65
|
+
writer.writeAlignedBytes([0]);
|
|
66
|
+
return parameterOffset;
|
|
67
|
+
};
|
|
68
|
+
/** The flat program a blueprint's compiled code wraps in one CBOR byte string. */
|
|
69
|
+
const unwrapCompiledCode = (compiledCode) => new _laceio_cardano_core.Serialization.CborReader(compiledCode).readByteString();
|
|
70
|
+
const assertUnappliedProgramShape = (program, bodyBitLength) => {
|
|
71
|
+
if (PROGRAM_VERSION.some((byte, index) => program[index] !== byte)) throw new Error("The stake validator is not a version 1.1.0 program");
|
|
72
|
+
const bodyEnd = PROGRAM_VERSION_BITS + bodyBitLength;
|
|
73
|
+
const fillerBits = program.length * 8 - bodyEnd;
|
|
74
|
+
if (!(fillerBits >= 1 && fillerBits <= 8 && Array.from({ length: fillerBits }, (_, index) => bitAt(program, bodyEnd + index)).every((bit, index) => bit === (index === fillerBits - 1 ? 1 : 0)))) throw new Error(`The stake validator body is not ${bodyBitLength} bits followed by a filler`);
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Builds what `aiken blueprint apply` produces for the owner, then the
|
|
78
|
+
* account validator hash: the unapplied body under two Apply terms, followed
|
|
79
|
+
* by one Data byte-string constant per parameter. The two Apply tags take
|
|
80
|
+
* exactly one byte, so the body bits keep their position within each byte
|
|
81
|
+
* and the owner always lands at the same offset.
|
|
82
|
+
*/
|
|
83
|
+
const buildStakeScriptTemplate = (version) => {
|
|
84
|
+
const { compiledCode, bodyBitLength } = version.unappliedStakeValidator;
|
|
85
|
+
const program = unwrapCompiledCode(compiledCode);
|
|
86
|
+
assertUnappliedProgramShape(program, bodyBitLength);
|
|
87
|
+
const writer = new FlatWriter();
|
|
88
|
+
writer.writeAlignedBytes(PROGRAM_VERSION);
|
|
89
|
+
writer.writeBits(APPLY_TERM_TAG, TERM_TAG_BITS);
|
|
90
|
+
writer.writeBits(APPLY_TERM_TAG, TERM_TAG_BITS);
|
|
91
|
+
for (let index = 0; index < bodyBitLength; index++) writer.writeBit(bitAt(program, PROGRAM_VERSION_BITS + index));
|
|
92
|
+
const ownerFlatOffset = writeDataBytesConstant(writer, new Uint8Array(28));
|
|
93
|
+
writeDataBytesConstant(writer, require_hex.hexToBytes(version.accountValidatorHash));
|
|
94
|
+
writer.writeFiller();
|
|
95
|
+
const flat = writer.toBytes();
|
|
96
|
+
const wrapped = new _laceio_cardano_core.Serialization.CborWriter().writeByteString(flat).encode();
|
|
97
|
+
return {
|
|
98
|
+
compiledCode: wrapped,
|
|
99
|
+
ownerOffset: wrapped.length - flat.length + ownerFlatOffset
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
const templates = /* @__PURE__ */ new Map();
|
|
103
|
+
const templateFor = (version) => {
|
|
104
|
+
let template = templates.get(version.accountValidatorHash);
|
|
105
|
+
if (!template) {
|
|
106
|
+
template = buildStakeScriptTemplate(version);
|
|
107
|
+
templates.set(version.accountValidatorHash, template);
|
|
108
|
+
}
|
|
109
|
+
return template;
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* The compiled code of an account's stake script: the version's stake
|
|
113
|
+
* validator applied to the owner (creator) key hash and then to the
|
|
114
|
+
* version's account validator hash. Byte for byte what the Aiken CLI emits.
|
|
115
|
+
*
|
|
116
|
+
* @param ownerKeyHash - lower-case hex of exactly 28 bytes, checked by the caller
|
|
117
|
+
*/
|
|
118
|
+
const applyStakeValidatorToOwner = (version, ownerKeyHash) => {
|
|
119
|
+
const { compiledCode, ownerOffset } = templateFor(version);
|
|
120
|
+
const applied = compiledCode.slice();
|
|
121
|
+
applied.set(require_hex.hexToBytes(ownerKeyHash), ownerOffset);
|
|
122
|
+
return require_hex.bytesToHex(applied);
|
|
123
|
+
};
|
|
124
|
+
//#endregion
|
|
125
|
+
//#region ../../packages/lib/cardano-custody/src/identity.ts
|
|
126
|
+
/**
|
|
127
|
+
* Derives the identity of a creator key hash and chain id the caller has
|
|
128
|
+
* already validated.
|
|
129
|
+
*/
|
|
130
|
+
const identityOfValidatedCreator = ({ contractVersion, creatorKeyHash, chainId }) => {
|
|
131
|
+
const stakeScript = {
|
|
132
|
+
__type: _laceio_cardano_core.Cardano.ScriptType.Plutus,
|
|
133
|
+
bytes: applyStakeValidatorToOwner(contractVersion, creatorKeyHash),
|
|
134
|
+
version: _laceio_cardano_core.Cardano.PlutusLanguageVersion.V3
|
|
135
|
+
};
|
|
136
|
+
const stakeScriptHash = _laceio_cardano_core.Serialization.Script.fromCore(stakeScript).hash();
|
|
137
|
+
const stakeCredential = {
|
|
138
|
+
type: _laceio_cardano_core.Cardano.CredentialType.ScriptHash,
|
|
139
|
+
hash: stakeScriptHash
|
|
140
|
+
};
|
|
141
|
+
return {
|
|
142
|
+
contractVersion,
|
|
143
|
+
chainId,
|
|
144
|
+
creatorKeyHash,
|
|
145
|
+
stakeScript,
|
|
146
|
+
stakeScriptHash,
|
|
147
|
+
address: _laceio_cardano_core.Cardano.BaseAddress.fromCredentials(chainId.networkId, {
|
|
148
|
+
type: _laceio_cardano_core.Cardano.CredentialType.ScriptHash,
|
|
149
|
+
hash: contractVersion.accountValidatorHash
|
|
150
|
+
}, stakeCredential).toAddress().toBech32(),
|
|
151
|
+
rewardAccount: _laceio_cardano_core.Cardano.RewardAccount.fromCredential(stakeCredential, chainId.networkId),
|
|
152
|
+
stateNftAssetId: _laceio_cardano_core.Cardano.AssetId.fromParts(_laceio_cardano_core.Cardano.PolicyId(contractVersion.accountValidatorHash), _laceio_cardano_core.Cardano.AssetName(stakeScriptHash))
|
|
153
|
+
};
|
|
154
|
+
};
|
|
155
|
+
const MAINNET_NETWORK_MAGIC = _laceio_cardano_core.Cardano.NetworkMagics.Mainnet;
|
|
156
|
+
/**
|
|
157
|
+
* The chain a network magic names. Records carry only the magic; every
|
|
158
|
+
* Cardano network except mainnet uses network id 0.
|
|
159
|
+
*/
|
|
160
|
+
const chainIdFromNetworkMagic = (networkMagic) => ({
|
|
161
|
+
networkId: networkMagic === MAINNET_NETWORK_MAGIC ? _laceio_cardano_core.Cardano.NetworkId.Mainnet : _laceio_cardano_core.Cardano.NetworkId.Testnet,
|
|
162
|
+
networkMagic
|
|
163
|
+
});
|
|
164
|
+
/** Whether a value is a network magic: a 32-bit unsigned integer. */
|
|
165
|
+
const isNetworkMagic = (value) => typeof value === "number" && Number.isInteger(value) && value >= 0 && value <= 4294967295;
|
|
166
|
+
/**
|
|
167
|
+
* Whether a chain id is one a record can name: the record keeps only the
|
|
168
|
+
* magic, so the network id must be the one the magic implies.
|
|
169
|
+
*/
|
|
170
|
+
const isConsistentChainId = ({ networkId, networkMagic }) => isNetworkMagic(networkMagic) && networkId === chainIdFromNetworkMagic(networkMagic).networkId;
|
|
171
|
+
/**
|
|
172
|
+
* The identity of the account a creator key hash creates on a chain. Refuses
|
|
173
|
+
* a key hash that is not lower-case hex of exactly 28 bytes, and a chain id
|
|
174
|
+
* whose network id contradicts its network magic, such as network id 0 with
|
|
175
|
+
* the mainnet magic.
|
|
176
|
+
*/
|
|
177
|
+
const deriveCustodyAccountIdentity = (params) => {
|
|
178
|
+
if (!isConsistentChainId(params.chainId)) return require_hex.fail({
|
|
179
|
+
code: "invalid-chain-id",
|
|
180
|
+
chainId: params.chainId
|
|
181
|
+
});
|
|
182
|
+
return require_hex.isHash28Hex(params.creatorKeyHash) ? require_hex.ok(identityOfValidatedCreator(params)) : require_hex.fail({
|
|
183
|
+
code: "invalid-key-hash",
|
|
184
|
+
keyHash: params.creatorKeyHash
|
|
185
|
+
});
|
|
186
|
+
};
|
|
187
|
+
//#endregion
|
|
188
|
+
//#region ../../packages/contract/cardano-context/src/custody/identity.ts
|
|
189
|
+
/**
|
|
190
|
+
* Re-derives a persisted custody account's identity from its contract
|
|
191
|
+
* version, creator key hash and chain, and refuses it unless the stored
|
|
192
|
+
* stake script hash, address and reward account are exactly the derived
|
|
193
|
+
* ones. Persisted props are only as trustworthy as storage, and an address
|
|
194
|
+
* the contract does not govern for this creator must never be synced or
|
|
195
|
+
* shown as the account.
|
|
196
|
+
*/
|
|
197
|
+
const verifyCardanoCustodyAccountIdentity = (stored) => {
|
|
198
|
+
const contractVersion = require_hex.findCustodyContractVersion(stored.accountValidatorHash);
|
|
199
|
+
if (!contractVersion.ok) return contractVersion;
|
|
200
|
+
const derived = deriveCustodyAccountIdentity({
|
|
201
|
+
contractVersion: contractVersion.value,
|
|
202
|
+
creatorKeyHash: stored.creatorKeyHash,
|
|
203
|
+
chainId: stored.chainId
|
|
204
|
+
});
|
|
205
|
+
if (!derived.ok) return derived;
|
|
206
|
+
const mismatch = [
|
|
207
|
+
[
|
|
208
|
+
"stakeScriptHash",
|
|
209
|
+
stored.stakeScriptHash,
|
|
210
|
+
derived.value.stakeScriptHash
|
|
211
|
+
],
|
|
212
|
+
[
|
|
213
|
+
"address",
|
|
214
|
+
stored.address,
|
|
215
|
+
derived.value.address
|
|
216
|
+
],
|
|
217
|
+
[
|
|
218
|
+
"rewardAccount",
|
|
219
|
+
stored.rewardAccount,
|
|
220
|
+
derived.value.rewardAccount
|
|
221
|
+
]
|
|
222
|
+
].find(([, storedValue, derivedValue]) => storedValue !== derivedValue);
|
|
223
|
+
return mismatch ? {
|
|
224
|
+
ok: false,
|
|
225
|
+
error: {
|
|
226
|
+
code: "identity-mismatch",
|
|
227
|
+
field: mismatch[0],
|
|
228
|
+
stored: mismatch[1],
|
|
229
|
+
derived: mismatch[2]
|
|
230
|
+
}
|
|
231
|
+
} : derived;
|
|
232
|
+
};
|
|
233
|
+
//#endregion
|
|
234
|
+
Object.defineProperty(exports, "chainIdFromNetworkMagic", {
|
|
235
|
+
enumerable: true,
|
|
236
|
+
get: function() {
|
|
237
|
+
return chainIdFromNetworkMagic;
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
Object.defineProperty(exports, "deriveCustodyAccountIdentity", {
|
|
241
|
+
enumerable: true,
|
|
242
|
+
get: function() {
|
|
243
|
+
return deriveCustodyAccountIdentity;
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
Object.defineProperty(exports, "identityOfValidatedCreator", {
|
|
247
|
+
enumerable: true,
|
|
248
|
+
get: function() {
|
|
249
|
+
return identityOfValidatedCreator;
|
|
250
|
+
}
|
|
251
|
+
});
|
|
252
|
+
Object.defineProperty(exports, "isNetworkMagic", {
|
|
253
|
+
enumerable: true,
|
|
254
|
+
get: function() {
|
|
255
|
+
return isNetworkMagic;
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
Object.defineProperty(exports, "verifyCardanoCustodyAccountIdentity", {
|
|
259
|
+
enumerable: true,
|
|
260
|
+
get: function() {
|
|
261
|
+
return verifyCardanoCustodyAccountIdentity;
|
|
262
|
+
}
|
|
263
|
+
});
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { d as fail, f as ok, l as findCustodyContractVersion, n as hexToBytes, r as isHash28Hex, t as bytesToHex } from "./hex-mkXcV3pN.js";
|
|
2
|
+
import { Cardano, Serialization } from "@laceio/cardano/core";
|
|
3
|
+
//#region ../../packages/lib/cardano-custody/src/stake-script.ts
|
|
4
|
+
/** Flat-encoded program version 1.1.0: three one-byte naturals. */
|
|
5
|
+
const PROGRAM_VERSION = [
|
|
6
|
+
1,
|
|
7
|
+
1,
|
|
8
|
+
0
|
|
9
|
+
];
|
|
10
|
+
const PROGRAM_VERSION_BITS = PROGRAM_VERSION.length * 8;
|
|
11
|
+
const APPLY_TERM_TAG = 3;
|
|
12
|
+
const CONSTANT_TERM_TAG = 4;
|
|
13
|
+
const DATA_TYPE_TAG = 8;
|
|
14
|
+
const TERM_TAG_BITS = 4;
|
|
15
|
+
/** Writes the flat encoding: bits fill each byte from the most significant end. */
|
|
16
|
+
var FlatWriter = class {
|
|
17
|
+
bytes = [];
|
|
18
|
+
pending = 0;
|
|
19
|
+
pendingBits = 0;
|
|
20
|
+
get byteLength() {
|
|
21
|
+
return this.bytes.length;
|
|
22
|
+
}
|
|
23
|
+
writeBits(value, count) {
|
|
24
|
+
for (let shift = count - 1; shift >= 0; shift--) this.writeBit(value >> shift & 1);
|
|
25
|
+
}
|
|
26
|
+
writeBit(bit) {
|
|
27
|
+
this.pending = this.pending << 1 | bit;
|
|
28
|
+
this.pendingBits++;
|
|
29
|
+
if (this.pendingBits === 8) {
|
|
30
|
+
this.bytes.push(this.pending);
|
|
31
|
+
this.pending = 0;
|
|
32
|
+
this.pendingBits = 0;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/** Zero or more 0 bits and a closing 1 bit, ending on a byte boundary. */
|
|
36
|
+
writeFiller() {
|
|
37
|
+
while (this.pendingBits !== 7) this.writeBit(0);
|
|
38
|
+
this.writeBit(1);
|
|
39
|
+
}
|
|
40
|
+
/** Callers write whole bytes only after a filler or other whole bytes. */
|
|
41
|
+
writeAlignedBytes(bytes) {
|
|
42
|
+
this.bytes.push(...bytes);
|
|
43
|
+
}
|
|
44
|
+
toBytes() {
|
|
45
|
+
return Uint8Array.from(this.bytes);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
const bitAt = (bytes, position) => bytes[position >> 3] >> 7 - (position & 7) & 1;
|
|
49
|
+
/**
|
|
50
|
+
* Applies one Plutus Data byte-string parameter: a constant term of type
|
|
51
|
+
* `[data]` whose value is the CBOR of the data, as a flat byte string.
|
|
52
|
+
* Returns the offset, in the flat output, of the parameter's raw bytes.
|
|
53
|
+
*/
|
|
54
|
+
const writeDataBytesConstant = (writer, parameter) => {
|
|
55
|
+
writer.writeBits(CONSTANT_TERM_TAG, TERM_TAG_BITS);
|
|
56
|
+
writer.writeBit(1);
|
|
57
|
+
writer.writeBits(DATA_TYPE_TAG, TERM_TAG_BITS);
|
|
58
|
+
writer.writeBit(0);
|
|
59
|
+
const cbor = hexToBytes(Serialization.PlutusData.newBytes(parameter).toCbor());
|
|
60
|
+
writer.writeFiller();
|
|
61
|
+
writer.writeAlignedBytes([cbor.length]);
|
|
62
|
+
const parameterOffset = writer.byteLength + cbor.length - parameter.length;
|
|
63
|
+
writer.writeAlignedBytes(cbor);
|
|
64
|
+
writer.writeAlignedBytes([0]);
|
|
65
|
+
return parameterOffset;
|
|
66
|
+
};
|
|
67
|
+
/** The flat program a blueprint's compiled code wraps in one CBOR byte string. */
|
|
68
|
+
const unwrapCompiledCode = (compiledCode) => new Serialization.CborReader(compiledCode).readByteString();
|
|
69
|
+
const assertUnappliedProgramShape = (program, bodyBitLength) => {
|
|
70
|
+
if (PROGRAM_VERSION.some((byte, index) => program[index] !== byte)) throw new Error("The stake validator is not a version 1.1.0 program");
|
|
71
|
+
const bodyEnd = PROGRAM_VERSION_BITS + bodyBitLength;
|
|
72
|
+
const fillerBits = program.length * 8 - bodyEnd;
|
|
73
|
+
if (!(fillerBits >= 1 && fillerBits <= 8 && Array.from({ length: fillerBits }, (_, index) => bitAt(program, bodyEnd + index)).every((bit, index) => bit === (index === fillerBits - 1 ? 1 : 0)))) throw new Error(`The stake validator body is not ${bodyBitLength} bits followed by a filler`);
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Builds what `aiken blueprint apply` produces for the owner, then the
|
|
77
|
+
* account validator hash: the unapplied body under two Apply terms, followed
|
|
78
|
+
* by one Data byte-string constant per parameter. The two Apply tags take
|
|
79
|
+
* exactly one byte, so the body bits keep their position within each byte
|
|
80
|
+
* and the owner always lands at the same offset.
|
|
81
|
+
*/
|
|
82
|
+
const buildStakeScriptTemplate = (version) => {
|
|
83
|
+
const { compiledCode, bodyBitLength } = version.unappliedStakeValidator;
|
|
84
|
+
const program = unwrapCompiledCode(compiledCode);
|
|
85
|
+
assertUnappliedProgramShape(program, bodyBitLength);
|
|
86
|
+
const writer = new FlatWriter();
|
|
87
|
+
writer.writeAlignedBytes(PROGRAM_VERSION);
|
|
88
|
+
writer.writeBits(APPLY_TERM_TAG, TERM_TAG_BITS);
|
|
89
|
+
writer.writeBits(APPLY_TERM_TAG, TERM_TAG_BITS);
|
|
90
|
+
for (let index = 0; index < bodyBitLength; index++) writer.writeBit(bitAt(program, PROGRAM_VERSION_BITS + index));
|
|
91
|
+
const ownerFlatOffset = writeDataBytesConstant(writer, new Uint8Array(28));
|
|
92
|
+
writeDataBytesConstant(writer, hexToBytes(version.accountValidatorHash));
|
|
93
|
+
writer.writeFiller();
|
|
94
|
+
const flat = writer.toBytes();
|
|
95
|
+
const wrapped = new Serialization.CborWriter().writeByteString(flat).encode();
|
|
96
|
+
return {
|
|
97
|
+
compiledCode: wrapped,
|
|
98
|
+
ownerOffset: wrapped.length - flat.length + ownerFlatOffset
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
const templates = /* @__PURE__ */ new Map();
|
|
102
|
+
const templateFor = (version) => {
|
|
103
|
+
let template = templates.get(version.accountValidatorHash);
|
|
104
|
+
if (!template) {
|
|
105
|
+
template = buildStakeScriptTemplate(version);
|
|
106
|
+
templates.set(version.accountValidatorHash, template);
|
|
107
|
+
}
|
|
108
|
+
return template;
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* The compiled code of an account's stake script: the version's stake
|
|
112
|
+
* validator applied to the owner (creator) key hash and then to the
|
|
113
|
+
* version's account validator hash. Byte for byte what the Aiken CLI emits.
|
|
114
|
+
*
|
|
115
|
+
* @param ownerKeyHash - lower-case hex of exactly 28 bytes, checked by the caller
|
|
116
|
+
*/
|
|
117
|
+
const applyStakeValidatorToOwner = (version, ownerKeyHash) => {
|
|
118
|
+
const { compiledCode, ownerOffset } = templateFor(version);
|
|
119
|
+
const applied = compiledCode.slice();
|
|
120
|
+
applied.set(hexToBytes(ownerKeyHash), ownerOffset);
|
|
121
|
+
return bytesToHex(applied);
|
|
122
|
+
};
|
|
123
|
+
//#endregion
|
|
124
|
+
//#region ../../packages/lib/cardano-custody/src/identity.ts
|
|
125
|
+
/**
|
|
126
|
+
* Derives the identity of a creator key hash and chain id the caller has
|
|
127
|
+
* already validated.
|
|
128
|
+
*/
|
|
129
|
+
const identityOfValidatedCreator = ({ contractVersion, creatorKeyHash, chainId }) => {
|
|
130
|
+
const stakeScript = {
|
|
131
|
+
__type: Cardano.ScriptType.Plutus,
|
|
132
|
+
bytes: applyStakeValidatorToOwner(contractVersion, creatorKeyHash),
|
|
133
|
+
version: Cardano.PlutusLanguageVersion.V3
|
|
134
|
+
};
|
|
135
|
+
const stakeScriptHash = Serialization.Script.fromCore(stakeScript).hash();
|
|
136
|
+
const stakeCredential = {
|
|
137
|
+
type: Cardano.CredentialType.ScriptHash,
|
|
138
|
+
hash: stakeScriptHash
|
|
139
|
+
};
|
|
140
|
+
return {
|
|
141
|
+
contractVersion,
|
|
142
|
+
chainId,
|
|
143
|
+
creatorKeyHash,
|
|
144
|
+
stakeScript,
|
|
145
|
+
stakeScriptHash,
|
|
146
|
+
address: Cardano.BaseAddress.fromCredentials(chainId.networkId, {
|
|
147
|
+
type: Cardano.CredentialType.ScriptHash,
|
|
148
|
+
hash: contractVersion.accountValidatorHash
|
|
149
|
+
}, stakeCredential).toAddress().toBech32(),
|
|
150
|
+
rewardAccount: Cardano.RewardAccount.fromCredential(stakeCredential, chainId.networkId),
|
|
151
|
+
stateNftAssetId: Cardano.AssetId.fromParts(Cardano.PolicyId(contractVersion.accountValidatorHash), Cardano.AssetName(stakeScriptHash))
|
|
152
|
+
};
|
|
153
|
+
};
|
|
154
|
+
const MAINNET_NETWORK_MAGIC = Cardano.NetworkMagics.Mainnet;
|
|
155
|
+
/**
|
|
156
|
+
* The chain a network magic names. Records carry only the magic; every
|
|
157
|
+
* Cardano network except mainnet uses network id 0.
|
|
158
|
+
*/
|
|
159
|
+
const chainIdFromNetworkMagic = (networkMagic) => ({
|
|
160
|
+
networkId: networkMagic === MAINNET_NETWORK_MAGIC ? Cardano.NetworkId.Mainnet : Cardano.NetworkId.Testnet,
|
|
161
|
+
networkMagic
|
|
162
|
+
});
|
|
163
|
+
/** Whether a value is a network magic: a 32-bit unsigned integer. */
|
|
164
|
+
const isNetworkMagic = (value) => typeof value === "number" && Number.isInteger(value) && value >= 0 && value <= 4294967295;
|
|
165
|
+
/**
|
|
166
|
+
* Whether a chain id is one a record can name: the record keeps only the
|
|
167
|
+
* magic, so the network id must be the one the magic implies.
|
|
168
|
+
*/
|
|
169
|
+
const isConsistentChainId = ({ networkId, networkMagic }) => isNetworkMagic(networkMagic) && networkId === chainIdFromNetworkMagic(networkMagic).networkId;
|
|
170
|
+
/**
|
|
171
|
+
* The identity of the account a creator key hash creates on a chain. Refuses
|
|
172
|
+
* a key hash that is not lower-case hex of exactly 28 bytes, and a chain id
|
|
173
|
+
* whose network id contradicts its network magic, such as network id 0 with
|
|
174
|
+
* the mainnet magic.
|
|
175
|
+
*/
|
|
176
|
+
const deriveCustodyAccountIdentity = (params) => {
|
|
177
|
+
if (!isConsistentChainId(params.chainId)) return fail({
|
|
178
|
+
code: "invalid-chain-id",
|
|
179
|
+
chainId: params.chainId
|
|
180
|
+
});
|
|
181
|
+
return isHash28Hex(params.creatorKeyHash) ? ok(identityOfValidatedCreator(params)) : fail({
|
|
182
|
+
code: "invalid-key-hash",
|
|
183
|
+
keyHash: params.creatorKeyHash
|
|
184
|
+
});
|
|
185
|
+
};
|
|
186
|
+
//#endregion
|
|
187
|
+
//#region ../../packages/contract/cardano-context/src/custody/identity.ts
|
|
188
|
+
/**
|
|
189
|
+
* Re-derives a persisted custody account's identity from its contract
|
|
190
|
+
* version, creator key hash and chain, and refuses it unless the stored
|
|
191
|
+
* stake script hash, address and reward account are exactly the derived
|
|
192
|
+
* ones. Persisted props are only as trustworthy as storage, and an address
|
|
193
|
+
* the contract does not govern for this creator must never be synced or
|
|
194
|
+
* shown as the account.
|
|
195
|
+
*/
|
|
196
|
+
const verifyCardanoCustodyAccountIdentity = (stored) => {
|
|
197
|
+
const contractVersion = findCustodyContractVersion(stored.accountValidatorHash);
|
|
198
|
+
if (!contractVersion.ok) return contractVersion;
|
|
199
|
+
const derived = deriveCustodyAccountIdentity({
|
|
200
|
+
contractVersion: contractVersion.value,
|
|
201
|
+
creatorKeyHash: stored.creatorKeyHash,
|
|
202
|
+
chainId: stored.chainId
|
|
203
|
+
});
|
|
204
|
+
if (!derived.ok) return derived;
|
|
205
|
+
const mismatch = [
|
|
206
|
+
[
|
|
207
|
+
"stakeScriptHash",
|
|
208
|
+
stored.stakeScriptHash,
|
|
209
|
+
derived.value.stakeScriptHash
|
|
210
|
+
],
|
|
211
|
+
[
|
|
212
|
+
"address",
|
|
213
|
+
stored.address,
|
|
214
|
+
derived.value.address
|
|
215
|
+
],
|
|
216
|
+
[
|
|
217
|
+
"rewardAccount",
|
|
218
|
+
stored.rewardAccount,
|
|
219
|
+
derived.value.rewardAccount
|
|
220
|
+
]
|
|
221
|
+
].find(([, storedValue, derivedValue]) => storedValue !== derivedValue);
|
|
222
|
+
return mismatch ? {
|
|
223
|
+
ok: false,
|
|
224
|
+
error: {
|
|
225
|
+
code: "identity-mismatch",
|
|
226
|
+
field: mismatch[0],
|
|
227
|
+
stored: mismatch[1],
|
|
228
|
+
derived: mismatch[2]
|
|
229
|
+
}
|
|
230
|
+
} : derived;
|
|
231
|
+
};
|
|
232
|
+
//#endregion
|
|
233
|
+
export { isNetworkMagic as a, identityOfValidatedCreator as i, chainIdFromNetworkMagic as n, deriveCustodyAccountIdentity as r, verifyCardanoCustodyAccountIdentity as t };
|