@o1-labs/mina-archive-node-graphql 0.0.6 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +92 -268
  3. package/build/src/blockchain/utils.js.map +1 -1
  4. package/build/src/config.js +86 -0
  5. package/build/src/config.js.map +1 -0
  6. package/build/src/db/archive-node-adapter/archive-node-adapter.js +29 -2
  7. package/build/src/db/archive-node-adapter/archive-node-adapter.js.map +1 -1
  8. package/build/src/db/archive-node-adapter/postgres-options.js +35 -0
  9. package/build/src/db/archive-node-adapter/postgres-options.js.map +1 -0
  10. package/build/src/db/sql/best-chain.js +5 -0
  11. package/build/src/db/sql/best-chain.js.map +1 -0
  12. package/build/src/db/sql/events-actions/queries.js +102 -21
  13. package/build/src/db/sql/events-actions/queries.js.map +1 -1
  14. package/build/src/db/sql/verification-key-updates/queries.js +100 -0
  15. package/build/src/db/sql/verification-key-updates/queries.js.map +1 -0
  16. package/build/src/db/sql/zkapp-commands/queries.js +363 -0
  17. package/build/src/db/sql/zkapp-commands/queries.js.map +1 -0
  18. package/build/src/db/sql/zkapp-commands/types.js +2 -0
  19. package/build/src/db/sql/zkapp-commands/types.js.map +1 -0
  20. package/build/src/errors/error.js +4 -1
  21. package/build/src/errors/error.js.map +1 -1
  22. package/build/src/index.js +44 -7
  23. package/build/src/index.js.map +1 -1
  24. package/build/src/resolvers.js +42 -23
  25. package/build/src/resolvers.js.map +1 -1
  26. package/build/src/schema-version.js +2 -0
  27. package/build/src/schema-version.js.map +1 -0
  28. package/build/src/server/cors.js +41 -0
  29. package/build/src/server/cors.js.map +1 -0
  30. package/build/src/server/graceful-shutdown.js +42 -0
  31. package/build/src/server/graceful-shutdown.js.map +1 -0
  32. package/build/src/server/graphql-armor.js +39 -0
  33. package/build/src/server/graphql-armor.js.map +1 -0
  34. package/build/src/server/logger.js +45 -0
  35. package/build/src/server/logger.js.map +1 -0
  36. package/build/src/server/metrics.js +72 -0
  37. package/build/src/server/metrics.js.map +1 -0
  38. package/build/src/server/plugins.js +31 -15
  39. package/build/src/server/plugins.js.map +1 -1
  40. package/build/src/server/rate-limit.js +143 -0
  41. package/build/src/server/rate-limit.js.map +1 -0
  42. package/build/src/server/readiness.js +45 -0
  43. package/build/src/server/readiness.js.map +1 -0
  44. package/build/src/server/request-logging.js +58 -0
  45. package/build/src/server/request-logging.js.map +1 -0
  46. package/build/src/server/server.js +38 -13
  47. package/build/src/server/server.js.map +1 -1
  48. package/build/src/services/actions-service/actions-service.js +26 -15
  49. package/build/src/services/actions-service/actions-service.js.map +1 -1
  50. package/build/src/services/blocks-service/blocks-service.js +10 -9
  51. package/build/src/services/blocks-service/blocks-service.js.map +1 -1
  52. package/build/src/services/network-service/network-service.js +17 -9
  53. package/build/src/services/network-service/network-service.js.map +1 -1
  54. package/build/src/services/verification-key-updates-service/verification-key-updates-service.interface.js +2 -0
  55. package/build/src/services/verification-key-updates-service/verification-key-updates-service.interface.js.map +1 -0
  56. package/build/src/services/verification-key-updates-service/verification-key-updates-service.js +41 -0
  57. package/build/src/services/verification-key-updates-service/verification-key-updates-service.js.map +1 -0
  58. package/build/src/services/zkapp-commands-service/zkapp-commands-service.interface.js +2 -0
  59. package/build/src/services/zkapp-commands-service/zkapp-commands-service.interface.js.map +1 -0
  60. package/build/src/services/zkapp-commands-service/zkapp-commands-service.js +115 -0
  61. package/build/src/services/zkapp-commands-service/zkapp-commands-service.js.map +1 -0
  62. package/build/src/tracing/jaeger-tracing.js +2 -1
  63. package/build/src/tracing/jaeger-tracing.js.map +1 -1
  64. package/build/tests/devnet-dump/action-state-invariants.js +165 -0
  65. package/build/tests/devnet-dump/action-state-invariants.js.map +1 -0
  66. package/build/tests/devnet-dump/devnet-dump.test.js +24 -10
  67. package/build/tests/devnet-dump/devnet-dump.test.js.map +1 -1
  68. package/build/tests/devnet-dump/setup.js +63 -17
  69. package/build/tests/devnet-dump/setup.js.map +1 -1
  70. package/build/tests/integration/action-state-ordering.test.js +139 -0
  71. package/build/tests/integration/action-state-ordering.test.js.map +1 -0
  72. package/build/tests/integration/action-state-setup.js +48 -0
  73. package/build/tests/integration/action-state-setup.js.map +1 -0
  74. package/build/tests/integration/consensus-vs-chain.test.js +81 -0
  75. package/build/tests/integration/consensus-vs-chain.test.js.map +1 -0
  76. package/build/tests/integration/integration.test.js +166 -2
  77. package/build/tests/integration/integration.test.js.map +1 -1
  78. package/build/tests/integration/postgres-timeout.test.js +92 -0
  79. package/build/tests/integration/postgres-timeout.test.js.map +1 -0
  80. package/build/tests/integration/setup.js +58 -1
  81. package/build/tests/integration/setup.js.map +1 -1
  82. package/build/tests/integration/verification-key-setup.js +49 -0
  83. package/build/tests/integration/verification-key-setup.js.map +1 -0
  84. package/build/tests/integration/verification-key-updates.test.js +159 -0
  85. package/build/tests/integration/verification-key-updates.test.js.map +1 -0
  86. package/build/tests/live-api/events.test.js +11 -7
  87. package/build/tests/live-api/events.test.js.map +1 -1
  88. package/build/tests/live-api/networkState.test.js +1 -0
  89. package/build/tests/live-api/networkState.test.js.map +1 -1
  90. package/build/tests/live-network/live-network.test.js +1 -0
  91. package/build/tests/live-network/live-network.test.js.map +1 -1
  92. package/build/tests/resolvers.test.js +65 -37
  93. package/build/tests/resolvers.test.js.map +1 -1
  94. package/build/tests/services/verification-key-updates-service/verification-key-updates-service.test.js +35 -0
  95. package/build/tests/services/verification-key-updates-service/verification-key-updates-service.test.js.map +1 -0
  96. package/build/tests/services/zkapp-commands-service/zkapp-commands-service.test.js +159 -0
  97. package/build/tests/services/zkapp-commands-service/zkapp-commands-service.test.js.map +1 -0
  98. package/build/tests/test-helpers.js +15 -0
  99. package/build/tests/test-helpers.js.map +1 -1
  100. package/build/tests/unit/best-chain-anchor.test.js +70 -0
  101. package/build/tests/unit/best-chain-anchor.test.js.map +1 -0
  102. package/build/tests/unit/config.test.js +106 -0
  103. package/build/tests/unit/config.test.js.map +1 -0
  104. package/build/tests/unit/cors.test.js +95 -0
  105. package/build/tests/unit/cors.test.js.map +1 -0
  106. package/build/tests/unit/error-masking.test.js +119 -0
  107. package/build/tests/unit/error-masking.test.js.map +1 -0
  108. package/build/tests/unit/graceful-shutdown.test.js +99 -0
  109. package/build/tests/unit/graceful-shutdown.test.js.map +1 -0
  110. package/build/tests/unit/graphql-armor.test.js +121 -0
  111. package/build/tests/unit/graphql-armor.test.js.map +1 -0
  112. package/build/tests/unit/logging.test.js +120 -0
  113. package/build/tests/unit/logging.test.js.map +1 -0
  114. package/build/tests/unit/metrics.test.js +114 -0
  115. package/build/tests/unit/metrics.test.js.map +1 -0
  116. package/build/tests/unit/network-service.test.js +66 -0
  117. package/build/tests/unit/network-service.test.js.map +1 -0
  118. package/build/tests/unit/postgres-options.test.js +56 -0
  119. package/build/tests/unit/postgres-options.test.js.map +1 -0
  120. package/build/tests/unit/rate-limit.test.js +271 -0
  121. package/build/tests/unit/rate-limit.test.js.map +1 -0
  122. package/build/tests/unit/readiness.test.js +75 -0
  123. package/build/tests/unit/readiness.test.js.map +1 -0
  124. package/build/tests/unit/schema-nullability.test.js +40 -0
  125. package/build/tests/unit/schema-nullability.test.js.map +1 -0
  126. package/build/tests/unit/schema-version.test.js +48 -0
  127. package/build/tests/unit/schema-version.test.js.map +1 -0
  128. package/build/tests/unit/yoga-http-contract.test.js +30 -0
  129. package/build/tests/unit/yoga-http-contract.test.js.map +1 -0
  130. package/build/tests/unit/zkapp-commands-gating.test.js +38 -0
  131. package/build/tests/unit/zkapp-commands-gating.test.js.map +1 -0
  132. package/build/zkapp/utils.js +2 -0
  133. package/build/zkapp/utils.js.map +1 -1
  134. package/package.json +33 -14
  135. package/schema.graphql +126 -8
  136. package/src/blockchain/types.ts +65 -1
  137. package/src/blockchain/utils.ts +26 -2
  138. package/src/config.ts +133 -0
  139. package/src/db/archive-node-adapter/archive-node-adapter.interface.ts +26 -3
  140. package/src/db/archive-node-adapter/archive-node-adapter.ts +65 -2
  141. package/src/db/archive-node-adapter/postgres-options.ts +90 -0
  142. package/src/db/sql/best-chain.ts +34 -0
  143. package/src/db/sql/events-actions/queries.ts +168 -24
  144. package/src/db/sql/verification-key-updates/queries.ts +132 -0
  145. package/src/db/sql/zkapp-commands/queries.ts +406 -0
  146. package/src/db/sql/zkapp-commands/types.ts +43 -0
  147. package/src/envionment.d.ts +20 -0
  148. package/src/errors/error.ts +17 -1
  149. package/src/index.ts +64 -7
  150. package/src/resolvers-types.ts +311 -24
  151. package/src/resolvers.ts +70 -34
  152. package/src/schema-version.ts +24 -0
  153. package/src/server/cors.ts +97 -0
  154. package/src/server/graceful-shutdown.ts +76 -0
  155. package/src/server/graphql-armor.ts +78 -0
  156. package/src/server/logger.ts +72 -0
  157. package/src/server/metrics.ts +104 -0
  158. package/src/server/plugins.ts +53 -19
  159. package/src/server/rate-limit.ts +274 -0
  160. package/src/server/readiness.ts +78 -0
  161. package/src/server/request-logging.ts +83 -0
  162. package/src/server/server.ts +70 -15
  163. package/src/services/actions-service/actions-service.ts +87 -24
  164. package/src/services/blocks-service/blocks-service.ts +16 -14
  165. package/src/services/network-service/network-service.ts +30 -12
  166. package/src/services/verification-key-updates-service/verification-key-updates-service.interface.ts +9 -0
  167. package/src/services/verification-key-updates-service/verification-key-updates-service.ts +72 -0
  168. package/src/services/zkapp-commands-service/zkapp-commands-service.interface.ts +9 -0
  169. package/src/services/zkapp-commands-service/zkapp-commands-service.ts +181 -0
  170. package/src/tracing/jaeger-tracing.ts +2 -1
  171. package/build/tests/consensus/run-compare.js +0 -40
  172. package/build/tests/consensus/run-compare.js.map +0 -1
  173. package/build/tests/consensus/select-consensus-precomputed.js +0 -80
  174. package/build/tests/consensus/select-consensus-precomputed.js.map +0 -1
  175. package/build/tests/consensus/types.js +0 -15
  176. package/build/tests/consensus/types.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-state-invariants.js","sourceRoot":"","sources":["../../../tests/devnet-dump/action-state-invariants.ts"],"names":[],"mappings":"AAuCA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,MAAM,MAAM,aAAa,CAAC;AAIjC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE1E,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;AAC/E,MAAM,2BAA2B,GAAG,MAAM,CACxC,OAAO,CAAC,GAAG,CAAC,wCAAwC,IAAI,EAAE,CAC3D,CAAC;AAEF,MAAM,WAAW,GAAG,EAAE,YAAY,EAAE,IAAI,YAAY,CAAC,SAAkB,CAAC,EAAE,CAAC;AAK3E,SAAS,iBAAiB,CAAC,OAAe,EAAE,eAAwB;IAClE,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,uBAAuB,eAAe,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,OAAO,CACL,gCAAgC,OAAO,IAAI,MAAM,MAAM;QACvD,0EAA0E,CAC3E,CAAC;AACJ,CAAC;AAUD,SAAS,wBAAwB,CAAC,QAAkB,EAAE,MAAgB;IACpE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,MAAM,eAAe,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,CAAC,OAAiB,EAAE,EAAE,CACnC,OAAO,CAAC,MAAM,IAAI,CAAC;QACjB,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAC3B,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC;IAE3E,OAAO,CACL,2BAA2B,QAAQ,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,IAAI;QACpE,wBAAwB,eAAe,GAAG;QAC1C,mBAAmB,QAAQ,CAAC,eAAe,CAAC,SAAS,MAAM,CAAC,eAAe,CAAC,IAAI,SAAS,KAAK;QAC9F,kBAAkB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI;QAC/D,kBAAkB,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAC1D,CAAC;AACJ,CAAC;AAUD,IAAI,UAAyC,CAAC;AAC9C,SAAS,gBAAgB,CAAC,MAAoB;IAG5C,UAAU,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,MAAoB;IAC9C,MAAM,IAAI,GAAG,MAAM,MAAM,CAA0C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAgCzD,eAAe;GACxB,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;IACvD,OAAO,CAAC,GAAG,CACT,gBAAgB,IAAI,CAAC,MAAM,uCAAuC;QAChE,GAAG,QAAQ,qCAAqC;QAChD,CAAC,QAAQ,KAAK,CAAC;YACb,CAAC,CAAC,gGAAgG;YAClG,CAAC,CAAC,EAAE,CAAC,CACV,CAAC;IACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,UAAyB;IAErE,MAAM,QAAQ,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC;IAExE,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;QACpD,IAAI,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;YAC9F,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CAAC;YAChD,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAEjD,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;gBAGhC,MAAM,UAAU,GAAY,MAAM,cAAc,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;gBACtF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;oBAAE,SAAS;gBACpC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBAEpB,yBAAyB,CAAC,UAAU,EAAE,GAAG,OAAO,aAAa,CAAC,CAAC;gBAC/D,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;gBAEzC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;gBACvE,QAAQ,CAAC,kBAAkB,IAAI,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;gBAEzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/B,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC;oBAC5D,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACrC,QAAQ,CAAC,WAAW,EAAE,CAAC;oBAEvB,MAAM,QAAQ,GAAY,MAAM,cAAc,CAAC,UAAU,CACvD,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,EACxC,WAAW,CACZ,CAAC;oBAEF,MAAM,CAAC,eAAe,CACpB,SAAS,CAAC,QAAQ,CAAC,EACnB,QAAQ,EACR,qDAAqD;wBACnD,kBAAkB,OAAO,IAAI;wBAC7B,kBAAkB,UAAU,WAAW,QAAQ,CAAC,CAAC,CAAC,KAAK;wBACvD,wBAAwB,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;wBACvD,oBAAoB,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAC/D,CAAC;oBACF,MAAM,CAAC,WAAW,CAChB,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,EACtC,UAAU,EACV,uEAAuE;wBACrE,gBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAC3D,CAAC;oBACF,yBAAyB,CAAC,QAAQ,EAAE,GAAG,OAAO,oBAAoB,UAAU,EAAE,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC;YAED,IAAI,QAAQ,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;gBAEpC,OAAO,CAAC,GAAG,CACT,aAAa,QAAQ,CAAC,WAAW,2BAA2B,QAAQ,CAAC,kBAAkB,GAAG;oBACxF,iCAAiC,2BAA2B,GAAG;oBAC/D,gEAAgE,CACnE,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;YAC9F,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CAAC;YAChD,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAEjD,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzE,MAAM,UAAU,GAAY,MAAM,cAAc,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;gBACtF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;oBAAE,SAAS;gBACpC,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;gBAEzC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;gBACvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/B,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC;oBAC5D,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;oBAE5C,MAAM,QAAQ,GAAY,MAAM,cAAc,CAAC,UAAU,CACvD,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,EACvC,WAAW,CACZ,CAAC;oBAEF,MAAM,CAAC,eAAe,CACpB,SAAS,CAAC,QAAQ,CAAC,EACnB,QAAQ,EACR,oDAAoD;wBAClD,kBAAkB,OAAO,IAAI;wBAC7B,kBAAkB,UAAU,WAAW,UAAU,CAAC,CAAC,CAAC,KAAK;wBACzD,wBAAwB,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAC1D,CAAC;oBACF,yBAAyB,CAAC,QAAQ,EAAE,GAAG,OAAO,mBAAmB,UAAU,EAAE,CAAC,CAAC;gBACjF,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CAAC;YAChD,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAKjD,MAAM,WAAW,GAA8C,EAAE,CAAC;YAClE,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;gBAChC,MAAM,OAAO,GAAY,MAAM,cAAc,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;gBACnF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC;gBACnF,CAAC;gBACD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM;YACtC,CAAC;YAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;gBACrF,OAAO;YACT,CAAC;YAED,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CACH,cAAc,CAAC,UAAU,CACvB,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,EAC/E,WAAW,CACZ,EACH,CAAC,GAAuC,EAAE,EAAE;gBAC1C,MAAM,CAAC,WAAW,CAChB,GAAG,CAAC,UAAU,EAAE,IAAI,EACpB,wBAAwB,EACxB,gCAAgC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,4BAA4B;oBAChF,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAC9B,CAAC;gBACF,OAAO,IAAI,CAAC;YACd,CAAC,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAI9C,MAAM,CAAC,EAAE,CACP,QAAQ,CAAC,QAAQ,GAAG,CAAC,IAAI,QAAQ,CAAC,WAAW,GAAG,CAAC,EACjD,8BAA8B,QAAQ,CAAC,QAAQ,kBAAkB;gBAC/D,GAAG,QAAQ,CAAC,WAAW,4DAA4D;gBACnF,sEAAsE;gBACtE,qFAAqF;gBACrF,yEAAyE,CAC5E,CAAC;YACF,OAAO,CAAC,GAAG,CACT,aAAa,QAAQ,CAAC,QAAQ,gBAAgB,QAAQ,CAAC,WAAW,gBAAgB,CACnF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -6,6 +6,7 @@ import { EventsService } from '../../src/services/events-service/events-service.
6
6
  import { ActionsService } from '../../src/services/actions-service/actions-service.js';
7
7
  import { TracingState } from '../../src/tracing/tracer.js';
8
8
  import { setupTestDatabase, teardownTestDatabase, createTestClient, } from './setup.js';
9
+ import { describeActionStateInvariants } from './action-state-invariants.js';
9
10
  const nullOptions = { tracingState: new TracingState(undefined) };
10
11
  let client;
11
12
  let blocksService;
@@ -22,6 +23,7 @@ before(async () => {
22
23
  eventsService = new EventsService(client);
23
24
  actionsService = new ActionsService(client);
24
25
  const state = await networkService.getNetworkState(nullOptions);
26
+ assert.ok(state.maxBlockHeight, 'devnet dump must have at least one indexed block');
25
27
  maxCanonicalHeight = state.maxBlockHeight.canonicalMaxBlockHeight;
26
28
  const minRow = await client `SELECT MIN(height) as min_height FROM blocks WHERE chain_status = 'canonical'`;
27
29
  minHeight = Number(minRow[0].min_height);
@@ -32,6 +34,12 @@ after(async () => {
32
34
  await client.end();
33
35
  await teardownTestDatabase();
34
36
  });
37
+ const MINA_EPOCH_START = Date.UTC(2020, 0, 1);
38
+ function assertPlausibleBlockTime(date, context) {
39
+ assert.ok(!Number.isNaN(date.getTime()), `${context}: dateTime should parse, got ${date}`);
40
+ assert.ok(date.getTime() >= MINA_EPOCH_START, `${context}: dateTime should be after 2020, got ${date.toISOString()}`);
41
+ assert.ok(date.getTime() <= Date.now() + 60 * 60 * 1000, `${context}: dateTime should not be in the future, got ${date.toISOString()}`);
42
+ }
35
43
  describe('NetworkState (devnet dump)', () => {
36
44
  test('returns valid max block heights', async () => {
37
45
  const state = await networkService.getNetworkState(nullOptions);
@@ -57,7 +65,7 @@ describe('Oldest blocks (devnet dump)', () => {
57
65
  const blocks = await blocksService.getBlocks({ blockHeight_gte: minHeight, blockHeight_lt: minHeight + 1, canonical: true }, 1, null, nullOptions);
58
66
  assert.strictEqual(blocks.length, 1);
59
67
  const date = new Date(blocks[0].dateTime);
60
- assert.ok(date.getFullYear() >= 2023, `genesis date should be >= 2023, got ${date}`);
68
+ assertPlausibleBlockTime(date, `genesis (height ${minHeight})`);
61
69
  });
62
70
  test('block details for very old block (height ~10)', async () => {
63
71
  const targetHeight = minHeight + 10;
@@ -177,7 +185,7 @@ describe(`Quickcheck: ${RANDOM_BLOCK_COUNT} random individual blocks (devnet dum
177
185
  assert.ok(block.creator?.startsWith('B62q'), `height ${height}: creator should be B62, got ${block.creator}`);
178
186
  const date = new Date(block.dateTime);
179
187
  assert.ok(!isNaN(date.getTime()), `height ${height}: invalid dateTime ${block.dateTime}`);
180
- assert.ok(date.getFullYear() >= 2023, `height ${height}: dateTime year should be >= 2023, got ${date.getFullYear()}`);
188
+ assertPlausibleBlockTime(date, `height ${height}`);
181
189
  assert.ok(block.transactions, `height ${height}: transactions missing`);
182
190
  }
183
191
  });
@@ -220,10 +228,13 @@ describe(`Quickcheck: ${RANDOM_RANGE_COUNT} random block ranges (devnet dump)`,
220
228
  describe('Quickcheck: random zkApp addresses (devnet dump)', () => {
221
229
  test('events and actions queries succeed for random zkApp addresses', async () => {
222
230
  const rows = await client `
223
- SELECT DISTINCT pk.value as address
224
- FROM account_identifiers ai
225
- JOIN public_keys pk ON ai.public_key_id = pk.id
226
- JOIN zkapp_accounts za ON ai.id = za.account_identifier_id
231
+ SELECT address FROM (
232
+ SELECT DISTINCT pk.value as address
233
+ FROM accounts_accessed aa
234
+ JOIN account_identifiers ai ON aa.account_identifier_id = ai.id
235
+ JOIN public_keys pk ON ai.public_key_id = pk.id
236
+ WHERE aa.zkapp_id IS NOT NULL
237
+ ) AS zkapp_addresses
227
238
  ORDER BY random()
228
239
  LIMIT 10
229
240
  `;
@@ -245,9 +256,10 @@ describe('Events and Actions (devnet dump)', () => {
245
256
  test('events query works with real addresses from the chain', async () => {
246
257
  const rows = await client `
247
258
  SELECT pk.value as address
248
- FROM account_identifiers ai
259
+ FROM accounts_accessed aa
260
+ JOIN account_identifiers ai ON aa.account_identifier_id = ai.id
249
261
  JOIN public_keys pk ON ai.public_key_id = pk.id
250
- JOIN zkapp_accounts za ON ai.id = za.account_identifier_id
262
+ WHERE aa.zkapp_id IS NOT NULL
251
263
  LIMIT 1
252
264
  `;
253
265
  if (rows.length === 0) {
@@ -262,9 +274,10 @@ describe('Events and Actions (devnet dump)', () => {
262
274
  test('actions query works with real addresses from the chain', async () => {
263
275
  const rows = await client `
264
276
  SELECT pk.value as address
265
- FROM account_identifiers ai
277
+ FROM accounts_accessed aa
278
+ JOIN account_identifiers ai ON aa.account_identifier_id = ai.id
266
279
  JOIN public_keys pk ON ai.public_key_id = pk.id
267
- JOIN zkapp_accounts za ON ai.id = za.account_identifier_id
280
+ WHERE aa.zkapp_id IS NOT NULL
268
281
  LIMIT 1
269
282
  `;
270
283
  if (rows.length === 0) {
@@ -308,4 +321,5 @@ describe('Schema validation (devnet dump)', () => {
308
321
  console.log(` Total blocks in dump: ${count}`);
309
322
  });
310
323
  });
324
+ describeActionStateInvariants(() => ({ client, actionsService }));
311
325
  //# sourceMappingURL=devnet-dump.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"devnet-dump.test.js","sourceRoot":"","sources":["../../../tests/devnet-dump/devnet-dump.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"devnet-dump.test.js","sourceRoot":"","sources":["../../../tests/devnet-dump/devnet-dump.test.ts"],"names":[],"mappings":"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"}
@@ -10,10 +10,42 @@ const PG_TEST_DB = process.env.PG_TEST_DB ?? 'devnet_dump_test';
10
10
  const DATA_DIR = path.resolve(process.cwd(), 'data');
11
11
  const DEFAULT_DUMP_PATH = path.join(DATA_DIR, 'devnet-archive.sql');
12
12
  const DEVNET_DUMP_PATH = process.env.DEVNET_DUMP_PATH ?? DEFAULT_DUMP_PATH;
13
- export const connectionString = `postgres://${PG_TEST_USER}:${PG_TEST_PASSWORD}@${PG_TEST_HOST}:${PG_TEST_PORT}/${PG_TEST_DB}`;
13
+ let targetDb = PG_TEST_DB;
14
+ export function getConnectionString() {
15
+ return `postgres://${PG_TEST_USER}:${PG_TEST_PASSWORD}@${PG_TEST_HOST}:${PG_TEST_PORT}/${targetDb}`;
16
+ }
14
17
  function adminConnectionString(db = 'postgres') {
15
18
  return `postgres://${PG_TEST_USER}:${PG_TEST_PASSWORD}@${PG_TEST_HOST}:${PG_TEST_PORT}/${db}`;
16
19
  }
20
+ function databaseCreatedByDump(dumpPath) {
21
+ const fd = fs.openSync(dumpPath, 'r');
22
+ try {
23
+ const buffer = Buffer.alloc(64 * 1024);
24
+ const bytesRead = fs.readSync(fd, buffer, 0, buffer.length, 0);
25
+ const header = buffer.subarray(0, bytesRead).toString('utf8');
26
+ const connect = header.match(/^\\connect (\S+)/m);
27
+ if (!connect)
28
+ return undefined;
29
+ const name = connect[1].replace(/^"(.*)"$/, '$1');
30
+ if (!/^[A-Za-z_][A-Za-z0-9_$]*$/.test(name)) {
31
+ throw new Error(`Dump header names a database this harness will not interpolate: ${connect[1]}`);
32
+ }
33
+ return name;
34
+ }
35
+ finally {
36
+ fs.closeSync(fd);
37
+ }
38
+ }
39
+ async function dropDatabase(db) {
40
+ const admin = postgres(adminConnectionString(), { max: 1 });
41
+ try {
42
+ await admin.unsafe(`SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '${db}' AND pid <> pg_backend_pid()`);
43
+ await admin.unsafe(`DROP DATABASE IF EXISTS ${db}`);
44
+ }
45
+ finally {
46
+ await admin.end();
47
+ }
48
+ }
17
49
  export async function downloadDump() {
18
50
  if (fs.existsSync(DEVNET_DUMP_PATH)) {
19
51
  console.log(`Using existing dump at ${DEVNET_DUMP_PATH}`);
@@ -29,30 +61,44 @@ export async function downloadDump() {
29
61
  }
30
62
  export async function setupTestDatabase() {
31
63
  const dumpPath = await downloadDump();
32
- const admin = postgres(adminConnectionString(), { max: 1 });
64
+ const dumpDb = databaseCreatedByDump(dumpPath);
65
+ targetDb = dumpDb ?? PG_TEST_DB;
66
+ const loadDb = dumpDb ? 'postgres' : PG_TEST_DB;
67
+ await dropDatabase(targetDb);
68
+ if (!dumpDb) {
69
+ const admin = postgres(adminConnectionString(), { max: 1 });
70
+ try {
71
+ await admin.unsafe(`CREATE DATABASE ${PG_TEST_DB}`);
72
+ }
73
+ finally {
74
+ await admin.end();
75
+ }
76
+ }
77
+ const named = dumpDb ? ' (named by the dump)' : '';
78
+ console.log(`Loading devnet dump into ${targetDb}${named}... (a few minutes)`);
33
79
  try {
34
- await admin.unsafe(`SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '${PG_TEST_DB}' AND pid <> pg_backend_pid()`);
35
- await admin.unsafe(`DROP DATABASE IF EXISTS ${PG_TEST_DB}`);
36
- await admin.unsafe(`CREATE DATABASE ${PG_TEST_DB}`);
80
+ execSync(`PGPASSWORD=${PG_TEST_PASSWORD} psql -v ON_ERROR_STOP=1 -h ${PG_TEST_HOST} -p ${PG_TEST_PORT} -U ${PG_TEST_USER} -d ${loadDb} -f ${dumpPath}`, { stdio: 'pipe', timeout: 600000 });
37
81
  }
38
- finally {
39
- await admin.end();
82
+ catch (error) {
83
+ const stderr = error.stderr?.toString() ?? '';
84
+ throw new Error(`Loading the devnet dump failed:\n${stderr.trim()}`);
40
85
  }
41
- console.log(`Loading devnet dump into ${PG_TEST_DB}... (this may take a few minutes)`);
42
- execSync(`PGPASSWORD=${PG_TEST_PASSWORD} psql -h ${PG_TEST_HOST} -p ${PG_TEST_PORT} -U ${PG_TEST_USER} -d ${PG_TEST_DB} -f ${dumpPath}`, { stdio: 'pipe', timeout: 600000 });
43
- console.log('Dump loaded successfully.');
44
- }
45
- export async function teardownTestDatabase() {
46
- const admin = postgres(adminConnectionString(), { max: 1 });
86
+ const check = postgres(getConnectionString(), { max: 1 });
47
87
  try {
48
- await admin.unsafe(`SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '${PG_TEST_DB}' AND pid <> pg_backend_pid()`);
49
- await admin.unsafe(`DROP DATABASE IF EXISTS ${PG_TEST_DB}`);
88
+ const [row] = await check `SELECT count(*)::int AS blocks FROM blocks`;
89
+ if (!row || row.blocks === 0) {
90
+ throw new Error(`Dump loaded into ${targetDb} but it holds no blocks — the dump may be truncated.`);
91
+ }
92
+ console.log(`Dump loaded: ${row.blocks} blocks in ${targetDb}.`);
50
93
  }
51
94
  finally {
52
- await admin.end();
95
+ await check.end();
53
96
  }
54
97
  }
98
+ export async function teardownTestDatabase() {
99
+ await dropDatabase(targetDb);
100
+ }
55
101
  export function createTestClient() {
56
- return postgres(connectionString, { max: 5 });
102
+ return postgres(getConnectionString(), { max: 5 });
57
103
  }
58
104
  //# sourceMappingURL=setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../tests/devnet-dump/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../tests/devnet-dump/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,139 @@
1
+ import { describe, test, before, after } from 'node:test';
2
+ import assert from 'node:assert';
3
+ import { readFileSync } from 'node:fs';
4
+ import path from 'node:path';
5
+ import { ActionsService } from '../../src/services/actions-service/actions-service.js';
6
+ import { TracingState } from '../../src/tracing/tracer.js';
7
+ import { assertActionChainIsLinked, heightsOf } from '../test-helpers.js';
8
+ import { setupTestDatabase, teardownTestDatabase, createTestClient, } from './action-state-setup.js';
9
+ const fixture = JSON.parse(readFileSync(path.resolve(process.cwd(), 'tests/integration/fixtures/action_state_order_inversion.json'), 'utf8'));
10
+ const nullOptions = { tracingState: new TracingState(undefined) };
11
+ let client;
12
+ let actionsService;
13
+ before(async () => {
14
+ await setupTestDatabase();
15
+ client = createTestClient();
16
+ actionsService = new ActionsService(client);
17
+ });
18
+ after(async () => {
19
+ await client?.end();
20
+ await teardownTestDatabase();
21
+ });
22
+ const ACCOUNT_KEYS = ['inverted', 'control', 'adjacent'];
23
+ describe('Actions: unfiltered baseline', () => {
24
+ for (const key of ACCOUNT_KEYS) {
25
+ test(`${key}: returns all four actions, correctly linked`, async () => {
26
+ const account = fixture.accounts[key];
27
+ const actions = await actionsService.getActions({ address: account.address }, nullOptions);
28
+ assert.deepStrictEqual(heightsOf(actions), fixture.actionBlockHeights, 'the unfiltered query must return every action block');
29
+ assertActionChainIsLinked(actions, `${key} unfiltered`);
30
+ });
31
+ }
32
+ });
33
+ describe('Actions: fromActionState must return exactly the suffix from the checkpoint', () => {
34
+ for (const key of ACCOUNT_KEYS) {
35
+ const account = fixture.accounts[key];
36
+ for (const [index, state] of account.states.entries()) {
37
+ const expectedHeights = fixture.actionBlockHeights.slice(index);
38
+ test(`${key}: fromActionState = ${state.label} (block ${state.height}) returns blocks [${expectedHeights}]`, async () => {
39
+ const actions = await actionsService.getActions({ address: account.address, fromActionState: state.value }, nullOptions);
40
+ assert.deepStrictEqual(heightsOf(actions), expectedHeights, `interning ids for ${key} are [${account.interningIds}]; ` +
41
+ `an answer that differs here means the filter used the interning order, not the chain order`);
42
+ assert.strictEqual(actions[0].actionState.actionStateOne, state.value, 'the first entry must be the checkpoint itself, which clients strip');
43
+ assertActionChainIsLinked(actions, `${key} fromActionState=${state.label}`);
44
+ });
45
+ }
46
+ }
47
+ });
48
+ describe('Actions: fromActionState must never return actions from before the checkpoint', () => {
49
+ for (const key of ACCOUNT_KEYS) {
50
+ const account = fixture.accounts[key];
51
+ for (const state of account.states) {
52
+ test(`${key}: fromActionState = ${state.label} returns nothing below height ${state.height}`, async () => {
53
+ const actions = await actionsService.getActions({ address: account.address, fromActionState: state.value }, nullOptions);
54
+ const tooEarly = heightsOf(actions).filter((h) => h < state.height);
55
+ assert.deepStrictEqual(tooEarly, [], `blocks ${tooEarly} are older than the checkpoint at height ${state.height}`);
56
+ });
57
+ }
58
+ }
59
+ });
60
+ describe('Actions: the production symptom, pinned', () => {
61
+ test('adjacent: the action that follows the checkpoint is not dropped', async () => {
62
+ const account = fixture.accounts.adjacent;
63
+ const checkpoint = account.states[1];
64
+ const dropped = account.states[2];
65
+ assert.ok(account.interningIds[2] < account.interningIds[1], 'fixture precondition: the next action must have the LOWER interning id');
66
+ const actions = await actionsService.getActions({ address: account.address, fromActionState: checkpoint.value }, nullOptions);
67
+ assert.ok(heightsOf(actions).includes(dropped.height), `block ${dropped.height} is missing; returned [${heightsOf(actions)}]`);
68
+ assertActionChainIsLinked(actions, 'adjacent production symptom');
69
+ });
70
+ });
71
+ describe('Actions: endActionState', () => {
72
+ for (const key of ACCOUNT_KEYS) {
73
+ const account = fixture.accounts[key];
74
+ test(`${key}: endActionState = S3 stops at block ${account.states[2].height}`, async () => {
75
+ const actions = await actionsService.getActions({ address: account.address, endActionState: account.states[2].value }, nullOptions);
76
+ assert.deepStrictEqual(heightsOf(actions), fixture.actionBlockHeights.slice(0, 3), 'endActionState must cut the list at the checkpoint, using the chain order');
77
+ assertActionChainIsLinked(actions, `${key} endActionState=S3`);
78
+ });
79
+ }
80
+ });
81
+ describe('Actions: the action state must belong to the requested account', () => {
82
+ test('an action state of a different account is rejected', async () => {
83
+ await assert.rejects(() => actionsService.getActions({
84
+ address: fixture.accounts.inverted.address,
85
+ fromActionState: fixture.accounts.control.states[1].value,
86
+ }, nullOptions), (err) => {
87
+ assert.strictEqual(err.extensions?.code, 'ACTION_STATE_NOT_FOUND');
88
+ return true;
89
+ });
90
+ });
91
+ test('a field value that is not an action state is rejected', async () => {
92
+ await assert.rejects(() => actionsService.getActions({
93
+ address: fixture.accounts.inverted.address,
94
+ fromActionState: fixture.accounts.inverted.states[0].actionData,
95
+ }, nullOptions), (err) => {
96
+ assert.strictEqual(err.extensions?.code, 'ACTION_STATE_NOT_FOUND');
97
+ return true;
98
+ });
99
+ });
100
+ });
101
+ describe('Actions: a checkpoint below the queried block range', () => {
102
+ test('is rejected when actions were emitted in between', async () => {
103
+ const account = fixture.accounts.control;
104
+ await assert.rejects(() => actionsService.getActions({
105
+ address: account.address,
106
+ fromActionState: account.states[0].value,
107
+ from: 29,
108
+ to: 31,
109
+ }, nullOptions), (err) => {
110
+ assert.strictEqual(err.extensions?.code, 'ACTION_STATE_OUT_OF_RANGE');
111
+ assert.match(String(err.message), /from: 27/, 'the error must name the `from` value that makes the query answerable');
112
+ return true;
113
+ });
114
+ });
115
+ test('is answered normally when nothing was emitted in between', async () => {
116
+ const account = fixture.accounts.control;
117
+ const actions = await actionsService.getActions({
118
+ address: account.address,
119
+ fromActionState: account.states[0].value,
120
+ from: 28,
121
+ to: 31,
122
+ }, nullOptions);
123
+ assert.deepStrictEqual(heightsOf(actions), [28, 29, 30]);
124
+ assertActionChainIsLinked(actions, 'checkpoint below window, nothing missed');
125
+ });
126
+ test('endActionState below the range is rejected, with no such exception', async () => {
127
+ const account = fixture.accounts.control;
128
+ await assert.rejects(() => actionsService.getActions({
129
+ address: account.address,
130
+ endActionState: account.states[0].value,
131
+ from: 29,
132
+ to: 31,
133
+ }, nullOptions), (err) => {
134
+ assert.strictEqual(err.extensions?.code, 'ACTION_STATE_OUT_OF_RANGE');
135
+ return true;
136
+ });
137
+ });
138
+ });
139
+ //# sourceMappingURL=action-state-ordering.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-state-ordering.test.js","sourceRoot":"","sources":["../../../tests/integration/action-state-ordering.test.ts"],"names":[],"mappings":"AAqCA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,cAAc,EAAE,MAAM,uDAAuD,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAsBjC,MAAM,OAAO,GAAY,IAAI,CAAC,KAAK,CACjC,YAAY,CACV,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,8DAA8D,CAAC,EAC3F,MAAM,CACP,CACF,CAAC;AAEF,MAAM,WAAW,GAAG,EAAE,YAAY,EAAE,IAAI,YAAY,CAAC,SAAkB,CAAC,EAAE,CAAC;AAC3E,IAAI,MAAoB,CAAC;AACzB,IAAI,cAA8B,CAAC;AAEnC,MAAM,CAAC,KAAK,IAAI,EAAE;IAChB,MAAM,iBAAiB,EAAE,CAAC;IAC1B,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAC5B,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEH,KAAK,CAAC,KAAK,IAAI,EAAE;IACf,MAAM,MAAM,EAAE,GAAG,EAAE,CAAC;IACpB,MAAM,oBAAoB,EAAE,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAU,CAAC;AAElE,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,8CAA8C,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACtC,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,UAAU,CAC7C,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,EAC5B,WAAW,CACZ,CAAC;YACF,MAAM,CAAC,eAAe,CACpB,SAAS,CAAC,OAAO,CAAC,EAClB,OAAO,CAAC,kBAAkB,EAC1B,qDAAqD,CACtD,CAAC;YACF,yBAAyB,CAAC,OAAO,EAAE,GAAG,GAAG,aAAa,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,6EAA6E,EAAE,GAAG,EAAE;IAM3F,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACtC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YACtD,MAAM,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAChE,IAAI,CAAC,GAAG,GAAG,uBAAuB,KAAK,CAAC,KAAK,WAAW,KAAK,CAAC,MAAM,qBAAqB,eAAe,GAAG,EAAE,KAAK,IAAI,EAAE;gBACtH,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,UAAU,CAC7C,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,CAAC,KAAK,EAAE,EAC1D,WAAW,CACZ,CAAC;gBACF,MAAM,CAAC,eAAe,CACpB,SAAS,CAAC,OAAO,CAAC,EAClB,eAAe,EACf,qBAAqB,GAAG,SAAS,OAAO,CAAC,YAAY,KAAK;oBACxD,4FAA4F,CAC/F,CAAC;gBACF,MAAM,CAAC,WAAW,CAChB,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,EACrC,KAAK,CAAC,KAAK,EACX,oEAAoE,CACrE,CAAC;gBACF,yBAAyB,CAAC,OAAO,EAAE,GAAG,GAAG,oBAAoB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9E,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,+EAA+E,EAAE,GAAG,EAAE;IAC7F,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACtC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,IAAI,CAAC,GAAG,GAAG,uBAAuB,KAAK,CAAC,KAAK,iCAAiC,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,IAAI,EAAE;gBACvG,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,UAAU,CAC7C,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,CAAC,KAAK,EAAE,EAC1D,WAAW,CACZ,CAAC;gBACF,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;gBACpE,MAAM,CAAC,eAAe,CACpB,QAAQ,EACR,EAAE,EACF,UAAU,QAAQ,4CAA4C,KAAK,CAAC,MAAM,EAAE,CAC7E,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;IAIvD,IAAI,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,EAAE,CACP,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EACjD,wEAAwE,CACzE,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,UAAU,CAC7C,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,UAAU,CAAC,KAAK,EAAE,EAC/D,WAAW,CACZ,CAAC;QACF,MAAM,CAAC,EAAE,CACP,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAC3C,SAAS,OAAO,CAAC,MAAM,0BAA0B,SAAS,CAAC,OAAO,CAAC,GAAG,CACvE,CAAC;QACF,yBAAyB,CAAC,OAAO,EAAE,6BAA6B,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,GAAG,wCAAwC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,IAAI,EAAE;YACxF,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,UAAU,CAC7C,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EACrE,WAAW,CACZ,CAAC;YACF,MAAM,CAAC,eAAe,CACpB,SAAS,CAAC,OAAO,CAAC,EAClB,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EACtC,2EAA2E,CAC5E,CAAC;YACF,yBAAyB,CAAC,OAAO,EAAE,GAAG,GAAG,oBAAoB,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gEAAgE,EAAE,GAAG,EAAE;IAC9E,IAAI,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAIpE,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CACH,cAAc,CAAC,UAAU,CACvB;YACE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;YAC1C,eAAe,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK;SAC1D,EACD,WAAW,CACZ,EACH,CAAC,GAAuC,EAAE,EAAE;YAC1C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,wBAAwB,CAAC,CAAC;YACnE,OAAO,IAAI,CAAC;QACd,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QAGvE,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CACH,cAAc,CAAC,UAAU,CACvB;YACE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;YAC1C,eAAe,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU;SAChE,EACD,WAAW,CACZ,EACH,CAAC,GAAuC,EAAE,EAAE;YAC1C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,wBAAwB,CAAC,CAAC;YACnE,OAAO,IAAI,CAAC;QACd,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AAEL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qDAAqD,EAAE,GAAG,EAAE;IAKnE,IAAI,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QAGzC,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CACH,cAAc,CAAC,UAAU,CACvB;YACE,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK;YACxC,IAAI,EAAE,EAAE;YACR,EAAE,EAAE,EAAE;SACP,EACD,WAAW,CACZ,EACH,CAAC,GAAyD,EAAE,EAAE;YAC5D,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,2BAA2B,CAAC,CAAC;YACtE,MAAM,CAAC,KAAK,CACV,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EACnB,UAAU,EACV,sEAAsE,CACvE,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QAMzC,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,UAAU,CAC7C;YACE,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK;YACxC,IAAI,EAAE,EAAE;YACR,EAAE,EAAE,EAAE;SACP,EACD,WAAW,CACZ,CAAC;QACF,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACzD,yBAAyB,CAAC,OAAO,EAAE,yCAAyC,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QAIpF,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QACzC,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CACH,cAAc,CAAC,UAAU,CACvB;YACE,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK;YACvC,IAAI,EAAE,EAAE;YACR,EAAE,EAAE,EAAE;SACP,EACD,WAAW,CACZ,EACH,CAAC,GAAuC,EAAE,EAAE;YAC1C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,2BAA2B,CAAC,CAAC;YACtE,OAAO,IAAI,CAAC;QACd,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { execSync } from 'child_process';
2
+ import postgres from 'postgres';
3
+ import path from 'path';
4
+ const PG_TEST_HOST = process.env.PG_TEST_HOST ?? 'localhost';
5
+ const PG_TEST_PORT = process.env.PG_TEST_PORT ?? '5432';
6
+ const PG_TEST_USER = process.env.PG_TEST_USER ?? 'postgres';
7
+ const PG_TEST_PASSWORD = process.env.PG_TEST_PASSWORD ?? 'postgres';
8
+ const PG_TEST_DB = process.env.PG_ACTION_STATE_TEST_DB ?? 'archive_node_api_action_state_test';
9
+ const FIXTURE_DIR = path.resolve(process.cwd(), 'tests/integration/fixtures');
10
+ const BASE_DUMP = process.env.ARCHIVE_DUMP_PATH ?? path.join(FIXTURE_DIR, 'archive_db.sql');
11
+ const INVERSION_FIXTURE = path.join(FIXTURE_DIR, 'action_state_order_inversion.sql');
12
+ export const connectionString = `postgres://${PG_TEST_USER}:${PG_TEST_PASSWORD}@${PG_TEST_HOST}:${PG_TEST_PORT}/${PG_TEST_DB}`;
13
+ function adminConnectionString(db = 'postgres') {
14
+ return `postgres://${PG_TEST_USER}:${PG_TEST_PASSWORD}@${PG_TEST_HOST}:${PG_TEST_PORT}/${db}`;
15
+ }
16
+ function applySqlFile(file, { stopOnError }) {
17
+ execSync(`PGPASSWORD=${PG_TEST_PASSWORD} psql ${stopOnError ? '-v ON_ERROR_STOP=1' : ''} ` +
18
+ `-h ${PG_TEST_HOST} -p ${PG_TEST_PORT} -U ${PG_TEST_USER} -d ${PG_TEST_DB} -f ${file}`, { stdio: 'pipe' });
19
+ }
20
+ export async function setupTestDatabase() {
21
+ const admin = postgres(adminConnectionString(), { max: 1 });
22
+ try {
23
+ await admin.unsafe(`SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '${PG_TEST_DB}' AND pid <> pg_backend_pid()`);
24
+ await admin.unsafe(`DROP DATABASE IF EXISTS ${PG_TEST_DB}`);
25
+ await admin.unsafe(`CREATE DATABASE ${PG_TEST_DB}`);
26
+ }
27
+ finally {
28
+ await admin.end();
29
+ }
30
+ applySqlFile(BASE_DUMP, {
31
+ stopOnError: process.env.ARCHIVE_DUMP_PATH === undefined,
32
+ });
33
+ applySqlFile(INVERSION_FIXTURE, { stopOnError: true });
34
+ }
35
+ export async function teardownTestDatabase() {
36
+ const admin = postgres(adminConnectionString(), { max: 1 });
37
+ try {
38
+ await admin.unsafe(`SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '${PG_TEST_DB}' AND pid <> pg_backend_pid()`);
39
+ await admin.unsafe(`DROP DATABASE IF EXISTS ${PG_TEST_DB}`);
40
+ }
41
+ finally {
42
+ await admin.end();
43
+ }
44
+ }
45
+ export function createTestClient() {
46
+ return postgres(connectionString, { max: 5 });
47
+ }
48
+ //# sourceMappingURL=action-state-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-state-setup.js","sourceRoot":"","sources":["../../../tests/integration/action-state-setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import { describe, test, before, after } from 'node:test';
2
+ import assert from 'node:assert';
3
+ import { select } from '../../src/consensus/mina-consensus.js';
4
+ import { setupTestDatabase, teardownTestDatabase, createTestClient, } from './setup.js';
5
+ function rowToBlockInfo(row) {
6
+ return {
7
+ height: Number(row.height),
8
+ stateHash: row.state_hash,
9
+ parentHash: row.parent_hash,
10
+ ledgerHash: row.ledger_hash,
11
+ chainStatus: row.chain_status,
12
+ timestamp: row.timestamp,
13
+ globalSlotSinceHardfork: Number(row.global_slot_since_hard_fork),
14
+ globalSlotSinceGenesis: Number(row.global_slot_since_genesis),
15
+ distanceFromMaxBlockHeight: 0,
16
+ lastVrfOutput: row.last_vrf_output,
17
+ };
18
+ }
19
+ let client;
20
+ before(async () => {
21
+ await setupTestDatabase();
22
+ client = createTestClient();
23
+ }, { timeout: 60000 });
24
+ after(async () => {
25
+ if (client)
26
+ await client.end();
27
+ await teardownTestDatabase();
28
+ });
29
+ describe('Consensus select agrees with chain canonicality', () => {
30
+ test('canonical sibling wins against every orphaned sibling sharing the same parent', async () => {
31
+ const rows = await client `
32
+ SELECT
33
+ b.height,
34
+ b.state_hash,
35
+ b.parent_hash,
36
+ b.ledger_hash,
37
+ b.chain_status,
38
+ b.timestamp,
39
+ b.global_slot_since_hard_fork,
40
+ b.global_slot_since_genesis,
41
+ b.last_vrf_output
42
+ FROM blocks b
43
+ WHERE b.chain_status IN ('canonical', 'orphaned')
44
+ AND b.height > 2
45
+ AND EXISTS (
46
+ SELECT 1 FROM blocks sib
47
+ WHERE sib.height = b.height
48
+ AND sib.parent_hash = b.parent_hash
49
+ AND sib.chain_status <> b.chain_status
50
+ AND sib.chain_status IN ('canonical', 'orphaned')
51
+ )
52
+ ORDER BY b.height, b.parent_hash, b.chain_status
53
+ `;
54
+ const groups = new Map();
55
+ for (const row of rows) {
56
+ const key = `${row.height}:${row.parent_hash}`;
57
+ const bucket = groups.get(key) ?? [];
58
+ bucket.push(row);
59
+ groups.set(key, bucket);
60
+ }
61
+ assert.ok(groups.size >= 3, `fixture should expose at least 3 sibling-fork groups for meaningful coverage; found ${groups.size}`);
62
+ let pairs = 0;
63
+ for (const [key, blocks] of groups) {
64
+ const canonical = blocks.find((b) => b.chain_status === 'canonical');
65
+ const orphans = blocks.filter((b) => b.chain_status === 'orphaned');
66
+ assert.ok(canonical, `${key}: missing canonical sibling`);
67
+ assert.ok(orphans.length >= 1, `${key}: missing orphan sibling`);
68
+ const canonicalEntry = { blockInfo: rowToBlockInfo(canonical) };
69
+ for (const orphan of orphans) {
70
+ const orphanEntry = { blockInfo: rowToBlockInfo(orphan) };
71
+ const a = select(canonicalEntry, orphanEntry);
72
+ assert.equal(a.blockInfo.stateHash, canonical.state_hash, `${key}: select(canonical, orphan) must pick canonical (got ${a.blockInfo.stateHash}, want ${canonical.state_hash})`);
73
+ const b = select(orphanEntry, canonicalEntry);
74
+ assert.equal(b.blockInfo.stateHash, canonical.state_hash, `${key}: select(orphan, canonical) must pick canonical (got ${b.blockInfo.stateHash}, want ${canonical.state_hash})`);
75
+ pairs++;
76
+ }
77
+ }
78
+ console.log(`Validated ${pairs} canonical-vs-orphan sibling pair(s) across ${groups.size} fork point(s)`);
79
+ });
80
+ });
81
+ //# sourceMappingURL=consensus-vs-chain.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consensus-vs-chain.test.js","sourceRoot":"","sources":["../../../tests/integration/consensus-vs-chain.test.ts"],"names":[],"mappings":"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"}