trac-msb 0.2.17 → 0.2.19

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 (365) hide show
  1. package/README.md +62 -2
  2. package/SECURITY.md +9 -6
  3. package/cli/commandHandler.js +272 -0
  4. package/cli/handlers.js +210 -0
  5. package/cli/interactive.js +182 -0
  6. package/msb.mjs +7 -8
  7. package/package.json +33 -11
  8. package/rpc/create_server.js +44 -44
  9. package/rpc/handlers.js +43 -56
  10. package/rpc/routes/index.js +8 -8
  11. package/rpc/rpc_server.js +6 -2
  12. package/rpc/utils/helpers.js +46 -66
  13. package/scripts/pear-runner.js +170 -0
  14. package/src/config/args.js +60 -13
  15. package/src/config/config.js +163 -14
  16. package/src/config/env.js +57 -25
  17. package/src/core/network/Network.js +121 -56
  18. package/src/core/network/protocols/LegacyProtocol.js +21 -11
  19. package/src/core/network/protocols/NetworkMessages.js +38 -17
  20. package/src/core/network/protocols/ProtocolInterface.js +15 -3
  21. package/src/core/network/protocols/ProtocolSession.js +144 -17
  22. package/src/core/network/protocols/V1Protocol.js +37 -18
  23. package/src/core/network/protocols/connectionPolicies.js +174 -0
  24. package/src/core/network/protocols/legacy/NetworkMessageRouter.js +26 -20
  25. package/src/core/network/protocols/{shared/handlers/base/BaseOperationHandler.js → legacy/handlers/BaseStateOperationHandler.js} +25 -14
  26. package/src/core/network/protocols/legacy/handlers/{GetRequestHandler.js → LegacyGetRequestHandler.js} +9 -9
  27. package/src/core/network/protocols/legacy/handlers/LegacyResponseHandler.js +23 -0
  28. package/src/core/network/protocols/{shared/handlers/RoleOperationHandler.js → legacy/handlers/LegacyRoleOperationHandler.js} +19 -12
  29. package/src/core/network/protocols/{shared/handlers/SubnetworkOperationHandler.js → legacy/handlers/LegacySubnetworkOperationHandler.js} +29 -18
  30. package/src/core/network/protocols/{shared/handlers/TransferOperationHandler.js → legacy/handlers/LegacyTransferOperationHandler.js} +18 -12
  31. package/src/core/network/protocols/legacy/validators/base/BaseResponse.js +7 -10
  32. package/src/core/network/protocols/shared/validators/{PartialBootstrapDeployment.js → PartialBootstrapDeploymentValidator.js} +9 -4
  33. package/src/core/network/protocols/shared/validators/{base/PartialOperation.js → PartialOperationValidator.js} +53 -31
  34. package/src/core/network/protocols/shared/validators/{PartialRoleAccess.js → PartialRoleAccessValidator.js} +51 -17
  35. package/src/core/network/protocols/shared/validators/{PartialTransaction.js → PartialTransactionValidator.js} +21 -7
  36. package/src/core/network/protocols/shared/validators/{PartialTransfer.js → PartialTransferValidator.js} +32 -14
  37. package/src/core/network/protocols/v1/NetworkMessageRouter.js +91 -7
  38. package/src/core/network/protocols/v1/V1ProtocolError.js +27 -0
  39. package/src/core/network/protocols/v1/handlers/V1BaseOperationHandler.js +66 -0
  40. package/src/core/network/protocols/v1/handlers/V1BroadcastTransactionOperationHandler.js +272 -0
  41. package/src/core/network/protocols/v1/handlers/V1LivenessOperationHandler.js +88 -0
  42. package/src/core/network/protocols/v1/handlers/broadcastTransaction/BroadcastTransactionErrorMapper.js +84 -0
  43. package/src/core/network/protocols/v1/handlers/broadcastTransaction/BroadcastTransactionOperationStrategies.js +128 -0
  44. package/src/core/network/protocols/v1/handlers/broadcastTransaction/BroadcastTransactionPayloadUtils.js +26 -0
  45. package/src/core/network/protocols/v1/validators/V1BaseOperation.js +212 -0
  46. package/src/core/network/protocols/v1/validators/V1BroadcastTransactionRequest.js +28 -0
  47. package/src/core/network/protocols/v1/validators/V1BroadcastTransactionResponse.js +260 -0
  48. package/src/core/network/protocols/v1/validators/V1LivenessRequest.js +15 -0
  49. package/src/core/network/protocols/v1/validators/V1LivenessResponse.js +17 -0
  50. package/src/core/network/protocols/v1/validators/V1ValidationSchema.js +210 -0
  51. package/src/core/network/services/ConnectionManager.js +149 -96
  52. package/src/core/network/services/MessageOrchestrator.js +197 -37
  53. package/src/core/network/services/PendingRequestService.js +175 -0
  54. package/src/core/network/services/TransactionCommitService.js +149 -0
  55. package/src/core/network/services/TransactionPoolService.js +129 -18
  56. package/src/core/network/services/TransactionRateLimiterService.js +57 -35
  57. package/src/core/network/services/ValidatorHealthCheckService.js +127 -0
  58. package/src/core/network/services/ValidatorObserverService.js +400 -121
  59. package/src/core/state/State.js +259 -156
  60. package/src/core/state/utils/address.js +4 -9
  61. package/src/core/state/utils/balance.js +7 -7
  62. package/src/core/state/utils/roles.js +1 -1
  63. package/src/index.js +320 -278
  64. package/src/messages/network/v1/NetworkMessageBuilder.js +71 -100
  65. package/src/messages/network/v1/NetworkMessageDirector.js +16 -50
  66. package/src/messages/network/v1/networkMessageFactory.js +1 -1
  67. package/src/messages/state/ApplyStateMessageBuilder.js +6 -6
  68. package/src/messages/state/applyStateMessageFactory.js +1 -1
  69. package/src/utils/Scheduler.js +0 -8
  70. package/src/utils/buffer.js +1 -1
  71. package/src/utils/check.js +12 -13
  72. package/src/utils/constants.js +78 -5
  73. package/src/utils/deepEqualApplyPayload.js +40 -0
  74. package/src/utils/errors.js +20 -0
  75. package/src/utils/fileUtils.js +12 -3
  76. package/src/utils/helpers.js +10 -1
  77. package/src/utils/logger.js +25 -0
  78. package/src/utils/migrationUtils.js +3 -3
  79. package/src/utils/normalizers.js +38 -0
  80. package/src/utils/protobuf/networkV1.generated.cjs +2460 -0
  81. package/src/utils/protobuf/operationHelpers.js +24 -3
  82. package/.dockerignore +0 -16
  83. package/.github/workflows/acceptance-tests.yml +0 -38
  84. package/.github/workflows/lint-pr-title.yml +0 -26
  85. package/.github/workflows/publish.yml +0 -33
  86. package/.github/workflows/unit-tests.yml +0 -34
  87. package/CODE_OF_CONDUCT.md +0 -128
  88. package/docker-compose.yml +0 -17
  89. package/dockerfile +0 -41
  90. package/docs/fee_distribution.md +0 -89
  91. package/docs/trac_network_http_api.openapi.yaml +0 -889
  92. package/migration/.gitkeep +0 -0
  93. package/proto/applyOperations.proto +0 -117
  94. package/proto/network.proto +0 -74
  95. package/rpc/rpc_services.js +0 -163
  96. package/scripts/generate-protobufs.js +0 -42
  97. package/src/core/network/identity/NetworkWalletFactory.js +0 -77
  98. package/src/core/network/protocols/legacy/handlers/ResponseHandler.js +0 -37
  99. package/src/utils/cli.js +0 -130
  100. package/src/utils/cliCommands.js +0 -280
  101. package/src/utils/protobuf/network.cjs +0 -840
  102. package/tests/acceptance/v1/account/account.test.mjs +0 -123
  103. package/tests/acceptance/v1/balance/balance.test.mjs +0 -54
  104. package/tests/acceptance/v1/broadcast-transaction/broadcast-transaction.test.mjs +0 -116
  105. package/tests/acceptance/v1/confirmed-length/confirmed-length.test.mjs +0 -19
  106. package/tests/acceptance/v1/fee/fee.test.mjs +0 -11
  107. package/tests/acceptance/v1/health/health.test.mjs +0 -33
  108. package/tests/acceptance/v1/rpc.test.mjs +0 -95
  109. package/tests/acceptance/v1/tx/tx.test.mjs +0 -111
  110. package/tests/acceptance/v1/tx-details/tx-details.test.mjs +0 -213
  111. package/tests/acceptance/v1/tx-hashes/tx-hashes.test.mjs +0 -72
  112. package/tests/acceptance/v1/tx-payloads-bulk/tx-payloads-bulk.test.mjs +0 -27
  113. package/tests/acceptance/v1/txv/txv.test.mjs +0 -11
  114. package/tests/acceptance/v1/unconfirmed-length/unconfirmed-length.test.mjs +0 -11
  115. package/tests/fixtures/apply.fixtures.js +0 -77
  116. package/tests/fixtures/assembleMessage.fixtures.js +0 -41
  117. package/tests/fixtures/check.fixtures.js +0 -428
  118. package/tests/fixtures/networkV1.fixtures.js +0 -85
  119. package/tests/fixtures/protobuf.fixtures.js +0 -388
  120. package/tests/helpers/StateNetworkFactory.js +0 -155
  121. package/tests/helpers/address.js +0 -6
  122. package/tests/helpers/autobaseTestHelpers.js +0 -419
  123. package/tests/helpers/config.js +0 -4
  124. package/tests/helpers/createTestSignature.js +0 -13
  125. package/tests/helpers/regexHelper.js +0 -3
  126. package/tests/helpers/setupApplyTests.js +0 -587
  127. package/tests/helpers/transactionPayloads.mjs +0 -92
  128. package/tests/helpers/wrapper.js +0 -28
  129. package/tests/unit/messages/messages.test.js +0 -12
  130. package/tests/unit/messages/network/NetworkMessageBuilder.test.js +0 -276
  131. package/tests/unit/messages/network/NetworkMessageDirector.test.js +0 -201
  132. package/tests/unit/messages/state/applyStateMessageBuilder.complete.test.js +0 -525
  133. package/tests/unit/messages/state/applyStateMessageBuilder.partial.test.js +0 -237
  134. package/tests/unit/network/ConnectionManager.test.js +0 -191
  135. package/tests/unit/network/NetworkWalletFactory.test.js +0 -156
  136. package/tests/unit/network/networkModule.test.js +0 -10
  137. package/tests/unit/state/State.test.js +0 -80
  138. package/tests/unit/state/apply/addAdmin/addAdminHappyPathScenario.js +0 -42
  139. package/tests/unit/state/apply/addAdmin/addAdminScenarioHelpers.js +0 -276
  140. package/tests/unit/state/apply/addAdmin/adminEntryEncodingFailureScenario.js +0 -30
  141. package/tests/unit/state/apply/addAdmin/adminEntryExistsScenario.js +0 -78
  142. package/tests/unit/state/apply/addAdmin/nodeEntryInitializationFailureScenario.js +0 -30
  143. package/tests/unit/state/apply/addAdmin/nonBootstrapNodeScenario.js +0 -68
  144. package/tests/unit/state/apply/addAdmin/state.apply.addAdmin.test.js +0 -159
  145. package/tests/unit/state/apply/addIndexer/addIndexerHappyPathScenario.js +0 -39
  146. package/tests/unit/state/apply/addIndexer/addIndexerMultipleIndexersInTheNetworkScenario.js +0 -167
  147. package/tests/unit/state/apply/addIndexer/addIndexerPretenderAlreadyIndexerScenario.js +0 -21
  148. package/tests/unit/state/apply/addIndexer/addIndexerPretenderNotWriterScenario.js +0 -21
  149. package/tests/unit/state/apply/addIndexer/addIndexerRemoveAndReAddScenario.js +0 -186
  150. package/tests/unit/state/apply/addIndexer/addIndexerScenarioHelpers.js +0 -443
  151. package/tests/unit/state/apply/addIndexer/addIndexerWriterKeyAlreadyRegisteredScenario.js +0 -32
  152. package/tests/unit/state/apply/addIndexer/state.apply.addIndexer.test.js +0 -297
  153. package/tests/unit/state/apply/addWriter/addWriterHappyPathScenario.js +0 -41
  154. package/tests/unit/state/apply/addWriter/addWriterInvalidValidatorSignatureScenario.js +0 -32
  155. package/tests/unit/state/apply/addWriter/addWriterNewWkScenario.js +0 -149
  156. package/tests/unit/state/apply/addWriter/addWriterRequesterAlreadyWriterScenario.js +0 -21
  157. package/tests/unit/state/apply/addWriter/addWriterRequesterBalanceInsufficientScenario.js +0 -21
  158. package/tests/unit/state/apply/addWriter/addWriterRequesterEntryDecodeFailureScenario.js +0 -19
  159. package/tests/unit/state/apply/addWriter/addWriterRequesterEntryMissingScenario.js +0 -19
  160. package/tests/unit/state/apply/addWriter/addWriterRequesterIndexerScenario.js +0 -21
  161. package/tests/unit/state/apply/addWriter/addWriterRequesterNotWhitelistedScenario.js +0 -21
  162. package/tests/unit/state/apply/addWriter/addWriterScenarioHelpers.js +0 -766
  163. package/tests/unit/state/apply/addWriter/addWriterStakeBalanceUpdateFailureScenario.js +0 -50
  164. package/tests/unit/state/apply/addWriter/addWriterStakeInsufficientBalanceScenario.js +0 -29
  165. package/tests/unit/state/apply/addWriter/addWriterStakeInvalidBalanceScenario.js +0 -29
  166. package/tests/unit/state/apply/addWriter/addWriterStakeInvalidEntryScenario.js +0 -21
  167. package/tests/unit/state/apply/addWriter/addWriterStakeStakedBalanceFailureScenario.js +0 -37
  168. package/tests/unit/state/apply/addWriter/addWriterStakeSubtractFailureScenario.js +0 -42
  169. package/tests/unit/state/apply/addWriter/addWriterValidatorRewardScenario.js +0 -106
  170. package/tests/unit/state/apply/addWriter/addWriterWriterKeyMismatchScenario.js +0 -54
  171. package/tests/unit/state/apply/addWriter/addWriterWriterKeyOwnershipScenario.js +0 -54
  172. package/tests/unit/state/apply/addWriter/addWriterZeroWriterKeyScenario.js +0 -29
  173. package/tests/unit/state/apply/addWriter/state.apply.addWriter.test.js +0 -309
  174. package/tests/unit/state/apply/adminRecovery/adminRecoveryHappyPathScenario.js +0 -30
  175. package/tests/unit/state/apply/adminRecovery/adminRecoveryScenarioHelpers.js +0 -881
  176. package/tests/unit/state/apply/adminRecovery/state.apply.adminRecovery.test.js +0 -435
  177. package/tests/unit/state/apply/appendWhitelist/appendWhitelistBanAndReapplyScenario.js +0 -78
  178. package/tests/unit/state/apply/appendWhitelist/appendWhitelistExistingReaderHappyPathScenario.js +0 -98
  179. package/tests/unit/state/apply/appendWhitelist/appendWhitelistFeeAfterDisableScenario.js +0 -66
  180. package/tests/unit/state/apply/appendWhitelist/appendWhitelistHappyPathScenario.js +0 -55
  181. package/tests/unit/state/apply/appendWhitelist/appendWhitelistInsufficientAdminBalanceScenario.js +0 -103
  182. package/tests/unit/state/apply/appendWhitelist/appendWhitelistNodeAlreadyWhitelistedScenario.js +0 -60
  183. package/tests/unit/state/apply/appendWhitelist/appendWhitelistScenarioHelpers.js +0 -189
  184. package/tests/unit/state/apply/appendWhitelist/state.apply.appendWhitelist.test.js +0 -220
  185. package/tests/unit/state/apply/balanceInitialization/balanceInitializationHappyPathScenario.js +0 -82
  186. package/tests/unit/state/apply/balanceInitialization/balanceInitializationScenarioHelpers.js +0 -111
  187. package/tests/unit/state/apply/balanceInitialization/invalidAmountScenario.js +0 -45
  188. package/tests/unit/state/apply/balanceInitialization/nodeEntryBalanceUpdateFailureScenario.js +0 -82
  189. package/tests/unit/state/apply/balanceInitialization/state.apply.balanceInitialization.test.js +0 -189
  190. package/tests/unit/state/apply/banValidator/banValidatorBanAndReWhitelistScenario.js +0 -156
  191. package/tests/unit/state/apply/banValidator/banValidatorHappyPathScenario.js +0 -36
  192. package/tests/unit/state/apply/banValidator/banValidatorScenarioHelpers.js +0 -531
  193. package/tests/unit/state/apply/banValidator/banValidatorSequentialBansScenario.js +0 -74
  194. package/tests/unit/state/apply/banValidator/banValidatorTargetDecodeFailureScenario.js +0 -19
  195. package/tests/unit/state/apply/banValidator/banValidatorTargetIndexerScenario.js +0 -32
  196. package/tests/unit/state/apply/banValidator/banValidatorTargetNodeEntryMissingScenario.js +0 -19
  197. package/tests/unit/state/apply/banValidator/banValidatorTargetRoleUpdateFailureScenario.js +0 -19
  198. package/tests/unit/state/apply/banValidator/banValidatorWhitelistedNonWriterScenario.js +0 -38
  199. package/tests/unit/state/apply/banValidator/banValidatorWhitelistedZeroBalanceScenario.js +0 -91
  200. package/tests/unit/state/apply/banValidator/banValidatorWithdrawFailureScenario.js +0 -19
  201. package/tests/unit/state/apply/banValidator/state.apply.banValidator.test.js +0 -266
  202. package/tests/unit/state/apply/bootstrapDeployment/bootstrapDeploymentDuplicateRegistrationScenario.js +0 -143
  203. package/tests/unit/state/apply/bootstrapDeployment/bootstrapDeploymentHappyPathScenario.js +0 -26
  204. package/tests/unit/state/apply/bootstrapDeployment/bootstrapDeploymentIncompleteOperationScenario.js +0 -94
  205. package/tests/unit/state/apply/bootstrapDeployment/bootstrapDeploymentInvalidDeploymentEntryScenario.js +0 -37
  206. package/tests/unit/state/apply/bootstrapDeployment/bootstrapDeploymentMultipleBootstrapScenario.js +0 -86
  207. package/tests/unit/state/apply/bootstrapDeployment/bootstrapDeploymentScenarioHelpers.js +0 -347
  208. package/tests/unit/state/apply/bootstrapDeployment/invalidValidatorNodeEntryScenario.js +0 -57
  209. package/tests/unit/state/apply/bootstrapDeployment/state.apply.bootstrapDeployment.test.js +0 -429
  210. package/tests/unit/state/apply/common/access-control/adminConsistencyMismatchScenario.js +0 -120
  211. package/tests/unit/state/apply/common/access-control/adminEntryDecodeFailureScenario.js +0 -130
  212. package/tests/unit/state/apply/common/access-control/adminEntryExistsScenario.js +0 -93
  213. package/tests/unit/state/apply/common/access-control/adminEntryMissingScenario.js +0 -108
  214. package/tests/unit/state/apply/common/access-control/adminOnlyGuardScenario.js +0 -126
  215. package/tests/unit/state/apply/common/access-control/adminPublicKeyDecodeFailureScenario.js +0 -121
  216. package/tests/unit/state/apply/common/access-control/roleAccessOperationValidationScenario.js +0 -50
  217. package/tests/unit/state/apply/common/adminControlOperationValidationScenario.js +0 -56
  218. package/tests/unit/state/apply/common/balances/adminEntryUpdateFailureScenario.js +0 -52
  219. package/tests/unit/state/apply/common/balances/base/requesterBalanceScenarioBase.js +0 -198
  220. package/tests/unit/state/apply/common/balances/feeDecodeFailureScenario.js +0 -52
  221. package/tests/unit/state/apply/common/balances/requesterBalanceDecodeFailureScenario.js +0 -15
  222. package/tests/unit/state/apply/common/balances/requesterBalanceFeeApplicationFailureScenario.js +0 -11
  223. package/tests/unit/state/apply/common/balances/requesterBalanceInsufficientScenario.js +0 -15
  224. package/tests/unit/state/apply/common/balances/requesterBalanceUpdateFailureScenario.js +0 -11
  225. package/tests/unit/state/apply/common/balances/validatorEntryRewardFailureScenario.js +0 -11
  226. package/tests/unit/state/apply/common/balances/validatorEntryUpdateFailureScenario.js +0 -11
  227. package/tests/unit/state/apply/common/balances/validatorNodeEntryDecodeFailureScenario.js +0 -40
  228. package/tests/unit/state/apply/common/base/OperationValidationScenarioBase.js +0 -114
  229. package/tests/unit/state/apply/common/commonScenarioHelper.js +0 -103
  230. package/tests/unit/state/apply/common/indexer/indexerNodeEntryDecodeFailureScenario.js +0 -36
  231. package/tests/unit/state/apply/common/indexer/indexerNodeEntryMissingScenario.js +0 -36
  232. package/tests/unit/state/apply/common/indexer/indexerRoleUpdateFailureScenario.js +0 -29
  233. package/tests/unit/state/apply/common/indexer/indexerSequenceStateInvalidScenario.js +0 -66
  234. package/tests/unit/state/apply/common/invalidMessageComponentValidationScenario.js +0 -84
  235. package/tests/unit/state/apply/common/nodeEntryInitializationFailureScenario.js +0 -47
  236. package/tests/unit/state/apply/common/operationAlreadyAppliedScenario.js +0 -85
  237. package/tests/unit/state/apply/common/payload-structure/addressWithInvalidPublicKeyScenario.js +0 -52
  238. package/tests/unit/state/apply/common/payload-structure/initializationDisabledScenario.js +0 -54
  239. package/tests/unit/state/apply/common/payload-structure/invalidAddressValidationScenario.js +0 -73
  240. package/tests/unit/state/apply/common/payload-structure/invalidHashValidationScenario.js +0 -71
  241. package/tests/unit/state/apply/common/payload-structure/invalidPayloadValidationScenario.js +0 -31
  242. package/tests/unit/state/apply/common/payload-structure/invalidSignatureValidationScenario.js +0 -142
  243. package/tests/unit/state/apply/common/payload-structure/partialOperationValidationScenario.js +0 -87
  244. package/tests/unit/state/apply/common/requester/requesterNodeEntryBufferMissingScenario.js +0 -71
  245. package/tests/unit/state/apply/common/requester/requesterNodeEntryDecodeFailureScenario.js +0 -73
  246. package/tests/unit/state/apply/common/requester/requesterNodeEntryMissingScenario.js +0 -36
  247. package/tests/unit/state/apply/common/requesterAddressValidationScenario.js +0 -44
  248. package/tests/unit/state/apply/common/requesterPublicKeyValidationScenario.js +0 -25
  249. package/tests/unit/state/apply/common/transactionValidityMismatchScenario.js +0 -98
  250. package/tests/unit/state/apply/common/validatorConsistency/base/validatorConsistencyScenarioBase.js +0 -202
  251. package/tests/unit/state/apply/common/validatorConsistency/validatorEntryDecodeFailureScenario.js +0 -17
  252. package/tests/unit/state/apply/common/validatorConsistency/validatorEntryMissingScenario.js +0 -44
  253. package/tests/unit/state/apply/common/validatorConsistency/validatorInactiveScenario.js +0 -19
  254. package/tests/unit/state/apply/common/validatorConsistency/validatorWriterKeyMismatchScenario.js +0 -18
  255. package/tests/unit/state/apply/common/validatorEntryValidation/base/validatorEntryValidationScenarioBase.js +0 -315
  256. package/tests/unit/state/apply/common/validatorEntryValidation/validatorEntryInvalidBalanceScenario.js +0 -18
  257. package/tests/unit/state/apply/common/writerKeyExistsValidationScenario.js +0 -43
  258. package/tests/unit/state/apply/disableInitialization/disableInitializationAlreadyDisabledScenario.js +0 -53
  259. package/tests/unit/state/apply/disableInitialization/disableInitializationHappyPathScenario.js +0 -24
  260. package/tests/unit/state/apply/disableInitialization/disableInitializationScenarioHelpers.js +0 -204
  261. package/tests/unit/state/apply/disableInitialization/state.apply.disableInitialization.test.js +0 -161
  262. package/tests/unit/state/apply/missing-tests.md +0 -18
  263. package/tests/unit/state/apply/removeIndexer/removeIndexerHappyPathScenario.js +0 -58
  264. package/tests/unit/state/apply/removeIndexer/removeIndexerReAddAndRemoveAgainScenario.js +0 -98
  265. package/tests/unit/state/apply/removeIndexer/removeIndexerRemoveMultipleIndexersScenario.js +0 -167
  266. package/tests/unit/state/apply/removeIndexer/removeIndexerScenarioHelpers.js +0 -429
  267. package/tests/unit/state/apply/removeIndexer/removeIndexerTargetNotIndexerScenario.js +0 -22
  268. package/tests/unit/state/apply/removeIndexer/removeIndexerWriterKeyMissingScenario.js +0 -20
  269. package/tests/unit/state/apply/removeIndexer/state.apply.removeIndexer.test.js +0 -291
  270. package/tests/unit/state/apply/removeWriter/removeWriterAndAddWriterAgainScenario.js +0 -87
  271. package/tests/unit/state/apply/removeWriter/removeWriterHappyPathScenario.js +0 -38
  272. package/tests/unit/state/apply/removeWriter/removeWriterInvalidValidatorSignatureScenario.js +0 -32
  273. package/tests/unit/state/apply/removeWriter/removeWriterRequesterBalanceInsufficientScenario.js +0 -21
  274. package/tests/unit/state/apply/removeWriter/removeWriterRequesterEntryDecodeFailureScenario.js +0 -19
  275. package/tests/unit/state/apply/removeWriter/removeWriterRequesterEntryMissingScenario.js +0 -19
  276. package/tests/unit/state/apply/removeWriter/removeWriterRequesterIndexerScenario.js +0 -21
  277. package/tests/unit/state/apply/removeWriter/removeWriterRequesterNotWriterScenario.js +0 -21
  278. package/tests/unit/state/apply/removeWriter/removeWriterRequesterRoleUpdateFailureScenario.js +0 -19
  279. package/tests/unit/state/apply/removeWriter/removeWriterScenarioHelpers.js +0 -348
  280. package/tests/unit/state/apply/removeWriter/removeWriterThroughWriterValidatorScenario.js +0 -113
  281. package/tests/unit/state/apply/removeWriter/removeWriterUnstakeFailureScenario.js +0 -33
  282. package/tests/unit/state/apply/removeWriter/removeWriterWriterKeyMismatchScenario.js +0 -21
  283. package/tests/unit/state/apply/removeWriter/removeWriterWriterKeyOwnershipScenario.js +0 -26
  284. package/tests/unit/state/apply/removeWriter/removeWriterWriterKeyRegistryMissingScenario.js +0 -22
  285. package/tests/unit/state/apply/removeWriter/state.apply.removeWriter.test.js +0 -307
  286. package/tests/unit/state/apply/state.apply.test.js +0 -24
  287. package/tests/unit/state/apply/transfer/state.apply.transfer.test.js +0 -819
  288. package/tests/unit/state/apply/transfer/transferContractSchemaValidationScenario.js +0 -22
  289. package/tests/unit/state/apply/transfer/transferDoubleSpendAcrossValidatorsScenario.js +0 -146
  290. package/tests/unit/state/apply/transfer/transferDoubleSpendSameBatchScenario.js +0 -63
  291. package/tests/unit/state/apply/transfer/transferDoubleSpendSingleValidatorScenario.js +0 -67
  292. package/tests/unit/state/apply/transfer/transferExistingRecipientAmountScenario.js +0 -31
  293. package/tests/unit/state/apply/transfer/transferExistingRecipientZeroAmountScenario.js +0 -31
  294. package/tests/unit/state/apply/transfer/transferHandlerGuardScenarios.js +0 -22
  295. package/tests/unit/state/apply/transfer/transferHappyPathScenario.js +0 -8
  296. package/tests/unit/state/apply/transfer/transferInvalidIncomingDataScenario.js +0 -66
  297. package/tests/unit/state/apply/transfer/transferNewRecipientAmountScenario.js +0 -31
  298. package/tests/unit/state/apply/transfer/transferNewRecipientZeroAmountScenario.js +0 -31
  299. package/tests/unit/state/apply/transfer/transferScenarioHelpers.js +0 -1170
  300. package/tests/unit/state/apply/transfer/transferSelfTransferAmountScenario.js +0 -38
  301. package/tests/unit/state/apply/transfer/transferSelfTransferZeroAmountScenario.js +0 -38
  302. package/tests/unit/state/apply/transfer/transferValidatorRecipientAmountScenario.js +0 -38
  303. package/tests/unit/state/apply/transfer/transferValidatorRecipientZeroAmountScenario.js +0 -38
  304. package/tests/unit/state/apply/txOperation/state.apply.txOperation.test.js +0 -318
  305. package/tests/unit/state/apply/txOperation/txOperationBootstrapNotRegisteredScenario.js +0 -70
  306. package/tests/unit/state/apply/txOperation/txOperationDifferentValidatorCreatorHappyPathScenario.js +0 -23
  307. package/tests/unit/state/apply/txOperation/txOperationInvalidDeploymentEntryScenario.js +0 -48
  308. package/tests/unit/state/apply/txOperation/txOperationInvalidFeeAmountScenario.js +0 -39
  309. package/tests/unit/state/apply/txOperation/txOperationInvalidSubnetCreatorAddressScenario.js +0 -46
  310. package/tests/unit/state/apply/txOperation/txOperationRequesterCreatorHappyPathScenario.js +0 -21
  311. package/tests/unit/state/apply/txOperation/txOperationScenarioHelpers.js +0 -432
  312. package/tests/unit/state/apply/txOperation/txOperationStandardHappyPathScenario.js +0 -21
  313. package/tests/unit/state/apply/txOperation/txOperationTransferFeeAddCreatorBalanceFailureScenario.js +0 -26
  314. package/tests/unit/state/apply/txOperation/txOperationTransferFeeAddValidatorBalanceFailureScenario.js +0 -25
  315. package/tests/unit/state/apply/txOperation/txOperationTransferFeeAddValidatorBonusFailureScenario.js +0 -27
  316. package/tests/unit/state/apply/txOperation/txOperationTransferFeeDecodeCreatorEntryScenario.js +0 -18
  317. package/tests/unit/state/apply/txOperation/txOperationTransferFeeDecodeRequesterEntryScenario.js +0 -17
  318. package/tests/unit/state/apply/txOperation/txOperationTransferFeeDecodeValidatorEntryScenario.js +0 -31
  319. package/tests/unit/state/apply/txOperation/txOperationTransferFeeGuardBypassScenario.js +0 -49
  320. package/tests/unit/state/apply/txOperation/txOperationTransferFeeGuardScenarioFactory.js +0 -93
  321. package/tests/unit/state/apply/txOperation/txOperationTransferFeeInsufficientRequesterBalanceScenario.js +0 -28
  322. package/tests/unit/state/apply/txOperation/txOperationTransferFeeInvalidCreatorBalanceScenario.js +0 -29
  323. package/tests/unit/state/apply/txOperation/txOperationTransferFeeInvalidRequesterBalanceScenario.js +0 -28
  324. package/tests/unit/state/apply/txOperation/txOperationTransferFeeInvalidRequesterEntryScenario.js +0 -17
  325. package/tests/unit/state/apply/txOperation/txOperationTransferFeeInvalidValidatorBalanceScenario.js +0 -33
  326. package/tests/unit/state/apply/txOperation/txOperationTransferFeeMissingCreatorEntryScenario.js +0 -18
  327. package/tests/unit/state/apply/txOperation/txOperationTransferFeeSubtractFailureScenario.js +0 -25
  328. package/tests/unit/state/apply/txOperation/txOperationTransferFeeUpdateCreatorBalanceFailureScenario.js +0 -26
  329. package/tests/unit/state/apply/txOperation/txOperationTransferFeeUpdateFailureScenario.js +0 -25
  330. package/tests/unit/state/apply/txOperation/txOperationTransferFeeUpdateValidatorBalanceFailureScenario.js +0 -26
  331. package/tests/unit/state/apply/txOperation/txOperationTransferFeeUpdateValidatorBonusFailureScenario.js +0 -27
  332. package/tests/unit/state/apply/txOperation/txOperationValidatorCreatorHappyPathScenario.js +0 -21
  333. package/tests/unit/state/stateModule.test.js +0 -23
  334. package/tests/unit/state/stateTestUtils.js +0 -32
  335. package/tests/unit/state/utils/address.test.js +0 -63
  336. package/tests/unit/state/utils/adminEntry.test.js +0 -52
  337. package/tests/unit/state/utils/balance.test.js +0 -320
  338. package/tests/unit/state/utils/lengthEntry.test.js +0 -54
  339. package/tests/unit/state/utils/nodeEntry.test.js +0 -298
  340. package/tests/unit/state/utils/roles.test.js +0 -44
  341. package/tests/unit/unit.test.js +0 -14
  342. package/tests/unit/utils/amountSerialization/amountSerialization.test.js +0 -237
  343. package/tests/unit/utils/buffer/buffer.test.js +0 -251
  344. package/tests/unit/utils/check/adminControlOperation.test.js +0 -156
  345. package/tests/unit/utils/check/balanceInitializationOperation.test.js +0 -54
  346. package/tests/unit/utils/check/bootstrapDeploymentOperation.test.js +0 -104
  347. package/tests/unit/utils/check/check.test.js +0 -17
  348. package/tests/unit/utils/check/common.test.js +0 -419
  349. package/tests/unit/utils/check/coreAdminOperation.test.js +0 -95
  350. package/tests/unit/utils/check/roleAccessOperation.test.js +0 -255
  351. package/tests/unit/utils/check/transactionOperation.test.js +0 -107
  352. package/tests/unit/utils/check/transferOperation.test.js +0 -102
  353. package/tests/unit/utils/fileUtils/readAddressesFromWhitelistFile.test.js +0 -95
  354. package/tests/unit/utils/fileUtils/readBalanceMigrationFile.test.js +0 -149
  355. package/tests/unit/utils/helpers/helpers.test.js +0 -11
  356. package/tests/unit/utils/helpers/isHexString.test.js +0 -12
  357. package/tests/unit/utils/helpers/normalizeHex.test.js +0 -82
  358. package/tests/unit/utils/migrationUtils/validateAddressFromIncomingFile.test.js +0 -100
  359. package/tests/unit/utils/normalizers/normalizers.test.js +0 -469
  360. package/tests/unit/utils/protobuf/applyOperations.test.js +0 -91
  361. package/tests/unit/utils/protobuf/operationHelpers.test.js +0 -305
  362. package/tests/unit/utils/protobuf/protobuf.test.js +0 -12
  363. package/tests/unit/utils/type/type.test.js +0 -25
  364. package/tests/unit/utils/utils.test.js +0 -20
  365. package/whitelist/.gitkeep +0 -0
@@ -1,525 +0,0 @@
1
- import { test } from 'brittle';
2
- import b4a from 'b4a';
3
- import PeerWallet from 'trac-wallet';
4
-
5
- import ApplyStateMessageBuilder from '../../../../src/messages/state/ApplyStateMessageBuilder.js';
6
- import { OperationType } from '../../../../src/utils/constants.js';
7
- import { config } from '../../../helpers/config.js';
8
- import { testKeyPair1, testKeyPair2 } from '../../../fixtures/apply.fixtures.js';
9
- import { addressToBuffer } from '../../../../src/core/state/utils/address.js';
10
-
11
- const hex = (value, bytes) => value.repeat(bytes);
12
- const toBuf = value => b4a.from(value, 'hex');
13
-
14
- async function createWallet(mnemonic) {
15
- const wallet = new PeerWallet({
16
- mnemonic,
17
- networkPrefix: config.addressPrefix,
18
- derivationPath: config.derivationPath
19
- });
20
- await wallet.ready;
21
- return wallet;
22
- }
23
-
24
- function expectBufferField(t, value, bytes, label) {
25
- t.ok(b4a.isBuffer(value), `${label} type`);
26
- t.is(value.length, bytes, `${label} length`);
27
- }
28
-
29
- function expectAddressBuffer(t, value, label) {
30
- expectBufferField(t, value, config.addressLength, label);
31
- }
32
-
33
- function expectKeys(t, value, keys, label) {
34
- t.alike(Object.keys(value).sort(), keys.slice().sort(), `${label} keys`);
35
- }
36
-
37
- function expectPayloadKeys(t, payload, bodyKey) {
38
- expectKeys(t, payload, ['type', 'address', bodyKey], 'payload');
39
- }
40
-
41
- test('ApplyStateMessageBuilder complete add admin (cao)', async t => {
42
- const wallet = await createWallet(testKeyPair1.mnemonic);
43
- const txValidity = toBuf(hex('11', 32));
44
- const writingKey = toBuf(hex('22', 32));
45
-
46
- const builder = new ApplyStateMessageBuilder(wallet, config);
47
- await builder
48
- .setPhase('complete')
49
- .setOutput('buffer')
50
- .setOperationType(OperationType.ADD_ADMIN)
51
- .setAddress(wallet.address)
52
- .setWriterKey(writingKey)
53
- .setTxValidity(txValidity)
54
- .build();
55
-
56
- const payload = builder.getPayload();
57
- t.is(payload.type, OperationType.ADD_ADMIN);
58
- expectAddressBuffer(t, payload.address, 'address');
59
- t.ok(b4a.equals(payload.address, addressToBuffer(wallet.address, config.addressPrefix)));
60
- expectPayloadKeys(t, payload, 'cao');
61
- expectKeys(t, payload.cao, ['tx', 'txv', 'iw', 'in', 'is'], 'cao');
62
- expectBufferField(t, payload.cao.tx, 32, 'cao.tx');
63
- expectBufferField(t, payload.cao.txv, 32, 'cao.txv');
64
- expectBufferField(t, payload.cao.iw, 32, 'cao.iw');
65
- t.ok(b4a.equals(payload.cao.txv, txValidity));
66
- t.ok(b4a.equals(payload.cao.iw, writingKey));
67
- expectBufferField(t, payload.cao.in, 32, 'cao.in');
68
- expectBufferField(t, payload.cao.is, 64, 'cao.is');
69
- });
70
-
71
- test('ApplyStateMessageBuilder complete disable initialization (cao)', async t => {
72
- const wallet = await createWallet(testKeyPair1.mnemonic);
73
- const txValidity = toBuf(hex('33', 32));
74
- const writingKey = toBuf(hex('44', 32));
75
-
76
- const builder = new ApplyStateMessageBuilder(wallet, config);
77
- await builder
78
- .setPhase('complete')
79
- .setOutput('buffer')
80
- .setOperationType(OperationType.DISABLE_INITIALIZATION)
81
- .setAddress(wallet.address)
82
- .setWriterKey(writingKey)
83
- .setTxValidity(txValidity)
84
- .build();
85
-
86
- const payload = builder.getPayload();
87
- t.is(payload.type, OperationType.DISABLE_INITIALIZATION);
88
- expectAddressBuffer(t, payload.address, 'address');
89
- t.ok(b4a.equals(payload.address, addressToBuffer(wallet.address, config.addressPrefix)));
90
- expectPayloadKeys(t, payload, 'cao');
91
- expectKeys(t, payload.cao, ['tx', 'txv', 'iw', 'in', 'is'], 'cao');
92
- expectBufferField(t, payload.cao.tx, 32, 'cao.tx');
93
- expectBufferField(t, payload.cao.txv, 32, 'cao.txv');
94
- expectBufferField(t, payload.cao.iw, 32, 'cao.iw');
95
- t.ok(b4a.equals(payload.cao.txv, txValidity));
96
- t.ok(b4a.equals(payload.cao.iw, writingKey));
97
- expectBufferField(t, payload.cao.in, 32, 'cao.in');
98
- expectBufferField(t, payload.cao.is, 64, 'cao.is');
99
- });
100
-
101
- test('ApplyStateMessageBuilder complete balance initialization (bio)', async t => {
102
- const wallet = await createWallet(testKeyPair1.mnemonic);
103
- const otherWallet = await createWallet(testKeyPair2.mnemonic);
104
- const txValidity = toBuf(hex('55', 32));
105
- const amount = toBuf(hex('66', 16));
106
-
107
- const builder = new ApplyStateMessageBuilder(wallet, config);
108
- await builder
109
- .setPhase('complete')
110
- .setOutput('buffer')
111
- .setOperationType(OperationType.BALANCE_INITIALIZATION)
112
- .setAddress(wallet.address)
113
- .setIncomingAddress(otherWallet.address)
114
- .setAmount(amount)
115
- .setTxValidity(txValidity)
116
- .build();
117
-
118
- const payload = builder.getPayload();
119
- t.is(payload.type, OperationType.BALANCE_INITIALIZATION);
120
- expectAddressBuffer(t, payload.address, 'address');
121
- t.ok(b4a.equals(payload.address, addressToBuffer(wallet.address, config.addressPrefix)));
122
- expectPayloadKeys(t, payload, 'bio');
123
- expectKeys(t, payload.bio, ['tx', 'txv', 'ia', 'am', 'in', 'is'], 'bio');
124
- expectBufferField(t, payload.bio.tx, 32, 'bio.tx');
125
- expectBufferField(t, payload.bio.txv, 32, 'bio.txv');
126
- expectAddressBuffer(t, payload.bio.ia, 'bio.ia');
127
- expectBufferField(t, payload.bio.am, 16, 'bio.am');
128
- t.ok(b4a.equals(payload.bio.txv, txValidity));
129
- t.ok(b4a.equals(payload.bio.ia, addressToBuffer(otherWallet.address, config.addressPrefix)));
130
- t.ok(b4a.equals(payload.bio.am, amount));
131
- expectBufferField(t, payload.bio.in, 32, 'bio.in');
132
- expectBufferField(t, payload.bio.is, 64, 'bio.is');
133
- });
134
-
135
- test('ApplyStateMessageBuilder complete append whitelist (aco)', async t => {
136
- const wallet = await createWallet(testKeyPair1.mnemonic);
137
- const otherWallet = await createWallet(testKeyPair2.mnemonic);
138
- const txValidity = toBuf(hex('77', 32));
139
-
140
- const builder = new ApplyStateMessageBuilder(wallet, config);
141
- await builder
142
- .setPhase('complete')
143
- .setOutput('buffer')
144
- .setOperationType(OperationType.APPEND_WHITELIST)
145
- .setAddress(wallet.address)
146
- .setIncomingAddress(otherWallet.address)
147
- .setTxValidity(txValidity)
148
- .build();
149
-
150
- const payload = builder.getPayload();
151
- t.is(payload.type, OperationType.APPEND_WHITELIST);
152
- expectAddressBuffer(t, payload.address, 'address');
153
- t.ok(b4a.equals(payload.address, addressToBuffer(wallet.address, config.addressPrefix)));
154
- expectPayloadKeys(t, payload, 'aco');
155
- expectKeys(t, payload.aco, ['tx', 'txv', 'ia', 'in', 'is'], 'aco');
156
- expectBufferField(t, payload.aco.tx, 32, 'aco.tx');
157
- expectBufferField(t, payload.aco.txv, 32, 'aco.txv');
158
- expectAddressBuffer(t, payload.aco.ia, 'aco.ia');
159
- t.ok(b4a.equals(payload.aco.txv, txValidity));
160
- t.ok(b4a.equals(payload.aco.ia, addressToBuffer(otherWallet.address, config.addressPrefix)));
161
- expectBufferField(t, payload.aco.in, 32, 'aco.in');
162
- expectBufferField(t, payload.aco.is, 64, 'aco.is');
163
- });
164
-
165
- test('ApplyStateMessageBuilder complete add indexer (aco)', async t => {
166
- const wallet = await createWallet(testKeyPair1.mnemonic);
167
- const otherWallet = await createWallet(testKeyPair2.mnemonic);
168
- const txValidity = toBuf(hex('88', 32));
169
-
170
- const builder = new ApplyStateMessageBuilder(wallet, config);
171
- await builder
172
- .setPhase('complete')
173
- .setOutput('buffer')
174
- .setOperationType(OperationType.ADD_INDEXER)
175
- .setAddress(wallet.address)
176
- .setIncomingAddress(otherWallet.address)
177
- .setTxValidity(txValidity)
178
- .build();
179
-
180
- const payload = builder.getPayload();
181
- t.is(payload.type, OperationType.ADD_INDEXER);
182
- expectAddressBuffer(t, payload.address, 'address');
183
- t.ok(b4a.equals(payload.address, addressToBuffer(wallet.address, config.addressPrefix)));
184
- expectPayloadKeys(t, payload, 'aco');
185
- expectKeys(t, payload.aco, ['tx', 'txv', 'ia', 'in', 'is'], 'aco');
186
- expectBufferField(t, payload.aco.tx, 32, 'aco.tx');
187
- expectBufferField(t, payload.aco.txv, 32, 'aco.txv');
188
- expectAddressBuffer(t, payload.aco.ia, 'aco.ia');
189
- t.ok(b4a.equals(payload.aco.txv, txValidity));
190
- t.ok(b4a.equals(payload.aco.ia, addressToBuffer(otherWallet.address, config.addressPrefix)));
191
- expectBufferField(t, payload.aco.in, 32, 'aco.in');
192
- expectBufferField(t, payload.aco.is, 64, 'aco.is');
193
- });
194
-
195
- test('ApplyStateMessageBuilder complete remove indexer (aco)', async t => {
196
- const wallet = await createWallet(testKeyPair1.mnemonic);
197
- const otherWallet = await createWallet(testKeyPair2.mnemonic);
198
- const txValidity = toBuf(hex('99', 32));
199
-
200
- const builder = new ApplyStateMessageBuilder(wallet, config);
201
- await builder
202
- .setPhase('complete')
203
- .setOutput('buffer')
204
- .setOperationType(OperationType.REMOVE_INDEXER)
205
- .setAddress(wallet.address)
206
- .setIncomingAddress(otherWallet.address)
207
- .setTxValidity(txValidity)
208
- .build();
209
-
210
- const payload = builder.getPayload();
211
- t.is(payload.type, OperationType.REMOVE_INDEXER);
212
- expectAddressBuffer(t, payload.address, 'address');
213
- t.ok(b4a.equals(payload.address, addressToBuffer(wallet.address, config.addressPrefix)));
214
- expectPayloadKeys(t, payload, 'aco');
215
- expectKeys(t, payload.aco, ['tx', 'txv', 'ia', 'in', 'is'], 'aco');
216
- expectBufferField(t, payload.aco.tx, 32, 'aco.tx');
217
- expectBufferField(t, payload.aco.txv, 32, 'aco.txv');
218
- expectAddressBuffer(t, payload.aco.ia, 'aco.ia');
219
- t.ok(b4a.equals(payload.aco.txv, txValidity));
220
- t.ok(b4a.equals(payload.aco.ia, addressToBuffer(otherWallet.address, config.addressPrefix)));
221
- expectBufferField(t, payload.aco.in, 32, 'aco.in');
222
- expectBufferField(t, payload.aco.is, 64, 'aco.is');
223
- });
224
-
225
- test('ApplyStateMessageBuilder complete ban validator (aco)', async t => {
226
- const wallet = await createWallet(testKeyPair1.mnemonic);
227
- const otherWallet = await createWallet(testKeyPair2.mnemonic);
228
- const txValidity = toBuf(hex('aa', 32));
229
-
230
- const builder = new ApplyStateMessageBuilder(wallet, config);
231
- await builder
232
- .setPhase('complete')
233
- .setOutput('buffer')
234
- .setOperationType(OperationType.BAN_VALIDATOR)
235
- .setAddress(wallet.address)
236
- .setIncomingAddress(otherWallet.address)
237
- .setTxValidity(txValidity)
238
- .build();
239
-
240
- const payload = builder.getPayload();
241
- t.is(payload.type, OperationType.BAN_VALIDATOR);
242
- expectAddressBuffer(t, payload.address, 'address');
243
- t.ok(b4a.equals(payload.address, addressToBuffer(wallet.address, config.addressPrefix)));
244
- expectPayloadKeys(t, payload, 'aco');
245
- expectKeys(t, payload.aco, ['tx', 'txv', 'ia', 'in', 'is'], 'aco');
246
- expectBufferField(t, payload.aco.tx, 32, 'aco.tx');
247
- expectBufferField(t, payload.aco.txv, 32, 'aco.txv');
248
- expectAddressBuffer(t, payload.aco.ia, 'aco.ia');
249
- t.ok(b4a.equals(payload.aco.txv, txValidity));
250
- t.ok(b4a.equals(payload.aco.ia, addressToBuffer(otherWallet.address, config.addressPrefix)));
251
- expectBufferField(t, payload.aco.in, 32, 'aco.in');
252
- expectBufferField(t, payload.aco.is, 64, 'aco.is');
253
- });
254
-
255
- test('ApplyStateMessageBuilder complete add writer (rao)', async t => {
256
- const wallet = await createWallet(testKeyPair1.mnemonic);
257
- const txHash = toBuf(hex('bb', 32));
258
- const txValidity = toBuf(hex('cc', 32));
259
- const incomingWriterKey = toBuf(hex('dd', 32));
260
- const incomingNonce = toBuf(hex('ee', 32));
261
- const incomingSignature = toBuf(hex('ff', 64));
262
-
263
- const builder = new ApplyStateMessageBuilder(wallet, config);
264
- await builder
265
- .setPhase('complete')
266
- .setOutput('buffer')
267
- .setOperationType(OperationType.ADD_WRITER)
268
- .setAddress(wallet.address)
269
- .setTxHash(txHash)
270
- .setTxValidity(txValidity)
271
- .setIncomingWriterKey(incomingWriterKey)
272
- .setIncomingNonce(incomingNonce)
273
- .setIncomingSignature(incomingSignature)
274
- .build();
275
-
276
- const payload = builder.getPayload();
277
- t.is(payload.type, OperationType.ADD_WRITER);
278
- expectAddressBuffer(t, payload.address, 'address');
279
- t.ok(b4a.equals(payload.address, addressToBuffer(wallet.address, config.addressPrefix)));
280
- expectPayloadKeys(t, payload, 'rao');
281
- expectKeys(t, payload.rao, ['tx', 'txv', 'iw', 'in', 'is', 'va', 'vn', 'vs'], 'rao');
282
- expectBufferField(t, payload.rao.tx, 32, 'rao.tx');
283
- expectBufferField(t, payload.rao.txv, 32, 'rao.txv');
284
- expectBufferField(t, payload.rao.iw, 32, 'rao.iw');
285
- expectBufferField(t, payload.rao.in, 32, 'rao.in');
286
- expectBufferField(t, payload.rao.is, 64, 'rao.is');
287
- expectAddressBuffer(t, payload.rao.va, 'rao.va');
288
- expectBufferField(t, payload.rao.vn, 32, 'rao.vn');
289
- expectBufferField(t, payload.rao.vs, 64, 'rao.vs');
290
- t.ok(b4a.equals(payload.rao.tx, txHash));
291
- t.ok(b4a.equals(payload.rao.txv, txValidity));
292
- t.ok(b4a.equals(payload.rao.iw, incomingWriterKey));
293
- t.ok(b4a.equals(payload.rao.in, incomingNonce));
294
- t.ok(b4a.equals(payload.rao.is, incomingSignature));
295
- });
296
-
297
- test('ApplyStateMessageBuilder complete remove writer (rao)', async t => {
298
- const wallet = await createWallet(testKeyPair1.mnemonic);
299
- const txHash = toBuf(hex('01', 32));
300
- const txValidity = toBuf(hex('02', 32));
301
- const incomingWriterKey = toBuf(hex('03', 32));
302
- const incomingNonce = toBuf(hex('04', 32));
303
- const incomingSignature = toBuf(hex('05', 64));
304
-
305
- const builder = new ApplyStateMessageBuilder(wallet, config);
306
- await builder
307
- .setPhase('complete')
308
- .setOutput('buffer')
309
- .setOperationType(OperationType.REMOVE_WRITER)
310
- .setAddress(wallet.address)
311
- .setTxHash(txHash)
312
- .setTxValidity(txValidity)
313
- .setIncomingWriterKey(incomingWriterKey)
314
- .setIncomingNonce(incomingNonce)
315
- .setIncomingSignature(incomingSignature)
316
- .build();
317
-
318
- const payload = builder.getPayload();
319
- t.is(payload.type, OperationType.REMOVE_WRITER);
320
- expectAddressBuffer(t, payload.address, 'address');
321
- t.ok(b4a.equals(payload.address, addressToBuffer(wallet.address, config.addressPrefix)));
322
- expectPayloadKeys(t, payload, 'rao');
323
- expectKeys(t, payload.rao, ['tx', 'txv', 'iw', 'in', 'is', 'va', 'vn', 'vs'], 'rao');
324
- expectBufferField(t, payload.rao.tx, 32, 'rao.tx');
325
- expectBufferField(t, payload.rao.txv, 32, 'rao.txv');
326
- expectBufferField(t, payload.rao.iw, 32, 'rao.iw');
327
- expectBufferField(t, payload.rao.in, 32, 'rao.in');
328
- expectBufferField(t, payload.rao.is, 64, 'rao.is');
329
- expectAddressBuffer(t, payload.rao.va, 'rao.va');
330
- expectBufferField(t, payload.rao.vn, 32, 'rao.vn');
331
- expectBufferField(t, payload.rao.vs, 64, 'rao.vs');
332
- t.ok(b4a.equals(payload.rao.tx, txHash));
333
- t.ok(b4a.equals(payload.rao.txv, txValidity));
334
- t.ok(b4a.equals(payload.rao.iw, incomingWriterKey));
335
- t.ok(b4a.equals(payload.rao.in, incomingNonce));
336
- t.ok(b4a.equals(payload.rao.is, incomingSignature));
337
- });
338
-
339
- test('ApplyStateMessageBuilder complete admin recovery (rao)', async t => {
340
- const wallet = await createWallet(testKeyPair1.mnemonic);
341
- const txHash = toBuf(hex('10', 32));
342
- const txValidity = toBuf(hex('20', 32));
343
- const incomingWriterKey = toBuf(hex('30', 32));
344
- const incomingNonce = toBuf(hex('40', 32));
345
- const incomingSignature = toBuf(hex('50', 64));
346
-
347
- const builder = new ApplyStateMessageBuilder(wallet, config);
348
- await builder
349
- .setPhase('complete')
350
- .setOutput('buffer')
351
- .setOperationType(OperationType.ADMIN_RECOVERY)
352
- .setAddress(wallet.address)
353
- .setTxHash(txHash)
354
- .setTxValidity(txValidity)
355
- .setIncomingWriterKey(incomingWriterKey)
356
- .setIncomingNonce(incomingNonce)
357
- .setIncomingSignature(incomingSignature)
358
- .build();
359
-
360
- const payload = builder.getPayload();
361
- t.is(payload.type, OperationType.ADMIN_RECOVERY);
362
- expectAddressBuffer(t, payload.address, 'address');
363
- t.ok(b4a.equals(payload.address, addressToBuffer(wallet.address, config.addressPrefix)));
364
- expectPayloadKeys(t, payload, 'rao');
365
- expectKeys(t, payload.rao, ['tx', 'txv', 'iw', 'in', 'is', 'va', 'vn', 'vs'], 'rao');
366
- expectBufferField(t, payload.rao.tx, 32, 'rao.tx');
367
- expectBufferField(t, payload.rao.txv, 32, 'rao.txv');
368
- expectBufferField(t, payload.rao.iw, 32, 'rao.iw');
369
- expectBufferField(t, payload.rao.in, 32, 'rao.in');
370
- expectBufferField(t, payload.rao.is, 64, 'rao.is');
371
- expectAddressBuffer(t, payload.rao.va, 'rao.va');
372
- expectBufferField(t, payload.rao.vn, 32, 'rao.vn');
373
- expectBufferField(t, payload.rao.vs, 64, 'rao.vs');
374
- t.ok(b4a.equals(payload.rao.tx, txHash));
375
- t.ok(b4a.equals(payload.rao.txv, txValidity));
376
- t.ok(b4a.equals(payload.rao.iw, incomingWriterKey));
377
- t.ok(b4a.equals(payload.rao.in, incomingNonce));
378
- t.ok(b4a.equals(payload.rao.is, incomingSignature));
379
- });
380
-
381
- test('ApplyStateMessageBuilder complete bootstrap deployment (bdo)', async t => {
382
- const wallet = await createWallet(testKeyPair1.mnemonic);
383
- const txHash = toBuf(hex('60', 32));
384
- const txValidity = toBuf(hex('70', 32));
385
- const externalBootstrap = toBuf(hex('80', 32));
386
- const channel = toBuf(hex('90', 32));
387
- const incomingNonce = toBuf(hex('a0', 32));
388
- const incomingSignature = toBuf(hex('b0', 64));
389
-
390
- const builder = new ApplyStateMessageBuilder(wallet, config);
391
- await builder
392
- .setPhase('complete')
393
- .setOutput('buffer')
394
- .setOperationType(OperationType.BOOTSTRAP_DEPLOYMENT)
395
- .setAddress(wallet.address)
396
- .setTxHash(txHash)
397
- .setTxValidity(txValidity)
398
- .setExternalBootstrap(externalBootstrap)
399
- .setChannel(channel)
400
- .setIncomingNonce(incomingNonce)
401
- .setIncomingSignature(incomingSignature)
402
- .build();
403
-
404
- const payload = builder.getPayload();
405
- t.is(payload.type, OperationType.BOOTSTRAP_DEPLOYMENT);
406
- expectAddressBuffer(t, payload.address, 'address');
407
- t.ok(b4a.equals(payload.address, addressToBuffer(wallet.address, config.addressPrefix)));
408
- expectPayloadKeys(t, payload, 'bdo');
409
- expectKeys(t, payload.bdo, ['tx', 'txv', 'bs', 'ic', 'in', 'is', 'va', 'vn', 'vs'], 'bdo');
410
- expectBufferField(t, payload.bdo.tx, 32, 'bdo.tx');
411
- expectBufferField(t, payload.bdo.txv, 32, 'bdo.txv');
412
- expectBufferField(t, payload.bdo.bs, 32, 'bdo.bs');
413
- expectBufferField(t, payload.bdo.ic, 32, 'bdo.ic');
414
- expectBufferField(t, payload.bdo.in, 32, 'bdo.in');
415
- expectBufferField(t, payload.bdo.is, 64, 'bdo.is');
416
- expectAddressBuffer(t, payload.bdo.va, 'bdo.va');
417
- expectBufferField(t, payload.bdo.vn, 32, 'bdo.vn');
418
- expectBufferField(t, payload.bdo.vs, 64, 'bdo.vs');
419
- t.ok(b4a.equals(payload.bdo.tx, txHash));
420
- t.ok(b4a.equals(payload.bdo.txv, txValidity));
421
- t.ok(b4a.equals(payload.bdo.bs, externalBootstrap));
422
- t.ok(b4a.equals(payload.bdo.ic, channel));
423
- t.ok(b4a.equals(payload.bdo.in, incomingNonce));
424
- t.ok(b4a.equals(payload.bdo.is, incomingSignature));
425
- });
426
-
427
- test('ApplyStateMessageBuilder complete transaction operation (txo)', async t => {
428
- const wallet = await createWallet(testKeyPair1.mnemonic);
429
- const txHash = toBuf(hex('c0', 32));
430
- const txValidity = toBuf(hex('d0', 32));
431
- const incomingWriterKey = toBuf(hex('e0', 32));
432
- const incomingNonce = toBuf(hex('f0', 32));
433
- const incomingSignature = toBuf(hex('01', 64));
434
- const contentHash = toBuf(hex('02', 32));
435
- const externalBootstrap = toBuf(hex('03', 32));
436
- const msbBootstrap = toBuf(hex('04', 32));
437
-
438
- const builder = new ApplyStateMessageBuilder(wallet, config);
439
- await builder
440
- .setPhase('complete')
441
- .setOutput('buffer')
442
- .setOperationType(OperationType.TX)
443
- .setAddress(wallet.address)
444
- .setTxHash(txHash)
445
- .setTxValidity(txValidity)
446
- .setIncomingWriterKey(incomingWriterKey)
447
- .setIncomingNonce(incomingNonce)
448
- .setIncomingSignature(incomingSignature)
449
- .setContentHash(contentHash)
450
- .setExternalBootstrap(externalBootstrap)
451
- .setMsbBootstrap(msbBootstrap)
452
- .build();
453
-
454
- const payload = builder.getPayload();
455
- t.is(payload.type, OperationType.TX);
456
- expectAddressBuffer(t, payload.address, 'address');
457
- t.ok(b4a.equals(payload.address, addressToBuffer(wallet.address, config.addressPrefix)));
458
- expectPayloadKeys(t, payload, 'txo');
459
- expectKeys(t, payload.txo, ['tx', 'txv', 'iw', 'ch', 'bs', 'mbs', 'in', 'is', 'va', 'vn', 'vs'], 'txo');
460
- expectBufferField(t, payload.txo.tx, 32, 'txo.tx');
461
- expectBufferField(t, payload.txo.txv, 32, 'txo.txv');
462
- expectBufferField(t, payload.txo.iw, 32, 'txo.iw');
463
- expectBufferField(t, payload.txo.in, 32, 'txo.in');
464
- expectBufferField(t, payload.txo.is, 64, 'txo.is');
465
- expectBufferField(t, payload.txo.ch, 32, 'txo.ch');
466
- expectBufferField(t, payload.txo.bs, 32, 'txo.bs');
467
- expectBufferField(t, payload.txo.mbs, 32, 'txo.mbs');
468
- expectAddressBuffer(t, payload.txo.va, 'txo.va');
469
- expectBufferField(t, payload.txo.vn, 32, 'txo.vn');
470
- expectBufferField(t, payload.txo.vs, 64, 'txo.vs');
471
- t.ok(b4a.equals(payload.txo.tx, txHash));
472
- t.ok(b4a.equals(payload.txo.txv, txValidity));
473
- t.ok(b4a.equals(payload.txo.iw, incomingWriterKey));
474
- t.ok(b4a.equals(payload.txo.in, incomingNonce));
475
- t.ok(b4a.equals(payload.txo.is, incomingSignature));
476
- t.ok(b4a.equals(payload.txo.ch, contentHash));
477
- t.ok(b4a.equals(payload.txo.bs, externalBootstrap));
478
- t.ok(b4a.equals(payload.txo.mbs, msbBootstrap));
479
- });
480
-
481
- test('ApplyStateMessageBuilder complete transfer operation (tro)', async t => {
482
- const wallet = await createWallet(testKeyPair1.mnemonic);
483
- const otherWallet = await createWallet(testKeyPair2.mnemonic);
484
- const txHash = toBuf(hex('05', 32));
485
- const txValidity = toBuf(hex('06', 32));
486
- const incomingNonce = toBuf(hex('07', 32));
487
- const incomingSignature = toBuf(hex('08', 64));
488
- const amount = toBuf(hex('09', 16));
489
-
490
- const builder = new ApplyStateMessageBuilder(wallet, config);
491
- await builder
492
- .setPhase('complete')
493
- .setOutput('buffer')
494
- .setOperationType(OperationType.TRANSFER)
495
- .setAddress(wallet.address)
496
- .setTxHash(txHash)
497
- .setTxValidity(txValidity)
498
- .setIncomingNonce(incomingNonce)
499
- .setIncomingAddress(otherWallet.address)
500
- .setAmount(amount)
501
- .setIncomingSignature(incomingSignature)
502
- .build();
503
-
504
- const payload = builder.getPayload();
505
- t.is(payload.type, OperationType.TRANSFER);
506
- expectAddressBuffer(t, payload.address, 'address');
507
- t.ok(b4a.equals(payload.address, addressToBuffer(wallet.address, config.addressPrefix)));
508
- expectPayloadKeys(t, payload, 'tro');
509
- expectKeys(t, payload.tro, ['tx', 'txv', 'to', 'am', 'in', 'is', 'va', 'vn', 'vs'], 'tro');
510
- expectBufferField(t, payload.tro.tx, 32, 'tro.tx');
511
- expectBufferField(t, payload.tro.txv, 32, 'tro.txv');
512
- expectAddressBuffer(t, payload.tro.to, 'tro.to');
513
- expectBufferField(t, payload.tro.am, 16, 'tro.am');
514
- expectBufferField(t, payload.tro.in, 32, 'tro.in');
515
- expectBufferField(t, payload.tro.is, 64, 'tro.is');
516
- expectAddressBuffer(t, payload.tro.va, 'tro.va');
517
- expectBufferField(t, payload.tro.vn, 32, 'tro.vn');
518
- expectBufferField(t, payload.tro.vs, 64, 'tro.vs');
519
- t.ok(b4a.equals(payload.tro.tx, txHash));
520
- t.ok(b4a.equals(payload.tro.txv, txValidity));
521
- t.ok(b4a.equals(payload.tro.to, addressToBuffer(otherWallet.address, config.addressPrefix)));
522
- t.ok(b4a.equals(payload.tro.am, amount));
523
- t.ok(b4a.equals(payload.tro.in, incomingNonce));
524
- t.ok(b4a.equals(payload.tro.is, incomingSignature));
525
- });