@arkecosystem/typescript-crypto 0.0.3 → 0.0.5

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 (196) hide show
  1. package/.github/workflows/ci.yml +23 -23
  2. package/.github/workflows/format.yml +80 -0
  3. package/.github/workflows/publish.yml +1 -1
  4. package/.prettierrc.json +8 -0
  5. package/dist/enums/ContractAbiType.d.ts.map +1 -1
  6. package/dist/exceptions/index.d.ts.map +1 -1
  7. package/dist/identities/PrivateKey.d.ts +2 -2
  8. package/dist/identities/PrivateKey.d.ts.map +1 -1
  9. package/dist/identities/PrivateKey.js +1 -1
  10. package/dist/identities/WIF.d.ts.map +1 -1
  11. package/dist/identities/WIF.js +2 -2
  12. package/dist/index.js +532 -626
  13. package/dist/networks/AbstractNetwork.d.ts +1 -1
  14. package/dist/networks/AbstractNetwork.d.ts.map +1 -1
  15. package/dist/networks/Mainnet.d.ts +1 -1
  16. package/dist/networks/Mainnet.d.ts.map +1 -1
  17. package/dist/networks/Mainnet.js +1 -1
  18. package/dist/networks/Testnet.d.ts +1 -1
  19. package/dist/networks/Testnet.d.ts.map +1 -1
  20. package/dist/networks/Testnet.js +1 -1
  21. package/dist/transactions/Deserializer.d.ts +5 -5
  22. package/dist/transactions/Deserializer.d.ts.map +1 -1
  23. package/dist/transactions/Deserializer.js +18 -18
  24. package/dist/transactions/Serializer.d.ts +0 -1
  25. package/dist/transactions/Serializer.d.ts.map +1 -1
  26. package/dist/transactions/Serializer.js +0 -3
  27. package/dist/transactions/builders/AbstractTransactionBuilder.d.ts +7 -6
  28. package/dist/transactions/builders/AbstractTransactionBuilder.d.ts.map +1 -1
  29. package/dist/transactions/builders/AbstractTransactionBuilder.js +15 -8
  30. package/dist/transactions/builders/EvmCallBuilder.d.ts +3 -3
  31. package/dist/transactions/builders/EvmCallBuilder.d.ts.map +1 -1
  32. package/dist/transactions/builders/MultipaymentBuilder.d.ts +5 -4
  33. package/dist/transactions/builders/MultipaymentBuilder.d.ts.map +1 -1
  34. package/dist/transactions/builders/MultipaymentBuilder.js +6 -2
  35. package/dist/transactions/builders/TransferBuilder.d.ts +4 -3
  36. package/dist/transactions/builders/TransferBuilder.d.ts.map +1 -1
  37. package/dist/transactions/builders/TransferBuilder.js +4 -0
  38. package/dist/transactions/builders/UnvoteBuilder.d.ts +3 -3
  39. package/dist/transactions/builders/UnvoteBuilder.d.ts.map +1 -1
  40. package/dist/transactions/builders/UnvoteBuilder.js +1 -1
  41. package/dist/transactions/builders/UsernameRegistrationBuilder.d.ts +3 -3
  42. package/dist/transactions/builders/UsernameRegistrationBuilder.d.ts.map +1 -1
  43. package/dist/transactions/builders/UsernameRegistrationBuilder.js +1 -1
  44. package/dist/transactions/builders/UsernameResignationBuilder.d.ts +3 -3
  45. package/dist/transactions/builders/UsernameResignationBuilder.d.ts.map +1 -1
  46. package/dist/transactions/builders/UsernameResignationBuilder.js +1 -1
  47. package/dist/transactions/builders/ValidatorRegistrationBuilder.d.ts +3 -3
  48. package/dist/transactions/builders/ValidatorRegistrationBuilder.d.ts.map +1 -1
  49. package/dist/transactions/builders/ValidatorRegistrationBuilder.js +4 -2
  50. package/dist/transactions/builders/ValidatorResignationBuilder.d.ts +3 -3
  51. package/dist/transactions/builders/ValidatorResignationBuilder.d.ts.map +1 -1
  52. package/dist/transactions/builders/ValidatorResignationBuilder.js +1 -1
  53. package/dist/transactions/builders/VoteBuilder.d.ts +3 -3
  54. package/dist/transactions/builders/VoteBuilder.d.ts.map +1 -1
  55. package/dist/transactions/builders/VoteBuilder.js +1 -1
  56. package/dist/transactions/types/AbstractTransaction.d.ts +2 -5
  57. package/dist/transactions/types/AbstractTransaction.d.ts.map +1 -1
  58. package/dist/transactions/types/AbstractTransaction.js +13 -15
  59. package/dist/transactions/types/EvmCall.d.ts +0 -3
  60. package/dist/transactions/types/EvmCall.d.ts.map +1 -1
  61. package/dist/transactions/types/EvmCall.js +0 -8
  62. package/dist/transactions/types/Multipayment.d.ts +1 -3
  63. package/dist/transactions/types/Multipayment.d.ts.map +1 -1
  64. package/dist/transactions/types/Multipayment.js +1 -8
  65. package/dist/transactions/types/Transfer.d.ts +0 -3
  66. package/dist/transactions/types/Transfer.d.ts.map +1 -1
  67. package/dist/transactions/types/Transfer.js +0 -8
  68. package/dist/transactions/types/Unvote.d.ts +0 -3
  69. package/dist/transactions/types/Unvote.d.ts.map +1 -1
  70. package/dist/transactions/types/Unvote.js +0 -8
  71. package/dist/transactions/types/UsernameRegistration.d.ts +1 -3
  72. package/dist/transactions/types/UsernameRegistration.d.ts.map +1 -1
  73. package/dist/transactions/types/UsernameRegistration.js +0 -7
  74. package/dist/transactions/types/UsernameResignation.d.ts +0 -3
  75. package/dist/transactions/types/UsernameResignation.d.ts.map +1 -1
  76. package/dist/transactions/types/UsernameResignation.js +0 -7
  77. package/dist/transactions/types/ValidatorRegistration.d.ts +1 -3
  78. package/dist/transactions/types/ValidatorRegistration.d.ts.map +1 -1
  79. package/dist/transactions/types/ValidatorRegistration.js +0 -8
  80. package/dist/transactions/types/ValidatorResignation.d.ts +0 -3
  81. package/dist/transactions/types/ValidatorResignation.d.ts.map +1 -1
  82. package/dist/transactions/types/ValidatorResignation.js +0 -8
  83. package/dist/transactions/types/Vote.d.ts +1 -3
  84. package/dist/transactions/types/Vote.d.ts.map +1 -1
  85. package/dist/transactions/types/Vote.js +0 -8
  86. package/dist/types.d.ts +19 -19
  87. package/dist/types.d.ts.map +1 -1
  88. package/dist/utils/Abi/ArgumentDecoder.js +6 -6
  89. package/dist/utils/Abi/json/Abi.Consensus.json +15 -45
  90. package/dist/utils/Abi/json/Abi.Usernames.json +9 -27
  91. package/dist/utils/AbiDecoder.d.ts.map +1 -1
  92. package/dist/utils/AbiDecoder.js +3 -0
  93. package/dist/utils/AbiEncoder.d.ts +1 -1
  94. package/dist/utils/AbiEncoder.d.ts.map +1 -1
  95. package/dist/utils/AbiEncoder.js +2 -1
  96. package/dist/utils/Message.d.ts +1 -1
  97. package/dist/utils/Message.d.ts.map +1 -1
  98. package/dist/utils/Message.js +1 -1
  99. package/dist/utils/TransactionUtils.d.ts +0 -1
  100. package/dist/utils/TransactionUtils.d.ts.map +1 -1
  101. package/dist/utils/TransactionUtils.js +15 -18
  102. package/dist/utils/UnitConverter.d.ts.map +1 -1
  103. package/dist/utils/UnitConverter.js +12 -12
  104. package/eslint.config.mjs +19 -0
  105. package/jest.config.ts +6 -6
  106. package/package.json +6 -2
  107. package/src/enums/Constants.ts +1 -1
  108. package/src/enums/ContractAbiType.ts +4 -4
  109. package/src/exceptions/index.ts +1 -1
  110. package/src/identities/PrivateKey.ts +3 -3
  111. package/src/identities/WIF.ts +2 -3
  112. package/src/networks/AbstractNetwork.ts +3 -3
  113. package/src/networks/Mainnet.ts +3 -3
  114. package/src/networks/Testnet.ts +1 -1
  115. package/src/transactions/Deserializer.ts +39 -30
  116. package/src/transactions/Serializer.ts +1 -5
  117. package/src/transactions/builders/AbstractTransactionBuilder.ts +20 -11
  118. package/src/transactions/builders/EvmCallBuilder.ts +3 -3
  119. package/src/transactions/builders/MultipaymentBuilder.ts +13 -6
  120. package/src/transactions/builders/TransferBuilder.ts +8 -3
  121. package/src/transactions/builders/UnvoteBuilder.ts +4 -4
  122. package/src/transactions/builders/UsernameRegistrationBuilder.ts +4 -4
  123. package/src/transactions/builders/UsernameResignationBuilder.ts +4 -4
  124. package/src/transactions/builders/ValidatorRegistrationBuilder.ts +8 -5
  125. package/src/transactions/builders/ValidatorResignationBuilder.ts +4 -4
  126. package/src/transactions/builders/VoteBuilder.ts +4 -4
  127. package/src/transactions/types/AbstractTransaction.ts +17 -24
  128. package/src/transactions/types/EvmCall.ts +0 -15
  129. package/src/transactions/types/Multipayment.ts +3 -15
  130. package/src/transactions/types/Transfer.ts +0 -15
  131. package/src/transactions/types/Unvote.ts +0 -15
  132. package/src/transactions/types/UsernameRegistration.ts +1 -13
  133. package/src/transactions/types/UsernameResignation.ts +0 -14
  134. package/src/transactions/types/ValidatorRegistration.ts +1 -14
  135. package/src/transactions/types/ValidatorResignation.ts +0 -15
  136. package/src/transactions/types/Vote.ts +1 -14
  137. package/src/types.ts +19 -19
  138. package/src/utils/Abi/ArgumentDecoder.ts +6 -6
  139. package/src/utils/Abi/json/Abi.Consensus.json +1641 -1671
  140. package/src/utils/Abi/json/Abi.Multipayment.json +108 -108
  141. package/src/utils/Abi/json/Abi.Usernames.json +880 -898
  142. package/src/utils/AbiBase.ts +1 -1
  143. package/src/utils/AbiDecoder.ts +6 -3
  144. package/src/utils/AbiEncoder.ts +3 -2
  145. package/src/utils/Message.ts +1 -1
  146. package/src/utils/TransactionUtils.ts +24 -28
  147. package/src/utils/UnitConverter.ts +29 -29
  148. package/tests/fixtures/global.json +4 -4
  149. package/tests/fixtures/identity.json +10 -10
  150. package/tests/fixtures/transactions/evm-sign.json +4 -4
  151. package/tests/fixtures/transactions/multipayment-empty.json +4 -4
  152. package/tests/fixtures/transactions/multipayment-single.json +4 -4
  153. package/tests/fixtures/transactions/multipayment.json +4 -4
  154. package/tests/fixtures/transactions/transfer-0.json +4 -4
  155. package/tests/fixtures/transactions/transfer-large-amount.json +4 -4
  156. package/tests/fixtures/transactions/transfer.json +4 -4
  157. package/tests/fixtures/transactions/unvote.json +4 -4
  158. package/tests/fixtures/transactions/username-registration.json +4 -4
  159. package/tests/fixtures/transactions/username-resignation.json +4 -4
  160. package/tests/fixtures/transactions/validator-registration.json +4 -4
  161. package/tests/fixtures/transactions/validator-resignation.json +4 -4
  162. package/tests/fixtures/transactions/vote.json +4 -4
  163. package/tests/unit/configuration/Network.test.ts +52 -0
  164. package/tests/unit/identities/Address.test.ts +4 -4
  165. package/tests/unit/identities/PrivateKey.test.ts +5 -5
  166. package/tests/unit/identities/PublicKey.test.ts +9 -9
  167. package/tests/unit/identities/WIF.test.ts +1 -1
  168. package/tests/unit/transactions/Deserializer.test.ts +81 -63
  169. package/tests/unit/transactions/Serializer.test.ts +11 -1
  170. package/tests/unit/transactions/builders/EvmCallBuilder.test.ts +76 -9
  171. package/tests/unit/transactions/builders/MultipaymentBuilder.test.ts +125 -17
  172. package/tests/unit/transactions/builders/TransferBuilder.test.ts +146 -47
  173. package/tests/unit/transactions/builders/UnvoteBuilder.test.ts +75 -8
  174. package/tests/unit/transactions/builders/UsernameRegistrationBuilder.test.ts +75 -8
  175. package/tests/unit/transactions/builders/UsernameResignationBuilder.test.ts +75 -8
  176. package/tests/unit/transactions/builders/ValidatorRegistrationBuilder.test.ts +103 -8
  177. package/tests/unit/transactions/builders/ValidatorResignationBuilder.test.ts +75 -8
  178. package/tests/unit/transactions/builders/VoteBuilder.test.ts +75 -8
  179. package/tests/unit/transactions/types/AbstractTransaction.test.ts +27 -30
  180. package/tests/unit/transactions/types/EvmCall.test.ts +22 -0
  181. package/tests/unit/transactions/types/Multipayment.test.ts +38 -0
  182. package/tests/unit/transactions/types/Transfer.test.ts +18 -0
  183. package/tests/unit/transactions/types/Unvote.test.ts +18 -0
  184. package/tests/unit/transactions/types/UsernameRegistration.test.ts +22 -0
  185. package/tests/unit/transactions/types/UsernameResignation.test.ts +18 -0
  186. package/tests/unit/transactions/types/ValidatorRegistration.test.ts +22 -0
  187. package/tests/unit/transactions/types/ValidatorResignation.test.ts +18 -0
  188. package/tests/unit/transactions/types/Vote.test.ts +20 -0
  189. package/tests/unit/utils/Abi/ArgumentDecoder.test.ts +17 -16
  190. package/tests/unit/utils/AbiEncoder.test.ts +2 -2
  191. package/tests/unit/utils/Message.test.ts +1 -1
  192. package/tests/unit/utils/TransactionUtils.test.ts +1 -5
  193. package/tests/unit/utils/UnitConverter.test.ts +81 -47
  194. package/tsconfig.json +1 -1
  195. package/.eslintrc.js +0 -12
  196. package/prettier.config.js +0 -8
@@ -8,7 +8,7 @@ it("should build a transaction", async () => {
8
8
  await UsernameResignationBuilder.new()
9
9
  .nonce(fixture.data.nonce)
10
10
  .gasPrice(fixture.data.gasPrice)
11
- .gasLimit(fixture.data.gasLimit)
11
+ .gas(fixture.data.gas)
12
12
  .network(fixture.data.network)
13
13
  .sign(identityFixture.passphrase)
14
14
  ).transaction;
@@ -16,33 +16,100 @@ it("should build a transaction", async () => {
16
16
  expect(transaction.data.gasPrice).toBe(fixture.data.gasPrice);
17
17
  expect(transaction.data.nonce).toBe(fixture.data.nonce);
18
18
  expect(transaction.data.network).toBe(fixture.data.network);
19
- expect(transaction.data.gasLimit).toBe(fixture.data.gasLimit);
20
- expect(transaction.data.recipientAddress).toBe(fixture.data.recipientAddress);
19
+ expect(transaction.data.gas).toBe(fixture.data.gas);
20
+ expect(transaction.data.to).toBe(fixture.data.to);
21
21
  expect(transaction.data.value).toBe(fixture.data.value);
22
22
  expect(transaction.data.v).toBe(fixture.data.v);
23
23
  expect(transaction.data.r).toBe(fixture.data.r);
24
24
  expect(transaction.data.s).toBe(fixture.data.s);
25
- expect(transaction.data.id).toBe(fixture.data.id);
25
+ expect(transaction.data.hash).toBe(fixture.data.hash);
26
26
 
27
27
  expect(transaction.serialize().toString("hex")).toEqual(fixture.serialized);
28
28
  expect(transaction.verify()).toBe(true);
29
29
  });
30
30
 
31
31
  it("should sign a transaction", async () => {
32
- const transaction = (await UsernameResignationBuilder.new(fixture.data).sign(identityFixture.passphrase))
32
+ const transaction = (await UsernameResignationBuilder.new({ ...fixture.data }).sign(identityFixture.passphrase))
33
33
  .transaction;
34
34
 
35
35
  expect(transaction.data.gasPrice).toBe(fixture.data.gasPrice);
36
36
  expect(transaction.data.nonce).toBe(fixture.data.nonce);
37
37
  expect(transaction.data.network).toBe(fixture.data.network);
38
- expect(transaction.data.gasLimit).toBe(fixture.data.gasLimit);
39
- expect(transaction.data.recipientAddress).toBe(fixture.data.recipientAddress);
38
+ expect(transaction.data.gas).toBe(fixture.data.gas);
39
+ expect(transaction.data.to).toBe(fixture.data.to);
40
40
  expect(transaction.data.value).toBe(fixture.data.value);
41
41
  expect(transaction.data.v).toBe(fixture.data.v);
42
42
  expect(transaction.data.r).toBe(fixture.data.r);
43
43
  expect(transaction.data.s).toBe(fixture.data.s);
44
- expect(transaction.data.id).toBe(fixture.data.id);
44
+ expect(transaction.data.hash).toBe(fixture.data.hash);
45
45
 
46
46
  expect(transaction.serialize().toString("hex")).toEqual(fixture.serialized);
47
47
  expect(transaction.verify()).toBe(true);
48
48
  });
49
+
50
+ it("should verify", async () => {
51
+ const transaction = await UsernameResignationBuilder.new({ ...fixture.data }).sign(identityFixture.passphrase);
52
+
53
+ expect(transaction.verify()).toBe(true);
54
+ });
55
+
56
+ it("should convert to an array", async () => {
57
+ const transaction = await UsernameResignationBuilder.new({ ...fixture.data }).sign(identityFixture.passphrase);
58
+
59
+ expect(transaction.toObject()).toEqual({
60
+ data: fixture.data.data,
61
+ to: fixture.data.to,
62
+ value: fixture.data.value,
63
+ gasPrice: fixture.data.gasPrice,
64
+ gas: fixture.data.gas,
65
+ network: fixture.data.network,
66
+ nonce: fixture.data.nonce,
67
+ v: fixture.data.v,
68
+ r: fixture.data.r,
69
+ s: fixture.data.s,
70
+ senderPublicKey: fixture.data.senderPublicKey,
71
+ hash: fixture.data.hash,
72
+ });
73
+ });
74
+
75
+ it("should convert to json", async () => {
76
+ const transaction = await UsernameResignationBuilder.new({ ...fixture.data }).sign(identityFixture.passphrase);
77
+
78
+ expect(transaction.toJson()).toEqual(
79
+ JSON.stringify({
80
+ gasPrice: fixture.data.gasPrice,
81
+ network: fixture.data.network,
82
+ hash: fixture.data.hash,
83
+ gas: fixture.data.gas,
84
+ nonce: fixture.data.nonce,
85
+ senderPublicKey: fixture.data.senderPublicKey,
86
+ to: fixture.data.to,
87
+ value: fixture.data.value,
88
+ data: fixture.data.data,
89
+ r: fixture.data.r,
90
+ s: fixture.data.s,
91
+ v: fixture.data.v,
92
+ }),
93
+ );
94
+ });
95
+
96
+ it("should convert to string", async () => {
97
+ const transaction = await UsernameResignationBuilder.new({ ...fixture.data }).sign(identityFixture.passphrase);
98
+
99
+ expect(transaction.toString()).toEqual(
100
+ JSON.stringify({
101
+ gasPrice: fixture.data.gasPrice,
102
+ network: fixture.data.network,
103
+ hash: fixture.data.hash,
104
+ gas: fixture.data.gas,
105
+ nonce: fixture.data.nonce,
106
+ senderPublicKey: fixture.data.senderPublicKey,
107
+ to: fixture.data.to,
108
+ value: fixture.data.value,
109
+ data: fixture.data.data,
110
+ r: fixture.data.r,
111
+ s: fixture.data.s,
112
+ v: fixture.data.v,
113
+ }),
114
+ );
115
+ });
@@ -4,6 +4,34 @@ import identityFixture from "@tests/fixtures/identity.json";
4
4
  import { ValidatorRegistrationBuilder } from "@/transactions/builders/ValidatorRegistrationBuilder";
5
5
 
6
6
  it("should build a transaction", async () => {
7
+ const transaction = (
8
+ await ValidatorRegistrationBuilder.new()
9
+ .validatorPublicKey(
10
+ "30954f46d6097a1d314e900e66e11e0dad0a57cd03e04ec99f0dedd1c765dcb11e6d7fa02e22cf40f9ee23d9cc1c0624",
11
+ )
12
+ .nonce(fixture.data.nonce)
13
+ .gasPrice(fixture.data.gasPrice)
14
+ .gas(fixture.data.gas)
15
+ .network(fixture.data.network)
16
+ .sign(identityFixture.passphrase)
17
+ ).transaction;
18
+
19
+ expect(transaction.data.gasPrice).toBe(fixture.data.gasPrice);
20
+ expect(transaction.data.nonce).toBe(fixture.data.nonce);
21
+ expect(transaction.data.network).toBe(fixture.data.network);
22
+ expect(transaction.data.gas).toBe(fixture.data.gas);
23
+ expect(transaction.data.to).toBe(fixture.data.to);
24
+ expect(transaction.data.value).toBe(fixture.data.value);
25
+ expect(transaction.data.v).toBe(fixture.data.v);
26
+ expect(transaction.data.r).toBe(fixture.data.r);
27
+ expect(transaction.data.s).toBe(fixture.data.s);
28
+ expect(transaction.data.hash).toBe(fixture.data.hash);
29
+
30
+ expect(transaction.serialize().toString("hex")).toEqual(fixture.serialized);
31
+ expect(transaction.verify()).toBe(true);
32
+ });
33
+
34
+ it("should handle validator public key with leading 0x", async () => {
7
35
  const transaction = (
8
36
  await ValidatorRegistrationBuilder.new()
9
37
  .validatorPublicKey(
@@ -11,7 +39,7 @@ it("should build a transaction", async () => {
11
39
  )
12
40
  .nonce(fixture.data.nonce)
13
41
  .gasPrice(fixture.data.gasPrice)
14
- .gasLimit(fixture.data.gasLimit)
42
+ .gas(fixture.data.gas)
15
43
  .network(fixture.data.network)
16
44
  .sign(identityFixture.passphrase)
17
45
  ).transaction;
@@ -19,33 +47,100 @@ it("should build a transaction", async () => {
19
47
  expect(transaction.data.gasPrice).toBe(fixture.data.gasPrice);
20
48
  expect(transaction.data.nonce).toBe(fixture.data.nonce);
21
49
  expect(transaction.data.network).toBe(fixture.data.network);
22
- expect(transaction.data.gasLimit).toBe(fixture.data.gasLimit);
23
- expect(transaction.data.recipientAddress).toBe(fixture.data.recipientAddress);
50
+ expect(transaction.data.gas).toBe(fixture.data.gas);
51
+ expect(transaction.data.to).toBe(fixture.data.to);
24
52
  expect(transaction.data.value).toBe(fixture.data.value);
25
53
  expect(transaction.data.v).toBe(fixture.data.v);
26
54
  expect(transaction.data.r).toBe(fixture.data.r);
27
55
  expect(transaction.data.s).toBe(fixture.data.s);
28
- expect(transaction.data.id).toBe(fixture.data.id);
56
+ expect(transaction.data.hash).toBe(fixture.data.hash);
29
57
 
30
58
  expect(transaction.serialize().toString("hex")).toEqual(fixture.serialized);
31
59
  expect(transaction.verify()).toBe(true);
32
60
  });
33
61
 
34
62
  it("should sign a transaction", async () => {
35
- const transaction = (await ValidatorRegistrationBuilder.new(fixture.data).sign(identityFixture.passphrase))
63
+ const transaction = (await ValidatorRegistrationBuilder.new({ ...fixture.data }).sign(identityFixture.passphrase))
36
64
  .transaction;
37
65
 
38
66
  expect(transaction.data.gasPrice).toBe(fixture.data.gasPrice);
39
67
  expect(transaction.data.nonce).toBe(fixture.data.nonce);
40
68
  expect(transaction.data.network).toBe(fixture.data.network);
41
- expect(transaction.data.gasLimit).toBe(fixture.data.gasLimit);
42
- expect(transaction.data.recipientAddress).toBe(fixture.data.recipientAddress);
69
+ expect(transaction.data.gas).toBe(fixture.data.gas);
70
+ expect(transaction.data.to).toBe(fixture.data.to);
43
71
  expect(transaction.data.value).toBe(fixture.data.value);
44
72
  expect(transaction.data.v).toBe(fixture.data.v);
45
73
  expect(transaction.data.r).toBe(fixture.data.r);
46
74
  expect(transaction.data.s).toBe(fixture.data.s);
47
- expect(transaction.data.id).toBe(fixture.data.id);
75
+ expect(transaction.data.hash).toBe(fixture.data.hash);
48
76
 
49
77
  expect(transaction.serialize().toString("hex")).toEqual(fixture.serialized);
50
78
  expect(transaction.verify()).toBe(true);
51
79
  });
80
+
81
+ it("should verify", async () => {
82
+ const transaction = await ValidatorRegistrationBuilder.new({ ...fixture.data }).sign(identityFixture.passphrase);
83
+
84
+ expect(transaction.verify()).toBe(true);
85
+ });
86
+
87
+ it("should convert to an array", async () => {
88
+ const transaction = await ValidatorRegistrationBuilder.new({ ...fixture.data }).sign(identityFixture.passphrase);
89
+
90
+ expect(transaction.toObject()).toEqual({
91
+ data: fixture.data.data,
92
+ to: fixture.data.to,
93
+ value: fixture.data.value,
94
+ gasPrice: fixture.data.gasPrice,
95
+ gas: fixture.data.gas,
96
+ network: fixture.data.network,
97
+ nonce: fixture.data.nonce,
98
+ v: fixture.data.v,
99
+ r: fixture.data.r,
100
+ s: fixture.data.s,
101
+ senderPublicKey: fixture.data.senderPublicKey,
102
+ hash: fixture.data.hash,
103
+ });
104
+ });
105
+
106
+ it("should convert to json", async () => {
107
+ const transaction = await ValidatorRegistrationBuilder.new({ ...fixture.data }).sign(identityFixture.passphrase);
108
+
109
+ expect(transaction.toJson()).toEqual(
110
+ JSON.stringify({
111
+ gasPrice: fixture.data.gasPrice,
112
+ network: fixture.data.network,
113
+ hash: fixture.data.hash,
114
+ gas: fixture.data.gas,
115
+ nonce: fixture.data.nonce,
116
+ senderPublicKey: fixture.data.senderPublicKey,
117
+ to: fixture.data.to,
118
+ value: fixture.data.value,
119
+ data: fixture.data.data,
120
+ r: fixture.data.r,
121
+ s: fixture.data.s,
122
+ v: fixture.data.v,
123
+ }),
124
+ );
125
+ });
126
+
127
+ it("should convert to string", async () => {
128
+ const transaction = await ValidatorRegistrationBuilder.new({ ...fixture.data }).sign(identityFixture.passphrase);
129
+
130
+ expect(transaction.toString()).toEqual(
131
+ JSON.stringify({
132
+ gasPrice: fixture.data.gasPrice,
133
+ network: fixture.data.network,
134
+ hash: fixture.data.hash,
135
+ gas: fixture.data.gas,
136
+ nonce: fixture.data.nonce,
137
+ senderPublicKey: fixture.data.senderPublicKey,
138
+ to: fixture.data.to,
139
+ value: fixture.data.value,
140
+ data: fixture.data.data,
141
+ r: fixture.data.r,
142
+ s: fixture.data.s,
143
+ v: fixture.data.v,
144
+ }),
145
+ );
146
+ });
@@ -8,7 +8,7 @@ it("should build a transaction", async () => {
8
8
  await ValidatorResignationBuilder.new()
9
9
  .nonce(fixture.data.nonce)
10
10
  .gasPrice(fixture.data.gasPrice)
11
- .gasLimit(fixture.data.gasLimit)
11
+ .gas(fixture.data.gas)
12
12
  .network(fixture.data.network)
13
13
  .sign(identityFixture.passphrase)
14
14
  ).transaction;
@@ -16,33 +16,100 @@ it("should build a transaction", async () => {
16
16
  expect(transaction.data.gasPrice).toBe(fixture.data.gasPrice);
17
17
  expect(transaction.data.nonce).toBe(fixture.data.nonce);
18
18
  expect(transaction.data.network).toBe(fixture.data.network);
19
- expect(transaction.data.gasLimit).toBe(fixture.data.gasLimit);
20
- expect(transaction.data.recipientAddress).toBe(fixture.data.recipientAddress);
19
+ expect(transaction.data.gas).toBe(fixture.data.gas);
20
+ expect(transaction.data.to).toBe(fixture.data.to);
21
21
  expect(transaction.data.value).toBe(fixture.data.value);
22
22
  expect(transaction.data.v).toBe(fixture.data.v);
23
23
  expect(transaction.data.r).toBe(fixture.data.r);
24
24
  expect(transaction.data.s).toBe(fixture.data.s);
25
- expect(transaction.data.id).toBe(fixture.data.id);
25
+ expect(transaction.data.hash).toBe(fixture.data.hash);
26
26
 
27
27
  expect(transaction.serialize().toString("hex")).toEqual(fixture.serialized);
28
28
  expect(transaction.verify()).toBe(true);
29
29
  });
30
30
 
31
31
  it("should sign a transaction", async () => {
32
- const transaction = (await ValidatorResignationBuilder.new(fixture.data).sign(identityFixture.passphrase))
32
+ const transaction = (await ValidatorResignationBuilder.new({ ...fixture.data }).sign(identityFixture.passphrase))
33
33
  .transaction;
34
34
 
35
35
  expect(transaction.data.gasPrice).toBe(fixture.data.gasPrice);
36
36
  expect(transaction.data.nonce).toBe(fixture.data.nonce);
37
37
  expect(transaction.data.network).toBe(fixture.data.network);
38
- expect(transaction.data.gasLimit).toBe(fixture.data.gasLimit);
39
- expect(transaction.data.recipientAddress).toBe(fixture.data.recipientAddress);
38
+ expect(transaction.data.gas).toBe(fixture.data.gas);
39
+ expect(transaction.data.to).toBe(fixture.data.to);
40
40
  expect(transaction.data.value).toBe(fixture.data.value);
41
41
  expect(transaction.data.v).toBe(fixture.data.v);
42
42
  expect(transaction.data.r).toBe(fixture.data.r);
43
43
  expect(transaction.data.s).toBe(fixture.data.s);
44
- expect(transaction.data.id).toBe(fixture.data.id);
44
+ expect(transaction.data.hash).toBe(fixture.data.hash);
45
45
 
46
46
  expect(transaction.serialize().toString("hex")).toEqual(fixture.serialized);
47
47
  expect(transaction.verify()).toBe(true);
48
48
  });
49
+
50
+ it("should verify", async () => {
51
+ const transaction = await ValidatorResignationBuilder.new({ ...fixture.data }).sign(identityFixture.passphrase);
52
+
53
+ expect(transaction.verify()).toBe(true);
54
+ });
55
+
56
+ it("should convert to an array", async () => {
57
+ const transaction = await ValidatorResignationBuilder.new({ ...fixture.data }).sign(identityFixture.passphrase);
58
+
59
+ expect(transaction.toObject()).toEqual({
60
+ data: fixture.data.data,
61
+ to: fixture.data.to,
62
+ value: fixture.data.value,
63
+ gasPrice: fixture.data.gasPrice,
64
+ gas: fixture.data.gas,
65
+ network: fixture.data.network,
66
+ nonce: fixture.data.nonce,
67
+ v: fixture.data.v,
68
+ r: fixture.data.r,
69
+ s: fixture.data.s,
70
+ senderPublicKey: fixture.data.senderPublicKey,
71
+ hash: fixture.data.hash,
72
+ });
73
+ });
74
+
75
+ it("should convert to json", async () => {
76
+ const transaction = await ValidatorResignationBuilder.new({ ...fixture.data }).sign(identityFixture.passphrase);
77
+
78
+ expect(transaction.toJson()).toEqual(
79
+ JSON.stringify({
80
+ gasPrice: fixture.data.gasPrice,
81
+ network: fixture.data.network,
82
+ hash: fixture.data.hash,
83
+ gas: fixture.data.gas,
84
+ nonce: fixture.data.nonce,
85
+ senderPublicKey: fixture.data.senderPublicKey,
86
+ to: fixture.data.to,
87
+ value: fixture.data.value,
88
+ data: fixture.data.data,
89
+ r: fixture.data.r,
90
+ s: fixture.data.s,
91
+ v: fixture.data.v,
92
+ }),
93
+ );
94
+ });
95
+
96
+ it("should convert to string", async () => {
97
+ const transaction = await ValidatorResignationBuilder.new({ ...fixture.data }).sign(identityFixture.passphrase);
98
+
99
+ expect(transaction.toString()).toEqual(
100
+ JSON.stringify({
101
+ gasPrice: fixture.data.gasPrice,
102
+ network: fixture.data.network,
103
+ hash: fixture.data.hash,
104
+ gas: fixture.data.gas,
105
+ nonce: fixture.data.nonce,
106
+ senderPublicKey: fixture.data.senderPublicKey,
107
+ to: fixture.data.to,
108
+ value: fixture.data.value,
109
+ data: fixture.data.data,
110
+ r: fixture.data.r,
111
+ s: fixture.data.s,
112
+ v: fixture.data.v,
113
+ }),
114
+ );
115
+ });
@@ -9,7 +9,7 @@ it("should build a transaction", async () => {
9
9
  .vote("0xc3bbe9b1cee1ff85ad72b87414b0e9b7f2366763")
10
10
  .nonce(fixture.data.nonce)
11
11
  .gasPrice(fixture.data.gasPrice)
12
- .gasLimit(fixture.data.gasLimit)
12
+ .gas(fixture.data.gas)
13
13
  .network(fixture.data.network)
14
14
  .sign(identityFixture.passphrase)
15
15
  ).transaction;
@@ -17,32 +17,99 @@ it("should build a transaction", async () => {
17
17
  expect(transaction.data.gasPrice).toBe(fixture.data.gasPrice);
18
18
  expect(transaction.data.nonce).toBe(fixture.data.nonce);
19
19
  expect(transaction.data.network).toBe(fixture.data.network);
20
- expect(transaction.data.gasLimit).toBe(fixture.data.gasLimit);
21
- expect(transaction.data.recipientAddress).toBe(fixture.data.recipientAddress);
20
+ expect(transaction.data.gas).toBe(fixture.data.gas);
21
+ expect(transaction.data.to).toBe(fixture.data.to);
22
22
  expect(transaction.data.value).toBe(fixture.data.value);
23
23
  expect(transaction.data.v).toBe(fixture.data.v);
24
24
  expect(transaction.data.r).toBe(fixture.data.r);
25
25
  expect(transaction.data.s).toBe(fixture.data.s);
26
- expect(transaction.data.id).toBe(fixture.data.id);
26
+ expect(transaction.data.hash).toBe(fixture.data.hash);
27
27
 
28
28
  expect(transaction.serialize().toString("hex")).toEqual(fixture.serialized);
29
29
  expect(transaction.verify()).toBe(true);
30
30
  });
31
31
 
32
32
  it("should sign a transaction", async () => {
33
- const transaction = (await VoteBuilder.new(fixture.data).sign(identityFixture.passphrase)).transaction;
33
+ const transaction = (await VoteBuilder.new({ ...fixture.data }).sign(identityFixture.passphrase)).transaction;
34
34
 
35
35
  expect(transaction.data.gasPrice).toBe(fixture.data.gasPrice);
36
36
  expect(transaction.data.nonce).toBe(fixture.data.nonce);
37
37
  expect(transaction.data.network).toBe(fixture.data.network);
38
- expect(transaction.data.gasLimit).toBe(fixture.data.gasLimit);
39
- expect(transaction.data.recipientAddress).toBe(fixture.data.recipientAddress);
38
+ expect(transaction.data.gas).toBe(fixture.data.gas);
39
+ expect(transaction.data.to).toBe(fixture.data.to);
40
40
  expect(transaction.data.value).toBe(fixture.data.value);
41
41
  expect(transaction.data.v).toBe(fixture.data.v);
42
42
  expect(transaction.data.r).toBe(fixture.data.r);
43
43
  expect(transaction.data.s).toBe(fixture.data.s);
44
- expect(transaction.data.id).toBe(fixture.data.id);
44
+ expect(transaction.data.hash).toBe(fixture.data.hash);
45
45
 
46
46
  expect(transaction.serialize().toString("hex")).toEqual(fixture.serialized);
47
47
  expect(transaction.verify()).toBe(true);
48
48
  });
49
+
50
+ it("should verify", async () => {
51
+ const transaction = await VoteBuilder.new({ ...fixture.data }).sign(identityFixture.passphrase);
52
+
53
+ expect(transaction.verify()).toBe(true);
54
+ });
55
+
56
+ it("should convert to an array", async () => {
57
+ const transaction = await VoteBuilder.new({ ...fixture.data }).sign(identityFixture.passphrase);
58
+
59
+ expect(transaction.toObject()).toEqual({
60
+ data: fixture.data.data,
61
+ to: fixture.data.to,
62
+ value: fixture.data.value,
63
+ gasPrice: fixture.data.gasPrice,
64
+ gas: fixture.data.gas,
65
+ network: fixture.data.network,
66
+ nonce: fixture.data.nonce,
67
+ v: fixture.data.v,
68
+ r: fixture.data.r,
69
+ s: fixture.data.s,
70
+ senderPublicKey: fixture.data.senderPublicKey,
71
+ hash: fixture.data.hash,
72
+ });
73
+ });
74
+
75
+ it("should convert to json", async () => {
76
+ const transaction = await VoteBuilder.new({ ...fixture.data }).sign(identityFixture.passphrase);
77
+
78
+ expect(transaction.toJson()).toEqual(
79
+ JSON.stringify({
80
+ gasPrice: fixture.data.gasPrice,
81
+ network: fixture.data.network,
82
+ hash: fixture.data.hash,
83
+ gas: fixture.data.gas,
84
+ nonce: fixture.data.nonce,
85
+ senderPublicKey: fixture.data.senderPublicKey,
86
+ to: fixture.data.to,
87
+ value: fixture.data.value,
88
+ data: fixture.data.data,
89
+ r: fixture.data.r,
90
+ s: fixture.data.s,
91
+ v: fixture.data.v,
92
+ }),
93
+ );
94
+ });
95
+
96
+ it("should convert to string", async () => {
97
+ const transaction = await VoteBuilder.new({ ...fixture.data }).sign(identityFixture.passphrase);
98
+
99
+ expect(transaction.toString()).toEqual(
100
+ JSON.stringify({
101
+ gasPrice: fixture.data.gasPrice,
102
+ network: fixture.data.network,
103
+ hash: fixture.data.hash,
104
+ gas: fixture.data.gas,
105
+ nonce: fixture.data.nonce,
106
+ senderPublicKey: fixture.data.senderPublicKey,
107
+ to: fixture.data.to,
108
+ value: fixture.data.value,
109
+ data: fixture.data.data,
110
+ r: fixture.data.r,
111
+ s: fixture.data.s,
112
+ v: fixture.data.v,
113
+ }),
114
+ );
115
+ });
@@ -1,26 +1,11 @@
1
1
  import fixture from "@tests/fixtures/transactions/transfer.json";
2
2
  import fixtureGlobal from "@tests/fixtures/global.json";
3
- import fixtureVote from "@tests/fixtures/transactions/vote.json";
4
3
 
5
4
  import { AbstractTransaction } from "@/transactions/types/AbstractTransaction";
6
5
  import { PrivateKey } from "@/identities/PrivateKey";
7
6
  import { TransactionData } from "@/types";
8
7
  import { Transfer } from "@/transactions/types/Transfer";
9
8
 
10
- class DecoderTransaction extends AbstractTransaction {
11
- constructor(data: TransactionData) {
12
- super(data);
13
-
14
- this.decodePayload(data);
15
-
16
- this.refreshPayloadData();
17
- }
18
-
19
- getPayload(): string {
20
- return "7061796C6F6164";
21
- }
22
- }
23
-
24
9
  class Transaction extends AbstractTransaction {
25
10
  getPayload(): string {
26
11
  return "7061796C6F6164";
@@ -55,12 +40,6 @@ it("should refresh the payload", () => {
55
40
  expect(transaction.data.data).toEqual("updated-payload");
56
41
  });
57
42
 
58
- it("should get the id", () => {
59
- const transaction = new Transfer(fixture.data);
60
-
61
- expect(transaction.getId()).toEqual(fixture.data.id);
62
- });
63
-
64
43
  it("should sign a transaction", () => {
65
44
  const privateKey = PrivateKey.fromPassphrase(fixtureGlobal.passphrase);
66
45
  const transaction = new Transfer(fixture.data);
@@ -78,7 +57,7 @@ it("should recover the sender", () => {
78
57
  transaction.recoverSender();
79
58
 
80
59
  expect(transaction.data.senderPublicKey).toEqual(fixture.data.senderPublicKey);
81
- expect(transaction.data.senderAddress).toEqual(fixture.data.senderAddress);
60
+ expect(transaction.data.from).toEqual(fixture.data.from);
82
61
  });
83
62
 
84
63
  it("should verify the transaction", () => {
@@ -87,6 +66,28 @@ it("should verify the transaction", () => {
87
66
  expect(transaction.verify()).toBe(true);
88
67
  });
89
68
 
69
+ it("should not verify if there is no sender public key", () => {
70
+ const transaction = new Transfer({
71
+ ...fixture.data,
72
+
73
+ senderPublicKey: undefined,
74
+ });
75
+
76
+ expect(transaction.verify()).toBe(false);
77
+ });
78
+
79
+ it("should throw an error if no signature", () => {
80
+ const transaction = new Transfer({
81
+ ...fixture.data,
82
+
83
+ v: undefined,
84
+ r: undefined,
85
+ s: undefined,
86
+ });
87
+
88
+ expect(() => transaction.verify()).toThrow("Transaction signature is missing");
89
+ });
90
+
90
91
  it("should convert the transaction to json", () => {
91
92
  const transaction = new Transaction(fixture.data);
92
93
 
@@ -94,11 +95,11 @@ it("should convert the transaction to json", () => {
94
95
  JSON.stringify({
95
96
  gasPrice: fixture.data["gasPrice"],
96
97
  network: fixture.data["network"],
97
- id: fixture.data["id"],
98
- gasLimit: fixture.data["gasLimit"],
98
+ hash: fixture.data["hash"],
99
+ gas: fixture.data["gas"],
99
100
  nonce: fixture.data["nonce"],
100
101
  senderPublicKey: fixture.data["senderPublicKey"],
101
- recipientAddress: fixture.data["recipientAddress"],
102
+ to: fixture.data["to"],
102
103
  value: fixture.data["value"],
103
104
  data: "7061796C6F6164",
104
105
  r: fixture.data["r"],
@@ -111,7 +112,7 @@ it("should convert the transaction to json", () => {
111
112
  it("should generate a hash for the transaction with signature", () => {
112
113
  const transaction = new Transfer(fixture.data);
113
114
 
114
- expect(transaction.hash()).toEqual(fixture.data.id);
115
+ expect(transaction.hash()).toEqual(fixture.data.hash);
115
116
  });
116
117
 
117
118
  it("should generate a hash for the transaction without signature", () => {
@@ -139,7 +140,3 @@ it("should serialize the transaction without signature", () => {
139
140
  // We don't store serialized without the signature in the fixtures so we do a partial check
140
141
  expect(fixture.serialized).toContain(serialized.substring(4));
141
142
  });
142
-
143
- it("should decode the payload", () => {
144
- expect(() => new DecoderTransaction(fixtureVote.data)).toThrow("Method not implemented");
145
- });
@@ -0,0 +1,22 @@
1
+ import { EvmCall } from "@/transactions/types/EvmCall";
2
+ import { AbstractTransaction } from "@/transactions/types/AbstractTransaction";
3
+ import fixture from "@tests/fixtures/transactions/evm-sign.json";
4
+
5
+ it("should create a new instance", () => {
6
+ const transaction = new EvmCall(fixture.data);
7
+
8
+ expect(transaction).toBeInstanceOf(EvmCall);
9
+ expect(transaction).toBeInstanceOf(AbstractTransaction);
10
+
11
+ expect(transaction.data.data).toEqual(
12
+ "a9059cbb00000000000000000000000027fa7caffaae77ddb9ab232fdbda56d5e5af23930000000000000000000000000000000000000000000000000000000000000064",
13
+ );
14
+ });
15
+
16
+ it("should get payload", () => {
17
+ const transaction = new EvmCall(fixture.data);
18
+
19
+ expect(transaction.getPayload()).toEqual(
20
+ "a9059cbb00000000000000000000000027fa7caffaae77ddb9ab232fdbda56d5e5af23930000000000000000000000000000000000000000000000000000000000000064",
21
+ );
22
+ });
@@ -0,0 +1,38 @@
1
+ import { Multipayment } from "@/transactions/types/Multipayment";
2
+ import { AbstractTransaction } from "@/transactions/types/AbstractTransaction";
3
+ import fixture from "@tests/fixtures/transactions/multipayment.json";
4
+
5
+ it("should create a new instance", () => {
6
+ const transaction = new Multipayment(fixture.data);
7
+
8
+ expect(transaction).toBeInstanceOf(Multipayment);
9
+ expect(transaction).toBeInstanceOf(AbstractTransaction);
10
+
11
+ expect(transaction.data.data).toEqual(
12
+ "084ce708000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000020000000000000000000000006f0182a0cc707b055322ccf6d4cb6a5aff1aeb22000000000000000000000000c3bbe9b1cee1ff85ad72b87414b0e9b7f2366763000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000186a00000000000000000000000000000000000000000000000000000000000030d40",
13
+ );
14
+ });
15
+
16
+ it("should get payload", () => {
17
+ const transaction = new Multipayment(fixture.data);
18
+
19
+ expect(transaction.getPayload()).toEqual(
20
+ "084ce708000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000020000000000000000000000006f0182a0cc707b055322ccf6d4cb6a5aff1aeb22000000000000000000000000c3bbe9b1cee1ff85ad72b87414b0e9b7f2366763000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000186a00000000000000000000000000000000000000000000000000000000000030d40",
21
+ );
22
+ });
23
+
24
+ it("should handle no payload", () => {
25
+ const transaction = new Multipayment(fixture.data);
26
+
27
+ transaction.data.pay = [];
28
+
29
+ expect(transaction.getPayload()).toEqual("");
30
+
31
+ transaction.data.pay = null;
32
+
33
+ expect(transaction.getPayload()).toEqual("");
34
+
35
+ transaction.data.pay = undefined;
36
+
37
+ expect(transaction.getPayload()).toEqual("");
38
+ });