trac-msb 0.2.18 → 0.2.20

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 (381) 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 +25 -8
  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 +138 -10
  16. package/src/config/env.js +36 -18
  17. package/src/core/network/Network.js +130 -34
  18. package/src/core/network/protocols/ProtocolInterface.js +5 -5
  19. package/src/core/network/protocols/connectionPolicies.js +86 -0
  20. package/src/core/network/protocols/legacy/NetworkMessageRouter.js +1 -1
  21. package/src/core/network/protocols/legacy/handlers/BaseStateOperationHandler.js +2 -2
  22. package/src/core/network/protocols/legacy/handlers/LegacyGetRequestHandler.js +3 -3
  23. package/src/core/network/protocols/legacy/handlers/LegacyRoleOperationHandler.js +1 -1
  24. package/src/core/network/protocols/legacy/handlers/LegacySubnetworkOperationHandler.js +1 -1
  25. package/src/core/network/protocols/legacy/handlers/LegacyTransferOperationHandler.js +1 -1
  26. package/src/core/network/protocols/legacy/validators/base/BaseResponse.js +7 -10
  27. package/src/core/network/protocols/shared/validators/PartialBootstrapDeploymentValidator.js +2 -2
  28. package/src/core/network/protocols/shared/validators/PartialOperationValidator.js +23 -23
  29. package/src/core/network/protocols/shared/validators/PartialRoleAccessValidator.js +14 -14
  30. package/src/core/network/protocols/shared/validators/PartialTransactionValidator.js +5 -5
  31. package/src/core/network/protocols/shared/validators/PartialTransferValidator.js +12 -11
  32. package/src/core/network/protocols/v1/V1ProtocolError.js +5 -69
  33. package/src/core/network/protocols/v1/handlers/V1BaseOperationHandler.js +3 -2
  34. package/src/core/network/protocols/v1/handlers/V1BroadcastTransactionOperationHandler.js +130 -247
  35. package/src/core/network/protocols/v1/handlers/V1LivenessOperationHandler.js +6 -5
  36. package/src/core/network/protocols/v1/handlers/broadcastTransaction/BroadcastTransactionErrorMapper.js +84 -0
  37. package/src/core/network/protocols/v1/handlers/broadcastTransaction/BroadcastTransactionOperationStrategies.js +128 -0
  38. package/src/core/network/protocols/v1/handlers/broadcastTransaction/BroadcastTransactionPayloadUtils.js +26 -0
  39. package/src/core/network/protocols/v1/validators/V1BaseOperation.js +32 -31
  40. package/src/core/network/protocols/v1/validators/V1BroadcastTransactionRequest.js +5 -3
  41. package/src/core/network/protocols/v1/validators/V1BroadcastTransactionResponse.js +34 -50
  42. package/src/core/network/protocols/v1/validators/V1ValidationSchema.js +1 -1
  43. package/src/core/network/services/ConnectionManager.js +11 -10
  44. package/src/core/network/services/MessageOrchestrator.js +53 -17
  45. package/src/core/network/services/PendingRequestService.js +22 -19
  46. package/src/core/network/services/TransactionCommitService.js +36 -36
  47. package/src/core/network/services/TransactionPoolService.js +39 -39
  48. package/src/core/network/services/TransactionRateLimiterService.js +8 -4
  49. package/src/core/network/services/ValidatorObserverService.js +397 -110
  50. package/src/core/state/State.js +190 -138
  51. package/src/core/state/utils/address.js +4 -9
  52. package/src/core/state/utils/balance.js +7 -7
  53. package/src/core/state/utils/roles.js +1 -1
  54. package/src/index.js +316 -275
  55. package/src/messages/network/v1/NetworkMessageBuilder.js +12 -21
  56. package/src/messages/network/v1/networkMessageFactory.js +1 -1
  57. package/src/messages/state/ApplyStateMessageBuilder.js +6 -6
  58. package/src/messages/state/applyStateMessageFactory.js +1 -1
  59. package/src/utils/buffer.js +1 -1
  60. package/src/utils/check.js +12 -13
  61. package/src/utils/constants.js +7 -0
  62. package/src/utils/errors.js +20 -0
  63. package/src/utils/fileUtils.js +12 -3
  64. package/src/utils/helpers.js +2 -2
  65. package/src/utils/migrationUtils.js +3 -3
  66. package/.dockerignore +0 -16
  67. package/CODE_OF_CONDUCT.md +0 -128
  68. package/docker-compose.yml +0 -17
  69. package/dockerfile +0 -41
  70. package/docs/fee_distribution.md +0 -89
  71. package/docs/trac_network_http_api.openapi.yaml +0 -889
  72. package/migration/.gitkeep +0 -0
  73. package/proto/applyOperations.proto +0 -117
  74. package/proto/network/v1/enums/message_type.proto +0 -16
  75. package/proto/network/v1/enums/result_code.proto +0 -84
  76. package/proto/network/v1/messages/broadcast_transaction_request.proto +0 -9
  77. package/proto/network/v1/messages/broadcast_transaction_response.proto +0 -13
  78. package/proto/network/v1/messages/liveness_request.proto +0 -8
  79. package/proto/network/v1/messages/liveness_response.proto +0 -11
  80. package/proto/network/v1/network_message.proto +0 -22
  81. package/rpc/rpc_services.js +0 -181
  82. package/scripts/generate-protobufs.js +0 -67
  83. package/src/core/network/identity/NetworkWalletFactory.js +0 -77
  84. package/src/core/network/protocols/shared/errors/SharedValidatorRejectionError.js +0 -27
  85. package/src/utils/cli.js +0 -130
  86. package/src/utils/cliCommands.js +0 -280
  87. package/tests/acceptance/v1/account/account.test.mjs +0 -129
  88. package/tests/acceptance/v1/balance/balance.test.mjs +0 -54
  89. package/tests/acceptance/v1/broadcast-transaction/broadcast-transaction.test.mjs +0 -116
  90. package/tests/acceptance/v1/confirmed-length/confirmed-length.test.mjs +0 -19
  91. package/tests/acceptance/v1/fee/fee.test.mjs +0 -11
  92. package/tests/acceptance/v1/health/health.test.mjs +0 -33
  93. package/tests/acceptance/v1/rpc.test.mjs +0 -95
  94. package/tests/acceptance/v1/tx/tx.test.mjs +0 -133
  95. package/tests/acceptance/v1/tx-details/tx-details.test.mjs +0 -241
  96. package/tests/acceptance/v1/tx-hashes/tx-hashes.test.mjs +0 -72
  97. package/tests/acceptance/v1/tx-payloads-bulk/tx-payloads-bulk.test.mjs +0 -27
  98. package/tests/acceptance/v1/txv/txv.test.mjs +0 -11
  99. package/tests/acceptance/v1/unconfirmed-length/unconfirmed-length.test.mjs +0 -11
  100. package/tests/fixtures/apply.fixtures.js +0 -77
  101. package/tests/fixtures/assembleMessage.fixtures.js +0 -41
  102. package/tests/fixtures/check.fixtures.js +0 -428
  103. package/tests/fixtures/networkV1.fixtures.js +0 -59
  104. package/tests/fixtures/protobuf.fixtures.js +0 -388
  105. package/tests/helpers/StateNetworkFactory.js +0 -155
  106. package/tests/helpers/address.js +0 -6
  107. package/tests/helpers/autobaseTestHelpers.js +0 -419
  108. package/tests/helpers/config.js +0 -4
  109. package/tests/helpers/createTestSignature.js +0 -13
  110. package/tests/helpers/regexHelper.js +0 -3
  111. package/tests/helpers/setupApplyTests.js +0 -587
  112. package/tests/helpers/transactionPayloads.mjs +0 -92
  113. package/tests/helpers/wrapper.js +0 -28
  114. package/tests/unit/messages/messages.test.js +0 -12
  115. package/tests/unit/messages/network/NetworkMessageBuilder.test.js +0 -436
  116. package/tests/unit/messages/network/NetworkMessageDirector.test.js +0 -347
  117. package/tests/unit/messages/state/applyStateMessageBuilder.complete.test.js +0 -525
  118. package/tests/unit/messages/state/applyStateMessageBuilder.partial.test.js +0 -237
  119. package/tests/unit/network/LegacyNetworkMessageRouter.test.js +0 -54
  120. package/tests/unit/network/NetworkWalletFactory.test.js +0 -156
  121. package/tests/unit/network/ProtocolSession.test.js +0 -127
  122. package/tests/unit/network/networkModule.test.js +0 -13
  123. package/tests/unit/network/services/ConnectionManager.test.js +0 -450
  124. package/tests/unit/network/services/MessageOrchestrator.test.js +0 -445
  125. package/tests/unit/network/services/PendingRequestService.test.js +0 -431
  126. package/tests/unit/network/services/TransactionCommitService.test.js +0 -246
  127. package/tests/unit/network/services/TransactionPoolService.test.js +0 -489
  128. package/tests/unit/network/services/TransactionRateLimiterService.test.js +0 -139
  129. package/tests/unit/network/services/ValidatorHealthCheckService.test.js +0 -115
  130. package/tests/unit/network/services/services.test.js +0 -17
  131. package/tests/unit/network/utils/v1TestUtils.js +0 -153
  132. package/tests/unit/network/v1/NetworkMessageRouterV1.test.js +0 -151
  133. package/tests/unit/network/v1/V1BaseOperation.test.js +0 -356
  134. package/tests/unit/network/v1/V1BroadcastTransactionOperationHandler.test.js +0 -129
  135. package/tests/unit/network/v1/V1BroadcastTransactionRequest.test.js +0 -53
  136. package/tests/unit/network/v1/V1BroadcastTransactionResponse.test.js +0 -512
  137. package/tests/unit/network/v1/V1LivenessRequest.test.js +0 -32
  138. package/tests/unit/network/v1/V1LivenessResponse.test.js +0 -45
  139. package/tests/unit/network/v1/V1ResultCode.test.js +0 -84
  140. package/tests/unit/network/v1/V1ValidationSchema.test.js +0 -13
  141. package/tests/unit/network/v1/connectionPolicies.test.js +0 -49
  142. package/tests/unit/network/v1/handlers/V1BaseOperationHandler.test.js +0 -284
  143. package/tests/unit/network/v1/handlers/V1BroadcastTransactionOperationHandler.test.js +0 -794
  144. package/tests/unit/network/v1/handlers/V1LivenessOperationHandler.test.js +0 -193
  145. package/tests/unit/network/v1/v1.handlers.test.js +0 -15
  146. package/tests/unit/network/v1/v1.test.js +0 -19
  147. package/tests/unit/network/v1/v1ValidationSchema/broadcastTransactionRequest.test.js +0 -119
  148. package/tests/unit/network/v1/v1ValidationSchema/broadcastTransactionResponse.test.js +0 -136
  149. package/tests/unit/network/v1/v1ValidationSchema/common.test.js +0 -308
  150. package/tests/unit/network/v1/v1ValidationSchema/livenessRequest.test.js +0 -90
  151. package/tests/unit/network/v1/v1ValidationSchema/livenessResponse.test.js +0 -133
  152. package/tests/unit/state/State.test.js +0 -80
  153. package/tests/unit/state/apply/addAdmin/addAdminHappyPathScenario.js +0 -42
  154. package/tests/unit/state/apply/addAdmin/addAdminScenarioHelpers.js +0 -276
  155. package/tests/unit/state/apply/addAdmin/adminEntryEncodingFailureScenario.js +0 -30
  156. package/tests/unit/state/apply/addAdmin/adminEntryExistsScenario.js +0 -78
  157. package/tests/unit/state/apply/addAdmin/nodeEntryInitializationFailureScenario.js +0 -30
  158. package/tests/unit/state/apply/addAdmin/nonBootstrapNodeScenario.js +0 -68
  159. package/tests/unit/state/apply/addAdmin/state.apply.addAdmin.test.js +0 -159
  160. package/tests/unit/state/apply/addIndexer/addIndexerHappyPathScenario.js +0 -39
  161. package/tests/unit/state/apply/addIndexer/addIndexerMultipleIndexersInTheNetworkScenario.js +0 -167
  162. package/tests/unit/state/apply/addIndexer/addIndexerPretenderAlreadyIndexerScenario.js +0 -21
  163. package/tests/unit/state/apply/addIndexer/addIndexerPretenderNotWriterScenario.js +0 -21
  164. package/tests/unit/state/apply/addIndexer/addIndexerRemoveAndReAddScenario.js +0 -186
  165. package/tests/unit/state/apply/addIndexer/addIndexerScenarioHelpers.js +0 -443
  166. package/tests/unit/state/apply/addIndexer/addIndexerWriterKeyAlreadyRegisteredScenario.js +0 -32
  167. package/tests/unit/state/apply/addIndexer/state.apply.addIndexer.test.js +0 -297
  168. package/tests/unit/state/apply/addWriter/addWriterHappyPathScenario.js +0 -41
  169. package/tests/unit/state/apply/addWriter/addWriterInvalidValidatorSignatureScenario.js +0 -32
  170. package/tests/unit/state/apply/addWriter/addWriterNewWkScenario.js +0 -149
  171. package/tests/unit/state/apply/addWriter/addWriterRequesterAlreadyWriterScenario.js +0 -21
  172. package/tests/unit/state/apply/addWriter/addWriterRequesterBalanceInsufficientScenario.js +0 -21
  173. package/tests/unit/state/apply/addWriter/addWriterRequesterEntryDecodeFailureScenario.js +0 -19
  174. package/tests/unit/state/apply/addWriter/addWriterRequesterEntryMissingScenario.js +0 -19
  175. package/tests/unit/state/apply/addWriter/addWriterRequesterIndexerScenario.js +0 -21
  176. package/tests/unit/state/apply/addWriter/addWriterRequesterNotWhitelistedScenario.js +0 -21
  177. package/tests/unit/state/apply/addWriter/addWriterScenarioHelpers.js +0 -766
  178. package/tests/unit/state/apply/addWriter/addWriterStakeBalanceUpdateFailureScenario.js +0 -50
  179. package/tests/unit/state/apply/addWriter/addWriterStakeInsufficientBalanceScenario.js +0 -29
  180. package/tests/unit/state/apply/addWriter/addWriterStakeInvalidBalanceScenario.js +0 -29
  181. package/tests/unit/state/apply/addWriter/addWriterStakeInvalidEntryScenario.js +0 -21
  182. package/tests/unit/state/apply/addWriter/addWriterStakeStakedBalanceFailureScenario.js +0 -37
  183. package/tests/unit/state/apply/addWriter/addWriterStakeSubtractFailureScenario.js +0 -42
  184. package/tests/unit/state/apply/addWriter/addWriterValidatorRewardScenario.js +0 -106
  185. package/tests/unit/state/apply/addWriter/addWriterWriterKeyMismatchScenario.js +0 -54
  186. package/tests/unit/state/apply/addWriter/addWriterWriterKeyOwnershipScenario.js +0 -54
  187. package/tests/unit/state/apply/addWriter/addWriterZeroWriterKeyScenario.js +0 -29
  188. package/tests/unit/state/apply/addWriter/state.apply.addWriter.test.js +0 -309
  189. package/tests/unit/state/apply/adminRecovery/adminRecoveryHappyPathScenario.js +0 -30
  190. package/tests/unit/state/apply/adminRecovery/adminRecoveryScenarioHelpers.js +0 -881
  191. package/tests/unit/state/apply/adminRecovery/state.apply.adminRecovery.test.js +0 -435
  192. package/tests/unit/state/apply/appendWhitelist/appendWhitelistBanAndReapplyScenario.js +0 -78
  193. package/tests/unit/state/apply/appendWhitelist/appendWhitelistExistingReaderHappyPathScenario.js +0 -98
  194. package/tests/unit/state/apply/appendWhitelist/appendWhitelistFeeAfterDisableScenario.js +0 -66
  195. package/tests/unit/state/apply/appendWhitelist/appendWhitelistHappyPathScenario.js +0 -55
  196. package/tests/unit/state/apply/appendWhitelist/appendWhitelistInsufficientAdminBalanceScenario.js +0 -103
  197. package/tests/unit/state/apply/appendWhitelist/appendWhitelistNodeAlreadyWhitelistedScenario.js +0 -60
  198. package/tests/unit/state/apply/appendWhitelist/appendWhitelistScenarioHelpers.js +0 -189
  199. package/tests/unit/state/apply/appendWhitelist/state.apply.appendWhitelist.test.js +0 -220
  200. package/tests/unit/state/apply/balanceInitialization/balanceInitializationHappyPathScenario.js +0 -82
  201. package/tests/unit/state/apply/balanceInitialization/balanceInitializationScenarioHelpers.js +0 -111
  202. package/tests/unit/state/apply/balanceInitialization/invalidAmountScenario.js +0 -45
  203. package/tests/unit/state/apply/balanceInitialization/nodeEntryBalanceUpdateFailureScenario.js +0 -82
  204. package/tests/unit/state/apply/balanceInitialization/state.apply.balanceInitialization.test.js +0 -189
  205. package/tests/unit/state/apply/banValidator/banValidatorBanAndReWhitelistScenario.js +0 -156
  206. package/tests/unit/state/apply/banValidator/banValidatorHappyPathScenario.js +0 -36
  207. package/tests/unit/state/apply/banValidator/banValidatorScenarioHelpers.js +0 -531
  208. package/tests/unit/state/apply/banValidator/banValidatorSequentialBansScenario.js +0 -74
  209. package/tests/unit/state/apply/banValidator/banValidatorTargetDecodeFailureScenario.js +0 -19
  210. package/tests/unit/state/apply/banValidator/banValidatorTargetIndexerScenario.js +0 -32
  211. package/tests/unit/state/apply/banValidator/banValidatorTargetNodeEntryMissingScenario.js +0 -19
  212. package/tests/unit/state/apply/banValidator/banValidatorTargetRoleUpdateFailureScenario.js +0 -19
  213. package/tests/unit/state/apply/banValidator/banValidatorWhitelistedNonWriterScenario.js +0 -38
  214. package/tests/unit/state/apply/banValidator/banValidatorWhitelistedZeroBalanceScenario.js +0 -91
  215. package/tests/unit/state/apply/banValidator/banValidatorWithdrawFailureScenario.js +0 -19
  216. package/tests/unit/state/apply/banValidator/state.apply.banValidator.test.js +0 -266
  217. package/tests/unit/state/apply/bootstrapDeployment/bootstrapDeploymentDuplicateRegistrationScenario.js +0 -143
  218. package/tests/unit/state/apply/bootstrapDeployment/bootstrapDeploymentHappyPathScenario.js +0 -26
  219. package/tests/unit/state/apply/bootstrapDeployment/bootstrapDeploymentIncompleteOperationScenario.js +0 -94
  220. package/tests/unit/state/apply/bootstrapDeployment/bootstrapDeploymentInvalidDeploymentEntryScenario.js +0 -37
  221. package/tests/unit/state/apply/bootstrapDeployment/bootstrapDeploymentMultipleBootstrapScenario.js +0 -86
  222. package/tests/unit/state/apply/bootstrapDeployment/bootstrapDeploymentScenarioHelpers.js +0 -347
  223. package/tests/unit/state/apply/bootstrapDeployment/invalidValidatorNodeEntryScenario.js +0 -57
  224. package/tests/unit/state/apply/bootstrapDeployment/state.apply.bootstrapDeployment.test.js +0 -429
  225. package/tests/unit/state/apply/common/access-control/adminConsistencyMismatchScenario.js +0 -120
  226. package/tests/unit/state/apply/common/access-control/adminEntryDecodeFailureScenario.js +0 -130
  227. package/tests/unit/state/apply/common/access-control/adminEntryExistsScenario.js +0 -93
  228. package/tests/unit/state/apply/common/access-control/adminEntryMissingScenario.js +0 -108
  229. package/tests/unit/state/apply/common/access-control/adminOnlyGuardScenario.js +0 -126
  230. package/tests/unit/state/apply/common/access-control/adminPublicKeyDecodeFailureScenario.js +0 -121
  231. package/tests/unit/state/apply/common/access-control/roleAccessOperationValidationScenario.js +0 -50
  232. package/tests/unit/state/apply/common/adminControlOperationValidationScenario.js +0 -56
  233. package/tests/unit/state/apply/common/balances/adminEntryUpdateFailureScenario.js +0 -52
  234. package/tests/unit/state/apply/common/balances/base/requesterBalanceScenarioBase.js +0 -198
  235. package/tests/unit/state/apply/common/balances/feeDecodeFailureScenario.js +0 -52
  236. package/tests/unit/state/apply/common/balances/requesterBalanceDecodeFailureScenario.js +0 -15
  237. package/tests/unit/state/apply/common/balances/requesterBalanceFeeApplicationFailureScenario.js +0 -11
  238. package/tests/unit/state/apply/common/balances/requesterBalanceInsufficientScenario.js +0 -15
  239. package/tests/unit/state/apply/common/balances/requesterBalanceUpdateFailureScenario.js +0 -11
  240. package/tests/unit/state/apply/common/balances/validatorEntryRewardFailureScenario.js +0 -11
  241. package/tests/unit/state/apply/common/balances/validatorEntryUpdateFailureScenario.js +0 -11
  242. package/tests/unit/state/apply/common/balances/validatorNodeEntryDecodeFailureScenario.js +0 -40
  243. package/tests/unit/state/apply/common/base/OperationValidationScenarioBase.js +0 -114
  244. package/tests/unit/state/apply/common/commonScenarioHelper.js +0 -103
  245. package/tests/unit/state/apply/common/indexer/indexerNodeEntryDecodeFailureScenario.js +0 -36
  246. package/tests/unit/state/apply/common/indexer/indexerNodeEntryMissingScenario.js +0 -36
  247. package/tests/unit/state/apply/common/indexer/indexerRoleUpdateFailureScenario.js +0 -29
  248. package/tests/unit/state/apply/common/indexer/indexerSequenceStateInvalidScenario.js +0 -66
  249. package/tests/unit/state/apply/common/invalidMessageComponentValidationScenario.js +0 -84
  250. package/tests/unit/state/apply/common/nodeEntryInitializationFailureScenario.js +0 -47
  251. package/tests/unit/state/apply/common/operationAlreadyAppliedScenario.js +0 -85
  252. package/tests/unit/state/apply/common/payload-structure/addressWithInvalidPublicKeyScenario.js +0 -52
  253. package/tests/unit/state/apply/common/payload-structure/initializationDisabledScenario.js +0 -54
  254. package/tests/unit/state/apply/common/payload-structure/invalidAddressValidationScenario.js +0 -73
  255. package/tests/unit/state/apply/common/payload-structure/invalidHashValidationScenario.js +0 -71
  256. package/tests/unit/state/apply/common/payload-structure/invalidPayloadValidationScenario.js +0 -31
  257. package/tests/unit/state/apply/common/payload-structure/invalidSignatureValidationScenario.js +0 -142
  258. package/tests/unit/state/apply/common/payload-structure/partialOperationValidationScenario.js +0 -87
  259. package/tests/unit/state/apply/common/requester/requesterNodeEntryBufferMissingScenario.js +0 -71
  260. package/tests/unit/state/apply/common/requester/requesterNodeEntryDecodeFailureScenario.js +0 -73
  261. package/tests/unit/state/apply/common/requester/requesterNodeEntryMissingScenario.js +0 -36
  262. package/tests/unit/state/apply/common/requesterAddressValidationScenario.js +0 -44
  263. package/tests/unit/state/apply/common/requesterPublicKeyValidationScenario.js +0 -25
  264. package/tests/unit/state/apply/common/transactionValidityMismatchScenario.js +0 -98
  265. package/tests/unit/state/apply/common/validatorConsistency/base/validatorConsistencyScenarioBase.js +0 -202
  266. package/tests/unit/state/apply/common/validatorConsistency/validatorEntryDecodeFailureScenario.js +0 -17
  267. package/tests/unit/state/apply/common/validatorConsistency/validatorEntryMissingScenario.js +0 -44
  268. package/tests/unit/state/apply/common/validatorConsistency/validatorInactiveScenario.js +0 -19
  269. package/tests/unit/state/apply/common/validatorConsistency/validatorWriterKeyMismatchScenario.js +0 -18
  270. package/tests/unit/state/apply/common/validatorEntryValidation/base/validatorEntryValidationScenarioBase.js +0 -315
  271. package/tests/unit/state/apply/common/validatorEntryValidation/validatorEntryInvalidBalanceScenario.js +0 -18
  272. package/tests/unit/state/apply/common/writerKeyExistsValidationScenario.js +0 -43
  273. package/tests/unit/state/apply/disableInitialization/disableInitializationAlreadyDisabledScenario.js +0 -53
  274. package/tests/unit/state/apply/disableInitialization/disableInitializationHappyPathScenario.js +0 -24
  275. package/tests/unit/state/apply/disableInitialization/disableInitializationScenarioHelpers.js +0 -204
  276. package/tests/unit/state/apply/disableInitialization/state.apply.disableInitialization.test.js +0 -161
  277. package/tests/unit/state/apply/missing-tests.md +0 -18
  278. package/tests/unit/state/apply/removeIndexer/removeIndexerHappyPathScenario.js +0 -58
  279. package/tests/unit/state/apply/removeIndexer/removeIndexerReAddAndRemoveAgainScenario.js +0 -98
  280. package/tests/unit/state/apply/removeIndexer/removeIndexerRemoveMultipleIndexersScenario.js +0 -167
  281. package/tests/unit/state/apply/removeIndexer/removeIndexerScenarioHelpers.js +0 -429
  282. package/tests/unit/state/apply/removeIndexer/removeIndexerTargetNotIndexerScenario.js +0 -22
  283. package/tests/unit/state/apply/removeIndexer/removeIndexerWriterKeyMissingScenario.js +0 -20
  284. package/tests/unit/state/apply/removeIndexer/state.apply.removeIndexer.test.js +0 -291
  285. package/tests/unit/state/apply/removeWriter/removeWriterAndAddWriterAgainScenario.js +0 -87
  286. package/tests/unit/state/apply/removeWriter/removeWriterHappyPathScenario.js +0 -38
  287. package/tests/unit/state/apply/removeWriter/removeWriterInvalidValidatorSignatureScenario.js +0 -32
  288. package/tests/unit/state/apply/removeWriter/removeWriterRequesterBalanceInsufficientScenario.js +0 -21
  289. package/tests/unit/state/apply/removeWriter/removeWriterRequesterEntryDecodeFailureScenario.js +0 -19
  290. package/tests/unit/state/apply/removeWriter/removeWriterRequesterEntryMissingScenario.js +0 -19
  291. package/tests/unit/state/apply/removeWriter/removeWriterRequesterIndexerScenario.js +0 -21
  292. package/tests/unit/state/apply/removeWriter/removeWriterRequesterNotWriterScenario.js +0 -21
  293. package/tests/unit/state/apply/removeWriter/removeWriterRequesterRoleUpdateFailureScenario.js +0 -19
  294. package/tests/unit/state/apply/removeWriter/removeWriterScenarioHelpers.js +0 -348
  295. package/tests/unit/state/apply/removeWriter/removeWriterThroughWriterValidatorScenario.js +0 -113
  296. package/tests/unit/state/apply/removeWriter/removeWriterUnstakeFailureScenario.js +0 -33
  297. package/tests/unit/state/apply/removeWriter/removeWriterWriterKeyMismatchScenario.js +0 -21
  298. package/tests/unit/state/apply/removeWriter/removeWriterWriterKeyOwnershipScenario.js +0 -26
  299. package/tests/unit/state/apply/removeWriter/removeWriterWriterKeyRegistryMissingScenario.js +0 -22
  300. package/tests/unit/state/apply/removeWriter/state.apply.removeWriter.test.js +0 -307
  301. package/tests/unit/state/apply/state.apply.test.js +0 -24
  302. package/tests/unit/state/apply/transfer/state.apply.transfer.test.js +0 -819
  303. package/tests/unit/state/apply/transfer/transferContractSchemaValidationScenario.js +0 -22
  304. package/tests/unit/state/apply/transfer/transferDoubleSpendAcrossValidatorsScenario.js +0 -146
  305. package/tests/unit/state/apply/transfer/transferDoubleSpendSameBatchScenario.js +0 -63
  306. package/tests/unit/state/apply/transfer/transferDoubleSpendSingleValidatorScenario.js +0 -67
  307. package/tests/unit/state/apply/transfer/transferExistingRecipientAmountScenario.js +0 -31
  308. package/tests/unit/state/apply/transfer/transferExistingRecipientZeroAmountScenario.js +0 -31
  309. package/tests/unit/state/apply/transfer/transferHandlerGuardScenarios.js +0 -22
  310. package/tests/unit/state/apply/transfer/transferHappyPathScenario.js +0 -8
  311. package/tests/unit/state/apply/transfer/transferInvalidIncomingDataScenario.js +0 -66
  312. package/tests/unit/state/apply/transfer/transferNewRecipientAmountScenario.js +0 -31
  313. package/tests/unit/state/apply/transfer/transferNewRecipientZeroAmountScenario.js +0 -31
  314. package/tests/unit/state/apply/transfer/transferScenarioHelpers.js +0 -1170
  315. package/tests/unit/state/apply/transfer/transferSelfTransferAmountScenario.js +0 -38
  316. package/tests/unit/state/apply/transfer/transferSelfTransferZeroAmountScenario.js +0 -38
  317. package/tests/unit/state/apply/transfer/transferValidatorRecipientAmountScenario.js +0 -38
  318. package/tests/unit/state/apply/transfer/transferValidatorRecipientZeroAmountScenario.js +0 -38
  319. package/tests/unit/state/apply/txOperation/state.apply.txOperation.test.js +0 -318
  320. package/tests/unit/state/apply/txOperation/txOperationBootstrapNotRegisteredScenario.js +0 -70
  321. package/tests/unit/state/apply/txOperation/txOperationDifferentValidatorCreatorHappyPathScenario.js +0 -23
  322. package/tests/unit/state/apply/txOperation/txOperationInvalidDeploymentEntryScenario.js +0 -48
  323. package/tests/unit/state/apply/txOperation/txOperationInvalidFeeAmountScenario.js +0 -39
  324. package/tests/unit/state/apply/txOperation/txOperationInvalidSubnetCreatorAddressScenario.js +0 -46
  325. package/tests/unit/state/apply/txOperation/txOperationRequesterCreatorHappyPathScenario.js +0 -21
  326. package/tests/unit/state/apply/txOperation/txOperationScenarioHelpers.js +0 -432
  327. package/tests/unit/state/apply/txOperation/txOperationStandardHappyPathScenario.js +0 -21
  328. package/tests/unit/state/apply/txOperation/txOperationTransferFeeAddCreatorBalanceFailureScenario.js +0 -26
  329. package/tests/unit/state/apply/txOperation/txOperationTransferFeeAddValidatorBalanceFailureScenario.js +0 -25
  330. package/tests/unit/state/apply/txOperation/txOperationTransferFeeAddValidatorBonusFailureScenario.js +0 -27
  331. package/tests/unit/state/apply/txOperation/txOperationTransferFeeDecodeCreatorEntryScenario.js +0 -18
  332. package/tests/unit/state/apply/txOperation/txOperationTransferFeeDecodeRequesterEntryScenario.js +0 -17
  333. package/tests/unit/state/apply/txOperation/txOperationTransferFeeDecodeValidatorEntryScenario.js +0 -31
  334. package/tests/unit/state/apply/txOperation/txOperationTransferFeeGuardBypassScenario.js +0 -49
  335. package/tests/unit/state/apply/txOperation/txOperationTransferFeeGuardScenarioFactory.js +0 -93
  336. package/tests/unit/state/apply/txOperation/txOperationTransferFeeInsufficientRequesterBalanceScenario.js +0 -28
  337. package/tests/unit/state/apply/txOperation/txOperationTransferFeeInvalidCreatorBalanceScenario.js +0 -29
  338. package/tests/unit/state/apply/txOperation/txOperationTransferFeeInvalidRequesterBalanceScenario.js +0 -28
  339. package/tests/unit/state/apply/txOperation/txOperationTransferFeeInvalidRequesterEntryScenario.js +0 -17
  340. package/tests/unit/state/apply/txOperation/txOperationTransferFeeInvalidValidatorBalanceScenario.js +0 -33
  341. package/tests/unit/state/apply/txOperation/txOperationTransferFeeMissingCreatorEntryScenario.js +0 -18
  342. package/tests/unit/state/apply/txOperation/txOperationTransferFeeSubtractFailureScenario.js +0 -25
  343. package/tests/unit/state/apply/txOperation/txOperationTransferFeeUpdateCreatorBalanceFailureScenario.js +0 -26
  344. package/tests/unit/state/apply/txOperation/txOperationTransferFeeUpdateFailureScenario.js +0 -25
  345. package/tests/unit/state/apply/txOperation/txOperationTransferFeeUpdateValidatorBalanceFailureScenario.js +0 -26
  346. package/tests/unit/state/apply/txOperation/txOperationTransferFeeUpdateValidatorBonusFailureScenario.js +0 -27
  347. package/tests/unit/state/apply/txOperation/txOperationValidatorCreatorHappyPathScenario.js +0 -21
  348. package/tests/unit/state/stateModule.test.js +0 -23
  349. package/tests/unit/state/stateTestUtils.js +0 -32
  350. package/tests/unit/state/utils/address.test.js +0 -63
  351. package/tests/unit/state/utils/adminEntry.test.js +0 -52
  352. package/tests/unit/state/utils/balance.test.js +0 -320
  353. package/tests/unit/state/utils/lengthEntry.test.js +0 -54
  354. package/tests/unit/state/utils/nodeEntry.test.js +0 -298
  355. package/tests/unit/state/utils/roles.test.js +0 -44
  356. package/tests/unit/unit.test.js +0 -14
  357. package/tests/unit/utils/amountSerialization/amountSerialization.test.js +0 -237
  358. package/tests/unit/utils/buffer/buffer.test.js +0 -251
  359. package/tests/unit/utils/check/adminControlOperation.test.js +0 -156
  360. package/tests/unit/utils/check/balanceInitializationOperation.test.js +0 -54
  361. package/tests/unit/utils/check/bootstrapDeploymentOperation.test.js +0 -104
  362. package/tests/unit/utils/check/check.test.js +0 -17
  363. package/tests/unit/utils/check/common.test.js +0 -419
  364. package/tests/unit/utils/check/coreAdminOperation.test.js +0 -95
  365. package/tests/unit/utils/check/roleAccessOperation.test.js +0 -255
  366. package/tests/unit/utils/check/transactionOperation.test.js +0 -107
  367. package/tests/unit/utils/check/transferOperation.test.js +0 -102
  368. package/tests/unit/utils/deepEqualApplyPayload/deepEqualApplyPayload.test.js +0 -102
  369. package/tests/unit/utils/fileUtils/readAddressesFromWhitelistFile.test.js +0 -95
  370. package/tests/unit/utils/fileUtils/readBalanceMigrationFile.test.js +0 -149
  371. package/tests/unit/utils/helpers/helpers.test.js +0 -11
  372. package/tests/unit/utils/helpers/isHexString.test.js +0 -12
  373. package/tests/unit/utils/helpers/normalizeHex.test.js +0 -82
  374. package/tests/unit/utils/migrationUtils/validateAddressFromIncomingFile.test.js +0 -100
  375. package/tests/unit/utils/normalizers/normalizers.test.js +0 -469
  376. package/tests/unit/utils/protobuf/applyOperations.test.js +0 -91
  377. package/tests/unit/utils/protobuf/operationHelpers.test.js +0 -303
  378. package/tests/unit/utils/protobuf/protobuf.test.js +0 -12
  379. package/tests/unit/utils/type/type.test.js +0 -25
  380. package/tests/unit/utils/utils.test.js +0 -21
  381. package/whitelist/.gitkeep +0 -0
File without changes
@@ -1,117 +0,0 @@
1
- syntax = "proto3";
2
-
3
- package apply.operations;
4
-
5
- //DO NOT CHANGE THE ORDER AFTER RELEASE - ONLY APPEND NEW ONES
6
- enum OperationType {
7
- UNKNOWN = 0;
8
- ADD_ADMIN = 1; // complete
9
- DISABLE_INITIALIZATION = 2; // complete
10
- BALANCE_INITIALIZATION = 3; // complete
11
- APPEND_WHITELIST = 4; // complete
12
- ADD_WRITER = 5; // partial
13
- REMOVE_WRITER = 6; // partial
14
- ADMIN_RECOVERY = 7; // partial
15
- ADD_INDEXER = 8; // complete
16
- REMOVE_INDEXER = 9; // complete
17
- BAN_VALIDATOR = 10; // complete
18
- BOOTSTRAP_DEPLOYMENT = 11; // partial
19
- TX = 12; // partial
20
- TRANSFER = 13; // partial
21
- }
22
-
23
- // add admin operation, disable_initialization (complete by default)
24
- message CoreAdminOperation {
25
- bytes tx = 1; // Transaction hash (unique identifier for the transaction)
26
- bytes txv = 2; // Transaction expiration
27
- bytes iw = 3; // incoming writer key (admin)
28
- bytes in = 4; // Nonce of the invoker (admin)
29
- bytes is = 5; // Signature of the invoker (admin)
30
- }
31
-
32
- // append_whitelist, add_indexer, remove_indexer, ban_writer (complete by default)
33
- message AdminControlOperation {
34
- bytes tx = 1; // Transaction hash (unique identifier for the transaction)
35
- bytes txv = 2; // Transaction expiration
36
- bytes ia = 3; // selected address to specific operation.
37
- bytes in = 4; // Nonce of the invoker (admin)
38
- bytes is = 5; // Signature of the invoker (admin)
39
- }
40
-
41
- // balance_initialization (complete by default)
42
- message BalanceInitializationOperation {
43
- bytes tx = 1; // Transaction hash (unique identifier for the transaction)
44
- bytes txv = 2; // Transaction expiration
45
- bytes ia = 3; // selected address to specific operation.
46
- bytes am = 4; // Initial balance to be set for the address
47
- bytes in = 5; // Nonce of the contract invoker (admin)
48
- bytes is = 6; // Signature of the contract invoker (admin)
49
- }
50
- // token_transfer (partial - need to be signed by another writer to be complete)
51
- message TransferOperation {
52
- bytes tx = 1; // Transaction hash (unique identifier for the transaction)
53
- bytes txv = 2; // Transaction expiration
54
- bytes to = 3; // Address of the recipient (any account)
55
- bytes am = 4; // Amount of tokens to transfer
56
- bytes in = 5; // Nonce of the invoker (any account)
57
- bytes is = 6; // Signature of the invoker (any account)
58
- bytes va = 7; // Validator's address (optional)
59
- bytes vn = 8; // Validator's nonce (optional)
60
- bytes vs = 9; // Validator's signature (optional)
61
- }
62
-
63
- // add_writer, remove_writer, admin_recovery (partial - need to be signed by another writer to be complete)
64
- message RoleAccessOperation {
65
- bytes tx = 1; // Transaction hash (unique identifier for the transaction)
66
- bytes txv = 2; // Transaction expiration
67
- bytes iw = 3; // Writing key of the invoker (whitelisted node, admin to be recovered, Trac Network)
68
- bytes in = 4; // Nonce of the invoker (whitelisted node, admin to be recovered, Trac Network)
69
- bytes is = 5; // Signature of the invoker (whitelisted node, admin to be recovered)
70
- bytes va = 6; // Validator's address (optional)
71
- bytes vn = 7; // Validator's nonce (optional)
72
- bytes vs = 8; // Validator's signature (optional)
73
- }
74
-
75
- // transaction - (partial - need to be signed by another writer to be complete)
76
- message TxOperation {
77
- bytes tx = 1; // Transaction hash (unique identifier for the transaction)
78
- bytes txv = 2; // Transaction expiration
79
- bytes iw = 3; // Writing key of the requesting node (external subnetwork)
80
- bytes ch = 4; // Content hash (hash of the transaction's data)
81
- bytes bs = 5; // External bootstrap contract
82
- bytes mbs = 6; // MSB bootstrap key
83
- bytes in = 7; // Nonce of the requesting node
84
- bytes is = 8; // Requester's signature
85
- bytes va = 9; // Validator's address (optional)
86
- bytes vn = 10; // Validator's nonce (optional)
87
- bytes vs = 11; // Validator's signature (optional)
88
- }
89
-
90
- // bootstrap deployment - (partial - need to be signed by another writer to be complete)
91
- message BootstrapDeploymentOperation {
92
- bytes tx = 1; // Transaction hash (unique identifier for the transaction)
93
- bytes txv = 2; // Transaction expiration
94
- bytes bs = 3; // Bootstrap contract address
95
- bytes ic = 4; // Channel on which the contract will operate
96
- bytes in = 5; // Nonce of the contract invoker
97
- bytes is = 6; // Signature of the contract invoker
98
- bytes va = 7; // Validator's address (optional)
99
- bytes vn = 8; // Validator's nonce (optional)
100
- bytes vs = 9; // Validator's signature (optional)
101
- }
102
-
103
- // Main structure for the operations where messages are
104
- message Operation {
105
- OperationType type = 1;
106
- bytes address = 2; // address of the invoker
107
-
108
- oneof value {
109
- CoreAdminOperation cao = 3;
110
- AdminControlOperation aco = 4;
111
- BalanceInitializationOperation bio = 5;
112
- TransferOperation tro = 6;
113
- RoleAccessOperation rao = 7;
114
- BootstrapDeploymentOperation bdo = 8;
115
- TxOperation txo = 9;
116
- }
117
- }
@@ -1,16 +0,0 @@
1
- syntax = "proto3";
2
-
3
- package network.v1;
4
-
5
- // Warning: Do not change numeric values of existing enum fields.
6
- // They are part of the public API.
7
- // New values may be added, but existing values must never be renumbered or reused.
8
- // Use [deprecated = true] while phasing out a value that still remains in the schema.
9
- // If a value is removed, reserve its number (and preferably its name).
10
- enum MessageType {
11
- MESSAGE_TYPE_UNSPECIFIED = 0;
12
- MESSAGE_TYPE_LIVENESS_REQUEST = 1;
13
- MESSAGE_TYPE_LIVENESS_RESPONSE = 2;
14
- MESSAGE_TYPE_BROADCAST_TRANSACTION_REQUEST = 3;
15
- MESSAGE_TYPE_BROADCAST_TRANSACTION_RESPONSE = 4;
16
- }
@@ -1,84 +0,0 @@
1
- syntax = "proto3";
2
-
3
- package network.v1;
4
-
5
- // Warning: Do not change numeric values of existing enum fields.
6
- // They are part of the public API.
7
- // New values may be added, but existing values must never be renumbered or reused.
8
- // Use [deprecated = true] while phasing out a value that still remains in the schema.
9
- // If a value is removed, reserve its number (and preferably its name).
10
-
11
- enum ResultCode {
12
- // 0-10: [SCOPE: BASE_TRANSPORT_AND_VALIDATOR_STATUS]
13
- // Generic V1 processing outcome before deeper payload/proof-specific validation branches.
14
- RESULT_CODE_UNSPECIFIED = 0; // We should create an v1Error for this case, sender disconnects from the validator, add optional information to update the node verion.
15
- RESULT_CODE_OK = 1;
16
- RESULT_CODE_INVALID_PAYLOAD = 2;
17
- RESULT_CODE_RATE_LIMITED = 3;
18
- RESULT_CODE_SIGNATURE_INVALID = 4;
19
- RESULT_CODE_UNEXPECTED_ERROR = 5;
20
- RESULT_CODE_TIMEOUT = 6;
21
- RESULT_CODE_NODE_HAS_NO_WRITE_ACCESS = 7;
22
- RESULT_CODE_TX_ACCEPTED_PROOF_UNAVAILABLE = 8;
23
- RESULT_CODE_NODE_OVERLOADED = 9;
24
- RESULT_CODE_TX_ALREADY_PENDING = 10;
25
- // 11-44: [SCOPE: SHARED_VALIDATORS_REQUEST_PAYLOAD]
26
- // (incoming BROADCAST_TRANSACTION_REQUEST -> partial apply payload validation) - validator disconnects, sender rotates
27
- RESULT_CODE_OPERATION_TYPE_UNKNOWN = 11;
28
- RESULT_CODE_SCHEMA_VALIDATION_FAILED = 12;
29
- RESULT_CODE_REQUESTER_ADDRESS_INVALID = 13;
30
- RESULT_CODE_REQUESTER_PUBLIC_KEY_INVALID = 14;
31
- RESULT_CODE_TX_HASH_MISMATCH = 15;
32
- RESULT_CODE_TX_SIGNATURE_INVALID = 16;
33
- RESULT_CODE_TX_EXPIRED = 17;
34
- RESULT_CODE_TX_ALREADY_EXISTS = 18;
35
- RESULT_CODE_OPERATION_ALREADY_COMPLETED = 19;
36
- RESULT_CODE_REQUESTER_NOT_FOUND = 20;
37
- RESULT_CODE_INSUFFICIENT_FEE_BALANCE = 21;
38
- RESULT_CODE_EXTERNAL_BOOTSTRAP_EQUALS_MSB_BOOTSTRAP = 22;
39
- RESULT_CODE_SELF_VALIDATION_FORBIDDEN = 23;
40
- RESULT_CODE_ROLE_NODE_ENTRY_NOT_FOUND = 24;
41
- RESULT_CODE_ROLE_NODE_ALREADY_WRITER = 25;
42
- RESULT_CODE_ROLE_NODE_NOT_WHITELISTED = 26;
43
- RESULT_CODE_ROLE_NODE_NOT_WRITER = 27;
44
- RESULT_CODE_ROLE_NODE_IS_INDEXER = 28;
45
- RESULT_CODE_ROLE_ADMIN_ENTRY_MISSING = 29;
46
- RESULT_CODE_ROLE_INVALID_RECOVERY_CASE = 30;
47
- RESULT_CODE_ROLE_UNKNOWN_OPERATION = 31;
48
- RESULT_CODE_ROLE_INVALID_WRITER_KEY = 32;
49
- RESULT_CODE_ROLE_INSUFFICIENT_FEE_BALANCE = 33;
50
- RESULT_CODE_MSB_BOOTSTRAP_MISMATCH = 34;
51
- RESULT_CODE_EXTERNAL_BOOTSTRAP_NOT_DEPLOYED = 35;
52
- RESULT_CODE_EXTERNAL_BOOTSTRAP_TX_MISSING = 36;
53
- RESULT_CODE_EXTERNAL_BOOTSTRAP_MISMATCH = 37;
54
- RESULT_CODE_BOOTSTRAP_ALREADY_EXISTS = 38;
55
- RESULT_CODE_TRANSFER_RECIPIENT_ADDRESS_INVALID = 39;
56
- RESULT_CODE_TRANSFER_RECIPIENT_PUBLIC_KEY_INVALID = 40;
57
- RESULT_CODE_TRANSFER_AMOUNT_TOO_LARGE = 41;
58
- RESULT_CODE_TRANSFER_SENDER_NOT_FOUND = 42;
59
- RESULT_CODE_TRANSFER_INSUFFICIENT_BALANCE = 43;
60
- RESULT_CODE_TRANSFER_RECIPIENT_BALANCE_OVERFLOW = 44;
61
-
62
- // 45-47: [SCOPE: REQUEST_DISPATCH_TXPOOL_TXCOMMIT_PIPELINE]
63
- // (dispatch/enqueue/commit handling on validator)
64
- RESULT_CODE_TX_HASH_INVALID_FORMAT = 45;
65
- RESULT_CODE_INTERNAL_ENQUEUE_VALIDATION_FAILED = 46;
66
- RESULT_CODE_TX_COMMITTED_RECEIPT_MISSING = 47;
67
-
68
- // 48-60: [SCOPE: VALIDATOR_RESPONSE_PROOF_AND_IDENTITY_VALIDATION]
69
- // (incoming BROADCAST_TRANSACTION_RESPONSE validation on sender)
70
- RESULT_CODE_VALIDATOR_RESPONSE_TX_TYPE_INVALID = 48;
71
- RESULT_CODE_VALIDATOR_RESPONSE_TX_TYPE_UNKNOWN = 49;
72
- RESULT_CODE_VALIDATOR_RESPONSE_TX_TYPE_UNSUPPORTED = 50;
73
- RESULT_CODE_VALIDATOR_RESPONSE_SCHEMA_INVALID = 51;
74
- RESULT_CODE_PENDING_REQUEST_MISSING_TX_DATA = 52;
75
- RESULT_CODE_PROOF_PAYLOAD_MISMATCH = 53;
76
- RESULT_CODE_VALIDATOR_WRITER_KEY_NOT_REGISTERED = 54;
77
- RESULT_CODE_VALIDATOR_ADDRESS_MISMATCH = 55;
78
- RESULT_CODE_VALIDATOR_NODE_ENTRY_NOT_FOUND = 56;
79
- RESULT_CODE_VALIDATOR_NODE_NOT_WRITER = 57;
80
- RESULT_CODE_VALIDATOR_WRITER_KEY_MISMATCH = 58;
81
- RESULT_CODE_VALIDATOR_TX_OBJECT_INVALID = 59;
82
- RESULT_CODE_VALIDATOR_VA_MISSING = 60;
83
- RESULT_CODE_TX_INVALID_PAYLOAD = 61;
84
- }
@@ -1,9 +0,0 @@
1
- syntax = "proto3";
2
-
3
- package network.v1;
4
-
5
- message BroadcastTransactionRequest {
6
- bytes data = 1;
7
- bytes nonce = 2;
8
- bytes signature = 3;
9
- }
@@ -1,13 +0,0 @@
1
- syntax = "proto3";
2
-
3
- package network.v1;
4
-
5
- import "network/v1/enums/result_code.proto";
6
-
7
- message BroadcastTransactionResponse {
8
- bytes nonce = 1;
9
- bytes signature = 2;
10
- bytes proof = 3;
11
- uint64 timestamp = 4;
12
- ResultCode result = 5;
13
- }
@@ -1,8 +0,0 @@
1
- syntax = "proto3";
2
-
3
- package network.v1;
4
-
5
- message LivenessRequest {
6
- bytes nonce = 1;
7
- bytes signature = 2;
8
- }
@@ -1,11 +0,0 @@
1
- syntax = "proto3";
2
-
3
- package network.v1;
4
-
5
- import "network/v1/enums/result_code.proto";
6
-
7
- message LivenessResponse {
8
- bytes nonce = 1;
9
- bytes signature = 2;
10
- ResultCode result = 3;
11
- }
@@ -1,22 +0,0 @@
1
- syntax = "proto3";
2
-
3
- package network.v1;
4
-
5
- import "network/v1/enums/message_type.proto";
6
- import "network/v1/messages/liveness_request.proto";
7
- import "network/v1/messages/liveness_response.proto";
8
- import "network/v1/messages/broadcast_transaction_request.proto";
9
- import "network/v1/messages/broadcast_transaction_response.proto";
10
-
11
- message MessageHeader {
12
- MessageType type = 1;
13
- string id = 2;
14
- uint64 timestamp = 3;
15
- oneof field {
16
- LivenessRequest liveness_request = 4;
17
- LivenessResponse liveness_response = 5;
18
- BroadcastTransactionRequest broadcast_transaction_request = 6;
19
- BroadcastTransactionResponse broadcast_transaction_response = 7;
20
- }
21
- repeated string capabilities = 8;
22
- }
@@ -1,181 +0,0 @@
1
- import { bufferToBigInt } from "../src/utils/amountSerialization.js";
2
- import {
3
- normalizeDecodedPayloadForJson,
4
- normalizeTransactionOperation,
5
- normalizeTransferOperation
6
- } from "../src/utils/normalizers.js";
7
- import { get_confirmed_tx_info, get_unconfirmed_tx_info } from "../src/utils/cli.js";
8
- import { OperationType } from "../src/utils/constants.js";
9
- import { sleep } from "../src/utils/helpers.js";
10
- import b4a from "b4a";
11
- import { ValidationError, BroadcastError, NotFoundError } from "./utils/helpers.js";
12
- import PartialTransactionValidator from "../src/core/network/protocols/shared/validators/PartialTransactionValidator.js";
13
- import PartialTransferValidator from "../src/core/network/protocols/shared/validators/PartialTransferValidator.js";
14
-
15
- // This was added because V1 is not waiting for signed/unsigned state. So to include reverse compatibility
16
- // we need to slow down v1 to legacy case.
17
- const waitForUnconfirmedTx = async (state, txHash, config) => {
18
- const startedAt = Date.now();
19
- while ((Date.now() - startedAt) < config.messageValidatorResponseTimeout) {
20
- const payload = await state.get(txHash);
21
- if (payload) return true;
22
- await sleep(100);
23
- }
24
- return false;
25
- };
26
-
27
- export async function getBalance(msbInstance, address, confirmed) {
28
- const state = msbInstance.state;
29
- const useUnconfirmed = confirmed === false;
30
-
31
- const nodeEntry = useUnconfirmed
32
- ? await state.getNodeEntryUnsigned(address)
33
- : await state.getNodeEntry(address);
34
-
35
- if (!nodeEntry) return undefined;
36
-
37
- return {
38
- address,
39
- balance: bufferToBigInt(nodeEntry.balance).toString(),
40
- };
41
- }
42
-
43
- export async function getTxv(msbInstance) {
44
- const txv = await msbInstance.state.getIndexerSequenceState();
45
- return txv.toString("hex");
46
- }
47
-
48
- export async function getFee(msbInstance) {
49
- const feeBuffer = msbInstance.state.getFee();
50
- return bufferToBigInt(feeBuffer).toString();
51
- }
52
-
53
- export async function getConfirmedLength(msbInstance) {
54
- return msbInstance.state.getSignedLength();
55
- }
56
-
57
- export async function getUnconfirmedLength(msbInstance) {
58
- return msbInstance.state.getUnsignedLength();
59
- }
60
-
61
- export async function broadcastTransaction(msbInstance, config, payload) {
62
- if (!payload) {
63
- throw new ValidationError("Transaction payload is required for broadcasting.");
64
- }
65
-
66
- let normalizedPayload;
67
- let isValid = false;
68
- let hash;
69
-
70
- const partialTransferValidator = new PartialTransferValidator(msbInstance.state, null , config);
71
- const partialTransactionValidator = new PartialTransactionValidator(msbInstance.state, null , config);
72
-
73
- if (payload.type === OperationType.TRANSFER) {
74
- normalizedPayload = normalizeTransferOperation(payload, config);
75
- isValid = await partialTransferValidator.validate(normalizedPayload);
76
- hash = b4a.toString(normalizedPayload.tro.tx, "hex");
77
- } else if (payload.type === OperationType.TX) {
78
- normalizedPayload = normalizeTransactionOperation(payload, config);
79
- isValid = await partialTransactionValidator.validate(normalizedPayload);
80
- hash = b4a.toString(normalizedPayload.txo.tx, "hex");
81
- }
82
-
83
- if (!isValid) {
84
- throw new ValidationError("Invalid transaction payload.");
85
- }
86
-
87
- const success = await msbInstance.broadcastPartialTransaction(payload);
88
-
89
- if (!success) {
90
- throw new BroadcastError("Failed to broadcast transaction after multiple attempts.");
91
- }
92
-
93
- const isConfirmed = await waitForUnconfirmedTx(msbInstance.state, hash, config);
94
- if (!isConfirmed) {
95
- throw new BroadcastError("Failed to broadcast transaction after multiple attempts.");
96
- }
97
-
98
- const signedLength = msbInstance.state.getSignedLength();
99
- const unsignedLength = msbInstance.state.getUnsignedLength();
100
-
101
- return {
102
- message: "Transaction broadcasted successfully.",
103
- signedLength,
104
- unsignedLength,
105
- tx: hash
106
- };
107
- }
108
-
109
- export async function getTxHashes(msbInstance, start, end) {
110
- const hashes = await msbInstance.state.confirmedTransactionsBetween(start, end);
111
- return { hashes };
112
- }
113
-
114
- export async function getTxDetails(msbInstance, hash) {
115
- const rawPayload = await get_confirmed_tx_info(msbInstance.state, hash);
116
- if (!rawPayload) {
117
- throw new NotFoundError(`Transaction ${hash} not found.`);
118
- }
119
-
120
- return normalizeDecodedPayloadForJson(rawPayload.decoded, msbInstance.config);
121
- }
122
-
123
- export async function fetchBulkTxPayloads(msbInstance, hashes) {
124
- if (!Array.isArray(hashes) || hashes.length === 0) {
125
- throw new ValidationError("Missing hash list.");
126
- }
127
-
128
- if (hashes.length > 1500) {
129
- throw new ValidationError("Length of input tx hashes exceeded.");
130
- }
131
-
132
- const res = { results: [], missing: [] };
133
-
134
- const promises = hashes.map((hash) => get_confirmed_tx_info(msbInstance.state, hash));
135
- const results = await Promise.all(promises);
136
-
137
- results.forEach((result, index) => {
138
- const hash = hashes[index];
139
- if (!result) {
140
- res.missing.push(hash);
141
- } else {
142
- const decodedResult = normalizeDecodedPayloadForJson(result.decoded, msbInstance.config);
143
- res.results.push({ hash, payload: decodedResult });
144
- }
145
- });
146
-
147
- return res;
148
- }
149
-
150
- export async function getExtendedTxDetails(msbInstance, hash, confirmed) {
151
- const state = msbInstance.state;
152
- let rawPayload;
153
-
154
- if (confirmed) {
155
- rawPayload = await get_confirmed_tx_info(state, hash);
156
- } else {
157
- rawPayload = await get_unconfirmed_tx_info(state, hash);
158
- }
159
-
160
- if (!rawPayload) {
161
- throw new NotFoundError(`No payload found for tx hash: ${hash}`);
162
- }
163
-
164
- const normalizedPayload = normalizeDecodedPayloadForJson(rawPayload.decoded, msbInstance.config);
165
- const length = await state.getTransactionConfirmedLength(hash);
166
-
167
- if (length === null) {
168
- return {
169
- txDetails: normalizedPayload,
170
- confirmed_length: 0,
171
- fee: "0",
172
- };
173
- }
174
-
175
- const feeBuffer = state.getFee();
176
- return {
177
- txDetails: normalizedPayload,
178
- confirmed_length: length,
179
- fee: bufferToBigInt(feeBuffer).toString(),
180
- };
181
- }
@@ -1,67 +0,0 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
-
4
- import { fileURLToPath } from 'url';
5
- import { execFileSync } from 'child_process';
6
-
7
- function generateCJSFromProto(inputPath, outputPath) {
8
- execFileSync('protocol-buffers', [inputPath, '-o', outputPath]);
9
- console.log(`${outputPath} has been generated.`);
10
- }
11
-
12
- function transformToUseB4a(outputPath) {
13
- let content = fs.readFileSync(outputPath, 'utf-8');
14
- content = content.replace(/\bBuffer\.([a-zA-Z]+)/g, 'b4a.$1');
15
- content = `var b4a = require('b4a');\n` + content;
16
- fs.writeFileSync(outputPath, content, 'utf-8');
17
- console.log(`${outputPath} has been modified to use b4a.`);
18
- }
19
-
20
- function generatePbjsModule(pbjsPath, protoRootPath, entryPath, outputPath) {
21
- execFileSync(pbjsPath, [
22
- '-t', 'static-module',
23
- '-w', 'commonjs',
24
- '--keep-case',
25
- '-p', protoRootPath,
26
- '-o', outputPath,
27
- entryPath
28
- ]);
29
- console.log(`${outputPath} has been generated.`);
30
- }
31
-
32
- function transformPbjsForBare(outputPath) {
33
- let content = fs.readFileSync(outputPath, 'utf-8');
34
- const shim = `if (typeof globalThis !== 'undefined' && typeof globalThis.self === 'undefined') {\n globalThis.self = globalThis;\n}\n`;
35
- const strictDirective = '"use strict";';
36
-
37
- if (content.includes(strictDirective)) {
38
- content = content.replace(strictDirective, `${strictDirective}\n${shim}`);
39
- } else {
40
- content = `${strictDirective}\n${shim}${content}`;
41
- }
42
-
43
- fs.writeFileSync(outputPath, content, 'utf-8');
44
- console.log(`${outputPath} has been modified for bare-compatible protobufjs runtime.`);
45
- }
46
-
47
- function main() {
48
- const directoryName = path.dirname(fileURLToPath(import.meta.url));
49
-
50
- const inputDir = path.join(directoryName, '../proto');
51
- const outputDir = path.join(directoryName, '../src/utils/protobuf');
52
- const pbjsPath = path.join(directoryName, '../node_modules/.bin/pbjs');
53
- const applyInputPath = path.join(inputDir, 'applyOperations.proto');
54
- const applyOutputPath = path.join(outputDir, 'applyOperations.cjs');
55
- const networkEntryPath = path.join(inputDir, 'network/v1/network_message.proto');
56
- const generatedNetworkOutputPath = path.join(outputDir, 'networkV1.generated.cjs');
57
-
58
- fs.mkdirSync(outputDir, { recursive: true });
59
-
60
- generateCJSFromProto(applyInputPath, applyOutputPath);
61
- transformToUseB4a(applyOutputPath);
62
-
63
- generatePbjsModule(pbjsPath, inputDir, networkEntryPath, generatedNetworkOutputPath);
64
- transformPbjsForBare(generatedNetworkOutputPath);
65
- }
66
-
67
- main();
@@ -1,77 +0,0 @@
1
- import PeerWallet from 'trac-wallet';
2
- import b4a from 'b4a';
3
-
4
- class NetworkWalletFactory {
5
- static provide(options = {}) {
6
- const {
7
- enableWallet,
8
- wallet,
9
- keyPair,
10
- networkPrefix
11
- } = options;
12
-
13
- if (enableWallet) {
14
- if (!wallet) {
15
- throw new Error('NetworkingWalletFactory: wallet instance is required when wallet is enabled');
16
- }
17
- return wallet;
18
- }
19
-
20
- if (!keyPair) {
21
- throw new Error('NetworkingWalletFactory: keyPair must be provided when wallet is disabled');
22
- }
23
-
24
- return new EphemeralWallet(keyPair, networkPrefix);
25
- }
26
- }
27
-
28
- // TODO: Once Wallet class in trac-wallet exposes a constructor/factory that accepts an existing keyPair
29
- // (e.g. Wallet.fromKeyPair({ publicKey, secretKey }, networkPrefix)), replace EphemeralWallet
30
- // with a thin wrapper around that functionality instead of duplicating signing/verification logic.
31
- export class EphemeralWallet {
32
- #publicKey;
33
- #secretKey;
34
- #address;
35
-
36
- constructor(keyPair, networkPrefix) {
37
-
38
- if (!keyPair?.publicKey || !keyPair?.secretKey) {
39
- throw new Error('NetworkIdentityProvider: keyPair with publicKey and secretKey is required');
40
- }
41
- this.#assertBuffer(keyPair.publicKey);
42
- this.#assertBuffer(keyPair.secretKey);
43
-
44
- const address = PeerWallet.encodeBech32m(networkPrefix, keyPair.publicKey);
45
- if (!address) {
46
- throw new Error('NetworkIdentityProvider: failed to derive address from networking key pair');
47
- }
48
-
49
- this.#publicKey = keyPair.publicKey;
50
- this.#secretKey = keyPair.secretKey;
51
- this.#address = address;
52
- }
53
-
54
- get publicKey() {
55
- return this.#publicKey;
56
- }
57
-
58
- get address() {
59
- return this.#address;
60
- }
61
-
62
- sign(message) {
63
- return PeerWallet.sign(message, this.#secretKey);
64
- }
65
-
66
- verify(signature, message, publicKey = this.#publicKey) {
67
- return PeerWallet.verify(signature, message, publicKey);
68
- }
69
-
70
- #assertBuffer(value) {
71
- if (!b4a.isBuffer(value)) {
72
- throw new Error(`NetworkIdentityProvider: value must be a Buffer`);
73
- }
74
- }
75
- }
76
-
77
- export default NetworkWalletFactory;
@@ -1,27 +0,0 @@
1
- import {V1ProtocolError} from '../../v1/V1ProtocolError.js';
2
-
3
- /**
4
- * Shared validator rejection error.
5
- *
6
- * Used by shared validators in `src/core/network/protocols/shared/validators/**` so they can
7
- * reject remote peer input with a stable `resultCode`.
8
- *
9
- * Note: this currently extends `V1ProtocolError` so the v1 protocol can consistently treat shared
10
- * validator rejections as typed protocol errors. Legacy protocol codepaths remain compatible because
11
- * this is still an `Error` and preserves `.message`.
12
- *
13
- * Default `endConnection = true` because shared-validator rejections are typically triggered
14
- * by invalid/malicious peer payloads and should terminate the peer connection after responding.
15
- */
16
- export class SharedValidatorRejectionError extends V1ProtocolError {
17
- /**
18
- * @param {number} resultCode Stable rejection reason (a `ResultCode` value).
19
- * @param {string} message Human-readable error message.
20
- * @param {boolean} [endConnection=true] Whether the transport should end the connection after responding.
21
- */
22
- constructor(resultCode, message, endConnection = true) {
23
- super(resultCode, message, endConnection);
24
- }
25
- }
26
-
27
- export default SharedValidatorRejectionError;