@aeternity/aepp-sdk 11.0.0 → 12.1.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/LICENSE +1 -1
- package/dist/aepp-sdk.browser-script.js +1 -1
- package/dist/aepp-sdk.browser-script.js.LICENSE.txt +0 -22
- package/dist/aepp-sdk.browser-script.js.map +1 -1
- package/dist/aepp-sdk.browser.js +2 -1
- package/dist/aepp-sdk.browser.js.LICENSE.txt +1 -0
- package/dist/aepp-sdk.browser.js.map +1 -1
- package/dist/aepp-sdk.js +20764 -1
- package/dist/aepp-sdk.js.map +1 -1
- package/es/AeSdk.d.ts +37 -0
- package/es/AeSdk.mjs +81 -0
- package/es/AeSdk.mjs.map +1 -0
- package/es/AeSdkAepp.d.ts +70 -0
- package/es/AeSdkAepp.mjs +176 -0
- package/es/AeSdkAepp.mjs.map +1 -0
- package/es/AeSdkBase.d.ts +213 -0
- package/es/AeSdkBase.mjs +314 -0
- package/es/AeSdkBase.mjs.map +1 -0
- package/es/AeSdkWallet.d.ts +104 -0
- package/es/AeSdkWallet.mjs +326 -0
- package/es/AeSdkWallet.mjs.map +1 -0
- package/es/Node.d.ts +41 -0
- package/es/Node.mjs +147 -0
- package/es/Node.mjs.map +1 -0
- package/es/account/Base.d.ts +68 -0
- package/es/account/Base.mjs +123 -0
- package/es/account/Base.mjs.map +1 -0
- package/es/account/Memory.d.ts +26 -0
- package/es/account/Memory.mjs +103 -0
- package/es/account/Memory.mjs.map +1 -0
- package/es/account/Rpc.d.ts +27 -0
- package/es/account/Rpc.mjs +80 -0
- package/es/account/Rpc.mjs.map +1 -0
- package/es/aens.d.ts +222 -0
- package/es/aens.mjs +338 -0
- package/es/aens.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection/Browser.d.ts +33 -0
- package/es/aepp-wallet-communication/connection/Browser.mjs +73 -0
- package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +18 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +58 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +36 -0
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +146 -0
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection-proxy.d.ts +11 -0
- package/{src/utils/crypto-ts.ts → es/aepp-wallet-communication/connection-proxy.mjs} +16 -11
- package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -0
- package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +34 -0
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs +169 -0
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -0
- package/es/aepp-wallet-communication/rpc/types.d.ts +77 -0
- package/es/aepp-wallet-communication/rpc/types.mjs +3 -0
- package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -0
- package/es/aepp-wallet-communication/schema.d.ts +105 -46
- package/es/aepp-wallet-communication/schema.mjs +251 -0
- package/es/aepp-wallet-communication/schema.mjs.map +1 -0
- package/es/aepp-wallet-communication/wallet-detector.d.ts +25 -0
- package/es/aepp-wallet-communication/wallet-detector.mjs +62 -0
- package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
- package/es/apis/compiler/compiler.d.ts +92 -0
- package/es/apis/compiler/compiler.mjs +576 -0
- package/es/apis/compiler/compiler.mjs.map +1 -0
- package/es/apis/compiler/index.d.ts +2 -0
- package/es/apis/compiler/index.mjs +3 -0
- package/es/apis/compiler/index.mjs.map +1 -0
- package/es/apis/compiler/models/index.d.ts +248 -0
- package/es/apis/compiler/models/index.mjs +48 -0
- package/es/apis/compiler/models/index.mjs.map +1 -0
- package/es/apis/compiler/models/mappers.d.ts +23 -0
- package/es/apis/compiler/models/mappers.mjs +585 -0
- package/es/apis/compiler/models/mappers.mjs.map +1 -0
- package/es/apis/compiler/models/parameters.d.ts +13 -0
- package/es/apis/compiler/models/parameters.mjs +71 -0
- package/es/apis/compiler/models/parameters.mjs.map +1 -0
- package/es/apis/node/index.d.ts +2 -0
- package/es/apis/node/index.mjs +3 -0
- package/es/apis/node/index.mjs.map +1 -0
- package/es/apis/node/models/index.d.ts +1065 -0
- package/es/apis/node/models/index.mjs +2 -0
- package/es/apis/node/models/index.mjs.map +1 -0
- package/es/apis/node/models/mappers.d.ts +95 -0
- package/es/apis/node/models/mappers.mjs +4166 -0
- package/es/apis/node/models/mappers.mjs.map +1 -0
- package/es/apis/node/models/parameters.d.ts +17 -0
- package/es/apis/node/models/parameters.mjs +165 -0
- package/es/apis/node/models/parameters.mjs.map +1 -0
- package/es/apis/node/node.d.ts +215 -0
- package/es/apis/node/node.mjs +1165 -0
- package/es/apis/node/node.mjs.map +1 -0
- package/es/chain.d.ts +248 -0
- package/es/chain.mjs +560 -0
- package/es/chain.mjs.map +1 -0
- package/es/channel/handlers.d.ts +34 -0
- package/es/channel/handlers.mjs +164 -131
- package/es/channel/handlers.mjs.map +1 -1
- package/es/channel/index.d.ts +625 -0
- package/es/channel/index.mjs +897 -902
- package/es/channel/index.mjs.map +1 -1
- package/es/channel/internal.d.ts +101 -0
- package/es/channel/internal.mjs +138 -88
- package/es/channel/internal.mjs.map +1 -1
- package/es/contract/Compiler.d.ts +18 -0
- package/es/contract/Compiler.mjs +68 -0
- package/es/contract/Compiler.mjs.map +1 -0
- package/es/contract/aci.d.ts +127 -0
- package/es/contract/aci.mjs +225 -193
- package/es/contract/aci.mjs.map +1 -1
- package/es/contract/ga.d.ts +69 -0
- package/es/contract/ga.mjs +195 -0
- package/es/contract/ga.mjs.map +1 -0
- package/es/contract/methods.d.ts +71 -0
- package/es/contract/methods.mjs +104 -0
- package/es/contract/methods.mjs.map +1 -0
- package/es/deprecated/index.d.ts +143 -0
- package/es/deprecated/index.mjs +162 -0
- package/es/deprecated/index.mjs.map +1 -0
- package/es/deprecated/methods.d.ts +18 -0
- package/es/deprecated/methods.mjs +26 -0
- package/es/deprecated/methods.mjs.map +1 -0
- package/es/index.d.ts +35 -0
- package/es/index.mjs +35 -40
- package/es/index.mjs.map +1 -1
- package/es/oracle.d.ts +161 -0
- package/es/oracle.mjs +306 -0
- package/es/oracle.mjs.map +1 -0
- package/es/spend.d.ts +62 -0
- package/es/spend.mjs +111 -0
- package/es/spend.mjs.map +1 -0
- package/es/tx/builder/address.d.ts +25 -0
- package/es/tx/builder/address.mjs +45 -0
- package/es/tx/builder/address.mjs.map +1 -0
- package/es/tx/builder/constants.d.ts +70 -0
- package/es/tx/builder/constants.mjs +122 -0
- package/es/tx/builder/constants.mjs.map +1 -0
- package/es/tx/builder/field-types/coin-amount.d.ts +13 -0
- package/es/tx/builder/field-types/coin-amount.mjs +26 -0
- package/es/tx/builder/field-types/coin-amount.mjs.map +1 -0
- package/es/tx/builder/field-types/deposit.d.ts +15 -0
- package/es/tx/builder/field-types/deposit.mjs +19 -0
- package/es/tx/builder/field-types/deposit.mjs.map +1 -0
- package/es/tx/builder/field-types/fee.d.ts +25 -0
- package/es/tx/builder/field-types/fee.mjs +150 -0
- package/es/tx/builder/field-types/fee.mjs.map +1 -0
- package/es/tx/builder/field-types/field.d.ts +6 -0
- package/es/tx/builder/field-types/field.mjs +15 -0
- package/es/tx/builder/field-types/field.mjs.map +1 -0
- package/es/tx/builder/field-types/gas-limit.d.ts +12 -0
- package/es/tx/builder/field-types/gas-limit.mjs +33 -0
- package/es/tx/builder/field-types/gas-limit.mjs.map +1 -0
- package/es/tx/builder/field-types/gas-price.d.ts +8 -0
- package/es/tx/builder/field-types/gas-price.mjs +18 -0
- package/es/tx/builder/field-types/gas-price.mjs.map +1 -0
- package/es/tx/builder/field-types/index.d.ts +70 -0
- package/es/tx/builder/field-types/index.mjs +25 -0
- package/es/tx/builder/field-types/index.mjs.map +1 -0
- package/es/tx/builder/field-types/name-fee.d.ts +20 -0
- package/es/tx/builder/field-types/name-fee.mjs +24 -0
- package/es/tx/builder/field-types/name-fee.mjs.map +1 -0
- package/es/tx/builder/field-types/name-id.d.ts +14 -0
- package/es/tx/builder/field-types/name-id.mjs +19 -0
- package/es/tx/builder/field-types/name-id.mjs.map +1 -0
- package/es/tx/builder/field-types/name.d.ts +13 -0
- package/es/tx/builder/field-types/name.mjs +18 -0
- package/es/tx/builder/field-types/name.mjs.map +1 -0
- package/es/tx/builder/field-types/short-u-int.d.ts +6 -0
- package/es/tx/builder/field-types/short-u-int.mjs +12 -0
- package/es/tx/builder/field-types/short-u-int.mjs.map +1 -0
- package/es/tx/builder/field-types/u-int.d.ts +8 -0
- package/es/tx/builder/field-types/u-int.mjs +14 -0
- package/es/tx/builder/field-types/u-int.mjs.map +1 -0
- package/es/tx/builder/helpers.d.ts +125 -0
- package/es/tx/builder/helpers.mjs +94 -240
- package/es/tx/builder/helpers.mjs.map +1 -1
- package/es/tx/builder/index.d.ts +88 -0
- package/es/tx/builder/index.mjs +167 -358
- package/es/tx/builder/index.mjs.map +1 -1
- package/es/tx/builder/schema.d.ts +1201 -0
- package/es/tx/builder/schema.mjs +175 -664
- package/es/tx/builder/schema.mjs.map +1 -1
- package/es/tx/index.d.ts +64 -0
- package/es/tx/index.mjs +151 -265
- package/es/tx/index.mjs.map +1 -1
- package/es/tx/validator.d.ts +20 -0
- package/es/tx/validator.mjs +104 -124
- package/es/tx/validator.mjs.map +1 -1
- package/es/typings/@aeternity__argon2-browser/index.d.mjs +2 -0
- package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -0
- package/es/typings/@aeternity__uuid/index.d.mjs +2 -0
- package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -0
- package/es/typings/bip32-path/index.d.mjs +2 -0
- package/es/typings/bip32-path/index.d.mjs.map +1 -0
- package/es/typings/blakejs/index.d.mjs.map +1 -1
- package/es/typings/sha-js/index.d.mjs +2 -0
- package/es/typings/sha-js/index.d.mjs.map +1 -0
- package/es/typings/tweetnacl-auth/index.d.mjs +2 -0
- package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -0
- package/es/utils/amount-formatter.d.ts +42 -0
- package/es/utils/amount-formatter.mjs +36 -49
- package/es/utils/amount-formatter.mjs.map +1 -1
- package/es/utils/autorest.d.ts +6 -0
- package/es/utils/autorest.mjs +97 -0
- package/es/utils/autorest.mjs.map +1 -0
- package/es/utils/bignumber.d.ts +13 -0
- package/es/utils/bignumber.mjs +11 -8
- package/es/utils/bignumber.mjs.map +1 -1
- package/es/{bytes.d.ts → utils/bytes.d.ts} +10 -13
- package/es/utils/bytes.mjs +11 -15
- package/es/utils/bytes.mjs.map +1 -1
- package/es/utils/crypto.d.ts +88 -0
- package/es/utils/crypto.mjs +64 -108
- package/es/utils/crypto.mjs.map +1 -1
- package/es/utils/encoder-types.d.ts +61 -0
- package/es/utils/encoder-types.mjs +36 -0
- package/es/utils/encoder-types.mjs.map +1 -0
- package/es/utils/encoder.d.ts +25 -0
- package/es/utils/encoder.mjs +118 -0
- package/es/utils/encoder.mjs.map +1 -0
- package/es/{errors.d.ts → utils/errors.d.ts} +246 -59
- package/es/utils/errors.mjs +313 -136
- package/es/utils/errors.mjs.map +1 -1
- package/es/utils/hd-wallet.d.ts +50 -0
- package/es/utils/hd-wallet.mjs +86 -45
- package/es/utils/hd-wallet.mjs.map +1 -1
- package/es/utils/json-big.d.ts +5 -0
- package/es/utils/json-big.mjs +12 -16
- package/es/utils/json-big.mjs.map +1 -1
- package/es/utils/keystore.d.ts +51 -0
- package/es/utils/keystore.mjs +101 -194
- package/es/utils/keystore.mjs.map +1 -1
- package/es/{mptree.d.ts → utils/mptree.d.ts} +6 -9
- package/es/utils/mptree.mjs +22 -18
- package/es/utils/mptree.mjs.map +1 -1
- package/es/utils/other.d.ts +20 -0
- package/es/utils/other.mjs +32 -35
- package/es/utils/other.mjs.map +1 -1
- package/es/utils/semver-satisfies.d.ts +1 -0
- package/es/utils/semver-satisfies.mjs +2 -2
- package/es/utils/semver-satisfies.mjs.map +1 -1
- package/es/utils/string.d.ts +24 -0
- package/es/utils/string.mjs +8 -10
- package/es/utils/string.mjs.map +1 -1
- package/package.json +56 -42
- package/src/AeSdk.ts +68 -0
- package/src/AeSdkAepp.ts +176 -0
- package/src/AeSdkBase.ts +338 -0
- package/src/AeSdkWallet.ts +348 -0
- package/src/Node.ts +173 -0
- package/src/account/Base.ts +124 -0
- package/src/account/Memory.ts +98 -0
- package/src/account/Rpc.ts +69 -0
- package/src/aens.ts +407 -0
- package/src/aepp-wallet-communication/connection/Browser.ts +71 -0
- package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +59 -0
- package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +122 -0
- package/{es/utils/crypto-ts.mjs → src/aepp-wallet-communication/connection-proxy.ts} +18 -18
- package/src/aepp-wallet-communication/rpc/RpcClient.ts +143 -0
- package/src/aepp-wallet-communication/rpc/types.ts +66 -0
- package/src/aepp-wallet-communication/schema.ts +224 -0
- package/src/aepp-wallet-communication/wallet-detector.ts +72 -0
- package/src/apis/compiler/code-model-v4.yaml +2649 -0
- package/src/apis/compiler/compiler.ts +585 -0
- package/src/apis/compiler/index.ts +2 -0
- package/src/apis/compiler/models/index.ts +301 -0
- package/src/apis/compiler/models/mappers.ts +583 -0
- package/src/apis/compiler/models/parameters.ts +93 -0
- package/src/apis/node/code-model-v4.yaml +10080 -0
- package/src/apis/node/index.ts +2 -0
- package/src/apis/node/models/index.ts +1257 -0
- package/src/apis/node/models/mappers.ts +4280 -0
- package/src/apis/node/models/parameters.ts +188 -0
- package/src/apis/node/node.ts +1299 -0
- package/src/chain.ts +502 -0
- package/src/channel/handlers.ts +817 -0
- package/src/channel/index.ts +1025 -0
- package/src/channel/internal.ts +361 -0
- package/src/contract/Compiler.ts +67 -0
- package/src/contract/aci.ts +538 -0
- package/src/contract/ga.ts +199 -0
- package/src/contract/methods.ts +123 -0
- package/src/deprecated/index.ts +170 -0
- package/src/deprecated/methods.ts +25 -0
- package/src/index.ts +56 -0
- package/src/oracle.ts +364 -0
- package/src/spend.ts +164 -0
- package/src/tx/builder/address.ts +50 -0
- package/src/tx/builder/constants.ts +126 -0
- package/src/tx/builder/field-types/coin-amount.ts +27 -0
- package/src/tx/builder/field-types/deposit.ts +21 -0
- package/src/tx/builder/field-types/fee.ts +143 -0
- package/src/tx/builder/field-types/field.ts +9 -0
- package/src/tx/builder/field-types/gas-limit.ts +41 -0
- package/src/tx/builder/field-types/gas-price.ts +16 -0
- package/src/tx/builder/field-types/index.ts +45 -0
- package/src/tx/builder/field-types/name-fee.ts +32 -0
- package/src/tx/builder/field-types/name-id.ts +20 -0
- package/src/tx/builder/field-types/name.ts +18 -0
- package/src/tx/builder/field-types/short-u-int.ts +11 -0
- package/src/tx/builder/field-types/u-int.ts +16 -0
- package/src/tx/builder/helpers.ts +248 -0
- package/src/tx/builder/index.ts +400 -0
- package/src/tx/builder/schema.ts +727 -0
- package/src/tx/index.ts +192 -0
- package/src/tx/validator.ts +230 -0
- package/src/typings/@aeternity__argon2-browser/index.d.ts +3 -0
- package/src/typings/@aeternity__uuid/index.d.ts +5 -0
- package/src/typings/bip32-path/index.d.ts +33 -0
- package/src/typings/blakejs/index.d.ts +4 -32
- package/src/typings/sha-js/index.d.ts +5 -0
- package/src/typings/tweetnacl-auth/index.d.ts +14 -0
- package/src/utils/amount-formatter.ts +56 -69
- package/src/utils/autorest.ts +93 -0
- package/src/utils/bignumber.ts +11 -12
- package/src/utils/bytes.ts +29 -31
- package/src/utils/crypto.ts +205 -0
- package/src/utils/encoder-types.ts +63 -0
- package/src/utils/encoder.ts +146 -0
- package/src/utils/errors.ts +482 -366
- package/src/utils/hd-wallet.ts +166 -0
- package/src/utils/json-big.ts +27 -0
- package/src/utils/keystore.ts +182 -0
- package/src/utils/mptree.ts +64 -61
- package/src/utils/other.ts +34 -41
- package/src/utils/semver-satisfies.ts +15 -11
- package/src/utils/string.ts +18 -20
- package/es/account/base.mjs +0 -179
- package/es/account/base.mjs.map +0 -1
- package/es/account/memory.mjs +0 -99
- package/es/account/memory.mjs.map +0 -1
- package/es/account/multiple.mjs +0 -179
- package/es/account/multiple.mjs.map +0 -1
- package/es/ae/aens.mjs +0 -404
- package/es/ae/aens.mjs.map +0 -1
- package/es/ae/aepp.mjs +0 -45
- package/es/ae/aepp.mjs.map +0 -1
- package/es/ae/contract.mjs +0 -159
- package/es/ae/contract.mjs.map +0 -1
- package/es/ae/index.mjs +0 -207
- package/es/ae/index.mjs.map +0 -1
- package/es/ae/oracle.mjs +0 -339
- package/es/ae/oracle.mjs.map +0 -1
- package/es/ae/universal.mjs +0 -45
- package/es/ae/universal.mjs.map +0 -1
- package/es/ae/wallet.mjs +0 -50
- package/es/ae/wallet.mjs.map +0 -1
- package/es/amount-formatter.d.ts +0 -58
- package/es/bignumber.d.ts +0 -18
- package/es/chain/index.mjs +0 -272
- package/es/chain/index.mjs.map +0 -1
- package/es/chain/node.mjs +0 -442
- package/es/chain/node.mjs.map +0 -1
- package/es/contract/compiler.mjs +0 -115
- package/es/contract/compiler.mjs.map +0 -1
- package/es/contract/ga/helpers.mjs +0 -30
- package/es/contract/ga/helpers.mjs.map +0 -1
- package/es/contract/ga/index.mjs +0 -178
- package/es/contract/ga/index.mjs.map +0 -1
- package/es/crypto-ts.d.ts +0 -9
- package/es/node-pool/index.mjs +0 -188
- package/es/node-pool/index.mjs.map +0 -1
- package/es/node.mjs +0 -133
- package/es/node.mjs.map +0 -1
- package/es/other.d.ts +0 -31
- package/es/semver-satisfies.d.ts +0 -1
- package/es/string.d.ts +0 -26
- package/es/tx/builder/field-types.mjs +0 -74
- package/es/tx/builder/field-types.mjs.map +0 -1
- package/es/tx/tx-object.mjs +0 -283
- package/es/tx/tx-object.mjs.map +0 -1
- package/es/tx/tx.mjs +0 -938
- package/es/tx/tx.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs +0 -132
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs +0 -183
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/connection/index.mjs +0 -87
- package/es/utils/aepp-wallet-communication/connection/index.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/content-script-bridge.mjs +0 -98
- package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/helpers.mjs +0 -92
- package/es/utils/aepp-wallet-communication/helpers.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +0 -375
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs +0 -275
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs +0 -541
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/schema.mjs +0 -102
- package/es/utils/aepp-wallet-communication/schema.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/wallet-detector.mjs +0 -110
- package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +0 -1
- package/es/utils/async-init.mjs +0 -64
- package/es/utils/async-init.mjs.map +0 -1
- package/es/utils/crypto-ts.mjs.map +0 -1
- package/es/utils/swagger.mjs +0 -164
- package/es/utils/swagger.mjs.map +0 -1
- package/src/account/base.js +0 -153
- package/src/account/memory.js +0 -83
- package/src/account/multiple.js +0 -162
- package/src/ae/aens.js +0 -361
- package/src/ae/aepp.js +0 -45
- package/src/ae/contract.js +0 -148
- package/src/ae/index.js +0 -168
- package/src/ae/oracle.js +0 -311
- package/src/ae/universal.js +0 -47
- package/src/ae/wallet.js +0 -50
- package/src/chain/index.js +0 -269
- package/src/chain/node.js +0 -320
- package/src/channel/handlers.js +0 -673
- package/src/channel/index.js +0 -898
- package/src/channel/internal.js +0 -237
- package/src/contract/aci.js +0 -376
- package/src/contract/compiler.js +0 -100
- package/src/contract/ga/helpers.js +0 -19
- package/src/contract/ga/index.js +0 -150
- package/src/index.js +0 -89
- package/src/node-pool/index.js +0 -172
- package/src/node.js +0 -116
- package/src/tx/builder/field-types.js +0 -61
- package/src/tx/builder/helpers.js +0 -380
- package/src/tx/builder/index.js +0 -465
- package/src/tx/builder/schema.js +0 -1197
- package/src/tx/index.js +0 -301
- package/src/tx/tx-object.js +0 -187
- package/src/tx/tx.js +0 -631
- package/src/tx/validator.js +0 -181
- package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -119
- package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -165
- package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
- package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -86
- package/src/utils/aepp-wallet-communication/helpers.js +0 -60
- package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -294
- package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -232
- package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -401
- package/src/utils/aepp-wallet-communication/schema.ts +0 -80
- package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -92
- package/src/utils/async-init.js +0 -45
- package/src/utils/crypto.js +0 -229
- package/src/utils/hd-wallet.js +0 -100
- package/src/utils/json-big.js +0 -26
- package/src/utils/keystore.js +0 -219
- package/src/utils/swagger.js +0 -156
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import uInt, { Int } from './u-int';
|
|
2
|
+
import { AE_AMOUNT_FORMATS, formatAmount } from '../../../utils/amount-formatter';
|
|
3
|
+
import { ArgumentError } from '../../../utils/errors';
|
|
4
|
+
|
|
5
|
+
export interface Options { denomination?: AE_AMOUNT_FORMATS }
|
|
6
|
+
|
|
7
|
+
export default {
|
|
8
|
+
...uInt,
|
|
9
|
+
|
|
10
|
+
serializeAettos(value: string | undefined): string {
|
|
11
|
+
if (value == null) throw new ArgumentError('value', 'provided', value);
|
|
12
|
+
return value;
|
|
13
|
+
},
|
|
14
|
+
|
|
15
|
+
serializeOptional(value: Int | undefined, { denomination, ...options }: Options): Buffer {
|
|
16
|
+
return uInt.serialize(
|
|
17
|
+
this.serializeAettos(
|
|
18
|
+
value != null ? formatAmount(value, { denomination }) : value,
|
|
19
|
+
options,
|
|
20
|
+
),
|
|
21
|
+
);
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
serialize(value: Int, options: Options): Buffer {
|
|
25
|
+
return this.serializeOptional(value, options);
|
|
26
|
+
},
|
|
27
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import coinAmount from './coin-amount';
|
|
2
|
+
import { Int } from './u-int';
|
|
3
|
+
import { IllegalArgumentError } from '../../../utils/errors';
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
...coinAmount,
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @param value - Deposit value in string format. Should be equal to '0'.
|
|
10
|
+
* @param options - Options
|
|
11
|
+
* @returns Deposit value Buffer.
|
|
12
|
+
*/
|
|
13
|
+
serialize(
|
|
14
|
+
value: Int | undefined,
|
|
15
|
+
options: Parameters<typeof coinAmount['serialize']>[1],
|
|
16
|
+
): Buffer {
|
|
17
|
+
value ??= 0;
|
|
18
|
+
if (+value !== 0) throw new IllegalArgumentError(`Contract deposit is not refundable, so it should be equal 0, got ${value.toString()} instead`);
|
|
19
|
+
return coinAmount.serialize(value, options);
|
|
20
|
+
},
|
|
21
|
+
};
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import BigNumber from 'bignumber.js';
|
|
2
|
+
import { IllegalArgumentError } from '../../../utils/errors';
|
|
3
|
+
import { MIN_GAS_PRICE, Tag } from '../constants';
|
|
4
|
+
import coinAmount from './coin-amount';
|
|
5
|
+
import { isKeyOfObject } from '../../../utils/other';
|
|
6
|
+
|
|
7
|
+
const BASE_GAS = 15000;
|
|
8
|
+
const GAS_PER_BYTE = 20;
|
|
9
|
+
const KEY_BLOCK_INTERVAL = 3;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Calculate the Base fee gas
|
|
13
|
+
* @see {@link https://github.com/aeternity/protocol/blob/master/consensus/README.md#gas}
|
|
14
|
+
* @param txType - The transaction type
|
|
15
|
+
* @returns The base fee
|
|
16
|
+
* @example
|
|
17
|
+
* ```js
|
|
18
|
+
* TX_FEE_BASE('channelForceProgress') => new BigNumber(30 * 15000)
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
const TX_FEE_BASE_GAS = (txType: Tag): BigNumber => {
|
|
22
|
+
const feeFactors = {
|
|
23
|
+
[Tag.ChannelForceProgressTx]: 30,
|
|
24
|
+
[Tag.ChannelOffChainTx]: 0,
|
|
25
|
+
[Tag.ChannelOffChainUpdateCallContract]: 0,
|
|
26
|
+
[Tag.ChannelOffChainUpdateCreateContract]: 0,
|
|
27
|
+
[Tag.ChannelOffChainUpdateDeposit]: 0,
|
|
28
|
+
[Tag.ChannelOffChainUpdateWithdraw]: 0,
|
|
29
|
+
[Tag.ChannelOffChainUpdateTransfer]: 0,
|
|
30
|
+
[Tag.ContractCreateTx]: 5,
|
|
31
|
+
[Tag.ContractCallTx]: 12,
|
|
32
|
+
[Tag.GaAttachTx]: 5,
|
|
33
|
+
[Tag.GaMetaTx]: 5,
|
|
34
|
+
[Tag.PayingForTx]: 1 / 5,
|
|
35
|
+
} as const;
|
|
36
|
+
const factor = feeFactors[txType as keyof typeof feeFactors] ?? 1;
|
|
37
|
+
return new BigNumber(factor * BASE_GAS);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Calculate fee for Other types of transactions
|
|
42
|
+
* @see {@link https://github.com/aeternity/protocol/blob/master/consensus/README.md#gas}
|
|
43
|
+
* @param txType - The transaction type
|
|
44
|
+
* @param txSize - The transaction size
|
|
45
|
+
* @returns parameters - The transaction parameters
|
|
46
|
+
* @returns parameters.relativeTtl - The relative ttl
|
|
47
|
+
* @returns parameters.innerTxSize - The size of the inner transaction
|
|
48
|
+
* @returns The Other fee
|
|
49
|
+
* @example
|
|
50
|
+
* ```js
|
|
51
|
+
* TX_FEE_OTHER_GAS('oracleResponse',10, { relativeTtl: 10, innerTxSize: 10 })
|
|
52
|
+
* => new BigNumber(10).times(20).plus(Math.ceil(32000 * 10 / Math.floor(60 * 24 * 365 / 2)))
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
const TX_FEE_OTHER_GAS = (
|
|
56
|
+
txType: Tag,
|
|
57
|
+
txSize: number,
|
|
58
|
+
{ relativeTtl, innerTxSize }: { relativeTtl: number; innerTxSize: number },
|
|
59
|
+
): BigNumber => {
|
|
60
|
+
switch (txType) {
|
|
61
|
+
case Tag.OracleRegisterTx:
|
|
62
|
+
case Tag.OracleExtendTx:
|
|
63
|
+
case Tag.OracleQueryTx:
|
|
64
|
+
case Tag.OracleResponseTx:
|
|
65
|
+
return new BigNumber(txSize)
|
|
66
|
+
.times(GAS_PER_BYTE)
|
|
67
|
+
.plus(
|
|
68
|
+
Math.ceil((32000 * relativeTtl) / Math.floor((60 * 24 * 365) / KEY_BLOCK_INTERVAL)),
|
|
69
|
+
);
|
|
70
|
+
case Tag.GaMetaTx:
|
|
71
|
+
case Tag.PayingForTx:
|
|
72
|
+
return new BigNumber(txSize).minus(innerTxSize).times(GAS_PER_BYTE);
|
|
73
|
+
default:
|
|
74
|
+
return new BigNumber(txSize).times(GAS_PER_BYTE);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
function getOracleRelativeTtl(params: any, txType: Tag): number {
|
|
79
|
+
const ttlKeys = {
|
|
80
|
+
[Tag.OracleRegisterTx]: 'oracleTtlValue',
|
|
81
|
+
[Tag.OracleExtendTx]: 'oracleTtlValue',
|
|
82
|
+
[Tag.OracleQueryTx]: 'queryTtlValue',
|
|
83
|
+
[Tag.OracleResponseTx]: 'responseTtlValue',
|
|
84
|
+
} as const;
|
|
85
|
+
|
|
86
|
+
if (!isKeyOfObject(txType, ttlKeys)) return 1;
|
|
87
|
+
return params[ttlKeys[txType]];
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Calculate fee based on tx type and params
|
|
92
|
+
*/
|
|
93
|
+
export function buildFee(txType: Tag, buildTx: any): BigNumber {
|
|
94
|
+
const { rlpEncoded: { length }, txObject } = buildTx;
|
|
95
|
+
|
|
96
|
+
return TX_FEE_BASE_GAS(txType)
|
|
97
|
+
.plus(TX_FEE_OTHER_GAS(txType, length, {
|
|
98
|
+
relativeTtl: getOracleRelativeTtl(txObject, txType),
|
|
99
|
+
innerTxSize: [Tag.GaMetaTx, Tag.PayingForTx].includes(txType)
|
|
100
|
+
? txObject.tx.tx.encodedTx.rlpEncoded.length
|
|
101
|
+
: 0,
|
|
102
|
+
}))
|
|
103
|
+
.times(MIN_GAS_PRICE);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Calculate min fee
|
|
108
|
+
* @category transaction builder
|
|
109
|
+
* @param txType - Transaction type
|
|
110
|
+
* @param rebuildTx - Callback to get built transaction with specific fee
|
|
111
|
+
*/
|
|
112
|
+
export function calculateMinFee(
|
|
113
|
+
txType: Tag,
|
|
114
|
+
rebuildTx: (value: BigNumber) => any,
|
|
115
|
+
): BigNumber {
|
|
116
|
+
let fee = new BigNumber(0);
|
|
117
|
+
let previousFee;
|
|
118
|
+
do {
|
|
119
|
+
previousFee = fee;
|
|
120
|
+
fee = buildFee(txType, rebuildTx(fee));
|
|
121
|
+
} while (!fee.eq(previousFee));
|
|
122
|
+
return fee;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export default {
|
|
126
|
+
...coinAmount,
|
|
127
|
+
|
|
128
|
+
serializeAettos(
|
|
129
|
+
_value: string | undefined,
|
|
130
|
+
{ txType, rebuildTx, _computingMinFee }:
|
|
131
|
+
{ txType: Tag; rebuildTx: (params: any) => any; _computingMinFee?: string },
|
|
132
|
+
): string {
|
|
133
|
+
if (_computingMinFee != null) return _computingMinFee;
|
|
134
|
+
const minFee = calculateMinFee(txType, (fee) => rebuildTx({ _computingMinFee: fee }));
|
|
135
|
+
const value = new BigNumber(_value ?? minFee);
|
|
136
|
+
if (minFee.gt(value)) {
|
|
137
|
+
throw new IllegalArgumentError(`Fee ${value.toString()} must be bigger then ${minFee}`);
|
|
138
|
+
}
|
|
139
|
+
return value.toFixed();
|
|
140
|
+
},
|
|
141
|
+
|
|
142
|
+
serialize: coinAmount.serializeOptional,
|
|
143
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { IllegalArgumentError } from '../../../utils/errors';
|
|
2
|
+
import { MIN_GAS_PRICE, Tag } from '../constants';
|
|
3
|
+
import shortUInt from './short-u-int';
|
|
4
|
+
import { buildFee } from './fee';
|
|
5
|
+
|
|
6
|
+
function calculateGasLimitMax(
|
|
7
|
+
txType: Tag,
|
|
8
|
+
gasMax: number,
|
|
9
|
+
rebuildTx: (value: number) => any,
|
|
10
|
+
): number {
|
|
11
|
+
return gasMax - +buildFee(txType, rebuildTx(gasMax)).dividedBy(MIN_GAS_PRICE);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export default {
|
|
15
|
+
...shortUInt,
|
|
16
|
+
|
|
17
|
+
serialize(
|
|
18
|
+
_value: number | undefined,
|
|
19
|
+
{
|
|
20
|
+
txType, rebuildTx, gasMax = 6e6, _computingGasLimit,
|
|
21
|
+
}: {
|
|
22
|
+
txType: Tag;
|
|
23
|
+
rebuildTx: (params: any) => any;
|
|
24
|
+
gasMax: number;
|
|
25
|
+
_computingGasLimit?: number;
|
|
26
|
+
},
|
|
27
|
+
): Buffer {
|
|
28
|
+
if (_computingGasLimit != null) return shortUInt.serialize(_computingGasLimit);
|
|
29
|
+
|
|
30
|
+
const gasLimitMax = calculateGasLimitMax(
|
|
31
|
+
txType,
|
|
32
|
+
gasMax,
|
|
33
|
+
(gasLimit) => rebuildTx({ _computingGasLimit: gasLimit }),
|
|
34
|
+
);
|
|
35
|
+
const value = _value ?? gasLimitMax;
|
|
36
|
+
if (value > gasLimitMax) {
|
|
37
|
+
throw new IllegalArgumentError(`Gas limit ${value} must be less or equal to ${gasLimitMax}`);
|
|
38
|
+
}
|
|
39
|
+
return shortUInt.serialize(value);
|
|
40
|
+
},
|
|
41
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import coinAmount from './coin-amount';
|
|
2
|
+
import { IllegalArgumentError } from '../../../utils/errors';
|
|
3
|
+
import { MIN_GAS_PRICE } from '../constants';
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
...coinAmount,
|
|
7
|
+
|
|
8
|
+
serializeAettos(value: string | undefined = MIN_GAS_PRICE.toString()): string {
|
|
9
|
+
if (+value < MIN_GAS_PRICE) {
|
|
10
|
+
throw new IllegalArgumentError(`Gas price ${value.toString()} must be bigger then ${MIN_GAS_PRICE}`);
|
|
11
|
+
}
|
|
12
|
+
return value;
|
|
13
|
+
},
|
|
14
|
+
|
|
15
|
+
serialize: coinAmount.serializeOptional,
|
|
16
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import _field from './field';
|
|
2
|
+
import _uInt from './u-int';
|
|
3
|
+
import _shortUInt from './short-u-int';
|
|
4
|
+
import _coinAmount from './coin-amount';
|
|
5
|
+
|
|
6
|
+
import _deposit from './deposit';
|
|
7
|
+
import _fee from './fee';
|
|
8
|
+
import _gasLimit from './gas-limit';
|
|
9
|
+
import _gasPrice from './gas-price';
|
|
10
|
+
import _name from './name';
|
|
11
|
+
import _nameFee from './name-fee';
|
|
12
|
+
import _nameId from './name-id';
|
|
13
|
+
|
|
14
|
+
// TODO: remove after fixing https://github.com/Gerrit0/typedoc-plugin-missing-exports/issues/15
|
|
15
|
+
const field = _field;
|
|
16
|
+
const uInt = _uInt;
|
|
17
|
+
const shortUInt = _shortUInt;
|
|
18
|
+
const coinAmount = _coinAmount;
|
|
19
|
+
|
|
20
|
+
const deposit = _deposit;
|
|
21
|
+
const fee = _fee;
|
|
22
|
+
const gasLimit = _gasLimit;
|
|
23
|
+
const gasPrice = _gasPrice;
|
|
24
|
+
const name = _name;
|
|
25
|
+
const nameFee = _nameFee;
|
|
26
|
+
const nameId = _nameId;
|
|
27
|
+
|
|
28
|
+
export type Field = typeof field | typeof uInt | typeof shortUInt | typeof coinAmount
|
|
29
|
+
| typeof deposit | typeof fee | typeof gasLimit | typeof gasPrice | typeof name | typeof nameFee
|
|
30
|
+
| typeof nameId;
|
|
31
|
+
|
|
32
|
+
export {
|
|
33
|
+
field,
|
|
34
|
+
uInt,
|
|
35
|
+
shortUInt,
|
|
36
|
+
coinAmount,
|
|
37
|
+
|
|
38
|
+
deposit,
|
|
39
|
+
fee,
|
|
40
|
+
gasLimit,
|
|
41
|
+
gasPrice,
|
|
42
|
+
name,
|
|
43
|
+
nameFee,
|
|
44
|
+
nameId,
|
|
45
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import BigNumber from 'bignumber.js';
|
|
2
|
+
import { getMinimumNameFee } from '../helpers';
|
|
3
|
+
import { InsufficientNameFeeError } from '../../../utils/errors';
|
|
4
|
+
import { Int } from './u-int';
|
|
5
|
+
import coinAmount from './coin-amount';
|
|
6
|
+
import { AensName } from '../constants';
|
|
7
|
+
|
|
8
|
+
export default {
|
|
9
|
+
...coinAmount,
|
|
10
|
+
|
|
11
|
+
serializeAettos(
|
|
12
|
+
_value: string | undefined,
|
|
13
|
+
txFields: { name: AensName },
|
|
14
|
+
): string {
|
|
15
|
+
const minNameFee = getMinimumNameFee(txFields.name);
|
|
16
|
+
const value = new BigNumber(_value ?? minNameFee);
|
|
17
|
+
if (minNameFee.gt(value)) throw new InsufficientNameFeeError(value, minNameFee);
|
|
18
|
+
return value.toFixed();
|
|
19
|
+
},
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @param value - AENS name fee Buffer
|
|
23
|
+
* @param txFields - Transaction fields
|
|
24
|
+
* @param txFields.name - AENS Name in transaction
|
|
25
|
+
*/
|
|
26
|
+
serialize(
|
|
27
|
+
value: Int | undefined,
|
|
28
|
+
txFields: { name: AensName } & Parameters<typeof coinAmount['serialize']>[1],
|
|
29
|
+
): Buffer {
|
|
30
|
+
return coinAmount.serializeOptional.call(this, value, txFields);
|
|
31
|
+
},
|
|
32
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AensName } from '../constants';
|
|
2
|
+
import { produceNameId, isNameValid } from '../helpers';
|
|
3
|
+
import { writeId, readId } from '../address';
|
|
4
|
+
import { Encoded } from '../../../utils/encoder';
|
|
5
|
+
|
|
6
|
+
export default {
|
|
7
|
+
/**
|
|
8
|
+
* @param value - AENS name ID
|
|
9
|
+
*/
|
|
10
|
+
serialize(value: AensName | Encoded.Name): Buffer {
|
|
11
|
+
return writeId(isNameValid(value) ? produceNameId(value) : value);
|
|
12
|
+
},
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @param value - AENS name ID Buffer
|
|
16
|
+
*/
|
|
17
|
+
deserialize(value: Buffer): Encoded.Name {
|
|
18
|
+
return readId(value) as Encoded.Name;
|
|
19
|
+
},
|
|
20
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import field from './field';
|
|
2
|
+
import { AensName } from '../constants';
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
/**
|
|
6
|
+
* @param value - AENS name
|
|
7
|
+
*/
|
|
8
|
+
serialize(value: AensName): Buffer {
|
|
9
|
+
return field.serialize(value);
|
|
10
|
+
},
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @param value - AENS name
|
|
14
|
+
*/
|
|
15
|
+
deserialize(value: Buffer): AensName {
|
|
16
|
+
return field.deserialize(value) as AensName;
|
|
17
|
+
},
|
|
18
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import BigNumber from 'bignumber.js';
|
|
2
|
+
import { readInt, writeInt } from '../helpers';
|
|
3
|
+
import { ArgumentError } from '../../../utils/errors';
|
|
4
|
+
|
|
5
|
+
export type Int = number | string | BigNumber;
|
|
6
|
+
|
|
7
|
+
export default {
|
|
8
|
+
serialize(value: Int): Buffer {
|
|
9
|
+
if (value < 0) throw new ArgumentError('value', 'greater or equal to 0', value);
|
|
10
|
+
return writeInt(value);
|
|
11
|
+
},
|
|
12
|
+
|
|
13
|
+
deserialize(value: Buffer): string {
|
|
14
|
+
return readInt(value);
|
|
15
|
+
},
|
|
16
|
+
};
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import BigNumber from 'bignumber.js';
|
|
2
|
+
import { genSalt, hash } from '../../utils/crypto';
|
|
3
|
+
import {
|
|
4
|
+
decode, encode, Encoded, Encoding,
|
|
5
|
+
} from '../../utils/encoder';
|
|
6
|
+
import { toBytes } from '../../utils/bytes';
|
|
7
|
+
import { concatBuffers } from '../../utils/other';
|
|
8
|
+
import {
|
|
9
|
+
AensName,
|
|
10
|
+
NAME_BID_RANGES,
|
|
11
|
+
NAME_BID_TIMEOUT_BLOCKS,
|
|
12
|
+
NAME_FEE_BID_INCREMENT,
|
|
13
|
+
NAME_MAX_LENGTH_FEE,
|
|
14
|
+
} from './constants';
|
|
15
|
+
import { ceil } from '../../utils/bignumber';
|
|
16
|
+
import { ArgumentError, IllegalBidFeeError } from '../../utils/errors';
|
|
17
|
+
import { NamePointer } from '../../apis/node';
|
|
18
|
+
import { readId, writeId } from './address';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* JavaScript-based Transaction builder helper function's
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Build a contract public key
|
|
26
|
+
* @category contract
|
|
27
|
+
* @param ownerId - The public key of the owner account
|
|
28
|
+
* @param nonce - the nonce of the transaction
|
|
29
|
+
* @returns Contract public key
|
|
30
|
+
*/
|
|
31
|
+
export function buildContractId(
|
|
32
|
+
ownerId: Encoded.AccountAddress,
|
|
33
|
+
nonce: number | BigNumber,
|
|
34
|
+
): Encoded.ContractAddress {
|
|
35
|
+
const ownerIdAndNonce = Buffer.from([...decode(ownerId), ...toBytes(nonce)]);
|
|
36
|
+
const b2bHash = hash(ownerIdAndNonce);
|
|
37
|
+
return encode(b2bHash, Encoding.ContractAddress);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Build a oracle query id
|
|
42
|
+
* @category oracle
|
|
43
|
+
* @param senderId - The public key of the sender account
|
|
44
|
+
* @param nonce - the nonce of the transaction
|
|
45
|
+
* @param oracleId - The oracle public key
|
|
46
|
+
* @returns Contract public key
|
|
47
|
+
*/
|
|
48
|
+
export function oracleQueryId(
|
|
49
|
+
senderId: Encoded.AccountAddress,
|
|
50
|
+
nonce: number | BigNumber | string,
|
|
51
|
+
oracleId: Encoded.OracleAddress,
|
|
52
|
+
): Encoded.OracleQueryId {
|
|
53
|
+
function _int32(val: number | string | BigNumber): Buffer {
|
|
54
|
+
const nonceBE = toBytes(val, true);
|
|
55
|
+
return concatBuffers([Buffer.alloc(32 - nonceBE.length), nonceBE]);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const b2bHash = hash(
|
|
59
|
+
Buffer.from([...decode(senderId), ..._int32(nonce), ...decode(oracleId)]),
|
|
60
|
+
);
|
|
61
|
+
return encode(b2bHash, Encoding.OracleQueryId);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Format the salt into a 64-byte hex string
|
|
66
|
+
* @category transaction builder
|
|
67
|
+
* @param salt - Random number
|
|
68
|
+
* @returns Zero-padded hex string of salt
|
|
69
|
+
*/
|
|
70
|
+
export function formatSalt(salt: number): Buffer {
|
|
71
|
+
return Buffer.from(salt.toString(16).padStart(64, '0'), 'hex');
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Encode an AENS name
|
|
76
|
+
* @category AENS
|
|
77
|
+
* @param name - Name to encode
|
|
78
|
+
* @returns `nm_` prefixed encoded AENS name
|
|
79
|
+
*/
|
|
80
|
+
export function produceNameId(name: AensName): Encoded.Name {
|
|
81
|
+
return encode(hash(name.toLowerCase()), Encoding.Name);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Generate the commitment hash by hashing the formatted salt and
|
|
86
|
+
* name, base 58 encoding the result and prepending 'cm_'
|
|
87
|
+
* @category transaction builder
|
|
88
|
+
* @param name - Name to be registered
|
|
89
|
+
* @param salt - Random salt
|
|
90
|
+
* @returns Commitment hash
|
|
91
|
+
*/
|
|
92
|
+
export function commitmentHash(
|
|
93
|
+
name: AensName,
|
|
94
|
+
salt: number = genSalt(),
|
|
95
|
+
): Encoded.Commitment {
|
|
96
|
+
return encode(
|
|
97
|
+
hash(concatBuffers([Buffer.from(name.toLowerCase()), formatSalt(salt)])),
|
|
98
|
+
Encoding.Commitment,
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Utility function to convert int to bytes
|
|
104
|
+
* @category transaction builder
|
|
105
|
+
* @param val - Value
|
|
106
|
+
* @returns Buffer Buffer from number(BigEndian)
|
|
107
|
+
*/
|
|
108
|
+
export function writeInt(val: number | string | BigNumber): Buffer {
|
|
109
|
+
return toBytes(val, true);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Utility function to convert bytes to int
|
|
114
|
+
* @category transaction builder
|
|
115
|
+
* @param buf - Value
|
|
116
|
+
* @returns Buffer Buffer from number(BigEndian)
|
|
117
|
+
*/
|
|
118
|
+
export function readInt(buf: Buffer = Buffer.from([])): string {
|
|
119
|
+
return new BigNumber(Buffer.from(buf).toString('hex'), 16).toString(10);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Helper function to build pointers for name update TX
|
|
124
|
+
* @category transaction builder
|
|
125
|
+
* @param pointers - Array of pointers
|
|
126
|
+
* `([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])`
|
|
127
|
+
* @returns Serialized pointers array
|
|
128
|
+
*/
|
|
129
|
+
export function buildPointers(pointers: NamePointer[]): Buffer[][] {
|
|
130
|
+
return pointers.map(
|
|
131
|
+
(p) => [
|
|
132
|
+
toBytes(p.key),
|
|
133
|
+
writeId(p.id as Parameters<typeof writeId>[0]),
|
|
134
|
+
],
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Helper function to read pointers from name update TX
|
|
140
|
+
* @category transaction builder
|
|
141
|
+
* @param pointers - Array of pointers
|
|
142
|
+
* @returns Deserialize pointer array
|
|
143
|
+
*/
|
|
144
|
+
export function readPointers(pointers: Array<[key: string, id: Buffer]>): NamePointer[] {
|
|
145
|
+
return pointers.map(
|
|
146
|
+
([key, id]) => ({
|
|
147
|
+
key: key.toString(),
|
|
148
|
+
id: readId(id),
|
|
149
|
+
}),
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
const AENS_SUFFIX = '.chain';
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Is AENS name valid
|
|
157
|
+
* @category AENS
|
|
158
|
+
* @param name - AENS name
|
|
159
|
+
*/
|
|
160
|
+
export function isNameValid(name: string): name is AensName {
|
|
161
|
+
// TODO: probably there are stronger requirements
|
|
162
|
+
return name.endsWith(AENS_SUFFIX);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
const encodingToPointerKey = [
|
|
166
|
+
[Encoding.AccountAddress, 'account_pubkey'],
|
|
167
|
+
[Encoding.OracleAddress, 'oracle_pubkey'],
|
|
168
|
+
[Encoding.ContractAddress, 'contract_pubkey'],
|
|
169
|
+
[Encoding.Channel, 'channel'],
|
|
170
|
+
] as const;
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* @category AENS
|
|
174
|
+
* @param identifier - account/oracle/contract address, or channel
|
|
175
|
+
* @returns default AENS pointer key
|
|
176
|
+
*/
|
|
177
|
+
export function getDefaultPointerKey(
|
|
178
|
+
identifier: Encoded.Generic<typeof encodingToPointerKey[number][0]>,
|
|
179
|
+
): typeof encodingToPointerKey[number][1] {
|
|
180
|
+
decode(identifier);
|
|
181
|
+
const encoding = identifier.substring(0, 2);
|
|
182
|
+
const result = encodingToPointerKey.find(([e]) => e === encoding)?.[1];
|
|
183
|
+
if (result != null) return result;
|
|
184
|
+
throw new ArgumentError(
|
|
185
|
+
'identifier',
|
|
186
|
+
`prefixed with one of ${encodingToPointerKey.map(([e]) => `${e}_`).join(', ')}`,
|
|
187
|
+
identifier,
|
|
188
|
+
);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Get the minimum AENS name fee
|
|
193
|
+
* @category AENS
|
|
194
|
+
* @param name - the AENS name to get the fee for
|
|
195
|
+
* @returns the minimum fee for the AENS name auction
|
|
196
|
+
*/
|
|
197
|
+
export function getMinimumNameFee(name: AensName): BigNumber {
|
|
198
|
+
const nameLength = name.length - AENS_SUFFIX.length;
|
|
199
|
+
return NAME_BID_RANGES[Math.min(nameLength, NAME_MAX_LENGTH_FEE)];
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Compute bid fee for AENS auction
|
|
204
|
+
* @category AENS
|
|
205
|
+
* @param name - the AENS name to get the fee for
|
|
206
|
+
* @param options - Options
|
|
207
|
+
* @param options.startFee - Auction start fee
|
|
208
|
+
* @param options.increment - Bid multiplier(In percentage, must be between 0 and 1)
|
|
209
|
+
* @returns Bid fee
|
|
210
|
+
*/
|
|
211
|
+
export function computeBidFee(
|
|
212
|
+
name: AensName,
|
|
213
|
+
{ startFee, increment = NAME_FEE_BID_INCREMENT }:
|
|
214
|
+
{ startFee?: number | string | BigNumber; increment?: number } = {},
|
|
215
|
+
): BigNumber {
|
|
216
|
+
if (!(Number(increment) === increment && increment % 1 !== 0)) throw new IllegalBidFeeError(`Increment must be float. Current increment ${increment}`);
|
|
217
|
+
if (increment < NAME_FEE_BID_INCREMENT) throw new IllegalBidFeeError(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`);
|
|
218
|
+
// FIXME: increment should be used somehow here
|
|
219
|
+
return ceil(
|
|
220
|
+
new BigNumber(startFee ?? getMinimumNameFee(name))
|
|
221
|
+
.times(new BigNumber(NAME_FEE_BID_INCREMENT).plus(1)),
|
|
222
|
+
);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Compute auction end height
|
|
227
|
+
* @category AENS
|
|
228
|
+
* @param name - Name to compute auction end for
|
|
229
|
+
* @param claimHeight - Auction starting height
|
|
230
|
+
* @see {@link https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L273}
|
|
231
|
+
* @returns Auction end height
|
|
232
|
+
*/
|
|
233
|
+
export function computeAuctionEndBlock(name: AensName, claimHeight: number): number {
|
|
234
|
+
const length = name.length - AENS_SUFFIX.length;
|
|
235
|
+
const h = (length <= 4 && 62 * NAME_BID_TIMEOUT_BLOCKS)
|
|
236
|
+
|| (length <= 8 && 31 * NAME_BID_TIMEOUT_BLOCKS)
|
|
237
|
+
|| (length <= 12 && NAME_BID_TIMEOUT_BLOCKS)
|
|
238
|
+
|| 0;
|
|
239
|
+
return h + claimHeight;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* Is name accept going to auction
|
|
244
|
+
* @category AENS
|
|
245
|
+
*/
|
|
246
|
+
export function isAuctionName(name: AensName): boolean {
|
|
247
|
+
return name.length < 13 + AENS_SUFFIX.length;
|
|
248
|
+
}
|