@aeternity/aepp-sdk 8.2.0 → 10.0.0-beta.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/README.md +16 -9
- package/dist/aepp-sdk.browser-script.js +1 -1
- package/dist/aepp-sdk.browser-script.js.LICENSE.txt +0 -9
- 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/account/base.js +33 -119
- package/es/account/base.js.map +1 -1
- package/es/account/memory.js +17 -19
- package/es/account/memory.js.map +1 -1
- package/es/account/multiple.js +75 -154
- package/es/account/multiple.js.map +1 -1
- package/es/ae/aens.js +164 -599
- package/es/ae/aens.js.map +1 -1
- package/es/ae/contract.js +108 -916
- package/es/ae/contract.js.map +1 -1
- package/es/ae/index.js +89 -250
- package/es/ae/index.js.map +1 -1
- package/es/ae/oracle.js +132 -500
- package/es/ae/oracle.js.map +1 -1
- package/es/chain/index.js +4 -23
- package/es/chain/index.js.map +1 -1
- package/es/chain/node.js +292 -1018
- package/es/chain/node.js.map +1 -1
- package/es/channel/handlers.js +597 -1086
- package/es/channel/handlers.js.map +1 -1
- package/es/channel/index.js +203 -451
- package/es/channel/index.js.map +1 -1
- package/es/channel/internal.js +129 -301
- package/es/channel/internal.js.map +1 -1
- package/es/contract/aci/index.js +319 -491
- package/es/contract/aci/index.js.map +1 -1
- package/es/contract/aci/transformation.js +35 -711
- package/es/contract/aci/transformation.js.map +1 -1
- package/es/contract/compiler.js +129 -203
- package/es/contract/compiler.js.map +1 -1
- package/es/contract/ga/helpers.js +17 -122
- package/es/contract/ga/helpers.js.map +1 -1
- package/es/contract/ga/index.js +102 -247
- package/es/contract/ga/index.js.map +1 -1
- package/es/contract/index.js +1 -1
- package/es/contract/index.js.map +1 -1
- package/es/index.js +2 -3
- package/es/index.js.map +1 -1
- package/es/node-pool/index.js +54 -73
- package/es/node-pool/index.js.map +1 -1
- package/es/node.js +56 -157
- package/es/node.js.map +1 -1
- package/es/other.d.ts +1 -1
- package/es/tx/builder/helpers.js +49 -89
- package/es/tx/builder/helpers.js.map +1 -1
- package/es/tx/builder/index.js +205 -303
- package/es/tx/builder/index.js.map +1 -1
- package/es/tx/builder/schema.js +585 -573
- package/es/tx/builder/schema.js.map +1 -1
- package/es/tx/index.js +1 -1
- package/es/tx/index.js.map +1 -1
- package/es/tx/tx-object.js +105 -135
- package/es/tx/tx-object.js.map +1 -1
- package/es/tx/tx.js +810 -1586
- package/es/tx/tx.js.map +1 -1
- package/es/tx/validator.js +191 -426
- package/es/tx/validator.js.map +1 -1
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.js +17 -21
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +1 -1
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.js +38 -74
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +1 -1
- package/es/utils/aepp-wallet-communication/content-script-bridge.js +14 -15
- package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +1 -1
- package/es/utils/aepp-wallet-communication/helpers.js +60 -105
- package/es/utils/aepp-wallet-communication/helpers.js.map +1 -1
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js +179 -510
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +1 -1
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.js +70 -89
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +1 -1
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js +354 -603
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +1 -1
- package/es/utils/aepp-wallet-communication/schema.js +43 -39
- package/es/utils/aepp-wallet-communication/schema.js.map +1 -1
- package/es/utils/aepp-wallet-communication/wallet-detector.js +32 -58
- package/es/utils/aepp-wallet-communication/wallet-detector.js.map +1 -1
- package/es/utils/amount-formatter.js +41 -61
- package/es/utils/amount-formatter.js.map +1 -1
- package/es/utils/async-init.js +28 -64
- package/es/utils/async-init.js.map +1 -1
- package/es/utils/bignumber.js +3 -11
- package/es/utils/bignumber.js.map +1 -1
- package/es/utils/bytes.js +5 -9
- package/es/utils/bytes.js.map +1 -1
- package/es/utils/crypto.js +49 -75
- package/es/utils/crypto.js.map +1 -1
- package/es/utils/hd-wallet.js +45 -81
- package/es/utils/hd-wallet.js.map +1 -1
- package/es/utils/json-big.js +16 -49
- package/es/utils/json-big.js.map +1 -1
- package/es/utils/keystore.js +81 -246
- package/es/utils/keystore.js.map +1 -1
- package/es/utils/mptree.js +88 -134
- package/es/utils/mptree.js.map +1 -1
- package/es/utils/other.js +10 -60
- package/es/utils/other.js.map +1 -1
- package/es/utils/semver-satisfies.js +9 -28
- package/es/utils/semver-satisfies.js.map +1 -1
- package/es/utils/string.js +4 -13
- package/es/utils/string.js.map +1 -1
- package/es/utils/swagger.js +85 -218
- package/es/utils/swagger.js.map +1 -1
- package/package.json +52 -43
- package/src/account/base.js +8 -9
- package/src/account/multiple.js +20 -16
- package/src/ae/aens.js +25 -21
- package/src/ae/contract.js +65 -246
- package/src/ae/index.js +31 -7
- package/src/ae/oracle.js +21 -17
- package/src/chain/index.js +2 -12
- package/src/chain/node.js +26 -29
- package/src/channel/handlers.js +0 -1
- package/src/channel/index.js +4 -5
- package/src/contract/aci/index.js +221 -106
- package/src/contract/aci/transformation.js +30 -422
- package/src/contract/compiler.js +45 -4
- package/src/contract/ga/helpers.js +2 -12
- package/src/contract/ga/index.js +22 -26
- package/src/index.js +2 -4
- package/src/node-pool/index.js +21 -12
- package/src/node.js +22 -26
- package/src/tx/builder/helpers.js +12 -24
- package/src/tx/builder/index.js +18 -15
- package/src/tx/builder/schema.js +43 -108
- package/src/tx/tx-object.js +0 -2
- package/src/tx/tx.js +157 -144
- package/src/tx/validator.js +134 -202
- package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +1 -3
- package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +9 -10
- package/src/utils/aepp-wallet-communication/schema.js +1 -3
- package/src/utils/amount-formatter.ts +1 -1
- package/src/utils/bignumber.ts +2 -1
- package/src/utils/crypto.js +4 -17
- package/src/utils/other.ts +1 -1
- package/src/utils/semver-satisfies.ts +1 -1
- package/src/utils/swagger.js +24 -7
- package/CHANGELOG.md +0 -1716
- package/src/contract/aci/helpers.js +0 -140
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tx/builder/index.js"],"names":["BigNumber","decode","rlpDecode","encode","rlpEncode","AE_AMOUNT_FORMATS","formatAmount","assertedType","DEFAULT_FEE","FIELD_TYPES","OBJECT_ID_TX_TYPE","PREFIX_ID_TAG","TX_DESERIALIZATION_SCHEMA","TX_FEE_BASE_GAS","TX_FEE_OTHER_GAS","TX_SERIALIZATION_SCHEMA","TX_TYPE","VALIDATION_MESSAGE","VSN","readInt","readId","readPointers","writeId","writeInt","buildPointers","buildHash","toBytes","MPTree","ORACLE_TTL_TYPES","delta","block","deserializeField","value","type","prefix","ctVersion","vm","abi","vmVersion","Buffer","from","abiVersion","amount","id","ids","bool","binary","stateTree","string","toString","payload","pointers","rlpBinary","unpackTx","rlpBinaries","v","rawBinary","hex","offChainUpdates","callStack","mptrees","t","callReturnType","sophiaCodeTypeInfo","acc","funHash","fnName","argType","outType","serializeField","signatures","split","serialize","validateField","key","assert","valid","params","undefined","isMinusValue","isNaN","isBigNumber","lt","gte","p","Object","prototype","hasOwnProperty","call","e","transformParams","schema","denomination","_","schemaKeys","k","getOracleRelativeTtl","txType","ttlKey","oracleRegister","oracleExtend","oracleQuery","oracleResponse","calculateMinFee","gas","vsn","multiplier","times","actualFee","buildFee","fee","expected","eq","buildTx","txWithOutFee","rlpEncoded","txSize","length","plus","relativeTtl","calculateFee","showWarning","console","warn","validateParams","excludeKeys","buildRawTx","AETTOS","filteredSchema","Error","fieldType","unpackRawTx","index","getSchema","objId","isDeserialize","firstKey","tag","tx","txObject","encodedTx","fromRlpBinary","buildTxHash","rawTx","options"],"mappings":"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","sourcesContent":["import BigNumber from 'bignumber.js'\nimport { decode as rlpDecode, encode as rlpEncode } from 'rlp'\nimport { AE_AMOUNT_FORMATS, formatAmount } from '../../utils/amount-formatter'\nimport { assertedType } from '../../utils/crypto'\n\nimport {\n DEFAULT_FEE,\n FIELD_TYPES,\n OBJECT_ID_TX_TYPE,\n PREFIX_ID_TAG,\n TX_DESERIALIZATION_SCHEMA,\n TX_FEE_BASE_GAS,\n TX_FEE_OTHER_GAS,\n TX_SERIALIZATION_SCHEMA,\n TX_TYPE,\n VALIDATION_MESSAGE,\n VSN\n} from './schema'\nimport {\n readInt,\n readId,\n readPointers,\n writeId,\n writeInt,\n buildPointers,\n encode,\n decode,\n buildHash\n} from './helpers'\nimport { toBytes } from '../../utils/bytes'\nimport MPTree from '../../utils/mptree'\n\n/**\n * JavaScript-based Transaction builder\n * @module @aeternity/aepp-sdk/es/tx/builder\n * @export TxBuilder\n * @example import { TxBuilder } from '@aeternity/aepp-sdk'\n */\n\nconst ORACLE_TTL_TYPES = {\n delta: 'delta',\n block: 'block'\n}\n\n// SERIALIZE AND DESERIALIZE PART\nfunction deserializeField (value, type, prefix) {\n if (!value) return ''\n switch (type) {\n case FIELD_TYPES.ctVersion: {\n const [vm, , abi] = value\n return { vmVersion: readInt(Buffer.from([vm])), abiVersion: readInt(Buffer.from([abi])) }\n }\n case FIELD_TYPES.amount:\n return readInt(value)\n case FIELD_TYPES.int:\n return readInt(value)\n case FIELD_TYPES.id:\n return readId(value)\n case FIELD_TYPES.ids:\n return value.map(readId)\n case FIELD_TYPES.bool:\n return value[0] === 1\n case FIELD_TYPES.binary:\n return encode(value, prefix)\n case FIELD_TYPES.stateTree:\n return encode(value, 'ss')\n case FIELD_TYPES.string:\n return value.toString()\n case FIELD_TYPES.payload:\n return encode(value, 'ba')\n case FIELD_TYPES.pointers:\n return readPointers(value)\n case FIELD_TYPES.rlpBinary:\n return unpackTx(value, true)\n case FIELD_TYPES.rlpBinaries:\n return value.map(v => unpackTx(v, true))\n case FIELD_TYPES.rawBinary:\n return value\n case FIELD_TYPES.hex:\n return value.toString('hex')\n case FIELD_TYPES.offChainUpdates:\n return value.map(v => unpackTx(v, true))\n case FIELD_TYPES.callStack:\n // TODO: fix this\n return [readInt(value)]\n case FIELD_TYPES.mptrees:\n return value.map(t => new MPTree(t))\n case FIELD_TYPES.callReturnType:\n switch (readInt(value)) {\n case '0': return 'ok'\n case '1': return 'error'\n case '2': return 'revert'\n default: return value\n }\n case FIELD_TYPES.sophiaCodeTypeInfo:\n return value\n .reduce(\n (acc, [funHash, fnName, argType, outType]) =>\n ({ ...acc, [fnName.toString()]: { funHash, argType, outType } }),\n {}\n )\n default:\n return value\n }\n}\n\nfunction serializeField (value, type, prefix) {\n switch (type) {\n case FIELD_TYPES.amount:\n case FIELD_TYPES.int:\n return writeInt(value)\n case FIELD_TYPES.id:\n return writeId(value)\n case FIELD_TYPES.ids:\n return value.map(writeId)\n case FIELD_TYPES.bool:\n return Buffer.from([value ? 1 : 0])\n case FIELD_TYPES.binary:\n return decode(value, prefix)\n case FIELD_TYPES.stateTree:\n return decode(value, 'ss')\n case FIELD_TYPES.hex:\n return Buffer.from(value, 'hex')\n case FIELD_TYPES.signatures:\n return value.map(Buffer.from)\n case FIELD_TYPES.payload:\n return typeof value === 'string' && value.split('_')[0] === 'ba'\n ? decode(value, 'ba')\n : toBytes(value)\n case FIELD_TYPES.string:\n return toBytes(value)\n case FIELD_TYPES.pointers:\n return buildPointers(value)\n case FIELD_TYPES.mptrees:\n return value.map(t => t.serialize())\n case FIELD_TYPES.ctVersion:\n return Buffer.from([...toBytes(value.vmVersion), 0, ...toBytes(value.abiVersion)])\n case FIELD_TYPES.callReturnType:\n switch (value) {\n case 'ok': return writeInt(0)\n case 'error': return writeInt(1)\n case 'revert': return writeInt(2)\n default: return value\n }\n default:\n return value\n }\n}\n\nfunction validateField (value, key, type, prefix) {\n const assert = (valid, params) => valid ? {} : { [key]: VALIDATION_MESSAGE[type](params) }\n // All fields are required\n if (value === undefined || value === null) return { [key]: 'Field is required' }\n\n // Validate type of value\n switch (type) {\n case FIELD_TYPES.amount:\n case FIELD_TYPES.int: {\n const isMinusValue = (!isNaN(value) || BigNumber.isBigNumber(value)) && BigNumber(value).lt(0)\n return assert((!isNaN(value) || BigNumber.isBigNumber(value)) && BigNumber(value).gte(0), { value, isMinusValue })\n }\n case FIELD_TYPES.id:\n if (Array.isArray(prefix)) {\n const p = prefix.find(p => p === value.split('_')[0])\n return assert(p && PREFIX_ID_TAG[value.split('_')[0]], { value, prefix })\n }\n return assert(assertedType(value, prefix) && PREFIX_ID_TAG[value.split('_')[0]] && value.split('_')[0] === prefix, { value, prefix })\n case FIELD_TYPES.binary:\n return assert(value.split('_')[0] === prefix, { prefix, value })\n case FIELD_TYPES.string:\n return assert(true)\n case FIELD_TYPES.ctVersion:\n return assert(typeof value === 'object' && Object.prototype.hasOwnProperty.call(value, 'abiVersion') && Object.prototype.hasOwnProperty.call(value, 'vmVersion'))\n case FIELD_TYPES.pointers:\n return assert(Array.isArray(value) && !value.find(e => e !== Object(e)), { value })\n default:\n return {}\n }\n}\n\nfunction transformParams (params, schema, { denomination } = {}) {\n params = schema\n .filter(([_, t]) => t === FIELD_TYPES.amount)\n .reduce((acc, [key]) => ({ ...params, [key]: formatAmount(params[key], { denomination }) }), params)\n const schemaKeys = schema.map(([k]) => k)\n return Object\n .entries(params)\n .reduce(\n (acc, [key, value]) => {\n if (schemaKeys.includes(key)) acc[key] = value\n if (['oracleTtl', 'queryTtl', 'responseTtl'].includes(key)) {\n acc[`${key}Type`] = value.type === ORACLE_TTL_TYPES.delta ? 0 : 1\n acc[`${key}Value`] = value.value\n }\n return acc\n },\n {}\n )\n}\n\n// INTERFACE\n\nfunction getOracleRelativeTtl (params, txType) {\n const ttlKey = {\n [TX_TYPE.oracleRegister]: 'oracleTtl',\n [TX_TYPE.oracleExtend]: 'oracleTtl',\n [TX_TYPE.oracleQuery]: 'queryTtl',\n [TX_TYPE.oracleResponse]: 'responseTtl'\n }[txType]\n\n if (params[ttlKey] || params[`${ttlKey}Value`]) {\n return params[`${ttlKey}Value`] || params[ttlKey].value\n }\n return 1\n}\n\n/**\n * Calculate min fee\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/index\n * @rtype (txType, { gas = 0, params }) => String\n * @param {String} txType - Transaction type\n * @param {Options} options - Options object\n * @param {String|Number} options.gas - Gas amount\n * @param {Object} options.params - Tx params\n * @return {String|Number}\n * @example calculateMinFee('spendTx', { gas, params })\n */\nexport function calculateMinFee (txType, { gas = 0, params, vsn }) {\n const multiplier = BigNumber(1e9) // 10^9 GAS_PRICE\n if (!params) return BigNumber(DEFAULT_FEE).times(multiplier).toString(10)\n\n let actualFee = buildFee(txType, { params: { ...params, fee: 0 }, multiplier, gas, vsn })\n let expected = BigNumber(0)\n\n while (!actualFee.eq(expected)) {\n actualFee = buildFee(txType, { params: { ...params, fee: actualFee }, multiplier, gas, vsn })\n expected = actualFee\n }\n return expected.toString(10)\n}\n\n/**\n * Calculate fee based on tx type and params\n * @param txType\n * @param params\n * @param gas\n * @param multiplier\n * @param vsn\n * @return {BigNumber}\n */\nfunction buildFee (txType, { params, gas = 0, multiplier, vsn }) {\n const { rlpEncoded: txWithOutFee } = buildTx({ ...params }, txType, { vsn })\n const txSize = txWithOutFee.length\n return TX_FEE_BASE_GAS(txType)\n .plus(TX_FEE_OTHER_GAS(txType)({ txSize, relativeTtl: getOracleRelativeTtl(params, txType) }))\n .times(multiplier)\n}\n\n/**\n * Calculate fee\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @rtype (fee, txType, gas = 0) => String\n * @param {String|Number} fee - fee\n * @param {String} txType - Transaction type\n * @param {Options} options - Options object\n * @param {String|Number} options.gas - Gas amount\n * @param {Object} options.params - Tx params\n * @return {String|Number}\n * @example calculateFee(null, 'spendTx', { gas, params })\n */\nexport function calculateFee (fee = 0, txType, { gas = 0, params, showWarning = true, vsn } = {}) {\n if (!params && showWarning) console.warn(`Can't build transaction fee, we will use DEFAULT_FEE(${DEFAULT_FEE})`)\n\n return fee || calculateMinFee(txType, { params, gas, vsn })\n}\n\n/**\n * Validate transaction params\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {Object} params Object with tx params\n * @param {Array} schema Transaction schema\n * @param {Array} excludeKeys Array of keys to exclude for validation\n * @return {Object} Object with validation errors\n */\nexport function validateParams (params, schema, { excludeKeys = [] }) {\n return schema\n .filter(([key]) => !excludeKeys.includes(key) && key !== 'payload')\n .reduce(\n (acc, [key, type, prefix]) => Object.assign(acc, validateField(params[key], key, type, prefix)),\n {}\n )\n}\n\n/**\n * Build binary transaction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {Object} params Object with tx params\n * @param {Array} schema Transaction schema\n * @param {Object} [options={}] options\n * @param {Array} [options.excludeKeys=[]] excludeKeys Array of keys to exclude for validation and build\n * @param {String} [options.denomination='aettos'] denomination Denomination of amounts (default: aettos)\n * @throws {Error} Validation error\n * @return {Array} Array with binary fields of transaction\n */\nexport function buildRawTx (params, schema, { excludeKeys = [], denomination = AE_AMOUNT_FORMATS.AETTOS } = {}) {\n const filteredSchema = schema.filter(([key]) => !excludeKeys.includes(key))\n\n // Transform `amount` type fields to `aettos`\n params = transformParams(params, filteredSchema, { denomination })\n // Validation\n const valid = validateParams(params, schema, { excludeKeys })\n if (Object.keys(valid).length) {\n throw new Error('Transaction build error. ' + JSON.stringify(valid))\n }\n\n return filteredSchema\n .map(([key, fieldType, prefix]) => serializeField(params[key], fieldType, prefix))\n}\n\n/**\n * Unpack binary transaction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {Array} binary Array with binary transaction field's\n * @param {Array} schema Transaction schema\n * @return {Object} Object with transaction field's\n */\nexport function unpackRawTx (binary, schema) {\n return schema\n .reduce(\n (\n acc,\n [key, fieldType, prefix],\n index\n ) => Object.assign(acc, { [key]: deserializeField(binary[index], fieldType, prefix) }),\n {}\n )\n}\n\n/**\n * Get transaction serialization/deserialization schema\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {{ vsn: String, objId: Number, type: String }}\n * @throws {Error} Schema not found error\n * @return {Object} Schema\n */\nconst getSchema = ({ vsn, objId, type }) => {\n const isDeserialize = !!objId\n const firstKey = isDeserialize ? objId : type\n const schema = isDeserialize ? TX_DESERIALIZATION_SCHEMA : TX_SERIALIZATION_SCHEMA\n\n if (!schema[firstKey]) {\n throw new Error(`Transaction ${isDeserialize ? 'deserialization' : 'serialization'} not implemented for ${isDeserialize ? 'tag ' + objId : type}`)\n }\n if (!schema[firstKey][vsn]) {\n throw new Error(`Transaction ${isDeserialize ? 'deserialization' : 'serialization'} not implemented for ${isDeserialize ? 'tag ' + objId : type} version ${vsn}`)\n }\n return schema[firstKey][vsn]\n}\n\n/**\n * Build transaction hash\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {Object} params Object with tx params\n * @param {String} type Transaction type\n * @param {Object} [options={}] options\n * @param {Object} [options.excludeKeys] excludeKeys Array of keys to exclude for validation and build\n * @param {String} [options.prefix] Prefix of transaction\n * @throws {Error} Validation error\n * @return {Object} { tx, rlpEncoded, binary } Object with tx -> Base64Check transaction hash with 'tx_' prefix, rlp encoded transaction and binary transaction\n */\nexport function buildTx (params, type, { excludeKeys = [], prefix = 'tx', vsn = VSN, denomination = AE_AMOUNT_FORMATS.AETTOS } = {}) {\n const [schema, tag] = getSchema({ type, vsn })\n const binary = buildRawTx({ ...params, VSN: vsn, tag }, schema, { excludeKeys, denomination: params.denomination || denomination }).filter(e => e !== undefined)\n\n const rlpEncoded = rlpEncode(binary)\n const tx = encode(rlpEncoded, prefix)\n\n return { tx, rlpEncoded, binary, txObject: unpackRawTx(binary, schema) }\n}\n\n/**\n * Unpack transaction hash\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {String|Buffer} encodedTx String or RLP encoded transaction array (if fromRlpBinary flag is true)\n * @param {Boolean} fromRlpBinary Unpack from RLP encoded transaction (default: false)\n * @param {String} prefix - Prefix of data\n * @return {Object} { tx, rlpEncoded, binary } Object with tx -> Object with transaction param's, rlp encoded transaction and binary transaction\n */\nexport function unpackTx (encodedTx, fromRlpBinary = false, prefix = 'tx') {\n const rlpEncoded = fromRlpBinary ? encodedTx : decode(encodedTx, prefix)\n const binary = rlpDecode(rlpEncoded)\n\n const objId = readInt(binary[0])\n const vsn = readInt(binary[1])\n const [schema] = getSchema({ objId, vsn })\n\n return { txType: OBJECT_ID_TX_TYPE[objId], tx: unpackRawTx(binary, schema), rlpEncoded, binary }\n}\n\n/**\n * Build a transaction hash\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {String | Buffer} rawTx base64 or rlp encoded transaction\n * @param {Object} options\n * @param {Boolean} options.raw\n * @return {String} Transaction hash\n */\nexport function buildTxHash (rawTx, options) {\n if (typeof rawTx === 'string' && rawTx.indexOf('tx_') !== -1) return buildHash('th', unpackTx(rawTx).rlpEncoded, options)\n return buildHash('th', rawTx, options)\n}\n\nexport default { calculateMinFee, calculateFee, unpackTx, unpackRawTx, buildTx, buildRawTx, validateParams, buildTxHash }\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/tx/builder/index.js"],"names":["BigNumber","decode","rlpDecode","encode","rlpEncode","AE_AMOUNT_FORMATS","formatAmount","hash","DEFAULT_FEE","FIELD_TYPES","OBJECT_ID_TX_TYPE","PREFIX_ID_TAG","TX_DESERIALIZATION_SCHEMA","TX_FEE_BASE_GAS","TX_FEE_OTHER_GAS","TX_SERIALIZATION_SCHEMA","TX_TYPE","VALIDATION_MESSAGE","VSN","readInt","readId","readPointers","writeId","writeInt","buildPointers","toBytes","MPTree","ORACLE_TTL_TYPES","delta","block","deserializeField","value","type","prefix","ctVersion","vm","abi","vmVersion","Buffer","from","abiVersion","amount","int","id","ids","map","bool","binary","stateTree","string","toString","payload","pointers","rlpBinary","unpackTx","rlpBinaries","v","rawBinary","hex","offChainUpdates","callStack","mptrees","t","callReturnType","sophiaCodeTypeInfo","reduce","acc","funHash","fnName","argType","outType","serializeField","signatures","split","rlpEncoded","serialize","validateField","key","assert","valid","params","undefined","isMinusValue","isNaN","isBigNumber","lt","gte","prefixes","Array","isArray","p","find","Object","prototype","hasOwnProperty","call","e","transformParams","schema","denomination","filter","_","schemaKeys","k","entries","includes","getOracleRelativeTtl","txType","ttlKey","oracleRegister","oracleExtend","oracleQuery","oracleResponse","calculateMinFee","gas","vsn","multiplier","times","actualFee","buildFee","fee","expected","eq","txWithOutFee","buildTx","txSize","length","plus","relativeTtl","innerTxSize","gaMeta","payingFor","tx","encodedTx","calculateFee","showWarning","console","warn","validateParams","excludeKeys","assign","buildRawTx","AETTOS","filteredSchema","keys","Error","JSON","stringify","fieldType","unpackRawTx","index","getSchema","objId","isDeserialize","firstKey","tag","txObject","fromRlpBinary","buildTxHash","rawTx","data","startsWith"],"mappings":"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","sourcesContent":["import BigNumber from 'bignumber.js'\nimport { decode as rlpDecode, encode as rlpEncode } from 'rlp'\nimport { AE_AMOUNT_FORMATS, formatAmount } from '../../utils/amount-formatter'\nimport { hash } from '../../utils/crypto'\n\nimport {\n DEFAULT_FEE,\n FIELD_TYPES,\n OBJECT_ID_TX_TYPE,\n PREFIX_ID_TAG,\n TX_DESERIALIZATION_SCHEMA,\n TX_FEE_BASE_GAS,\n TX_FEE_OTHER_GAS,\n TX_SERIALIZATION_SCHEMA,\n TX_TYPE,\n VALIDATION_MESSAGE,\n VSN\n} from './schema'\nimport {\n readInt,\n readId,\n readPointers,\n writeId,\n writeInt,\n buildPointers,\n encode,\n decode\n} from './helpers'\nimport { toBytes } from '../../utils/bytes'\nimport MPTree from '../../utils/mptree'\n\n/**\n * JavaScript-based Transaction builder\n * @module @aeternity/aepp-sdk/es/tx/builder\n * @export TxBuilder\n * @example import { TxBuilder } from '@aeternity/aepp-sdk'\n */\n\nconst ORACLE_TTL_TYPES = {\n delta: 'delta',\n block: 'block'\n}\n\n// SERIALIZE AND DESERIALIZE PART\nfunction deserializeField (value, type, prefix) {\n if (!value) return ''\n switch (type) {\n case FIELD_TYPES.ctVersion: {\n const [vm, , abi] = value\n return { vmVersion: readInt(Buffer.from([vm])), abiVersion: readInt(Buffer.from([abi])) }\n }\n case FIELD_TYPES.amount:\n return readInt(value)\n case FIELD_TYPES.int:\n return readInt(value)\n case FIELD_TYPES.id:\n return readId(value)\n case FIELD_TYPES.ids:\n return value.map(readId)\n case FIELD_TYPES.bool:\n return value[0] === 1\n case FIELD_TYPES.binary:\n return encode(value, prefix)\n case FIELD_TYPES.stateTree:\n return encode(value, 'ss')\n case FIELD_TYPES.string:\n return value.toString()\n case FIELD_TYPES.payload:\n return encode(value, 'ba')\n case FIELD_TYPES.pointers:\n return readPointers(value)\n case FIELD_TYPES.rlpBinary:\n return unpackTx(value, true)\n case FIELD_TYPES.rlpBinaries:\n return value.map(v => unpackTx(v, true))\n case FIELD_TYPES.rawBinary:\n return value\n case FIELD_TYPES.hex:\n return value.toString('hex')\n case FIELD_TYPES.offChainUpdates:\n return value.map(v => unpackTx(v, true))\n case FIELD_TYPES.callStack:\n // TODO: fix this\n return [readInt(value)]\n case FIELD_TYPES.mptrees:\n return value.map(t => new MPTree(t))\n case FIELD_TYPES.callReturnType:\n switch (readInt(value)) {\n case '0': return 'ok'\n case '1': return 'error'\n case '2': return 'revert'\n default: return value\n }\n case FIELD_TYPES.sophiaCodeTypeInfo:\n return value\n .reduce(\n (acc, [funHash, fnName, argType, outType]) =>\n ({ ...acc, [fnName.toString()]: { funHash, argType, outType } }),\n {}\n )\n default:\n return value\n }\n}\n\nfunction serializeField (value, type, prefix) {\n switch (type) {\n case FIELD_TYPES.amount:\n case FIELD_TYPES.int:\n return writeInt(value)\n case FIELD_TYPES.id:\n return writeId(value)\n case FIELD_TYPES.ids:\n return value.map(writeId)\n case FIELD_TYPES.bool:\n return Buffer.from([value ? 1 : 0])\n case FIELD_TYPES.binary:\n return decode(value, prefix)\n case FIELD_TYPES.stateTree:\n return decode(value, 'ss')\n case FIELD_TYPES.hex:\n return Buffer.from(value, 'hex')\n case FIELD_TYPES.signatures:\n return value.map(Buffer.from)\n case FIELD_TYPES.payload:\n return typeof value === 'string' && value.split('_')[0] === 'ba'\n ? decode(value, 'ba')\n : toBytes(value)\n case FIELD_TYPES.string:\n return toBytes(value)\n case FIELD_TYPES.pointers:\n return buildPointers(value)\n case FIELD_TYPES.rlpBinary:\n return value.rlpEncoded ?? value\n case FIELD_TYPES.mptrees:\n return value.map(t => t.serialize())\n case FIELD_TYPES.ctVersion:\n return Buffer.from([...toBytes(value.vmVersion), 0, ...toBytes(value.abiVersion)])\n case FIELD_TYPES.callReturnType:\n switch (value) {\n case 'ok': return writeInt(0)\n case 'error': return writeInt(1)\n case 'revert': return writeInt(2)\n default: return value\n }\n default:\n return value\n }\n}\n\nfunction validateField (value, key, type, prefix) {\n const assert = (valid, params) => valid ? {} : { [key]: VALIDATION_MESSAGE[type](params) }\n // All fields are required\n if (value === undefined || value === null) return { [key]: 'Field is required' }\n\n // Validate type of value\n switch (type) {\n case FIELD_TYPES.amount:\n case FIELD_TYPES.int: {\n const isMinusValue = (!isNaN(value) || BigNumber.isBigNumber(value)) && BigNumber(value).lt(0)\n return assert((!isNaN(value) || BigNumber.isBigNumber(value)) && BigNumber(value).gte(0), { value, isMinusValue })\n }\n case FIELD_TYPES.id: {\n const prefixes = Array.isArray(prefix) ? prefix : [prefix]\n const p = prefixes.find(p => p === value.split('_')[0])\n return assert(p && PREFIX_ID_TAG[value.split('_')[0]], { value, prefix })\n }\n case FIELD_TYPES.binary:\n return assert(value.split('_')[0] === prefix, { prefix, value })\n case FIELD_TYPES.string:\n return assert(true)\n case FIELD_TYPES.ctVersion:\n return assert(typeof value === 'object' && Object.prototype.hasOwnProperty.call(value, 'abiVersion') && Object.prototype.hasOwnProperty.call(value, 'vmVersion'))\n case FIELD_TYPES.pointers:\n return assert(Array.isArray(value) && !value.find(e => e !== Object(e)), { value })\n default:\n return {}\n }\n}\n\nfunction transformParams (params, schema, { denomination } = {}) {\n params = schema\n .filter(([_, t]) => t === FIELD_TYPES.amount)\n .reduce((acc, [key]) => ({ ...params, [key]: formatAmount(params[key], { denomination }) }), params)\n const schemaKeys = schema.map(([k]) => k)\n return Object\n .entries(params)\n .reduce(\n (acc, [key, value]) => {\n if (schemaKeys.includes(key)) acc[key] = value\n if (['oracleTtl', 'queryTtl', 'responseTtl'].includes(key)) {\n acc[`${key}Type`] = value.type === ORACLE_TTL_TYPES.delta ? 0 : 1\n acc[`${key}Value`] = value.value\n }\n return acc\n },\n {}\n )\n}\n\n// INTERFACE\n\nfunction getOracleRelativeTtl (params, txType) {\n const ttlKey = {\n [TX_TYPE.oracleRegister]: 'oracleTtl',\n [TX_TYPE.oracleExtend]: 'oracleTtl',\n [TX_TYPE.oracleQuery]: 'queryTtl',\n [TX_TYPE.oracleResponse]: 'responseTtl'\n }[txType]\n\n if (params[ttlKey] || params[`${ttlKey}Value`]) {\n return params[`${ttlKey}Value`] || params[ttlKey].value\n }\n return 1\n}\n\n/**\n * Calculate min fee\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/index\n * @rtype (txType, { gas = 0, params }) => String\n * @param {String} txType - Transaction type\n * @param {Options} options - Options object\n * @param {String|Number} options.gas - Gas amount\n * @param {Object} options.params - Tx params\n * @return {String|Number}\n * @example calculateMinFee('spendTx', { gas, params })\n */\nexport function calculateMinFee (txType, { gas = 0, params, vsn }) {\n const multiplier = BigNumber(1e9) // 10^9 GAS_PRICE\n if (!params) return BigNumber(DEFAULT_FEE).times(multiplier).toString(10)\n\n let actualFee = buildFee(txType, { params: { ...params, fee: 0 }, multiplier, gas, vsn })\n let expected = BigNumber(0)\n\n while (!actualFee.eq(expected)) {\n actualFee = buildFee(txType, { params: { ...params, fee: actualFee }, multiplier, gas, vsn })\n expected = actualFee\n }\n return expected.toString(10)\n}\n\n/**\n * Calculate fee based on tx type and params\n * @param txType\n * @param params\n * @param gas\n * @param multiplier\n * @param vsn\n * @return {BigNumber}\n */\nfunction buildFee (txType, { params, gas = 0, multiplier, vsn }) {\n const { rlpEncoded: txWithOutFee } = buildTx({ ...params }, txType, { vsn })\n const txSize = txWithOutFee.length\n return TX_FEE_BASE_GAS(txType)\n .plus(TX_FEE_OTHER_GAS(txType, txSize, {\n relativeTtl: getOracleRelativeTtl(params, txType),\n innerTxSize: [TX_TYPE.gaMeta, TX_TYPE.payingFor].includes(txType)\n ? params.tx.tx.encodedTx.rlpEncoded.length\n : 0\n }))\n .times(multiplier)\n}\n\n/**\n * Calculate fee\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @rtype (fee, txType, gas = 0) => String\n * @param {String|Number} fee - fee\n * @param {String} txType - Transaction type\n * @param {Options} options - Options object\n * @param {String|Number} options.gas - Gas amount\n * @param {Object} options.params - Tx params\n * @return {String|Number}\n * @example calculateFee(null, 'spendTx', { gas, params })\n */\nexport function calculateFee (fee = 0, txType, { gas = 0, params, showWarning = true, vsn } = {}) {\n if (!params && showWarning) console.warn(`Can't build transaction fee, we will use DEFAULT_FEE(${DEFAULT_FEE})`)\n\n return fee || calculateMinFee(txType, { params, gas, vsn })\n}\n\n/**\n * Validate transaction params\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {Object} params Object with tx params\n * @param {Array} schema Transaction schema\n * @param {Array} excludeKeys Array of keys to exclude for validation\n * @return {Object} Object with validation errors\n */\nexport function validateParams (params, schema, { excludeKeys = [] }) {\n return schema\n .filter(([key]) => !excludeKeys.includes(key) && key !== 'payload')\n .reduce(\n (acc, [key, type, prefix]) => Object.assign(acc, validateField(params[key], key, type, prefix)),\n {}\n )\n}\n\n/**\n * Build binary transaction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {Object} params Object with tx params\n * @param {Array} schema Transaction schema\n * @param {Object} [options={}] options\n * @param {Array} [options.excludeKeys=[]] excludeKeys Array of keys to exclude for validation and build\n * @param {String} [options.denomination='aettos'] denomination Denomination of amounts (default: aettos)\n * @throws {Error} Validation error\n * @return {Array} Array with binary fields of transaction\n */\nexport function buildRawTx (params, schema, { excludeKeys = [], denomination = AE_AMOUNT_FORMATS.AETTOS } = {}) {\n const filteredSchema = schema.filter(([key]) => !excludeKeys.includes(key))\n\n // Transform `amount` type fields to `aettos`\n params = transformParams(params, filteredSchema, { denomination })\n // Validation\n const valid = validateParams(params, schema, { excludeKeys })\n if (Object.keys(valid).length) {\n throw new Error('Transaction build error. ' + JSON.stringify(valid))\n }\n\n return filteredSchema\n .map(([key, fieldType, prefix]) => serializeField(params[key], fieldType, prefix))\n}\n\n/**\n * Unpack binary transaction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {Array} binary Array with binary transaction field's\n * @param {Array} schema Transaction schema\n * @return {Object} Object with transaction field's\n */\nexport function unpackRawTx (binary, schema) {\n return schema\n .reduce(\n (\n acc,\n [key, fieldType, prefix],\n index\n ) => Object.assign(acc, { [key]: deserializeField(binary[index], fieldType, prefix) }),\n {}\n )\n}\n\n/**\n * Get transaction serialization/deserialization schema\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {{ vsn: String, objId: Number, type: String }}\n * @throws {Error} Schema not found error\n * @return {Object} Schema\n */\nconst getSchema = ({ vsn, objId, type }) => {\n const isDeserialize = !!objId\n const firstKey = isDeserialize ? objId : type\n const schema = isDeserialize ? TX_DESERIALIZATION_SCHEMA : TX_SERIALIZATION_SCHEMA\n\n if (!schema[firstKey]) {\n throw new Error(`Transaction ${isDeserialize ? 'deserialization' : 'serialization'} not implemented for ${isDeserialize ? 'tag ' + objId : type}`)\n }\n if (!schema[firstKey][vsn]) {\n throw new Error(`Transaction ${isDeserialize ? 'deserialization' : 'serialization'} not implemented for ${isDeserialize ? 'tag ' + objId : type} version ${vsn}`)\n }\n return schema[firstKey][vsn]\n}\n\n/**\n * Build transaction hash\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {Object} params Object with tx params\n * @param {String} type Transaction type\n * @param {Object} [options={}] options\n * @param {Object} [options.excludeKeys] excludeKeys Array of keys to exclude for validation and build\n * @param {String} [options.prefix] Prefix of transaction\n * @throws {Error} Validation error\n * @return {Object} { tx, rlpEncoded, binary } Object with tx -> Base64Check transaction hash with 'tx_' prefix, rlp encoded transaction and binary transaction\n */\nexport function buildTx (params, type, { excludeKeys = [], prefix = 'tx', vsn = VSN, denomination = AE_AMOUNT_FORMATS.AETTOS } = {}) {\n const [schema, tag] = getSchema({ type, vsn })\n const binary = buildRawTx({ ...params, VSN: vsn, tag }, schema, { excludeKeys, denomination: params.denomination || denomination }).filter(e => e !== undefined)\n\n const rlpEncoded = rlpEncode(binary)\n const tx = encode(rlpEncoded, prefix)\n\n return { tx, rlpEncoded, binary, txObject: unpackRawTx(binary, schema) }\n}\n\n/**\n * Unpack transaction hash\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {String|Buffer} encodedTx String or RLP encoded transaction array (if fromRlpBinary flag is true)\n * @param {Boolean} fromRlpBinary Unpack from RLP encoded transaction (default: false)\n * @param {String} prefix - Prefix of data\n * @return {Object} { tx, rlpEncoded, binary } Object with tx -> Object with transaction param's, rlp encoded transaction and binary transaction\n */\nexport function unpackTx (encodedTx, fromRlpBinary = false, prefix = 'tx') {\n const rlpEncoded = fromRlpBinary ? encodedTx : decode(encodedTx, prefix)\n const binary = rlpDecode(rlpEncoded)\n\n const objId = readInt(binary[0])\n const vsn = readInt(binary[1])\n const [schema] = getSchema({ objId, vsn })\n\n return { txType: OBJECT_ID_TX_TYPE[objId], tx: unpackRawTx(binary, schema), rlpEncoded, binary }\n}\n\n/**\n * Build a transaction hash\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {String | Buffer} rawTx base64 or rlp encoded transaction\n * @return {String} Transaction hash\n */\nexport function buildTxHash (rawTx) {\n const data = typeof rawTx === 'string' && rawTx.startsWith('tx_') ? decode(rawTx, 'tx') : rawTx\n return encode(hash(data), 'th')\n}\n\nexport default { calculateMinFee, calculateFee, unpackTx, unpackRawTx, buildTx, buildRawTx, validateParams, buildTxHash }\n"],"file":"index.js"}
|