@aeternity/aepp-sdk 12.1.2 → 13.0.0-alpha.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/aepp-sdk.browser-script.js +1 -1
- package/dist/aepp-sdk.browser-script.js.map +1 -1
- package/dist/aepp-sdk.browser.js +1 -1
- package/dist/aepp-sdk.browser.js.map +1 -1
- package/dist/aepp-sdk.js +6580 -8860
- package/dist/aepp-sdk.js.map +1 -1
- package/es/AeSdk.d.ts +7 -3
- package/es/AeSdk.mjs +17 -22
- package/es/AeSdk.mjs.map +1 -1
- package/es/AeSdkAepp.d.ts +6 -5
- package/es/AeSdkAepp.mjs +7 -30
- package/es/AeSdkAepp.mjs.map +1 -1
- package/es/AeSdkBase.d.ts +18 -140
- package/es/AeSdkBase.mjs +27 -185
- package/es/AeSdkBase.mjs.map +1 -1
- package/es/AeSdkMethods.d.ts +124 -0
- package/es/AeSdkMethods.mjs +122 -0
- package/es/AeSdkMethods.mjs.map +1 -0
- package/es/AeSdkWallet.d.ts +7 -21
- package/es/AeSdkWallet.mjs +38 -86
- package/es/AeSdkWallet.mjs.map +1 -1
- package/es/Node.d.ts +7 -12
- package/es/Node.mjs +34 -47
- package/es/Node.mjs.map +1 -1
- package/es/account/Base.d.ts +24 -40
- package/es/account/Base.mjs +1 -101
- package/es/account/Base.mjs.map +1 -1
- package/es/account/Generalized.d.ts +16 -0
- package/es/account/Generalized.mjs +111 -0
- package/es/account/Generalized.mjs.map +1 -0
- package/es/account/Ledger.d.ts +28 -0
- package/es/account/Ledger.mjs +101 -0
- package/es/account/Ledger.mjs.map +1 -0
- package/es/account/LedgerFactory.d.ts +39 -0
- package/es/account/LedgerFactory.mjs +81 -0
- package/es/account/LedgerFactory.mjs.map +1 -0
- package/es/account/Memory.d.ts +13 -17
- package/es/account/Memory.mjs +43 -65
- package/es/account/Memory.mjs.map +1 -1
- package/es/account/Rpc.d.ts +6 -8
- package/es/account/Rpc.mjs +14 -32
- package/es/account/Rpc.mjs.map +1 -1
- package/es/aens.d.ts +3 -3
- package/es/aens.mjs +42 -41
- package/es/aens.mjs.map +1 -1
- package/es/aepp-wallet-communication/connection/Browser.mjs +9 -13
- package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -1
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +3 -7
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -1
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +1 -1
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +0 -31
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -1
- package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -1
- package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +3 -3
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs +4 -41
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -1
- package/es/aepp-wallet-communication/rpc/types.d.ts +7 -1
- package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -1
- package/es/aepp-wallet-communication/schema.mjs +14 -68
- package/es/aepp-wallet-communication/schema.mjs.map +1 -1
- package/es/aepp-wallet-communication/wallet-detector.mjs +0 -3
- package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -1
- package/es/apis/compiler/compiler.d.ts +23 -29
- package/es/apis/compiler/compiler.mjs +128 -189
- package/es/apis/compiler/compiler.mjs.map +1 -1
- package/es/apis/compiler/index.mjs.map +1 -1
- package/es/apis/compiler/models/index.d.ts +82 -135
- package/es/apis/compiler/models/index.mjs +1 -47
- package/es/apis/compiler/models/index.mjs.map +1 -1
- package/es/apis/compiler/models/mappers.d.ts +8 -8
- package/es/apis/compiler/models/mappers.mjs +165 -183
- package/es/apis/compiler/models/mappers.mjs.map +1 -1
- package/es/apis/compiler/models/parameters.d.ts +0 -1
- package/es/apis/compiler/models/parameters.mjs +5 -9
- package/es/apis/compiler/models/parameters.mjs.map +1 -1
- package/es/apis/node/index.mjs.map +1 -1
- package/es/apis/node/models/index.d.ts +48 -48
- package/es/apis/node/models/mappers.mjs +12 -6
- package/es/apis/node/models/mappers.mjs.map +1 -1
- package/es/apis/node/models/parameters.mjs.map +1 -1
- package/es/apis/node/node.mjs +43 -84
- package/es/apis/node/node.mjs.map +1 -1
- package/es/chain.d.ts +1 -1
- package/es/chain.mjs +33 -58
- package/es/chain.mjs.map +1 -1
- package/es/channel/Base.d.ts +195 -0
- package/es/channel/Base.mjs +290 -0
- package/es/channel/Base.mjs.map +1 -0
- package/es/channel/Contract.d.ts +247 -0
- package/es/channel/Contract.mjs +420 -0
- package/es/channel/Contract.mjs.map +1 -0
- package/es/channel/Spend.d.ts +217 -0
- package/es/channel/Spend.mjs +383 -0
- package/es/channel/Spend.mjs.map +1 -0
- package/es/channel/handlers.d.ts +8 -21
- package/es/channel/handlers.mjs +141 -891
- package/es/channel/handlers.mjs.map +1 -1
- package/es/channel/internal.d.ts +27 -21
- package/es/channel/internal.mjs +98 -190
- package/es/channel/internal.mjs.map +1 -1
- package/es/contract/{Compiler.d.ts → CompilerHttp.d.ts} +3 -3
- package/es/contract/{Compiler.mjs → CompilerHttp.mjs} +8 -13
- package/es/contract/CompilerHttp.mjs.map +1 -0
- package/es/contract/Contract.d.ts +235 -0
- package/es/contract/Contract.mjs +534 -0
- package/es/contract/Contract.mjs.map +1 -0
- package/es/contract/ga.d.ts +7 -33
- package/es/contract/ga.mjs +20 -112
- package/es/contract/ga.mjs.map +1 -1
- package/es/index.d.ts +9 -6
- package/es/index.mjs +8 -6
- package/es/index.mjs.map +1 -1
- package/es/oracle.d.ts +5 -5
- package/es/oracle.mjs +33 -39
- package/es/oracle.mjs.map +1 -1
- package/es/spend.d.ts +3 -3
- package/es/spend.mjs +17 -20
- package/es/spend.mjs.map +1 -1
- package/es/tx/builder/constants.d.ts +2 -1
- package/es/tx/builder/constants.mjs +12 -12
- package/es/tx/builder/constants.mjs.map +1 -1
- package/es/tx/builder/field-types/address.d.ts +15 -0
- package/es/tx/builder/field-types/address.mjs +42 -0
- package/es/tx/builder/field-types/address.mjs.map +1 -0
- package/es/tx/builder/field-types/addresses.d.ts +6 -0
- package/es/tx/builder/field-types/addresses.mjs +13 -0
- package/es/tx/builder/field-types/addresses.mjs.map +1 -0
- package/es/tx/builder/field-types/coin-amount.d.ts +1 -2
- package/es/tx/builder/field-types/coin-amount.mjs +4 -12
- package/es/tx/builder/field-types/coin-amount.mjs.map +1 -1
- package/es/tx/builder/field-types/deposit.d.ts +0 -1
- package/es/tx/builder/field-types/deposit.mjs +2 -4
- package/es/tx/builder/field-types/deposit.mjs.map +1 -1
- package/es/tx/builder/field-types/enumeration.d.ts +5 -0
- package/es/tx/builder/field-types/enumeration.mjs +21 -0
- package/es/tx/builder/field-types/enumeration.mjs.map +1 -0
- package/es/tx/builder/field-types/fee.d.ts +1 -9
- package/es/tx/builder/field-types/fee.mjs +9 -25
- package/es/tx/builder/field-types/fee.mjs.map +1 -1
- package/es/tx/builder/field-types/field.mjs +0 -2
- package/es/tx/builder/field-types/field.mjs.map +1 -1
- package/es/tx/builder/field-types/gas-limit.mjs +4 -9
- package/es/tx/builder/field-types/gas-limit.mjs.map +1 -1
- package/es/tx/builder/field-types/gas-price.d.ts +1 -2
- package/es/tx/builder/field-types/gas-price.mjs +3 -7
- package/es/tx/builder/field-types/gas-price.mjs.map +1 -1
- package/es/tx/builder/field-types/index.d.ts +23 -11
- package/es/tx/builder/field-types/index.mjs +10 -3
- package/es/tx/builder/field-types/index.mjs.map +1 -1
- package/es/tx/builder/field-types/name-fee.d.ts +0 -1
- package/es/tx/builder/field-types/name-fee.mjs +3 -5
- package/es/tx/builder/field-types/name-fee.mjs.map +1 -1
- package/es/tx/builder/field-types/name-id.d.ts +1 -4
- package/es/tx/builder/field-types/name-id.mjs +4 -10
- package/es/tx/builder/field-types/name-id.mjs.map +1 -1
- package/es/tx/builder/field-types/name.mjs +0 -2
- package/es/tx/builder/field-types/name.mjs.map +1 -1
- package/es/tx/builder/field-types/pointers.d.ts +23 -0
- package/es/tx/builder/field-types/pointers.mjs +36 -0
- package/es/tx/builder/field-types/pointers.mjs.map +1 -0
- package/es/tx/builder/field-types/short-u-int.mjs +0 -2
- package/es/tx/builder/field-types/short-u-int.mjs.map +1 -1
- package/es/tx/builder/field-types/u-int.d.ts +1 -1
- package/es/tx/builder/field-types/u-int.mjs +3 -4
- package/es/tx/builder/field-types/u-int.mjs.map +1 -1
- package/es/tx/builder/helpers.d.ts +2 -32
- package/es/tx/builder/helpers.mjs +19 -71
- package/es/tx/builder/helpers.mjs.map +1 -1
- package/es/tx/builder/index.d.ts +1 -21
- package/es/tx/builder/index.mjs +29 -148
- package/es/tx/builder/index.mjs.map +1 -1
- package/es/tx/builder/schema.d.ts +336 -176
- package/es/tx/builder/schema.mjs +71 -78
- package/es/tx/builder/schema.mjs.map +1 -1
- package/es/tx/index.d.ts +3 -33
- package/es/tx/index.mjs +26 -43
- package/es/tx/index.mjs.map +1 -1
- package/es/tx/validator.d.ts +2 -2
- package/es/tx/validator.mjs +86 -59
- package/es/tx/validator.mjs.map +1 -1
- package/es/typings/{@aeternity__argon2-browser → @aeternity__aepp-calldata}/index.d.mjs +0 -0
- package/es/typings/@aeternity__aepp-calldata/index.d.mjs.map +1 -0
- package/es/utils/amount-formatter.mjs +4 -10
- package/es/utils/amount-formatter.mjs.map +1 -1
- package/es/utils/autorest.d.ts +1 -0
- package/es/utils/autorest.mjs +17 -19
- package/es/utils/autorest.mjs.map +1 -1
- package/es/utils/bignumber.mjs +4 -7
- package/es/utils/bignumber.mjs.map +1 -1
- package/es/utils/bytes.d.ts +0 -17
- package/es/utils/bytes.mjs +6 -35
- package/es/utils/bytes.mjs.map +1 -1
- package/es/utils/crypto.d.ts +15 -8
- package/es/utils/crypto.mjs +40 -40
- package/es/utils/crypto.mjs.map +1 -1
- package/es/utils/encoder-types.d.ts +28 -28
- package/es/utils/encoder-types.mjs +0 -1
- package/es/utils/encoder-types.mjs.map +1 -1
- package/es/utils/encoder.d.ts +0 -1
- package/es/utils/encoder.mjs +7 -15
- package/es/utils/encoder.mjs.map +1 -1
- package/es/utils/errors.d.ts +12 -6
- package/es/utils/errors.mjs +87 -163
- package/es/utils/errors.mjs.map +1 -1
- package/es/utils/hd-wallet.d.ts +27 -19
- package/es/utils/hd-wallet.mjs +42 -26
- package/es/utils/hd-wallet.mjs.map +1 -1
- package/es/utils/json-big.mjs +0 -8
- package/es/utils/json-big.mjs.map +1 -1
- package/es/utils/keystore.d.ts +2 -0
- package/es/utils/keystore.mjs +37 -36
- package/es/utils/keystore.mjs.map +1 -1
- package/es/utils/mptree.d.ts +1 -1
- package/es/utils/mptree.mjs +4 -26
- package/es/utils/mptree.mjs.map +1 -1
- package/es/utils/other.d.ts +3 -1
- package/es/utils/other.mjs +11 -7
- package/es/utils/other.mjs.map +1 -1
- package/es/utils/semver-satisfies.mjs +0 -3
- package/es/utils/semver-satisfies.mjs.map +1 -1
- package/es/utils/string.d.ts +0 -12
- package/es/utils/string.mjs +1 -21
- package/es/utils/string.mjs.map +1 -1
- package/package.json +87 -48
- package/src/AeSdk.ts +15 -11
- package/src/AeSdkAepp.ts +9 -7
- package/src/AeSdkBase.ts +28 -202
- package/src/AeSdkMethods.ts +170 -0
- package/src/AeSdkWallet.ts +16 -47
- package/src/Node.ts +11 -15
- package/src/account/Base.ts +29 -75
- package/src/account/Generalized.ts +98 -0
- package/src/account/Ledger.ts +131 -0
- package/src/account/LedgerFactory.ts +86 -0
- package/src/account/Memory.ts +46 -60
- package/src/account/Rpc.ts +17 -26
- package/src/aens.ts +10 -9
- package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +5 -4
- package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +3 -3
- package/src/aepp-wallet-communication/rpc/RpcClient.ts +2 -2
- package/src/aepp-wallet-communication/rpc/types.ts +11 -1
- package/src/aepp-wallet-communication/schema.ts +18 -18
- package/src/apis/compiler/code-model-v4.yaml +681 -888
- package/src/apis/compiler/compiler.ts +113 -154
- package/src/apis/compiler/models/index.ts +80 -140
- package/src/apis/compiler/models/mappers.ts +165 -183
- package/src/apis/compiler/models/parameters.ts +6 -12
- package/src/chain.ts +6 -3
- package/src/channel/Base.ts +327 -0
- package/src/channel/Contract.ts +487 -0
- package/src/channel/Spend.ts +403 -0
- package/src/channel/handlers.ts +154 -573
- package/src/channel/internal.ts +113 -142
- package/src/contract/{Compiler.ts → CompilerHttp.ts} +5 -5
- package/src/contract/Contract.ts +620 -0
- package/src/contract/ga.ts +18 -104
- package/src/index.ts +9 -8
- package/src/oracle.ts +7 -7
- package/src/spend.ts +5 -13
- package/src/tx/builder/constants.ts +1 -0
- package/src/tx/builder/field-types/address.ts +52 -0
- package/src/tx/builder/field-types/addresses.ts +18 -0
- package/src/tx/builder/field-types/coin-amount.ts +2 -8
- package/src/tx/builder/field-types/enumeration.ts +21 -0
- package/src/tx/builder/field-types/fee.ts +1 -3
- package/src/tx/builder/field-types/gas-limit.ts +2 -2
- package/src/tx/builder/field-types/gas-price.ts +0 -2
- package/src/tx/builder/field-types/index.ts +16 -6
- package/src/tx/builder/field-types/name-fee.ts +1 -1
- package/src/tx/builder/field-types/name-id.ts +7 -10
- package/src/tx/builder/field-types/pointers.ts +41 -0
- package/src/tx/builder/field-types/u-int.ts +3 -2
- package/src/tx/builder/helpers.ts +10 -60
- package/src/tx/builder/index.ts +6 -65
- package/src/tx/builder/schema.ts +89 -100
- package/src/tx/index.ts +19 -15
- package/src/tx/validator.ts +36 -18
- package/src/typings/@aeternity__aepp-calldata/index.d.ts +20 -0
- package/src/utils/autorest.ts +16 -1
- package/src/utils/bytes.ts +5 -33
- package/src/utils/crypto.ts +23 -16
- package/src/utils/encoder.ts +0 -1
- package/src/utils/errors.ts +18 -12
- package/src/utils/hd-wallet.ts +30 -9
- package/src/utils/keystore.ts +24 -21
- package/src/utils/other.ts +16 -1
- package/src/utils/string.ts +0 -20
- package/types-legacy/ts4.2/AeSdk.d.ts +41 -0
- package/types-legacy/ts4.2/AeSdkAepp.d.ts +71 -0
- package/types-legacy/ts4.2/AeSdkBase.d.ts +91 -0
- package/types-legacy/ts4.2/AeSdkMethods.d.ts +141 -0
- package/types-legacy/ts4.2/AeSdkWallet.d.ts +90 -0
- package/types-legacy/ts4.2/Node.d.ts +78 -0
- package/types-legacy/ts4.2/account/Base.d.ts +52 -0
- package/types-legacy/ts4.2/account/Generalized.d.ts +16 -0
- package/types-legacy/ts4.2/account/Ledger.d.ts +28 -0
- package/types-legacy/ts4.2/account/LedgerFactory.d.ts +39 -0
- package/types-legacy/ts4.2/account/Memory.d.ts +22 -0
- package/types-legacy/ts4.2/account/Rpc.d.ts +25 -0
- package/types-legacy/ts4.2/aens.d.ts +222 -0
- package/types-legacy/ts4.2/aepp-wallet-communication/connection/Browser.d.ts +33 -0
- package/types-legacy/ts4.2/aepp-wallet-communication/connection/BrowserRuntime.d.ts +18 -0
- package/types-legacy/ts4.2/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +36 -0
- package/types-legacy/ts4.2/aepp-wallet-communication/connection-proxy.d.ts +11 -0
- package/types-legacy/ts4.2/aepp-wallet-communication/rpc/RpcClient.d.ts +34 -0
- package/types-legacy/ts4.2/aepp-wallet-communication/rpc/types.d.ts +83 -0
- package/types-legacy/ts4.2/aepp-wallet-communication/schema.d.ts +133 -0
- package/types-legacy/ts4.2/aepp-wallet-communication/wallet-detector.d.ts +25 -0
- package/types-legacy/ts4.2/apis/compiler/compiler.d.ts +86 -0
- package/types-legacy/ts4.2/apis/compiler/index.d.ts +2 -0
- package/types-legacy/ts4.2/apis/compiler/models/index.d.ts +195 -0
- package/types-legacy/ts4.2/apis/compiler/models/mappers.d.ts +23 -0
- package/types-legacy/ts4.2/apis/compiler/models/parameters.d.ts +12 -0
- package/types-legacy/ts4.2/apis/node/index.d.ts +2 -0
- package/types-legacy/ts4.2/apis/node/models/index.d.ts +1065 -0
- package/types-legacy/ts4.2/apis/node/models/mappers.d.ts +95 -0
- package/types-legacy/ts4.2/apis/node/models/parameters.d.ts +17 -0
- package/types-legacy/ts4.2/apis/node/node.d.ts +215 -0
- package/types-legacy/ts4.2/chain.d.ts +248 -0
- package/types-legacy/ts4.2/channel/Base.d.ts +194 -0
- package/types-legacy/ts4.2/channel/Contract.d.ts +247 -0
- package/types-legacy/ts4.2/channel/Spend.d.ts +217 -0
- package/types-legacy/ts4.2/channel/handlers.d.ts +21 -0
- package/types-legacy/ts4.2/channel/internal.d.ts +107 -0
- package/types-legacy/ts4.2/contract/CompilerHttp.d.ts +18 -0
- package/types-legacy/ts4.2/contract/Contract.d.ts +237 -0
- package/types-legacy/ts4.2/contract/ga.d.ts +43 -0
- package/types-legacy/ts4.2/globals.d.ts +16 -0
- package/types-legacy/ts4.2/index.d.ts +39 -0
- package/types-legacy/ts4.2/oracle.d.ts +161 -0
- package/types-legacy/ts4.2/spend.d.ts +62 -0
- package/types-legacy/ts4.2/tx/builder/constants.d.ts +71 -0
- package/types-legacy/ts4.2/tx/builder/field-types/address.d.ts +22 -0
- package/types-legacy/ts4.2/tx/builder/field-types/addresses.d.ts +6 -0
- package/types-legacy/ts4.2/tx/builder/field-types/coin-amount.d.ts +12 -0
- package/types-legacy/ts4.2/tx/builder/field-types/deposit.d.ts +14 -0
- package/types-legacy/ts4.2/tx/builder/field-types/enumeration.d.ts +5 -0
- package/types-legacy/ts4.2/tx/builder/field-types/fee.d.ts +17 -0
- package/types-legacy/ts4.2/tx/builder/field-types/field.d.ts +6 -0
- package/types-legacy/ts4.2/tx/builder/field-types/gas-limit.d.ts +12 -0
- package/types-legacy/ts4.2/tx/builder/field-types/gas-price.d.ts +7 -0
- package/types-legacy/ts4.2/tx/builder/field-types/index.d.ts +85 -0
- package/types-legacy/ts4.2/tx/builder/field-types/name-fee.d.ts +19 -0
- package/types-legacy/ts4.2/tx/builder/field-types/name-id.d.ts +11 -0
- package/types-legacy/ts4.2/tx/builder/field-types/name.d.ts +13 -0
- package/types-legacy/ts4.2/tx/builder/field-types/pointers.d.ts +26 -0
- package/types-legacy/ts4.2/tx/builder/field-types/short-u-int.d.ts +6 -0
- package/types-legacy/ts4.2/tx/builder/field-types/u-int.d.ts +8 -0
- package/types-legacy/ts4.2/tx/builder/helpers.d.ts +112 -0
- package/types-legacy/ts4.2/tx/builder/index.d.ts +68 -0
- package/types-legacy/ts4.2/tx/builder/schema.d.ts +2963 -0
- package/types-legacy/ts4.2/tx/index.d.ts +34 -0
- package/types-legacy/ts4.2/tx/validator.d.ts +20 -0
- package/types-legacy/ts4.2/utils/amount-formatter.d.ts +42 -0
- package/types-legacy/ts4.2/utils/autorest.d.ts +7 -0
- package/types-legacy/ts4.2/utils/bignumber.d.ts +13 -0
- package/types-legacy/ts4.2/utils/bytes.d.ts +9 -0
- package/types-legacy/ts4.2/utils/crypto.d.ts +95 -0
- package/types-legacy/ts4.2/utils/encoder-types.d.ts +61 -0
- package/types-legacy/ts4.2/utils/encoder.d.ts +24 -0
- package/types-legacy/ts4.2/utils/errors.d.ts +480 -0
- package/types-legacy/ts4.2/utils/hd-wallet.d.ts +65 -0
- package/types-legacy/ts4.2/utils/json-big.d.ts +5 -0
- package/types-legacy/ts4.2/utils/keystore.d.ts +53 -0
- package/types-legacy/ts4.2/utils/mptree.d.ts +32 -0
- package/types-legacy/ts4.2/utils/other.d.ts +31 -0
- package/types-legacy/ts4.2/utils/semver-satisfies.d.ts +1 -0
- package/types-legacy/ts4.2/utils/string.d.ts +12 -0
- package/types-legacy/ts4.5/AeSdk.d.ts +41 -0
- package/types-legacy/ts4.5/AeSdkAepp.d.ts +71 -0
- package/types-legacy/ts4.5/AeSdkBase.d.ts +91 -0
- package/types-legacy/ts4.5/AeSdkMethods.d.ts +141 -0
- package/types-legacy/ts4.5/AeSdkWallet.d.ts +90 -0
- package/types-legacy/ts4.5/Node.d.ts +78 -0
- package/types-legacy/ts4.5/account/Base.d.ts +52 -0
- package/types-legacy/ts4.5/account/Generalized.d.ts +16 -0
- package/types-legacy/ts4.5/account/Ledger.d.ts +28 -0
- package/types-legacy/ts4.5/account/LedgerFactory.d.ts +39 -0
- package/types-legacy/ts4.5/account/Memory.d.ts +22 -0
- package/types-legacy/ts4.5/account/Rpc.d.ts +25 -0
- package/types-legacy/ts4.5/aens.d.ts +222 -0
- package/types-legacy/ts4.5/aepp-wallet-communication/connection/Browser.d.ts +33 -0
- package/types-legacy/ts4.5/aepp-wallet-communication/connection/BrowserRuntime.d.ts +18 -0
- package/types-legacy/ts4.5/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +36 -0
- package/types-legacy/ts4.5/aepp-wallet-communication/connection-proxy.d.ts +11 -0
- package/types-legacy/ts4.5/aepp-wallet-communication/rpc/RpcClient.d.ts +34 -0
- package/types-legacy/ts4.5/aepp-wallet-communication/rpc/types.d.ts +83 -0
- package/types-legacy/ts4.5/aepp-wallet-communication/schema.d.ts +133 -0
- package/types-legacy/ts4.5/aepp-wallet-communication/wallet-detector.d.ts +25 -0
- package/types-legacy/ts4.5/apis/compiler/compiler.d.ts +86 -0
- package/types-legacy/ts4.5/apis/compiler/index.d.ts +2 -0
- package/types-legacy/ts4.5/apis/compiler/models/index.d.ts +195 -0
- package/types-legacy/ts4.5/apis/compiler/models/mappers.d.ts +23 -0
- package/types-legacy/ts4.5/apis/compiler/models/parameters.d.ts +12 -0
- package/types-legacy/ts4.5/apis/node/index.d.ts +2 -0
- package/types-legacy/ts4.5/apis/node/models/index.d.ts +1065 -0
- package/types-legacy/ts4.5/apis/node/models/mappers.d.ts +95 -0
- package/types-legacy/ts4.5/apis/node/models/parameters.d.ts +17 -0
- package/types-legacy/ts4.5/apis/node/node.d.ts +215 -0
- package/types-legacy/ts4.5/chain.d.ts +248 -0
- package/types-legacy/ts4.5/channel/Base.d.ts +194 -0
- package/types-legacy/ts4.5/channel/Contract.d.ts +247 -0
- package/types-legacy/ts4.5/channel/Spend.d.ts +217 -0
- package/types-legacy/ts4.5/channel/handlers.d.ts +21 -0
- package/types-legacy/ts4.5/channel/internal.d.ts +107 -0
- package/types-legacy/ts4.5/contract/CompilerHttp.d.ts +18 -0
- package/types-legacy/ts4.5/contract/Contract.d.ts +237 -0
- package/types-legacy/ts4.5/contract/ga.d.ts +43 -0
- package/types-legacy/ts4.5/index.d.ts +38 -0
- package/types-legacy/ts4.5/oracle.d.ts +161 -0
- package/types-legacy/ts4.5/spend.d.ts +62 -0
- package/types-legacy/ts4.5/tx/builder/constants.d.ts +71 -0
- package/types-legacy/ts4.5/tx/builder/field-types/address.d.ts +22 -0
- package/types-legacy/ts4.5/tx/builder/field-types/addresses.d.ts +6 -0
- package/types-legacy/ts4.5/tx/builder/field-types/coin-amount.d.ts +12 -0
- package/types-legacy/ts4.5/tx/builder/field-types/deposit.d.ts +14 -0
- package/types-legacy/ts4.5/tx/builder/field-types/enumeration.d.ts +5 -0
- package/types-legacy/ts4.5/tx/builder/field-types/fee.d.ts +17 -0
- package/types-legacy/ts4.5/tx/builder/field-types/field.d.ts +6 -0
- package/types-legacy/ts4.5/tx/builder/field-types/gas-limit.d.ts +12 -0
- package/types-legacy/ts4.5/tx/builder/field-types/gas-price.d.ts +7 -0
- package/types-legacy/ts4.5/tx/builder/field-types/index.d.ts +85 -0
- package/types-legacy/ts4.5/tx/builder/field-types/name-fee.d.ts +19 -0
- package/types-legacy/ts4.5/tx/builder/field-types/name-id.d.ts +11 -0
- package/types-legacy/ts4.5/tx/builder/field-types/name.d.ts +13 -0
- package/types-legacy/ts4.5/tx/builder/field-types/pointers.d.ts +26 -0
- package/types-legacy/ts4.5/tx/builder/field-types/short-u-int.d.ts +6 -0
- package/types-legacy/ts4.5/tx/builder/field-types/u-int.d.ts +8 -0
- package/types-legacy/ts4.5/tx/builder/helpers.d.ts +112 -0
- package/types-legacy/ts4.5/tx/builder/index.d.ts +68 -0
- package/types-legacy/ts4.5/tx/builder/schema.d.ts +2963 -0
- package/types-legacy/ts4.5/tx/index.d.ts +34 -0
- package/types-legacy/ts4.5/tx/validator.d.ts +20 -0
- package/types-legacy/ts4.5/utils/amount-formatter.d.ts +42 -0
- package/types-legacy/ts4.5/utils/autorest.d.ts +7 -0
- package/types-legacy/ts4.5/utils/bignumber.d.ts +13 -0
- package/types-legacy/ts4.5/utils/bytes.d.ts +9 -0
- package/types-legacy/ts4.5/utils/crypto.d.ts +95 -0
- package/types-legacy/ts4.5/utils/encoder-types.d.ts +61 -0
- package/types-legacy/ts4.5/utils/encoder.d.ts +24 -0
- package/types-legacy/ts4.5/utils/errors.d.ts +480 -0
- package/types-legacy/ts4.5/utils/hd-wallet.d.ts +65 -0
- package/types-legacy/ts4.5/utils/json-big.d.ts +5 -0
- package/types-legacy/ts4.5/utils/keystore.d.ts +53 -0
- package/types-legacy/ts4.5/utils/mptree.d.ts +32 -0
- package/types-legacy/ts4.5/utils/other.d.ts +31 -0
- package/types-legacy/ts4.5/utils/semver-satisfies.d.ts +1 -0
- package/types-legacy/ts4.5/utils/string.d.ts +12 -0
- package/es/channel/index.d.ts +0 -625
- package/es/channel/index.mjs +0 -975
- package/es/channel/index.mjs.map +0 -1
- package/es/contract/Compiler.mjs.map +0 -1
- package/es/contract/aci.d.ts +0 -127
- package/es/contract/aci.mjs +0 -509
- package/es/contract/aci.mjs.map +0 -1
- package/es/contract/methods.d.ts +0 -71
- package/es/contract/methods.mjs +0 -104
- package/es/contract/methods.mjs.map +0 -1
- package/es/deprecated/index.d.ts +0 -143
- package/es/deprecated/index.mjs +0 -162
- package/es/deprecated/index.mjs.map +0 -1
- package/es/deprecated/methods.d.ts +0 -18
- package/es/deprecated/methods.mjs +0 -26
- package/es/deprecated/methods.mjs.map +0 -1
- package/es/tx/builder/address.d.ts +0 -25
- package/es/tx/builder/address.mjs +0 -45
- package/es/tx/builder/address.mjs.map +0 -1
- package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +0 -1
- package/src/channel/index.ts +0 -1025
- package/src/contract/aci.ts +0 -538
- package/src/contract/methods.ts +0 -123
- package/src/deprecated/index.ts +0 -172
- package/src/deprecated/methods.ts +0 -25
- package/src/tx/builder/address.ts +0 -50
- package/src/typings/@aeternity__argon2-browser/index.d.ts +0 -3
package/src/tx/validator.ts
CHANGED
|
@@ -11,17 +11,11 @@ import {
|
|
|
11
11
|
import { Tag } from './builder/constants';
|
|
12
12
|
import { TxUnpacked, unpackTx } from './builder';
|
|
13
13
|
import { UnsupportedProtocolError } from '../utils/errors';
|
|
14
|
-
import { concatBuffers, isKeyOfObject } from '../utils/other';
|
|
15
|
-
import {
|
|
16
|
-
|
|
17
|
-
} from '../
|
|
18
|
-
import
|
|
19
|
-
|
|
20
|
-
interface Account {
|
|
21
|
-
balance: bigint;
|
|
22
|
-
id: Encoded.AccountAddress;
|
|
23
|
-
nonce: number;
|
|
24
|
-
}
|
|
14
|
+
import { concatBuffers, isAccountNotFoundError, isKeyOfObject } from '../utils/other';
|
|
15
|
+
import { encode, Encoded, Encoding } from '../utils/encoder';
|
|
16
|
+
import Node, { TransformNodeType } from '../Node';
|
|
17
|
+
import { Account } from '../apis/node';
|
|
18
|
+
import { genAggressiveCacheGetResponsesPolicy } from '../utils/autorest';
|
|
25
19
|
|
|
26
20
|
export interface ValidatorResult {
|
|
27
21
|
message: string;
|
|
@@ -46,7 +40,8 @@ type Validator = (
|
|
|
46
40
|
contractId?: Encoded.ContractAddress;
|
|
47
41
|
},
|
|
48
42
|
options: {
|
|
49
|
-
|
|
43
|
+
// TODO: remove after fixing node types
|
|
44
|
+
account?: TransformNodeType<Account> & { id: Encoded.AccountAddress };
|
|
50
45
|
nodeNetworkId: string;
|
|
51
46
|
parentTxTypes: Tag[];
|
|
52
47
|
node: Node;
|
|
@@ -74,16 +69,25 @@ const getSenderAddress = (
|
|
|
74
69
|
* to make sure it can be posted it to the chain
|
|
75
70
|
* @category transaction builder
|
|
76
71
|
* @param transaction - Base64Check-encoded transaction
|
|
77
|
-
* @param
|
|
72
|
+
* @param nodeNotCached - Node to validate transaction against
|
|
78
73
|
* @param parentTxTypes - Types of parent transactions
|
|
79
74
|
* @returns Array with verification errors
|
|
80
75
|
* @example const errors = await verifyTransaction(transaction, node)
|
|
81
76
|
*/
|
|
82
77
|
export default async function verifyTransaction(
|
|
83
78
|
transaction: Encoded.Transaction | Encoded.Poi,
|
|
84
|
-
|
|
79
|
+
nodeNotCached: Node,
|
|
85
80
|
parentTxTypes: Tag[] = [],
|
|
86
81
|
): Promise<ValidatorResult[]> {
|
|
82
|
+
let node = nodeNotCached;
|
|
83
|
+
if (
|
|
84
|
+
!node.pipeline.getOrderedPolicies()
|
|
85
|
+
.some(({ name }) => name === 'aggressive-cache-get-responses')
|
|
86
|
+
) {
|
|
87
|
+
node = new Node(nodeNotCached.$host, { ignoreVersion: true });
|
|
88
|
+
node.pipeline.addPolicy(genAggressiveCacheGetResponsesPolicy());
|
|
89
|
+
}
|
|
90
|
+
|
|
87
91
|
const { tx, txType } = unpackTx<Tag.SignedTx>(transaction);
|
|
88
92
|
const address = getSenderAddress(tx)
|
|
89
93
|
?? (txType === Tag.SignedTx ? getSenderAddress(tx.encodedTx.tx) : undefined);
|
|
@@ -91,7 +95,10 @@ export default async function verifyTransaction(
|
|
|
91
95
|
address == null
|
|
92
96
|
? undefined
|
|
93
97
|
: node.getAccountByPubkey(address)
|
|
94
|
-
.catch(() =>
|
|
98
|
+
.catch((error) => {
|
|
99
|
+
if (!isAccountNotFoundError(error)) throw error;
|
|
100
|
+
return { id: address, balance: 0n, nonce: 0 };
|
|
101
|
+
})
|
|
95
102
|
// TODO: remove after fixing https://github.com/aeternity/aepp-sdk-js/issues/1537
|
|
96
103
|
.then((acc) => ({ ...acc, id: acc.id as Encoded.AccountAddress })),
|
|
97
104
|
node.getCurrentKeyBlockHeight(),
|
|
@@ -119,9 +126,8 @@ validators.push(
|
|
|
119
126
|
].join('-'));
|
|
120
127
|
const txWithNetworkId = concatBuffers([prefix, encodedTx.rlpEncoded]);
|
|
121
128
|
const txHashWithNetworkId = concatBuffers([prefix, hash(encodedTx.rlpEncoded)]);
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|| verify(txHashWithNetworkId, signatures[0], decodedPub)) return [];
|
|
129
|
+
if (verify(txWithNetworkId, signatures[0], account.id)
|
|
130
|
+
|| verify(txHashWithNetworkId, signatures[0], account.id)) return [];
|
|
125
131
|
return [{
|
|
126
132
|
message: 'Signature cannot be verified, please ensure that you transaction have'
|
|
127
133
|
+ ' the correct prefix and the correct private key for the sender address',
|
|
@@ -163,6 +169,18 @@ validators.push(
|
|
|
163
169
|
checkedKeys: ['amount', 'fee', 'nameFee'],
|
|
164
170
|
}];
|
|
165
171
|
},
|
|
172
|
+
({ signatures }, { account, txType }) => {
|
|
173
|
+
if (account == null) return [];
|
|
174
|
+
let message;
|
|
175
|
+
if (txType === Tag.SignedTx && account.kind === 'generalized' && signatures.length !== 0) {
|
|
176
|
+
message = 'Generalized account can\'t be used to generate SignedTx with signatures';
|
|
177
|
+
}
|
|
178
|
+
if (txType === Tag.GaMetaTx && account.kind === 'basic') {
|
|
179
|
+
message = 'Basic account can\'t be used to generate GaMetaTx';
|
|
180
|
+
}
|
|
181
|
+
if (message == null) return [];
|
|
182
|
+
return [{ message, key: 'InvalidAccountType', checkedKeys: ['tag'] }];
|
|
183
|
+
},
|
|
166
184
|
({ nonce }, { account, parentTxTypes }) => {
|
|
167
185
|
if (nonce == null || account == null || parentTxTypes.includes(Tag.GaMetaTx)) return [];
|
|
168
186
|
nonce = +nonce;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
declare module '@aeternity/aepp-calldata' {
|
|
2
|
+
// eslint-disable-next-line import/prefer-default-export
|
|
3
|
+
export class Encoder {
|
|
4
|
+
constructor(aci: object);
|
|
5
|
+
|
|
6
|
+
encode(contract: string, funName: string, args: any[]): `cb_${string}`;
|
|
7
|
+
|
|
8
|
+
decode(contract: string, funName: string, data: `cb_${string}`): any;
|
|
9
|
+
|
|
10
|
+
decodeString(data: `cb_${string}`): Uint8Array;
|
|
11
|
+
|
|
12
|
+
decodeFateString(data: `cb_${string}`): string;
|
|
13
|
+
|
|
14
|
+
decodeEvent(
|
|
15
|
+
contract: string,
|
|
16
|
+
encodedData: `cb_${string}`,
|
|
17
|
+
topics: BigInt[],
|
|
18
|
+
): { [key: string]: any[] };
|
|
19
|
+
}
|
|
20
|
+
}
|
package/src/utils/autorest.ts
CHANGED
|
@@ -31,7 +31,7 @@ export const genCombineGetRequestsPolicy = (): AdditionalPolicyConfig => {
|
|
|
31
31
|
|
|
32
32
|
return {
|
|
33
33
|
policy: {
|
|
34
|
-
name: 'combine-requests',
|
|
34
|
+
name: 'combine-get-requests',
|
|
35
35
|
async sendRequest(request, next) {
|
|
36
36
|
if (request.method !== 'GET') return next(request);
|
|
37
37
|
const key = JSON.stringify([request.url, request.body]);
|
|
@@ -48,6 +48,21 @@ export const genCombineGetRequestsPolicy = (): AdditionalPolicyConfig => {
|
|
|
48
48
|
};
|
|
49
49
|
};
|
|
50
50
|
|
|
51
|
+
export const genAggressiveCacheGetResponsesPolicy = (): PipelinePolicy => {
|
|
52
|
+
const getRequests = new Map<string, Promise<PipelineResponse>>();
|
|
53
|
+
|
|
54
|
+
return {
|
|
55
|
+
name: 'aggressive-cache-get-responses',
|
|
56
|
+
async sendRequest(request, next) {
|
|
57
|
+
if (request.method !== 'GET') return next(request);
|
|
58
|
+
const key = JSON.stringify([request.url, request.body]);
|
|
59
|
+
const response = getRequests.get(key) ?? next(request);
|
|
60
|
+
getRequests.set(key, response);
|
|
61
|
+
return response;
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
|
|
51
66
|
export const genErrorFormatterPolicy = (
|
|
52
67
|
getMessage: (b: any) => string,
|
|
53
68
|
): AdditionalPolicyConfig => ({
|
package/src/utils/bytes.ts
CHANGED
|
@@ -16,19 +16,6 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import BigNumber from 'bignumber.js';
|
|
18
18
|
import { NoSerializerFoundError, TypeError } from './errors';
|
|
19
|
-
import { isBase64, isHex } from './string';
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Convert bignumber to byte array
|
|
23
|
-
* @param x - bignumber instance
|
|
24
|
-
* @returns Buffer
|
|
25
|
-
*/
|
|
26
|
-
export function bigNumberToByteArray(x: BigNumber): Buffer {
|
|
27
|
-
if (!x.isInteger()) throw new TypeError(`Unexpected not integer value: ${x.toFixed()}`);
|
|
28
|
-
let hexString = x.toString(16);
|
|
29
|
-
if (hexString.length % 2 === 1) hexString = `0${hexString}`;
|
|
30
|
-
return Buffer.from(hexString, 'hex');
|
|
31
|
-
}
|
|
32
19
|
|
|
33
20
|
/**
|
|
34
21
|
* Convert string, number, or BigNumber to byte array
|
|
@@ -36,6 +23,7 @@ export function bigNumberToByteArray(x: BigNumber): Buffer {
|
|
|
36
23
|
* @param big - enables force conversion to BigNumber
|
|
37
24
|
* @returns Buffer
|
|
38
25
|
*/
|
|
26
|
+
// eslint-disable-next-line import/prefer-default-export
|
|
39
27
|
export function toBytes(val?: null | string | number | BigNumber, big = false): Buffer {
|
|
40
28
|
// Encode a value to bytes.
|
|
41
29
|
// If the value is an int it will be encoded as bytes big endian
|
|
@@ -44,29 +32,13 @@ export function toBytes(val?: null | string | number | BigNumber, big = false):
|
|
|
44
32
|
if (val === undefined || val === null) return Buffer.from([]);
|
|
45
33
|
if (Number.isInteger(val) || BigNumber.isBigNumber(val) || big) {
|
|
46
34
|
if (!BigNumber.isBigNumber(val)) val = new BigNumber(val);
|
|
47
|
-
|
|
35
|
+
if (!val.isInteger()) throw new TypeError(`Unexpected not integer value: ${val.toFixed()}`);
|
|
36
|
+
let hexString = val.toString(16);
|
|
37
|
+
if (hexString.length % 2 === 1) hexString = `0${hexString}`;
|
|
38
|
+
return Buffer.from(hexString, 'hex');
|
|
48
39
|
}
|
|
49
40
|
if (typeof val === 'string') {
|
|
50
41
|
return Buffer.from(val);
|
|
51
42
|
}
|
|
52
43
|
throw new NoSerializerFoundError();
|
|
53
44
|
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Convert a string to a Buffer. If encoding is not specified, hex-encoding
|
|
57
|
-
* will be used if the input is valid hex. If the input is valid base64 but
|
|
58
|
-
* not valid hex, base64 will be used. Otherwise, utf8 will be used.
|
|
59
|
-
* @param str - String to be converted.
|
|
60
|
-
* @param enc - Encoding of the input string.
|
|
61
|
-
* @returns Buffer containing the input data.
|
|
62
|
-
*/
|
|
63
|
-
export function str2buf(str: string, enc?: BufferEncoding): Buffer {
|
|
64
|
-
return Buffer.from(
|
|
65
|
-
str,
|
|
66
|
-
enc ?? (isHex(str) ? 'hex' : undefined) ?? (isBase64(str) ? 'base64' : undefined),
|
|
67
|
-
);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
export const bytesToHex = (b: Uint8Array): string => Buffer.from(b).toString('hex');
|
|
71
|
-
|
|
72
|
-
export const hexToBytes = (s: string): Uint8Array => Buffer.from(s, 'hex');
|
package/src/utils/crypto.ts
CHANGED
|
@@ -20,7 +20,6 @@ import nacl, { SignKeyPair } from 'tweetnacl';
|
|
|
20
20
|
import { blake2b } from 'blakejs/blake2b.js';
|
|
21
21
|
import { encode as varuintEncode } from 'varuint-bitcoin';
|
|
22
22
|
|
|
23
|
-
import { str2buf } from './bytes';
|
|
24
23
|
import { concatBuffers } from './other';
|
|
25
24
|
import {
|
|
26
25
|
decode, encode, Encoded, Encoding,
|
|
@@ -28,11 +27,11 @@ import {
|
|
|
28
27
|
|
|
29
28
|
/**
|
|
30
29
|
* Generate address from secret key
|
|
31
|
-
* @param secret - Private key
|
|
30
|
+
* @param secret - Private key as hex string
|
|
32
31
|
* @returns Public key encoded as address
|
|
33
32
|
*/
|
|
34
33
|
export function getAddressFromPriv(secret: string | Uint8Array): Encoded.AccountAddress {
|
|
35
|
-
const secretBuffer = typeof secret === 'string' ?
|
|
34
|
+
const secretBuffer = typeof secret === 'string' ? Buffer.from(secret, 'hex') : secret;
|
|
36
35
|
const keys = nacl.sign.keyPair.fromSecretKey(secretBuffer);
|
|
37
36
|
return encode(keys.publicKey, Encoding.AccountAddress);
|
|
38
37
|
}
|
|
@@ -60,7 +59,8 @@ export function isAddressValid(
|
|
|
60
59
|
* @returns random salt
|
|
61
60
|
*/
|
|
62
61
|
export function genSalt(): number {
|
|
63
|
-
|
|
62
|
+
const [random] = new BigUint64Array(nacl.randomBytes(8).buffer);
|
|
63
|
+
return Number(random % BigInt(Number.MAX_SAFE_INTEGER));
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
/**
|
|
@@ -155,18 +155,17 @@ export function sign(data: string | Uint8Array, privateKey: string | Uint8Array)
|
|
|
155
155
|
|
|
156
156
|
/**
|
|
157
157
|
* Verify that signature was signed by public key
|
|
158
|
-
* @param data - Data
|
|
159
|
-
* @param signature - Signature
|
|
160
|
-
* @param
|
|
161
|
-
* @returns
|
|
158
|
+
* @param data - Data that was signed
|
|
159
|
+
* @param signature - Signature of data
|
|
160
|
+
* @param address - Address to verify against
|
|
161
|
+
* @returns is data was signed by address
|
|
162
162
|
*/
|
|
163
163
|
export function verify(
|
|
164
164
|
data: Uint8Array,
|
|
165
165
|
signature: Uint8Array,
|
|
166
|
-
|
|
166
|
+
address: Encoded.AccountAddress,
|
|
167
167
|
): boolean {
|
|
168
|
-
|
|
169
|
-
return nacl.sign.detached.verify(data, signature, publicKeyBuffer);
|
|
168
|
+
return nacl.sign.detached.verify(data, signature, decode(address));
|
|
170
169
|
}
|
|
171
170
|
|
|
172
171
|
export function messageToHash(message: string): Buffer {
|
|
@@ -179,12 +178,19 @@ export function signMessage(message: string, privateKey: string | Buffer): Uint8
|
|
|
179
178
|
return sign(messageToHash(message), privateKey);
|
|
180
179
|
}
|
|
181
180
|
|
|
181
|
+
/**
|
|
182
|
+
* Verify that message was signed by address
|
|
183
|
+
* @param message - Message that was signed
|
|
184
|
+
* @param signature - Signature of message
|
|
185
|
+
* @param address - Address to verify against
|
|
186
|
+
* @returns is data was signed by address
|
|
187
|
+
*/
|
|
182
188
|
export function verifyMessage(
|
|
183
|
-
|
|
189
|
+
message: string,
|
|
184
190
|
signature: Uint8Array,
|
|
185
|
-
|
|
191
|
+
address: Encoded.AccountAddress,
|
|
186
192
|
): boolean {
|
|
187
|
-
return verify(messageToHash(
|
|
193
|
+
return verify(messageToHash(message), signature, address);
|
|
188
194
|
}
|
|
189
195
|
|
|
190
196
|
/**
|
|
@@ -192,7 +198,7 @@ export function verifyMessage(
|
|
|
192
198
|
*
|
|
193
199
|
* Sign a message, and then verifying that signature
|
|
194
200
|
* @param privateKey - Private key to verify
|
|
195
|
-
* @param publicKey - Public key to verify
|
|
201
|
+
* @param publicKey - Public key to verify as hex string
|
|
196
202
|
* @returns Valid?
|
|
197
203
|
*/
|
|
198
204
|
export function isValidKeypair(
|
|
@@ -201,5 +207,6 @@ export function isValidKeypair(
|
|
|
201
207
|
): boolean {
|
|
202
208
|
const message = Buffer.from('TheMessage');
|
|
203
209
|
const signature = sign(message, privateKey);
|
|
204
|
-
|
|
210
|
+
const publicKeyBuffer = typeof publicKey === 'string' ? Buffer.from(publicKey, 'hex') : publicKey;
|
|
211
|
+
return verify(message, signature, encode(publicKeyBuffer, Encoding.AccountAddress));
|
|
205
212
|
}
|
package/src/utils/encoder.ts
CHANGED
|
@@ -18,7 +18,6 @@ export { Encoded, Encoding };
|
|
|
18
18
|
* Calculate SHA256 hash of `input`
|
|
19
19
|
* @param input - Data to hash
|
|
20
20
|
* @returns Hash
|
|
21
|
-
* @deprecated use `SubtleCrypto.digest` or `sha.js` package instead
|
|
22
21
|
*/
|
|
23
22
|
export function sha256hash(input: Uint8Array | string): Buffer {
|
|
24
23
|
return new Sha256().update(input).digest();
|
package/src/utils/errors.ts
CHANGED
|
@@ -265,16 +265,6 @@ export class UnexpectedTsError extends InternalError {
|
|
|
265
265
|
}
|
|
266
266
|
}
|
|
267
267
|
|
|
268
|
-
/**
|
|
269
|
-
* @category exception
|
|
270
|
-
*/
|
|
271
|
-
export class InvalidKeypairError extends AccountError {
|
|
272
|
-
constructor(message: string) {
|
|
273
|
-
super(message);
|
|
274
|
-
this.name = 'InvalidKeypairError';
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
|
|
278
268
|
/**
|
|
279
269
|
* @category exception
|
|
280
270
|
*/
|
|
@@ -405,6 +395,22 @@ export class UnexpectedChannelMessageError extends ChannelError {
|
|
|
405
395
|
}
|
|
406
396
|
}
|
|
407
397
|
|
|
398
|
+
/**
|
|
399
|
+
* @category exception
|
|
400
|
+
*/
|
|
401
|
+
export class ChannelIncomingMessageError extends ChannelError {
|
|
402
|
+
handlerError: BaseError;
|
|
403
|
+
|
|
404
|
+
incomingMessage: { [key: string]: any };
|
|
405
|
+
|
|
406
|
+
constructor(handlerError: BaseError, incomingMessage: { [key: string]: any }) {
|
|
407
|
+
super(handlerError.message);
|
|
408
|
+
this.handlerError = handlerError;
|
|
409
|
+
this.incomingMessage = incomingMessage;
|
|
410
|
+
this.name = 'ChannelIncomingMessageError';
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
|
|
408
414
|
/**
|
|
409
415
|
* @category exception
|
|
410
416
|
*/
|
|
@@ -550,8 +556,8 @@ export class MissingEventDefinitionError extends ContractError {
|
|
|
550
556
|
export class AmbiguousEventDefinitionError extends ContractError {
|
|
551
557
|
constructor(eventAddress: string, matchedEvents: Array<[string, string]>) {
|
|
552
558
|
super(
|
|
553
|
-
`Found multiple definitions of "${matchedEvents[0][1]}" event emitted by
|
|
554
|
-
+ ` in ${matchedEvents.map(([name]) => `"${name}"`).join(', ')} contracts`
|
|
559
|
+
`Found multiple definitions of "${matchedEvents[0][1]}" event with different types emitted by`
|
|
560
|
+
+ ` ${eventAddress} in ${matchedEvents.map(([name]) => `"${name}"`).join(', ')} contracts`
|
|
555
561
|
+ ' (use contractAddressToName option to specify contract name corresponding to address)',
|
|
556
562
|
);
|
|
557
563
|
this.name = 'AmbiguousEventDefinitionError';
|
package/src/utils/hd-wallet.ts
CHANGED
|
@@ -4,20 +4,18 @@ import { fromString } from 'bip32-path';
|
|
|
4
4
|
import aesjs from 'aes-js';
|
|
5
5
|
import { sha256hash, encode, Encoding } from './encoder';
|
|
6
6
|
import { CryptographyError } from './errors';
|
|
7
|
-
import { bytesToHex } from './bytes';
|
|
8
7
|
import { concatBuffers } from './other';
|
|
9
8
|
|
|
10
9
|
const Ecb = aesjs.ModeOfOperation.ecb;
|
|
11
10
|
|
|
12
|
-
// TODO:
|
|
11
|
+
// TODO: use mnemonic encryption instead of AES
|
|
13
12
|
/**
|
|
14
13
|
* Encrypt given data using `password`
|
|
15
14
|
* @param password - Password to encrypt with
|
|
16
15
|
* @param binaryData - Data to encrypt
|
|
17
16
|
* @returns Encrypted data
|
|
18
|
-
* @deprecated use 'sha.js' and 'aes-js' packages directly instead
|
|
19
17
|
*/
|
|
20
|
-
|
|
18
|
+
function encryptKey(password: string, binaryData: Uint8Array): Uint8Array {
|
|
21
19
|
const hashedPasswordBytes = sha256hash(password);
|
|
22
20
|
const aesEcb = new Ecb(hashedPasswordBytes);
|
|
23
21
|
return aesEcb.encrypt(binaryData);
|
|
@@ -28,9 +26,8 @@ export function encryptKey(password: string, binaryData: Uint8Array): Uint8Array
|
|
|
28
26
|
* @param password - Password to decrypt with
|
|
29
27
|
* @param encrypted - Data to decrypt
|
|
30
28
|
* @returns Decrypted data
|
|
31
|
-
* @deprecated use 'sha.js' and 'aes-js' packages directly instead
|
|
32
29
|
*/
|
|
33
|
-
|
|
30
|
+
function decryptKey(password: string, encrypted: Uint8Array): Uint8Array {
|
|
34
31
|
const encryptedBytes = Buffer.from(encrypted);
|
|
35
32
|
const hashedPasswordBytes = sha256hash(password);
|
|
36
33
|
const aesEcb = new Ecb(hashedPasswordBytes);
|
|
@@ -72,6 +69,9 @@ type Bip32PathT<MaxLen extends number, H extends 'H' | 'h' | '\''> = MaxLen exte
|
|
|
72
69
|
type Bip32Path<MaxLen extends number> =
|
|
73
70
|
'' | Bip32PathT<MaxLen, 'H'> | Bip32PathT<MaxLen, 'h'> | Bip32PathT<MaxLen, '\''>;
|
|
74
71
|
|
|
72
|
+
/**
|
|
73
|
+
* @category hd-wallet
|
|
74
|
+
*/
|
|
75
75
|
export function deriveChild({ secretKey, chainCode }: KeyTreeNode, index: number): KeyTreeNode {
|
|
76
76
|
if (index < HARDENED_OFFSET) {
|
|
77
77
|
throw new DerivationError(`Segment ${index} is not hardened`);
|
|
@@ -90,6 +90,9 @@ export function deriveChild({ secretKey, chainCode }: KeyTreeNode, index: number
|
|
|
90
90
|
};
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
+
/**
|
|
94
|
+
* @category hd-wallet
|
|
95
|
+
*/
|
|
93
96
|
export function derivePathFromKey(path: Bip32Path<5>, key: KeyTreeNode): KeyTreeNode {
|
|
94
97
|
const segments = path === '' ? [] : fromString(path).toPathArray();
|
|
95
98
|
segments.forEach((segment, i) => {
|
|
@@ -101,6 +104,9 @@ export function derivePathFromKey(path: Bip32Path<5>, key: KeyTreeNode): KeyTree
|
|
|
101
104
|
return segments.reduce((parentKey, segment) => deriveChild(parentKey, segment), key);
|
|
102
105
|
}
|
|
103
106
|
|
|
107
|
+
/**
|
|
108
|
+
* @category hd-wallet
|
|
109
|
+
*/
|
|
104
110
|
export function getMasterKeyFromSeed(seed: Uint8Array): KeyTreeNode {
|
|
105
111
|
const I = hmac(seed, ED25519_CURVE);
|
|
106
112
|
const IL = I.slice(0, 32);
|
|
@@ -111,6 +117,9 @@ export function getMasterKeyFromSeed(seed: Uint8Array): KeyTreeNode {
|
|
|
111
117
|
};
|
|
112
118
|
}
|
|
113
119
|
|
|
120
|
+
/**
|
|
121
|
+
* @category hd-wallet
|
|
122
|
+
*/
|
|
114
123
|
export function derivePathFromSeed(path: 'm' | `m/${Bip32Path<5>}`, seed: Uint8Array): KeyTreeNode {
|
|
115
124
|
if (!['m', 'm/'].includes(path.slice(0, 2))) {
|
|
116
125
|
throw new DerivationError('Root element is required');
|
|
@@ -122,23 +131,32 @@ export function derivePathFromSeed(path: 'm' | `m/${Bip32Path<5>}`, seed: Uint8A
|
|
|
122
131
|
function formatAccount(keys: nacl.SignKeyPair): Account {
|
|
123
132
|
const { secretKey, publicKey } = keys;
|
|
124
133
|
return {
|
|
125
|
-
secretKey:
|
|
134
|
+
secretKey: Buffer.from(secretKey).toString('hex'),
|
|
126
135
|
publicKey: encode(publicKey, Encoding.AccountAddress),
|
|
127
136
|
};
|
|
128
137
|
}
|
|
129
138
|
|
|
139
|
+
/**
|
|
140
|
+
* @category hd-wallet
|
|
141
|
+
*/
|
|
130
142
|
export function getKeyPair(secretKey: Uint8Array): nacl.SignKeyPair {
|
|
131
143
|
return nacl.sign.keyPair.fromSeed(secretKey);
|
|
132
144
|
}
|
|
133
145
|
|
|
146
|
+
/**
|
|
147
|
+
* @category hd-wallet
|
|
148
|
+
*/
|
|
134
149
|
export function generateSaveHDWalletFromSeed(seed: Uint8Array, password: string): HDWallet {
|
|
135
150
|
const walletKey = derivePathFromSeed('m/44h/457h', seed);
|
|
136
151
|
return {
|
|
137
|
-
secretKey:
|
|
138
|
-
chainCode:
|
|
152
|
+
secretKey: Buffer.from(encryptKey(password, walletKey.secretKey)).toString('hex'),
|
|
153
|
+
chainCode: Buffer.from(encryptKey(password, walletKey.chainCode)).toString('hex'),
|
|
139
154
|
};
|
|
140
155
|
}
|
|
141
156
|
|
|
157
|
+
/**
|
|
158
|
+
* @category hd-wallet
|
|
159
|
+
*/
|
|
142
160
|
export function getSaveHDWalletAccounts(
|
|
143
161
|
saveHDWallet: HDWallet,
|
|
144
162
|
password: string,
|
|
@@ -152,6 +170,9 @@ export function getSaveHDWalletAccounts(
|
|
|
152
170
|
.map((_, idx) => formatAccount(getKeyPair(derivePathFromKey(`${idx}h/0h/0h`, walletKey).secretKey)));
|
|
153
171
|
}
|
|
154
172
|
|
|
173
|
+
/**
|
|
174
|
+
* @category hd-wallet
|
|
175
|
+
*/
|
|
155
176
|
export const getHdWalletAccountFromSeed = (
|
|
156
177
|
seed: Uint8Array,
|
|
157
178
|
accountIdx: number,
|
package/src/utils/keystore.ts
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import nacl from 'tweetnacl';
|
|
2
2
|
import { v4 as uuid } from '@aeternity/uuid';
|
|
3
|
-
|
|
4
|
-
// eslint-disable-next-line import/extensions
|
|
5
|
-
import { ArgonType, hash } from '@aeternity/argon2-browser/dist/argon2-bundled.min.js';
|
|
3
|
+
import { hash, argon2id } from '@aeternity/argon2';
|
|
6
4
|
import { getAddressFromPriv } from './crypto';
|
|
7
|
-
import { bytesToHex, hexToBytes } from './bytes';
|
|
8
5
|
import { InvalidPasswordError } from './errors';
|
|
9
6
|
|
|
10
7
|
const DERIVED_KEY_FUNCTIONS = {
|
|
@@ -13,16 +10,15 @@ const DERIVED_KEY_FUNCTIONS = {
|
|
|
13
10
|
salt: string | Uint8Array,
|
|
14
11
|
params: Partial<Keystore['crypto']['kdf_params']>,
|
|
15
12
|
): Promise<Uint8Array> {
|
|
16
|
-
const { memlimit_kib:
|
|
13
|
+
const { memlimit_kib: memoryCost, opslimit: timeCost } = params;
|
|
17
14
|
|
|
18
|
-
return (
|
|
19
|
-
|
|
20
|
-
pass,
|
|
15
|
+
return hash(pass, {
|
|
16
|
+
hashLength: 32,
|
|
21
17
|
salt,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
type:
|
|
25
|
-
})
|
|
18
|
+
timeCost,
|
|
19
|
+
memoryCost,
|
|
20
|
+
type: argon2id,
|
|
21
|
+
});
|
|
26
22
|
},
|
|
27
23
|
};
|
|
28
24
|
|
|
@@ -72,6 +68,7 @@ const CRYPTO_DEFAULTS = {
|
|
|
72
68
|
|
|
73
69
|
/**
|
|
74
70
|
* Symmetric private key encryption using secret (derived) key.
|
|
71
|
+
* @category keystore
|
|
75
72
|
* @param plaintext - Data to be encrypted.
|
|
76
73
|
* @param key - Secret key.
|
|
77
74
|
* @param nonce - Randomly generated nonce.
|
|
@@ -89,6 +86,7 @@ function encrypt(
|
|
|
89
86
|
|
|
90
87
|
/**
|
|
91
88
|
* Symmetric private key decryption using secret (derived) key.
|
|
89
|
+
* @category keystore
|
|
92
90
|
* @param ciphertext - Data to be decrypted.
|
|
93
91
|
* @param key - Secret key.
|
|
94
92
|
* @param nonce - Nonce from key-object.
|
|
@@ -106,6 +104,7 @@ function decrypt(
|
|
|
106
104
|
|
|
107
105
|
/**
|
|
108
106
|
* Derive secret key from password with key derivation function.
|
|
107
|
+
* @category keystore
|
|
109
108
|
* @param password - User-supplied password.
|
|
110
109
|
* @param nonce - Randomly generated nonce.
|
|
111
110
|
* @param kdf - Key derivation function.
|
|
@@ -123,6 +122,7 @@ async function deriveKey(
|
|
|
123
122
|
|
|
124
123
|
/**
|
|
125
124
|
* Recover plaintext private key from secret-storage key object.
|
|
125
|
+
* @category keystore
|
|
126
126
|
* @param password - Keystore object password.
|
|
127
127
|
* @param keystore - Keystore object.
|
|
128
128
|
* @returns Plaintext private key.
|
|
@@ -131,17 +131,18 @@ export async function recover(
|
|
|
131
131
|
password: string | Uint8Array,
|
|
132
132
|
{ crypto }: Keystore,
|
|
133
133
|
): Promise<string> {
|
|
134
|
-
const salt =
|
|
135
|
-
return
|
|
136
|
-
|
|
134
|
+
const salt = Buffer.from(crypto.kdf_params.salt, 'hex');
|
|
135
|
+
return Buffer.from(decrypt(
|
|
136
|
+
Buffer.from(crypto.ciphertext, 'hex'),
|
|
137
137
|
await deriveKey(password, salt, crypto.kdf, crypto.kdf_params),
|
|
138
|
-
|
|
138
|
+
Buffer.from(crypto.cipher_params.nonce, 'hex'),
|
|
139
139
|
crypto.symmetric_alg,
|
|
140
|
-
));
|
|
140
|
+
)).toString('hex');
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
/**
|
|
144
144
|
* Export private key to keystore secret-storage format.
|
|
145
|
+
* @category keystore
|
|
145
146
|
* @param name - Key name.
|
|
146
147
|
* @param password - User-supplied password.
|
|
147
148
|
* @param privateKey - Private key as hex-string or a Buffer.
|
|
@@ -161,7 +162,7 @@ export async function dump(
|
|
|
161
162
|
): Promise<Keystore> {
|
|
162
163
|
const opt = { ...CRYPTO_DEFAULTS, ...options };
|
|
163
164
|
const derivedKey = await deriveKey(password, salt, opt.kdf, opt.kdf_params);
|
|
164
|
-
const payload = typeof privateKey === 'string' ?
|
|
165
|
+
const payload = typeof privateKey === 'string' ? Buffer.from(privateKey, 'hex') : privateKey;
|
|
165
166
|
return {
|
|
166
167
|
name,
|
|
167
168
|
version: 1,
|
|
@@ -170,12 +171,14 @@ export async function dump(
|
|
|
170
171
|
crypto: {
|
|
171
172
|
secret_type: opt.secret_type,
|
|
172
173
|
symmetric_alg: opt.symmetric_alg,
|
|
173
|
-
ciphertext:
|
|
174
|
-
|
|
174
|
+
ciphertext: Buffer.from(
|
|
175
|
+
encrypt(payload, derivedKey, nonce, opt.symmetric_alg),
|
|
176
|
+
).toString('hex'),
|
|
177
|
+
cipher_params: { nonce: Buffer.from(nonce).toString('hex') },
|
|
175
178
|
kdf: opt.kdf,
|
|
176
179
|
kdf_params: {
|
|
177
180
|
...opt.kdf_params,
|
|
178
|
-
salt:
|
|
181
|
+
salt: Buffer.from(salt).toString('hex'),
|
|
179
182
|
},
|
|
180
183
|
},
|
|
181
184
|
};
|
package/src/utils/other.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { RestError } from '@azure/core-rest-pipeline';
|
|
2
|
+
|
|
1
3
|
export const pause = async (duration: number): Promise<void> => new Promise((resolve) => {
|
|
2
4
|
setTimeout(resolve, duration);
|
|
3
5
|
});
|
|
@@ -30,7 +32,10 @@ export const concatBuffers = isWebpack4Buffer
|
|
|
30
32
|
* @param key - Maybe object key
|
|
31
33
|
* @param object - Object
|
|
32
34
|
*/
|
|
33
|
-
export function isKeyOfObject<T
|
|
35
|
+
export function isKeyOfObject<T extends object>(
|
|
36
|
+
key: string | number | symbol,
|
|
37
|
+
object: T,
|
|
38
|
+
): key is keyof T {
|
|
34
39
|
return key in object;
|
|
35
40
|
}
|
|
36
41
|
|
|
@@ -42,3 +47,13 @@ export function isKeyOfObject<T>(key: string | number | symbol, object: T): key
|
|
|
42
47
|
export function isItemOfArray<T>(item: any, array: readonly T[]): item is T {
|
|
43
48
|
return array.includes(item);
|
|
44
49
|
}
|
|
50
|
+
|
|
51
|
+
export function isAccountNotFoundError(error: Error): boolean {
|
|
52
|
+
return error instanceof RestError && error.statusCode === 404
|
|
53
|
+
&& error.message.includes('Account not found');
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// based on https://stackoverflow.com/a/50375286/6176994
|
|
57
|
+
export type UnionToIntersection<Union> =
|
|
58
|
+
(Union extends any ? (k: Union) => void : never) extends ((k: infer Intersection) => void)
|
|
59
|
+
? Intersection : never;
|
package/src/utils/string.ts
CHANGED
|
@@ -32,23 +32,3 @@ export function snakeToPascal(s: string): string {
|
|
|
32
32
|
export function pascalToSnake(s: string): string {
|
|
33
33
|
return s.replace(/[A-Z]/g, (match) => `_${match.toLowerCase()}`);
|
|
34
34
|
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Check whether a string is valid hex.
|
|
38
|
-
* @param str - String to validate.
|
|
39
|
-
* @returns True if the string is valid hex, false otherwise.
|
|
40
|
-
*/
|
|
41
|
-
export function isHex(str: string): boolean {
|
|
42
|
-
return str.length % 2 === 0 && /^[0-9a-f]+$/i.test(str);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Check whether a string is valid base-64.
|
|
47
|
-
* @param str - String to validate.
|
|
48
|
-
* @returns True if the string is valid base-64, false otherwise.
|
|
49
|
-
*/
|
|
50
|
-
export function isBase64(str: string): boolean {
|
|
51
|
-
if (str.length % 4 > 0 || /[^0-9a-z+/=]/i.test(str)) return false;
|
|
52
|
-
const index = str.indexOf('=');
|
|
53
|
-
return index === -1 || /={1,2}/.test(str.slice(index));
|
|
54
|
-
}
|