@aeternity/aepp-sdk 11.0.1 → 12.0.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 +12 -19
- 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 +1 -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 +69 -0
- package/es/AeSdkAepp.mjs +175 -0
- package/es/AeSdkAepp.mjs.map +1 -0
- package/es/AeSdkBase.d.ts +212 -0
- package/es/AeSdkBase.mjs +310 -0
- package/es/AeSdkBase.mjs.map +1 -0
- package/es/AeSdkWallet.d.ts +103 -0
- package/es/AeSdkWallet.mjs +322 -0
- package/es/AeSdkWallet.mjs.map +1 -0
- package/es/Node.d.ts +44 -0
- package/es/Node.mjs +141 -0
- package/es/Node.mjs.map +1 -0
- package/es/account/Base.d.ts +65 -0
- package/es/account/Base.mjs +123 -0
- package/es/account/Base.mjs.map +1 -0
- package/es/account/Memory.d.ts +25 -0
- package/es/account/Memory.mjs +81 -0
- package/es/account/Memory.mjs.map +1 -0
- package/es/account/Rpc.d.ts +27 -0
- package/es/account/Rpc.mjs +79 -0
- package/es/account/Rpc.mjs.map +1 -0
- package/es/aens.d.ts +209 -0
- package/es/aens.mjs +332 -0
- package/es/aens.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection/Browser.d.ts +32 -0
- package/es/aepp-wallet-communication/connection/Browser.mjs +70 -0
- package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +17 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +57 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +35 -0
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +142 -0
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection-proxy.d.ts +10 -0
- package/{src/utils/crypto-ts.ts → es/aepp-wallet-communication/connection-proxy.mjs} +15 -11
- package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -0
- package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +33 -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 +90 -46
- package/es/aepp-wallet-communication/schema.mjs +214 -0
- package/es/aepp-wallet-communication/schema.mjs.map +1 -0
- package/es/aepp-wallet-communication/wallet-detector.d.ts +24 -0
- package/es/aepp-wallet-communication/wallet-detector.mjs +63 -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 +1061 -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 +4164 -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 +220 -0
- package/es/chain.mjs +524 -0
- package/es/chain.mjs.map +1 -0
- package/es/channel/handlers.d.ts +34 -0
- package/es/channel/handlers.mjs +147 -112
- package/es/channel/handlers.mjs.map +1 -1
- package/es/channel/index.d.ts +634 -0
- package/es/channel/index.mjs +898 -900
- package/es/channel/index.mjs.map +1 -1
- package/es/channel/internal.d.ts +100 -0
- package/es/channel/internal.mjs +97 -51
- package/es/channel/internal.mjs.map +1 -1
- package/es/contract/Compiler.d.ts +17 -0
- package/es/contract/Compiler.mjs +67 -0
- package/es/contract/Compiler.mjs.map +1 -0
- package/es/contract/aci.d.ts +125 -0
- package/es/contract/aci.mjs +199 -180
- package/es/contract/aci.mjs.map +1 -1
- package/es/contract/ga.d.ts +68 -0
- package/es/contract/ga.mjs +190 -0
- package/es/contract/ga.mjs.map +1 -0
- package/es/contract/methods.d.ts +68 -0
- package/es/contract/methods.mjs +101 -0
- package/es/contract/methods.mjs.map +1 -0
- package/es/index.d.ts +32 -0
- package/es/index.mjs +32 -40
- package/es/index.mjs.map +1 -1
- package/es/oracle.d.ts +154 -0
- package/es/oracle.mjs +288 -0
- package/es/oracle.mjs.map +1 -0
- package/es/spend.d.ts +61 -0
- package/es/spend.mjs +122 -0
- package/es/spend.mjs.map +1 -0
- package/es/tx/builder/constants.d.ts +41 -0
- package/es/tx/builder/constants.mjs +11 -19
- package/es/tx/builder/constants.mjs.map +1 -1
- package/es/tx/builder/field-types.d.ts +62 -0
- package/es/tx/builder/field-types.mjs +62 -10
- package/es/tx/builder/field-types.mjs.map +1 -1
- package/es/tx/builder/helpers.d.ts +131 -0
- package/es/tx/builder/helpers.mjs +71 -169
- package/es/tx/builder/helpers.mjs.map +1 -1
- package/es/tx/builder/index.d.ts +75 -0
- package/es/tx/builder/index.mjs +141 -323
- package/es/tx/builder/index.mjs.map +1 -1
- package/es/tx/builder/schema.d.ts +350 -0
- package/es/tx/builder/schema.mjs +173 -510
- package/es/tx/builder/schema.mjs.map +1 -1
- package/es/tx/index.d.ts +63 -0
- package/es/tx/index.mjs +171 -265
- package/es/tx/index.mjs.map +1 -1
- package/es/tx/min-fee.d.ts +20 -0
- package/es/tx/min-fee.mjs +148 -0
- package/es/tx/min-fee.mjs.map +1 -0
- package/es/tx/validator.d.ts +19 -0
- package/es/tx/validator.mjs +64 -71
- 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/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 +28 -41
- 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 +10 -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 +10 -14
- package/es/utils/bytes.mjs.map +1 -1
- package/es/utils/crypto.d.ts +103 -0
- package/es/utils/crypto.mjs +60 -68
- package/es/utils/crypto.mjs.map +1 -1
- package/es/utils/encoder.d.ts +26 -0
- package/es/utils/encoder.mjs +47 -51
- package/es/utils/encoder.mjs.map +1 -1
- package/es/{errors.d.ts → utils/errors.d.ts} +254 -57
- package/es/utils/errors.mjs +318 -125
- package/es/utils/errors.mjs.map +1 -1
- package/es/utils/hd-wallet.d.ts +34 -0
- package/es/utils/hd-wallet.mjs +27 -16
- package/es/utils/hd-wallet.mjs.map +1 -1
- package/es/utils/json-big.d.ts +5 -0
- package/es/utils/json-big.mjs +10 -14
- package/es/utils/json-big.mjs.map +1 -1
- package/es/utils/keystore.d.ts +51 -0
- package/es/utils/keystore.mjs +98 -193
- package/es/utils/keystore.mjs.map +1 -1
- package/es/{mptree.d.ts → utils/mptree.d.ts} +5 -8
- package/es/utils/mptree.mjs +13 -14
- package/es/utils/mptree.mjs.map +1 -1
- package/es/utils/other.d.ts +14 -0
- package/es/utils/other.mjs +21 -36
- package/es/utils/other.mjs.map +1 -1
- package/es/{semver-satisfies.d.ts → utils/semver-satisfies.d.ts} +0 -0
- 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 +49 -39
- package/src/AeSdk.ts +65 -0
- package/src/AeSdkAepp.ts +167 -0
- package/src/AeSdkBase.ts +320 -0
- package/src/AeSdkWallet.ts +332 -0
- package/src/Node.ts +167 -0
- package/src/account/Base.ts +114 -0
- package/src/account/Memory.ts +83 -0
- package/src/account/Rpc.ts +67 -0
- package/src/aens.ts +391 -0
- package/src/aepp-wallet-communication/connection/Browser.ts +68 -0
- package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +58 -0
- package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +111 -0
- package/{es/utils/crypto-ts.mjs → src/aepp-wallet-communication/connection-proxy.ts} +16 -17
- package/src/aepp-wallet-communication/rpc/RpcClient.ts +137 -0
- package/src/aepp-wallet-communication/rpc/types.ts +66 -0
- package/src/aepp-wallet-communication/schema.ts +181 -0
- package/src/aepp-wallet-communication/wallet-detector.ts +71 -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 +10046 -0
- package/src/apis/node/index.ts +2 -0
- package/src/apis/node/models/index.ts +1253 -0
- package/src/apis/node/models/mappers.ts +4278 -0
- package/src/apis/node/models/parameters.ts +188 -0
- package/src/apis/node/node.ts +1299 -0
- package/src/chain.ts +444 -0
- package/src/channel/{handlers.js → handlers.ts} +220 -128
- package/src/channel/index.ts +991 -0
- package/src/channel/internal.ts +345 -0
- package/src/contract/Compiler.ts +66 -0
- package/src/contract/aci.ts +529 -0
- package/src/contract/ga.ts +178 -0
- package/src/contract/methods.ts +118 -0
- package/src/index.ts +51 -0
- package/src/oracle.ts +342 -0
- package/src/spend.ts +152 -0
- package/src/tx/builder/{constants.js → constants.ts} +12 -16
- package/src/tx/builder/field-types.ts +111 -0
- package/src/tx/builder/helpers.ts +253 -0
- package/src/tx/builder/index.ts +394 -0
- package/src/tx/builder/schema.ts +771 -0
- package/src/tx/index.ts +199 -0
- package/src/tx/min-fee.ts +136 -0
- package/src/tx/validator.ts +226 -0
- package/src/typings/@aeternity__argon2-browser/index.d.ts +3 -0
- package/src/typings/@aeternity__uuid/index.d.ts +3 -0
- package/src/typings/bip32-path/index.d.ts +33 -0
- package/src/typings/tweetnacl-auth/index.d.ts +14 -0
- package/src/utils/amount-formatter.ts +29 -42
- package/src/utils/autorest.ts +90 -0
- package/src/utils/bignumber.ts +9 -11
- package/src/utils/bytes.ts +12 -14
- package/src/utils/crypto.ts +217 -0
- package/src/utils/encoder.ts +52 -55
- package/src/utils/errors.ts +268 -134
- package/src/utils/hd-wallet.ts +134 -0
- package/src/utils/json-big.ts +26 -0
- package/src/utils/keystore.ts +179 -0
- package/src/utils/mptree.ts +14 -14
- package/src/utils/other.ts +28 -43
- package/src/utils/string.ts +8 -10
- 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/encoder.d.ts +0 -26
- 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/string.d.ts +0 -26
- 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/index.js +0 -903
- package/src/channel/internal.js +0 -236
- 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 -334
- package/src/tx/builder/index.js +0 -465
- package/src/tx/builder/schema.js +0 -1100
- 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 -219
- 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,131 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import BigNumber from 'bignumber.js';
|
|
3
|
+
import { salt } from '../../utils/crypto';
|
|
4
|
+
import { encode, decode, EncodedData } from '../../utils/encoder';
|
|
5
|
+
import { POINTER_KEY_BY_PREFIX, AensName } from './constants';
|
|
6
|
+
/**
|
|
7
|
+
* JavaScript-based Transaction builder helper function's
|
|
8
|
+
*/
|
|
9
|
+
export declare const createSalt: typeof salt;
|
|
10
|
+
export { encode, decode };
|
|
11
|
+
export interface Pointer {
|
|
12
|
+
key: string;
|
|
13
|
+
id: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Build a contract public key
|
|
17
|
+
* @param ownerId - The public key of the owner account
|
|
18
|
+
* @param nonce - the nonce of the transaction
|
|
19
|
+
* @returns Contract public key
|
|
20
|
+
*/
|
|
21
|
+
export declare function buildContractId(ownerId: EncodedData<'ak'>, nonce: number | BigNumber): EncodedData<'ct'>;
|
|
22
|
+
/**
|
|
23
|
+
* Build a oracle query id
|
|
24
|
+
* @param senderId - The public key of the sender account
|
|
25
|
+
* @param nonce - the nonce of the transaction
|
|
26
|
+
* @param oracleId - The oracle public key
|
|
27
|
+
* @returns Contract public key
|
|
28
|
+
*/
|
|
29
|
+
export declare function oracleQueryId(senderId: EncodedData<'ak'>, nonce: number | BigNumber | string, oracleId: EncodedData<'ok'>): EncodedData<'oq'>;
|
|
30
|
+
/**
|
|
31
|
+
* Format the salt into a 64-byte hex string
|
|
32
|
+
* @param salt - Random number
|
|
33
|
+
* @returns Zero-padded hex string of salt
|
|
34
|
+
*/
|
|
35
|
+
export declare function formatSalt(salt: number): Buffer;
|
|
36
|
+
/**
|
|
37
|
+
* Encode an AENS name
|
|
38
|
+
*
|
|
39
|
+
* @param name - Name to encode
|
|
40
|
+
* @returns `nm_` prefixed encoded AENS name
|
|
41
|
+
*/
|
|
42
|
+
export declare function produceNameId(name: AensName): EncodedData<'nm'>;
|
|
43
|
+
/**
|
|
44
|
+
* Generate the commitment hash by hashing the formatted salt and
|
|
45
|
+
* name, base 58 encoding the result and prepending 'cm_'
|
|
46
|
+
*
|
|
47
|
+
* @param name - Name to be registered
|
|
48
|
+
* @param salt - Random salt
|
|
49
|
+
* @returns Commitment hash
|
|
50
|
+
*/
|
|
51
|
+
export declare function commitmentHash(name: AensName, salt?: number): EncodedData<'cm'>;
|
|
52
|
+
/**
|
|
53
|
+
* Utility function to create and _id type
|
|
54
|
+
* @param hashId - Encoded hash
|
|
55
|
+
* @returns Buffer Buffer with ID tag and decoded HASh
|
|
56
|
+
*/
|
|
57
|
+
export declare function writeId(hashId: string): Buffer;
|
|
58
|
+
/**
|
|
59
|
+
* Utility function to read and _id type
|
|
60
|
+
* @param buf - Data
|
|
61
|
+
* @returns Encoided hash string with prefix
|
|
62
|
+
*/
|
|
63
|
+
export declare function readId(buf: Buffer): string;
|
|
64
|
+
/**
|
|
65
|
+
* Utility function to convert int to bytes
|
|
66
|
+
* @param val - Value
|
|
67
|
+
* @returns Buffer Buffer from number(BigEndian)
|
|
68
|
+
*/
|
|
69
|
+
export declare function writeInt(val: number | string | BigNumber): Buffer;
|
|
70
|
+
/**
|
|
71
|
+
* Utility function to convert bytes to int
|
|
72
|
+
* @param buf - Value
|
|
73
|
+
* @returns Buffer Buffer from number(BigEndian)
|
|
74
|
+
*/
|
|
75
|
+
export declare function readInt(buf?: Buffer): string;
|
|
76
|
+
/**
|
|
77
|
+
* Helper function to build pointers for name update TX
|
|
78
|
+
* @param pointers - Array of pointers
|
|
79
|
+
* `([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])`
|
|
80
|
+
* @returns Serialized pointers array
|
|
81
|
+
*/
|
|
82
|
+
export declare function buildPointers(pointers: Pointer[]): Buffer[][];
|
|
83
|
+
/**
|
|
84
|
+
* Helper function to read pointers from name update TX
|
|
85
|
+
* @param pointers - Array of pointers
|
|
86
|
+
* @returns Deserialize pointer array
|
|
87
|
+
*/
|
|
88
|
+
export declare function readPointers(pointers: Array<[key: string, id: Buffer]>): Pointer[];
|
|
89
|
+
/**
|
|
90
|
+
* Is AENS name valid
|
|
91
|
+
* @param name - AENS name
|
|
92
|
+
*/
|
|
93
|
+
export declare function isNameValid(name: string): name is AensName;
|
|
94
|
+
/**
|
|
95
|
+
* @param identifier - account/oracle/contract address, or channel
|
|
96
|
+
* @returns default AENS pointer key
|
|
97
|
+
*/
|
|
98
|
+
export declare function getDefaultPointerKey(identifier: EncodedData<keyof typeof POINTER_KEY_BY_PREFIX>): POINTER_KEY_BY_PREFIX;
|
|
99
|
+
/**
|
|
100
|
+
* Get the minimum AENS name fee
|
|
101
|
+
*
|
|
102
|
+
* @param name - the AENS name to get the fee for
|
|
103
|
+
* @returns the minimum fee for the AENS name auction
|
|
104
|
+
*/
|
|
105
|
+
export declare function getMinimumNameFee(name: AensName): BigNumber;
|
|
106
|
+
/**
|
|
107
|
+
* Compute bid fee for AENS auction
|
|
108
|
+
*
|
|
109
|
+
* @param name - the AENS name to get the fee for
|
|
110
|
+
* @param options - Options
|
|
111
|
+
* @param options.startFee - Auction start fee
|
|
112
|
+
* @param options.increment - Bid multiplier(In percentage, must be between 0 and 1)
|
|
113
|
+
* @returns Bid fee
|
|
114
|
+
*/
|
|
115
|
+
export declare function computeBidFee(name: AensName, { startFee, increment }?: {
|
|
116
|
+
startFee?: number | string | BigNumber;
|
|
117
|
+
increment?: number;
|
|
118
|
+
}): BigNumber;
|
|
119
|
+
/**
|
|
120
|
+
* Compute auction end height
|
|
121
|
+
*
|
|
122
|
+
* @param name - Name to compute auction end for
|
|
123
|
+
* @param claimHeight - Auction starting height
|
|
124
|
+
* @see {@link https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L273}
|
|
125
|
+
* @returns Auction end height
|
|
126
|
+
*/
|
|
127
|
+
export declare function computeAuctionEndBlock(name: AensName, claimHeight: number): number;
|
|
128
|
+
/**
|
|
129
|
+
* Is name accept going to auction
|
|
130
|
+
*/
|
|
131
|
+
export declare function isAuctionName(name: AensName): boolean;
|
|
@@ -3,66 +3,53 @@ const {
|
|
|
3
3
|
Buffer: _Buffer
|
|
4
4
|
} = _buffer;
|
|
5
5
|
import BigNumber from 'bignumber.js';
|
|
6
|
-
import _bs from 'bs58';
|
|
7
|
-
const {
|
|
8
|
-
encode: bs58Encode,
|
|
9
|
-
decode: bs58Decode
|
|
10
|
-
} = _bs;
|
|
11
6
|
import { hash, salt } from "../../utils/crypto.mjs";
|
|
12
7
|
import { encode, decode } from "../../utils/encoder.mjs";
|
|
13
8
|
import { toBytes } from "../../utils/bytes.mjs";
|
|
14
|
-
import {
|
|
9
|
+
import { concatBuffers } from "../../utils/other.mjs";
|
|
10
|
+
import { ID_TAG_PREFIX, PREFIX_ID_TAG, NAME_BID_RANGES, NAME_FEE_BID_INCREMENT, NAME_BID_TIMEOUT_BLOCKS, NAME_MAX_LENGTH_FEE, POINTER_KEY_BY_PREFIX } from "./constants.mjs";
|
|
15
11
|
import { ceil } from "../../utils/bignumber.mjs";
|
|
16
|
-
import { TagNotFoundError, PrefixNotFoundError,
|
|
12
|
+
import { TagNotFoundError, PrefixNotFoundError, IllegalBidFeeError, ArgumentError } from "../../utils/errors.mjs";
|
|
17
13
|
/**
|
|
18
14
|
* JavaScript-based Transaction builder helper function's
|
|
19
|
-
* @module @aeternity/aepp-sdk/es/tx/builder/helpers
|
|
20
|
-
* @export TxBuilderHelper
|
|
21
|
-
* @example import { TxBuilderHelper } from '@aeternity/aepp-sdk'
|
|
22
15
|
*/
|
|
23
16
|
|
|
24
17
|
export const createSalt = salt;
|
|
25
18
|
export { encode, decode };
|
|
19
|
+
|
|
26
20
|
/**
|
|
27
21
|
* Build a contract public key
|
|
28
|
-
* @
|
|
29
|
-
* @
|
|
30
|
-
* @
|
|
31
|
-
* @param {number} nonce the nonce of the transaction
|
|
32
|
-
* @return {string} Contract public key
|
|
22
|
+
* @param ownerId - The public key of the owner account
|
|
23
|
+
* @param nonce - the nonce of the transaction
|
|
24
|
+
* @returns Contract public key
|
|
33
25
|
*/
|
|
34
|
-
|
|
35
26
|
export function buildContractId(ownerId, nonce) {
|
|
36
|
-
const ownerIdAndNonce = _Buffer.from([...decode(ownerId
|
|
27
|
+
const ownerIdAndNonce = _Buffer.from([...decode(ownerId), ...toBytes(nonce)]);
|
|
37
28
|
|
|
38
29
|
const b2bHash = hash(ownerIdAndNonce);
|
|
39
30
|
return encode(b2bHash, 'ct');
|
|
40
31
|
}
|
|
41
32
|
/**
|
|
42
33
|
* Build a oracle query id
|
|
43
|
-
* @
|
|
44
|
-
* @
|
|
45
|
-
* @param
|
|
46
|
-
* @
|
|
47
|
-
* @param {Number} oracleId The oracle public key
|
|
48
|
-
* @return {string} Contract public key
|
|
34
|
+
* @param senderId - The public key of the sender account
|
|
35
|
+
* @param nonce - the nonce of the transaction
|
|
36
|
+
* @param oracleId - The oracle public key
|
|
37
|
+
* @returns Contract public key
|
|
49
38
|
*/
|
|
50
39
|
|
|
51
40
|
export function oracleQueryId(senderId, nonce, oracleId) {
|
|
52
41
|
function _int32(val) {
|
|
53
42
|
const nonceBE = toBytes(val, true);
|
|
54
|
-
return
|
|
43
|
+
return concatBuffers([_Buffer.alloc(32 - nonceBE.length), nonceBE]);
|
|
55
44
|
}
|
|
56
45
|
|
|
57
|
-
const b2bHash = hash(_Buffer.from([...decode(senderId
|
|
46
|
+
const b2bHash = hash(_Buffer.from([...decode(senderId), ..._int32(nonce), ...decode(oracleId)]));
|
|
58
47
|
return encode(b2bHash, 'oq');
|
|
59
48
|
}
|
|
60
49
|
/**
|
|
61
50
|
* Format the salt into a 64-byte hex string
|
|
62
|
-
* @
|
|
63
|
-
* @
|
|
64
|
-
* @param {number} salt
|
|
65
|
-
* @return {string} Zero-padded hex string of salt
|
|
51
|
+
* @param salt - Random number
|
|
52
|
+
* @returns Zero-padded hex string of salt
|
|
66
53
|
*/
|
|
67
54
|
|
|
68
55
|
export function formatSalt(salt) {
|
|
@@ -70,108 +57,57 @@ export function formatSalt(salt) {
|
|
|
70
57
|
}
|
|
71
58
|
/**
|
|
72
59
|
* Encode an AENS name
|
|
73
|
-
*
|
|
74
|
-
* @
|
|
75
|
-
* @
|
|
76
|
-
* @return {String} `nm_` prefixed encoded AENS name
|
|
60
|
+
*
|
|
61
|
+
* @param name - Name to encode
|
|
62
|
+
* @returns `nm_` prefixed encoded AENS name
|
|
77
63
|
*/
|
|
78
64
|
|
|
79
65
|
export function produceNameId(name) {
|
|
80
|
-
ensureNameValid(name);
|
|
81
66
|
return encode(hash(name.toLowerCase()), 'nm');
|
|
82
67
|
}
|
|
83
68
|
/**
|
|
84
69
|
* Generate the commitment hash by hashing the formatted salt and
|
|
85
70
|
* name, base 58 encoding the result and prepending 'cm_'
|
|
86
71
|
*
|
|
87
|
-
* @
|
|
88
|
-
* @
|
|
89
|
-
* @
|
|
90
|
-
* @rtype (name: String, salt?: String) => hash: Promise[String]
|
|
91
|
-
* @param {String} name - Name to be registered
|
|
92
|
-
* @param {Number} salt Random salt
|
|
93
|
-
* @return {String} Commitment hash
|
|
72
|
+
* @param name - Name to be registered
|
|
73
|
+
* @param salt - Random salt
|
|
74
|
+
* @returns Commitment hash
|
|
94
75
|
*/
|
|
95
76
|
|
|
96
77
|
export function commitmentHash(name) {
|
|
97
78
|
let salt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSalt();
|
|
98
|
-
|
|
99
|
-
return encode(hash(_Buffer.concat([_Buffer.from(name.toLowerCase()), formatSalt(salt)])), 'cm');
|
|
100
|
-
} // based on https://github.com/aeternity/protocol/blob/master/node/api/api_encoding.md
|
|
101
|
-
|
|
102
|
-
const base64Types = ['ba', 'cb', 'or', 'ov', 'pi', 'ss', 'cs', 'ck', 'cv', 'st', 'tx'];
|
|
103
|
-
const base58Types = ['ak', 'bf', 'bs', 'bx', 'ch', 'cm', 'ct', 'kh', 'mh', 'nm', 'ok', 'oq', 'pp', 'sg', 'th']; // TODO: add all types with a fixed length
|
|
104
|
-
|
|
105
|
-
const typesLength = {
|
|
106
|
-
ak: 32,
|
|
107
|
-
ct: 32,
|
|
108
|
-
ok: 32
|
|
109
|
-
};
|
|
110
|
-
|
|
111
|
-
function ensureValidLength(data, type) {
|
|
112
|
-
if (!typesLength[type]) return;
|
|
113
|
-
if (data.length === typesLength[type]) return;
|
|
114
|
-
throw new PayloadLengthError(`Payload should be ${typesLength[type]} bytes, got ${data.length} instead`);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
const getChecksum = payload => sha256hash(sha256hash(payload)).slice(0, 4);
|
|
118
|
-
|
|
119
|
-
const addChecksum = input => {
|
|
120
|
-
const payload = _Buffer.from(input);
|
|
121
|
-
|
|
122
|
-
return _Buffer.concat([payload, getChecksum(payload)]);
|
|
123
|
-
};
|
|
124
|
-
|
|
125
|
-
function getPayload(buffer) {
|
|
126
|
-
const payload = buffer.slice(0, -4);
|
|
127
|
-
if (!getChecksum(payload).equals(buffer.slice(-4))) throw new InvalidChecksumError();
|
|
128
|
-
return payload;
|
|
79
|
+
return encode(hash(concatBuffers([_Buffer.from(name.toLowerCase()), formatSalt(salt)])), 'cm');
|
|
129
80
|
}
|
|
130
|
-
|
|
131
|
-
const base64 = {
|
|
132
|
-
encode: buffer => addChecksum(buffer).toString('base64'),
|
|
133
|
-
decode: string => getPayload(_Buffer.from(string, 'base64'))
|
|
134
|
-
};
|
|
135
|
-
const base58 = {
|
|
136
|
-
encode: buffer => bs58.encode(addChecksum(buffer)),
|
|
137
|
-
decode: string => getPayload(bs58.decode(string))
|
|
138
|
-
};
|
|
139
81
|
/**
|
|
140
82
|
* Utility function to create and _id type
|
|
141
|
-
* @
|
|
142
|
-
* @
|
|
143
|
-
* @param {string} hashId Encoded hash
|
|
144
|
-
* @return {Buffer} Buffer Buffer with ID tag and decoded HASh
|
|
83
|
+
* @param hashId - Encoded hash
|
|
84
|
+
* @returns Buffer Buffer with ID tag and decoded HASh
|
|
145
85
|
*/
|
|
146
86
|
|
|
147
87
|
export function writeId(hashId) {
|
|
148
88
|
if (typeof hashId !== 'string') throw new ArgumentError('hashId', 'a string', hashId);
|
|
149
89
|
const prefix = hashId.slice(0, 2);
|
|
150
90
|
const idTag = PREFIX_ID_TAG[prefix];
|
|
151
|
-
if (
|
|
152
|
-
return _Buffer.from([...toBytes(idTag), ...decode(hashId
|
|
91
|
+
if (idTag == null) throw new TagNotFoundError(prefix);
|
|
92
|
+
return _Buffer.from([...toBytes(idTag), ...decode(hashId)]);
|
|
153
93
|
}
|
|
154
94
|
/**
|
|
155
95
|
* Utility function to read and _id type
|
|
156
|
-
* @
|
|
157
|
-
* @
|
|
158
|
-
* @param {Buffer} buf Data
|
|
159
|
-
* @return {String} Encoided hash string with prefix
|
|
96
|
+
* @param buf - Data
|
|
97
|
+
* @returns Encoided hash string with prefix
|
|
160
98
|
*/
|
|
161
99
|
|
|
162
100
|
export function readId(buf) {
|
|
163
101
|
const tag = _Buffer.from(buf).readUIntBE(0, 1);
|
|
164
102
|
|
|
165
103
|
const prefix = ID_TAG_PREFIX[tag];
|
|
166
|
-
if (
|
|
104
|
+
if (prefix == null) throw new PrefixNotFoundError(tag);
|
|
167
105
|
return encode(buf.slice(1, buf.length), prefix);
|
|
168
106
|
}
|
|
169
107
|
/**
|
|
170
108
|
* Utility function to convert int to bytes
|
|
171
|
-
* @
|
|
172
|
-
* @
|
|
173
|
-
* @param {Number|String|BigNumber} val Value
|
|
174
|
-
* @return {Buffer} Buffer Buffer from number(BigEndian)
|
|
109
|
+
* @param val - Value
|
|
110
|
+
* @returns Buffer Buffer from number(BigEndian)
|
|
175
111
|
*/
|
|
176
112
|
|
|
177
113
|
export function writeInt(val) {
|
|
@@ -179,10 +115,8 @@ export function writeInt(val) {
|
|
|
179
115
|
}
|
|
180
116
|
/**
|
|
181
117
|
* Utility function to convert bytes to int
|
|
182
|
-
* @
|
|
183
|
-
* @
|
|
184
|
-
* @param {Buffer} buf Value
|
|
185
|
-
* @return {String} Buffer Buffer from number(BigEndian)
|
|
118
|
+
* @param buf - Value
|
|
119
|
+
* @returns Buffer Buffer from number(BigEndian)
|
|
186
120
|
*/
|
|
187
121
|
|
|
188
122
|
export function readInt() {
|
|
@@ -191,11 +125,9 @@ export function readInt() {
|
|
|
191
125
|
}
|
|
192
126
|
/**
|
|
193
127
|
* Helper function to build pointers for name update TX
|
|
194
|
-
* @
|
|
195
|
-
*
|
|
196
|
-
* @
|
|
197
|
-
* ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])
|
|
198
|
-
* @return {Array} Serialized pointers array
|
|
128
|
+
* @param pointers - Array of pointers
|
|
129
|
+
* `([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])`
|
|
130
|
+
* @returns Serialized pointers array
|
|
199
131
|
*/
|
|
200
132
|
|
|
201
133
|
export function buildPointers(pointers) {
|
|
@@ -203,11 +135,8 @@ export function buildPointers(pointers) {
|
|
|
203
135
|
}
|
|
204
136
|
/**
|
|
205
137
|
* Helper function to read pointers from name update TX
|
|
206
|
-
* @
|
|
207
|
-
* @
|
|
208
|
-
* @param {Array} pointers - Array of pointers
|
|
209
|
-
* ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])
|
|
210
|
-
* @return {Array} Deserialize pointer array
|
|
138
|
+
* @param pointers - Array of pointers
|
|
139
|
+
* @returns Deserialize pointer array
|
|
211
140
|
*/
|
|
212
141
|
|
|
213
142
|
export function readPointers(pointers) {
|
|
@@ -220,102 +149,75 @@ export function readPointers(pointers) {
|
|
|
220
149
|
});
|
|
221
150
|
}
|
|
222
151
|
const AENS_SUFFIX = '.chain';
|
|
223
|
-
/**
|
|
224
|
-
* Ensure that AENS name is valid
|
|
225
|
-
* @function
|
|
226
|
-
* @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
|
|
227
|
-
* @param {string} name
|
|
228
|
-
* @return void
|
|
229
|
-
* @throws Error
|
|
230
|
-
*/
|
|
231
|
-
|
|
232
|
-
export function ensureNameValid(name) {
|
|
233
|
-
if (!name || typeof name !== 'string') throw new InvalidNameError('Name must be a string');
|
|
234
|
-
if (!name.endsWith(AENS_SUFFIX)) throw new InvalidNameError(`Name should end with ${AENS_SUFFIX}: ${name}`);
|
|
235
|
-
}
|
|
236
152
|
/**
|
|
237
153
|
* Is AENS name valid
|
|
238
|
-
* @
|
|
239
|
-
* @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
|
|
240
|
-
* @param {string} name
|
|
241
|
-
* @return Boolean
|
|
154
|
+
* @param name - AENS name
|
|
242
155
|
*/
|
|
243
156
|
|
|
244
157
|
export function isNameValid(name) {
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
return true;
|
|
248
|
-
} catch (error) {
|
|
249
|
-
return false;
|
|
250
|
-
}
|
|
158
|
+
// TODO: probably there are stronger requirements
|
|
159
|
+
return name.endsWith(AENS_SUFFIX);
|
|
251
160
|
}
|
|
252
161
|
/**
|
|
253
162
|
* @param identifier - account/oracle/contract address, or channel
|
|
254
|
-
* @returns
|
|
255
|
-
* @throws exception when default key not defined
|
|
163
|
+
* @returns default AENS pointer key
|
|
256
164
|
*/
|
|
257
165
|
|
|
258
166
|
export function getDefaultPointerKey(identifier) {
|
|
259
167
|
decode(identifier);
|
|
260
|
-
const prefix = identifier.
|
|
261
|
-
return POINTER_KEY_BY_PREFIX[prefix]
|
|
262
|
-
throw new NoDefaultAensPointerError(prefix);
|
|
263
|
-
})();
|
|
168
|
+
const prefix = identifier.substring(0, 2);
|
|
169
|
+
return POINTER_KEY_BY_PREFIX[prefix];
|
|
264
170
|
}
|
|
265
171
|
/**
|
|
266
172
|
* Get the minimum AENS name fee
|
|
267
|
-
*
|
|
268
|
-
* @
|
|
269
|
-
* @
|
|
270
|
-
* @return {String} the minimum fee for the AENS name auction
|
|
173
|
+
*
|
|
174
|
+
* @param name - the AENS name to get the fee for
|
|
175
|
+
* @returns the minimum fee for the AENS name auction
|
|
271
176
|
*/
|
|
272
177
|
|
|
273
178
|
export function getMinimumNameFee(name) {
|
|
274
|
-
ensureNameValid(name);
|
|
275
179
|
const nameLength = name.length - AENS_SUFFIX.length;
|
|
276
180
|
return NAME_BID_RANGES[Math.min(nameLength, NAME_MAX_LENGTH_FEE)];
|
|
277
181
|
}
|
|
278
182
|
/**
|
|
279
183
|
* Compute bid fee for AENS auction
|
|
280
|
-
*
|
|
281
|
-
* @
|
|
282
|
-
* @param
|
|
283
|
-
* @param
|
|
284
|
-
* @param
|
|
285
|
-
* @
|
|
286
|
-
*/
|
|
287
|
-
|
|
288
|
-
export function computeBidFee(name
|
|
289
|
-
let
|
|
184
|
+
*
|
|
185
|
+
* @param name - the AENS name to get the fee for
|
|
186
|
+
* @param options - Options
|
|
187
|
+
* @param options.startFee - Auction start fee
|
|
188
|
+
* @param options.increment - Bid multiplier(In percentage, must be between 0 and 1)
|
|
189
|
+
* @returns Bid fee
|
|
190
|
+
*/
|
|
191
|
+
|
|
192
|
+
export function computeBidFee(name) {
|
|
193
|
+
let {
|
|
194
|
+
startFee,
|
|
195
|
+
increment = NAME_FEE_BID_INCREMENT
|
|
196
|
+
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
290
197
|
if (!(Number(increment) === increment && increment % 1 !== 0)) throw new IllegalBidFeeError(`Increment must be float. Current increment ${increment}`);
|
|
291
|
-
if (increment < NAME_FEE_BID_INCREMENT) throw new IllegalBidFeeError(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`);
|
|
292
|
-
|
|
198
|
+
if (increment < NAME_FEE_BID_INCREMENT) throw new IllegalBidFeeError(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`); // FIXME: increment should be used somehow here
|
|
199
|
+
|
|
200
|
+
return ceil(new BigNumber(startFee !== null && startFee !== void 0 ? startFee : getMinimumNameFee(name)).times(new BigNumber(NAME_FEE_BID_INCREMENT).plus(1)));
|
|
293
201
|
}
|
|
294
202
|
/**
|
|
295
203
|
* Compute auction end height
|
|
296
|
-
*
|
|
297
|
-
* @
|
|
298
|
-
* @param
|
|
299
|
-
* @
|
|
300
|
-
* @
|
|
204
|
+
*
|
|
205
|
+
* @param name - Name to compute auction end for
|
|
206
|
+
* @param claimHeight - Auction starting height
|
|
207
|
+
* @see {@link https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L273}
|
|
208
|
+
* @returns Auction end height
|
|
301
209
|
*/
|
|
302
210
|
|
|
303
211
|
export function computeAuctionEndBlock(name, claimHeight) {
|
|
304
|
-
ensureNameValid(name);
|
|
305
212
|
const length = name.length - AENS_SUFFIX.length;
|
|
306
|
-
const h = length <= 4 &&
|
|
307
|
-
return h
|
|
213
|
+
const h = length <= 4 && 62 * NAME_BID_TIMEOUT_BLOCKS || length <= 8 && 31 * NAME_BID_TIMEOUT_BLOCKS || length <= 12 && NAME_BID_TIMEOUT_BLOCKS || 0;
|
|
214
|
+
return h + claimHeight;
|
|
308
215
|
}
|
|
309
216
|
/**
|
|
310
217
|
* Is name accept going to auction
|
|
311
|
-
* @function
|
|
312
|
-
* @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
|
|
313
|
-
* @param {String} name
|
|
314
|
-
* @return {Boolean}
|
|
315
218
|
*/
|
|
316
219
|
|
|
317
220
|
export function isAuctionName(name) {
|
|
318
|
-
ensureNameValid(name);
|
|
319
221
|
return name.length < 13 + AENS_SUFFIX.length;
|
|
320
222
|
}
|
|
321
223
|
//# sourceMappingURL=helpers.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tx/builder/helpers.js"],"names":["BigNumber","hash","salt","encode","decode","toBytes","ID_TAG_PREFIX","PREFIX_ID_TAG","NAME_BID_RANGES","NAME_FEE_BID_INCREMENT","NAME_BID_TIMEOUTS","NAME_MAX_LENGTH_FEE","POINTER_KEY_BY_PREFIX","ceil","TagNotFoundError","PrefixNotFoundError","InvalidNameError","IllegalBidFeeError","NoDefaultAensPointerError","ArgumentError","createSalt","buildContractId","ownerId","nonce","ownerIdAndNonce","from","b2bHash","oracleQueryId","senderId","oracleId","_int32","val","nonceBE","concat","alloc","length","formatSalt","toString","padStart","produceNameId","name","ensureNameValid","toLowerCase","commitmentHash","base64Types","base58Types","typesLength","ak","ct","ok","ensureValidLength","data","type","PayloadLengthError","getChecksum","payload","sha256hash","slice","addChecksum","input","getPayload","buffer","equals","InvalidChecksumError","base64","string","base58","bs58","writeId","hashId","prefix","idTag","readId","buf","tag","readUIntBE","writeInt","readInt","buildPointers","pointers","map","p","key","id","readPointers","Object","assign","AENS_SUFFIX","endsWith","isNameValid","error","getDefaultPointerKey","identifier","substr","getMinimumNameFee","nameLength","Math","min","computeBidFee","startFee","increment","Number","times","plus","computeAuctionEndBlock","claimHeight","h","isAuctionName"],"mappings":";;;;AAAA,OAAOA,SAAP,MAAsB,cAAtB;AACA,gBAA2D,MAA3D;;;;;SACSC,I,EAAMC,I;SACNC,M,EAAQC,M;SACRC,O;SAEPC,a,EACAC,a,EACAC,e,EACAC,sB,EACAC,iB,EACAC,mB,EACAC,qB;SAEOC,I;SAEPC,gB,EACAC,mB,EACAC,gB,EACAC,kB,EACAC,yB,EACAC,a;AAGF;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,MAAMC,UAAU,GAAGlB,IAAnB;AAEP,SAASC,MAAT,EAAiBC,MAAjB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASiB,eAAT,CAA0BC,OAA1B,EAAmCC,KAAnC,EAA0C;AAC/C,QAAMC,eAAe,GAAG,QAAOC,IAAP,CAAY,CAAC,GAAGrB,MAAM,CAACkB,OAAD,EAAU,IAAV,CAAV,EAA2B,GAAGjB,OAAO,CAACkB,KAAD,CAArC,CAAZ,CAAxB;;AACA,QAAMG,OAAO,GAAGzB,IAAI,CAACuB,eAAD,CAApB;AACA,SAAOrB,MAAM,CAACuB,OAAD,EAAU,IAAV,CAAb;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,aAAT,CAAwBC,QAAxB,EAAkCL,KAAlC,EAAyCM,QAAzC,EAAmD;AACxD,WAASC,MAAT,CAAiBC,GAAjB,EAAsB;AACpB,UAAMC,OAAO,GAAG3B,OAAO,CAAC0B,GAAD,EAAM,IAAN,CAAvB;AACA,WAAO,QAAOE,MAAP,CAAc,CAAC,QAAOC,KAAP,CAAa,KAAKF,OAAO,CAACG,MAA1B,CAAD,EAAoCH,OAApC,CAAd,CAAP;AACD;;AAED,QAAMN,OAAO,GAAGzB,IAAI,CAAC,QAAOwB,IAAP,CAAY,CAAC,GAAGrB,MAAM,CAACwB,QAAD,EAAW,IAAX,CAAV,EAA4B,GAAGE,MAAM,CAACP,KAAD,CAArC,EAA8C,GAAGnB,MAAM,CAACyB,QAAD,EAAW,IAAX,CAAvD,CAAZ,CAAD,CAApB;AACA,SAAO1B,MAAM,CAACuB,OAAD,EAAU,IAAV,CAAb;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASU,UAAT,CAAqBlC,IAArB,EAA2B;AAChC,SAAO,QAAOuB,IAAP,CAAYvB,IAAI,CAACmC,QAAL,CAAc,EAAd,EAAkBC,QAAlB,CAA2B,EAA3B,EAA+B,GAA/B,CAAZ,EAAiD,KAAjD,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,aAAT,CAAwBC,IAAxB,EAA8B;AACnCC,EAAAA,eAAe,CAACD,IAAD,CAAf;AACA,SAAOrC,MAAM,CAACF,IAAI,CAACuC,IAAI,CAACE,WAAL,EAAD,CAAL,EAA2B,IAA3B,CAAb;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,cAAT,CAAyBH,IAAzB,EAAoD;AAAA,MAArBtC,IAAqB,uEAAdkB,UAAU,EAAI;AACzDqB,EAAAA,eAAe,CAACD,IAAD,CAAf;AACA,SAAOrC,MAAM,CAACF,IAAI,CAAC,QAAOgC,MAAP,CAAc,CAAC,QAAOR,IAAP,CAAYe,IAAI,CAACE,WAAL,EAAZ,CAAD,EAAkCN,UAAU,CAAClC,IAAD,CAA5C,CAAd,CAAD,CAAL,EAA2E,IAA3E,CAAb;AACD,C,CAED;;AACA,MAAM0C,WAAW,GAAG,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,EAAqC,IAArC,EAA2C,IAA3C,EAAiD,IAAjD,EAAuD,IAAvD,EAA6D,IAA7D,CAApB;AACA,MAAMC,WAAW,GAAG,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,EAAqC,IAArC,EAA2C,IAA3C,EAAiD,IAAjD,EAAuD,IAAvD,EAA6D,IAA7D,EAAmE,IAAnE,EAAyE,IAAzE,EAA+E,IAA/E,EAAqF,IAArF,CAApB,C,CACA;;AACA,MAAMC,WAAW,GAAG;AAClBC,EAAAA,EAAE,EAAE,EADc;AAElBC,EAAAA,EAAE,EAAE,EAFc;AAGlBC,EAAAA,EAAE,EAAE;AAHc,CAApB;;AAMA,SAASC,iBAAT,CAA4BC,IAA5B,EAAkCC,IAAlC,EAAwC;AACtC,MAAI,CAACN,WAAW,CAACM,IAAD,CAAhB,EAAwB;AACxB,MAAID,IAAI,CAAChB,MAAL,KAAgBW,WAAW,CAACM,IAAD,CAA/B,EAAuC;AACvC,QAAM,IAAIC,kBAAJ,CAAwB,qBAAoBP,WAAW,CAACM,IAAD,CAAO,eAAcD,IAAI,CAAChB,MAAO,UAAxF,CAAN;AACD;;AAED,MAAMmB,WAAW,GAAGC,OAAO,IAAIC,UAAU,CAACA,UAAU,CAACD,OAAD,CAAX,CAAV,CAAgCE,KAAhC,CAAsC,CAAtC,EAAyC,CAAzC,CAA/B;;AAEA,MAAMC,WAAW,GAAIC,KAAD,IAAW;AAC7B,QAAMJ,OAAO,GAAG,QAAO9B,IAAP,CAAYkC,KAAZ,CAAhB;;AACA,SAAO,QAAO1B,MAAP,CAAc,CAACsB,OAAD,EAAUD,WAAW,CAACC,OAAD,CAArB,CAAd,CAAP;AACD,CAHD;;AAKA,SAASK,UAAT,CAAqBC,MAArB,EAA6B;AAC3B,QAAMN,OAAO,GAAGM,MAAM,CAACJ,KAAP,CAAa,CAAb,EAAgB,CAAC,CAAjB,CAAhB;AACA,MAAI,CAACH,WAAW,CAACC,OAAD,CAAX,CAAqBO,MAArB,CAA4BD,MAAM,CAACJ,KAAP,CAAa,CAAC,CAAd,CAA5B,CAAL,EAAoD,MAAM,IAAIM,oBAAJ,EAAN;AACpD,SAAOR,OAAP;AACD;;AAED,MAAMS,MAAM,GAAG;AACb7D,EAAAA,MAAM,EAAE0D,MAAM,IAAIH,WAAW,CAACG,MAAD,CAAX,CAAoBxB,QAApB,CAA6B,QAA7B,CADL;AAEbjC,EAAAA,MAAM,EAAE6D,MAAM,IAAIL,UAAU,CAAC,QAAOnC,IAAP,CAAYwC,MAAZ,EAAoB,QAApB,CAAD;AAFf,CAAf;AAKA,MAAMC,MAAM,GAAG;AACb/D,EAAAA,MAAM,EAAE0D,MAAM,IAAIM,IAAI,CAAChE,MAAL,CAAYuD,WAAW,CAACG,MAAD,CAAvB,CADL;AAEbzD,EAAAA,MAAM,EAAE6D,MAAM,IAAIL,UAAU,CAACO,IAAI,CAAC/D,MAAL,CAAY6D,MAAZ,CAAD;AAFf,CAAf;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASG,OAAT,CAAkBC,MAAlB,EAA0B;AAC/B,MAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC,MAAM,IAAIlD,aAAJ,CAAkB,QAAlB,EAA4B,UAA5B,EAAwCkD,MAAxC,CAAN;AAChC,QAAMC,MAAM,GAAGD,MAAM,CAACZ,KAAP,CAAa,CAAb,EAAgB,CAAhB,CAAf;AACA,QAAMc,KAAK,GAAGhE,aAAa,CAAC+D,MAAD,CAA3B;AACA,MAAI,CAACC,KAAL,EAAY,MAAM,IAAIzD,gBAAJ,CAAqBwD,MAArB,CAAN;AACZ,SAAO,QAAO7C,IAAP,CAAY,CAAC,GAAGpB,OAAO,CAACkE,KAAD,CAAX,EAAoB,GAAGnE,MAAM,CAACiE,MAAD,EAASC,MAAT,CAA7B,CAAZ,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASE,MAAT,CAAiBC,GAAjB,EAAsB;AAC3B,QAAMC,GAAG,GAAG,QAAOjD,IAAP,CAAYgD,GAAZ,EAAiBE,UAAjB,CAA4B,CAA5B,EAA+B,CAA/B,CAAZ;;AACA,QAAML,MAAM,GAAGhE,aAAa,CAACoE,GAAD,CAA5B;AACA,MAAI,CAACJ,MAAL,EAAa,MAAM,IAAIvD,mBAAJ,CAAwB2D,GAAxB,CAAN;AACb,SAAOvE,MAAM,CAACsE,GAAG,CAAChB,KAAJ,CAAU,CAAV,EAAagB,GAAG,CAACtC,MAAjB,CAAD,EAA2BmC,MAA3B,CAAb;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASM,QAAT,CAAmB7C,GAAnB,EAAwB;AAC7B,SAAO1B,OAAO,CAAC0B,GAAD,EAAM,IAAN,CAAd;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAAS8C,OAAT,GAAyC;AAAA,MAAvBJ,GAAuB,uEAAjB,QAAOhD,IAAP,CAAY,EAAZ,CAAiB;AAC9C,SAAO,IAAIzB,SAAJ,CAAc,QAAOyB,IAAP,CAAYgD,GAAZ,EAAiBpC,QAAjB,CAA0B,KAA1B,CAAd,EAAgD,EAAhD,EAAoDA,QAApD,CAA6D,EAA7D,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASyC,aAAT,CAAwBC,QAAxB,EAAkC;AACvC,SAAOA,QAAQ,CAACC,GAAT,CACLC,CAAC,IAAI,CACH5E,OAAO,CAAC4E,CAAC,CAACC,GAAH,CADJ,EAEHd,OAAO,CAACa,CAAC,CAACE,EAAH,CAFJ,CADA,CAAP;AAMD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,YAAT,CAAuBL,QAAvB,EAAiC;AACtC,SAAOA,QAAQ,CAACC,GAAT,CACL;AAAA,QAAC,CAACE,GAAD,EAAMC,EAAN,CAAD;AAAA,WAAeE,MAAM,CAACC,MAAP,CAAc;AAC3BJ,MAAAA,GAAG,EAAEA,GAAG,CAAC7C,QAAJ,EADsB;AAE3B8C,MAAAA,EAAE,EAAEX,MAAM,CAACW,EAAD;AAFiB,KAAd,CAAf;AAAA,GADK,CAAP;AAMD;AAED,MAAMI,WAAW,GAAG,QAApB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAAS9C,eAAT,CAA0BD,IAA1B,EAAgC;AACrC,MAAI,CAACA,IAAD,IAAS,OAAOA,IAAP,KAAgB,QAA7B,EAAuC,MAAM,IAAIxB,gBAAJ,CAAqB,uBAArB,CAAN;AACvC,MAAI,CAACwB,IAAI,CAACgD,QAAL,CAAcD,WAAd,CAAL,EAAiC,MAAM,IAAIvE,gBAAJ,CAAsB,wBAAuBuE,WAAY,KAAI/C,IAAK,EAAlE,CAAN;AAClC;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASiD,WAAT,CAAsBjD,IAAtB,EAA4B;AACjC,MAAI;AACFC,IAAAA,eAAe,CAACD,IAAD,CAAf;AACA,WAAO,IAAP;AACD,GAHD,CAGE,OAAOkD,KAAP,EAAc;AACd,WAAO,KAAP;AACD;AACF;AAED;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,oBAAT,CAA+BC,UAA/B,EAA2C;AAChDxF,EAAAA,MAAM,CAACwF,UAAD,CAAN;AACA,QAAMtB,MAAM,GAAGsB,UAAU,CAACC,MAAX,CAAkB,CAAlB,EAAqB,CAArB,CAAf;AACA,SAAOjF,qBAAqB,CAAC0D,MAAD,CAArB,IACL,CAAC,MAAM;AAAE,UAAM,IAAIpD,yBAAJ,CAA8BoD,MAA9B,CAAN;AAA6C,GAAtD,GADF;AAED;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASwB,iBAAT,CAA4BtD,IAA5B,EAAkC;AACvCC,EAAAA,eAAe,CAACD,IAAD,CAAf;AACA,QAAMuD,UAAU,GAAGvD,IAAI,CAACL,MAAL,GAAcoD,WAAW,CAACpD,MAA7C;AACA,SAAO3B,eAAe,CAACwF,IAAI,CAACC,GAAL,CAASF,UAAT,EAAqBpF,mBAArB,CAAD,CAAtB;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASuF,aAAT,CAAwB1D,IAAxB,EAA8B2D,QAA9B,EAA4E;AAAA,MAApCC,SAAoC,uEAAxB3F,sBAAwB;AACjF,MAAI,EAAE4F,MAAM,CAACD,SAAD,CAAN,KAAsBA,SAAtB,IAAmCA,SAAS,GAAG,CAAZ,KAAkB,CAAvD,CAAJ,EAA+D,MAAM,IAAInF,kBAAJ,CAAwB,8CAA6CmF,SAAU,EAA/E,CAAN;AAC/D,MAAIA,SAAS,GAAG3F,sBAAhB,EAAwC,MAAM,IAAIQ,kBAAJ,CAAwB,mCAAkCR,sBAAuB,EAAjF,CAAN;AACxC,SAAOI,IAAI,CACTb,SAAS,CAACmG,QAAD,aAACA,QAAD,cAACA,QAAD,GAAaL,iBAAiB,CAACtD,IAAD,CAA9B,CAAT,CAA+C8D,KAA/C,CAAqDtG,SAAS,CAACS,sBAAD,CAAT,CAAkC8F,IAAlC,CAAuC,CAAvC,CAArD,CADS,CAAX;AAGD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,sBAAT,CAAiChE,IAAjC,EAAuCiE,WAAvC,EAAoD;AACzDhE,EAAAA,eAAe,CAACD,IAAD,CAAf;AACA,QAAML,MAAM,GAAGK,IAAI,CAACL,MAAL,GAAcoD,WAAW,CAACpD,MAAzC;AACA,QAAMuE,CAAC,GAAIvE,MAAM,IAAI,CAAV,IAAezB,iBAAiB,CAAC,CAAD,CAAjC,IACPyB,MAAM,IAAI,CAAV,IAAezB,iBAAiB,CAAC,CAAD,CADzB,IAEPyB,MAAM,IAAI,EAAV,IAAgBzB,iBAAiB,CAAC,EAAD,CAF1B,IAGRA,iBAAiB,CAAC,EAAD,CAHnB;AAIA,SAAOgG,CAAC,CAACH,IAAF,CAAOE,WAAP,EAAoBpE,QAApB,CAA6B,EAA7B,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASsE,aAAT,CAAwBnE,IAAxB,EAA8B;AACnCC,EAAAA,eAAe,CAACD,IAAD,CAAf;AACA,SAAOA,IAAI,CAACL,MAAL,GAAc,KAAKoD,WAAW,CAACpD,MAAtC;AACD","sourcesContent":["import BigNumber from 'bignumber.js'\nimport { encode as bs58Encode, decode as bs58Decode } from 'bs58'\nimport { hash, salt } from '../../utils/crypto'\nimport { encode, decode } from '../../utils/encoder'\nimport { toBytes } from '../../utils/bytes'\nimport {\n ID_TAG_PREFIX,\n PREFIX_ID_TAG,\n NAME_BID_RANGES,\n NAME_FEE_BID_INCREMENT,\n NAME_BID_TIMEOUTS,\n NAME_MAX_LENGTH_FEE,\n POINTER_KEY_BY_PREFIX\n} from './constants'\nimport { ceil } from '../../utils/bignumber'\nimport {\n TagNotFoundError,\n PrefixNotFoundError,\n InvalidNameError,\n IllegalBidFeeError,\n NoDefaultAensPointerError,\n ArgumentError\n} from '../../utils/errors'\n\n/**\n * JavaScript-based Transaction builder helper function's\n * @module @aeternity/aepp-sdk/es/tx/builder/helpers\n * @export TxBuilderHelper\n * @example import { TxBuilderHelper } from '@aeternity/aepp-sdk'\n */\n\nexport const createSalt = salt\n\nexport { encode, decode }\n\n/**\n * Build a contract public key\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} ownerId The public key of the owner account\n * @param {number} nonce the nonce of the transaction\n * @return {string} Contract public key\n */\nexport function buildContractId (ownerId, nonce) {\n const ownerIdAndNonce = Buffer.from([...decode(ownerId, 'ak'), ...toBytes(nonce)])\n const b2bHash = hash(ownerIdAndNonce)\n return encode(b2bHash, 'ct')\n}\n\n/**\n * Build a oracle query id\n * @function\n * @function* @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} senderId The public key of the sender account\n * @param {Number} nonce the nonce of the transaction\n * @param {Number} oracleId The oracle public key\n * @return {string} Contract public key\n */\nexport function oracleQueryId (senderId, nonce, oracleId) {\n function _int32 (val) {\n const nonceBE = toBytes(val, true)\n return Buffer.concat([Buffer.alloc(32 - nonceBE.length), nonceBE])\n }\n\n const b2bHash = hash(Buffer.from([...decode(senderId, 'ak'), ..._int32(nonce), ...decode(oracleId, 'ok')]))\n return encode(b2bHash, 'oq')\n}\n\n/**\n * Format the salt into a 64-byte hex string\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {number} salt\n * @return {string} Zero-padded hex string of salt\n */\nexport function formatSalt (salt) {\n return Buffer.from(salt.toString(16).padStart(64, '0'), 'hex')\n}\n\n/**\n * Encode an AENS name\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name Name to encode\n * @return {String} `nm_` prefixed encoded AENS name\n */\nexport function produceNameId (name) {\n ensureNameValid(name)\n return encode(hash(name.toLowerCase()), 'nm')\n}\n\n/**\n * Generate the commitment hash by hashing the formatted salt and\n * name, base 58 encoding the result and prepending 'cm_'\n *\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @function commitmentHash\n * @category async\n * @rtype (name: String, salt?: String) => hash: Promise[String]\n * @param {String} name - Name to be registered\n * @param {Number} salt Random salt\n * @return {String} Commitment hash\n */\nexport function commitmentHash (name, salt = createSalt()) {\n ensureNameValid(name)\n return encode(hash(Buffer.concat([Buffer.from(name.toLowerCase()), formatSalt(salt)])), 'cm')\n}\n\n// based on https://github.com/aeternity/protocol/blob/master/node/api/api_encoding.md\nconst base64Types = ['ba', 'cb', 'or', 'ov', 'pi', 'ss', 'cs', 'ck', 'cv', 'st', 'tx']\nconst base58Types = ['ak', 'bf', 'bs', 'bx', 'ch', 'cm', 'ct', 'kh', 'mh', 'nm', 'ok', 'oq', 'pp', 'sg', 'th']\n// TODO: add all types with a fixed length\nconst typesLength = {\n ak: 32,\n ct: 32,\n ok: 32\n}\n\nfunction ensureValidLength (data, type) {\n if (!typesLength[type]) return\n if (data.length === typesLength[type]) return\n throw new PayloadLengthError(`Payload should be ${typesLength[type]} bytes, got ${data.length} instead`)\n}\n\nconst getChecksum = payload => sha256hash(sha256hash(payload)).slice(0, 4)\n\nconst addChecksum = (input) => {\n const payload = Buffer.from(input)\n return Buffer.concat([payload, getChecksum(payload)])\n}\n\nfunction getPayload (buffer) {\n const payload = buffer.slice(0, -4)\n if (!getChecksum(payload).equals(buffer.slice(-4))) throw new InvalidChecksumError()\n return payload\n}\n\nconst base64 = {\n encode: buffer => addChecksum(buffer).toString('base64'),\n decode: string => getPayload(Buffer.from(string, 'base64'))\n}\n\nconst base58 = {\n encode: buffer => bs58.encode(addChecksum(buffer)),\n decode: string => getPayload(bs58.decode(string))\n}\n\n/**\n * Utility function to create and _id type\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} hashId Encoded hash\n * @return {Buffer} Buffer Buffer with ID tag and decoded HASh\n */\nexport function writeId (hashId) {\n if (typeof hashId !== 'string') throw new ArgumentError('hashId', 'a string', hashId)\n const prefix = hashId.slice(0, 2)\n const idTag = PREFIX_ID_TAG[prefix]\n if (!idTag) throw new TagNotFoundError(prefix)\n return Buffer.from([...toBytes(idTag), ...decode(hashId, prefix)])\n}\n\n/**\n * Utility function to read and _id type\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer} buf Data\n * @return {String} Encoided hash string with prefix\n */\nexport function readId (buf) {\n const tag = Buffer.from(buf).readUIntBE(0, 1)\n const prefix = ID_TAG_PREFIX[tag]\n if (!prefix) throw new PrefixNotFoundError(tag)\n return encode(buf.slice(1, buf.length), prefix)\n}\n\n/**\n * Utility function to convert int to bytes\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Number|String|BigNumber} val Value\n * @return {Buffer} Buffer Buffer from number(BigEndian)\n */\nexport function writeInt (val) {\n return toBytes(val, true)\n}\n\n/**\n * Utility function to convert bytes to int\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer} buf Value\n * @return {String} Buffer Buffer from number(BigEndian)\n */\nexport function readInt (buf = Buffer.from([])) {\n return new BigNumber(Buffer.from(buf).toString('hex'), 16).toString(10)\n}\n\n/**\n * Helper function to build pointers for name update TX\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Array} pointers - Array of pointers\n * ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])\n * @return {Array} Serialized pointers array\n */\nexport function buildPointers (pointers) {\n return pointers.map(\n p => [\n toBytes(p.key),\n writeId(p.id)\n ]\n )\n}\n\n/**\n * Helper function to read pointers from name update TX\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Array} pointers - Array of pointers\n * ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])\n * @return {Array} Deserialize pointer array\n */\nexport function readPointers (pointers) {\n return pointers.map(\n ([key, id]) => Object.assign({\n key: key.toString(),\n id: readId(id)\n })\n )\n}\n\nconst AENS_SUFFIX = '.chain'\n\n/**\n * Ensure that AENS name is valid\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} name\n * @return void\n * @throws Error\n */\nexport function ensureNameValid (name) {\n if (!name || typeof name !== 'string') throw new InvalidNameError('Name must be a string')\n if (!name.endsWith(AENS_SUFFIX)) throw new InvalidNameError(`Name should end with ${AENS_SUFFIX}: ${name}`)\n}\n\n/**\n * Is AENS name valid\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} name\n * @return Boolean\n */\nexport function isNameValid (name) {\n try {\n ensureNameValid(name)\n return true\n } catch (error) {\n return false\n }\n}\n\n/**\n * @param identifier - account/oracle/contract address, or channel\n * @returns {String} default AENS pointer key\n * @throws exception when default key not defined\n */\nexport function getDefaultPointerKey (identifier) {\n decode(identifier)\n const prefix = identifier.substr(0, 2)\n return POINTER_KEY_BY_PREFIX[prefix] ||\n (() => { throw new NoDefaultAensPointerError(prefix) })()\n}\n\n/**\n * Get the minimum AENS name fee\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name the AENS name to get the fee for\n * @return {String} the minimum fee for the AENS name auction\n */\nexport function getMinimumNameFee (name) {\n ensureNameValid(name)\n const nameLength = name.length - AENS_SUFFIX.length\n return NAME_BID_RANGES[Math.min(nameLength, NAME_MAX_LENGTH_FEE)]\n}\n\n/**\n * Compute bid fee for AENS auction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name the AENS name to get the fee for\n * @param {Number|String} startFee Auction start fee\n * @param {Number} [increment=0.5] Bid multiplier(In percentage, must be between 0 and 1)\n * @return {String} Bid fee\n */\nexport function computeBidFee (name, startFee, increment = NAME_FEE_BID_INCREMENT) {\n if (!(Number(increment) === increment && increment % 1 !== 0)) throw new IllegalBidFeeError(`Increment must be float. Current increment ${increment}`)\n if (increment < NAME_FEE_BID_INCREMENT) throw new IllegalBidFeeError(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`)\n return ceil(\n BigNumber(startFee ?? getMinimumNameFee(name)).times(BigNumber(NAME_FEE_BID_INCREMENT).plus(1))\n )\n}\n\n/**\n * Compute auction end height\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name\n * @param {Number|String} claimHeight Auction starting height\n * @return {String} Auction end height\n */\nexport function computeAuctionEndBlock (name, claimHeight) {\n ensureNameValid(name)\n const length = name.length - AENS_SUFFIX.length\n const h = (length <= 4 && NAME_BID_TIMEOUTS[4]) ||\n (length <= 8 && NAME_BID_TIMEOUTS[8]) ||\n (length <= 12 && NAME_BID_TIMEOUTS[12]) ||\n NAME_BID_TIMEOUTS[13]\n return h.plus(claimHeight).toString(10)\n}\n\n/**\n * Is name accept going to auction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name\n * @return {Boolean}\n */\nexport function isAuctionName (name) {\n ensureNameValid(name)\n return name.length < 13 + AENS_SUFFIX.length\n}\n"],"file":"helpers.mjs"}
|
|
1
|
+
{"version":3,"file":"helpers.mjs","names":["BigNumber","hash","salt","encode","decode","toBytes","concatBuffers","ID_TAG_PREFIX","PREFIX_ID_TAG","NAME_BID_RANGES","NAME_FEE_BID_INCREMENT","NAME_BID_TIMEOUT_BLOCKS","NAME_MAX_LENGTH_FEE","POINTER_KEY_BY_PREFIX","ceil","TagNotFoundError","PrefixNotFoundError","IllegalBidFeeError","ArgumentError","createSalt","buildContractId","ownerId","nonce","ownerIdAndNonce","from","b2bHash","oracleQueryId","senderId","oracleId","_int32","val","nonceBE","alloc","length","formatSalt","toString","padStart","produceNameId","name","toLowerCase","commitmentHash","writeId","hashId","prefix","slice","idTag","readId","buf","tag","readUIntBE","writeInt","readInt","buildPointers","pointers","map","p","key","id","readPointers","Object","assign","AENS_SUFFIX","isNameValid","endsWith","getDefaultPointerKey","identifier","substring","getMinimumNameFee","nameLength","Math","min","computeBidFee","startFee","increment","Number","times","plus","computeAuctionEndBlock","claimHeight","h","isAuctionName"],"sources":["../../../src/tx/builder/helpers.ts"],"sourcesContent":["import BigNumber from 'bignumber.js'\nimport { hash, salt } from '../../utils/crypto'\nimport { encode, decode, EncodedData, EncodingType } from '../../utils/encoder'\nimport { toBytes } from '../../utils/bytes'\nimport { concatBuffers } from '../../utils/other'\nimport {\n ID_TAG_PREFIX,\n PREFIX_ID_TAG,\n NAME_BID_RANGES,\n NAME_FEE_BID_INCREMENT,\n NAME_BID_TIMEOUT_BLOCKS,\n NAME_MAX_LENGTH_FEE,\n POINTER_KEY_BY_PREFIX,\n AensName\n} from './constants'\nimport { ceil } from '../../utils/bignumber'\nimport {\n TagNotFoundError,\n PrefixNotFoundError,\n IllegalBidFeeError,\n ArgumentError\n} from '../../utils/errors'\n\n/**\n * JavaScript-based Transaction builder helper function's\n */\n\nexport const createSalt = salt\n\nexport { encode, decode }\n\nexport interface Pointer {\n key: string\n id: string\n}\n\n/**\n * Build a contract public key\n * @param ownerId - The public key of the owner account\n * @param nonce - the nonce of the transaction\n * @returns Contract public key\n */\nexport function buildContractId (ownerId: EncodedData<'ak'>, nonce: number | BigNumber): EncodedData<'ct'> {\n const ownerIdAndNonce = Buffer.from([...decode(ownerId), ...toBytes(nonce)])\n const b2bHash = hash(ownerIdAndNonce)\n return encode(b2bHash, 'ct')\n}\n\n/**\n * Build a oracle query id\n * @param senderId - The public key of the sender account\n * @param nonce - the nonce of the transaction\n * @param oracleId - The oracle public key\n * @returns Contract public key\n */\nexport function oracleQueryId (\n senderId: EncodedData<'ak'>,\n nonce: number | BigNumber | string,\n oracleId: EncodedData<'ok'>\n): EncodedData<'oq'> {\n function _int32 (val: number | string | BigNumber): Buffer {\n const nonceBE = toBytes(val, true)\n return concatBuffers([Buffer.alloc(32 - nonceBE.length), nonceBE])\n }\n\n const b2bHash = hash(\n Buffer.from([...decode(senderId), ..._int32(nonce), ...decode(oracleId)]))\n return encode(b2bHash, 'oq')\n}\n\n/**\n * Format the salt into a 64-byte hex string\n * @param salt - Random number\n * @returns Zero-padded hex string of salt\n */\nexport function formatSalt (salt: number): Buffer {\n return Buffer.from(salt.toString(16).padStart(64, '0'), 'hex')\n}\n\n/**\n * Encode an AENS name\n *\n * @param name - Name to encode\n * @returns `nm_` prefixed encoded AENS name\n */\nexport function produceNameId (name: AensName): EncodedData<'nm'> {\n return encode(hash(name.toLowerCase()), 'nm')\n}\n\n/**\n * Generate the commitment hash by hashing the formatted salt and\n * name, base 58 encoding the result and prepending 'cm_'\n *\n * @param name - Name to be registered\n * @param salt - Random salt\n * @returns Commitment hash\n */\nexport function commitmentHash (name: AensName, salt: number = createSalt()): EncodedData<'cm'> {\n return encode(hash(concatBuffers([Buffer.from(name.toLowerCase()), formatSalt(salt)])), 'cm')\n}\n\n/**\n * Utility function to create and _id type\n * @param hashId - Encoded hash\n * @returns Buffer Buffer with ID tag and decoded HASh\n */\nexport function writeId (hashId: string): Buffer {\n if (typeof hashId !== 'string') throw new ArgumentError('hashId', 'a string', hashId)\n const prefix = hashId.slice(0, 2) as keyof typeof PREFIX_ID_TAG\n const idTag = PREFIX_ID_TAG[prefix]\n if (idTag == null) throw new TagNotFoundError(prefix)\n return Buffer.from([...toBytes(idTag), ...decode(hashId as EncodedData<EncodingType>)])\n}\n\n/**\n * Utility function to read and _id type\n * @param buf - Data\n * @returns Encoided hash string with prefix\n */\nexport function readId (buf: Buffer): string {\n const tag = Buffer.from(buf).readUIntBE(0, 1)\n const prefix = ID_TAG_PREFIX[tag]\n if (prefix == null) throw new PrefixNotFoundError(tag)\n return encode(buf.slice(1, buf.length), prefix)\n}\n\n/**\n * Utility function to convert int to bytes\n * @param val - Value\n * @returns Buffer Buffer from number(BigEndian)\n */\nexport function writeInt (val: number | string | BigNumber): Buffer {\n return toBytes(val, true)\n}\n\n/**\n * Utility function to convert bytes to int\n * @param buf - Value\n * @returns Buffer Buffer from number(BigEndian)\n */\nexport function readInt (buf: Buffer = Buffer.from([])): string {\n return new BigNumber(Buffer.from(buf).toString('hex'), 16).toString(10)\n}\n\n/**\n * Helper function to build pointers for name update TX\n * @param pointers - Array of pointers\n * `([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])`\n * @returns Serialized pointers array\n */\nexport function buildPointers (pointers: Pointer[]): Buffer[][] {\n return pointers.map(\n p => [\n toBytes(p.key),\n writeId(p.id)\n ]\n )\n}\n\n/**\n * Helper function to read pointers from name update TX\n * @param pointers - Array of pointers\n * @returns Deserialize pointer array\n */\nexport function readPointers (pointers: Array<[key: string, id: Buffer]>): Pointer[] {\n return pointers.map(\n ([key, id]) => Object.assign({\n key: key.toString(),\n id: readId(id)\n })\n )\n}\n\nconst AENS_SUFFIX = '.chain'\n\n/**\n * Is AENS name valid\n * @param name - AENS name\n */\nexport function isNameValid (name: string): name is AensName {\n // TODO: probably there are stronger requirements\n return name.endsWith(AENS_SUFFIX)\n}\n\n/**\n * @param identifier - account/oracle/contract address, or channel\n * @returns default AENS pointer key\n */\nexport function getDefaultPointerKey (\n identifier: EncodedData<keyof typeof POINTER_KEY_BY_PREFIX>\n): POINTER_KEY_BY_PREFIX {\n decode(identifier)\n const prefix = identifier.substring(0, 2) as keyof typeof POINTER_KEY_BY_PREFIX\n return POINTER_KEY_BY_PREFIX[prefix]\n}\n\n/**\n * Get the minimum AENS name fee\n *\n * @param name - the AENS name to get the fee for\n * @returns the minimum fee for the AENS name auction\n */\nexport function getMinimumNameFee (name: AensName): BigNumber {\n const nameLength = name.length - AENS_SUFFIX.length\n return NAME_BID_RANGES[Math.min(nameLength, NAME_MAX_LENGTH_FEE)]\n}\n\n/**\n * Compute bid fee for AENS auction\n *\n * @param name - the AENS name to get the fee for\n * @param options - Options\n * @param options.startFee - Auction start fee\n * @param options.increment - Bid multiplier(In percentage, must be between 0 and 1)\n * @returns Bid fee\n */\nexport function computeBidFee (\n name: AensName,\n { startFee, increment = NAME_FEE_BID_INCREMENT }:\n { startFee?: number | string | BigNumber, increment?: number } = {}\n): BigNumber {\n if (!(Number(increment) === increment && increment % 1 !== 0)) throw new IllegalBidFeeError(`Increment must be float. Current increment ${increment}`)\n if (increment < NAME_FEE_BID_INCREMENT) throw new IllegalBidFeeError(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`)\n // FIXME: increment should be used somehow here\n return ceil(\n new BigNumber(startFee ?? getMinimumNameFee(name))\n .times(new BigNumber(NAME_FEE_BID_INCREMENT).plus(1))\n )\n}\n\n/**\n * Compute auction end height\n *\n * @param name - Name to compute auction end for\n * @param claimHeight - Auction starting height\n * @see {@link https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L273}\n * @returns Auction end height\n */\nexport function computeAuctionEndBlock (name: AensName, claimHeight: number): number {\n const length = name.length - AENS_SUFFIX.length\n const h = (length <= 4 && 62 * NAME_BID_TIMEOUT_BLOCKS) ||\n (length <= 8 && 31 * NAME_BID_TIMEOUT_BLOCKS) ||\n (length <= 12 && NAME_BID_TIMEOUT_BLOCKS) ||\n 0\n return h + claimHeight\n}\n\n/**\n * Is name accept going to auction\n */\nexport function isAuctionName (name: AensName): boolean {\n return name.length < 13 + AENS_SUFFIX.length\n}\n"],"mappings":"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"}
|