@aeternity/aepp-sdk 12.1.3 → 13.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/aesophia_cli +0 -0
- 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 +12031 -11231
- 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 +30 -184
- package/es/AeSdkBase.mjs.map +1 -1
- package/es/AeSdkMethods.d.ts +123 -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 +11 -15
- package/es/Node.mjs +35 -48
- 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 +113 -0
- package/es/account/Generalized.mjs.map +1 -0
- package/es/account/Ledger.d.ts +28 -0
- package/es/account/Ledger.mjs +102 -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 -64
- 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 +4 -4
- package/es/aens.mjs +46 -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.d.ts +1 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +22 -11
- 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 +5 -42
- 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 +10 -2
- package/es/chain.mjs +37 -59
- package/es/chain.mjs.map +1 -1
- package/es/channel/Base.d.ts +200 -0
- package/es/channel/Base.mjs +293 -0
- package/es/channel/Base.mjs.map +1 -0
- package/es/channel/Contract.d.ts +248 -0
- package/es/channel/Contract.mjs +420 -0
- package/es/channel/Contract.mjs.map +1 -0
- package/es/channel/Spend.d.ts +219 -0
- package/es/channel/Spend.mjs +385 -0
- package/es/channel/Spend.mjs.map +1 -0
- package/es/channel/handlers.d.ts +8 -21
- package/es/channel/handlers.mjs +151 -899
- package/es/channel/handlers.mjs.map +1 -1
- package/es/channel/internal.d.ts +27 -21
- package/es/channel/internal.mjs +101 -191
- package/es/channel/internal.mjs.map +1 -1
- package/es/contract/Contract.d.ts +210 -0
- package/es/contract/Contract.mjs +551 -0
- package/es/contract/Contract.mjs.map +1 -0
- package/es/contract/compiler/Base.d.ts +81 -0
- package/es/contract/compiler/Base.mjs +5 -0
- package/es/contract/compiler/Base.mjs.map +1 -0
- package/es/contract/compiler/Cli.d.ts +23 -0
- package/es/contract/compiler/Cli.mjs +155 -0
- package/es/contract/compiler/Cli.mjs.map +1 -0
- package/es/contract/compiler/Http.d.ts +32 -0
- package/es/contract/compiler/Http.mjs +118 -0
- package/es/contract/compiler/Http.mjs.map +1 -0
- package/es/contract/compiler/HttpNode.d.ts +17 -0
- package/es/contract/compiler/HttpNode.mjs +26 -0
- package/es/contract/compiler/HttpNode.mjs.map +1 -0
- package/es/contract/compiler/getFileSystem.d.ts +6 -0
- package/es/contract/compiler/getFileSystem.mjs +40 -0
- package/es/contract/compiler/getFileSystem.mjs.map +1 -0
- package/es/contract/ga.d.ts +9 -34
- package/es/contract/ga.mjs +29 -112
- package/es/contract/ga.mjs.map +1 -1
- package/es/index-browser.d.ts +39 -0
- package/es/index-browser.mjs +55 -0
- package/es/index-browser.mjs.map +1 -0
- package/es/index.d.ts +4 -35
- package/es/index.mjs +4 -51
- package/es/index.mjs.map +1 -1
- package/es/oracle.d.ts +5 -5
- package/es/oracle.mjs +34 -40
- package/es/oracle.mjs.map +1 -1
- package/es/spend.d.ts +3 -3
- package/es/spend.mjs +18 -23
- package/es/spend.mjs.map +1 -1
- package/es/tx/builder/constants.d.ts +30 -2
- package/es/tx/builder/constants.mjs +43 -14
- package/es/tx/builder/constants.mjs.map +1 -1
- package/es/tx/builder/field-types/abi-version.d.ts +10 -0
- package/es/tx/builder/field-types/abi-version.mjs +20 -0
- package/es/tx/builder/field-types/abi-version.mjs.map +1 -0
- package/es/tx/builder/field-types/address.d.ts +14 -0
- package/es/tx/builder/field-types/address.mjs +51 -0
- package/es/tx/builder/field-types/address.mjs.map +1 -0
- package/es/tx/builder/field-types/array.d.ts +7 -0
- package/es/tx/builder/field-types/array.mjs +11 -0
- package/es/tx/builder/field-types/array.mjs.map +1 -0
- package/es/tx/builder/field-types/boolean.d.ts +6 -0
- package/es/tx/builder/field-types/boolean.mjs +13 -0
- package/es/tx/builder/field-types/boolean.mjs.map +1 -0
- package/es/tx/builder/field-types/coin-amount.d.ts +2 -3
- 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/ct-version.d.ts +30 -0
- package/es/tx/builder/field-types/ct-version.mjs +48 -0
- package/es/tx/builder/field-types/ct-version.mjs.map +1 -0
- package/es/tx/builder/field-types/deposit.d.ts +1 -2
- 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/encoded.d.ts +6 -0
- package/es/tx/builder/field-types/encoded.mjs +21 -0
- package/es/tx/builder/field-types/encoded.mjs.map +1 -0
- package/es/tx/builder/field-types/entry.d.ts +11 -0
- package/es/tx/builder/field-types/entry.mjs +31 -0
- package/es/tx/builder/field-types/entry.mjs.map +1 -0
- package/es/tx/builder/field-types/enumeration.d.ts +7 -0
- package/es/tx/builder/field-types/enumeration.mjs +30 -0
- package/es/tx/builder/field-types/enumeration.mjs.map +1 -0
- package/es/tx/builder/field-types/fee.d.ts +10 -15
- package/es/tx/builder/field-types/fee.mjs +31 -43
- 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.d.ts +5 -2
- package/es/tx/builder/field-types/gas-limit.mjs +12 -14
- 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 +80 -30
- package/es/tx/builder/field-types/index.mjs +34 -9
- package/es/tx/builder/field-types/index.mjs.map +1 -1
- package/es/tx/builder/field-types/mptree.d.ts +37 -0
- package/es/tx/builder/field-types/mptree.mjs +268 -0
- package/es/tx/builder/field-types/mptree.mjs.map +1 -0
- package/es/tx/builder/field-types/name-fee.d.ts +1 -3
- 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 +5 -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/raw.d.ts +6 -0
- package/es/tx/builder/field-types/raw.mjs +13 -0
- package/es/tx/builder/field-types/raw.mjs.map +1 -0
- package/es/tx/builder/field-types/short-u-int-const.d.ts +5 -0
- package/es/tx/builder/field-types/short-u-int-const.mjs +16 -0
- package/es/tx/builder/field-types/short-u-int-const.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/string.d.ts +6 -0
- package/es/tx/builder/field-types/string.mjs +10 -0
- package/es/tx/builder/field-types/string.mjs.map +1 -0
- package/es/tx/builder/field-types/u-int.d.ts +1 -2
- 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 +11 -49
- package/es/tx/builder/index.mjs +57 -337
- package/es/tx/builder/index.mjs.map +1 -1
- package/es/tx/builder/schema.d.ts +2367 -667
- package/es/tx/builder/schema.mjs +70 -145
- package/es/tx/builder/schema.mjs.map +1 -1
- package/es/tx/index.d.ts +4 -49
- package/es/tx/index.mjs +38 -112
- package/es/tx/index.mjs.map +1 -1
- package/es/tx/validator.d.ts +4 -6
- package/es/tx/validator.mjs +104 -90
- 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 +15 -14
- package/es/utils/errors.mjs +86 -172
- 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/other.d.ts +4 -2
- 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 +98 -51
- package/src/AeSdk.ts +15 -11
- package/src/AeSdkAepp.ts +9 -7
- package/src/AeSdkBase.ts +31 -202
- package/src/AeSdkMethods.ts +169 -0
- package/src/AeSdkWallet.ts +16 -47
- package/src/Node.ts +17 -18
- 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 +13 -11
- package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +21 -9
- package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +3 -3
- package/src/aepp-wallet-communication/rpc/RpcClient.ts +4 -4
- 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 +11 -6
- package/src/channel/Base.ts +335 -0
- package/src/channel/Contract.ts +488 -0
- package/src/channel/Spend.ts +408 -0
- package/src/channel/handlers.ts +164 -582
- package/src/channel/internal.ts +114 -143
- package/src/contract/Contract.ts +610 -0
- package/src/contract/compiler/Base.ts +94 -0
- package/src/contract/compiler/Cli.ts +134 -0
- package/src/contract/compiler/Http.ts +124 -0
- package/src/contract/compiler/HttpNode.ts +26 -0
- package/src/contract/compiler/getFileSystem.ts +42 -0
- package/src/contract/ga.ts +23 -106
- package/src/index-browser.ts +58 -0
- package/src/index.ts +4 -55
- package/src/oracle.ts +8 -8
- package/src/spend.ts +6 -14
- package/src/tx/builder/constants.ts +33 -3
- package/src/tx/builder/field-types/abi-version.ts +21 -0
- package/src/tx/builder/field-types/address.ts +62 -0
- package/src/tx/builder/field-types/array.ts +19 -0
- package/src/tx/builder/field-types/boolean.ts +9 -0
- package/src/tx/builder/field-types/coin-amount.ts +4 -9
- package/src/tx/builder/field-types/ct-version.ts +50 -0
- package/src/tx/builder/field-types/deposit.ts +1 -1
- package/src/tx/builder/field-types/encoded.ts +27 -0
- package/src/tx/builder/field-types/entry.ts +31 -0
- package/src/tx/builder/field-types/enumeration.ts +32 -0
- package/src/tx/builder/field-types/fee.ts +39 -21
- package/src/tx/builder/field-types/gas-limit.ts +13 -8
- package/src/tx/builder/field-types/gas-price.ts +0 -2
- package/src/tx/builder/field-types/index.ts +54 -15
- package/src/tx/builder/field-types/mptree.ts +242 -0
- package/src/tx/builder/field-types/name-fee.ts +2 -3
- 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/raw.ts +9 -0
- package/src/tx/builder/field-types/short-u-int-const.ts +20 -0
- package/src/tx/builder/field-types/string.ts +11 -0
- package/src/tx/builder/field-types/u-int.ts +4 -5
- package/src/tx/builder/helpers.ts +10 -60
- package/src/tx/builder/index.ts +65 -308
- package/src/tx/builder/schema.ts +280 -341
- package/src/tx/index.ts +40 -103
- package/src/tx/validator.ts +91 -96
- package/src/typings/@aeternity__aepp-calldata/index.d.ts +20 -0
- package/src/utils/autorest.ts +16 -1
- package/src/utils/bytes.ts +6 -34
- package/src/utils/crypto.ts +23 -16
- package/src/utils/encoder.ts +0 -1
- package/src/utils/errors.ts +22 -25
- 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 +140 -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 +19 -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 +256 -0
- package/types-legacy/ts4.2/channel/Base.d.ts +199 -0
- package/types-legacy/ts4.2/channel/Contract.d.ts +248 -0
- package/types-legacy/ts4.2/channel/Spend.d.ts +219 -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/Contract.d.ts +212 -0
- package/types-legacy/ts4.2/contract/compiler/Base.d.ts +81 -0
- package/types-legacy/ts4.2/contract/compiler/Cli.d.ts +23 -0
- package/types-legacy/ts4.2/contract/compiler/Http.d.ts +32 -0
- package/types-legacy/ts4.2/contract/compiler/HttpNode.d.ts +17 -0
- package/types-legacy/ts4.2/contract/compiler/getFileSystem.d.ts +6 -0
- package/types-legacy/ts4.2/contract/ga.d.ts +44 -0
- package/types-legacy/ts4.2/globals.d.ts +16 -0
- package/types-legacy/ts4.2/index-browser.d.ts +39 -0
- package/types-legacy/ts4.2/index.d.ts +5 -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 +98 -0
- package/types-legacy/ts4.2/tx/builder/field-types/abi-version.d.ts +10 -0
- package/types-legacy/ts4.2/tx/builder/field-types/address.d.ts +21 -0
- package/types-legacy/ts4.2/tx/builder/field-types/array.d.ts +7 -0
- package/types-legacy/ts4.2/tx/builder/field-types/boolean.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/ct-version.d.ts +42 -0
- package/types-legacy/ts4.2/tx/builder/field-types/deposit.d.ts +14 -0
- package/types-legacy/ts4.2/tx/builder/field-types/encoded.d.ts +6 -0
- package/types-legacy/ts4.2/tx/builder/field-types/entry.d.ts +11 -0
- package/types-legacy/ts4.2/tx/builder/field-types/enumeration.d.ts +7 -0
- package/types-legacy/ts4.2/tx/builder/field-types/fee.d.ts +20 -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 +15 -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 +129 -0
- package/types-legacy/ts4.2/tx/builder/field-types/mptree.d.ts +43 -0
- package/types-legacy/ts4.2/tx/builder/field-types/name-fee.d.ts +18 -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/raw.d.ts +6 -0
- package/types-legacy/ts4.2/tx/builder/field-types/short-u-int-const.d.ts +5 -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/string.d.ts +6 -0
- package/types-legacy/ts4.2/tx/builder/field-types/u-int.d.ts +7 -0
- package/types-legacy/ts4.2/tx/builder/helpers.d.ts +112 -0
- package/types-legacy/ts4.2/tx/builder/index.d.ts +50 -0
- package/types-legacy/ts4.2/tx/builder/schema.d.ts +4675 -0
- package/types-legacy/ts4.2/tx/index.d.ts +19 -0
- package/types-legacy/ts4.2/tx/validator.d.ts +18 -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 +475 -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/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 +140 -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 +19 -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 +256 -0
- package/types-legacy/ts4.5/channel/Base.d.ts +199 -0
- package/types-legacy/ts4.5/channel/Contract.d.ts +248 -0
- package/types-legacy/ts4.5/channel/Spend.d.ts +219 -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/Contract.d.ts +212 -0
- package/types-legacy/ts4.5/contract/compiler/Base.d.ts +81 -0
- package/types-legacy/ts4.5/contract/compiler/Cli.d.ts +23 -0
- package/types-legacy/ts4.5/contract/compiler/Http.d.ts +32 -0
- package/types-legacy/ts4.5/contract/compiler/HttpNode.d.ts +17 -0
- package/types-legacy/ts4.5/contract/compiler/getFileSystem.d.ts +6 -0
- package/types-legacy/ts4.5/contract/ga.d.ts +44 -0
- package/types-legacy/ts4.5/index-browser.d.ts +39 -0
- package/types-legacy/ts4.5/index.d.ts +4 -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 +98 -0
- package/types-legacy/ts4.5/tx/builder/field-types/abi-version.d.ts +10 -0
- package/types-legacy/ts4.5/tx/builder/field-types/address.d.ts +21 -0
- package/types-legacy/ts4.5/tx/builder/field-types/array.d.ts +7 -0
- package/types-legacy/ts4.5/tx/builder/field-types/boolean.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/ct-version.d.ts +42 -0
- package/types-legacy/ts4.5/tx/builder/field-types/deposit.d.ts +14 -0
- package/types-legacy/ts4.5/tx/builder/field-types/encoded.d.ts +6 -0
- package/types-legacy/ts4.5/tx/builder/field-types/entry.d.ts +11 -0
- package/types-legacy/ts4.5/tx/builder/field-types/enumeration.d.ts +7 -0
- package/types-legacy/ts4.5/tx/builder/field-types/fee.d.ts +20 -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 +15 -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 +129 -0
- package/types-legacy/ts4.5/tx/builder/field-types/mptree.d.ts +43 -0
- package/types-legacy/ts4.5/tx/builder/field-types/name-fee.d.ts +18 -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/raw.d.ts +6 -0
- package/types-legacy/ts4.5/tx/builder/field-types/short-u-int-const.d.ts +5 -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/string.d.ts +6 -0
- package/types-legacy/ts4.5/tx/builder/field-types/u-int.d.ts +7 -0
- package/types-legacy/ts4.5/tx/builder/helpers.d.ts +112 -0
- package/types-legacy/ts4.5/tx/builder/index.d.ts +50 -0
- package/types-legacy/ts4.5/tx/builder/schema.d.ts +4675 -0
- package/types-legacy/ts4.5/tx/index.d.ts +19 -0
- package/types-legacy/ts4.5/tx/validator.d.ts +18 -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 +475 -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/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.d.ts +0 -18
- package/es/contract/Compiler.mjs +0 -68
- package/es/contract/Compiler.mjs.map +0 -1
- package/es/contract/aci.d.ts +0 -127
- package/es/contract/aci.mjs +0 -508
- 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/es/utils/mptree.d.ts +0 -26
- package/es/utils/mptree.mjs +0 -165
- package/es/utils/mptree.mjs.map +0 -1
- package/src/channel/index.ts +0 -1025
- package/src/contract/Compiler.ts +0 -67
- package/src/contract/aci.ts +0 -537
- 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/utils/mptree.ts +0 -145
package/src/tx/index.ts
CHANGED
|
@@ -22,114 +22,37 @@
|
|
|
22
22
|
* the creation of transactions to {@link Node}.
|
|
23
23
|
* These methods provide ability to create native transactions.
|
|
24
24
|
*/
|
|
25
|
-
import
|
|
26
|
-
import {
|
|
27
|
-
|
|
28
|
-
} from './builder/schema';
|
|
29
|
-
import { Tag } from './builder/constants';
|
|
30
|
-
import {
|
|
31
|
-
ArgumentError, UnsupportedProtocolError, UnknownTxError, InvalidTxParamsError,
|
|
32
|
-
} from '../utils/errors';
|
|
25
|
+
import { TX_TTL, TxParamsCommon } from './builder/schema';
|
|
26
|
+
import { ConsensusProtocolVersion, Tag } from './builder/constants';
|
|
27
|
+
import { ArgumentError, InvalidTxParamsError } from '../utils/errors';
|
|
33
28
|
import Node from '../Node';
|
|
34
29
|
import { Encoded } from '../utils/encoder';
|
|
35
30
|
import { buildTx as syncBuildTx, unpackTx } from './builder/index';
|
|
36
|
-
import {
|
|
31
|
+
import { isAccountNotFoundError } from '../utils/other';
|
|
37
32
|
import { AE_AMOUNT_FORMATS } from '../utils/amount-formatter';
|
|
38
33
|
|
|
39
|
-
type Int = number | string | BigNumber;
|
|
40
|
-
|
|
41
34
|
export type BuildTxOptions <TxType extends Tag, OmitFields extends string> =
|
|
42
35
|
Omit<Parameters<typeof _buildTx<TxType>>[1], OmitFields>;
|
|
43
36
|
|
|
44
|
-
/**
|
|
45
|
-
* Validated vm/abi version or get default based on transaction type and NODE version
|
|
46
|
-
* @category transaction builder
|
|
47
|
-
* @param txType - Type of transaction
|
|
48
|
-
* @param ctVersion - Object with vm and abi version fields
|
|
49
|
-
* @returns Object with vm/abi version
|
|
50
|
-
*/
|
|
51
|
-
export async function getVmVersion(
|
|
52
|
-
txType: Tag.ContractCreateTx, ctVersion: Partial<CtVersion> & { onNode: Node }
|
|
53
|
-
): Promise<CtVersion>;
|
|
54
|
-
export async function getVmVersion(
|
|
55
|
-
txType: Tag, ctVersion: Partial<Pick<CtVersion, 'abiVersion'>> & { onNode: Node }
|
|
56
|
-
): Promise<Pick<CtVersion, 'abiVersion'>>;
|
|
57
|
-
export async function getVmVersion(
|
|
58
|
-
txType: Tag,
|
|
59
|
-
{ vmVersion, abiVersion, onNode }: Partial<CtVersion> & { onNode: Node },
|
|
60
|
-
): Promise<Partial<CtVersion>> {
|
|
61
|
-
const { consensusProtocolVersion } = await onNode.getNodeInfo();
|
|
62
|
-
if (!isKeyOfObject(consensusProtocolVersion, PROTOCOL_VM_ABI)) {
|
|
63
|
-
throw new UnsupportedProtocolError('Not supported consensus protocol version');
|
|
64
|
-
}
|
|
65
|
-
const supportedProtocol = PROTOCOL_VM_ABI[consensusProtocolVersion];
|
|
66
|
-
if (!isKeyOfObject(txType, supportedProtocol)) {
|
|
67
|
-
throw new UnknownTxError('Not supported tx type');
|
|
68
|
-
}
|
|
69
|
-
const protocolForTX = supportedProtocol[txType];
|
|
70
|
-
abiVersion ??= protocolForTX.abiVersion[0];
|
|
71
|
-
vmVersion ??= protocolForTX.vmVersion[0];
|
|
72
|
-
return { vmVersion, abiVersion };
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Calculate fee, get absolute ttl (ttl + height), get account nonce
|
|
77
|
-
* @category transaction builder
|
|
78
|
-
* @param txType - Type of transaction
|
|
79
|
-
* @param params - Object which contains all tx data
|
|
80
|
-
* @returns Object with account nonce, absolute ttl and transaction fee
|
|
81
|
-
*/
|
|
82
|
-
export async function prepareTxParams(
|
|
83
|
-
txType: Tag,
|
|
84
|
-
{
|
|
85
|
-
senderId,
|
|
86
|
-
nonce,
|
|
87
|
-
ttl = TX_TTL,
|
|
88
|
-
absoluteTtl,
|
|
89
|
-
strategy,
|
|
90
|
-
onNode,
|
|
91
|
-
}: PrepareTxParamsOptions,
|
|
92
|
-
): Promise<{ ttl: number; nonce: number }> {
|
|
93
|
-
nonce ??= (
|
|
94
|
-
await onNode.getAccountNextNonce(senderId, { strategy }).catch(() => ({ nextNonce: 1 }))
|
|
95
|
-
).nextNonce;
|
|
96
|
-
|
|
97
|
-
if (ttl !== 0) {
|
|
98
|
-
if (ttl < 0) throw new ArgumentError('ttl', 'greater or equal to 0', ttl);
|
|
99
|
-
ttl += absoluteTtl === true ? 0 : (await onNode.getCurrentKeyBlock()).height;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
return { ttl, nonce };
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
interface PrepareTxParamsOptions extends Pick<TxParamsCommon, 'nonce' | 'ttl'> {
|
|
106
|
-
senderId: Encoded.AccountAddress;
|
|
107
|
-
absoluteTtl?: boolean;
|
|
108
|
-
strategy?: 'continuity' | 'max';
|
|
109
|
-
onNode: Node;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
37
|
// TODO: find a better name or rearrange methods
|
|
113
38
|
/**
|
|
114
39
|
* @category transaction builder
|
|
115
40
|
*/
|
|
116
41
|
export async function _buildTx<TxType extends Tag>(
|
|
117
42
|
txType: TxType,
|
|
118
|
-
{
|
|
119
|
-
|
|
43
|
+
{
|
|
44
|
+
denomination, absoluteTtl, strategy, onNode, ..._params
|
|
45
|
+
}: Omit<Parameters<typeof syncBuildTx<TxType>>[0], 'tag' | 'nonce' | 'ttl'>
|
|
120
46
|
& {
|
|
121
|
-
onNode: Node;
|
|
122
|
-
fee?: Int;
|
|
123
|
-
nonce?: number;
|
|
124
|
-
ttl?: number;
|
|
125
47
|
denomination?: AE_AMOUNT_FORMATS;
|
|
126
48
|
absoluteTtl?: boolean;
|
|
49
|
+
strategy?: 'continuity' | 'max';
|
|
50
|
+
onNode: Node;
|
|
51
|
+
ttl?: number;
|
|
52
|
+
nonce?: number;
|
|
127
53
|
}
|
|
128
54
|
& (TxType extends Tag.OracleExtendTx | Tag.OracleResponseTx
|
|
129
|
-
? { callerId: Encoded.AccountAddress } : {})
|
|
130
|
-
& (TxType extends Tag.ContractCreateTx | Tag.GaAttachTx ? { ctVersion?: CtVersion } : {})
|
|
131
|
-
& (TxType extends Tag.ContractCallTx | Tag.OracleRegisterTx
|
|
132
|
-
? { abiVersion?: ABI_VERSIONS } : {}),
|
|
55
|
+
? { callerId: Encoded.AccountAddress } : {}),
|
|
133
56
|
): Promise<Encoded.Transaction> {
|
|
134
57
|
// TODO: avoid this assertion
|
|
135
58
|
const params = _params as unknown as TxParamsCommon & { onNode: Node };
|
|
@@ -151,6 +74,9 @@ export async function _buildTx<TxType extends Tag>(
|
|
|
151
74
|
case Tag.GaAttachTx:
|
|
152
75
|
senderKey = 'ownerId';
|
|
153
76
|
break;
|
|
77
|
+
case Tag.GaMetaTx:
|
|
78
|
+
senderKey = 'gaId';
|
|
79
|
+
break;
|
|
154
80
|
case Tag.ContractCallTx:
|
|
155
81
|
case Tag.OracleExtendTx:
|
|
156
82
|
case Tag.OracleResponseTx:
|
|
@@ -168,25 +94,36 @@ export async function _buildTx<TxType extends Tag>(
|
|
|
168
94
|
default:
|
|
169
95
|
throw new ArgumentError('txType', 'valid transaction type', txType);
|
|
170
96
|
}
|
|
171
|
-
|
|
172
|
-
if (
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
params.
|
|
180
|
-
}
|
|
181
|
-
if (txType === Tag.OracleRegisterTx) {
|
|
182
|
-
params.abiVersion ??= ABI_VERSIONS.NO_ABI;
|
|
97
|
+
|
|
98
|
+
if (
|
|
99
|
+
Object.keys(ConsensusProtocolVersion).length !== 2
|
|
100
|
+
&& (((Tag.ContractCreateTx === txType || Tag.GaAttachTx === txType) && params.ctVersion == null)
|
|
101
|
+
|| ((Tag.ContractCallTx === txType || Tag.GaMetaTx === txType) && params.abiVersion == null))
|
|
102
|
+
) {
|
|
103
|
+
const { consensusProtocolVersion } = await onNode.getNodeInfo();
|
|
104
|
+
// @ts-expect-error remove after fixing buildTx types
|
|
105
|
+
params.consensusProtocolVersion = consensusProtocolVersion;
|
|
183
106
|
}
|
|
107
|
+
|
|
184
108
|
if (txType === Tag.PayingForTx) {
|
|
185
109
|
params.tx = unpackTx(params.tx);
|
|
186
110
|
}
|
|
187
111
|
const senderId = params[senderKey];
|
|
188
112
|
// TODO: do this check on TypeScript level
|
|
189
113
|
if (senderId == null) throw new InvalidTxParamsError(`Transaction field ${senderKey} is missed`);
|
|
190
|
-
|
|
191
|
-
|
|
114
|
+
|
|
115
|
+
params.nonce ??= (
|
|
116
|
+
await onNode.getAccountNextNonce(senderId, { strategy }).catch((error) => {
|
|
117
|
+
if (!isAccountNotFoundError(error)) throw error;
|
|
118
|
+
return { nextNonce: 1 };
|
|
119
|
+
})
|
|
120
|
+
).nextNonce;
|
|
121
|
+
|
|
122
|
+
params.ttl ??= TX_TTL;
|
|
123
|
+
if (params.ttl !== 0) {
|
|
124
|
+
if (params.ttl < 0) throw new ArgumentError('ttl', 'greater or equal to 0', params.ttl);
|
|
125
|
+
params.ttl += absoluteTtl === true ? 0 : (await onNode.getCurrentKeyBlock()).height;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return syncBuildTx({ ...params, tag: txType } as any, { denomination });
|
|
192
129
|
}
|
package/src/tx/validator.ts
CHANGED
|
@@ -1,27 +1,14 @@
|
|
|
1
1
|
import BigNumber from 'bignumber.js';
|
|
2
2
|
import { hash, verify } from '../utils/crypto';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
} from '
|
|
11
|
-
import {
|
|
12
|
-
import { TxUnpacked, unpackTx } from './builder';
|
|
13
|
-
import { UnsupportedProtocolError } from '../utils/errors';
|
|
14
|
-
import { concatBuffers, isKeyOfObject } from '../utils/other';
|
|
15
|
-
import {
|
|
16
|
-
decode, encode, Encoded, Encoding,
|
|
17
|
-
} from '../utils/encoder';
|
|
18
|
-
import Node from '../Node';
|
|
19
|
-
|
|
20
|
-
interface Account {
|
|
21
|
-
balance: bigint;
|
|
22
|
-
id: Encoded.AccountAddress;
|
|
23
|
-
nonce: number;
|
|
24
|
-
}
|
|
3
|
+
import { RawTxObject, TxParamsCommon, TxSchema } from './builder/schema';
|
|
4
|
+
import { ProtocolToVmAbi } from './builder/field-types/ct-version';
|
|
5
|
+
import { Tag, ConsensusProtocolVersion } from './builder/constants';
|
|
6
|
+
import { buildTx, unpackTx } from './builder';
|
|
7
|
+
import { concatBuffers, isAccountNotFoundError } from '../utils/other';
|
|
8
|
+
import { Encoded, decode } from '../utils/encoder';
|
|
9
|
+
import Node, { TransformNodeType } from '../Node';
|
|
10
|
+
import { Account } from '../apis/node';
|
|
11
|
+
import { genAggressiveCacheGetResponsesPolicy } from '../utils/autorest';
|
|
25
12
|
|
|
26
13
|
export interface ValidatorResult {
|
|
27
14
|
message: string;
|
|
@@ -29,30 +16,18 @@ export interface ValidatorResult {
|
|
|
29
16
|
checkedKeys: string[];
|
|
30
17
|
}
|
|
31
18
|
|
|
19
|
+
type UnpackedTx = ReturnType<typeof unpackTx>['tx'];
|
|
20
|
+
|
|
32
21
|
type Validator = (
|
|
33
|
-
tx:
|
|
34
|
-
encodedTx: TxUnpacked<TxSchema>;
|
|
35
|
-
signatures: Buffer[];
|
|
36
|
-
tx: TxUnpacked<TxSchema> & {
|
|
37
|
-
tx: TxTypeSchemas[Tag.SignedTx];
|
|
38
|
-
};
|
|
39
|
-
nonce?: number;
|
|
40
|
-
ttl?: number;
|
|
41
|
-
amount?: number;
|
|
42
|
-
fee?: number;
|
|
43
|
-
nameFee?: number;
|
|
44
|
-
ctVersion?: Partial<CtVersion>;
|
|
45
|
-
abiVersion?: number;
|
|
46
|
-
contractId?: Encoded.ContractAddress;
|
|
47
|
-
},
|
|
22
|
+
tx: UnpackedTx,
|
|
48
23
|
options: {
|
|
49
|
-
|
|
24
|
+
// TODO: remove after fixing node types
|
|
25
|
+
account?: TransformNodeType<Account> & { id: Encoded.AccountAddress };
|
|
50
26
|
nodeNetworkId: string;
|
|
51
27
|
parentTxTypes: Tag[];
|
|
52
28
|
node: Node;
|
|
53
|
-
txType: Tag;
|
|
54
29
|
height: number;
|
|
55
|
-
consensusProtocolVersion:
|
|
30
|
+
consensusProtocolVersion: ConsensusProtocolVersion;
|
|
56
31
|
}
|
|
57
32
|
) => ValidatorResult[] | Promise<ValidatorResult[]>;
|
|
58
33
|
|
|
@@ -68,30 +43,21 @@ const getSenderAddress = (
|
|
|
68
43
|
.filter((a) => a)
|
|
69
44
|
.map((a) => a?.toString().replace(/^ok_/, 'ak_'))[0] as Encoded.AccountAddress | undefined;
|
|
70
45
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
* This function validates some of transaction properties,
|
|
74
|
-
* to make sure it can be posted it to the chain
|
|
75
|
-
* @category transaction builder
|
|
76
|
-
* @param transaction - Base64Check-encoded transaction
|
|
77
|
-
* @param node - Node to validate transaction against
|
|
78
|
-
* @param parentTxTypes - Types of parent transactions
|
|
79
|
-
* @returns Array with verification errors
|
|
80
|
-
* @example const errors = await verifyTransaction(transaction, node)
|
|
81
|
-
*/
|
|
82
|
-
export default async function verifyTransaction(
|
|
83
|
-
transaction: Encoded.Transaction | Encoded.Poi,
|
|
46
|
+
async function verifyTransactionInternal(
|
|
47
|
+
tx: UnpackedTx,
|
|
84
48
|
node: Node,
|
|
85
|
-
parentTxTypes: Tag[]
|
|
49
|
+
parentTxTypes: Tag[],
|
|
86
50
|
): Promise<ValidatorResult[]> {
|
|
87
|
-
const { tx, txType } = unpackTx<Tag.SignedTx>(transaction);
|
|
88
51
|
const address = getSenderAddress(tx)
|
|
89
|
-
?? (
|
|
52
|
+
?? (tx.tag === Tag.SignedTx ? getSenderAddress(tx.encodedTx) : undefined);
|
|
90
53
|
const [account, { height }, { consensusProtocolVersion, nodeNetworkId }] = await Promise.all([
|
|
91
54
|
address == null
|
|
92
55
|
? undefined
|
|
93
56
|
: node.getAccountByPubkey(address)
|
|
94
|
-
.catch(() =>
|
|
57
|
+
.catch((error) => {
|
|
58
|
+
if (!isAccountNotFoundError(error)) throw error;
|
|
59
|
+
return { id: address, balance: 0n, nonce: 0 };
|
|
60
|
+
})
|
|
95
61
|
// TODO: remove after fixing https://github.com/aeternity/aepp-sdk-js/issues/1537
|
|
96
62
|
.then((acc) => ({ ...acc, id: acc.id as Encoded.AccountAddress })),
|
|
97
63
|
node.getCurrentKeyBlockHeight(),
|
|
@@ -100,28 +66,47 @@ export default async function verifyTransaction(
|
|
|
100
66
|
|
|
101
67
|
return (await Promise.all(
|
|
102
68
|
validators.map((v) => v(
|
|
103
|
-
tx
|
|
69
|
+
tx,
|
|
104
70
|
{
|
|
105
|
-
|
|
71
|
+
node, account, height, consensusProtocolVersion, nodeNetworkId, parentTxTypes,
|
|
106
72
|
},
|
|
107
73
|
)),
|
|
108
74
|
)).flat();
|
|
109
75
|
}
|
|
110
76
|
|
|
77
|
+
/**
|
|
78
|
+
* Transaction Validator
|
|
79
|
+
* This function validates some transaction properties,
|
|
80
|
+
* to make sure it can be posted it to the chain
|
|
81
|
+
* @category transaction builder
|
|
82
|
+
* @param transaction - Base64Check-encoded transaction
|
|
83
|
+
* @param nodeNotCached - Node to validate transaction against
|
|
84
|
+
* @returns Array with verification errors
|
|
85
|
+
* @example const errors = await verifyTransaction(transaction, node)
|
|
86
|
+
*/
|
|
87
|
+
export default async function verifyTransaction(
|
|
88
|
+
transaction: Parameters<typeof unpackTx>[0],
|
|
89
|
+
nodeNotCached: Node,
|
|
90
|
+
): Promise<ValidatorResult[]> {
|
|
91
|
+
const node = new Node(nodeNotCached.$host, { ignoreVersion: true });
|
|
92
|
+
node.pipeline.addPolicy(genAggressiveCacheGetResponsesPolicy());
|
|
93
|
+
return verifyTransactionInternal(unpackTx(transaction), node, []);
|
|
94
|
+
}
|
|
95
|
+
|
|
111
96
|
validators.push(
|
|
112
97
|
({ encodedTx, signatures }, { account, nodeNetworkId, parentTxTypes }) => {
|
|
113
|
-
if ((encodedTx ?? signatures)
|
|
98
|
+
if ((encodedTx ?? signatures) == null) return [];
|
|
114
99
|
if (account == null) return [];
|
|
115
|
-
if (signatures.length !== 1) return []; // TODO: Support multisignature
|
|
100
|
+
if (signatures.length !== 1) return []; // TODO: Support multisignature like in state channels
|
|
116
101
|
const prefix = Buffer.from([
|
|
117
102
|
nodeNetworkId,
|
|
118
103
|
...parentTxTypes.includes(Tag.PayingForTx) ? ['inner_tx'] : [],
|
|
119
104
|
].join('-'));
|
|
120
|
-
const
|
|
121
|
-
const
|
|
122
|
-
const
|
|
123
|
-
if (verify(txWithNetworkId, signatures[0],
|
|
124
|
-
|| verify(txHashWithNetworkId, signatures[0],
|
|
105
|
+
const txBinary = decode(buildTx(encodedTx));
|
|
106
|
+
const txWithNetworkId = concatBuffers([prefix, txBinary]);
|
|
107
|
+
const txHashWithNetworkId = concatBuffers([prefix, hash(txBinary)]);
|
|
108
|
+
if (verify(txWithNetworkId, signatures[0], account.id)
|
|
109
|
+
|| verify(txHashWithNetworkId, signatures[0], account.id)) return [];
|
|
125
110
|
return [{
|
|
126
111
|
message: 'Signature cannot be verified, please ensure that you transaction have'
|
|
127
112
|
+ ' the correct prefix and the correct private key for the sender address',
|
|
@@ -129,16 +114,12 @@ validators.push(
|
|
|
129
114
|
checkedKeys: ['encodedTx', 'signatures'],
|
|
130
115
|
}];
|
|
131
116
|
},
|
|
132
|
-
async ({ encodedTx, tx }, { node, parentTxTypes
|
|
133
|
-
if ((encodedTx ?? tx)
|
|
134
|
-
return
|
|
135
|
-
encode((encodedTx ?? tx).rlpEncoded, Encoding.Transaction),
|
|
136
|
-
node,
|
|
137
|
-
[...parentTxTypes, txType],
|
|
138
|
-
);
|
|
117
|
+
async ({ encodedTx, tx, tag }, { node, parentTxTypes }) => {
|
|
118
|
+
if ((encodedTx ?? tx) == null) return [];
|
|
119
|
+
return verifyTransactionInternal(encodedTx ?? tx, node, [...parentTxTypes, tag]);
|
|
139
120
|
},
|
|
140
121
|
({ ttl }, { height }) => {
|
|
141
|
-
if (ttl
|
|
122
|
+
if (ttl == null) return [];
|
|
142
123
|
ttl = +ttl;
|
|
143
124
|
if (ttl === 0 || ttl >= height) return [];
|
|
144
125
|
return [{
|
|
@@ -148,13 +129,13 @@ validators.push(
|
|
|
148
129
|
}];
|
|
149
130
|
},
|
|
150
131
|
({
|
|
151
|
-
amount, fee, nameFee, tx,
|
|
152
|
-
}, { account, parentTxTypes
|
|
132
|
+
amount, fee, nameFee, tx, tag,
|
|
133
|
+
}, { account, parentTxTypes }) => {
|
|
153
134
|
if (account == null) return [];
|
|
154
|
-
if ((amount ?? fee ?? nameFee)
|
|
135
|
+
if ((amount ?? fee ?? nameFee) == null) return [];
|
|
155
136
|
fee ??= 0;
|
|
156
137
|
const cost = new BigNumber(fee).plus(nameFee ?? 0).plus(amount ?? 0)
|
|
157
|
-
.plus(
|
|
138
|
+
.plus(tag === Tag.PayingForTx ? tx.encodedTx.fee : 0)
|
|
158
139
|
.minus(parentTxTypes.includes(Tag.PayingForTx) ? fee : 0);
|
|
159
140
|
if (cost.lte(account.balance.toString())) return [];
|
|
160
141
|
return [{
|
|
@@ -163,6 +144,18 @@ validators.push(
|
|
|
163
144
|
checkedKeys: ['amount', 'fee', 'nameFee'],
|
|
164
145
|
}];
|
|
165
146
|
},
|
|
147
|
+
({ signatures, tag }, { account }) => {
|
|
148
|
+
if (account == null) return [];
|
|
149
|
+
let message;
|
|
150
|
+
if (tag === Tag.SignedTx && account.kind === 'generalized' && signatures.length !== 0) {
|
|
151
|
+
message = 'Generalized account can\'t be used to generate SignedTx with signatures';
|
|
152
|
+
}
|
|
153
|
+
if (tag === Tag.GaMetaTx && account.kind === 'basic') {
|
|
154
|
+
message = 'Basic account can\'t be used to generate GaMetaTx';
|
|
155
|
+
}
|
|
156
|
+
if (message == null) return [];
|
|
157
|
+
return [{ message, key: 'InvalidAccountType', checkedKeys: ['tag'] }];
|
|
158
|
+
},
|
|
166
159
|
({ nonce }, { account, parentTxTypes }) => {
|
|
167
160
|
if (nonce == null || account == null || parentTxTypes.includes(Tag.GaMetaTx)) return [];
|
|
168
161
|
nonce = +nonce;
|
|
@@ -181,34 +174,36 @@ validators.push(
|
|
|
181
174
|
checkedKeys: ['nonce'],
|
|
182
175
|
}];
|
|
183
176
|
},
|
|
184
|
-
({ ctVersion, abiVersion }, {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
const
|
|
177
|
+
({ ctVersion, abiVersion, tag }, { consensusProtocolVersion }) => {
|
|
178
|
+
const oracleCall = Tag.Oracle === tag || Tag.OracleRegisterTx === tag;
|
|
179
|
+
const contractCreate = Tag.ContractCreateTx === tag || Tag.GaAttachTx === tag;
|
|
180
|
+
const contractCall = Tag.ContractCallTx === tag || Tag.GaMetaTx === tag;
|
|
181
|
+
const type = (oracleCall ? 'oracle-call' : null)
|
|
182
|
+
?? (contractCreate ? 'contract-create' : null)
|
|
183
|
+
?? (contractCall ? 'contract-call' : null);
|
|
184
|
+
if (type == null) return [];
|
|
185
|
+
// TODO: remove assertion after fixing buildTx types
|
|
186
|
+
const protocol = ProtocolToVmAbi[consensusProtocolVersion][type] as unknown as {
|
|
187
|
+
abiVersion: any[];
|
|
188
|
+
vmVersion: any[];
|
|
189
|
+
};
|
|
189
190
|
|
|
190
191
|
// If not contract create tx
|
|
191
192
|
if (ctVersion == null) ctVersion = { abiVersion };
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
key,
|
|
197
|
-
value,
|
|
198
|
-
]: [
|
|
199
|
-
key:keyof typeof txProtocol,
|
|
200
|
-
value:any]) => !(txProtocol[key].includes(+value as never)),
|
|
201
|
-
)) {
|
|
193
|
+
if (
|
|
194
|
+
!protocol.abiVersion.includes(ctVersion.abiVersion)
|
|
195
|
+
|| (contractCreate && !protocol.vmVersion.includes(ctVersion.vmVersion))
|
|
196
|
+
) {
|
|
202
197
|
return [{
|
|
203
|
-
message: `ABI/VM version ${JSON.stringify(ctVersion)} is wrong, supported is: ${JSON.stringify(
|
|
198
|
+
message: `ABI/VM version ${JSON.stringify(ctVersion)} is wrong, supported is: ${JSON.stringify(protocol)}`,
|
|
204
199
|
key: 'VmAndAbiVersionMismatch',
|
|
205
200
|
checkedKeys: ['ctVersion', 'abiVersion'],
|
|
206
201
|
}];
|
|
207
202
|
}
|
|
208
203
|
return [];
|
|
209
204
|
},
|
|
210
|
-
async ({ contractId }, {
|
|
211
|
-
if (Tag.ContractCallTx !==
|
|
205
|
+
async ({ contractId, tag }, { node }) => {
|
|
206
|
+
if (Tag.ContractCallTx !== tag) return [];
|
|
212
207
|
contractId = contractId as Encoded.ContractAddress;
|
|
213
208
|
try {
|
|
214
209
|
const { active } = await node.getContract(contractId);
|
|
@@ -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,37 +23,22 @@ 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
|
|
42
30
|
// Raises ValueError if the input is not an int or string
|
|
43
31
|
|
|
44
|
-
if (val
|
|
32
|
+
if (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
|
}
|