@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.
Files changed (38) hide show
  1. package/dist/aepp-sdk.browser-script.js +1 -1
  2. package/dist/aepp-sdk.browser-script.js.map +1 -1
  3. package/dist/aepp-sdk.browser.js +1 -1
  4. package/dist/aepp-sdk.browser.js.map +1 -1
  5. package/dist/aepp-sdk.js +1 -1
  6. package/dist/aepp-sdk.js.map +1 -1
  7. package/es/ae/contract.mjs +1 -1
  8. package/es/ae/contract.mjs.map +1 -1
  9. package/es/channel/index.mjs +1 -1
  10. package/es/channel/index.mjs.map +1 -1
  11. package/es/channel/internal.mjs +3 -4
  12. package/es/channel/internal.mjs.map +1 -1
  13. package/es/contract/aci.mjs +1 -1
  14. package/es/contract/aci.mjs.map +1 -1
  15. package/es/encoder.d.ts +26 -0
  16. package/es/tx/builder/constants.mjs +108 -0
  17. package/es/tx/builder/constants.mjs.map +1 -0
  18. package/es/tx/builder/helpers.mjs +10 -52
  19. package/es/tx/builder/helpers.mjs.map +1 -1
  20. package/es/tx/builder/schema.mjs +4 -107
  21. package/es/tx/builder/schema.mjs.map +1 -1
  22. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +1 -1
  23. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +1 -1
  24. package/es/utils/crypto.mjs +2 -12
  25. package/es/utils/crypto.mjs.map +1 -1
  26. package/es/utils/encoder.mjs +106 -0
  27. package/es/utils/encoder.mjs.map +1 -0
  28. package/package.json +4 -2
  29. package/src/ae/contract.js +1 -1
  30. package/src/channel/index.js +6 -1
  31. package/src/channel/internal.js +5 -6
  32. package/src/contract/aci.js +1 -1
  33. package/src/tx/builder/constants.js +100 -0
  34. package/src/tx/builder/helpers.js +7 -53
  35. package/src/tx/builder/schema.js +1 -98
  36. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +1 -1
  37. package/src/utils/crypto.js +2 -12
  38. package/src/utils/encoder.ts +101 -0
@@ -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 bs58 from 'bs58';
7
- import { hash, salt, sha256hash } from "../../utils/crypto.mjs";
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 "./schema.mjs";
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 { PrefixMismatchError, DecodeError, EncodeError, PayloadLengthError, TagNotFoundError, PrefixNotFoundError, InvalidNameError, IllegalBidFeeError, NoDefaultAensPointerError, ArgumentError, InvalidChecksumError } from "../../utils/errors.mjs";
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":";;;;AAAA,OAAOA,SAAP,MAAsB,cAAtB;AACA,gBAA2D,MAA3D;;;;;SACSC,I,EAAMC,I;SACNC,M,EAAQC,M;SACRC,O;SAEPC,a,EACAC,a,EACAC,e,EACAC,sB,EACAC,iB,EACAC,mB,EACAC,qB;SAEOC,I;SAEPC,gB,EACAC,mB,EACAC,gB,EACAC,kB,EACAC,yB,EACAC,a;AAGF;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,MAAMC,UAAU,GAAGlB,IAAnB;AAEP,SAASC,MAAT,EAAiBC,MAAjB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASiB,eAAT,CAA0BC,OAA1B,EAAmCC,KAAnC,EAA0C;AAC/C,QAAMC,eAAe,GAAG,QAAOC,IAAP,CAAY,CAAC,GAAGrB,MAAM,CAACkB,OAAD,EAAU,IAAV,CAAV,EAA2B,GAAGjB,OAAO,CAACkB,KAAD,CAArC,CAAZ,CAAxB;;AACA,QAAMG,OAAO,GAAGzB,IAAI,CAACuB,eAAD,CAApB;AACA,SAAOrB,MAAM,CAACuB,OAAD,EAAU,IAAV,CAAb;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,aAAT,CAAwBC,QAAxB,EAAkCL,KAAlC,EAAyCM,QAAzC,EAAmD;AACxD,WAASC,MAAT,CAAiBC,GAAjB,EAAsB;AACpB,UAAMC,OAAO,GAAG3B,OAAO,CAAC0B,GAAD,EAAM,IAAN,CAAvB;AACA,WAAO,QAAOE,MAAP,CAAc,CAAC,QAAOC,KAAP,CAAa,KAAKF,OAAO,CAACG,MAA1B,CAAD,EAAoCH,OAApC,CAAd,CAAP;AACD;;AAED,QAAMN,OAAO,GAAGzB,IAAI,CAAC,QAAOwB,IAAP,CAAY,CAAC,GAAGrB,MAAM,CAACwB,QAAD,EAAW,IAAX,CAAV,EAA4B,GAAGE,MAAM,CAACP,KAAD,CAArC,EAA8C,GAAGnB,MAAM,CAACyB,QAAD,EAAW,IAAX,CAAvD,CAAZ,CAAD,CAApB;AACA,SAAO1B,MAAM,CAACuB,OAAD,EAAU,IAAV,CAAb;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASU,UAAT,CAAqBlC,IAArB,EAA2B;AAChC,SAAO,QAAOuB,IAAP,CAAYvB,IAAI,CAACmC,QAAL,CAAc,EAAd,EAAkBC,QAAlB,CAA2B,EAA3B,EAA+B,GAA/B,CAAZ,EAAiD,KAAjD,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,aAAT,CAAwBC,IAAxB,EAA8B;AACnCC,EAAAA,eAAe,CAACD,IAAD,CAAf;AACA,SAAOrC,MAAM,CAACF,IAAI,CAACuC,IAAI,CAACE,WAAL,EAAD,CAAL,EAA2B,IAA3B,CAAb;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,cAAT,CAAyBH,IAAzB,EAAoD;AAAA,MAArBtC,IAAqB,uEAAdkB,UAAU,EAAI;AACzDqB,EAAAA,eAAe,CAACD,IAAD,CAAf;AACA,SAAOrC,MAAM,CAACF,IAAI,CAAC,QAAOgC,MAAP,CAAc,CAAC,QAAOR,IAAP,CAAYe,IAAI,CAACE,WAAL,EAAZ,CAAD,EAAkCN,UAAU,CAAClC,IAAD,CAA5C,CAAd,CAAD,CAAL,EAA2E,IAA3E,CAAb;AACD,C,CAED;;AACA,MAAM0C,WAAW,GAAG,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,EAAqC,IAArC,EAA2C,IAA3C,EAAiD,IAAjD,EAAuD,IAAvD,EAA6D,IAA7D,CAApB;AACA,MAAMC,WAAW,GAAG,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,EAAqC,IAArC,EAA2C,IAA3C,EAAiD,IAAjD,EAAuD,IAAvD,EAA6D,IAA7D,EAAmE,IAAnE,EAAyE,IAAzE,EAA+E,IAA/E,EAAqF,IAArF,CAApB,C,CACA;;AACA,MAAMC,WAAW,GAAG;AAClBC,EAAAA,EAAE,EAAE,EADc;AAElBC,EAAAA,EAAE,EAAE,EAFc;AAGlBC,EAAAA,EAAE,EAAE;AAHc,CAApB;;AAMA,SAASC,iBAAT,CAA4BC,IAA5B,EAAkCC,IAAlC,EAAwC;AACtC,MAAI,CAACN,WAAW,CAACM,IAAD,CAAhB,EAAwB;AACxB,MAAID,IAAI,CAAChB,MAAL,KAAgBW,WAAW,CAACM,IAAD,CAA/B,EAAuC;AACvC,QAAM,IAAIC,kBAAJ,CAAwB,qBAAoBP,WAAW,CAACM,IAAD,CAAO,eAAcD,IAAI,CAAChB,MAAO,UAAxF,CAAN;AACD;;AAED,MAAMmB,WAAW,GAAGC,OAAO,IAAIC,UAAU,CAACA,UAAU,CAACD,OAAD,CAAX,CAAV,CAAgCE,KAAhC,CAAsC,CAAtC,EAAyC,CAAzC,CAA/B;;AAEA,MAAMC,WAAW,GAAIC,KAAD,IAAW;AAC7B,QAAMJ,OAAO,GAAG,QAAO9B,IAAP,CAAYkC,KAAZ,CAAhB;;AACA,SAAO,QAAO1B,MAAP,CAAc,CAACsB,OAAD,EAAUD,WAAW,CAACC,OAAD,CAArB,CAAd,CAAP;AACD,CAHD;;AAKA,SAASK,UAAT,CAAqBC,MAArB,EAA6B;AAC3B,QAAMN,OAAO,GAAGM,MAAM,CAACJ,KAAP,CAAa,CAAb,EAAgB,CAAC,CAAjB,CAAhB;AACA,MAAI,CAACH,WAAW,CAACC,OAAD,CAAX,CAAqBO,MAArB,CAA4BD,MAAM,CAACJ,KAAP,CAAa,CAAC,CAAd,CAA5B,CAAL,EAAoD,MAAM,IAAIM,oBAAJ,EAAN;AACpD,SAAOR,OAAP;AACD;;AAED,MAAMS,MAAM,GAAG;AACb7D,EAAAA,MAAM,EAAE0D,MAAM,IAAIH,WAAW,CAACG,MAAD,CAAX,CAAoBxB,QAApB,CAA6B,QAA7B,CADL;AAEbjC,EAAAA,MAAM,EAAE6D,MAAM,IAAIL,UAAU,CAAC,QAAOnC,IAAP,CAAYwC,MAAZ,EAAoB,QAApB,CAAD;AAFf,CAAf;AAKA,MAAMC,MAAM,GAAG;AACb/D,EAAAA,MAAM,EAAE0D,MAAM,IAAIM,IAAI,CAAChE,MAAL,CAAYuD,WAAW,CAACG,MAAD,CAAvB,CADL;AAEbzD,EAAAA,MAAM,EAAE6D,MAAM,IAAIL,UAAU,CAACO,IAAI,CAAC/D,MAAL,CAAY6D,MAAZ,CAAD;AAFf,CAAf;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASG,OAAT,CAAkBC,MAAlB,EAA0B;AAC/B,MAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC,MAAM,IAAIlD,aAAJ,CAAkB,QAAlB,EAA4B,UAA5B,EAAwCkD,MAAxC,CAAN;AAChC,QAAMC,MAAM,GAAGD,MAAM,CAACZ,KAAP,CAAa,CAAb,EAAgB,CAAhB,CAAf;AACA,QAAMc,KAAK,GAAGhE,aAAa,CAAC+D,MAAD,CAA3B;AACA,MAAI,CAACC,KAAL,EAAY,MAAM,IAAIzD,gBAAJ,CAAqBwD,MAArB,CAAN;AACZ,SAAO,QAAO7C,IAAP,CAAY,CAAC,GAAGpB,OAAO,CAACkE,KAAD,CAAX,EAAoB,GAAGnE,MAAM,CAACiE,MAAD,EAASC,MAAT,CAA7B,CAAZ,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASE,MAAT,CAAiBC,GAAjB,EAAsB;AAC3B,QAAMC,GAAG,GAAG,QAAOjD,IAAP,CAAYgD,GAAZ,EAAiBE,UAAjB,CAA4B,CAA5B,EAA+B,CAA/B,CAAZ;;AACA,QAAML,MAAM,GAAGhE,aAAa,CAACoE,GAAD,CAA5B;AACA,MAAI,CAACJ,MAAL,EAAa,MAAM,IAAIvD,mBAAJ,CAAwB2D,GAAxB,CAAN;AACb,SAAOvE,MAAM,CAACsE,GAAG,CAAChB,KAAJ,CAAU,CAAV,EAAagB,GAAG,CAACtC,MAAjB,CAAD,EAA2BmC,MAA3B,CAAb;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASM,QAAT,CAAmB7C,GAAnB,EAAwB;AAC7B,SAAO1B,OAAO,CAAC0B,GAAD,EAAM,IAAN,CAAd;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAAS8C,OAAT,GAAyC;AAAA,MAAvBJ,GAAuB,uEAAjB,QAAOhD,IAAP,CAAY,EAAZ,CAAiB;AAC9C,SAAO,IAAIzB,SAAJ,CAAc,QAAOyB,IAAP,CAAYgD,GAAZ,EAAiBpC,QAAjB,CAA0B,KAA1B,CAAd,EAAgD,EAAhD,EAAoDA,QAApD,CAA6D,EAA7D,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASyC,aAAT,CAAwBC,QAAxB,EAAkC;AACvC,SAAOA,QAAQ,CAACC,GAAT,CACLC,CAAC,IAAI,CACH5E,OAAO,CAAC4E,CAAC,CAACC,GAAH,CADJ,EAEHd,OAAO,CAACa,CAAC,CAACE,EAAH,CAFJ,CADA,CAAP;AAMD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,YAAT,CAAuBL,QAAvB,EAAiC;AACtC,SAAOA,QAAQ,CAACC,GAAT,CACL;AAAA,QAAC,CAACE,GAAD,EAAMC,EAAN,CAAD;AAAA,WAAeE,MAAM,CAACC,MAAP,CAAc;AAC3BJ,MAAAA,GAAG,EAAEA,GAAG,CAAC7C,QAAJ,EADsB;AAE3B8C,MAAAA,EAAE,EAAEX,MAAM,CAACW,EAAD;AAFiB,KAAd,CAAf;AAAA,GADK,CAAP;AAMD;AAED,MAAMI,WAAW,GAAG,QAApB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAAS9C,eAAT,CAA0BD,IAA1B,EAAgC;AACrC,MAAI,CAACA,IAAD,IAAS,OAAOA,IAAP,KAAgB,QAA7B,EAAuC,MAAM,IAAIxB,gBAAJ,CAAqB,uBAArB,CAAN;AACvC,MAAI,CAACwB,IAAI,CAACgD,QAAL,CAAcD,WAAd,CAAL,EAAiC,MAAM,IAAIvE,gBAAJ,CAAsB,wBAAuBuE,WAAY,KAAI/C,IAAK,EAAlE,CAAN;AAClC;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASiD,WAAT,CAAsBjD,IAAtB,EAA4B;AACjC,MAAI;AACFC,IAAAA,eAAe,CAACD,IAAD,CAAf;AACA,WAAO,IAAP;AACD,GAHD,CAGE,OAAOkD,KAAP,EAAc;AACd,WAAO,KAAP;AACD;AACF;AAED;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,oBAAT,CAA+BC,UAA/B,EAA2C;AAChDxF,EAAAA,MAAM,CAACwF,UAAD,CAAN;AACA,QAAMtB,MAAM,GAAGsB,UAAU,CAACC,MAAX,CAAkB,CAAlB,EAAqB,CAArB,CAAf;AACA,SAAOjF,qBAAqB,CAAC0D,MAAD,CAArB,IACL,CAAC,MAAM;AAAE,UAAM,IAAIpD,yBAAJ,CAA8BoD,MAA9B,CAAN;AAA6C,GAAtD,GADF;AAED;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASwB,iBAAT,CAA4BtD,IAA5B,EAAkC;AACvCC,EAAAA,eAAe,CAACD,IAAD,CAAf;AACA,QAAMuD,UAAU,GAAGvD,IAAI,CAACL,MAAL,GAAcoD,WAAW,CAACpD,MAA7C;AACA,SAAO3B,eAAe,CAACwF,IAAI,CAACC,GAAL,CAASF,UAAT,EAAqBpF,mBAArB,CAAD,CAAtB;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASuF,aAAT,CAAwB1D,IAAxB,EAA8B2D,QAA9B,EAA4E;AAAA,MAApCC,SAAoC,uEAAxB3F,sBAAwB;AACjF,MAAI,EAAE4F,MAAM,CAACD,SAAD,CAAN,KAAsBA,SAAtB,IAAmCA,SAAS,GAAG,CAAZ,KAAkB,CAAvD,CAAJ,EAA+D,MAAM,IAAInF,kBAAJ,CAAwB,8CAA6CmF,SAAU,EAA/E,CAAN;AAC/D,MAAIA,SAAS,GAAG3F,sBAAhB,EAAwC,MAAM,IAAIQ,kBAAJ,CAAwB,mCAAkCR,sBAAuB,EAAjF,CAAN;AACxC,SAAOI,IAAI,CACTb,SAAS,CAACmG,QAAD,aAACA,QAAD,cAACA,QAAD,GAAaL,iBAAiB,CAACtD,IAAD,CAA9B,CAAT,CAA+C8D,KAA/C,CAAqDtG,SAAS,CAACS,sBAAD,CAAT,CAAkC8F,IAAlC,CAAuC,CAAvC,CAArD,CADS,CAAX;AAGD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,sBAAT,CAAiChE,IAAjC,EAAuCiE,WAAvC,EAAoD;AACzDhE,EAAAA,eAAe,CAACD,IAAD,CAAf;AACA,QAAML,MAAM,GAAGK,IAAI,CAACL,MAAL,GAAcoD,WAAW,CAACpD,MAAzC;AACA,QAAMuE,CAAC,GAAIvE,MAAM,IAAI,CAAV,IAAezB,iBAAiB,CAAC,CAAD,CAAjC,IACPyB,MAAM,IAAI,CAAV,IAAezB,iBAAiB,CAAC,CAAD,CADzB,IAEPyB,MAAM,IAAI,EAAV,IAAgBzB,iBAAiB,CAAC,EAAD,CAF1B,IAGRA,iBAAiB,CAAC,EAAD,CAHnB;AAIA,SAAOgG,CAAC,CAACH,IAAF,CAAOE,WAAP,EAAoBpE,QAApB,CAA6B,EAA7B,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASsE,aAAT,CAAwBnE,IAAxB,EAA8B;AACnCC,EAAAA,eAAe,CAACD,IAAD,CAAf;AACA,SAAOA,IAAI,CAACL,MAAL,GAAc,KAAKoD,WAAW,CAACpD,MAAtC;AACD","sourcesContent":["import BigNumber from 'bignumber.js'\nimport { encode as bs58Encode, decode as bs58Decode } from 'bs58'\nimport { hash, salt } from '../../utils/crypto'\nimport { encode, decode } from '../../utils/encoder'\nimport { toBytes } from '../../utils/bytes'\nimport {\n ID_TAG_PREFIX,\n PREFIX_ID_TAG,\n NAME_BID_RANGES,\n NAME_FEE_BID_INCREMENT,\n NAME_BID_TIMEOUTS,\n NAME_MAX_LENGTH_FEE,\n POINTER_KEY_BY_PREFIX\n} from './constants'\nimport { ceil } from '../../utils/bignumber'\nimport {\n TagNotFoundError,\n PrefixNotFoundError,\n InvalidNameError,\n IllegalBidFeeError,\n NoDefaultAensPointerError,\n ArgumentError\n} from '../../utils/errors'\n\n/**\n * JavaScript-based Transaction builder helper function's\n * @module @aeternity/aepp-sdk/es/tx/builder/helpers\n * @export TxBuilderHelper\n * @example import { TxBuilderHelper } from '@aeternity/aepp-sdk'\n */\n\nexport const createSalt = salt\n\nexport { encode, decode }\n\n/**\n * Build a contract public key\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} ownerId The public key of the owner account\n * @param {number} nonce the nonce of the transaction\n * @return {string} Contract public key\n */\nexport function buildContractId (ownerId, nonce) {\n const ownerIdAndNonce = Buffer.from([...decode(ownerId, 'ak'), ...toBytes(nonce)])\n const b2bHash = hash(ownerIdAndNonce)\n return encode(b2bHash, 'ct')\n}\n\n/**\n * Build a oracle query id\n * @function\n * @function* @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} senderId The public key of the sender account\n * @param {Number} nonce the nonce of the transaction\n * @param {Number} oracleId The oracle public key\n * @return {string} Contract public key\n */\nexport function oracleQueryId (senderId, nonce, oracleId) {\n function _int32 (val) {\n const nonceBE = toBytes(val, true)\n return Buffer.concat([Buffer.alloc(32 - nonceBE.length), nonceBE])\n }\n\n const b2bHash = hash(Buffer.from([...decode(senderId, 'ak'), ..._int32(nonce), ...decode(oracleId, 'ok')]))\n return encode(b2bHash, 'oq')\n}\n\n/**\n * Format the salt into a 64-byte hex string\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {number} salt\n * @return {string} Zero-padded hex string of salt\n */\nexport function formatSalt (salt) {\n return Buffer.from(salt.toString(16).padStart(64, '0'), 'hex')\n}\n\n/**\n * Encode an AENS name\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name Name to encode\n * @return {String} `nm_` prefixed encoded AENS name\n */\nexport function produceNameId (name) {\n ensureNameValid(name)\n return encode(hash(name.toLowerCase()), 'nm')\n}\n\n/**\n * Generate the commitment hash by hashing the formatted salt and\n * name, base 58 encoding the result and prepending 'cm_'\n *\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @function commitmentHash\n * @category async\n * @rtype (name: String, salt?: String) => hash: Promise[String]\n * @param {String} name - Name to be registered\n * @param {Number} salt Random salt\n * @return {String} Commitment hash\n */\nexport function commitmentHash (name, salt = createSalt()) {\n ensureNameValid(name)\n return encode(hash(Buffer.concat([Buffer.from(name.toLowerCase()), formatSalt(salt)])), 'cm')\n}\n\n// based on https://github.com/aeternity/protocol/blob/master/node/api/api_encoding.md\nconst base64Types = ['ba', 'cb', 'or', 'ov', 'pi', 'ss', 'cs', 'ck', 'cv', 'st', 'tx']\nconst base58Types = ['ak', 'bf', 'bs', 'bx', 'ch', 'cm', 'ct', 'kh', 'mh', 'nm', 'ok', 'oq', 'pp', 'sg', 'th']\n// TODO: add all types with a fixed length\nconst typesLength = {\n ak: 32,\n ct: 32,\n ok: 32\n}\n\nfunction ensureValidLength (data, type) {\n if (!typesLength[type]) return\n if (data.length === typesLength[type]) return\n throw new PayloadLengthError(`Payload should be ${typesLength[type]} bytes, got ${data.length} instead`)\n}\n\nconst getChecksum = payload => sha256hash(sha256hash(payload)).slice(0, 4)\n\nconst addChecksum = (input) => {\n const payload = Buffer.from(input)\n return Buffer.concat([payload, getChecksum(payload)])\n}\n\nfunction getPayload (buffer) {\n const payload = buffer.slice(0, -4)\n if (!getChecksum(payload).equals(buffer.slice(-4))) throw new InvalidChecksumError()\n return payload\n}\n\nconst base64 = {\n encode: buffer => addChecksum(buffer).toString('base64'),\n decode: string => getPayload(Buffer.from(string, 'base64'))\n}\n\nconst base58 = {\n encode: buffer => bs58.encode(addChecksum(buffer)),\n decode: string => getPayload(bs58.decode(string))\n}\n\n/**\n * Utility function to create and _id type\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} hashId Encoded hash\n * @return {Buffer} Buffer Buffer with ID tag and decoded HASh\n */\nexport function writeId (hashId) {\n if (typeof hashId !== 'string') throw new ArgumentError('hashId', 'a string', hashId)\n const prefix = hashId.slice(0, 2)\n const idTag = PREFIX_ID_TAG[prefix]\n if (!idTag) throw new TagNotFoundError(prefix)\n return Buffer.from([...toBytes(idTag), ...decode(hashId, prefix)])\n}\n\n/**\n * Utility function to read and _id type\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer} buf Data\n * @return {String} Encoided hash string with prefix\n */\nexport function readId (buf) {\n const tag = Buffer.from(buf).readUIntBE(0, 1)\n const prefix = ID_TAG_PREFIX[tag]\n if (!prefix) throw new PrefixNotFoundError(tag)\n return encode(buf.slice(1, buf.length), prefix)\n}\n\n/**\n * Utility function to convert int to bytes\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Number|String|BigNumber} val Value\n * @return {Buffer} Buffer Buffer from number(BigEndian)\n */\nexport function writeInt (val) {\n return toBytes(val, true)\n}\n\n/**\n * Utility function to convert bytes to int\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer} buf Value\n * @return {String} Buffer Buffer from number(BigEndian)\n */\nexport function readInt (buf = Buffer.from([])) {\n return new BigNumber(Buffer.from(buf).toString('hex'), 16).toString(10)\n}\n\n/**\n * Helper function to build pointers for name update TX\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Array} pointers - Array of pointers\n * ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])\n * @return {Array} Serialized pointers array\n */\nexport function buildPointers (pointers) {\n return pointers.map(\n p => [\n toBytes(p.key),\n writeId(p.id)\n ]\n )\n}\n\n/**\n * Helper function to read pointers from name update TX\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Array} pointers - Array of pointers\n * ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])\n * @return {Array} Deserialize pointer array\n */\nexport function readPointers (pointers) {\n return pointers.map(\n ([key, id]) => Object.assign({\n key: key.toString(),\n id: readId(id)\n })\n )\n}\n\nconst AENS_SUFFIX = '.chain'\n\n/**\n * Ensure that AENS name is valid\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} name\n * @return void\n * @throws Error\n */\nexport function ensureNameValid (name) {\n if (!name || typeof name !== 'string') throw new InvalidNameError('Name must be a string')\n if (!name.endsWith(AENS_SUFFIX)) throw new InvalidNameError(`Name should end with ${AENS_SUFFIX}: ${name}`)\n}\n\n/**\n * Is AENS name valid\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} name\n * @return Boolean\n */\nexport function isNameValid (name) {\n try {\n ensureNameValid(name)\n return true\n } catch (error) {\n return false\n }\n}\n\n/**\n * @param identifier - account/oracle/contract address, or channel\n * @returns {String} default AENS pointer key\n * @throws exception when default key not defined\n */\nexport function getDefaultPointerKey (identifier) {\n decode(identifier)\n const prefix = identifier.substr(0, 2)\n return POINTER_KEY_BY_PREFIX[prefix] ||\n (() => { throw new NoDefaultAensPointerError(prefix) })()\n}\n\n/**\n * Get the minimum AENS name fee\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name the AENS name to get the fee for\n * @return {String} the minimum fee for the AENS name auction\n */\nexport function getMinimumNameFee (name) {\n ensureNameValid(name)\n const nameLength = name.length - AENS_SUFFIX.length\n return NAME_BID_RANGES[Math.min(nameLength, NAME_MAX_LENGTH_FEE)]\n}\n\n/**\n * Compute bid fee for AENS auction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name the AENS name to get the fee for\n * @param {Number|String} startFee Auction start fee\n * @param {Number} [increment=0.5] Bid multiplier(In percentage, must be between 0 and 1)\n * @return {String} Bid fee\n */\nexport function computeBidFee (name, startFee, increment = NAME_FEE_BID_INCREMENT) {\n if (!(Number(increment) === increment && increment % 1 !== 0)) throw new IllegalBidFeeError(`Increment must be float. Current increment ${increment}`)\n if (increment < NAME_FEE_BID_INCREMENT) throw new IllegalBidFeeError(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`)\n return ceil(\n BigNumber(startFee ?? getMinimumNameFee(name)).times(BigNumber(NAME_FEE_BID_INCREMENT).plus(1))\n )\n}\n\n/**\n * Compute auction end height\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name\n * @param {Number|String} claimHeight Auction starting height\n * @return {String} Auction end height\n */\nexport function computeAuctionEndBlock (name, claimHeight) {\n ensureNameValid(name)\n const length = name.length - AENS_SUFFIX.length\n const h = (length <= 4 && NAME_BID_TIMEOUTS[4]) ||\n (length <= 8 && NAME_BID_TIMEOUTS[8]) ||\n (length <= 12 && NAME_BID_TIMEOUTS[12]) ||\n NAME_BID_TIMEOUTS[13]\n return h.plus(claimHeight).toString(10)\n}\n\n/**\n * Is name accept going to auction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name\n * @return {Boolean}\n */\nexport function isAuctionName (name) {\n ensureNameValid(name)\n return name.length < 13 + AENS_SUFFIX.length\n}\n"],"file":"helpers.mjs"}
@@ -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
- }; // # AENS
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, _ref2) => {
303
+ export const TX_FEE_OTHER_GAS = (txType, txSize, _ref) => {
390
304
  let {
391
305
  relativeTtl,
392
306
  innerTxSize
393
- } = _ref2;
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')];