@aeternity/aepp-sdk 11.0.0 → 11.0.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/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 +1 -1
- package/dist/aepp-sdk.js.map +1 -1
- package/es/ae/contract.mjs +1 -1
- package/es/ae/contract.mjs.map +1 -1
- package/es/channel/index.mjs +1 -1
- package/es/channel/index.mjs.map +1 -1
- package/es/channel/internal.mjs +3 -4
- package/es/channel/internal.mjs.map +1 -1
- package/es/contract/aci.mjs +1 -1
- package/es/contract/aci.mjs.map +1 -1
- package/es/encoder.d.ts +26 -0
- package/es/tx/builder/constants.mjs +108 -0
- package/es/tx/builder/constants.mjs.map +1 -0
- package/es/tx/builder/helpers.mjs +10 -52
- package/es/tx/builder/helpers.mjs.map +1 -1
- package/es/tx/builder/schema.mjs +4 -107
- package/es/tx/builder/schema.mjs.map +1 -1
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +1 -1
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +1 -1
- package/es/utils/crypto.mjs +2 -12
- package/es/utils/crypto.mjs.map +1 -1
- package/es/utils/encoder.mjs +106 -0
- package/es/utils/encoder.mjs.map +1 -0
- package/package.json +4 -2
- package/src/ae/contract.js +1 -1
- package/src/channel/index.js +6 -1
- package/src/channel/internal.js +5 -6
- package/src/contract/aci.js +1 -1
- package/src/tx/builder/constants.js +100 -0
- package/src/tx/builder/helpers.js +7 -53
- package/src/tx/builder/schema.js +1 -98
- package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +1 -1
- package/src/utils/crypto.js +2 -12
- package/src/utils/encoder.ts +101 -0
package/es/encoder.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/**
|
|
3
|
+
* Calculate SHA256 hash of `input`
|
|
4
|
+
* @rtype (input: String) => hash: String
|
|
5
|
+
* @param {Buffer|String} input - Data to hash
|
|
6
|
+
* @return {String} Hash
|
|
7
|
+
*/
|
|
8
|
+
export declare function sha256hash(input: Buffer | string): Buffer;
|
|
9
|
+
/**
|
|
10
|
+
* Decode data using the default encoding/decoding algorithm
|
|
11
|
+
* @function
|
|
12
|
+
* @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
|
|
13
|
+
* @param {string} data An Base58/64check encoded and prefixed string (ex tx_..., sg_..., ak_....)
|
|
14
|
+
* @param {string} [requiredPrefix] Ensure that data have this prefix
|
|
15
|
+
* @return {Buffer} Decoded data
|
|
16
|
+
*/
|
|
17
|
+
export declare function decode(data: string, requiredPrefix?: string): Buffer;
|
|
18
|
+
/**
|
|
19
|
+
* Encode data using the default encoding/decoding algorithm
|
|
20
|
+
* @function
|
|
21
|
+
* @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
|
|
22
|
+
* @param {Buffer|String} data An decoded data
|
|
23
|
+
* @param {string} type Prefix of Transaction
|
|
24
|
+
* @return {String} Encoded string Base58check or Base64check data
|
|
25
|
+
*/
|
|
26
|
+
export declare function encode(data: Buffer | string, type: string): string;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import BigNumber from 'bignumber.js';
|
|
2
|
+
import { mapObject } from "../../utils/other.mjs"; // # AENS
|
|
3
|
+
|
|
4
|
+
export const NAME_TTL = 180000; // # max number of block into the future that the name is going to be available
|
|
5
|
+
// # https://github.com/aeternity/protocol/blob/epoch-v0.22.0/AENS.md#update
|
|
6
|
+
// # https://github.com/aeternity/protocol/blob/44a93d3aab957ca820183c3520b9daf6b0fedff4/AENS.md#aens-entry
|
|
7
|
+
|
|
8
|
+
export const NAME_MAX_TTL = 36000;
|
|
9
|
+
export const NAME_MAX_CLIENT_TTL = 84600;
|
|
10
|
+
export const CLIENT_TTL = NAME_MAX_CLIENT_TTL; // # see https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L67
|
|
11
|
+
|
|
12
|
+
export const NAME_FEE_MULTIPLIER = 1e14; // 100000000000000
|
|
13
|
+
|
|
14
|
+
export const NAME_FEE_BID_INCREMENT = 0.05; // # the increment is in percentage
|
|
15
|
+
// # see https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L272
|
|
16
|
+
|
|
17
|
+
export const NAME_BID_TIMEOUT_BLOCKS = 480; // # ~1 day
|
|
18
|
+
// # this is the max length for a domain that requires a base fee to be paid
|
|
19
|
+
|
|
20
|
+
export const NAME_MAX_LENGTH_FEE = 31;
|
|
21
|
+
export const NAME_BID_MAX_LENGTH = 12; // # this is the max length for a domain to be part of a bid
|
|
22
|
+
|
|
23
|
+
export const POINTER_KEY_BY_PREFIX = {
|
|
24
|
+
ak: 'account_pubkey',
|
|
25
|
+
ok: 'oracle_pubkey',
|
|
26
|
+
ct: 'contract_pubkey',
|
|
27
|
+
ch: 'channel'
|
|
28
|
+
}; // # https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L290
|
|
29
|
+
// # https://github.com/aeternity/protocol/blob/master/AENS.md#protocol-fees-and-protection-times
|
|
30
|
+
// # bid ranges:
|
|
31
|
+
|
|
32
|
+
export const NAME_BID_RANGES = mapObject({
|
|
33
|
+
31: 3,
|
|
34
|
+
30: 5,
|
|
35
|
+
29: 8,
|
|
36
|
+
28: 13,
|
|
37
|
+
27: 21,
|
|
38
|
+
26: 34,
|
|
39
|
+
25: 55,
|
|
40
|
+
24: 89,
|
|
41
|
+
23: 144,
|
|
42
|
+
22: 233,
|
|
43
|
+
21: 377,
|
|
44
|
+
20: 610,
|
|
45
|
+
19: 987,
|
|
46
|
+
18: 1597,
|
|
47
|
+
17: 2584,
|
|
48
|
+
16: 4181,
|
|
49
|
+
15: 6765,
|
|
50
|
+
14: 10946,
|
|
51
|
+
13: 17711,
|
|
52
|
+
12: 28657,
|
|
53
|
+
11: 46368,
|
|
54
|
+
10: 75025,
|
|
55
|
+
9: 121393,
|
|
56
|
+
8: 196418,
|
|
57
|
+
7: 317811,
|
|
58
|
+
6: 514229,
|
|
59
|
+
5: 832040,
|
|
60
|
+
4: 1346269,
|
|
61
|
+
3: 2178309,
|
|
62
|
+
2: 3524578,
|
|
63
|
+
1: 5702887
|
|
64
|
+
}, _ref => {
|
|
65
|
+
let [key, value] = _ref;
|
|
66
|
+
return [key, new BigNumber(value).times(NAME_FEE_MULTIPLIER)];
|
|
67
|
+
}); // # ref: https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L273
|
|
68
|
+
// # name bid timeouts
|
|
69
|
+
|
|
70
|
+
export const NAME_BID_TIMEOUTS = {
|
|
71
|
+
13: BigNumber(0),
|
|
72
|
+
12: BigNumber(NAME_BID_TIMEOUT_BLOCKS),
|
|
73
|
+
// # 480 blocks
|
|
74
|
+
8: BigNumber(31).times(NAME_BID_TIMEOUT_BLOCKS),
|
|
75
|
+
// # 14880 blocks
|
|
76
|
+
4: BigNumber(62).times(NAME_BID_TIMEOUT_BLOCKS) // # 29760 blocks
|
|
77
|
+
|
|
78
|
+
}; // # Tag constant for ids (type uint8)
|
|
79
|
+
// # see https://github.com/aeternity/protocol/blob/master/serializations.md#the-id-type
|
|
80
|
+
// # <<Tag:1/unsigned-integer-unit:8, Hash:32/binary-unit:8>>
|
|
81
|
+
|
|
82
|
+
const ID_TAG_ACCOUNT = 1;
|
|
83
|
+
const ID_TAG_NAME = 2;
|
|
84
|
+
const ID_TAG_COMMITMENT = 3;
|
|
85
|
+
const ID_TAG_ORACLE = 4;
|
|
86
|
+
const ID_TAG_CONTRACT = 5;
|
|
87
|
+
const ID_TAG_CHANNEL = 6;
|
|
88
|
+
export const ID_TAG = {
|
|
89
|
+
account: ID_TAG_ACCOUNT,
|
|
90
|
+
name: ID_TAG_NAME,
|
|
91
|
+
commitment: ID_TAG_COMMITMENT,
|
|
92
|
+
oracle: ID_TAG_ORACLE,
|
|
93
|
+
contract: ID_TAG_CONTRACT,
|
|
94
|
+
channel: ID_TAG_CHANNEL
|
|
95
|
+
};
|
|
96
|
+
export const PREFIX_ID_TAG = {
|
|
97
|
+
ak: ID_TAG.account,
|
|
98
|
+
nm: ID_TAG.name,
|
|
99
|
+
cm: ID_TAG.commitment,
|
|
100
|
+
ok: ID_TAG.oracle,
|
|
101
|
+
ct: ID_TAG.contract,
|
|
102
|
+
ch: ID_TAG.channel
|
|
103
|
+
};
|
|
104
|
+
export const ID_TAG_PREFIX = mapObject(PREFIX_ID_TAG, _ref2 => {
|
|
105
|
+
let [key, value] = _ref2;
|
|
106
|
+
return [value, key];
|
|
107
|
+
});
|
|
108
|
+
//# sourceMappingURL=constants.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/tx/builder/constants.js"],"names":["BigNumber","mapObject","NAME_TTL","NAME_MAX_TTL","NAME_MAX_CLIENT_TTL","CLIENT_TTL","NAME_FEE_MULTIPLIER","NAME_FEE_BID_INCREMENT","NAME_BID_TIMEOUT_BLOCKS","NAME_MAX_LENGTH_FEE","NAME_BID_MAX_LENGTH","POINTER_KEY_BY_PREFIX","ak","ok","ct","ch","NAME_BID_RANGES","key","value","times","NAME_BID_TIMEOUTS","ID_TAG_ACCOUNT","ID_TAG_NAME","ID_TAG_COMMITMENT","ID_TAG_ORACLE","ID_TAG_CONTRACT","ID_TAG_CHANNEL","ID_TAG","account","name","commitment","oracle","contract","channel","PREFIX_ID_TAG","nm","cm","ID_TAG_PREFIX"],"mappings":"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","sourcesContent":["import BigNumber from 'bignumber.js'\nimport { mapObject } from '../../utils/other'\n\n// # AENS\nexport const NAME_TTL = 180000\n// # max number of block into the future that the name is going to be available\n// # https://github.com/aeternity/protocol/blob/epoch-v0.22.0/AENS.md#update\n// # https://github.com/aeternity/protocol/blob/44a93d3aab957ca820183c3520b9daf6b0fedff4/AENS.md#aens-entry\nexport const NAME_MAX_TTL = 36000\nexport const NAME_MAX_CLIENT_TTL = 84600\nexport const CLIENT_TTL = NAME_MAX_CLIENT_TTL\n// # see https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L67\nexport const NAME_FEE_MULTIPLIER = 1e14 // 100000000000000\nexport const NAME_FEE_BID_INCREMENT = 0.05 // # the increment is in percentage\n// # see https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L272\nexport const NAME_BID_TIMEOUT_BLOCKS = 480 // # ~1 day\n// # this is the max length for a domain that requires a base fee to be paid\nexport const NAME_MAX_LENGTH_FEE = 31\nexport const NAME_BID_MAX_LENGTH = 12 // # this is the max length for a domain to be part of a bid\nexport const POINTER_KEY_BY_PREFIX = {\n ak: 'account_pubkey',\n ok: 'oracle_pubkey',\n ct: 'contract_pubkey',\n ch: 'channel'\n}\n// # https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L290\n// # https://github.com/aeternity/protocol/blob/master/AENS.md#protocol-fees-and-protection-times\n// # bid ranges:\nexport const NAME_BID_RANGES = mapObject({\n 31: 3,\n 30: 5,\n 29: 8,\n 28: 13,\n 27: 21,\n 26: 34,\n 25: 55,\n 24: 89,\n 23: 144,\n 22: 233,\n 21: 377,\n 20: 610,\n 19: 987,\n 18: 1597,\n 17: 2584,\n 16: 4181,\n 15: 6765,\n 14: 10946,\n 13: 17711,\n 12: 28657,\n 11: 46368,\n 10: 75025,\n 9: 121393,\n 8: 196418,\n 7: 317811,\n 6: 514229,\n 5: 832040,\n 4: 1346269,\n 3: 2178309,\n 2: 3524578,\n 1: 5702887\n}, ([key, value]) => [key, new BigNumber(value).times(NAME_FEE_MULTIPLIER)])\n\n// # ref: https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L273\n// # name bid timeouts\nexport const NAME_BID_TIMEOUTS = {\n 13: BigNumber(0),\n 12: BigNumber(NAME_BID_TIMEOUT_BLOCKS), // # 480 blocks\n 8: BigNumber(31).times(NAME_BID_TIMEOUT_BLOCKS), // # 14880 blocks\n 4: BigNumber(62).times(NAME_BID_TIMEOUT_BLOCKS) // # 29760 blocks\n}\n\n// # Tag constant for ids (type uint8)\n// # see https://github.com/aeternity/protocol/blob/master/serializations.md#the-id-type\n// # <<Tag:1/unsigned-integer-unit:8, Hash:32/binary-unit:8>>\nconst ID_TAG_ACCOUNT = 1\nconst ID_TAG_NAME = 2\nconst ID_TAG_COMMITMENT = 3\nconst ID_TAG_ORACLE = 4\nconst ID_TAG_CONTRACT = 5\nconst ID_TAG_CHANNEL = 6\n\nexport const ID_TAG = {\n account: ID_TAG_ACCOUNT,\n name: ID_TAG_NAME,\n commitment: ID_TAG_COMMITMENT,\n oracle: ID_TAG_ORACLE,\n contract: ID_TAG_CONTRACT,\n channel: ID_TAG_CHANNEL\n}\n\nexport const PREFIX_ID_TAG = {\n ak: ID_TAG.account,\n nm: ID_TAG.name,\n cm: ID_TAG.commitment,\n ok: ID_TAG.oracle,\n ct: ID_TAG.contract,\n ch: ID_TAG.channel\n}\n\nexport const ID_TAG_PREFIX = mapObject(PREFIX_ID_TAG, ([key, value]) => [value, key])\n"],"file":"constants.mjs"}
|
|
@@ -3,12 +3,17 @@ const {
|
|
|
3
3
|
Buffer: _Buffer
|
|
4
4
|
} = _buffer;
|
|
5
5
|
import BigNumber from 'bignumber.js';
|
|
6
|
-
import
|
|
7
|
-
|
|
6
|
+
import _bs from 'bs58';
|
|
7
|
+
const {
|
|
8
|
+
encode: bs58Encode,
|
|
9
|
+
decode: bs58Decode
|
|
10
|
+
} = _bs;
|
|
11
|
+
import { hash, salt } from "../../utils/crypto.mjs";
|
|
12
|
+
import { encode, decode } from "../../utils/encoder.mjs";
|
|
8
13
|
import { toBytes } from "../../utils/bytes.mjs";
|
|
9
|
-
import { ID_TAG_PREFIX, PREFIX_ID_TAG, NAME_BID_RANGES, NAME_FEE_BID_INCREMENT, NAME_BID_TIMEOUTS, NAME_MAX_LENGTH_FEE, POINTER_KEY_BY_PREFIX } from "./
|
|
14
|
+
import { ID_TAG_PREFIX, PREFIX_ID_TAG, NAME_BID_RANGES, NAME_FEE_BID_INCREMENT, NAME_BID_TIMEOUTS, NAME_MAX_LENGTH_FEE, POINTER_KEY_BY_PREFIX } from "./constants.mjs";
|
|
10
15
|
import { ceil } from "../../utils/bignumber.mjs";
|
|
11
|
-
import {
|
|
16
|
+
import { TagNotFoundError, PrefixNotFoundError, InvalidNameError, IllegalBidFeeError, NoDefaultAensPointerError, ArgumentError } from "../../utils/errors.mjs";
|
|
12
17
|
/**
|
|
13
18
|
* JavaScript-based Transaction builder helper function's
|
|
14
19
|
* @module @aeternity/aepp-sdk/es/tx/builder/helpers
|
|
@@ -17,6 +22,7 @@ import { PrefixMismatchError, DecodeError, EncodeError, PayloadLengthError, TagN
|
|
|
17
22
|
*/
|
|
18
23
|
|
|
19
24
|
export const createSalt = salt;
|
|
25
|
+
export { encode, decode };
|
|
20
26
|
/**
|
|
21
27
|
* Build a contract public key
|
|
22
28
|
* @function
|
|
@@ -130,54 +136,6 @@ const base58 = {
|
|
|
130
136
|
encode: buffer => bs58.encode(addChecksum(buffer)),
|
|
131
137
|
decode: string => getPayload(bs58.decode(string))
|
|
132
138
|
};
|
|
133
|
-
/**
|
|
134
|
-
* Decode data using the default encoding/decoding algorithm
|
|
135
|
-
* @function
|
|
136
|
-
* @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
|
|
137
|
-
* @param {string} data An Base58/64check encoded and prefixed string (ex tx_..., sg_..., ak_....)
|
|
138
|
-
* @param {string} [requiredPrefix] Ensure that data have this prefix
|
|
139
|
-
* @return {Buffer} Decoded data
|
|
140
|
-
*/
|
|
141
|
-
|
|
142
|
-
export function decode(data, requiredPrefix) {
|
|
143
|
-
if (typeof data !== 'string') throw new DecodeError(`Encoded should be a string, got ${data} instead`);
|
|
144
|
-
const [prefix, encodedPayload, extra] = data.split('_');
|
|
145
|
-
if (!encodedPayload) throw new DecodeError(`Encoded string missing payload: ${data}`);
|
|
146
|
-
if (extra) throw new DecodeError(`Encoded string have extra parts: ${data}`);
|
|
147
|
-
|
|
148
|
-
if (requiredPrefix && requiredPrefix !== prefix) {
|
|
149
|
-
throw new PrefixMismatchError(prefix, requiredPrefix);
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
const decoder = base64Types.includes(prefix) && base64.decode || base58Types.includes(prefix) && base58.decode;
|
|
153
|
-
|
|
154
|
-
if (!decoder) {
|
|
155
|
-
throw new DecodeError(`Encoded string have unknown type: ${prefix}`);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
const payload = decoder(encodedPayload);
|
|
159
|
-
ensureValidLength(payload, prefix);
|
|
160
|
-
return payload;
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Encode data using the default encoding/decoding algorithm
|
|
164
|
-
* @function
|
|
165
|
-
* @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
|
|
166
|
-
* @param {Buffer|String} data An decoded data
|
|
167
|
-
* @param {string} type Prefix of Transaction
|
|
168
|
-
* @return {String} Encoded string Base58check or Base64check data
|
|
169
|
-
*/
|
|
170
|
-
|
|
171
|
-
export function encode(data, type) {
|
|
172
|
-
const encoder = base64Types.includes(type) && base64.encode || base58Types.includes(type) && base58.encode;
|
|
173
|
-
|
|
174
|
-
if (!encoder) {
|
|
175
|
-
throw new EncodeError(`Unknown type: ${type}`);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
ensureValidLength(data, type);
|
|
179
|
-
return `${type}_${encoder(data)}`;
|
|
180
|
-
}
|
|
181
139
|
/**
|
|
182
140
|
* Utility function to create and _id type
|
|
183
141
|
* @function
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tx/builder/helpers.js"],"names":["BigNumber","bs58","hash","salt","sha256hash","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","PrefixMismatchError","DecodeError","EncodeError","PayloadLengthError","TagNotFoundError","PrefixNotFoundError","InvalidNameError","IllegalBidFeeError","NoDefaultAensPointerError","ArgumentError","InvalidChecksumError","createSalt","buildContractId","ownerId","nonce","ownerIdAndNonce","from","decode","b2bHash","encode","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","getChecksum","payload","slice","addChecksum","input","getPayload","buffer","equals","base64","string","base58","requiredPrefix","prefix","encodedPayload","extra","split","decoder","includes","encoder","writeId","hashId","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":"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","sourcesContent":["import BigNumber from 'bignumber.js'\nimport bs58 from 'bs58'\nimport { hash, salt, sha256hash } from '../../utils/crypto'\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 './schema'\nimport { ceil } from '../../utils/bignumber'\nimport {\n PrefixMismatchError,\n DecodeError,\n EncodeError,\n PayloadLengthError,\n TagNotFoundError,\n PrefixNotFoundError,\n InvalidNameError,\n IllegalBidFeeError,\n NoDefaultAensPointerError,\n ArgumentError,\n InvalidChecksumError\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\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 * Decode data using the default encoding/decoding algorithm\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} data An Base58/64check encoded and prefixed string (ex tx_..., sg_..., ak_....)\n * @param {string} [requiredPrefix] Ensure that data have this prefix\n * @return {Buffer} Decoded data\n */\nexport function decode (data, requiredPrefix) {\n if (typeof data !== 'string') throw new DecodeError(`Encoded should be a string, got ${data} instead`)\n const [prefix, encodedPayload, extra] = data.split('_')\n if (!encodedPayload) throw new DecodeError(`Encoded string missing payload: ${data}`)\n if (extra) throw new DecodeError(`Encoded string have extra parts: ${data}`)\n if (requiredPrefix && requiredPrefix !== prefix) {\n throw new PrefixMismatchError(prefix, requiredPrefix)\n }\n const decoder = (base64Types.includes(prefix) && base64.decode) ||\n (base58Types.includes(prefix) && base58.decode)\n if (!decoder) {\n throw new DecodeError(`Encoded string have unknown type: ${prefix}`)\n }\n const payload = decoder(encodedPayload)\n ensureValidLength(payload, prefix)\n return payload\n}\n\n/**\n * Encode data using the default encoding/decoding algorithm\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer|String} data An decoded data\n * @param {string} type Prefix of Transaction\n * @return {String} Encoded string Base58check or Base64check data\n */\nexport function encode (data, type) {\n const encoder = (base64Types.includes(type) && base64.encode) ||\n (base58Types.includes(type) && base58.encode)\n if (!encoder) {\n throw new EncodeError(`Unknown type: ${type}`)\n }\n ensureValidLength(data, type)\n return `${type}_${encoder(data)}`\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,"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":"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","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"}
|
package/es/tx/builder/schema.mjs
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
// # https://github.com/aeternity/protocol/blob/master/serializations.md#binary-serialization
|
|
9
9
|
import BigNumber from 'bignumber.js';
|
|
10
10
|
import { Name, NameId, NameFee, Deposit } from "./field-types.mjs";
|
|
11
|
+
export * from "./constants.mjs";
|
|
11
12
|
export const VSN = 1;
|
|
12
13
|
export const VSN_2 = 2; // # TRANSACTION DEFAULT TTL
|
|
13
14
|
|
|
@@ -34,89 +35,7 @@ export const MAX_AUTH_FUN_GAS = 50000;
|
|
|
34
35
|
export const DRY_RUN_ACCOUNT = {
|
|
35
36
|
pub: 'ak_11111111111111111111111111111111273Yts',
|
|
36
37
|
amount: '100000000000000000000000000000000000'
|
|
37
|
-
}; // #
|
|
38
|
-
|
|
39
|
-
export const NAME_TTL = 180000; // # max number of block into the future that the name is going to be available
|
|
40
|
-
// # https://github.com/aeternity/protocol/blob/epoch-v0.22.0/AENS.md#update
|
|
41
|
-
// # https://github.com/aeternity/protocol/blob/44a93d3aab957ca820183c3520b9daf6b0fedff4/AENS.md#aens-entry
|
|
42
|
-
|
|
43
|
-
export const NAME_MAX_TTL = 36000;
|
|
44
|
-
export const NAME_MAX_CLIENT_TTL = 84600;
|
|
45
|
-
export const CLIENT_TTL = NAME_MAX_CLIENT_TTL; // # see https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L67
|
|
46
|
-
|
|
47
|
-
export const NAME_FEE_MULTIPLIER = 1e14; // 100000000000000
|
|
48
|
-
|
|
49
|
-
export const NAME_FEE_BID_INCREMENT = 0.05; // # the increment is in percentage
|
|
50
|
-
// # see https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L272
|
|
51
|
-
|
|
52
|
-
export const NAME_BID_TIMEOUT_BLOCKS = 480; // # ~1 day
|
|
53
|
-
// # this is the max length for a domain that requires a base fee to be paid
|
|
54
|
-
|
|
55
|
-
export const NAME_MAX_LENGTH_FEE = 31;
|
|
56
|
-
export const NAME_BID_MAX_LENGTH = 12; // # this is the max length for a domain to be part of a bid
|
|
57
|
-
|
|
58
|
-
export const POINTER_KEY_BY_PREFIX = {
|
|
59
|
-
ak: 'account_pubkey',
|
|
60
|
-
ok: 'oracle_pubkey',
|
|
61
|
-
ct: 'contract_pubkey',
|
|
62
|
-
ch: 'channel'
|
|
63
|
-
}; // # https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L290
|
|
64
|
-
// # https://github.com/aeternity/protocol/blob/master/AENS.md#protocol-fees-and-protection-times
|
|
65
|
-
// # bid ranges:
|
|
66
|
-
|
|
67
|
-
export const NAME_BID_RANGES = {
|
|
68
|
-
31: BigNumber(3).times(NAME_FEE_MULTIPLIER),
|
|
69
|
-
30: BigNumber(5).times(NAME_FEE_MULTIPLIER),
|
|
70
|
-
29: BigNumber(8).times(NAME_FEE_MULTIPLIER),
|
|
71
|
-
28: BigNumber(13).times(NAME_FEE_MULTIPLIER),
|
|
72
|
-
27: BigNumber(21).times(NAME_FEE_MULTIPLIER),
|
|
73
|
-
26: BigNumber(34).times(NAME_FEE_MULTIPLIER),
|
|
74
|
-
25: BigNumber(55).times(NAME_FEE_MULTIPLIER),
|
|
75
|
-
24: BigNumber(89).times(NAME_FEE_MULTIPLIER),
|
|
76
|
-
23: BigNumber(144).times(NAME_FEE_MULTIPLIER),
|
|
77
|
-
22: BigNumber(233).times(NAME_FEE_MULTIPLIER),
|
|
78
|
-
21: BigNumber(377).times(NAME_FEE_MULTIPLIER),
|
|
79
|
-
20: BigNumber(610).times(NAME_FEE_MULTIPLIER),
|
|
80
|
-
19: BigNumber(987).times(NAME_FEE_MULTIPLIER),
|
|
81
|
-
18: BigNumber(1597).times(NAME_FEE_MULTIPLIER),
|
|
82
|
-
17: BigNumber(2584).times(NAME_FEE_MULTIPLIER),
|
|
83
|
-
16: BigNumber(4181).times(NAME_FEE_MULTIPLIER),
|
|
84
|
-
15: BigNumber(6765).times(NAME_FEE_MULTIPLIER),
|
|
85
|
-
14: BigNumber(10946).times(NAME_FEE_MULTIPLIER),
|
|
86
|
-
13: BigNumber(17711).times(NAME_FEE_MULTIPLIER),
|
|
87
|
-
12: BigNumber(28657).times(NAME_FEE_MULTIPLIER),
|
|
88
|
-
11: BigNumber(46368).times(NAME_FEE_MULTIPLIER),
|
|
89
|
-
10: BigNumber(75025).times(NAME_FEE_MULTIPLIER),
|
|
90
|
-
9: BigNumber(121393).times(NAME_FEE_MULTIPLIER),
|
|
91
|
-
8: BigNumber(196418).times(NAME_FEE_MULTIPLIER),
|
|
92
|
-
7: BigNumber(317811).times(NAME_FEE_MULTIPLIER),
|
|
93
|
-
6: BigNumber(514229).times(NAME_FEE_MULTIPLIER),
|
|
94
|
-
5: BigNumber(832040).times(NAME_FEE_MULTIPLIER),
|
|
95
|
-
4: BigNumber(1346269).times(NAME_FEE_MULTIPLIER),
|
|
96
|
-
3: BigNumber(2178309).times(NAME_FEE_MULTIPLIER),
|
|
97
|
-
2: BigNumber(3524578).times(NAME_FEE_MULTIPLIER),
|
|
98
|
-
1: BigNumber(5702887).times(NAME_FEE_MULTIPLIER)
|
|
99
|
-
}; // # ref: https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L273
|
|
100
|
-
// # name bid timeouts
|
|
101
|
-
|
|
102
|
-
export const NAME_BID_TIMEOUTS = {
|
|
103
|
-
13: BigNumber(0),
|
|
104
|
-
12: BigNumber(NAME_BID_TIMEOUT_BLOCKS),
|
|
105
|
-
// # 480 blocks
|
|
106
|
-
8: BigNumber(31).times(NAME_BID_TIMEOUT_BLOCKS),
|
|
107
|
-
// # 14880 blocks
|
|
108
|
-
4: BigNumber(62).times(NAME_BID_TIMEOUT_BLOCKS) // # 29760 blocks
|
|
109
|
-
|
|
110
|
-
}; // # Tag constant for ids (type uint8)
|
|
111
|
-
// # see https://github.com/aeternity/protocol/blob/master/serializations.md#the-id-type
|
|
112
|
-
// # <<Tag:1/unsigned-integer-unit:8, Hash:32/binary-unit:8>>
|
|
113
|
-
|
|
114
|
-
const ID_TAG_ACCOUNT = 1;
|
|
115
|
-
const ID_TAG_NAME = 2;
|
|
116
|
-
const ID_TAG_COMMITMENT = 3;
|
|
117
|
-
const ID_TAG_ORACLE = 4;
|
|
118
|
-
const ID_TAG_CONTRACT = 5;
|
|
119
|
-
const ID_TAG_CHANNEL = 6; // # OBJECT tags
|
|
38
|
+
}; // # OBJECT tags
|
|
120
39
|
// # see https://github.com/aeternity/protocol/blob/master/serializations.md#binary-serialization
|
|
121
40
|
|
|
122
41
|
const OBJECT_TAG_ACCOUNT = 10;
|
|
@@ -170,11 +89,6 @@ const OBJECT_TAG_SOPHIA_BYTE_CODE = 70;
|
|
|
170
89
|
const TX_FIELD = (name, type, prefix) => [name, type, prefix];
|
|
171
90
|
|
|
172
91
|
const TX_SCHEMA_FIELD = (schema, objectId) => [schema, objectId];
|
|
173
|
-
|
|
174
|
-
const revertObject = obj => Object.entries(obj).reduce((acc, _ref) => {
|
|
175
|
-
let [key, v] = _ref;
|
|
176
|
-
return (acc[v] = key) && acc;
|
|
177
|
-
}, {});
|
|
178
92
|
/**
|
|
179
93
|
* @constant
|
|
180
94
|
* @description Object with transaction types
|
|
@@ -386,11 +300,11 @@ export const TX_FEE_BASE_GAS = txType => {
|
|
|
386
300
|
}[txType] || 1;
|
|
387
301
|
return new BigNumber(factor * BASE_GAS);
|
|
388
302
|
};
|
|
389
|
-
export const TX_FEE_OTHER_GAS = (txType, txSize,
|
|
303
|
+
export const TX_FEE_OTHER_GAS = (txType, txSize, _ref) => {
|
|
390
304
|
let {
|
|
391
305
|
relativeTtl,
|
|
392
306
|
innerTxSize
|
|
393
|
-
} =
|
|
307
|
+
} = _ref;
|
|
394
308
|
|
|
395
309
|
switch (txType) {
|
|
396
310
|
case TX_TYPE.oracleRegister:
|
|
@@ -407,23 +321,6 @@ export const TX_FEE_OTHER_GAS = (txType, txSize, _ref2) => {
|
|
|
407
321
|
return new BigNumber(txSize).times(GAS_PER_BYTE);
|
|
408
322
|
}
|
|
409
323
|
};
|
|
410
|
-
export const ID_TAG = {
|
|
411
|
-
account: ID_TAG_ACCOUNT,
|
|
412
|
-
name: ID_TAG_NAME,
|
|
413
|
-
commitment: ID_TAG_COMMITMENT,
|
|
414
|
-
oracle: ID_TAG_ORACLE,
|
|
415
|
-
contract: ID_TAG_CONTRACT,
|
|
416
|
-
channel: ID_TAG_CHANNEL
|
|
417
|
-
};
|
|
418
|
-
export const PREFIX_ID_TAG = {
|
|
419
|
-
ak: ID_TAG.account,
|
|
420
|
-
nm: ID_TAG.name,
|
|
421
|
-
cm: ID_TAG.commitment,
|
|
422
|
-
ok: ID_TAG.oracle,
|
|
423
|
-
ct: ID_TAG.contract,
|
|
424
|
-
ch: ID_TAG.channel
|
|
425
|
-
};
|
|
426
|
-
export const ID_TAG_PREFIX = revertObject(PREFIX_ID_TAG);
|
|
427
324
|
const BASE_TX = [TX_FIELD('tag', FIELD_TYPES.int), TX_FIELD('VSN', FIELD_TYPES.int)];
|
|
428
325
|
export const CONTRACT_BYTE_CODE_LIMA = [...BASE_TX, TX_FIELD('sourceCodeHash', FIELD_TYPES.rawBinary), TX_FIELD('typeInfo', FIELD_TYPES.sophiaCodeTypeInfo), TX_FIELD('byteCode', FIELD_TYPES.rawBinary), TX_FIELD('compilerVersion', FIELD_TYPES.string), TX_FIELD('payable', FIELD_TYPES.bool)];
|
|
429
326
|
const ACCOUNT_TX_2 = [...BASE_TX, TX_FIELD('flags', FIELD_TYPES.int), TX_FIELD('nonce', FIELD_TYPES.int), TX_FIELD('balance', FIELD_TYPES.int), TX_FIELD('gaContract', FIELD_TYPES.id, ['ct', 'nm']), TX_FIELD('gaAuthFun', FIELD_TYPES.binary, 'cb')];
|