@aeternity/aepp-sdk 9.0.1 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (284) hide show
  1. package/README.md +15 -14
  2. package/dist/aepp-sdk.browser-script.js +1 -1
  3. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +7 -36
  4. package/dist/aepp-sdk.browser-script.js.map +1 -1
  5. package/dist/aepp-sdk.browser.js +1 -1
  6. package/dist/aepp-sdk.browser.js.map +1 -1
  7. package/dist/aepp-sdk.js +1 -1
  8. package/dist/aepp-sdk.js.map +1 -1
  9. package/es/account/base.mjs +179 -0
  10. package/es/account/base.mjs.map +1 -0
  11. package/es/account/memory.mjs +99 -0
  12. package/es/account/memory.mjs.map +1 -0
  13. package/es/account/multiple.mjs +179 -0
  14. package/es/account/multiple.mjs.map +1 -0
  15. package/es/ae/aens.mjs +404 -0
  16. package/es/ae/aens.mjs.map +1 -0
  17. package/es/ae/{aepp.js → aepp.mjs} +9 -9
  18. package/es/ae/aepp.mjs.map +1 -0
  19. package/es/ae/contract.mjs +159 -0
  20. package/es/ae/contract.mjs.map +1 -0
  21. package/es/ae/index.mjs +207 -0
  22. package/es/ae/index.mjs.map +1 -0
  23. package/es/ae/oracle.mjs +339 -0
  24. package/es/ae/oracle.mjs.map +1 -0
  25. package/es/ae/{universal.js → universal.mjs} +10 -10
  26. package/es/ae/universal.mjs.map +1 -0
  27. package/es/ae/{wallet.js → wallet.mjs} +10 -10
  28. package/es/ae/wallet.mjs.map +1 -0
  29. package/es/aepp-wallet-communication/schema.d.ts +74 -0
  30. package/es/bignumber.d.ts +1 -7
  31. package/es/chain/{index.js → index.mjs} +29 -9
  32. package/es/chain/index.mjs.map +1 -0
  33. package/es/chain/node.mjs +442 -0
  34. package/es/chain/node.mjs.map +1 -0
  35. package/es/channel/handlers.mjs +1110 -0
  36. package/es/channel/handlers.mjs.map +1 -0
  37. package/es/channel/{index.js → index.mjs} +245 -472
  38. package/es/channel/index.mjs.map +1 -0
  39. package/es/channel/internal.mjs +283 -0
  40. package/es/channel/internal.mjs.map +1 -0
  41. package/es/contract/aci.mjs +477 -0
  42. package/es/contract/aci.mjs.map +1 -0
  43. package/es/contract/compiler.mjs +115 -0
  44. package/es/contract/compiler.mjs.map +1 -0
  45. package/es/contract/ga/helpers.mjs +30 -0
  46. package/es/contract/ga/helpers.mjs.map +1 -0
  47. package/es/contract/ga/index.mjs +178 -0
  48. package/es/contract/ga/index.mjs.map +1 -0
  49. package/es/errors.d.ts +284 -0
  50. package/es/index.mjs +57 -0
  51. package/es/index.mjs.map +1 -0
  52. package/es/node-pool/index.mjs +188 -0
  53. package/es/node-pool/index.mjs.map +1 -0
  54. package/es/node.mjs +133 -0
  55. package/es/node.mjs.map +1 -0
  56. package/es/other.d.ts +1 -1
  57. package/es/tx/builder/field-types.mjs +74 -0
  58. package/es/tx/builder/field-types.mjs.map +1 -0
  59. package/es/tx/builder/helpers.mjs +363 -0
  60. package/es/tx/builder/helpers.mjs.map +1 -0
  61. package/es/tx/builder/index.mjs +606 -0
  62. package/es/tx/builder/index.mjs.map +1 -0
  63. package/es/tx/builder/schema.mjs +760 -0
  64. package/es/tx/builder/schema.mjs.map +1 -0
  65. package/es/tx/{index.js → index.mjs} +107 -15
  66. package/es/tx/index.mjs.map +1 -0
  67. package/es/tx/tx-object.mjs +283 -0
  68. package/es/tx/tx-object.mjs.map +1 -0
  69. package/es/tx/tx.mjs +938 -0
  70. package/es/tx/tx.mjs.map +1 -0
  71. package/es/tx/validator.mjs +247 -0
  72. package/es/tx/validator.mjs.map +1 -0
  73. package/es/typings/blakejs/index.d.mjs +2 -0
  74. package/es/typings/blakejs/{index.d.js.map → index.d.mjs.map} +1 -1
  75. package/es/utils/aepp-wallet-communication/connection/{browser-runtime.js → browser-runtime.mjs} +27 -29
  76. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +1 -0
  77. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs +183 -0
  78. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +1 -0
  79. package/es/utils/aepp-wallet-communication/connection/{index.js → index.mjs} +7 -3
  80. package/es/utils/aepp-wallet-communication/connection/index.mjs.map +1 -0
  81. package/es/utils/aepp-wallet-communication/{content-script-bridge.js → content-script-bridge.mjs} +29 -23
  82. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +1 -0
  83. package/es/utils/aepp-wallet-communication/helpers.mjs +92 -0
  84. package/es/utils/aepp-wallet-communication/helpers.mjs.map +1 -0
  85. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +375 -0
  86. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +1 -0
  87. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs +275 -0
  88. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +1 -0
  89. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs +541 -0
  90. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +1 -0
  91. package/es/utils/aepp-wallet-communication/schema.mjs +102 -0
  92. package/es/utils/aepp-wallet-communication/schema.mjs.map +1 -0
  93. package/es/utils/aepp-wallet-communication/wallet-detector.mjs +110 -0
  94. package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
  95. package/es/utils/amount-formatter.mjs +139 -0
  96. package/es/utils/amount-formatter.mjs.map +1 -0
  97. package/es/utils/async-init.mjs +64 -0
  98. package/es/utils/async-init.mjs.map +1 -0
  99. package/es/utils/bignumber.mjs +21 -0
  100. package/es/utils/bignumber.mjs.map +1 -0
  101. package/es/utils/{bytes.js → bytes.mjs} +16 -12
  102. package/es/utils/bytes.mjs.map +1 -0
  103. package/es/utils/{crypto-ts.js → crypto-ts.mjs} +11 -3
  104. package/es/utils/crypto-ts.mjs.map +1 -0
  105. package/es/utils/crypto.mjs +239 -0
  106. package/es/utils/crypto.mjs.map +1 -0
  107. package/es/utils/errors.mjs +689 -0
  108. package/es/utils/errors.mjs.map +1 -0
  109. package/es/utils/hd-wallet.mjs +111 -0
  110. package/es/utils/hd-wallet.mjs.map +1 -0
  111. package/es/utils/json-big.mjs +45 -0
  112. package/es/utils/json-big.mjs.map +1 -0
  113. package/es/utils/keystore.mjs +240 -0
  114. package/es/utils/keystore.mjs.map +1 -0
  115. package/es/utils/mptree.mjs +161 -0
  116. package/es/utils/mptree.mjs.map +1 -0
  117. package/es/utils/other.mjs +43 -0
  118. package/es/utils/other.mjs.map +1 -0
  119. package/es/utils/semver-satisfies.mjs +16 -0
  120. package/es/utils/semver-satisfies.mjs.map +1 -0
  121. package/es/utils/{string.js → string.mjs} +5 -14
  122. package/es/utils/string.mjs.map +1 -0
  123. package/es/utils/swagger.mjs +164 -0
  124. package/es/utils/swagger.mjs.map +1 -0
  125. package/package.json +55 -62
  126. package/src/account/base.js +3 -1
  127. package/src/account/memory.js +13 -8
  128. package/src/account/multiple.js +31 -22
  129. package/src/ae/aens.js +75 -77
  130. package/src/ae/aepp.js +2 -2
  131. package/src/ae/contract.js +27 -291
  132. package/src/ae/index.js +9 -7
  133. package/src/ae/oracle.js +51 -28
  134. package/src/ae/universal.js +4 -2
  135. package/src/ae/wallet.js +2 -2
  136. package/src/chain/index.js +29 -6
  137. package/src/chain/node.js +95 -67
  138. package/src/channel/handlers.js +30 -21
  139. package/src/channel/index.js +44 -20
  140. package/src/channel/internal.js +30 -24
  141. package/src/contract/aci.js +376 -0
  142. package/src/contract/compiler.js +41 -91
  143. package/src/contract/ga/helpers.js +10 -13
  144. package/src/contract/ga/index.js +42 -33
  145. package/src/index.js +9 -10
  146. package/src/node-pool/index.js +29 -17
  147. package/src/node.js +33 -36
  148. package/src/tx/builder/field-types.js +61 -0
  149. package/src/tx/builder/helpers.js +126 -84
  150. package/src/tx/builder/index.js +83 -41
  151. package/src/tx/builder/schema.js +50 -40
  152. package/src/tx/index.js +101 -12
  153. package/src/tx/tx-object.js +35 -15
  154. package/src/tx/tx.js +232 -153
  155. package/src/tx/validator.js +34 -12
  156. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +11 -5
  157. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +35 -13
  158. package/src/utils/aepp-wallet-communication/connection/index.js +2 -1
  159. package/src/utils/aepp-wallet-communication/content-script-bridge.js +14 -7
  160. package/src/utils/aepp-wallet-communication/helpers.js +6 -14
  161. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +107 -60
  162. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +24 -11
  163. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +98 -56
  164. package/src/utils/aepp-wallet-communication/schema.ts +80 -0
  165. package/src/utils/aepp-wallet-communication/wallet-detector.js +6 -2
  166. package/src/utils/amount-formatter.ts +4 -3
  167. package/src/utils/async-init.js +10 -6
  168. package/src/utils/bignumber.ts +3 -10
  169. package/src/utils/bytes.ts +3 -2
  170. package/src/utils/crypto-ts.ts +2 -2
  171. package/src/utils/crypto.js +10 -144
  172. package/src/utils/errors.ts +683 -0
  173. package/src/utils/hd-wallet.js +11 -26
  174. package/src/utils/keystore.js +57 -53
  175. package/src/utils/mptree.ts +12 -6
  176. package/src/utils/other.ts +1 -1
  177. package/src/utils/semver-satisfies.ts +1 -1
  178. package/src/utils/swagger.js +75 -45
  179. package/es/account/base.js +0 -259
  180. package/es/account/base.js.map +0 -1
  181. package/es/account/memory.js +0 -86
  182. package/es/account/memory.js.map +0 -1
  183. package/es/account/multiple.js +0 -267
  184. package/es/account/multiple.js.map +0 -1
  185. package/es/ae/aens.js +0 -829
  186. package/es/ae/aens.js.map +0 -1
  187. package/es/ae/aepp.js.map +0 -1
  188. package/es/ae/contract.js +0 -985
  189. package/es/ae/contract.js.map +0 -1
  190. package/es/ae/index.js +0 -442
  191. package/es/ae/index.js.map +0 -1
  192. package/es/ae/oracle.js +0 -690
  193. package/es/ae/oracle.js.map +0 -1
  194. package/es/ae/universal.js.map +0 -1
  195. package/es/ae/wallet.js.map +0 -1
  196. package/es/chain/index.js.map +0 -1
  197. package/es/chain/node.js +0 -1119
  198. package/es/chain/node.js.map +0 -1
  199. package/es/channel/handlers.js +0 -1601
  200. package/es/channel/handlers.js.map +0 -1
  201. package/es/channel/index.js.map +0 -1
  202. package/es/channel/internal.js +0 -438
  203. package/es/channel/internal.js.map +0 -1
  204. package/es/contract/aci/helpers.js +0 -298
  205. package/es/contract/aci/helpers.js.map +0 -1
  206. package/es/contract/aci/index.js +0 -517
  207. package/es/contract/aci/index.js.map +0 -1
  208. package/es/contract/aci/transformation.js +0 -742
  209. package/es/contract/aci/transformation.js.map +0 -1
  210. package/es/contract/compiler.js +0 -316
  211. package/es/contract/compiler.js.map +0 -1
  212. package/es/contract/ga/helpers.js +0 -120
  213. package/es/contract/ga/helpers.js.map +0 -1
  214. package/es/contract/ga/index.js +0 -307
  215. package/es/contract/ga/index.js.map +0 -1
  216. package/es/contract/index.js +0 -158
  217. package/es/contract/index.js.map +0 -1
  218. package/es/index.js +0 -57
  219. package/es/index.js.map +0 -1
  220. package/es/node-pool/index.js +0 -204
  221. package/es/node-pool/index.js.map +0 -1
  222. package/es/node.js +0 -228
  223. package/es/node.js.map +0 -1
  224. package/es/tx/builder/helpers.js +0 -355
  225. package/es/tx/builder/helpers.js.map +0 -1
  226. package/es/tx/builder/index.js +0 -686
  227. package/es/tx/builder/index.js.map +0 -1
  228. package/es/tx/builder/schema.js +0 -695
  229. package/es/tx/builder/schema.js.map +0 -1
  230. package/es/tx/index.js.map +0 -1
  231. package/es/tx/tx-object.js +0 -297
  232. package/es/tx/tx-object.js.map +0 -1
  233. package/es/tx/tx.js +0 -1757
  234. package/es/tx/tx.js.map +0 -1
  235. package/es/tx/validator.js +0 -344
  236. package/es/tx/validator.js.map +0 -1
  237. package/es/typings/blakejs/index.d.js +0 -2
  238. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +0 -1
  239. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -211
  240. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +0 -1
  241. package/es/utils/aepp-wallet-communication/connection/index.js.map +0 -1
  242. package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +0 -1
  243. package/es/utils/aepp-wallet-communication/helpers.js +0 -148
  244. package/es/utils/aepp-wallet-communication/helpers.js.map +0 -1
  245. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -652
  246. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +0 -1
  247. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -285
  248. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +0 -1
  249. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -763
  250. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +0 -1
  251. package/es/utils/aepp-wallet-communication/schema.js +0 -103
  252. package/es/utils/aepp-wallet-communication/schema.js.map +0 -1
  253. package/es/utils/aepp-wallet-communication/wallet-detector.js +0 -135
  254. package/es/utils/aepp-wallet-communication/wallet-detector.js.map +0 -1
  255. package/es/utils/amount-formatter.js +0 -152
  256. package/es/utils/amount-formatter.js.map +0 -1
  257. package/es/utils/async-init.js +0 -103
  258. package/es/utils/async-init.js.map +0 -1
  259. package/es/utils/bignumber.js +0 -36
  260. package/es/utils/bignumber.js.map +0 -1
  261. package/es/utils/bytes.js.map +0 -1
  262. package/es/utils/crypto-ts.js.map +0 -1
  263. package/es/utils/crypto.js +0 -358
  264. package/es/utils/crypto.js.map +0 -1
  265. package/es/utils/hd-wallet.js +0 -148
  266. package/es/utils/hd-wallet.js.map +0 -1
  267. package/es/utils/json-big.js +0 -78
  268. package/es/utils/json-big.js.map +0 -1
  269. package/es/utils/keystore.js +0 -393
  270. package/es/utils/keystore.js.map +0 -1
  271. package/es/utils/mptree.js +0 -198
  272. package/es/utils/mptree.js.map +0 -1
  273. package/es/utils/other.js +0 -93
  274. package/es/utils/other.js.map +0 -1
  275. package/es/utils/semver-satisfies.js +0 -35
  276. package/es/utils/semver-satisfies.js.map +0 -1
  277. package/es/utils/string.js.map +0 -1
  278. package/es/utils/swagger.js +0 -269
  279. package/es/utils/swagger.js.map +0 -1
  280. package/src/contract/aci/helpers.js +0 -140
  281. package/src/contract/aci/index.js +0 -191
  282. package/src/contract/aci/transformation.js +0 -464
  283. package/src/contract/index.js +0 -159
  284. package/src/utils/aepp-wallet-communication/schema.js +0 -110
package/es/tx/tx.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/tx/tx.js"],"names":["ChainNode","Tx","buildTx","calculateFee","unpackTx","ABI_VERSIONS","MIN_GAS_PRICE","PROTOCOL_VM_ABI","TX_TYPE","TX_TTL","buildContractId","TxObject","spendTx","senderId","recipientId","amount","payload","prepareTxParams","spend","fee","ttl","nonce","nativeMode","tx","params","type","encodedTx","api","postSpend","namePreclaimTx","accountId","commitmentId","namePreClaim","postNamePreclaim","nameClaimTx","name","nameSalt","vsn","nameClaim","postNameClaim","nameTransferTx","nameId","nameTransfer","postNameTransfer","nameUpdateTx","nameTtl","pointers","clientTtl","nameUpdate","postNameUpdate","nameRevokeTx","nameRevoke","postNameRevoke","contractCreateTx","ownerId","code","vmVersion","abiVersion","deposit","gas","gasPrice","callData","ctVersion","getVmVersion","contractCreate","contractId","postContractCreate","contractCallTx","callerId","contractCall","postContractCall","oracleRegisterTx","queryFormat","responseFormat","queryFee","oracleTtl","NO_ABI","oracleRegister","postOracleRegister","oracleExtendTx","oracleId","oracleExtend","postOracleExtend","oraclePostQueryTx","responseTtl","query","queryTtl","oracleQuery","postOracleQuery","oracleRespondTx","queryId","response","oracleResponse","postOracleRespond","channelCloseSoloTx","channelId","fromId","poi","channelCloseSolo","postChannelCloseSolo","channelSlashTx","channelSlash","postChannelSlash","channelSettleTx","initiatorAmountFinal","responderAmountFinal","channelSettle","postChannelSettle","channelSnapshotSoloTx","channelSnapshotSolo","postChannelSnapshotSolo","gaAttachTx","authFun","gaAttach","payingForTx","payerId","args","payingFor","txType","getNodeInfo","consensusProtocolVersion","supportedProtocol","Error","protocolForTX","length","calculateTtl","relative","getCurrentKeyBlock","height","getAccountNonce","getAccountByPubkey","accountNonce","n","t","f","absoluteTtl","getAccount","e","account","call","showWarning","Transaction","compose","init","props","methods"],"mappings":"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","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Transaction module\n * @module @aeternity/aepp-sdk/es/tx/tx\n * @export Transaction\n * @example import { Transaction } from '@aeternity/aepp-sdk'\n */\n\nimport * as R from 'ramda'\n\nimport ChainNode from '../chain/node'\nimport Tx from './'\n\nimport { buildTx, calculateFee, unpackTx } from './builder'\nimport { ABI_VERSIONS, MIN_GAS_PRICE, PROTOCOL_VM_ABI, TX_TYPE, TX_TTL } from './builder/schema'\nimport { buildContractId } from './builder/helpers'\nimport { TxObject } from './tx-object'\n\nasync function spendTx ({ senderId, recipientId, amount, payload = '' }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.spend, { senderId, ...R.head(arguments), payload })\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: R.merge(R.head(arguments), {\n recipientId,\n senderId,\n nonce,\n ttl,\n payload\n }),\n type: TX_TYPE.spend\n }).encodedTx\n }\n : await this.api.postSpend(R.merge(R.head(arguments), {\n amount: parseInt(amount),\n recipientId,\n senderId,\n nonce,\n ttl,\n fee: parseInt(fee),\n payload\n }))\n\n return tx\n}\n\nasync function namePreclaimTx ({ accountId, commitmentId }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.namePreClaim, { senderId: accountId, ...R.head(arguments) })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: R.merge(R.head(arguments), { nonce, ttl, fee }),\n type: TX_TYPE.namePreClaim\n }).encodedTx\n }\n : await this.api.postNamePreclaim(R.merge(R.head(arguments), { nonce, ttl, fee: parseInt(fee) }))\n\n return tx\n}\n\nasync function nameClaimTx ({ accountId, name, nameSalt, vsn = 2 }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.nameClaim, { senderId: accountId, ...R.head(arguments), vsn })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: R.merge(R.head(arguments), { nonce, ttl, fee, vsn }),\n type: TX_TYPE.nameClaim\n }).encodedTx\n }\n : await this.api.postNameClaim(R.merge(R.head(arguments), { nonce, ttl, fee: parseInt(fee) }))\n\n return tx\n}\n\nasync function nameTransferTx ({ accountId, nameId, recipientId }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.nameTransfer, { senderId: accountId, ...R.head(arguments) })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: R.merge(R.head(arguments), { recipientId, nonce, ttl, fee }),\n type: TX_TYPE.nameTransfer\n }).encodedTx\n }\n : await this.api.postNameTransfer(R.merge(R.head(arguments), { recipientId, nonce, ttl, fee: parseInt(fee) }))\n\n return tx\n}\n\nasync function nameUpdateTx ({ accountId, nameId, nameTtl, pointers, clientTtl }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.nameUpdate, { senderId: accountId, ...R.head(arguments) })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: R.merge(R.head(arguments), { nonce, ttl, fee }),\n type: TX_TYPE.nameUpdate\n }).encodedTx\n }\n : await this.api.postNameUpdate(R.merge(R.head(arguments), { nonce, ttl, fee: parseInt(fee) }))\n\n return tx\n}\n\nasync function nameRevokeTx ({ accountId, nameId }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.nameRevoke, { senderId: accountId, ...R.head(arguments) })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: R.merge(R.head(arguments), { nonce, ttl, fee }),\n type: TX_TYPE.nameRevoke\n }).encodedTx\n }\n : await this.api.postNameRevoke(R.merge(R.head(arguments), { nonce, ttl, fee: parseInt(fee) }))\n\n return tx\n}\n\nasync function contractCreateTx ({ ownerId, code, vmVersion, abiVersion, deposit, amount, gas, gasPrice = MIN_GAS_PRICE, callData }) {\n // Get VM_ABI version\n const ctVersion = this.getVmVersion(TX_TYPE.contractCreate, R.head(arguments))\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.contractCreate, { senderId: ownerId, ...R.head(arguments), ctVersion, gasPrice })\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n return this.nativeMode\n ? {\n tx: TxObject({\n params: R.merge(R.head(arguments), { nonce, ttl, fee, ctVersion, gasPrice }),\n type: TX_TYPE.contractCreate\n }).encodedTx,\n contractId: buildContractId(ownerId, nonce)\n }\n : this.api.postContractCreate(R.merge(R.head(arguments), { nonce, ttl, fee: parseInt(fee), gas: parseInt(gas), gasPrice, vmVersion: ctVersion.vmVersion, abiVersion: ctVersion.abiVersion }))\n}\n\nasync function contractCallTx ({ callerId, contractId, abiVersion, amount, gas, gasPrice = MIN_GAS_PRICE, callData }) {\n const ctVersion = this.getVmVersion(TX_TYPE.contractCall, R.head(arguments))\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.contractCall, { senderId: callerId, ...R.head(arguments), gasPrice, abiVersion: ctVersion.abiVersion })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: R.merge(R.head(arguments), { nonce, ttl, fee, abiVersion: ctVersion.abiVersion, gasPrice }),\n type: TX_TYPE.contractCall\n }).encodedTx\n }\n : await this.api.postContractCall(R.merge(R.head(arguments), {\n nonce,\n ttl,\n fee: parseInt(fee),\n gas: parseInt(gas),\n gasPrice,\n abiVersion: ctVersion.abiVersion\n }))\n\n return tx\n}\n\nasync function oracleRegisterTx ({ accountId, queryFormat, responseFormat, queryFee, oracleTtl, abiVersion = ABI_VERSIONS.NO_ABI }) {\n // const { abiVersion: abi } = this.getVmVersion(TX_TYPE.oracleRegister, R.head(arguments))\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.oracleRegister, { senderId: accountId, ...R.head(arguments), abiVersion })\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: {\n accountId,\n queryFee,\n abiVersion,\n fee,\n oracleTtl,\n nonce,\n ttl,\n queryFormat,\n responseFormat\n },\n type: TX_TYPE.oracleRegister\n }).encodedTx\n }\n : await this.api.postOracleRegister({\n accountId,\n queryFee,\n abiVersion,\n fee: parseInt(fee),\n oracleTtl,\n nonce,\n ttl,\n queryFormat,\n responseFormat\n })\n\n return tx\n}\n\nasync function oracleExtendTx ({ oracleId, callerId, oracleTtl }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.oracleExtend, { senderId: callerId, ...R.head(arguments) })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { oracleId, fee, oracleTtl, nonce, ttl },\n type: TX_TYPE.oracleExtend\n }).encodedTx\n }\n : await this.api.postOracleExtend({ oracleId, fee: parseInt(fee), oracleTtl, nonce, ttl })\n\n return tx\n}\n\nasync function oraclePostQueryTx ({ oracleId, responseTtl, query, queryTtl, queryFee, senderId }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.oracleQuery, { senderId, ...R.head(arguments) })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { oracleId, responseTtl, query, queryTtl, fee, queryFee, ttl, nonce, senderId },\n type: TX_TYPE.oracleQuery\n }).encodedTx\n }\n : await this.api.postOracleQuery({\n oracleId,\n responseTtl,\n query,\n queryTtl,\n fee: parseInt(fee),\n queryFee,\n ttl,\n nonce,\n senderId\n })\n\n return tx\n}\n\nasync function oracleRespondTx ({ oracleId, callerId, responseTtl, queryId, response }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.oracleResponse, { senderId: callerId, ...R.head(arguments) })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { oracleId, responseTtl, queryId, response, fee, ttl, nonce },\n type: TX_TYPE.oracleResponse\n }).encodedTx\n }\n : await this.api.postOracleRespond({ oracleId, responseTtl, queryId, response, fee: parseInt(fee), ttl, nonce })\n return tx\n}\n\nasync function channelCloseSoloTx ({ channelId, fromId, payload, poi }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.channelCloseSolo, { senderId: fromId, ...R.head(arguments), payload })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? buildTx(R.merge(R.head(arguments), {\n channelId,\n fromId,\n payload,\n poi,\n ttl,\n fee,\n nonce\n }), TX_TYPE.channelCloseSolo)\n : await this.api.postChannelCloseSolo(R.merge(R.head(arguments), {\n channelId,\n fromId,\n payload,\n poi,\n ttl,\n fee: parseInt(fee),\n nonce\n }))\n\n return tx\n}\n\nasync function channelSlashTx ({ channelId, fromId, payload, poi }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.channelSlash, { senderId: fromId, ...R.head(arguments), payload })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? buildTx(R.merge(R.head(arguments), {\n channelId,\n fromId,\n payload,\n poi,\n ttl,\n fee,\n nonce\n }), TX_TYPE.channelSlash)\n : await this.api.postChannelSlash(R.merge(R.head(arguments), {\n channelId,\n fromId,\n payload,\n poi,\n ttl,\n fee: parseInt(fee),\n nonce\n }))\n\n return tx\n}\n\nasync function channelSettleTx ({ channelId, fromId, initiatorAmountFinal, responderAmountFinal }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.channelSettle, { senderId: fromId, ...R.head(arguments) })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? buildTx(R.merge(R.head(arguments), {\n channelId,\n fromId,\n initiatorAmountFinal,\n responderAmountFinal,\n ttl,\n fee,\n nonce\n }), TX_TYPE.channelSettle)\n : await this.api.postChannelSettle(R.merge(R.head(arguments), {\n channelId,\n fromId,\n initiatorAmountFinal: parseInt(initiatorAmountFinal),\n responderAmountFinal: parseInt(responderAmountFinal),\n ttl,\n fee: parseInt(fee),\n nonce\n }))\n\n return tx\n}\n\nasync function channelSnapshotSoloTx ({ channelId, fromId, payload }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.channelSnapshotSolo, { senderId: fromId, ...R.head(arguments), payload })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? buildTx(R.merge(R.head(arguments), {\n channelId,\n fromId,\n payload,\n ttl,\n fee,\n nonce\n }), TX_TYPE.channelSnapshotSolo)\n : await this.api.postChannelSnapshotSolo(R.merge(R.head(arguments), {\n channelId,\n fromId,\n payload,\n ttl,\n fee: parseInt(fee),\n nonce\n }))\n\n return tx\n}\n\nasync function gaAttachTx ({ ownerId, code, vmVersion, abiVersion, authFun, gas, gasPrice = MIN_GAS_PRICE, callData }) {\n // Get VM_ABI version\n const ctVersion = this.getVmVersion(TX_TYPE.contractCreate, R.head(arguments))\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.gaAttach, { senderId: ownerId, ...R.head(arguments), ctVersion, gasPrice })\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n return {\n tx: TxObject({\n params: R.merge(R.head(arguments), { nonce, ttl, fee, ctVersion, gasPrice }),\n type: TX_TYPE.gaAttach\n }).encodedTx,\n contractId: buildContractId(ownerId, nonce)\n }\n}\n\nasync function payingForTx ({ tx, payerId, ...args }) {\n const params = { tx: unpackTx(tx), payerId }\n const { fee, nonce } = await this.prepareTxParams(TX_TYPE.payingFor, {\n ...params, ...args, senderId: payerId\n })\n return buildTx({ ...params, ...args, fee, nonce }, TX_TYPE.payingFor).tx\n}\n\n/**\n * Validated vm/abi version or get default based on transaction type and NODE version\n *\n * @param {string} txType Type of transaction\n * @param {object} vmAbi Object with vm and abi version fields\n * @return {object} Object with vm/abi version ({ vmVersion: number, abiVersion: number })\n */\nfunction getVmVersion (txType, { vmVersion, abiVersion } = {}) {\n const { consensusProtocolVersion } = this.getNodeInfo()\n const supportedProtocol = PROTOCOL_VM_ABI[consensusProtocolVersion]\n if (!supportedProtocol) throw new Error('Not supported consensus protocol version')\n const protocolForTX = supportedProtocol[txType]\n if (!protocolForTX) throw new Error('Not supported tx type')\n\n const ctVersion = {\n abiVersion: abiVersion || protocolForTX.abiVersion[0],\n vmVersion: vmVersion || protocolForTX.vmVersion[0]\n }\n if (protocolForTX.vmVersion.length && !R.contains(ctVersion.vmVersion, protocolForTX.vmVersion)) throw new Error(`VM VERSION ${ctVersion.vmVersion} do not support by this node. Supported: [${protocolForTX.vmVersion}]`)\n if (protocolForTX.abiVersion.length && !R.contains(ctVersion.abiVersion, protocolForTX.abiVersion)) throw new Error(`ABI VERSION ${ctVersion.abiVersion} do not support by this node. Supported: [${protocolForTX.abiVersion}]`)\n\n return ctVersion\n}\n\n/**\n * Compute the absolute ttl by adding the ttl to the current height of the chain\n *\n * @param {number} ttl\n * @param {boolean} relative ttl is absolute or relative(default: true(relative))\n * @return {number} Absolute Ttl\n */\nasync function calculateTtl (ttl = TX_TTL, relative = true) {\n if (ttl === 0) return 0\n if (ttl < 0) throw new Error('ttl must be greater than 0')\n\n if (relative) {\n const { height } = await this.api.getCurrentKeyBlock()\n return +(height) + ttl\n }\n return ttl\n}\n\n/**\n * Get the next nonce to be used for a transaction for an account\n *\n * @param {string} accountId\n * @param {number} nonce\n * @return {number} Next Nonce\n */\nasync function getAccountNonce (accountId, nonce) {\n if (nonce) return nonce\n const { nonce: accountNonce } = await this.api.getAccountByPubkey(accountId).catch(() => ({ nonce: 0 }))\n return accountNonce + 1\n}\n\n/**\n * Calculate fee, get absolute ttl (ttl + height), get account nonce\n *\n * @param {String} txType Type of transaction\n * @param {Object} params Object which contains all tx data\n * @return {Object} { ttl, nonce, fee } Object with account nonce, absolute ttl and transaction fee\n */\nasync function prepareTxParams (txType, { senderId, nonce: n, ttl: t, fee: f, gas, absoluteTtl, vsn }) {\n const account = await this.getAccount(senderId).catch(e => ({ nonce: 0 }))\n // Is GA account\n if (account.contractId) {\n n = 0\n } else {\n n = n || (account.nonce + 1)\n }\n const ttl = await calculateTtl.call(this, t, !absoluteTtl)\n const fee = calculateFee(f, txType, { showWarning: this.showWarning, gas, params: R.merge(R.last(arguments), { nonce: n, ttl }), vsn })\n return { fee, ttl, nonce: n }\n}\n\n/**\n * Transaction Stamp\n *\n * This is implementation of [Tx](api/tx.md) relays\n * the creation of transactions to {@link module:@aeternity/aepp-sdk/es/Node}.\n * This stamp provide ability to create native transaction's,\n * or transaction's using Node API.\n * As there is no built-in security between Node and client communication,\n * creating transaction using {@link module:@aeternity/aepp-sdk/es/Node} API\n * must never be used for production but can be very useful to verify other\n * implementations.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/tx\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {Boolean} [options.nativeMode=true] options.nativeMode - Use Native build of transaction's\n * @param {String} options.url - Node url\n * @param {String} options.internalUrl - Node internal url\n * @return {Object} Transaction instance\n * @example Transaction({url: 'https://testnet.aeternity.io/'})\n */\nconst Transaction = ChainNode.compose(Tx, {\n init ({ nativeMode = true, showWarning = false }) {\n this.nativeMode = nativeMode\n this.showWarning = showWarning\n },\n props: {\n nativeMode: true,\n showWarning: false\n },\n methods: {\n spendTx,\n namePreclaimTx,\n nameClaimTx,\n nameTransferTx,\n nameUpdateTx,\n nameRevokeTx,\n contractCreateTx,\n contractCallTx,\n prepareTxParams,\n oracleRegisterTx,\n oracleExtendTx,\n oraclePostQueryTx,\n oracleRespondTx,\n channelCloseSoloTx,\n channelSlashTx,\n channelSettleTx,\n channelSnapshotSoloTx,\n gaAttachTx,\n payingForTx,\n getAccountNonce,\n getVmVersion\n }\n})\n\nexport default Transaction\n"],"file":"tx.js"}
@@ -1,344 +0,0 @@
1
- import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
2
- import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
3
- import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
4
- import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
5
- import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
6
- import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
7
- import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
8
- import _slicedToArray from "@babel/runtime-corejs3/helpers/slicedToArray";
9
- import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
10
- import _toConsumableArray from "@babel/runtime-corejs3/helpers/toConsumableArray";
11
- import _asyncToGenerator from "@babel/runtime-corejs3/helpers/asyncToGenerator";
12
-
13
- function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); if (enumerableOnly) { symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
14
-
15
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context19; _forEachInstanceProperty(_context19 = ownKeys(Object(source), true)).call(_context19, function (key) { _defineProperty(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors) { _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)); } else { var _context20; _forEachInstanceProperty(_context20 = ownKeys(Object(source))).call(_context20, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } } return target; }
16
-
17
- import _regeneratorRuntime from "@babel/runtime-corejs3/regenerator";
18
- import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
19
- import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
20
- import _someInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/some";
21
- import _Object$entries from "@babel/runtime-corejs3/core-js-stable/object/entries";
22
- import _JSON$stringify from "@babel/runtime-corejs3/core-js-stable/json/stringify";
23
- import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
24
- import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
25
- import _Promise from "@babel/runtime-corejs3/core-js-stable/promise";
26
- import _flatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/flat";
27
- import { verify, hash } from '../utils/crypto';
28
- import { encode, decode } from './builder/helpers';
29
- import BigNumber from 'bignumber.js';
30
- import { MIN_GAS_PRICE, PROTOCOL_VM_ABI, TX_TYPE } from './builder/schema';
31
- import { calculateFee, unpackTx } from './builder';
32
- /**
33
- * Transaction validator
34
- * @module @aeternity/aepp-sdk/es/tx/validator
35
- * @export verifyTransaction
36
- * @example import { verifyTransaction } from '@aeternity/aepp-sdk'
37
- */
38
-
39
- var validators = [/*#__PURE__*/function () {
40
- var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref, _ref2) {
41
- var _context;
42
-
43
- var encodedTx, signatures, account, node, parentTxTypes, prefix, txWithNetworkId, txHashWithNetworkId, decodedPub;
44
- return _regeneratorRuntime.wrap(function _callee$(_context2) {
45
- while (1) {
46
- switch (_context2.prev = _context2.next) {
47
- case 0:
48
- encodedTx = _ref.encodedTx, signatures = _ref.signatures;
49
- account = _ref2.account, node = _ref2.node, parentTxTypes = _ref2.parentTxTypes;
50
-
51
- if (!((encodedTx !== null && encodedTx !== void 0 ? encodedTx : signatures) === undefined)) {
52
- _context2.next = 4;
53
- break;
54
- }
55
-
56
- return _context2.abrupt("return", []);
57
-
58
- case 4:
59
- if (!(signatures.length !== 1)) {
60
- _context2.next = 6;
61
- break;
62
- }
63
-
64
- return _context2.abrupt("return", []);
65
-
66
- case 6:
67
- // TODO: Support multisignature?
68
- prefix = Buffer.from(_concatInstanceProperty(_context = [node.nodeNetworkId]).call(_context, _toConsumableArray(_includesInstanceProperty(parentTxTypes).call(parentTxTypes, TX_TYPE.payingFor) ? ['inner_tx'] : [])).join('-'));
69
- txWithNetworkId = _concatInstanceProperty(Buffer).call(Buffer, [prefix, encodedTx.rlpEncoded]);
70
- txHashWithNetworkId = _concatInstanceProperty(Buffer).call(Buffer, [prefix, hash(encodedTx.rlpEncoded)]);
71
- decodedPub = decode(account.id, 'ak');
72
-
73
- if (!(verify(txWithNetworkId, signatures[0], decodedPub) || verify(txHashWithNetworkId, signatures[0], decodedPub))) {
74
- _context2.next = 12;
75
- break;
76
- }
77
-
78
- return _context2.abrupt("return", []);
79
-
80
- case 12:
81
- return _context2.abrupt("return", [{
82
- message: 'Signature cannot be verified, please ensure that you transaction have' + ' the correct prefix and the correct private key for the sender address',
83
- key: 'InvalidSignature',
84
- checkedKeys: ['encodedTx', 'signatures']
85
- }]);
86
-
87
- case 13:
88
- case "end":
89
- return _context2.stop();
90
- }
91
- }
92
- }, _callee);
93
- }));
94
-
95
- return function (_x, _x2) {
96
- return _ref3.apply(this, arguments);
97
- };
98
- }(), /*#__PURE__*/function () {
99
- var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(_ref4, _ref5) {
100
- var _context3;
101
-
102
- var encodedTx, tx, node, parentTxTypes, txType;
103
- return _regeneratorRuntime.wrap(function _callee2$(_context4) {
104
- while (1) {
105
- switch (_context4.prev = _context4.next) {
106
- case 0:
107
- encodedTx = _ref4.encodedTx, tx = _ref4.tx;
108
- node = _ref5.node, parentTxTypes = _ref5.parentTxTypes, txType = _ref5.txType;
109
-
110
- if (!((encodedTx !== null && encodedTx !== void 0 ? encodedTx : tx) === undefined)) {
111
- _context4.next = 4;
112
- break;
113
- }
114
-
115
- return _context4.abrupt("return", []);
116
-
117
- case 4:
118
- return _context4.abrupt("return", verifyTransaction(encode((encodedTx !== null && encodedTx !== void 0 ? encodedTx : tx).rlpEncoded, 'tx'), node, _concatInstanceProperty(_context3 = []).call(_context3, _toConsumableArray(parentTxTypes), [txType])));
119
-
120
- case 5:
121
- case "end":
122
- return _context4.stop();
123
- }
124
- }
125
- }, _callee2);
126
- }));
127
-
128
- return function (_x3, _x4) {
129
- return _ref6.apply(this, arguments);
130
- };
131
- }(), function (tx, _ref7) {
132
- var _context5;
133
-
134
- var txType = _ref7.txType;
135
- if (tx.fee === undefined) return [];
136
- var minFee = calculateFee(0, txType, {
137
- gas: +tx.gas || 0,
138
- params: tx,
139
- showWarning: false,
140
- vsn: tx.VSN
141
- });
142
- if (new BigNumber(minFee).lte(tx.fee)) return [];
143
- return [{
144
- message: _concatInstanceProperty(_context5 = "Fee ".concat(tx.fee, " is too low, minimum fee for this transaction is ")).call(_context5, minFee),
145
- key: 'InsufficientFee',
146
- checkedKeys: ['fee']
147
- }];
148
- }, function (_ref8, _ref9) {
149
- var _context6;
150
-
151
- var ttl = _ref8.ttl;
152
- var height = _ref9.height;
153
- if (ttl === undefined) return [];
154
- ttl = +ttl;
155
- if (ttl === 0 || ttl >= height) return [];
156
- return [{
157
- message: _concatInstanceProperty(_context6 = "TTL ".concat(ttl, " is already expired, current height is ")).call(_context6, height),
158
- key: 'ExpiredTTL',
159
- checkedKeys: ['ttl']
160
- }];
161
- }, function (_ref10, _ref11) {
162
- var _ref12, _context7;
163
-
164
- var amount = _ref10.amount,
165
- fee = _ref10.fee,
166
- nameFee = _ref10.nameFee,
167
- tx = _ref10.tx;
168
- var account = _ref11.account,
169
- parentTxTypes = _ref11.parentTxTypes,
170
- txType = _ref11.txType;
171
- if (((_ref12 = amount !== null && amount !== void 0 ? amount : fee) !== null && _ref12 !== void 0 ? _ref12 : nameFee) === undefined) return [];
172
- var cost = new BigNumber(fee).plus(nameFee || 0).plus(amount || 0).plus(txType === TX_TYPE.payingFor ? tx.tx.encodedTx.tx.fee : 0).minus(_includesInstanceProperty(parentTxTypes).call(parentTxTypes, TX_TYPE.payingFor) ? fee : 0);
173
- if (cost.lte(account.balance)) return [];
174
- return [{
175
- message: _concatInstanceProperty(_context7 = "Account balance ".concat(account.balance, " is not enough to execute the transaction that costs ")).call(_context7, cost.toFixed()),
176
- key: 'InsufficientBalance',
177
- checkedKeys: ['amount', 'fee', 'nameFee']
178
- }];
179
- }, function (_ref13, _ref14) {
180
- var _context8, _context9;
181
-
182
- var nonce = _ref13.nonce;
183
- var account = _ref14.account,
184
- parentTxTypes = _ref14.parentTxTypes;
185
- if (nonce === undefined || _includesInstanceProperty(parentTxTypes).call(parentTxTypes, TX_TYPE.gaMeta)) return [];
186
- nonce = +nonce;
187
- var validNonce = account.nonce + 1;
188
- if (nonce === validNonce) return [];
189
- return [_objectSpread(_objectSpread({}, nonce < validNonce ? {
190
- message: _concatInstanceProperty(_context8 = "Nonce ".concat(nonce, " is already used, valid nonce is ")).call(_context8, validNonce),
191
- key: 'NonceAlreadyUsed'
192
- } : {
193
- message: _concatInstanceProperty(_context9 = "Nonce ".concat(nonce, " is too high, valid nonce is ")).call(_context9, validNonce),
194
- key: 'NonceHigh'
195
- }), {}, {
196
- checkedKeys: ['nonce']
197
- })];
198
- }, function (_ref15) {
199
- var _context10;
200
-
201
- var gasPrice = _ref15.gasPrice;
202
- if (gasPrice === undefined) return [];
203
- if (gasPrice >= MIN_GAS_PRICE) return [];
204
- return [{
205
- message: _concatInstanceProperty(_context10 = "Gas price ".concat(gasPrice, " must be bigger then ")).call(_context10, MIN_GAS_PRICE),
206
- key: 'MinGasPrice',
207
- checkedKeys: ['gasPrice']
208
- }];
209
- }, function (_ref16, _ref17) {
210
- var _context11;
211
-
212
- var ctVersion = _ref16.ctVersion,
213
- abiVersion = _ref16.abiVersion;
214
- var txType = _ref17.txType,
215
- node = _ref17.node;
216
-
217
- var _node$getNodeInfo = node.getNodeInfo(),
218
- consensusProtocolVersion = _node$getNodeInfo.consensusProtocolVersion;
219
-
220
- var protocol = PROTOCOL_VM_ABI[consensusProtocolVersion];
221
- if (!protocol) throw new Error("Unsupported protocol: ".concat(consensusProtocolVersion)); // If not contract create tx
222
-
223
- if (!ctVersion) ctVersion = {
224
- abiVersion: abiVersion
225
- };
226
- var txProtocol = protocol[txType];
227
- if (!txProtocol) return [];
228
-
229
- if (_someInstanceProperty(_context11 = _Object$entries(ctVersion)).call(_context11, function (_ref18) {
230
- var _context12;
231
-
232
- var _ref19 = _slicedToArray(_ref18, 2),
233
- key = _ref19[0],
234
- value = _ref19[1];
235
-
236
- return !_includesInstanceProperty(_context12 = txProtocol[key]).call(_context12, +value);
237
- })) {
238
- var _context13;
239
-
240
- return [{
241
- message: _concatInstanceProperty(_context13 = "ABI/VM version ".concat(_JSON$stringify(ctVersion), " is wrong, supported is: ")).call(_context13, _JSON$stringify(txProtocol)),
242
- key: 'VmAndAbiVersionMismatch',
243
- checkedKeys: ['ctVersion', 'abiVersion']
244
- }];
245
- }
246
-
247
- return [];
248
- }];
249
-
250
- var getSenderAddress = function getSenderAddress(tx) {
251
- var _context14, _context15, _context16;
252
-
253
- return _mapInstanceProperty(_context14 = _filterInstanceProperty(_context15 = _mapInstanceProperty(_context16 = ['senderId', 'accountId', 'ownerId', 'callerId', 'oracleId', 'fromId', 'initiator', 'gaId', 'payerId']).call(_context16, function (key) {
254
- return tx[key];
255
- })).call(_context15, function (a) {
256
- return a;
257
- })).call(_context14, function (a) {
258
- return a.replace(/^ok_/, 'ak_');
259
- })[0];
260
- };
261
- /**
262
- * Transaction Validator
263
- * This function validates some of transaction properties,
264
- * to make sure it can be posted it to the chain
265
- * @function
266
- * @alias module:@aeternity/aepp-sdk/es/tx/validator
267
- * @rtype (tx: String, node) => void
268
- * @param {String} transaction Base64Check-encoded transaction
269
- * @param {Object} node Node to validate transaction against
270
- * @param {String[]} [parentTxTypes] Types of parent transactions
271
- * @return {Promise<Object[]>} Array with verification errors
272
- * @example const errors = await verifyTransaction(transaction, node)
273
- */
274
-
275
-
276
- export default function verifyTransaction(_x5, _x6) {
277
- return _verifyTransaction.apply(this, arguments);
278
- }
279
-
280
- function _verifyTransaction() {
281
- _verifyTransaction = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(transaction, node) {
282
- var _getSenderAddress, _context17;
283
-
284
- var parentTxTypes,
285
- _unpackTx,
286
- tx,
287
- txType,
288
- address,
289
- _yield$Promise$all,
290
- _yield$Promise$all2,
291
- account,
292
- height,
293
- _args3 = arguments;
294
-
295
- return _regeneratorRuntime.wrap(function _callee3$(_context18) {
296
- while (1) {
297
- switch (_context18.prev = _context18.next) {
298
- case 0:
299
- parentTxTypes = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : [];
300
- _unpackTx = unpackTx(transaction), tx = _unpackTx.tx, txType = _unpackTx.txType;
301
- address = (_getSenderAddress = getSenderAddress(tx)) !== null && _getSenderAddress !== void 0 ? _getSenderAddress : txType === TX_TYPE.signed ? getSenderAddress(tx.encodedTx.tx) : null;
302
- _context18.next = 5;
303
- return _Promise.all([address && node.api.getAccountByPubkey(address)["catch"](function () {
304
- return {
305
- id: address,
306
- balance: new BigNumber(0),
307
- nonce: 0
308
- };
309
- }), node.api.getCurrentKeyBlockHeight().then(function (_ref20) {
310
- var height = _ref20.height;
311
- return height;
312
- })]);
313
-
314
- case 5:
315
- _yield$Promise$all = _context18.sent;
316
- _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 2);
317
- account = _yield$Promise$all2[0];
318
- height = _yield$Promise$all2[1];
319
- _context18.t0 = _flatInstanceProperty;
320
- _context18.next = 12;
321
- return _Promise.all(_mapInstanceProperty(validators).call(validators, function (v) {
322
- return v(tx, {
323
- txType: txType,
324
- node: node,
325
- account: account,
326
- height: height,
327
- parentTxTypes: parentTxTypes
328
- });
329
- }));
330
-
331
- case 12:
332
- _context18.t1 = _context17 = _context18.sent;
333
- return _context18.abrupt("return", (0, _context18.t0)(_context18.t1).call(_context17));
334
-
335
- case 14:
336
- case "end":
337
- return _context18.stop();
338
- }
339
- }
340
- }, _callee3);
341
- }));
342
- return _verifyTransaction.apply(this, arguments);
343
- }
344
- //# sourceMappingURL=validator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/tx/validator.js"],"names":["verify","hash","encode","decode","BigNumber","MIN_GAS_PRICE","PROTOCOL_VM_ABI","TX_TYPE","calculateFee","unpackTx","validators","encodedTx","signatures","account","node","parentTxTypes","undefined","length","prefix","Buffer","from","nodeNetworkId","payingFor","join","txWithNetworkId","rlpEncoded","txHashWithNetworkId","decodedPub","id","message","key","checkedKeys","tx","txType","verifyTransaction","fee","minFee","gas","params","showWarning","vsn","VSN","lte","ttl","height","amount","nameFee","cost","plus","minus","balance","toFixed","nonce","gaMeta","validNonce","gasPrice","ctVersion","abiVersion","getNodeInfo","consensusProtocolVersion","protocol","Error","txProtocol","value","getSenderAddress","a","replace","transaction","address","signed","all","api","getAccountByPubkey","getCurrentKeyBlockHeight","then","v"],"mappings":"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","sourcesContent":["import { verify, hash } from '../utils/crypto'\nimport { encode, decode } from './builder/helpers'\n\nimport BigNumber from 'bignumber.js'\nimport { MIN_GAS_PRICE, PROTOCOL_VM_ABI, TX_TYPE } from './builder/schema'\nimport { calculateFee, unpackTx } from './builder'\n\n/**\n * Transaction validator\n * @module @aeternity/aepp-sdk/es/tx/validator\n * @export verifyTransaction\n * @example import { verifyTransaction } from '@aeternity/aepp-sdk'\n */\n\nconst validators = [\n async ({ encodedTx, signatures }, { account, node, parentTxTypes }) => {\n if ((encodedTx ?? signatures) === undefined) return []\n if (signatures.length !== 1) return [] // TODO: Support multisignature?\n const prefix = Buffer.from([\n node.nodeNetworkId,\n ...parentTxTypes.includes(TX_TYPE.payingFor) ? ['inner_tx'] : []\n ].join('-'))\n const txWithNetworkId = Buffer.concat([prefix, encodedTx.rlpEncoded])\n const txHashWithNetworkId = Buffer.concat([prefix, hash(encodedTx.rlpEncoded)])\n const decodedPub = decode(account.id, 'ak')\n if (verify(txWithNetworkId, signatures[0], decodedPub) ||\n verify(txHashWithNetworkId, signatures[0], decodedPub)) return []\n return [{\n message: 'Signature cannot be verified, please ensure that you transaction have' +\n ' the correct prefix and the correct private key for the sender address',\n key: 'InvalidSignature',\n checkedKeys: ['encodedTx', 'signatures']\n }]\n },\n async ({ encodedTx, tx }, { node, parentTxTypes, txType }) => {\n if ((encodedTx ?? tx) === undefined) return []\n return verifyTransaction(\n encode((encodedTx ?? tx).rlpEncoded, 'tx'),\n node,\n [...parentTxTypes, txType]\n )\n },\n (tx, { txType }) => {\n if (tx.fee === undefined) return []\n const minFee = calculateFee(0, txType, {\n gas: +tx.gas || 0, params: tx, showWarning: false, vsn: tx.VSN\n })\n if (new BigNumber(minFee).lte(tx.fee)) return []\n return [{\n message: `Fee ${tx.fee} is too low, minimum fee for this transaction is ${minFee}`,\n key: 'InsufficientFee',\n checkedKeys: ['fee']\n }]\n },\n ({ ttl }, { height }) => {\n if (ttl === undefined) return []\n ttl = +ttl\n if (ttl === 0 || ttl >= height) return []\n return [{\n message: `TTL ${ttl} is already expired, current height is ${height}`,\n key: 'ExpiredTTL',\n checkedKeys: ['ttl']\n }]\n },\n ({ amount, fee, nameFee, tx }, { account, parentTxTypes, txType }) => {\n if ((amount ?? fee ?? nameFee) === undefined) return []\n const cost = new BigNumber(fee).plus(nameFee || 0).plus(amount || 0)\n .plus(txType === TX_TYPE.payingFor ? tx.tx.encodedTx.tx.fee : 0)\n .minus(parentTxTypes.includes(TX_TYPE.payingFor) ? fee : 0)\n if (cost.lte(account.balance)) return []\n return [{\n message: `Account balance ${account.balance} is not enough to execute the transaction that costs ${cost.toFixed()}`,\n key: 'InsufficientBalance',\n checkedKeys: ['amount', 'fee', 'nameFee']\n }]\n },\n ({ nonce }, { account, parentTxTypes }) => {\n if (nonce === undefined || parentTxTypes.includes(TX_TYPE.gaMeta)) return []\n nonce = +nonce\n const validNonce = account.nonce + 1\n if (nonce === validNonce) return []\n return [{\n ...nonce < validNonce ? {\n message: `Nonce ${nonce} is already used, valid nonce is ${validNonce}`,\n key: 'NonceAlreadyUsed'\n } : {\n message: `Nonce ${nonce} is too high, valid nonce is ${validNonce}`,\n key: 'NonceHigh'\n },\n checkedKeys: ['nonce']\n }]\n },\n ({ gasPrice }) => {\n if (gasPrice === undefined) return []\n if (gasPrice >= MIN_GAS_PRICE) return []\n return [{\n message: `Gas price ${gasPrice} must be bigger then ${MIN_GAS_PRICE}`,\n key: 'MinGasPrice',\n checkedKeys: ['gasPrice']\n }]\n },\n ({ ctVersion, abiVersion }, { txType, node }) => {\n const { consensusProtocolVersion } = node.getNodeInfo()\n const protocol = PROTOCOL_VM_ABI[consensusProtocolVersion]\n if (!protocol) throw new Error(`Unsupported protocol: ${consensusProtocolVersion}`)\n // If not contract create tx\n if (!ctVersion) ctVersion = { abiVersion }\n const txProtocol = protocol[txType]\n if (!txProtocol) return []\n if (Object.entries(ctVersion).some(([key, value]) => !txProtocol[key].includes(+value))) {\n return [{\n message: `ABI/VM version ${JSON.stringify(ctVersion)} is wrong, supported is: ${JSON.stringify(txProtocol)}`,\n key: 'VmAndAbiVersionMismatch',\n checkedKeys: ['ctVersion', 'abiVersion']\n }]\n }\n return []\n }\n]\n\nconst getSenderAddress = tx => [\n 'senderId', 'accountId', 'ownerId', 'callerId',\n 'oracleId', 'fromId', 'initiator', 'gaId', 'payerId'\n]\n .map(key => tx[key])\n .filter(a => a)\n .map(a => a.replace(/^ok_/, 'ak_'))[0]\n\n/**\n * Transaction Validator\n * This function validates some of transaction properties,\n * to make sure it can be posted it to the chain\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/validator\n * @rtype (tx: String, node) => void\n * @param {String} transaction Base64Check-encoded transaction\n * @param {Object} node Node to validate transaction against\n * @param {String[]} [parentTxTypes] Types of parent transactions\n * @return {Promise<Object[]>} Array with verification errors\n * @example const errors = await verifyTransaction(transaction, node)\n */\nexport default async function verifyTransaction (transaction, node, parentTxTypes = []) {\n const { tx, txType } = unpackTx(transaction)\n\n const address = getSenderAddress(tx) ??\n (txType === TX_TYPE.signed ? getSenderAddress(tx.encodedTx.tx) : null)\n const [account, height] = await Promise.all([\n address && node.api.getAccountByPubkey(address).catch(() => ({\n id: address,\n balance: new BigNumber(0),\n nonce: 0\n })),\n node.api.getCurrentKeyBlockHeight().then(({ height }) => height)\n ])\n\n return (await Promise.all(\n validators.map(v => v(tx, { txType, node, account, height, parentTxTypes })))\n ).flat()\n}\n"],"file":"validator.js"}
@@ -1,2 +0,0 @@
1
-
2
- //# sourceMappingURL=index.d.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/utils/aepp-wallet-communication/connection/browser-runtime.js"],"names":["stampit","WalletConnection","getBrowserAPI","disconnect","port","e","console","warning","connect","onMessage","onDisconnect","isConnected","Error","handler","msg","source","debug","log","addListener","sendMessage","postMessage","hasListeners","hasListener","init","connectionInfo","runtime","id","undefined","methods"],"mappings":"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","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Browser runtime connector module\n *\n * This is the complement to {@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection}.\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime\n * @export BrowserRuntimeConnection\n * @example import BrowserRuntimeConnection from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime'\n */\nimport stampit from '@stamp/it'\n\nimport WalletConnection from '.'\nimport { getBrowserAPI } from '../helpers'\n\n/**\n * Disconnect\n * @function disconnect\n * @instance\n * @rtype () => void\n * @return {void}\n */\nfunction disconnect () {\n try {\n this.port.disconnect()\n } catch (e) {\n console.warning('From BrowserRuntimeConnection: ', e)\n }\n}\n\n/**\n * Connect\n * @function connect\n * @instance\n * @rtype (onMessage: Function, onDisconnect: Function) => void\n * @param {Function} onMessage - Message handler\n * @param {Function} onDisconnect - trigger when runtime connection in closed\n * @return {void}\n */\nfunction connect (onMessage, onDisconnect) {\n if (this.isConnected()) throw new Error('You already connected')\n this.handler = (msg, source) => {\n if (this.debug) console.log('Receive message: ', msg)\n onMessage(msg, source)\n }\n this.port.onMessage.addListener(this.handler)\n this.port.onDisconnect.addListener(() => {\n typeof onDisconnect === 'function' && onDisconnect({}, this)\n this.port.disconnect()\n })\n}\n\n/**\n * Send message\n * @function sendMessage\n * @instance\n * @rtype (msg: Object) => void\n * @param {Object} msg - Message\n * @return {void}\n */\nfunction sendMessage (msg) {\n if (!this.port) throw new Error('You dont have connection. Please connect before')\n if (this.debug) console.log('Send message: ', msg)\n this.port.postMessage(msg)\n}\n\n/**\n * Check if connected\n * @function isConnected\n * @instance\n * @rtype () => Boolean\n * @return {Boolean} Is connected\n */\nfunction isConnected () {\n return typeof this.port.onMessage.hasListeners === 'function' ? this.port.onMessage.hasListeners() : this.port.onMessage.hasListener(this.handler)\n}\n\n/**\n * BrowserRuntimeConnection stamp\n * Handle browser runtime communication\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime\n * @rtype Stamp\n * @param {Object} params={} - Initializer object\n * @param {Object} params.port - Runtime `port` object\n * @param {Object} [params.connectionInfo={}] - Connection info object\n * @param {Boolean} [params.debug=false] - Debug flag\n * @return {Object}\n */\nexport default stampit({\n init ({ connectionInfo = {}, port, debug = false }) {\n if (!getBrowserAPI().runtime) throw new Error('Runtime is not accessible in your environment')\n this.debug = debug\n this.connectionInfo = connectionInfo\n this.port = port || getBrowserAPI().runtime.connect(...[connectionInfo.id || undefined])\n },\n methods: { connect, sendMessage, disconnect, isConnected }\n}, WalletConnection)\n"],"file":"browser-runtime.js"}