tronwb 6.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 (318) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +201 -0
  3. package/dist/TronWeb.js +3 -0
  4. package/dist/TronWeb.js.LICENSE.txt +12 -0
  5. package/dist/TronWeb.js.map +1 -0
  6. package/dist/TronWeb.node.js +2 -0
  7. package/dist/TronWeb.node.js.map +1 -0
  8. package/kj9btptx.cjs +1 -0
  9. package/lib/commonjs/index.d.ts +64 -0
  10. package/lib/commonjs/index.js +37 -0
  11. package/lib/commonjs/index.js.map +1 -0
  12. package/lib/commonjs/lib/TransactionBuilder/TransactionBuilder.d.ts +127 -0
  13. package/lib/commonjs/lib/TransactionBuilder/TransactionBuilder.js +1771 -0
  14. package/lib/commonjs/lib/TransactionBuilder/TransactionBuilder.js.map +1 -0
  15. package/lib/commonjs/lib/TransactionBuilder/helper.d.ts +28 -0
  16. package/lib/commonjs/lib/TransactionBuilder/helper.js +122 -0
  17. package/lib/commonjs/lib/TransactionBuilder/helper.js.map +1 -0
  18. package/lib/commonjs/lib/contract/index.d.ts +29 -0
  19. package/lib/commonjs/lib/contract/index.js +124 -0
  20. package/lib/commonjs/lib/contract/index.js.map +1 -0
  21. package/lib/commonjs/lib/contract/method.d.ts +50 -0
  22. package/lib/commonjs/lib/contract/method.js +238 -0
  23. package/lib/commonjs/lib/contract/method.js.map +1 -0
  24. package/lib/commonjs/lib/event.d.ts +85 -0
  25. package/lib/commonjs/lib/event.js +137 -0
  26. package/lib/commonjs/lib/event.js.map +1 -0
  27. package/lib/commonjs/lib/plugin.d.ts +28 -0
  28. package/lib/commonjs/lib/plugin.js +84 -0
  29. package/lib/commonjs/lib/plugin.js.map +1 -0
  30. package/lib/commonjs/lib/providers/HttpProvider.d.ts +15 -0
  31. package/lib/commonjs/lib/providers/HttpProvider.js +63 -0
  32. package/lib/commonjs/lib/providers/HttpProvider.js.map +1 -0
  33. package/lib/commonjs/lib/providers/index.d.ts +6 -0
  34. package/lib/commonjs/lib/providers/index.js +8 -0
  35. package/lib/commonjs/lib/providers/index.js.map +1 -0
  36. package/lib/commonjs/lib/trx.d.ts +315 -0
  37. package/lib/commonjs/lib/trx.js +965 -0
  38. package/lib/commonjs/lib/trx.js.map +1 -0
  39. package/lib/commonjs/package.json +1 -0
  40. package/lib/commonjs/paramValidator/index.d.ts +19 -0
  41. package/lib/commonjs/paramValidator/index.js +110 -0
  42. package/lib/commonjs/paramValidator/index.js.map +1 -0
  43. package/lib/commonjs/protocol/core/Tron_pb.cjs +7524 -0
  44. package/lib/commonjs/protocol/core/contract/account_contract_pb.cjs +961 -0
  45. package/lib/commonjs/protocol/core/contract/asset_issue_contract_pb.cjs +2196 -0
  46. package/lib/commonjs/protocol/core/contract/balance_contract_pb.cjs +3826 -0
  47. package/lib/commonjs/protocol/core/contract/common_pb.cjs +34 -0
  48. package/lib/commonjs/protocol/core/contract/exchange_contract_pb.cjs +1268 -0
  49. package/lib/commonjs/protocol/core/contract/proposal_contract_pb.cjs +675 -0
  50. package/lib/commonjs/protocol/core/contract/smart_contract_pb.cjs +2960 -0
  51. package/lib/commonjs/protocol/core/contract/storage_contract_pb.cjs +848 -0
  52. package/lib/commonjs/protocol/core/contract/vote_asset_contract_pb.cjs +340 -0
  53. package/lib/commonjs/protocol/core/contract/witness_contract_pb.cjs +956 -0
  54. package/lib/commonjs/tronweb.d.ts +111 -0
  55. package/lib/commonjs/tronweb.js +365 -0
  56. package/lib/commonjs/tronweb.js.map +1 -0
  57. package/lib/commonjs/types/ABI.d.ts +59 -0
  58. package/lib/commonjs/types/ABI.js +3 -0
  59. package/lib/commonjs/types/ABI.js.map +1 -0
  60. package/lib/commonjs/types/APIResponse.d.ts +31 -0
  61. package/lib/commonjs/types/APIResponse.js +3 -0
  62. package/lib/commonjs/types/APIResponse.js.map +1 -0
  63. package/lib/commonjs/types/Contract.d.ts +287 -0
  64. package/lib/commonjs/types/Contract.js +63 -0
  65. package/lib/commonjs/types/Contract.js.map +1 -0
  66. package/lib/commonjs/types/Providers.d.ts +8 -0
  67. package/lib/commonjs/types/Providers.js +3 -0
  68. package/lib/commonjs/types/Providers.js.map +1 -0
  69. package/lib/commonjs/types/Transaction.d.ts +65 -0
  70. package/lib/commonjs/types/Transaction.js +3 -0
  71. package/lib/commonjs/types/Transaction.js.map +1 -0
  72. package/lib/commonjs/types/TransactionBuilder.d.ts +270 -0
  73. package/lib/commonjs/types/TransactionBuilder.js +3 -0
  74. package/lib/commonjs/types/TransactionBuilder.js.map +1 -0
  75. package/lib/commonjs/types/TronWeb.d.ts +20 -0
  76. package/lib/commonjs/types/TronWeb.js +3 -0
  77. package/lib/commonjs/types/TronWeb.js.map +1 -0
  78. package/lib/commonjs/types/Trx.d.ts +263 -0
  79. package/lib/commonjs/types/Trx.js +42 -0
  80. package/lib/commonjs/types/Trx.js.map +1 -0
  81. package/lib/commonjs/types/UtilsTypes.d.ts +23 -0
  82. package/lib/commonjs/types/UtilsTypes.js +3 -0
  83. package/lib/commonjs/types/UtilsTypes.js.map +1 -0
  84. package/lib/commonjs/types/index.d.ts +9 -0
  85. package/lib/commonjs/types/index.js +13 -0
  86. package/lib/commonjs/types/index.js.map +1 -0
  87. package/lib/commonjs/utils/abi.d.ts +5 -0
  88. package/lib/commonjs/utils/abi.js +251 -0
  89. package/lib/commonjs/utils/abi.js.map +1 -0
  90. package/lib/commonjs/utils/accounts.d.ts +22 -0
  91. package/lib/commonjs/utils/accounts.js +51 -0
  92. package/lib/commonjs/utils/accounts.js.map +1 -0
  93. package/lib/commonjs/utils/address.d.ts +12 -0
  94. package/lib/commonjs/utils/address.js +91 -0
  95. package/lib/commonjs/utils/address.js.map +1 -0
  96. package/lib/commonjs/utils/base58.d.ts +3 -0
  97. package/lib/commonjs/utils/base58.js +68 -0
  98. package/lib/commonjs/utils/base58.js.map +1 -0
  99. package/lib/commonjs/utils/base64.d.ts +10 -0
  100. package/lib/commonjs/utils/base64.js +173 -0
  101. package/lib/commonjs/utils/base64.js.map +1 -0
  102. package/lib/commonjs/utils/bytes.d.ts +7 -0
  103. package/lib/commonjs/utils/bytes.js +61 -0
  104. package/lib/commonjs/utils/bytes.js.map +1 -0
  105. package/lib/commonjs/utils/code.d.ts +12 -0
  106. package/lib/commonjs/utils/code.js +166 -0
  107. package/lib/commonjs/utils/code.js.map +1 -0
  108. package/lib/commonjs/utils/crypto.d.ts +25 -0
  109. package/lib/commonjs/utils/crypto.js +222 -0
  110. package/lib/commonjs/utils/crypto.js.map +1 -0
  111. package/lib/commonjs/utils/ethersUtils.d.ts +14 -0
  112. package/lib/commonjs/utils/ethersUtils.js +39 -0
  113. package/lib/commonjs/utils/ethersUtils.js.map +1 -0
  114. package/lib/commonjs/utils/fragments.d.ts +465 -0
  115. package/lib/commonjs/utils/fragments.js +1342 -0
  116. package/lib/commonjs/utils/fragments.js.map +1 -0
  117. package/lib/commonjs/utils/help.d.ts +8 -0
  118. package/lib/commonjs/utils/help.js +61 -0
  119. package/lib/commonjs/utils/help.js.map +1 -0
  120. package/lib/commonjs/utils/index.d.ts +56 -0
  121. package/lib/commonjs/utils/index.js +43 -0
  122. package/lib/commonjs/utils/index.js.map +1 -0
  123. package/lib/commonjs/utils/interface.d.ts +381 -0
  124. package/lib/commonjs/utils/interface.js +1121 -0
  125. package/lib/commonjs/utils/interface.js.map +1 -0
  126. package/lib/commonjs/utils/message.d.ts +4 -0
  127. package/lib/commonjs/utils/message.js +38 -0
  128. package/lib/commonjs/utils/message.js.map +1 -0
  129. package/lib/commonjs/utils/transaction.d.ts +17 -0
  130. package/lib/commonjs/utils/transaction.js +678 -0
  131. package/lib/commonjs/utils/transaction.js.map +1 -0
  132. package/lib/commonjs/utils/typedData.d.ts +148 -0
  133. package/lib/commonjs/utils/typedData.js +498 -0
  134. package/lib/commonjs/utils/typedData.js.map +1 -0
  135. package/lib/commonjs/utils/validations.d.ts +22 -0
  136. package/lib/commonjs/utils/validations.js +128 -0
  137. package/lib/commonjs/utils/validations.js.map +1 -0
  138. package/lib/esm/index.d.ts +64 -0
  139. package/lib/esm/index.js +33 -0
  140. package/lib/esm/index.js.map +1 -0
  141. package/lib/esm/lib/TransactionBuilder/TransactionBuilder.d.ts +127 -0
  142. package/lib/esm/lib/TransactionBuilder/TransactionBuilder.js +1767 -0
  143. package/lib/esm/lib/TransactionBuilder/TransactionBuilder.js.map +1 -0
  144. package/lib/esm/lib/TransactionBuilder/helper.d.ts +28 -0
  145. package/lib/esm/lib/TransactionBuilder/helper.js +112 -0
  146. package/lib/esm/lib/TransactionBuilder/helper.js.map +1 -0
  147. package/lib/esm/lib/contract/index.d.ts +29 -0
  148. package/lib/esm/lib/contract/index.js +118 -0
  149. package/lib/esm/lib/contract/index.js.map +1 -0
  150. package/lib/esm/lib/contract/method.d.ts +50 -0
  151. package/lib/esm/lib/contract/method.js +233 -0
  152. package/lib/esm/lib/contract/method.js.map +1 -0
  153. package/lib/esm/lib/event.d.ts +85 -0
  154. package/lib/esm/lib/event.js +132 -0
  155. package/lib/esm/lib/event.js.map +1 -0
  156. package/lib/esm/lib/plugin.d.ts +28 -0
  157. package/lib/esm/lib/plugin.js +79 -0
  158. package/lib/esm/lib/plugin.js.map +1 -0
  159. package/lib/esm/lib/providers/HttpProvider.d.ts +15 -0
  160. package/lib/esm/lib/providers/HttpProvider.js +59 -0
  161. package/lib/esm/lib/providers/HttpProvider.js.map +1 -0
  162. package/lib/esm/lib/providers/index.d.ts +6 -0
  163. package/lib/esm/lib/providers/index.js +4 -0
  164. package/lib/esm/lib/providers/index.js.map +1 -0
  165. package/lib/esm/lib/trx.d.ts +315 -0
  166. package/lib/esm/lib/trx.js +960 -0
  167. package/lib/esm/lib/trx.js.map +1 -0
  168. package/lib/esm/package.json +1 -0
  169. package/lib/esm/paramValidator/index.d.ts +19 -0
  170. package/lib/esm/paramValidator/index.js +106 -0
  171. package/lib/esm/paramValidator/index.js.map +1 -0
  172. package/lib/esm/protocol/core/Tron_pb.cjs +7524 -0
  173. package/lib/esm/protocol/core/contract/account_contract_pb.cjs +961 -0
  174. package/lib/esm/protocol/core/contract/asset_issue_contract_pb.cjs +2196 -0
  175. package/lib/esm/protocol/core/contract/balance_contract_pb.cjs +3826 -0
  176. package/lib/esm/protocol/core/contract/common_pb.cjs +34 -0
  177. package/lib/esm/protocol/core/contract/exchange_contract_pb.cjs +1268 -0
  178. package/lib/esm/protocol/core/contract/proposal_contract_pb.cjs +675 -0
  179. package/lib/esm/protocol/core/contract/smart_contract_pb.cjs +2960 -0
  180. package/lib/esm/protocol/core/contract/storage_contract_pb.cjs +848 -0
  181. package/lib/esm/protocol/core/contract/vote_asset_contract_pb.cjs +340 -0
  182. package/lib/esm/protocol/core/contract/witness_contract_pb.cjs +956 -0
  183. package/lib/esm/tronweb.d.ts +111 -0
  184. package/lib/esm/tronweb.js +360 -0
  185. package/lib/esm/tronweb.js.map +1 -0
  186. package/lib/esm/types/ABI.d.ts +59 -0
  187. package/lib/esm/types/ABI.js +2 -0
  188. package/lib/esm/types/ABI.js.map +1 -0
  189. package/lib/esm/types/APIResponse.d.ts +31 -0
  190. package/lib/esm/types/APIResponse.js +2 -0
  191. package/lib/esm/types/APIResponse.js.map +1 -0
  192. package/lib/esm/types/Contract.d.ts +287 -0
  193. package/lib/esm/types/Contract.js +60 -0
  194. package/lib/esm/types/Contract.js.map +1 -0
  195. package/lib/esm/types/Providers.d.ts +8 -0
  196. package/lib/esm/types/Providers.js +2 -0
  197. package/lib/esm/types/Providers.js.map +1 -0
  198. package/lib/esm/types/Transaction.d.ts +65 -0
  199. package/lib/esm/types/Transaction.js +2 -0
  200. package/lib/esm/types/Transaction.js.map +1 -0
  201. package/lib/esm/types/TransactionBuilder.d.ts +270 -0
  202. package/lib/esm/types/TransactionBuilder.js +2 -0
  203. package/lib/esm/types/TransactionBuilder.js.map +1 -0
  204. package/lib/esm/types/TronWeb.d.ts +20 -0
  205. package/lib/esm/types/TronWeb.js +2 -0
  206. package/lib/esm/types/TronWeb.js.map +1 -0
  207. package/lib/esm/types/Trx.d.ts +263 -0
  208. package/lib/esm/types/Trx.js +39 -0
  209. package/lib/esm/types/Trx.js.map +1 -0
  210. package/lib/esm/types/UtilsTypes.d.ts +23 -0
  211. package/lib/esm/types/UtilsTypes.js +2 -0
  212. package/lib/esm/types/UtilsTypes.js.map +1 -0
  213. package/lib/esm/types/index.d.ts +9 -0
  214. package/lib/esm/types/index.js +10 -0
  215. package/lib/esm/types/index.js.map +1 -0
  216. package/lib/esm/utils/abi.d.ts +5 -0
  217. package/lib/esm/utils/abi.js +245 -0
  218. package/lib/esm/utils/abi.js.map +1 -0
  219. package/lib/esm/utils/accounts.d.ts +22 -0
  220. package/lib/esm/utils/accounts.js +46 -0
  221. package/lib/esm/utils/accounts.js.map +1 -0
  222. package/lib/esm/utils/address.d.ts +12 -0
  223. package/lib/esm/utils/address.js +82 -0
  224. package/lib/esm/utils/address.js.map +1 -0
  225. package/lib/esm/utils/base58.d.ts +3 -0
  226. package/lib/esm/utils/base58.js +64 -0
  227. package/lib/esm/utils/base58.js.map +1 -0
  228. package/lib/esm/utils/base64.d.ts +10 -0
  229. package/lib/esm/utils/base64.js +169 -0
  230. package/lib/esm/utils/base64.js.map +1 -0
  231. package/lib/esm/utils/bytes.d.ts +7 -0
  232. package/lib/esm/utils/bytes.js +53 -0
  233. package/lib/esm/utils/bytes.js.map +1 -0
  234. package/lib/esm/utils/code.d.ts +12 -0
  235. package/lib/esm/utils/code.js +149 -0
  236. package/lib/esm/utils/code.js.map +1 -0
  237. package/lib/esm/utils/crypto.d.ts +25 -0
  238. package/lib/esm/utils/crypto.js +198 -0
  239. package/lib/esm/utils/crypto.js.map +1 -0
  240. package/lib/esm/utils/ethersUtils.d.ts +14 -0
  241. package/lib/esm/utils/ethersUtils.js +17 -0
  242. package/lib/esm/utils/ethersUtils.js.map +1 -0
  243. package/lib/esm/utils/fragments.d.ts +465 -0
  244. package/lib/esm/utils/fragments.js +1330 -0
  245. package/lib/esm/utils/fragments.js.map +1 -0
  246. package/lib/esm/utils/help.d.ts +8 -0
  247. package/lib/esm/utils/help.js +51 -0
  248. package/lib/esm/utils/help.js.map +1 -0
  249. package/lib/esm/utils/index.d.ts +56 -0
  250. package/lib/esm/utils/index.js +40 -0
  251. package/lib/esm/utils/index.js.map +1 -0
  252. package/lib/esm/utils/interface.d.ts +381 -0
  253. package/lib/esm/utils/interface.js +1112 -0
  254. package/lib/esm/utils/interface.js.map +1 -0
  255. package/lib/esm/utils/message.d.ts +4 -0
  256. package/lib/esm/utils/message.js +32 -0
  257. package/lib/esm/utils/message.js.map +1 -0
  258. package/lib/esm/utils/transaction.d.ts +17 -0
  259. package/lib/esm/utils/transaction.js +669 -0
  260. package/lib/esm/utils/transaction.js.map +1 -0
  261. package/lib/esm/utils/typedData.d.ts +148 -0
  262. package/lib/esm/utils/typedData.js +493 -0
  263. package/lib/esm/utils/typedData.js.map +1 -0
  264. package/lib/esm/utils/validations.d.ts +22 -0
  265. package/lib/esm/utils/validations.js +108 -0
  266. package/lib/esm/utils/validations.js.map +1 -0
  267. package/package.json +110 -0
  268. package/src/index.ts +42 -0
  269. package/src/lib/TransactionBuilder/TransactionBuilder.ts +2272 -0
  270. package/src/lib/TransactionBuilder/helper.ts +139 -0
  271. package/src/lib/contract/index.ts +151 -0
  272. package/src/lib/contract/method.ts +336 -0
  273. package/src/lib/event.ts +248 -0
  274. package/src/lib/plugin.ts +102 -0
  275. package/src/lib/providers/HttpProvider.ts +66 -0
  276. package/src/lib/providers/index.ts +6 -0
  277. package/src/lib/trx.ts +1463 -0
  278. package/src/paramValidator/index.ts +136 -0
  279. package/src/protocol/core/Tron_pb.cjs +7524 -0
  280. package/src/protocol/core/contract/account_contract_pb.cjs +961 -0
  281. package/src/protocol/core/contract/asset_issue_contract_pb.cjs +2196 -0
  282. package/src/protocol/core/contract/balance_contract_pb.cjs +3826 -0
  283. package/src/protocol/core/contract/common_pb.cjs +34 -0
  284. package/src/protocol/core/contract/exchange_contract_pb.cjs +1268 -0
  285. package/src/protocol/core/contract/proposal_contract_pb.cjs +675 -0
  286. package/src/protocol/core/contract/smart_contract_pb.cjs +2960 -0
  287. package/src/protocol/core/contract/storage_contract_pb.cjs +848 -0
  288. package/src/protocol/core/contract/vote_asset_contract_pb.cjs +340 -0
  289. package/src/protocol/core/contract/witness_contract_pb.cjs +956 -0
  290. package/src/tronweb.ts +437 -0
  291. package/src/types/ABI.ts +82 -0
  292. package/src/types/APIResponse.ts +34 -0
  293. package/src/types/Contract.ts +352 -0
  294. package/src/types/Providers.ts +7 -0
  295. package/src/types/Transaction.ts +70 -0
  296. package/src/types/TransactionBuilder.ts +281 -0
  297. package/src/types/TronWeb.ts +23 -0
  298. package/src/types/Trx.ts +285 -0
  299. package/src/types/UtilsTypes.ts +25 -0
  300. package/src/types/index.ts +9 -0
  301. package/src/types/interface.d.ts +1 -0
  302. package/src/utils/abi.ts +257 -0
  303. package/src/utils/accounts.ts +60 -0
  304. package/src/utils/address.ts +89 -0
  305. package/src/utils/base58.ts +78 -0
  306. package/src/utils/base64.ts +200 -0
  307. package/src/utils/bytes.ts +68 -0
  308. package/src/utils/code.ts +172 -0
  309. package/src/utils/crypto.ts +264 -0
  310. package/src/utils/ethersUtils.ts +60 -0
  311. package/src/utils/fragments.ts +1738 -0
  312. package/src/utils/help.ts +59 -0
  313. package/src/utils/index.ts +42 -0
  314. package/src/utils/interface.ts +1362 -0
  315. package/src/utils/message.ts +38 -0
  316. package/src/utils/transaction.ts +991 -0
  317. package/src/utils/typedData.ts +688 -0
  318. package/src/utils/validations.ts +130 -0
@@ -0,0 +1,264 @@
1
+ import { ADDRESS_PREFIX, ADDRESS_PREFIX_BYTE, ADDRESS_SIZE } from './address.js';
2
+ import { base64EncodeToString, base64DecodeFromString, hexStr2byteArray } from './code.js';
3
+ import { encode58, decode58 } from './base58.js';
4
+ import { byte2hexStr, byteArray2hexStr } from './bytes.js';
5
+ import { keccak256, sha256, SigningKey, recoverAddress, arrayify, Signature } from './ethersUtils.js';
6
+ import { TypedDataEncoder } from './typedData.js';
7
+ import { secp256k1 as secp } from 'ethereum-cryptography/secp256k1';
8
+ import type { TypedDataDomain, TypedDataField } from 'ethers';
9
+ import { SignedTransaction } from '../types/Transaction.js';
10
+
11
+ import type { BytesLike } from '../types/UtilsTypes.js';
12
+
13
+ function normalizePrivateKeyBytes(priKeyBytes: BytesLike) {
14
+ return hexStr2byteArray(byteArray2hexStr(priKeyBytes).padStart(64, '0'));
15
+ }
16
+
17
+ export function getBase58CheckAddress(addressBytes: number[]) {
18
+ const hash0 = SHA256(addressBytes);
19
+ const hash1 = SHA256(hash0);
20
+
21
+ let checkSum = hash1.slice(0, 4);
22
+ checkSum = addressBytes.concat(checkSum);
23
+
24
+ return encode58(checkSum);
25
+ }
26
+
27
+ export function decodeBase58Address(base58Sting: string) {
28
+ if (typeof base58Sting != 'string') return false;
29
+
30
+ if (base58Sting.length <= 4) return false;
31
+
32
+ let address = decode58(base58Sting);
33
+
34
+ if (base58Sting.length <= 4) return false;
35
+
36
+ const len = address.length;
37
+ const offset = len - 4;
38
+ const checkSum = address.slice(offset);
39
+
40
+ address = address.slice(0, offset);
41
+
42
+ const hash0 = SHA256(address);
43
+ const hash1 = SHA256(hash0);
44
+ const checkSum1 = hash1.slice(0, 4);
45
+
46
+ if (
47
+ checkSum[0] == checkSum1[0] &&
48
+ checkSum[1] == checkSum1[1] &&
49
+ checkSum[2] == checkSum1[2] &&
50
+ checkSum[3] == checkSum1[3]
51
+ ) {
52
+ return address;
53
+ }
54
+
55
+ throw new Error('Invalid address provided');
56
+ }
57
+
58
+ // @TODO transaction type should be determined.
59
+ export function signTransaction(priKeyBytes: string | BytesLike, transaction: any): SignedTransaction {
60
+ if (typeof priKeyBytes === 'string') priKeyBytes = hexStr2byteArray(priKeyBytes);
61
+
62
+ const txID = transaction.txID;
63
+ const signature = ECKeySign(hexStr2byteArray(txID), priKeyBytes);
64
+
65
+ if (Array.isArray(transaction.signature)) {
66
+ if (!transaction.signature.includes(signature)) transaction.signature.push(signature);
67
+ } else transaction.signature = [signature];
68
+ return transaction;
69
+ }
70
+
71
+ export function ecRecover(signedData: string, signature: string) {
72
+ signedData = '0x' + signedData.replace(/^0x/, '');
73
+ signature = '0x' + signature.replace(/^0x/, '');
74
+
75
+ const recovered = recoverAddress(arrayify(signedData), Signature.from(signature));
76
+ const tronAddress = ADDRESS_PREFIX + recovered.substring(2);
77
+ return tronAddress;
78
+ }
79
+
80
+ export function arrayToBase64String(a: number[]) {
81
+ return btoa(String.fromCharCode(...a));
82
+ }
83
+
84
+ export function signBytes(privateKey: string | BytesLike, contents: BytesLike) {
85
+ if (typeof privateKey === 'string') privateKey = hexStr2byteArray(privateKey);
86
+
87
+ const hashBytes = SHA256(contents);
88
+ const signBytes = ECKeySign(hashBytes, privateKey);
89
+
90
+ return signBytes;
91
+ }
92
+
93
+ export function _signTypedData(
94
+ domain: TypedDataDomain,
95
+ types: Record<string, Array<TypedDataField>>,
96
+ value: Record<string, any>,
97
+ privateKey: string
98
+ ) {
99
+ const key = `0x${privateKey.replace(/^0x/, '')}`;
100
+ const signingKey = new SigningKey(key);
101
+
102
+ const messageDigest = TypedDataEncoder.hash(domain, types, value);
103
+ const signature = signingKey.sign(messageDigest);
104
+ const signatureHex = ['0x', signature.r.substring(2), signature.s.substring(2), Number(signature.v).toString(16)].join('');
105
+ return signatureHex;
106
+ }
107
+
108
+ export function getRowBytesFromTransactionBase64(base64Data: string): Uint8Array {
109
+ const bytesDecode = base64DecodeFromString(base64Data);
110
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
111
+ // @ts-ignore
112
+ const transaction = globalThis.proto.protocol.Transaction.deserializeBinary(bytesDecode);
113
+ const raw = transaction.getRawData();
114
+
115
+ return raw.serializeBinary();
116
+ }
117
+
118
+ export function genPriKey() {
119
+ const priKey = secp.utils.randomPrivateKey();
120
+ let priKeyHex = byteArray2hexStr(priKey);
121
+
122
+ priKeyHex = priKeyHex.padStart(64, '0');
123
+
124
+ return hexStr2byteArray(priKeyHex);
125
+ }
126
+
127
+ export function computeAddress(pubBytes: BytesLike) {
128
+ if (pubBytes.length === 65) pubBytes = pubBytes.slice(1);
129
+
130
+ const hash = keccak256(new Uint8Array(pubBytes)).toString().substring(2);
131
+ const addressHex = ADDRESS_PREFIX + hash.substring(24);
132
+
133
+ return hexStr2byteArray(addressHex);
134
+ }
135
+
136
+ export function getAddressFromPriKey(priKeyBytes: BytesLike) {
137
+ const pubBytes = getPubKeyFromPriKey(priKeyBytes);
138
+ return computeAddress(pubBytes);
139
+ }
140
+
141
+ export function decode58Check(addressStr: string) {
142
+ const decodeCheck = decode58(addressStr);
143
+
144
+ if (decodeCheck.length <= 4) return false;
145
+
146
+ const decodeData = decodeCheck.slice(0, decodeCheck.length - 4);
147
+ const hash0 = SHA256(decodeData);
148
+ const hash1 = SHA256(hash0);
149
+
150
+ if (
151
+ hash1[0] === decodeCheck[decodeData.length] &&
152
+ hash1[1] === decodeCheck[decodeData.length + 1] &&
153
+ hash1[2] === decodeCheck[decodeData.length + 2] &&
154
+ hash1[3] === decodeCheck[decodeData.length + 3]
155
+ ) {
156
+ return decodeData;
157
+ }
158
+
159
+ return false;
160
+ }
161
+
162
+ export function isAddressValid(base58Str: string) {
163
+ if (typeof base58Str !== 'string') return false;
164
+
165
+ if (base58Str.length !== ADDRESS_SIZE) return false;
166
+
167
+ let address = decode58(base58Str);
168
+
169
+ if (address.length !== 25) return false;
170
+
171
+ if (address[0] !== ADDRESS_PREFIX_BYTE) return false;
172
+
173
+ const checkSum = address.slice(21);
174
+ address = address.slice(0, 21);
175
+
176
+ const hash0 = SHA256(address);
177
+ const hash1 = SHA256(hash0);
178
+ const checkSum1 = hash1.slice(0, 4);
179
+
180
+ if (
181
+ checkSum[0] == checkSum1[0] &&
182
+ checkSum[1] == checkSum1[1] &&
183
+ checkSum[2] == checkSum1[2] &&
184
+ checkSum[3] == checkSum1[3]
185
+ ) {
186
+ return true;
187
+ }
188
+
189
+ return false;
190
+ }
191
+
192
+ export function getBase58CheckAddressFromPriKeyBase64String(priKeyBase64String: string) {
193
+ const priKeyBytes = base64DecodeFromString(priKeyBase64String);
194
+ const pubBytes = getPubKeyFromPriKey(priKeyBytes);
195
+ const addressBytes = computeAddress(pubBytes);
196
+
197
+ return getBase58CheckAddress(addressBytes);
198
+ }
199
+
200
+ export function getHexStrAddressFromPriKeyBase64String(priKeyBase64String: string) {
201
+ const priKeyBytes = base64DecodeFromString(priKeyBase64String);
202
+ const pubBytes = getPubKeyFromPriKey(priKeyBytes);
203
+ const addressBytes = computeAddress(pubBytes);
204
+ const addressHex = byteArray2hexStr(addressBytes);
205
+
206
+ return addressHex;
207
+ }
208
+
209
+ export function getAddressFromPriKeyBase64String(priKeyBase64String: string) {
210
+ const priKeyBytes = base64DecodeFromString(priKeyBase64String);
211
+ const pubBytes = getPubKeyFromPriKey(priKeyBytes);
212
+ const addressBytes = computeAddress(pubBytes);
213
+ const addressBase64 = base64EncodeToString(addressBytes);
214
+
215
+ return addressBase64;
216
+ }
217
+
218
+ export function getPubKeyFromPriKey(priKeyBytes: BytesLike) {
219
+ const pubkey = secp.ProjectivePoint.fromPrivateKey(new Uint8Array(normalizePrivateKeyBytes(priKeyBytes)));
220
+ const x = pubkey.x;
221
+ const y = pubkey.y;
222
+
223
+ const xHex = x.toString(16).padStart(64, '0');
224
+ const yHex = y.toString(16).padStart(64, '0');
225
+
226
+ const pubkeyHex = `04${xHex}${yHex}`;
227
+ const pubkeyBytes = hexStr2byteArray(pubkeyHex);
228
+
229
+ return pubkeyBytes;
230
+ }
231
+
232
+ export function ECKeySign(hashBytes: BytesLike, priKeyBytes: BytesLike) {
233
+ const signature = secp.sign(byteArray2hexStr(hashBytes), byteArray2hexStr(priKeyBytes));
234
+
235
+ const r = signature.r.toString(16);
236
+ const s = signature.s.toString(16);
237
+ const v = signature.recovery! + 27;
238
+
239
+ return r.padStart(64, '0') + s.padStart(64, '0') + byte2hexStr(v);
240
+ }
241
+
242
+ export function SHA256(msgBytes: BytesLike) {
243
+ const msgHex = byteArray2hexStr(msgBytes);
244
+ const hashHex = sha256('0x' + msgHex).replace(/^0x/, '');
245
+ return hexStr2byteArray(hashHex);
246
+ }
247
+
248
+ export function passwordToAddress(password: string) {
249
+ const com_priKeyBytes = base64DecodeFromString(password);
250
+ const com_addressBytes = getAddressFromPriKey(com_priKeyBytes);
251
+
252
+ return getBase58CheckAddress(com_addressBytes);
253
+ }
254
+
255
+ export function pkToAddress(privateKey: string, strict = false) {
256
+ const com_priKeyBytes = hexStr2byteArray(privateKey, strict);
257
+ const com_addressBytes = getAddressFromPriKey(com_priKeyBytes);
258
+
259
+ return getBase58CheckAddress(com_addressBytes);
260
+ }
261
+
262
+ export function sha3(string: string, prefix = true) {
263
+ return (prefix ? '0x' : '') + keccak256(Buffer.from(string, 'utf-8')).toString().substring(2);
264
+ }
@@ -0,0 +1,60 @@
1
+ import {
2
+ keccak256,
3
+ sha256,
4
+ toUtf8Bytes,
5
+ toUtf8String,
6
+ recoverAddress,
7
+ SigningKey,
8
+ AbiCoder,
9
+ Signature,
10
+ concat,
11
+ id,
12
+ Mnemonic,
13
+ Wordlist,
14
+ wordlists,
15
+ HDNodeWallet as ethersHDNodeWallet,
16
+ getBytes,
17
+ computeHmac,
18
+ } from 'ethers';
19
+
20
+ import type { BytesLike, SignatureLike } from 'ethers';
21
+
22
+ import { Interface } from './interface.js';
23
+
24
+ const splitSignature = (sigBytes: SignatureLike) => Signature.from(sigBytes);
25
+ const joinSignature = (splitSig: SignatureLike) => Signature.from(splitSig).serialized;
26
+ const arrayify = (value: BytesLike) => getBytes(value);
27
+ const FormatTypes = {
28
+ sighash: 'sighash',
29
+ minimal: 'minimal',
30
+ full: 'full',
31
+ json: 'json',
32
+ };
33
+ const isValidMnemonic = Mnemonic.isValidMnemonic;
34
+
35
+ computeHmac.register((algorithm, key, data) => {
36
+ return computeHmac._(algorithm, Buffer.from(key), Buffer.from(data));
37
+ });
38
+
39
+ export {
40
+ keccak256,
41
+ sha256,
42
+ toUtf8Bytes,
43
+ toUtf8String,
44
+ recoverAddress,
45
+ Signature,
46
+ SigningKey,
47
+ AbiCoder,
48
+ Interface,
49
+ FormatTypes,
50
+ splitSignature,
51
+ joinSignature,
52
+ arrayify,
53
+ ethersHDNodeWallet,
54
+ concat,
55
+ id,
56
+ Mnemonic,
57
+ Wordlist,
58
+ wordlists,
59
+ isValidMnemonic,
60
+ };