@aeternity/aepp-sdk 13.0.0-alpha.0 → 13.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/aesophia_cli +0 -0
- package/dist/aepp-sdk.browser-script.js +1 -1
- package/dist/aepp-sdk.browser-script.js.map +1 -1
- package/dist/aepp-sdk.browser.js +1 -1
- package/dist/aepp-sdk.browser.js.map +1 -1
- package/dist/aepp-sdk.js +4206 -1127
- package/dist/aepp-sdk.js.map +1 -1
- package/es/AeSdkBase.d.ts +3 -3
- package/es/AeSdkBase.mjs +4 -0
- package/es/AeSdkBase.mjs.map +1 -1
- package/es/AeSdkMethods.d.ts +3 -4
- package/es/AeSdkMethods.mjs.map +1 -1
- package/es/Node.d.ts +4 -3
- package/es/Node.mjs +1 -1
- package/es/Node.mjs.map +1 -1
- package/es/account/Base.d.ts +2 -2
- package/es/account/Base.mjs.map +1 -1
- package/es/account/Generalized.mjs +5 -3
- package/es/account/Generalized.mjs.map +1 -1
- package/es/account/Ledger.mjs +2 -1
- package/es/account/Ledger.mjs.map +1 -1
- package/es/account/Memory.mjs +2 -1
- package/es/account/Memory.mjs.map +1 -1
- package/es/aens.d.ts +1 -1
- package/es/aens.mjs +5 -1
- package/es/aens.mjs.map +1 -1
- package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +1 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +19 -4
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -1
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs +1 -1
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -1
- package/es/chain.d.ts +9 -1
- package/es/chain.mjs +4 -1
- package/es/chain.mjs.map +1 -1
- package/es/channel/Base.d.ts +6 -1
- package/es/channel/Base.mjs +9 -6
- package/es/channel/Base.mjs.map +1 -1
- package/es/channel/Contract.d.ts +8 -7
- package/es/channel/Contract.mjs +1 -1
- package/es/channel/Contract.mjs.map +1 -1
- package/es/channel/Spend.d.ts +3 -1
- package/es/channel/Spend.mjs +4 -2
- package/es/channel/Spend.mjs.map +1 -1
- package/es/channel/handlers.mjs +11 -9
- package/es/channel/handlers.mjs.map +1 -1
- package/es/channel/internal.mjs +3 -1
- package/es/channel/internal.mjs.map +1 -1
- package/es/contract/Contract.d.ts +21 -46
- package/es/contract/Contract.mjs +69 -52
- package/es/contract/Contract.mjs.map +1 -1
- package/es/contract/compiler/Base.d.ts +81 -0
- package/es/contract/compiler/Base.mjs +5 -0
- package/es/contract/compiler/Base.mjs.map +1 -0
- package/es/contract/compiler/Cli.d.ts +23 -0
- package/es/contract/compiler/Cli.mjs +155 -0
- package/es/contract/compiler/Cli.mjs.map +1 -0
- package/es/contract/compiler/Http.d.ts +32 -0
- package/es/contract/{CompilerHttp.mjs → compiler/Http.mjs} +64 -9
- package/es/contract/compiler/Http.mjs.map +1 -0
- package/es/contract/compiler/HttpNode.d.ts +17 -0
- package/es/contract/compiler/HttpNode.mjs +26 -0
- package/es/contract/compiler/HttpNode.mjs.map +1 -0
- package/es/contract/compiler/getFileSystem.d.ts +6 -0
- package/es/contract/compiler/getFileSystem.mjs +40 -0
- package/es/contract/compiler/getFileSystem.mjs.map +1 -0
- package/es/contract/ga.d.ts +5 -4
- package/es/contract/ga.mjs +11 -2
- package/es/contract/ga.mjs.map +1 -1
- package/es/index-browser.d.ts +39 -0
- package/es/index-browser.mjs +55 -0
- package/es/index-browser.mjs.map +1 -0
- package/es/index.d.ts +4 -38
- package/es/index.mjs +4 -53
- package/es/index.mjs.map +1 -1
- package/es/oracle.mjs +1 -1
- package/es/oracle.mjs.map +1 -1
- package/es/spend.mjs +1 -3
- package/es/spend.mjs.map +1 -1
- package/es/tx/builder/constants.d.ts +28 -1
- package/es/tx/builder/constants.mjs +32 -3
- package/es/tx/builder/constants.mjs.map +1 -1
- package/es/tx/builder/field-types/abi-version.d.ts +10 -0
- package/es/tx/builder/field-types/abi-version.mjs +20 -0
- package/es/tx/builder/field-types/abi-version.mjs.map +1 -0
- package/es/tx/builder/field-types/address.d.ts +5 -6
- package/es/tx/builder/field-types/address.mjs +17 -8
- package/es/tx/builder/field-types/address.mjs.map +1 -1
- package/es/tx/builder/field-types/array.d.ts +7 -0
- package/es/tx/builder/field-types/array.mjs +11 -0
- package/es/tx/builder/field-types/array.mjs.map +1 -0
- package/es/tx/builder/field-types/boolean.d.ts +6 -0
- package/es/tx/builder/field-types/boolean.mjs +13 -0
- package/es/tx/builder/field-types/boolean.mjs.map +1 -0
- package/es/tx/builder/field-types/coin-amount.d.ts +1 -1
- package/es/tx/builder/field-types/coin-amount.mjs.map +1 -1
- package/es/tx/builder/field-types/ct-version.d.ts +30 -0
- package/es/tx/builder/field-types/ct-version.mjs +48 -0
- package/es/tx/builder/field-types/ct-version.mjs.map +1 -0
- package/es/tx/builder/field-types/deposit.d.ts +1 -1
- package/es/tx/builder/field-types/deposit.mjs.map +1 -1
- package/es/tx/builder/field-types/encoded.d.ts +6 -0
- package/es/tx/builder/field-types/encoded.mjs +21 -0
- package/es/tx/builder/field-types/encoded.mjs.map +1 -0
- package/es/tx/builder/field-types/entry.d.ts +11 -0
- package/es/tx/builder/field-types/entry.mjs +31 -0
- package/es/tx/builder/field-types/entry.mjs.map +1 -0
- package/es/tx/builder/field-types/enumeration.d.ts +5 -3
- package/es/tx/builder/field-types/enumeration.mjs +11 -2
- package/es/tx/builder/field-types/enumeration.mjs.map +1 -1
- package/es/tx/builder/field-types/fee.d.ts +10 -7
- package/es/tx/builder/field-types/fee.mjs +24 -20
- package/es/tx/builder/field-types/fee.mjs.map +1 -1
- package/es/tx/builder/field-types/gas-limit.d.ts +5 -2
- package/es/tx/builder/field-types/gas-limit.mjs +9 -6
- package/es/tx/builder/field-types/gas-limit.mjs.map +1 -1
- package/es/tx/builder/field-types/gas-price.d.ts +1 -1
- package/es/tx/builder/field-types/index.d.ts +66 -28
- package/es/tx/builder/field-types/index.mjs +30 -12
- package/es/tx/builder/field-types/index.mjs.map +1 -1
- package/es/tx/builder/field-types/mptree.d.ts +37 -0
- package/es/tx/builder/field-types/mptree.mjs +268 -0
- package/es/tx/builder/field-types/mptree.mjs.map +1 -0
- package/es/tx/builder/field-types/name-fee.d.ts +1 -2
- package/es/tx/builder/field-types/name-fee.mjs.map +1 -1
- package/es/tx/builder/field-types/name-id.mjs +2 -1
- package/es/tx/builder/field-types/name-id.mjs.map +1 -1
- package/es/tx/builder/field-types/pointers.mjs +2 -2
- package/es/tx/builder/field-types/pointers.mjs.map +1 -1
- package/es/tx/builder/field-types/raw.d.ts +6 -0
- package/es/tx/builder/field-types/raw.mjs +13 -0
- package/es/tx/builder/field-types/raw.mjs.map +1 -0
- package/es/tx/builder/field-types/short-u-int-const.d.ts +5 -0
- package/es/tx/builder/field-types/short-u-int-const.mjs +16 -0
- package/es/tx/builder/field-types/short-u-int-const.mjs.map +1 -0
- package/es/tx/builder/field-types/string.d.ts +6 -0
- package/es/tx/builder/field-types/string.mjs +10 -0
- package/es/tx/builder/field-types/string.mjs.map +1 -0
- package/es/tx/builder/field-types/u-int.d.ts +1 -2
- package/es/tx/builder/field-types/u-int.mjs.map +1 -1
- package/es/tx/builder/index.d.ts +11 -29
- package/es/tx/builder/index.mjs +50 -211
- package/es/tx/builder/index.mjs.map +1 -1
- package/es/tx/builder/schema.d.ts +2111 -571
- package/es/tx/builder/schema.mjs +57 -125
- package/es/tx/builder/schema.mjs.map +1 -1
- package/es/tx/index.d.ts +5 -20
- package/es/tx/index.mjs +31 -88
- package/es/tx/index.mjs.map +1 -1
- package/es/tx/validator.d.ts +3 -5
- package/es/tx/validator.mjs +82 -95
- package/es/tx/validator.mjs.map +1 -1
- package/es/utils/bytes.mjs +1 -1
- package/es/utils/bytes.mjs.map +1 -1
- package/es/utils/errors.d.ts +3 -8
- package/es/utils/errors.mjs +1 -11
- package/es/utils/errors.mjs.map +1 -1
- package/es/utils/other.d.ts +1 -1
- package/package.json +35 -27
- package/src/AeSdkBase.ts +6 -3
- package/src/AeSdkMethods.ts +3 -4
- package/src/Node.ts +6 -3
- package/src/account/Base.ts +2 -2
- package/src/account/Generalized.ts +2 -2
- package/src/account/Ledger.ts +1 -1
- package/src/account/Memory.ts +1 -1
- package/src/aens.ts +3 -2
- package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +18 -7
- package/src/aepp-wallet-communication/rpc/RpcClient.ts +2 -2
- package/src/chain.ts +5 -3
- package/src/channel/Base.ts +13 -5
- package/src/channel/Contract.ts +11 -10
- package/src/channel/Spend.ts +7 -2
- package/src/channel/handlers.ts +10 -9
- package/src/channel/internal.ts +1 -1
- package/src/contract/Contract.ts +69 -79
- package/src/contract/compiler/Base.ts +94 -0
- package/src/contract/compiler/Cli.ts +134 -0
- package/src/contract/compiler/Http.ts +124 -0
- package/src/contract/compiler/HttpNode.ts +26 -0
- package/src/contract/compiler/getFileSystem.ts +42 -0
- package/src/contract/ga.ts +9 -6
- package/src/index-browser.ts +58 -0
- package/src/index.ts +4 -56
- package/src/oracle.ts +1 -1
- package/src/spend.ts +1 -1
- package/src/tx/builder/constants.ts +32 -3
- package/src/tx/builder/field-types/abi-version.ts +21 -0
- package/src/tx/builder/field-types/address.ts +23 -13
- package/src/tx/builder/field-types/array.ts +19 -0
- package/src/tx/builder/field-types/boolean.ts +9 -0
- package/src/tx/builder/field-types/coin-amount.ts +2 -1
- package/src/tx/builder/field-types/ct-version.ts +50 -0
- package/src/tx/builder/field-types/deposit.ts +1 -1
- package/src/tx/builder/field-types/encoded.ts +27 -0
- package/src/tx/builder/field-types/entry.ts +31 -0
- package/src/tx/builder/field-types/enumeration.ts +15 -4
- package/src/tx/builder/field-types/fee.ts +38 -18
- package/src/tx/builder/field-types/gas-limit.ts +12 -7
- package/src/tx/builder/field-types/index.ts +46 -17
- package/src/tx/builder/field-types/mptree.ts +242 -0
- package/src/tx/builder/field-types/name-fee.ts +1 -2
- package/src/tx/builder/field-types/name-id.ts +1 -1
- package/src/tx/builder/field-types/pointers.ts +2 -2
- package/src/tx/builder/field-types/raw.ts +9 -0
- package/src/tx/builder/field-types/short-u-int-const.ts +20 -0
- package/src/tx/builder/field-types/string.ts +11 -0
- package/src/tx/builder/field-types/u-int.ts +1 -3
- package/src/tx/builder/index.ts +63 -247
- package/src/tx/builder/schema.ts +273 -323
- package/src/tx/index.ts +37 -104
- package/src/tx/validator.ts +72 -95
- package/src/utils/bytes.ts +1 -1
- package/src/utils/errors.ts +4 -13
- package/types-legacy/ts4.2/AeSdkBase.d.ts +3 -3
- package/types-legacy/ts4.2/AeSdkMethods.d.ts +3 -4
- package/types-legacy/ts4.2/Node.d.ts +3 -3
- package/types-legacy/ts4.2/account/Base.d.ts +2 -2
- package/types-legacy/ts4.2/aens.d.ts +1 -1
- package/types-legacy/ts4.2/aepp-wallet-communication/connection/BrowserRuntime.d.ts +1 -0
- package/types-legacy/ts4.2/chain.d.ts +9 -1
- package/types-legacy/ts4.2/channel/Base.d.ts +6 -1
- package/types-legacy/ts4.2/channel/Contract.d.ts +8 -7
- package/types-legacy/ts4.2/channel/Spend.d.ts +3 -1
- package/types-legacy/ts4.2/contract/Contract.d.ts +21 -46
- package/types-legacy/ts4.2/contract/compiler/Base.d.ts +81 -0
- package/types-legacy/ts4.2/contract/compiler/Cli.d.ts +23 -0
- package/types-legacy/ts4.2/contract/compiler/Http.d.ts +32 -0
- package/types-legacy/ts4.2/contract/compiler/HttpNode.d.ts +17 -0
- package/types-legacy/ts4.2/contract/compiler/getFileSystem.d.ts +6 -0
- package/types-legacy/ts4.2/contract/ga.d.ts +5 -4
- package/types-legacy/ts4.2/index-browser.d.ts +39 -0
- package/types-legacy/ts4.2/index.d.ts +4 -38
- package/types-legacy/ts4.2/tx/builder/constants.d.ts +28 -1
- package/types-legacy/ts4.2/tx/builder/field-types/abi-version.d.ts +10 -0
- package/types-legacy/ts4.2/tx/builder/field-types/address.d.ts +11 -12
- package/types-legacy/ts4.2/tx/builder/field-types/array.d.ts +7 -0
- package/types-legacy/ts4.2/tx/builder/field-types/boolean.d.ts +6 -0
- package/types-legacy/ts4.2/tx/builder/field-types/coin-amount.d.ts +1 -1
- package/types-legacy/ts4.2/tx/builder/field-types/ct-version.d.ts +42 -0
- package/types-legacy/ts4.2/tx/builder/field-types/deposit.d.ts +1 -1
- package/types-legacy/ts4.2/tx/builder/field-types/encoded.d.ts +6 -0
- package/types-legacy/ts4.2/tx/builder/field-types/entry.d.ts +11 -0
- package/types-legacy/ts4.2/tx/builder/field-types/enumeration.d.ts +5 -3
- package/types-legacy/ts4.2/tx/builder/field-types/fee.d.ts +10 -7
- package/types-legacy/ts4.2/tx/builder/field-types/gas-limit.d.ts +5 -2
- package/types-legacy/ts4.2/tx/builder/field-types/gas-price.d.ts +1 -1
- package/types-legacy/ts4.2/tx/builder/field-types/index.d.ts +72 -28
- package/types-legacy/ts4.2/tx/builder/field-types/mptree.d.ts +43 -0
- package/types-legacy/ts4.2/tx/builder/field-types/name-fee.d.ts +1 -2
- package/types-legacy/ts4.2/tx/builder/field-types/raw.d.ts +6 -0
- package/types-legacy/ts4.2/tx/builder/field-types/short-u-int-const.d.ts +5 -0
- package/types-legacy/ts4.2/tx/builder/field-types/string.d.ts +6 -0
- package/types-legacy/ts4.2/tx/builder/field-types/u-int.d.ts +1 -2
- package/types-legacy/ts4.2/tx/builder/index.d.ts +11 -29
- package/types-legacy/ts4.2/tx/builder/schema.d.ts +2380 -668
- package/types-legacy/ts4.2/tx/index.d.ts +5 -20
- package/types-legacy/ts4.2/tx/validator.d.ts +3 -5
- package/types-legacy/ts4.2/utils/errors.d.ts +3 -8
- package/types-legacy/ts4.2/utils/other.d.ts +1 -1
- package/types-legacy/ts4.5/AeSdkBase.d.ts +3 -3
- package/types-legacy/ts4.5/AeSdkMethods.d.ts +3 -4
- package/types-legacy/ts4.5/Node.d.ts +3 -3
- package/types-legacy/ts4.5/account/Base.d.ts +2 -2
- package/types-legacy/ts4.5/aens.d.ts +1 -1
- package/types-legacy/ts4.5/aepp-wallet-communication/connection/BrowserRuntime.d.ts +1 -0
- package/types-legacy/ts4.5/chain.d.ts +9 -1
- package/types-legacy/ts4.5/channel/Base.d.ts +6 -1
- package/types-legacy/ts4.5/channel/Contract.d.ts +8 -7
- package/types-legacy/ts4.5/channel/Spend.d.ts +3 -1
- package/types-legacy/ts4.5/contract/Contract.d.ts +21 -46
- package/types-legacy/ts4.5/contract/compiler/Base.d.ts +81 -0
- package/types-legacy/ts4.5/contract/compiler/Cli.d.ts +23 -0
- package/types-legacy/ts4.5/contract/compiler/Http.d.ts +32 -0
- package/types-legacy/ts4.5/contract/compiler/HttpNode.d.ts +17 -0
- package/types-legacy/ts4.5/contract/compiler/getFileSystem.d.ts +6 -0
- package/types-legacy/ts4.5/contract/ga.d.ts +5 -4
- package/types-legacy/ts4.5/index-browser.d.ts +39 -0
- package/types-legacy/ts4.5/index.d.ts +4 -38
- package/types-legacy/ts4.5/tx/builder/constants.d.ts +28 -1
- package/types-legacy/ts4.5/tx/builder/field-types/abi-version.d.ts +10 -0
- package/types-legacy/ts4.5/tx/builder/field-types/address.d.ts +11 -12
- package/types-legacy/ts4.5/tx/builder/field-types/array.d.ts +7 -0
- package/types-legacy/ts4.5/tx/builder/field-types/boolean.d.ts +6 -0
- package/types-legacy/ts4.5/tx/builder/field-types/coin-amount.d.ts +1 -1
- package/types-legacy/ts4.5/tx/builder/field-types/ct-version.d.ts +42 -0
- package/types-legacy/ts4.5/tx/builder/field-types/deposit.d.ts +1 -1
- package/types-legacy/ts4.5/tx/builder/field-types/encoded.d.ts +6 -0
- package/types-legacy/ts4.5/tx/builder/field-types/entry.d.ts +11 -0
- package/types-legacy/ts4.5/tx/builder/field-types/enumeration.d.ts +5 -3
- package/types-legacy/ts4.5/tx/builder/field-types/fee.d.ts +10 -7
- package/types-legacy/ts4.5/tx/builder/field-types/gas-limit.d.ts +5 -2
- package/types-legacy/ts4.5/tx/builder/field-types/gas-price.d.ts +1 -1
- package/types-legacy/ts4.5/tx/builder/field-types/index.d.ts +72 -28
- package/types-legacy/ts4.5/tx/builder/field-types/mptree.d.ts +43 -0
- package/types-legacy/ts4.5/tx/builder/field-types/name-fee.d.ts +1 -2
- package/types-legacy/ts4.5/tx/builder/field-types/raw.d.ts +6 -0
- package/types-legacy/ts4.5/tx/builder/field-types/short-u-int-const.d.ts +5 -0
- package/types-legacy/ts4.5/tx/builder/field-types/string.d.ts +6 -0
- package/types-legacy/ts4.5/tx/builder/field-types/u-int.d.ts +1 -2
- package/types-legacy/ts4.5/tx/builder/index.d.ts +11 -29
- package/types-legacy/ts4.5/tx/builder/schema.d.ts +2380 -668
- package/types-legacy/ts4.5/tx/index.d.ts +5 -20
- package/types-legacy/ts4.5/tx/validator.d.ts +3 -5
- package/types-legacy/ts4.5/utils/errors.d.ts +3 -8
- package/types-legacy/ts4.5/utils/other.d.ts +1 -1
- package/es/contract/CompilerHttp.d.ts +0 -18
- package/es/contract/CompilerHttp.mjs.map +0 -1
- package/es/tx/builder/field-types/addresses.d.ts +0 -6
- package/es/tx/builder/field-types/addresses.mjs +0 -13
- package/es/tx/builder/field-types/addresses.mjs.map +0 -1
- package/es/utils/mptree.d.ts +0 -26
- package/es/utils/mptree.mjs +0 -143
- package/es/utils/mptree.mjs.map +0 -1
- package/src/contract/CompilerHttp.ts +0 -67
- package/src/tx/builder/field-types/addresses.ts +0 -18
- package/src/utils/mptree.ts +0 -145
- package/types-legacy/ts4.2/contract/CompilerHttp.d.ts +0 -18
- package/types-legacy/ts4.2/tx/builder/field-types/addresses.d.ts +0 -6
- package/types-legacy/ts4.2/utils/mptree.d.ts +0 -32
- package/types-legacy/ts4.5/contract/CompilerHttp.d.ts +0 -18
- package/types-legacy/ts4.5/tx/builder/field-types/addresses.d.ts +0 -6
- package/types-legacy/ts4.5/utils/mptree.d.ts +0 -32
package/src/tx/index.ts
CHANGED
|
@@ -22,115 +22,37 @@
|
|
|
22
22
|
* the creation of transactions to {@link Node}.
|
|
23
23
|
* These methods provide ability to create native transactions.
|
|
24
24
|
*/
|
|
25
|
-
import
|
|
26
|
-
import {
|
|
27
|
-
|
|
28
|
-
} from './builder/schema';
|
|
29
|
-
import { Tag } from './builder/constants';
|
|
30
|
-
import {
|
|
31
|
-
ArgumentError, UnsupportedProtocolError, UnknownTxError, InvalidTxParamsError,
|
|
32
|
-
} from '../utils/errors';
|
|
25
|
+
import { TX_TTL, TxParamsCommon } from './builder/schema';
|
|
26
|
+
import { ConsensusProtocolVersion, Tag } from './builder/constants';
|
|
27
|
+
import { ArgumentError, InvalidTxParamsError } from '../utils/errors';
|
|
33
28
|
import Node from '../Node';
|
|
34
29
|
import { Encoded } from '../utils/encoder';
|
|
35
30
|
import { buildTx as syncBuildTx, unpackTx } from './builder/index';
|
|
36
|
-
import { isAccountNotFoundError
|
|
31
|
+
import { isAccountNotFoundError } from '../utils/other';
|
|
37
32
|
import { AE_AMOUNT_FORMATS } from '../utils/amount-formatter';
|
|
38
33
|
|
|
39
|
-
type Int = number | string | BigNumber;
|
|
40
|
-
|
|
41
34
|
export type BuildTxOptions <TxType extends Tag, OmitFields extends string> =
|
|
42
35
|
Omit<Parameters<typeof _buildTx<TxType>>[1], OmitFields>;
|
|
43
36
|
|
|
44
|
-
/**
|
|
45
|
-
* Validated vm/abi version or get default based on transaction type and NODE version
|
|
46
|
-
* @category transaction builder
|
|
47
|
-
* @param txType - Type of transaction
|
|
48
|
-
* @param ctVersion - Object with vm and abi version fields
|
|
49
|
-
* @returns Object with vm/abi version
|
|
50
|
-
*/
|
|
51
|
-
async function getVmVersion(
|
|
52
|
-
txType: Tag.ContractCreateTx, ctVersion: Partial<CtVersion> & { onNode: Node }
|
|
53
|
-
): Promise<CtVersion>;
|
|
54
|
-
async function getVmVersion(
|
|
55
|
-
txType: Tag, ctVersion: Partial<Pick<CtVersion, 'abiVersion'>> & { onNode: Node }
|
|
56
|
-
): Promise<Pick<CtVersion, 'abiVersion'>>;
|
|
57
|
-
async function getVmVersion(
|
|
58
|
-
txType: Tag,
|
|
59
|
-
{ vmVersion, abiVersion, onNode }: Partial<CtVersion> & { onNode: Node },
|
|
60
|
-
): Promise<Partial<CtVersion>> {
|
|
61
|
-
const { consensusProtocolVersion } = await onNode.getNodeInfo();
|
|
62
|
-
if (!isKeyOfObject(consensusProtocolVersion, PROTOCOL_VM_ABI)) {
|
|
63
|
-
throw new UnsupportedProtocolError('Not supported consensus protocol version');
|
|
64
|
-
}
|
|
65
|
-
const supportedProtocol = PROTOCOL_VM_ABI[consensusProtocolVersion];
|
|
66
|
-
if (!isKeyOfObject(txType, supportedProtocol)) {
|
|
67
|
-
throw new UnknownTxError('Not supported tx type');
|
|
68
|
-
}
|
|
69
|
-
const protocolForTX = supportedProtocol[txType];
|
|
70
|
-
abiVersion ??= protocolForTX.abiVersion[0];
|
|
71
|
-
vmVersion ??= protocolForTX.vmVersion[0];
|
|
72
|
-
return { vmVersion, abiVersion };
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Calculate fee, get absolute ttl (ttl + height), get account nonce
|
|
77
|
-
* @category transaction builder
|
|
78
|
-
* @param txType - Type of transaction
|
|
79
|
-
* @param params - Object which contains all tx data
|
|
80
|
-
* @returns Object with account nonce, absolute ttl and transaction fee
|
|
81
|
-
*/
|
|
82
|
-
async function prepareTxParams(
|
|
83
|
-
txType: Tag,
|
|
84
|
-
{
|
|
85
|
-
senderId,
|
|
86
|
-
nonce,
|
|
87
|
-
ttl = TX_TTL,
|
|
88
|
-
absoluteTtl,
|
|
89
|
-
strategy,
|
|
90
|
-
onNode,
|
|
91
|
-
}: {
|
|
92
|
-
senderId: Encoded.AccountAddress;
|
|
93
|
-
absoluteTtl?: boolean;
|
|
94
|
-
strategy?: 'continuity' | 'max';
|
|
95
|
-
onNode: Node;
|
|
96
|
-
} & Pick<TxParamsCommon, 'nonce' | 'ttl'>,
|
|
97
|
-
): Promise<{ ttl: number; nonce: number }> {
|
|
98
|
-
nonce ??= (
|
|
99
|
-
await onNode.getAccountNextNonce(senderId, { strategy }).catch((error) => {
|
|
100
|
-
if (!isAccountNotFoundError(error)) throw error;
|
|
101
|
-
return { nextNonce: 1 };
|
|
102
|
-
})
|
|
103
|
-
).nextNonce;
|
|
104
|
-
|
|
105
|
-
if (ttl !== 0) {
|
|
106
|
-
if (ttl < 0) throw new ArgumentError('ttl', 'greater or equal to 0', ttl);
|
|
107
|
-
ttl += absoluteTtl === true ? 0 : (await onNode.getCurrentKeyBlock()).height;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
return { ttl, nonce };
|
|
111
|
-
}
|
|
112
|
-
|
|
113
37
|
// TODO: find a better name or rearrange methods
|
|
114
38
|
/**
|
|
115
39
|
* @category transaction builder
|
|
116
40
|
*/
|
|
117
41
|
export async function _buildTx<TxType extends Tag>(
|
|
118
42
|
txType: TxType,
|
|
119
|
-
{
|
|
120
|
-
|
|
43
|
+
{
|
|
44
|
+
denomination, absoluteTtl, strategy, onNode, ..._params
|
|
45
|
+
}: Omit<Parameters<typeof syncBuildTx<TxType>>[0], 'tag' | 'nonce' | 'ttl'>
|
|
121
46
|
& {
|
|
122
|
-
onNode: Node;
|
|
123
|
-
fee?: Int;
|
|
124
|
-
nonce?: number;
|
|
125
|
-
ttl?: number;
|
|
126
47
|
denomination?: AE_AMOUNT_FORMATS;
|
|
127
48
|
absoluteTtl?: boolean;
|
|
49
|
+
strategy?: 'continuity' | 'max';
|
|
50
|
+
onNode: Node;
|
|
51
|
+
ttl?: number;
|
|
52
|
+
nonce?: number;
|
|
128
53
|
}
|
|
129
54
|
& (TxType extends Tag.OracleExtendTx | Tag.OracleResponseTx
|
|
130
|
-
? { callerId: Encoded.AccountAddress } : {})
|
|
131
|
-
& (TxType extends Tag.ContractCreateTx | Tag.GaAttachTx ? { ctVersion?: CtVersion } : {})
|
|
132
|
-
& (TxType extends Tag.ContractCallTx | Tag.OracleRegisterTx
|
|
133
|
-
? { abiVersion?: ABI_VERSIONS } : {}),
|
|
55
|
+
? { callerId: Encoded.AccountAddress } : {}),
|
|
134
56
|
): Promise<Encoded.Transaction> {
|
|
135
57
|
// TODO: avoid this assertion
|
|
136
58
|
const params = _params as unknown as TxParamsCommon & { onNode: Node };
|
|
@@ -172,25 +94,36 @@ export async function _buildTx<TxType extends Tag>(
|
|
|
172
94
|
default:
|
|
173
95
|
throw new ArgumentError('txType', 'valid transaction type', txType);
|
|
174
96
|
}
|
|
175
|
-
|
|
176
|
-
if (
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
params.
|
|
184
|
-
}
|
|
185
|
-
if (txType === Tag.OracleRegisterTx) {
|
|
186
|
-
params.abiVersion ??= ABI_VERSIONS.NO_ABI;
|
|
97
|
+
|
|
98
|
+
if (
|
|
99
|
+
Object.keys(ConsensusProtocolVersion).length !== 2
|
|
100
|
+
&& (((Tag.ContractCreateTx === txType || Tag.GaAttachTx === txType) && params.ctVersion == null)
|
|
101
|
+
|| ((Tag.ContractCallTx === txType || Tag.GaMetaTx === txType) && params.abiVersion == null))
|
|
102
|
+
) {
|
|
103
|
+
const { consensusProtocolVersion } = await onNode.getNodeInfo();
|
|
104
|
+
// @ts-expect-error remove after fixing buildTx types
|
|
105
|
+
params.consensusProtocolVersion = consensusProtocolVersion;
|
|
187
106
|
}
|
|
107
|
+
|
|
188
108
|
if (txType === Tag.PayingForTx) {
|
|
189
109
|
params.tx = unpackTx(params.tx);
|
|
190
110
|
}
|
|
191
111
|
const senderId = params[senderKey];
|
|
192
112
|
// TODO: do this check on TypeScript level
|
|
193
113
|
if (senderId == null) throw new InvalidTxParamsError(`Transaction field ${senderKey} is missed`);
|
|
194
|
-
|
|
195
|
-
|
|
114
|
+
|
|
115
|
+
params.nonce ??= (
|
|
116
|
+
await onNode.getAccountNextNonce(senderId, { strategy }).catch((error) => {
|
|
117
|
+
if (!isAccountNotFoundError(error)) throw error;
|
|
118
|
+
return { nextNonce: 1 };
|
|
119
|
+
})
|
|
120
|
+
).nextNonce;
|
|
121
|
+
|
|
122
|
+
params.ttl ??= TX_TTL;
|
|
123
|
+
if (params.ttl !== 0) {
|
|
124
|
+
if (params.ttl < 0) throw new ArgumentError('ttl', 'greater or equal to 0', params.ttl);
|
|
125
|
+
params.ttl += absoluteTtl === true ? 0 : (await onNode.getCurrentKeyBlock()).height;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return syncBuildTx({ ...params, tag: txType } as any, { denomination });
|
|
196
129
|
}
|
package/src/tx/validator.ts
CHANGED
|
@@ -1,18 +1,11 @@
|
|
|
1
1
|
import BigNumber from 'bignumber.js';
|
|
2
2
|
import { hash, verify } from '../utils/crypto';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
TxTypeSchemas,
|
|
10
|
-
} from './builder/schema';
|
|
11
|
-
import { Tag } from './builder/constants';
|
|
12
|
-
import { TxUnpacked, unpackTx } from './builder';
|
|
13
|
-
import { UnsupportedProtocolError } from '../utils/errors';
|
|
14
|
-
import { concatBuffers, isAccountNotFoundError, isKeyOfObject } from '../utils/other';
|
|
15
|
-
import { encode, Encoded, Encoding } from '../utils/encoder';
|
|
3
|
+
import { RawTxObject, TxParamsCommon, TxSchema } from './builder/schema';
|
|
4
|
+
import { ProtocolToVmAbi } from './builder/field-types/ct-version';
|
|
5
|
+
import { Tag, ConsensusProtocolVersion } from './builder/constants';
|
|
6
|
+
import { buildTx, unpackTx } from './builder';
|
|
7
|
+
import { concatBuffers, isAccountNotFoundError } from '../utils/other';
|
|
8
|
+
import { Encoded, decode } from '../utils/encoder';
|
|
16
9
|
import Node, { TransformNodeType } from '../Node';
|
|
17
10
|
import { Account } from '../apis/node';
|
|
18
11
|
import { genAggressiveCacheGetResponsesPolicy } from '../utils/autorest';
|
|
@@ -23,31 +16,18 @@ export interface ValidatorResult {
|
|
|
23
16
|
checkedKeys: string[];
|
|
24
17
|
}
|
|
25
18
|
|
|
19
|
+
type UnpackedTx = ReturnType<typeof unpackTx>['tx'];
|
|
20
|
+
|
|
26
21
|
type Validator = (
|
|
27
|
-
tx:
|
|
28
|
-
encodedTx: TxUnpacked<TxSchema>;
|
|
29
|
-
signatures: Buffer[];
|
|
30
|
-
tx: TxUnpacked<TxSchema> & {
|
|
31
|
-
tx: TxTypeSchemas[Tag.SignedTx];
|
|
32
|
-
};
|
|
33
|
-
nonce?: number;
|
|
34
|
-
ttl?: number;
|
|
35
|
-
amount?: number;
|
|
36
|
-
fee?: number;
|
|
37
|
-
nameFee?: number;
|
|
38
|
-
ctVersion?: Partial<CtVersion>;
|
|
39
|
-
abiVersion?: number;
|
|
40
|
-
contractId?: Encoded.ContractAddress;
|
|
41
|
-
},
|
|
22
|
+
tx: UnpackedTx,
|
|
42
23
|
options: {
|
|
43
24
|
// TODO: remove after fixing node types
|
|
44
25
|
account?: TransformNodeType<Account> & { id: Encoded.AccountAddress };
|
|
45
26
|
nodeNetworkId: string;
|
|
46
27
|
parentTxTypes: Tag[];
|
|
47
28
|
node: Node;
|
|
48
|
-
txType: Tag;
|
|
49
29
|
height: number;
|
|
50
|
-
consensusProtocolVersion:
|
|
30
|
+
consensusProtocolVersion: ConsensusProtocolVersion;
|
|
51
31
|
}
|
|
52
32
|
) => ValidatorResult[] | Promise<ValidatorResult[]>;
|
|
53
33
|
|
|
@@ -63,34 +43,13 @@ const getSenderAddress = (
|
|
|
63
43
|
.filter((a) => a)
|
|
64
44
|
.map((a) => a?.toString().replace(/^ok_/, 'ak_'))[0] as Encoded.AccountAddress | undefined;
|
|
65
45
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
* @category transaction builder
|
|
71
|
-
* @param transaction - Base64Check-encoded transaction
|
|
72
|
-
* @param nodeNotCached - Node to validate transaction against
|
|
73
|
-
* @param parentTxTypes - Types of parent transactions
|
|
74
|
-
* @returns Array with verification errors
|
|
75
|
-
* @example const errors = await verifyTransaction(transaction, node)
|
|
76
|
-
*/
|
|
77
|
-
export default async function verifyTransaction(
|
|
78
|
-
transaction: Encoded.Transaction | Encoded.Poi,
|
|
79
|
-
nodeNotCached: Node,
|
|
80
|
-
parentTxTypes: Tag[] = [],
|
|
46
|
+
async function verifyTransactionInternal(
|
|
47
|
+
tx: UnpackedTx,
|
|
48
|
+
node: Node,
|
|
49
|
+
parentTxTypes: Tag[],
|
|
81
50
|
): Promise<ValidatorResult[]> {
|
|
82
|
-
let node = nodeNotCached;
|
|
83
|
-
if (
|
|
84
|
-
!node.pipeline.getOrderedPolicies()
|
|
85
|
-
.some(({ name }) => name === 'aggressive-cache-get-responses')
|
|
86
|
-
) {
|
|
87
|
-
node = new Node(nodeNotCached.$host, { ignoreVersion: true });
|
|
88
|
-
node.pipeline.addPolicy(genAggressiveCacheGetResponsesPolicy());
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
const { tx, txType } = unpackTx<Tag.SignedTx>(transaction);
|
|
92
51
|
const address = getSenderAddress(tx)
|
|
93
|
-
?? (
|
|
52
|
+
?? (tx.tag === Tag.SignedTx ? getSenderAddress(tx.encodedTx) : undefined);
|
|
94
53
|
const [account, { height }, { consensusProtocolVersion, nodeNetworkId }] = await Promise.all([
|
|
95
54
|
address == null
|
|
96
55
|
? undefined
|
|
@@ -107,25 +66,45 @@ export default async function verifyTransaction(
|
|
|
107
66
|
|
|
108
67
|
return (await Promise.all(
|
|
109
68
|
validators.map((v) => v(
|
|
110
|
-
tx
|
|
69
|
+
tx,
|
|
111
70
|
{
|
|
112
|
-
|
|
71
|
+
node, account, height, consensusProtocolVersion, nodeNetworkId, parentTxTypes,
|
|
113
72
|
},
|
|
114
73
|
)),
|
|
115
74
|
)).flat();
|
|
116
75
|
}
|
|
117
76
|
|
|
77
|
+
/**
|
|
78
|
+
* Transaction Validator
|
|
79
|
+
* This function validates some transaction properties,
|
|
80
|
+
* to make sure it can be posted it to the chain
|
|
81
|
+
* @category transaction builder
|
|
82
|
+
* @param transaction - Base64Check-encoded transaction
|
|
83
|
+
* @param nodeNotCached - Node to validate transaction against
|
|
84
|
+
* @returns Array with verification errors
|
|
85
|
+
* @example const errors = await verifyTransaction(transaction, node)
|
|
86
|
+
*/
|
|
87
|
+
export default async function verifyTransaction(
|
|
88
|
+
transaction: Parameters<typeof unpackTx>[0],
|
|
89
|
+
nodeNotCached: Node,
|
|
90
|
+
): Promise<ValidatorResult[]> {
|
|
91
|
+
const node = new Node(nodeNotCached.$host, { ignoreVersion: true });
|
|
92
|
+
node.pipeline.addPolicy(genAggressiveCacheGetResponsesPolicy());
|
|
93
|
+
return verifyTransactionInternal(unpackTx(transaction), node, []);
|
|
94
|
+
}
|
|
95
|
+
|
|
118
96
|
validators.push(
|
|
119
97
|
({ encodedTx, signatures }, { account, nodeNetworkId, parentTxTypes }) => {
|
|
120
|
-
if ((encodedTx ?? signatures)
|
|
98
|
+
if ((encodedTx ?? signatures) == null) return [];
|
|
121
99
|
if (account == null) return [];
|
|
122
|
-
if (signatures.length !== 1) return []; // TODO: Support multisignature
|
|
100
|
+
if (signatures.length !== 1) return []; // TODO: Support multisignature like in state channels
|
|
123
101
|
const prefix = Buffer.from([
|
|
124
102
|
nodeNetworkId,
|
|
125
103
|
...parentTxTypes.includes(Tag.PayingForTx) ? ['inner_tx'] : [],
|
|
126
104
|
].join('-'));
|
|
127
|
-
const
|
|
128
|
-
const
|
|
105
|
+
const txBinary = decode(buildTx(encodedTx));
|
|
106
|
+
const txWithNetworkId = concatBuffers([prefix, txBinary]);
|
|
107
|
+
const txHashWithNetworkId = concatBuffers([prefix, hash(txBinary)]);
|
|
129
108
|
if (verify(txWithNetworkId, signatures[0], account.id)
|
|
130
109
|
|| verify(txHashWithNetworkId, signatures[0], account.id)) return [];
|
|
131
110
|
return [{
|
|
@@ -135,16 +114,12 @@ validators.push(
|
|
|
135
114
|
checkedKeys: ['encodedTx', 'signatures'],
|
|
136
115
|
}];
|
|
137
116
|
},
|
|
138
|
-
async ({ encodedTx, tx }, { node, parentTxTypes
|
|
139
|
-
if ((encodedTx ?? tx)
|
|
140
|
-
return
|
|
141
|
-
encode((encodedTx ?? tx).rlpEncoded, Encoding.Transaction),
|
|
142
|
-
node,
|
|
143
|
-
[...parentTxTypes, txType],
|
|
144
|
-
);
|
|
117
|
+
async ({ encodedTx, tx, tag }, { node, parentTxTypes }) => {
|
|
118
|
+
if ((encodedTx ?? tx) == null) return [];
|
|
119
|
+
return verifyTransactionInternal(encodedTx ?? tx, node, [...parentTxTypes, tag]);
|
|
145
120
|
},
|
|
146
121
|
({ ttl }, { height }) => {
|
|
147
|
-
if (ttl
|
|
122
|
+
if (ttl == null) return [];
|
|
148
123
|
ttl = +ttl;
|
|
149
124
|
if (ttl === 0 || ttl >= height) return [];
|
|
150
125
|
return [{
|
|
@@ -154,13 +129,13 @@ validators.push(
|
|
|
154
129
|
}];
|
|
155
130
|
},
|
|
156
131
|
({
|
|
157
|
-
amount, fee, nameFee, tx,
|
|
158
|
-
}, { account, parentTxTypes
|
|
132
|
+
amount, fee, nameFee, tx, tag,
|
|
133
|
+
}, { account, parentTxTypes }) => {
|
|
159
134
|
if (account == null) return [];
|
|
160
|
-
if ((amount ?? fee ?? nameFee)
|
|
135
|
+
if ((amount ?? fee ?? nameFee) == null) return [];
|
|
161
136
|
fee ??= 0;
|
|
162
137
|
const cost = new BigNumber(fee).plus(nameFee ?? 0).plus(amount ?? 0)
|
|
163
|
-
.plus(
|
|
138
|
+
.plus(tag === Tag.PayingForTx ? tx.encodedTx.fee : 0)
|
|
164
139
|
.minus(parentTxTypes.includes(Tag.PayingForTx) ? fee : 0);
|
|
165
140
|
if (cost.lte(account.balance.toString())) return [];
|
|
166
141
|
return [{
|
|
@@ -169,13 +144,13 @@ validators.push(
|
|
|
169
144
|
checkedKeys: ['amount', 'fee', 'nameFee'],
|
|
170
145
|
}];
|
|
171
146
|
},
|
|
172
|
-
({ signatures }, { account
|
|
147
|
+
({ signatures, tag }, { account }) => {
|
|
173
148
|
if (account == null) return [];
|
|
174
149
|
let message;
|
|
175
|
-
if (
|
|
150
|
+
if (tag === Tag.SignedTx && account.kind === 'generalized' && signatures.length !== 0) {
|
|
176
151
|
message = 'Generalized account can\'t be used to generate SignedTx with signatures';
|
|
177
152
|
}
|
|
178
|
-
if (
|
|
153
|
+
if (tag === Tag.GaMetaTx && account.kind === 'basic') {
|
|
179
154
|
message = 'Basic account can\'t be used to generate GaMetaTx';
|
|
180
155
|
}
|
|
181
156
|
if (message == null) return [];
|
|
@@ -199,34 +174,36 @@ validators.push(
|
|
|
199
174
|
checkedKeys: ['nonce'],
|
|
200
175
|
}];
|
|
201
176
|
},
|
|
202
|
-
({ ctVersion, abiVersion }, {
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
const
|
|
177
|
+
({ ctVersion, abiVersion, tag }, { consensusProtocolVersion }) => {
|
|
178
|
+
const oracleCall = Tag.Oracle === tag || Tag.OracleRegisterTx === tag;
|
|
179
|
+
const contractCreate = Tag.ContractCreateTx === tag || Tag.GaAttachTx === tag;
|
|
180
|
+
const contractCall = Tag.ContractCallTx === tag || Tag.GaMetaTx === tag;
|
|
181
|
+
const type = (oracleCall ? 'oracle-call' : null)
|
|
182
|
+
?? (contractCreate ? 'contract-create' : null)
|
|
183
|
+
?? (contractCall ? 'contract-call' : null);
|
|
184
|
+
if (type == null) return [];
|
|
185
|
+
// TODO: remove assertion after fixing buildTx types
|
|
186
|
+
const protocol = ProtocolToVmAbi[consensusProtocolVersion][type] as unknown as {
|
|
187
|
+
abiVersion: any[];
|
|
188
|
+
vmVersion: any[];
|
|
189
|
+
};
|
|
207
190
|
|
|
208
191
|
// If not contract create tx
|
|
209
192
|
if (ctVersion == null) ctVersion = { abiVersion };
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
key,
|
|
215
|
-
value,
|
|
216
|
-
]: [
|
|
217
|
-
key:keyof typeof txProtocol,
|
|
218
|
-
value:any]) => !(txProtocol[key].includes(+value as never)),
|
|
219
|
-
)) {
|
|
193
|
+
if (
|
|
194
|
+
!protocol.abiVersion.includes(ctVersion.abiVersion)
|
|
195
|
+
|| (contractCreate && !protocol.vmVersion.includes(ctVersion.vmVersion))
|
|
196
|
+
) {
|
|
220
197
|
return [{
|
|
221
|
-
message: `ABI/VM version ${JSON.stringify(ctVersion)} is wrong, supported is: ${JSON.stringify(
|
|
198
|
+
message: `ABI/VM version ${JSON.stringify(ctVersion)} is wrong, supported is: ${JSON.stringify(protocol)}`,
|
|
222
199
|
key: 'VmAndAbiVersionMismatch',
|
|
223
200
|
checkedKeys: ['ctVersion', 'abiVersion'],
|
|
224
201
|
}];
|
|
225
202
|
}
|
|
226
203
|
return [];
|
|
227
204
|
},
|
|
228
|
-
async ({ contractId }, {
|
|
229
|
-
if (Tag.ContractCallTx !==
|
|
205
|
+
async ({ contractId, tag }, { node }) => {
|
|
206
|
+
if (Tag.ContractCallTx !== tag) return [];
|
|
230
207
|
contractId = contractId as Encoded.ContractAddress;
|
|
231
208
|
try {
|
|
232
209
|
const { active } = await node.getContract(contractId);
|
package/src/utils/bytes.ts
CHANGED
|
@@ -29,7 +29,7 @@ export function toBytes(val?: null | string | number | BigNumber, big = false):
|
|
|
29
29
|
// If the value is an int it will be encoded as bytes big endian
|
|
30
30
|
// Raises ValueError if the input is not an int or string
|
|
31
31
|
|
|
32
|
-
if (val
|
|
32
|
+
if (val == null) return Buffer.from([]);
|
|
33
33
|
if (Number.isInteger(val) || BigNumber.isBigNumber(val) || big) {
|
|
34
34
|
if (!BigNumber.isBigNumber(val)) val = new BigNumber(val);
|
|
35
35
|
if (!val.isInteger()) throw new TypeError(`Unexpected not integer value: ${val.toFixed()}`);
|
package/src/utils/errors.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// eslint-disable-next-line max-classes-per-file
|
|
2
2
|
import BigNumber from 'bignumber.js';
|
|
3
|
+
import { Int } from '../tx/builder/constants';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* aepp-sdk originated error
|
|
@@ -116,8 +117,8 @@ export class WalletError extends BaseError {
|
|
|
116
117
|
* @category exception
|
|
117
118
|
*/
|
|
118
119
|
export class ArgumentError extends BaseError {
|
|
119
|
-
constructor(argumentName: string, requirement:
|
|
120
|
-
super(`${argumentName} should be ${requirement}, got ${
|
|
120
|
+
constructor(argumentName: string, requirement: unknown, argumentValue: unknown) {
|
|
121
|
+
super(`${argumentName} should be ${requirement}, got ${argumentValue} instead`);
|
|
121
122
|
this.name = 'ArgumentError';
|
|
122
123
|
}
|
|
123
124
|
}
|
|
@@ -528,7 +529,7 @@ export class NoSuchContractFunctionError extends ContractError {
|
|
|
528
529
|
* @category exception
|
|
529
530
|
*/
|
|
530
531
|
export class NotPayableFunctionError extends ContractError {
|
|
531
|
-
constructor(amount:
|
|
532
|
+
constructor(amount: Int, fn: string) {
|
|
532
533
|
super(
|
|
533
534
|
`You try to pay "${amount}" to function "${fn}" which is not payable. `
|
|
534
535
|
+ 'Only payable function can accept coins',
|
|
@@ -744,16 +745,6 @@ export class TxNotInChainError extends TransactionError {
|
|
|
744
745
|
}
|
|
745
746
|
}
|
|
746
747
|
|
|
747
|
-
/**
|
|
748
|
-
* @category exception
|
|
749
|
-
*/
|
|
750
|
-
export class UnknownTxError extends TransactionError {
|
|
751
|
-
constructor(message: string) {
|
|
752
|
-
super(message);
|
|
753
|
-
this.name = 'UnknownTxError';
|
|
754
|
-
}
|
|
755
|
-
}
|
|
756
|
-
|
|
757
748
|
/**
|
|
758
749
|
* @category exception
|
|
759
750
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import Node from './Node';
|
|
2
2
|
import AccountBase from './account/Base';
|
|
3
3
|
import { Encoded } from './utils/encoder';
|
|
4
|
-
import
|
|
4
|
+
import CompilerBase from './contract/compiler/Base';
|
|
5
5
|
import AeSdkMethods, { OnAccount } from './AeSdkMethods';
|
|
6
6
|
type NodeInfo = Awaited<ReturnType<Node['getNodeInfo']>> & {
|
|
7
7
|
name: string;
|
|
@@ -25,7 +25,7 @@ export default class AeSdkBase extends AeSdkMethods {
|
|
|
25
25
|
instance: Node;
|
|
26
26
|
}>;
|
|
27
27
|
});
|
|
28
|
-
get compilerApi():
|
|
28
|
+
get compilerApi(): CompilerBase;
|
|
29
29
|
get api(): Node;
|
|
30
30
|
/**
|
|
31
31
|
* Add Node
|
|
@@ -85,7 +85,7 @@ export default class AeSdkBase extends AeSdkMethods {
|
|
|
85
85
|
_getOptions(): {
|
|
86
86
|
onNode: Node;
|
|
87
87
|
onAccount: AccountBase;
|
|
88
|
-
onCompiler:
|
|
88
|
+
onCompiler: CompilerBase;
|
|
89
89
|
};
|
|
90
90
|
}
|
|
91
91
|
export {};
|
|
@@ -10,7 +10,7 @@ import Node from './Node';
|
|
|
10
10
|
import { Tag } from './tx/builder/constants';
|
|
11
11
|
import AccountBase from './account/Base';
|
|
12
12
|
import { Encoded } from './utils/encoder';
|
|
13
|
-
import
|
|
13
|
+
import CompilerBase from './contract/compiler/Base';
|
|
14
14
|
export type OnAccount = Encoded.AccountAddress | AccountBase | undefined;
|
|
15
15
|
export declare function getValueOrErrorProxy<Value extends object>(valueCb: () => Value): Value;
|
|
16
16
|
declare const methods: {
|
|
@@ -105,9 +105,8 @@ declare class AeSdkMethods {
|
|
|
105
105
|
buildTx<TxType extends Tag>(txType: TxType, options: Omit<Parameters<any>[1], 'onNode'> & {
|
|
106
106
|
onNode?: Node;
|
|
107
107
|
}): Promise<Encoded.Transaction>;
|
|
108
|
-
initializeContract<Methods extends ContractMethodsBase>(options?: Omit<Parameters<typeof Contract.initialize>[0], 'onNode'
|
|
108
|
+
initializeContract<Methods extends ContractMethodsBase>(options?: Omit<Parameters<typeof Contract.initialize>[0], 'onNode'> & {
|
|
109
109
|
onNode?: Node;
|
|
110
|
-
onCompiler?: CompilerHttp;
|
|
111
110
|
}): Promise<Contract<Methods>>;
|
|
112
111
|
}
|
|
113
112
|
type RequiredKeys<T> = {
|
|
@@ -120,7 +119,7 @@ type OptionalIfNotRequired<T extends [
|
|
|
120
119
|
type MakeOptional<Options> = OptionalIfNotRequired<[
|
|
121
120
|
Omit<Options, 'onNode' | 'onCompiler' | 'onAccount'> & {
|
|
122
121
|
onNode?: Node;
|
|
123
|
-
onCompiler?:
|
|
122
|
+
onCompiler?: CompilerBase;
|
|
124
123
|
onAccount?: OnAccount;
|
|
125
124
|
}
|
|
126
125
|
]>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Node as NodeApi, NodeOptionalParams } from './apis/node';
|
|
2
2
|
import { Encoded } from './utils/encoder';
|
|
3
|
+
import { ConsensusProtocolVersion } from './tx/builder/constants';
|
|
3
4
|
declare const bigIntPropertyNames: readonly [
|
|
4
5
|
"balance",
|
|
5
6
|
"queryFee",
|
|
@@ -24,7 +25,6 @@ declare const numberPropertyNames: readonly [
|
|
|
24
25
|
"nextNonce",
|
|
25
26
|
"height",
|
|
26
27
|
"blockHeight",
|
|
27
|
-
"top",
|
|
28
28
|
"topBlockHeight",
|
|
29
29
|
"ttl",
|
|
30
30
|
"nameTtl",
|
|
@@ -50,7 +50,7 @@ export type TransformNodeType<Type> = Type extends (...args: infer Args) => infe
|
|
|
50
50
|
] : Type extends Array<infer Item> ? Array<TransformNodeType<Item>> : Type extends Promise<infer T> ? Promise<TransformNodeType<T>> : Type extends {
|
|
51
51
|
[P in any]: any;
|
|
52
52
|
} ? {
|
|
53
|
-
[Property in keyof Type]: Property extends BigIntPropertyNames ? PreserveOptional<bigint, Type[Property]> : Property extends NumberPropertyNames ? PreserveOptional<number, Type[Property]> : Property extends 'txHash' ? PreserveOptional<Encoded.TxHash, Type[Property]> : TransformNodeType<Type[Property]>;
|
|
53
|
+
[Property in keyof Type]: Property extends BigIntPropertyNames ? PreserveOptional<bigint, Type[Property]> : Property extends NumberPropertyNames ? PreserveOptional<number, Type[Property]> : Property extends 'txHash' ? PreserveOptional<Encoded.TxHash, Type[Property]> : Property extends 'bytecode' ? PreserveOptional<Encoded.ContractBytearray, Type[Property]> : TransformNodeType<Type[Property]>;
|
|
54
54
|
} : Type;
|
|
55
55
|
type NodeTransformedApi = new (...args: ConstructorParameters<typeof NodeApi>) => {
|
|
56
56
|
[Name in keyof InstanceType<typeof NodeApi>]: Name extends 'pipeline' | 'sendRequest' | 'sendOperationRequest' ? NodeApi[Name] : TransformNodeType<NodeApi[Name]>;
|
|
@@ -59,7 +59,7 @@ export interface NodeInfo {
|
|
|
59
59
|
url: string;
|
|
60
60
|
nodeNetworkId: string;
|
|
61
61
|
version: string;
|
|
62
|
-
consensusProtocolVersion:
|
|
62
|
+
consensusProtocolVersion: ConsensusProtocolVersion;
|
|
63
63
|
}
|
|
64
64
|
declare const Node_base: NodeTransformedApi;
|
|
65
65
|
export default class Node extends Node_base {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Encoded } from '../utils/encoder';
|
|
2
2
|
import Node from '../Node';
|
|
3
|
-
import
|
|
3
|
+
import CompilerBase from '../contract/compiler/Base';
|
|
4
4
|
/**
|
|
5
5
|
* Account is one of the three basic building blocks of an
|
|
6
6
|
* {@link AeSdk} and provides access to a signing key pair.
|
|
@@ -24,7 +24,7 @@ export default abstract class AccountBase {
|
|
|
24
24
|
args?: any[];
|
|
25
25
|
};
|
|
26
26
|
onNode?: Node;
|
|
27
|
-
onCompiler?:
|
|
27
|
+
onCompiler?: CompilerBase;
|
|
28
28
|
aeppOrigin?: string;
|
|
29
29
|
aeppRpcClientId?: string;
|
|
30
30
|
}): Promise<Encoded.Transaction>;
|
|
@@ -196,7 +196,7 @@ export declare function aensPreclaim(name: AensName, options: AensPreclaimOption
|
|
|
196
196
|
commitmentId: string;
|
|
197
197
|
claim: (opts?: Parameters<typeof aensClaim>[2]) => ReturnType<typeof aensClaim>;
|
|
198
198
|
}>>;
|
|
199
|
-
interface AensPreclaimOptions extends BuildTxOptions<Tag.NamePreclaimTx, 'accountId' | 'commitmentId'>, SendOptions, AensClaimOptions {
|
|
199
|
+
interface AensPreclaimOptions extends BuildTxOptions<Tag.NamePreclaimTx, 'accountId' | 'commitmentId'>, SendOptions, Omit<AensClaimOptions, 'version'> {
|
|
200
200
|
}
|
|
201
201
|
/**
|
|
202
202
|
* Bid to name auction
|
|
@@ -179,6 +179,14 @@ export declare function getKeyBlock(hashOrHeight: Encoded.KeyBlockHash | number,
|
|
|
179
179
|
export declare function getMicroBlockHeader(hash: Encoded.MicroBlockHash, { onNode }: {
|
|
180
180
|
onNode: Node;
|
|
181
181
|
}): Promise<TransformNodeType<MicroBlockHeader>>;
|
|
182
|
+
interface TxDryRunArguments {
|
|
183
|
+
tx: Encoded.Transaction;
|
|
184
|
+
accountAddress: Encoded.AccountAddress;
|
|
185
|
+
top?: number | Encoded.KeyBlockHash | Encoded.MicroBlockHash;
|
|
186
|
+
txEvents?: any;
|
|
187
|
+
resolve: Function;
|
|
188
|
+
reject: Function;
|
|
189
|
+
}
|
|
182
190
|
/**
|
|
183
191
|
* Transaction dry-run
|
|
184
192
|
* @category chain
|
|
@@ -191,7 +199,7 @@ export declare function getMicroBlockHeader(hash: Encoded.MicroBlockHash, { onNo
|
|
|
191
199
|
* @param options.onNode - Node to use
|
|
192
200
|
*/
|
|
193
201
|
export declare function txDryRun(tx: Encoded.Transaction, accountAddress: Encoded.AccountAddress, { top, txEvents, combine, onNode, }: {
|
|
194
|
-
top?:
|
|
202
|
+
top?: TxDryRunArguments['top'];
|
|
195
203
|
txEvents?: boolean;
|
|
196
204
|
combine?: boolean;
|
|
197
205
|
onNode: Node;
|
|
@@ -128,7 +128,12 @@ export default class Channel {
|
|
|
128
128
|
/**
|
|
129
129
|
* Get current state
|
|
130
130
|
*/
|
|
131
|
-
state(): Promise<
|
|
131
|
+
state(): Promise<{
|
|
132
|
+
calls: Encoded.CallStateTree;
|
|
133
|
+
halfSignedTx: Encoded.Transaction | '';
|
|
134
|
+
signedTx: Encoded.Transaction;
|
|
135
|
+
trees: Encoded.StateTrees;
|
|
136
|
+
}>;
|
|
132
137
|
/**
|
|
133
138
|
* Get current round
|
|
134
139
|
*
|