@feelyourprotocol/evm 8141.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 (565) hide show
  1. package/LICENSE +373 -0
  2. package/README.md +690 -0
  3. package/dist/cjs/binaryTreeAccessWitness.d.ts +61 -0
  4. package/dist/cjs/binaryTreeAccessWitness.d.ts.map +1 -0
  5. package/dist/cjs/binaryTreeAccessWitness.js +314 -0
  6. package/dist/cjs/binaryTreeAccessWitness.js.map +1 -0
  7. package/dist/cjs/chunkCache.d.ts +13 -0
  8. package/dist/cjs/chunkCache.d.ts.map +1 -0
  9. package/dist/cjs/chunkCache.js +30 -0
  10. package/dist/cjs/chunkCache.js.map +1 -0
  11. package/dist/cjs/constructors.d.ts +11 -0
  12. package/dist/cjs/constructors.d.ts.map +1 -0
  13. package/dist/cjs/constructors.js +30 -0
  14. package/dist/cjs/constructors.js.map +1 -0
  15. package/dist/cjs/eip7708.d.ts +24 -0
  16. package/dist/cjs/eip7708.d.ts.map +1 -0
  17. package/dist/cjs/eip7708.js +37 -0
  18. package/dist/cjs/eip7708.js.map +1 -0
  19. package/dist/cjs/eof/constants.d.ts +22 -0
  20. package/dist/cjs/eof/constants.d.ts.map +1 -0
  21. package/dist/cjs/eof/constants.js +31 -0
  22. package/dist/cjs/eof/constants.js.map +1 -0
  23. package/dist/cjs/eof/container.d.ts +87 -0
  24. package/dist/cjs/eof/container.d.ts.map +1 -0
  25. package/dist/cjs/eof/container.js +380 -0
  26. package/dist/cjs/eof/container.js.map +1 -0
  27. package/dist/cjs/eof/errors.d.ts +66 -0
  28. package/dist/cjs/eof/errors.d.ts.map +1 -0
  29. package/dist/cjs/eof/errors.js +200 -0
  30. package/dist/cjs/eof/errors.js.map +1 -0
  31. package/dist/cjs/eof/setup.d.ts +9 -0
  32. package/dist/cjs/eof/setup.d.ts.map +1 -0
  33. package/dist/cjs/eof/setup.js +26 -0
  34. package/dist/cjs/eof/setup.js.map +1 -0
  35. package/dist/cjs/eof/stackDelta.d.ts +10 -0
  36. package/dist/cjs/eof/stackDelta.d.ts.map +1 -0
  37. package/dist/cjs/eof/stackDelta.js +164 -0
  38. package/dist/cjs/eof/stackDelta.js.map +1 -0
  39. package/dist/cjs/eof/util.d.ts +8 -0
  40. package/dist/cjs/eof/util.d.ts.map +1 -0
  41. package/dist/cjs/eof/util.js +18 -0
  42. package/dist/cjs/eof/util.js.map +1 -0
  43. package/dist/cjs/eof/verify.d.ts +38 -0
  44. package/dist/cjs/eof/verify.d.ts.map +1 -0
  45. package/dist/cjs/eof/verify.js +436 -0
  46. package/dist/cjs/eof/verify.js.map +1 -0
  47. package/dist/cjs/errors.d.ts +40 -0
  48. package/dist/cjs/errors.d.ts.map +1 -0
  49. package/dist/cjs/errors.js +43 -0
  50. package/dist/cjs/errors.js.map +1 -0
  51. package/dist/cjs/evm.d.ts +181 -0
  52. package/dist/cjs/evm.d.ts.map +1 -0
  53. package/dist/cjs/evm.js +1142 -0
  54. package/dist/cjs/evm.js.map +1 -0
  55. package/dist/cjs/frameContext.d.ts +50 -0
  56. package/dist/cjs/frameContext.d.ts.map +1 -0
  57. package/dist/cjs/frameContext.js +17 -0
  58. package/dist/cjs/frameContext.js.map +1 -0
  59. package/dist/cjs/index.d.ts +18 -0
  60. package/dist/cjs/index.d.ts.map +1 -0
  61. package/dist/cjs/index.js +43 -0
  62. package/dist/cjs/index.js.map +1 -0
  63. package/dist/cjs/interpreter.d.ts +361 -0
  64. package/dist/cjs/interpreter.d.ts.map +1 -0
  65. package/dist/cjs/interpreter.js +1057 -0
  66. package/dist/cjs/interpreter.js.map +1 -0
  67. package/dist/cjs/journal.d.ts +69 -0
  68. package/dist/cjs/journal.d.ts.map +1 -0
  69. package/dist/cjs/journal.js +247 -0
  70. package/dist/cjs/journal.js.map +1 -0
  71. package/dist/cjs/logger.d.ts +38 -0
  72. package/dist/cjs/logger.d.ts.map +1 -0
  73. package/dist/cjs/logger.js +126 -0
  74. package/dist/cjs/logger.js.map +1 -0
  75. package/dist/cjs/memory.d.ts +29 -0
  76. package/dist/cjs/memory.d.ts.map +1 -0
  77. package/dist/cjs/memory.js +75 -0
  78. package/dist/cjs/memory.js.map +1 -0
  79. package/dist/cjs/message.d.ts +70 -0
  80. package/dist/cjs/message.d.ts.map +1 -0
  81. package/dist/cjs/message.js +51 -0
  82. package/dist/cjs/message.js.map +1 -0
  83. package/dist/cjs/opcodes/EIP1283.d.ts +13 -0
  84. package/dist/cjs/opcodes/EIP1283.d.ts.map +1 -0
  85. package/dist/cjs/opcodes/EIP1283.js +58 -0
  86. package/dist/cjs/opcodes/EIP1283.js.map +1 -0
  87. package/dist/cjs/opcodes/EIP2200.d.ts +13 -0
  88. package/dist/cjs/opcodes/EIP2200.d.ts.map +1 -0
  89. package/dist/cjs/opcodes/EIP2200.js +64 -0
  90. package/dist/cjs/opcodes/EIP2200.js.map +1 -0
  91. package/dist/cjs/opcodes/EIP2929.d.ts +68 -0
  92. package/dist/cjs/opcodes/EIP2929.d.ts.map +1 -0
  93. package/dist/cjs/opcodes/EIP2929.js +146 -0
  94. package/dist/cjs/opcodes/EIP2929.js.map +1 -0
  95. package/dist/cjs/opcodes/codes.d.ts +45 -0
  96. package/dist/cjs/opcodes/codes.d.ts.map +1 -0
  97. package/dist/cjs/opcodes/codes.js +453 -0
  98. package/dist/cjs/opcodes/codes.js.map +1 -0
  99. package/dist/cjs/opcodes/functions.d.ts +11 -0
  100. package/dist/cjs/opcodes/functions.d.ts.map +1 -0
  101. package/dist/cjs/opcodes/functions.js +1778 -0
  102. package/dist/cjs/opcodes/functions.js.map +1 -0
  103. package/dist/cjs/opcodes/gas.d.ts +15 -0
  104. package/dist/cjs/opcodes/gas.d.ts.map +1 -0
  105. package/dist/cjs/opcodes/gas.js +1016 -0
  106. package/dist/cjs/opcodes/gas.js.map +1 -0
  107. package/dist/cjs/opcodes/index.d.ts +4 -0
  108. package/dist/cjs/opcodes/index.d.ts.map +1 -0
  109. package/dist/cjs/opcodes/index.js +20 -0
  110. package/dist/cjs/opcodes/index.js.map +1 -0
  111. package/dist/cjs/opcodes/util.d.ts +86 -0
  112. package/dist/cjs/opcodes/util.d.ts.map +1 -0
  113. package/dist/cjs/opcodes/util.js +281 -0
  114. package/dist/cjs/opcodes/util.js.map +1 -0
  115. package/dist/cjs/package.json +3 -0
  116. package/dist/cjs/params.d.ts +3 -0
  117. package/dist/cjs/params.d.ts.map +1 -0
  118. package/dist/cjs/params.js +424 -0
  119. package/dist/cjs/params.js.map +1 -0
  120. package/dist/cjs/precompiles/01-ecrecover.d.ts +4 -0
  121. package/dist/cjs/precompiles/01-ecrecover.d.ts.map +1 -0
  122. package/dist/cjs/precompiles/01-ecrecover.js +58 -0
  123. package/dist/cjs/precompiles/01-ecrecover.js.map +1 -0
  124. package/dist/cjs/precompiles/02-sha256.d.ts +4 -0
  125. package/dist/cjs/precompiles/02-sha256.d.ts.map +1 -0
  126. package/dist/cjs/precompiles/02-sha256.js +27 -0
  127. package/dist/cjs/precompiles/02-sha256.js.map +1 -0
  128. package/dist/cjs/precompiles/03-ripemd160.d.ts +4 -0
  129. package/dist/cjs/precompiles/03-ripemd160.d.ts.map +1 -0
  130. package/dist/cjs/precompiles/03-ripemd160.js +26 -0
  131. package/dist/cjs/precompiles/03-ripemd160.js.map +1 -0
  132. package/dist/cjs/precompiles/04-identity.d.ts +4 -0
  133. package/dist/cjs/precompiles/04-identity.d.ts.map +1 -0
  134. package/dist/cjs/precompiles/04-identity.js +24 -0
  135. package/dist/cjs/precompiles/04-identity.js.map +1 -0
  136. package/dist/cjs/precompiles/05-modexp.d.ts +5 -0
  137. package/dist/cjs/precompiles/05-modexp.d.ts.map +1 -0
  138. package/dist/cjs/precompiles/05-modexp.js +185 -0
  139. package/dist/cjs/precompiles/05-modexp.js.map +1 -0
  140. package/dist/cjs/precompiles/06-bn254-add.d.ts +4 -0
  141. package/dist/cjs/precompiles/06-bn254-add.d.ts.map +1 -0
  142. package/dist/cjs/precompiles/06-bn254-add.js +42 -0
  143. package/dist/cjs/precompiles/06-bn254-add.js.map +1 -0
  144. package/dist/cjs/precompiles/07-bn254-mul.d.ts +4 -0
  145. package/dist/cjs/precompiles/07-bn254-mul.d.ts.map +1 -0
  146. package/dist/cjs/precompiles/07-bn254-mul.js +43 -0
  147. package/dist/cjs/precompiles/07-bn254-mul.js.map +1 -0
  148. package/dist/cjs/precompiles/08-bn254-pairing.d.ts +4 -0
  149. package/dist/cjs/precompiles/08-bn254-pairing.d.ts.map +1 -0
  150. package/dist/cjs/precompiles/08-bn254-pairing.js +45 -0
  151. package/dist/cjs/precompiles/08-bn254-pairing.js.map +1 -0
  152. package/dist/cjs/precompiles/09-blake2f.d.ts +5 -0
  153. package/dist/cjs/precompiles/09-blake2f.d.ts.map +1 -0
  154. package/dist/cjs/precompiles/09-blake2f.js +201 -0
  155. package/dist/cjs/precompiles/09-blake2f.js.map +1 -0
  156. package/dist/cjs/precompiles/0a-kzg-point-evaluation.d.ts +5 -0
  157. package/dist/cjs/precompiles/0a-kzg-point-evaluation.d.ts.map +1 -0
  158. package/dist/cjs/precompiles/0a-kzg-point-evaluation.js +68 -0
  159. package/dist/cjs/precompiles/0a-kzg-point-evaluation.js.map +1 -0
  160. package/dist/cjs/precompiles/0b-bls12-g1add.d.ts +4 -0
  161. package/dist/cjs/precompiles/0b-bls12-g1add.d.ts.map +1 -0
  162. package/dist/cjs/precompiles/0b-bls12-g1add.js +49 -0
  163. package/dist/cjs/precompiles/0b-bls12-g1add.js.map +1 -0
  164. package/dist/cjs/precompiles/0c-bls12-g1msm.d.ts +4 -0
  165. package/dist/cjs/precompiles/0c-bls12-g1msm.d.ts.map +1 -0
  166. package/dist/cjs/precompiles/0c-bls12-g1msm.js +62 -0
  167. package/dist/cjs/precompiles/0c-bls12-g1msm.js.map +1 -0
  168. package/dist/cjs/precompiles/0d-bls12-g2add.d.ts +4 -0
  169. package/dist/cjs/precompiles/0d-bls12-g2add.d.ts.map +1 -0
  170. package/dist/cjs/precompiles/0d-bls12-g2add.js +51 -0
  171. package/dist/cjs/precompiles/0d-bls12-g2add.js.map +1 -0
  172. package/dist/cjs/precompiles/0e-bls12-g2msm.d.ts +4 -0
  173. package/dist/cjs/precompiles/0e-bls12-g2msm.d.ts.map +1 -0
  174. package/dist/cjs/precompiles/0e-bls12-g2msm.js +60 -0
  175. package/dist/cjs/precompiles/0e-bls12-g2msm.js.map +1 -0
  176. package/dist/cjs/precompiles/0f-bls12-pairing.d.ts +4 -0
  177. package/dist/cjs/precompiles/0f-bls12-pairing.d.ts.map +1 -0
  178. package/dist/cjs/precompiles/0f-bls12-pairing.js +66 -0
  179. package/dist/cjs/precompiles/0f-bls12-pairing.js.map +1 -0
  180. package/dist/cjs/precompiles/10-bls12-map-fp-to-g1.d.ts +4 -0
  181. package/dist/cjs/precompiles/10-bls12-map-fp-to-g1.d.ts.map +1 -0
  182. package/dist/cjs/precompiles/10-bls12-map-fp-to-g1.js +44 -0
  183. package/dist/cjs/precompiles/10-bls12-map-fp-to-g1.js.map +1 -0
  184. package/dist/cjs/precompiles/100-p256verify.d.ts +4 -0
  185. package/dist/cjs/precompiles/100-p256verify.d.ts.map +1 -0
  186. package/dist/cjs/precompiles/100-p256verify.js +131 -0
  187. package/dist/cjs/precompiles/100-p256verify.js.map +1 -0
  188. package/dist/cjs/precompiles/11-bls12-map-fp2-to-g2.d.ts +4 -0
  189. package/dist/cjs/precompiles/11-bls12-map-fp2-to-g2.d.ts.map +1 -0
  190. package/dist/cjs/precompiles/11-bls12-map-fp2-to-g2.js +47 -0
  191. package/dist/cjs/precompiles/11-bls12-map-fp2-to-g2.js.map +1 -0
  192. package/dist/cjs/precompiles/bls12_381/constants.d.ts +10 -0
  193. package/dist/cjs/precompiles/bls12_381/constants.d.ts.map +1 -0
  194. package/dist/cjs/precompiles/bls12_381/constants.js +274 -0
  195. package/dist/cjs/precompiles/bls12_381/constants.js.map +1 -0
  196. package/dist/cjs/precompiles/bls12_381/index.d.ts +5 -0
  197. package/dist/cjs/precompiles/bls12_381/index.d.ts.map +1 -0
  198. package/dist/cjs/precompiles/bls12_381/index.js +24 -0
  199. package/dist/cjs/precompiles/bls12_381/index.js.map +1 -0
  200. package/dist/cjs/precompiles/bls12_381/mcl.d.ts +45 -0
  201. package/dist/cjs/precompiles/bls12_381/mcl.d.ts.map +1 -0
  202. package/dist/cjs/precompiles/bls12_381/mcl.js +264 -0
  203. package/dist/cjs/precompiles/bls12_381/mcl.js.map +1 -0
  204. package/dist/cjs/precompiles/bls12_381/noble.d.ts +39 -0
  205. package/dist/cjs/precompiles/bls12_381/noble.d.ts.map +1 -0
  206. package/dist/cjs/precompiles/bls12_381/noble.js +228 -0
  207. package/dist/cjs/precompiles/bls12_381/noble.js.map +1 -0
  208. package/dist/cjs/precompiles/bls12_381/util.d.ts +35 -0
  209. package/dist/cjs/precompiles/bls12_381/util.d.ts.map +1 -0
  210. package/dist/cjs/precompiles/bls12_381/util.js +68 -0
  211. package/dist/cjs/precompiles/bls12_381/util.js.map +1 -0
  212. package/dist/cjs/precompiles/bn254/index.d.ts +3 -0
  213. package/dist/cjs/precompiles/bn254/index.d.ts.map +1 -0
  214. package/dist/cjs/precompiles/bn254/index.js +8 -0
  215. package/dist/cjs/precompiles/bn254/index.js.map +1 -0
  216. package/dist/cjs/precompiles/bn254/noble.d.ts +13 -0
  217. package/dist/cjs/precompiles/bn254/noble.d.ts.map +1 -0
  218. package/dist/cjs/precompiles/bn254/noble.js +124 -0
  219. package/dist/cjs/precompiles/bn254/noble.js.map +1 -0
  220. package/dist/cjs/precompiles/bn254/rustbn.d.ts +16 -0
  221. package/dist/cjs/precompiles/bn254/rustbn.d.ts.map +1 -0
  222. package/dist/cjs/precompiles/bn254/rustbn.js +33 -0
  223. package/dist/cjs/precompiles/bn254/rustbn.js.map +1 -0
  224. package/dist/cjs/precompiles/index.d.ts +67 -0
  225. package/dist/cjs/precompiles/index.d.ts.map +1 -0
  226. package/dist/cjs/precompiles/index.js +262 -0
  227. package/dist/cjs/precompiles/index.js.map +1 -0
  228. package/dist/cjs/precompiles/types.d.ts +13 -0
  229. package/dist/cjs/precompiles/types.d.ts.map +1 -0
  230. package/dist/cjs/precompiles/types.js +3 -0
  231. package/dist/cjs/precompiles/types.js.map +1 -0
  232. package/dist/cjs/precompiles/util.d.ts +30 -0
  233. package/dist/cjs/precompiles/util.d.ts.map +1 -0
  234. package/dist/cjs/precompiles/util.js +63 -0
  235. package/dist/cjs/precompiles/util.js.map +1 -0
  236. package/dist/cjs/stack.d.ts +55 -0
  237. package/dist/cjs/stack.d.ts.map +1 -0
  238. package/dist/cjs/stack.js +143 -0
  239. package/dist/cjs/stack.js.map +1 -0
  240. package/dist/cjs/stemCache.d.ts +20 -0
  241. package/dist/cjs/stemCache.d.ts.map +1 -0
  242. package/dist/cjs/stemCache.js +37 -0
  243. package/dist/cjs/stemCache.js.map +1 -0
  244. package/dist/cjs/transientStorage.d.ts +54 -0
  245. package/dist/cjs/transientStorage.d.ts.map +1 -0
  246. package/dist/cjs/transientStorage.js +113 -0
  247. package/dist/cjs/transientStorage.js.map +1 -0
  248. package/dist/cjs/types.d.ts +465 -0
  249. package/dist/cjs/types.d.ts.map +1 -0
  250. package/dist/cjs/types.js +28 -0
  251. package/dist/cjs/types.js.map +1 -0
  252. package/dist/esm/binaryTreeAccessWitness.d.ts +61 -0
  253. package/dist/esm/binaryTreeAccessWitness.d.ts.map +1 -0
  254. package/dist/esm/binaryTreeAccessWitness.js +308 -0
  255. package/dist/esm/binaryTreeAccessWitness.js.map +1 -0
  256. package/dist/esm/chunkCache.d.ts +13 -0
  257. package/dist/esm/chunkCache.d.ts.map +1 -0
  258. package/dist/esm/chunkCache.js +26 -0
  259. package/dist/esm/chunkCache.js.map +1 -0
  260. package/dist/esm/constructors.d.ts +11 -0
  261. package/dist/esm/constructors.d.ts.map +1 -0
  262. package/dist/esm/constructors.js +27 -0
  263. package/dist/esm/constructors.js.map +1 -0
  264. package/dist/esm/eip7708.d.ts +24 -0
  265. package/dist/esm/eip7708.d.ts.map +1 -0
  266. package/dist/esm/eip7708.js +32 -0
  267. package/dist/esm/eip7708.js.map +1 -0
  268. package/dist/esm/eof/constants.d.ts +22 -0
  269. package/dist/esm/eof/constants.d.ts.map +1 -0
  270. package/dist/esm/eof/constants.js +28 -0
  271. package/dist/esm/eof/constants.js.map +1 -0
  272. package/dist/esm/eof/container.d.ts +87 -0
  273. package/dist/esm/eof/container.d.ts.map +1 -0
  274. package/dist/esm/eof/container.js +375 -0
  275. package/dist/esm/eof/container.js.map +1 -0
  276. package/dist/esm/eof/errors.d.ts +66 -0
  277. package/dist/esm/eof/errors.d.ts.map +1 -0
  278. package/dist/esm/eof/errors.js +195 -0
  279. package/dist/esm/eof/errors.js.map +1 -0
  280. package/dist/esm/eof/setup.d.ts +9 -0
  281. package/dist/esm/eof/setup.d.ts.map +1 -0
  282. package/dist/esm/eof/setup.js +23 -0
  283. package/dist/esm/eof/setup.js.map +1 -0
  284. package/dist/esm/eof/stackDelta.d.ts +10 -0
  285. package/dist/esm/eof/stackDelta.d.ts.map +1 -0
  286. package/dist/esm/eof/stackDelta.js +161 -0
  287. package/dist/esm/eof/stackDelta.js.map +1 -0
  288. package/dist/esm/eof/util.d.ts +8 -0
  289. package/dist/esm/eof/util.d.ts.map +1 -0
  290. package/dist/esm/eof/util.js +14 -0
  291. package/dist/esm/eof/util.js.map +1 -0
  292. package/dist/esm/eof/verify.d.ts +38 -0
  293. package/dist/esm/eof/verify.d.ts.map +1 -0
  294. package/dist/esm/eof/verify.js +432 -0
  295. package/dist/esm/eof/verify.js.map +1 -0
  296. package/dist/esm/errors.d.ts +40 -0
  297. package/dist/esm/errors.d.ts.map +1 -0
  298. package/dist/esm/errors.js +39 -0
  299. package/dist/esm/errors.js.map +1 -0
  300. package/dist/esm/evm.d.ts +181 -0
  301. package/dist/esm/evm.d.ts.map +1 -0
  302. package/dist/esm/evm.js +1131 -0
  303. package/dist/esm/evm.js.map +1 -0
  304. package/dist/esm/frameContext.d.ts +50 -0
  305. package/dist/esm/frameContext.d.ts.map +1 -0
  306. package/dist/esm/frameContext.js +14 -0
  307. package/dist/esm/frameContext.js.map +1 -0
  308. package/dist/esm/index.d.ts +18 -0
  309. package/dist/esm/index.d.ts.map +1 -0
  310. package/dist/esm/index.js +15 -0
  311. package/dist/esm/index.js.map +1 -0
  312. package/dist/esm/interpreter.d.ts +361 -0
  313. package/dist/esm/interpreter.d.ts.map +1 -0
  314. package/dist/esm/interpreter.js +1054 -0
  315. package/dist/esm/interpreter.js.map +1 -0
  316. package/dist/esm/journal.d.ts +69 -0
  317. package/dist/esm/journal.d.ts.map +1 -0
  318. package/dist/esm/journal.js +243 -0
  319. package/dist/esm/journal.js.map +1 -0
  320. package/dist/esm/logger.d.ts +38 -0
  321. package/dist/esm/logger.d.ts.map +1 -0
  322. package/dist/esm/logger.js +121 -0
  323. package/dist/esm/logger.js.map +1 -0
  324. package/dist/esm/memory.d.ts +29 -0
  325. package/dist/esm/memory.d.ts.map +1 -0
  326. package/dist/esm/memory.js +71 -0
  327. package/dist/esm/memory.js.map +1 -0
  328. package/dist/esm/message.d.ts +70 -0
  329. package/dist/esm/message.d.ts.map +1 -0
  330. package/dist/esm/message.js +47 -0
  331. package/dist/esm/message.js.map +1 -0
  332. package/dist/esm/opcodes/EIP1283.d.ts +13 -0
  333. package/dist/esm/opcodes/EIP1283.d.ts.map +1 -0
  334. package/dist/esm/opcodes/EIP1283.js +55 -0
  335. package/dist/esm/opcodes/EIP1283.js.map +1 -0
  336. package/dist/esm/opcodes/EIP2200.d.ts +13 -0
  337. package/dist/esm/opcodes/EIP2200.d.ts.map +1 -0
  338. package/dist/esm/opcodes/EIP2200.js +61 -0
  339. package/dist/esm/opcodes/EIP2200.js.map +1 -0
  340. package/dist/esm/opcodes/EIP2929.d.ts +68 -0
  341. package/dist/esm/opcodes/EIP2929.d.ts.map +1 -0
  342. package/dist/esm/opcodes/EIP2929.js +138 -0
  343. package/dist/esm/opcodes/EIP2929.js.map +1 -0
  344. package/dist/esm/opcodes/codes.d.ts +45 -0
  345. package/dist/esm/opcodes/codes.d.ts.map +1 -0
  346. package/dist/esm/opcodes/codes.js +448 -0
  347. package/dist/esm/opcodes/codes.js.map +1 -0
  348. package/dist/esm/opcodes/functions.d.ts +11 -0
  349. package/dist/esm/opcodes/functions.d.ts.map +1 -0
  350. package/dist/esm/opcodes/functions.js +1775 -0
  351. package/dist/esm/opcodes/functions.js.map +1 -0
  352. package/dist/esm/opcodes/gas.d.ts +15 -0
  353. package/dist/esm/opcodes/gas.d.ts.map +1 -0
  354. package/dist/esm/opcodes/gas.js +1013 -0
  355. package/dist/esm/opcodes/gas.js.map +1 -0
  356. package/dist/esm/opcodes/index.d.ts +4 -0
  357. package/dist/esm/opcodes/index.d.ts.map +1 -0
  358. package/dist/esm/opcodes/index.js +4 -0
  359. package/dist/esm/opcodes/index.js.map +1 -0
  360. package/dist/esm/opcodes/util.d.ts +86 -0
  361. package/dist/esm/opcodes/util.d.ts.map +1 -0
  362. package/dist/esm/opcodes/util.js +257 -0
  363. package/dist/esm/opcodes/util.js.map +1 -0
  364. package/dist/esm/package.json +3 -0
  365. package/dist/esm/params.d.ts +3 -0
  366. package/dist/esm/params.d.ts.map +1 -0
  367. package/dist/esm/params.js +421 -0
  368. package/dist/esm/params.js.map +1 -0
  369. package/dist/esm/precompiles/01-ecrecover.d.ts +4 -0
  370. package/dist/esm/precompiles/01-ecrecover.d.ts.map +1 -0
  371. package/dist/esm/precompiles/01-ecrecover.js +55 -0
  372. package/dist/esm/precompiles/01-ecrecover.js.map +1 -0
  373. package/dist/esm/precompiles/02-sha256.d.ts +4 -0
  374. package/dist/esm/precompiles/02-sha256.d.ts.map +1 -0
  375. package/dist/esm/precompiles/02-sha256.js +24 -0
  376. package/dist/esm/precompiles/02-sha256.js.map +1 -0
  377. package/dist/esm/precompiles/03-ripemd160.d.ts +4 -0
  378. package/dist/esm/precompiles/03-ripemd160.d.ts.map +1 -0
  379. package/dist/esm/precompiles/03-ripemd160.js +23 -0
  380. package/dist/esm/precompiles/03-ripemd160.js.map +1 -0
  381. package/dist/esm/precompiles/04-identity.d.ts +4 -0
  382. package/dist/esm/precompiles/04-identity.d.ts.map +1 -0
  383. package/dist/esm/precompiles/04-identity.js +21 -0
  384. package/dist/esm/precompiles/04-identity.js.map +1 -0
  385. package/dist/esm/precompiles/05-modexp.d.ts +5 -0
  386. package/dist/esm/precompiles/05-modexp.d.ts.map +1 -0
  387. package/dist/esm/precompiles/05-modexp.js +181 -0
  388. package/dist/esm/precompiles/05-modexp.js.map +1 -0
  389. package/dist/esm/precompiles/06-bn254-add.d.ts +4 -0
  390. package/dist/esm/precompiles/06-bn254-add.d.ts.map +1 -0
  391. package/dist/esm/precompiles/06-bn254-add.js +39 -0
  392. package/dist/esm/precompiles/06-bn254-add.js.map +1 -0
  393. package/dist/esm/precompiles/07-bn254-mul.d.ts +4 -0
  394. package/dist/esm/precompiles/07-bn254-mul.d.ts.map +1 -0
  395. package/dist/esm/precompiles/07-bn254-mul.js +40 -0
  396. package/dist/esm/precompiles/07-bn254-mul.js.map +1 -0
  397. package/dist/esm/precompiles/08-bn254-pairing.d.ts +4 -0
  398. package/dist/esm/precompiles/08-bn254-pairing.d.ts.map +1 -0
  399. package/dist/esm/precompiles/08-bn254-pairing.js +42 -0
  400. package/dist/esm/precompiles/08-bn254-pairing.js.map +1 -0
  401. package/dist/esm/precompiles/09-blake2f.d.ts +5 -0
  402. package/dist/esm/precompiles/09-blake2f.d.ts.map +1 -0
  403. package/dist/esm/precompiles/09-blake2f.js +197 -0
  404. package/dist/esm/precompiles/09-blake2f.js.map +1 -0
  405. package/dist/esm/precompiles/0a-kzg-point-evaluation.d.ts +5 -0
  406. package/dist/esm/precompiles/0a-kzg-point-evaluation.d.ts.map +1 -0
  407. package/dist/esm/precompiles/0a-kzg-point-evaluation.js +64 -0
  408. package/dist/esm/precompiles/0a-kzg-point-evaluation.js.map +1 -0
  409. package/dist/esm/precompiles/0b-bls12-g1add.d.ts +4 -0
  410. package/dist/esm/precompiles/0b-bls12-g1add.d.ts.map +1 -0
  411. package/dist/esm/precompiles/0b-bls12-g1add.js +46 -0
  412. package/dist/esm/precompiles/0b-bls12-g1add.js.map +1 -0
  413. package/dist/esm/precompiles/0c-bls12-g1msm.d.ts +4 -0
  414. package/dist/esm/precompiles/0c-bls12-g1msm.d.ts.map +1 -0
  415. package/dist/esm/precompiles/0c-bls12-g1msm.js +59 -0
  416. package/dist/esm/precompiles/0c-bls12-g1msm.js.map +1 -0
  417. package/dist/esm/precompiles/0d-bls12-g2add.d.ts +4 -0
  418. package/dist/esm/precompiles/0d-bls12-g2add.d.ts.map +1 -0
  419. package/dist/esm/precompiles/0d-bls12-g2add.js +48 -0
  420. package/dist/esm/precompiles/0d-bls12-g2add.js.map +1 -0
  421. package/dist/esm/precompiles/0e-bls12-g2msm.d.ts +4 -0
  422. package/dist/esm/precompiles/0e-bls12-g2msm.d.ts.map +1 -0
  423. package/dist/esm/precompiles/0e-bls12-g2msm.js +57 -0
  424. package/dist/esm/precompiles/0e-bls12-g2msm.js.map +1 -0
  425. package/dist/esm/precompiles/0f-bls12-pairing.d.ts +4 -0
  426. package/dist/esm/precompiles/0f-bls12-pairing.d.ts.map +1 -0
  427. package/dist/esm/precompiles/0f-bls12-pairing.js +63 -0
  428. package/dist/esm/precompiles/0f-bls12-pairing.js.map +1 -0
  429. package/dist/esm/precompiles/10-bls12-map-fp-to-g1.d.ts +4 -0
  430. package/dist/esm/precompiles/10-bls12-map-fp-to-g1.d.ts.map +1 -0
  431. package/dist/esm/precompiles/10-bls12-map-fp-to-g1.js +41 -0
  432. package/dist/esm/precompiles/10-bls12-map-fp-to-g1.js.map +1 -0
  433. package/dist/esm/precompiles/100-p256verify.d.ts +4 -0
  434. package/dist/esm/precompiles/100-p256verify.d.ts.map +1 -0
  435. package/dist/esm/precompiles/100-p256verify.js +128 -0
  436. package/dist/esm/precompiles/100-p256verify.js.map +1 -0
  437. package/dist/esm/precompiles/11-bls12-map-fp2-to-g2.d.ts +4 -0
  438. package/dist/esm/precompiles/11-bls12-map-fp2-to-g2.d.ts.map +1 -0
  439. package/dist/esm/precompiles/11-bls12-map-fp2-to-g2.js +44 -0
  440. package/dist/esm/precompiles/11-bls12-map-fp2-to-g2.js.map +1 -0
  441. package/dist/esm/precompiles/bls12_381/constants.d.ts +10 -0
  442. package/dist/esm/precompiles/bls12_381/constants.d.ts.map +1 -0
  443. package/dist/esm/precompiles/bls12_381/constants.js +271 -0
  444. package/dist/esm/precompiles/bls12_381/constants.js.map +1 -0
  445. package/dist/esm/precompiles/bls12_381/index.d.ts +5 -0
  446. package/dist/esm/precompiles/bls12_381/index.d.ts.map +1 -0
  447. package/dist/esm/precompiles/bls12_381/index.js +5 -0
  448. package/dist/esm/precompiles/bls12_381/index.js.map +1 -0
  449. package/dist/esm/precompiles/bls12_381/mcl.d.ts +45 -0
  450. package/dist/esm/precompiles/bls12_381/mcl.d.ts.map +1 -0
  451. package/dist/esm/precompiles/bls12_381/mcl.js +254 -0
  452. package/dist/esm/precompiles/bls12_381/mcl.js.map +1 -0
  453. package/dist/esm/precompiles/bls12_381/noble.d.ts +39 -0
  454. package/dist/esm/precompiles/bls12_381/noble.d.ts.map +1 -0
  455. package/dist/esm/precompiles/bls12_381/noble.js +218 -0
  456. package/dist/esm/precompiles/bls12_381/noble.js.map +1 -0
  457. package/dist/esm/precompiles/bls12_381/util.d.ts +35 -0
  458. package/dist/esm/precompiles/bls12_381/util.d.ts.map +1 -0
  459. package/dist/esm/precompiles/bls12_381/util.js +63 -0
  460. package/dist/esm/precompiles/bls12_381/util.js.map +1 -0
  461. package/dist/esm/precompiles/bn254/index.d.ts +3 -0
  462. package/dist/esm/precompiles/bn254/index.d.ts.map +1 -0
  463. package/dist/esm/precompiles/bn254/index.js +3 -0
  464. package/dist/esm/precompiles/bn254/index.js.map +1 -0
  465. package/dist/esm/precompiles/bn254/noble.d.ts +13 -0
  466. package/dist/esm/precompiles/bn254/noble.d.ts.map +1 -0
  467. package/dist/esm/precompiles/bn254/noble.js +120 -0
  468. package/dist/esm/precompiles/bn254/noble.js.map +1 -0
  469. package/dist/esm/precompiles/bn254/rustbn.d.ts +16 -0
  470. package/dist/esm/precompiles/bn254/rustbn.d.ts.map +1 -0
  471. package/dist/esm/precompiles/bn254/rustbn.js +29 -0
  472. package/dist/esm/precompiles/bn254/rustbn.js.map +1 -0
  473. package/dist/esm/precompiles/index.d.ts +67 -0
  474. package/dist/esm/precompiles/index.d.ts.map +1 -0
  475. package/dist/esm/precompiles/index.js +251 -0
  476. package/dist/esm/precompiles/index.js.map +1 -0
  477. package/dist/esm/precompiles/types.d.ts +13 -0
  478. package/dist/esm/precompiles/types.d.ts.map +1 -0
  479. package/dist/esm/precompiles/types.js +2 -0
  480. package/dist/esm/precompiles/types.js.map +1 -0
  481. package/dist/esm/precompiles/util.d.ts +30 -0
  482. package/dist/esm/precompiles/util.d.ts.map +1 -0
  483. package/dist/esm/precompiles/util.js +57 -0
  484. package/dist/esm/precompiles/util.js.map +1 -0
  485. package/dist/esm/stack.d.ts +55 -0
  486. package/dist/esm/stack.d.ts.map +1 -0
  487. package/dist/esm/stack.js +139 -0
  488. package/dist/esm/stack.js.map +1 -0
  489. package/dist/esm/stemCache.d.ts +20 -0
  490. package/dist/esm/stemCache.d.ts.map +1 -0
  491. package/dist/esm/stemCache.js +33 -0
  492. package/dist/esm/stemCache.js.map +1 -0
  493. package/dist/esm/transientStorage.d.ts +54 -0
  494. package/dist/esm/transientStorage.d.ts.map +1 -0
  495. package/dist/esm/transientStorage.js +109 -0
  496. package/dist/esm/transientStorage.js.map +1 -0
  497. package/dist/esm/types.d.ts +465 -0
  498. package/dist/esm/types.d.ts.map +1 -0
  499. package/dist/esm/types.js +23 -0
  500. package/dist/esm/types.js.map +1 -0
  501. package/dist/tsconfig.prod.cjs.tsbuildinfo +1 -0
  502. package/dist/tsconfig.prod.esm.tsbuildinfo +1 -0
  503. package/package.json +98 -0
  504. package/src/binaryTreeAccessWitness.ts +447 -0
  505. package/src/chunkCache.ts +36 -0
  506. package/src/constructors.ts +35 -0
  507. package/src/eip7708.ts +47 -0
  508. package/src/eof/constants.ts +36 -0
  509. package/src/eof/container.ts +495 -0
  510. package/src/eof/errors.ts +214 -0
  511. package/src/eof/setup.ts +27 -0
  512. package/src/eof/stackDelta.ts +169 -0
  513. package/src/eof/util.ts +16 -0
  514. package/src/eof/verify.ts +531 -0
  515. package/src/errors.ts +45 -0
  516. package/src/evm.ts +1415 -0
  517. package/src/frameContext.ts +56 -0
  518. package/src/index.ts +75 -0
  519. package/src/interpreter.ts +1437 -0
  520. package/src/journal.ts +317 -0
  521. package/src/logger.ts +180 -0
  522. package/src/memory.ts +82 -0
  523. package/src/message.ts +114 -0
  524. package/src/opcodes/EIP1283.ts +77 -0
  525. package/src/opcodes/EIP2200.ts +87 -0
  526. package/src/opcodes/EIP2929.ts +173 -0
  527. package/src/opcodes/codes.ts +528 -0
  528. package/src/opcodes/functions.ts +1937 -0
  529. package/src/opcodes/gas.ts +1329 -0
  530. package/src/opcodes/index.ts +3 -0
  531. package/src/opcodes/util.ts +313 -0
  532. package/src/params.ts +423 -0
  533. package/src/precompiles/01-ecrecover.ts +77 -0
  534. package/src/precompiles/02-sha256.ts +32 -0
  535. package/src/precompiles/03-ripemd160.ts +32 -0
  536. package/src/precompiles/04-identity.ts +29 -0
  537. package/src/precompiles/05-modexp.ts +215 -0
  538. package/src/precompiles/06-bn254-add.ts +49 -0
  539. package/src/precompiles/07-bn254-mul.ts +50 -0
  540. package/src/precompiles/08-bn254-pairing.ts +54 -0
  541. package/src/precompiles/09-blake2f.ts +243 -0
  542. package/src/precompiles/0a-kzg-point-evaluation.ts +94 -0
  543. package/src/precompiles/0b-bls12-g1add.ts +63 -0
  544. package/src/precompiles/0c-bls12-g1msm.ts +87 -0
  545. package/src/precompiles/0d-bls12-g2add.ts +66 -0
  546. package/src/precompiles/0e-bls12-g2msm.ts +84 -0
  547. package/src/precompiles/0f-bls12-pairing.ts +86 -0
  548. package/src/precompiles/10-bls12-map-fp-to-g1.ts +58 -0
  549. package/src/precompiles/100-p256verify.ts +152 -0
  550. package/src/precompiles/11-bls12-map-fp2-to-g2.ts +61 -0
  551. package/src/precompiles/bls12_381/constants.ts +278 -0
  552. package/src/precompiles/bls12_381/index.ts +4 -0
  553. package/src/precompiles/bls12_381/mcl.ts +376 -0
  554. package/src/precompiles/bls12_381/noble.ts +307 -0
  555. package/src/precompiles/bls12_381/util.ts +78 -0
  556. package/src/precompiles/bn254/index.ts +2 -0
  557. package/src/precompiles/bn254/noble.ts +156 -0
  558. package/src/precompiles/bn254/rustbn.ts +35 -0
  559. package/src/precompiles/index.ts +344 -0
  560. package/src/precompiles/types.ts +15 -0
  561. package/src/precompiles/util.ts +70 -0
  562. package/src/stack.ts +166 -0
  563. package/src/stemCache.ts +45 -0
  564. package/src/transientStorage.ts +131 -0
  565. package/src/types.ts +538 -0
@@ -0,0 +1,436 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContainerSectionType = void 0;
4
+ exports.verifyCode = verifyCode;
5
+ const errors_ts_1 = require("./errors.js");
6
+ const stackDelta_ts_1 = require("./stackDelta.js");
7
+ exports.ContainerSectionType = {
8
+ InitCode: 'initCode', // Targeted by EOFCreate
9
+ DeploymentCode: 'deploymentCode', // Targeted by RETURNCONTRACT
10
+ RuntimeCode: 'runtimeCode', // "Default" runtime code
11
+ };
12
+ /**
13
+ * This method validates an EOF container deeply. It will validate the opcodes, validate the stack, and performs
14
+ * various checks such as checking for forbidden opcodes in certain modes, jumps to invalid places, etc.
15
+ * For more information, see "Code validation" of https://github.com/ipsilon/eof/blob/main/spec/eof.md
16
+ * This is a compilation of all the extra validation rules introduced by the various EIPs
17
+ * In particular, the stack validation EIP https://eips.ethereum.org/EIPS/eip-5450 is a big part here
18
+ * @param container EOFContainer to verify
19
+ * @param evm The EVM to run in (pulls opcodes from here)
20
+ * @param mode The validation mode to run in
21
+ * @returns Returns a Map which marks what ContainerSectionType each container is
22
+ * NOTE: this should likely not be a map, since a container section can only be of a single type, not multiple
23
+ */
24
+ function verifyCode(container, evm, mode = exports.ContainerSectionType.RuntimeCode) {
25
+ return validateOpcodes(container, evm, mode);
26
+ }
27
+ // Helper methods to read Int16s / Uint16s
28
+ function readInt16(code, start) {
29
+ return new DataView(code.buffer).getInt16(start);
30
+ }
31
+ function readUint16(code, start) {
32
+ return new DataView(code.buffer).getUint16(start);
33
+ }
34
+ function validateOpcodes(container, evm, mode = exports.ContainerSectionType.RuntimeCode) {
35
+ // Track the type of the container targets
36
+ // Should at the end of the analysis have all the containers
37
+ const containerTypeMap = new Map();
38
+ // TODO (?) -> stackDelta currently only has active EOF opcodes, can use it directly (?)
39
+ // (so no need to generate the valid opcodeNumbers)
40
+ // Validate each code section
41
+ const opcodes = evm.getActiveOpcodes();
42
+ const opcodeNumbers = new Set();
43
+ for (const [key] of opcodes) {
44
+ opcodeNumbers.add(key);
45
+ }
46
+ // Add INVALID as valid
47
+ opcodeNumbers.add(0xfe);
48
+ // Remove CODESIZE, CODECOPY, EXTCODESIZE, EXTCODECOPY, EXTCODEHASH, GAS
49
+ opcodeNumbers.delete(0x38);
50
+ opcodeNumbers.delete(0x39);
51
+ opcodeNumbers.delete(0x5a);
52
+ opcodeNumbers.delete(0x3b);
53
+ opcodeNumbers.delete(0x3c);
54
+ opcodeNumbers.delete(0x3f);
55
+ // Remove CALLCODE and SELFDESTRUCT
56
+ opcodeNumbers.delete(0xf2);
57
+ opcodeNumbers.delete(0xff);
58
+ // TODO omnibus https://github.com/ipsilon/eof/blob/main/spec/eof.md states
59
+ // JUMP / JUMPI / PC / CREATE / CREATE2 also banned
60
+ // This is not in the EIPs yet
61
+ // Add these opcodes here
62
+ opcodeNumbers.delete(0x56); // JUMP
63
+ opcodeNumbers.delete(0x57); // JUMPI
64
+ opcodeNumbers.delete(0x58); // PC
65
+ opcodeNumbers.delete(0xf0); // CREATE
66
+ opcodeNumbers.delete(0xf5); // CREATE2
67
+ // Note: Name might be misleading since this is the list of opcodes which are OK as final opcodes in a code section
68
+ // TODO if using stackDelta for EOF it is possible to add a "termination" boolean for the opcode to mark it as terminating
69
+ // (so no need to generate this set here)
70
+ const terminatingOpcodes = new Set();
71
+ terminatingOpcodes.add(0x00); // STOP
72
+ terminatingOpcodes.add(0xf3); // RETURN
73
+ terminatingOpcodes.add(0xfd); // REVERT
74
+ terminatingOpcodes.add(0xfe); // INVALID
75
+ terminatingOpcodes.add(0xee); // RETURNCONTRACT
76
+ terminatingOpcodes.add(0xe4); // RETF
77
+ terminatingOpcodes.add(0xe5); // JUMPF
78
+ terminatingOpcodes.add(0xe0); // RJUMPing back into code section is OK
79
+ for (const opcode of terminatingOpcodes) {
80
+ if (!opcodeNumbers.has(opcode)) {
81
+ terminatingOpcodes.delete(opcode);
82
+ }
83
+ }
84
+ const validJumps = new Set();
85
+ // Add all reachable code sections
86
+ const reachableSections = {};
87
+ let codeSection = -1;
88
+ for (const code of container.body.codeSections) {
89
+ // Track the intermediate bytes
90
+ const intermediateBytes = new Set();
91
+ // Track the jump locations (for forward jumps it is unknown at the first pass if the byte is intermediate)
92
+ const jumpLocations = new Set();
93
+ function addJump(location) {
94
+ if (intermediateBytes.has(location)) {
95
+ // When trying to JUMP into an intermediate byte: this is invalid
96
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.INVALID_RJUMP);
97
+ }
98
+ jumpLocations.add(location);
99
+ }
100
+ function addIntermediate(location) {
101
+ if (jumpLocations.has(location)) {
102
+ // When trying to add an intermediate to a location already JUMPed to: this is invalid
103
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.INVALID_RJUMP);
104
+ }
105
+ intermediateBytes.add(location);
106
+ }
107
+ codeSection++;
108
+ reachableSections[codeSection] = new Set();
109
+ // Section is marked as "non-returning": it does never "return" to another code section
110
+ // it rather exits the current EVM call frame
111
+ const nonReturningFunction = container.body.typeSections[codeSection].outputs === 0x80;
112
+ // Boolean flag to mark if this section has a returning opcode:
113
+ // RETF
114
+ // Or JUMPF into a returning section
115
+ // Each returning section should contain a returning opcode
116
+ let sectionHasReturningOpcode = false;
117
+ // Tracking set of reachable opcodes
118
+ const reachableOpcodes = new Set();
119
+ reachableOpcodes.add(0);
120
+ // Validate that each opcode is defined
121
+ let ptr = 0;
122
+ let lastOpcode = 0; // Note: code sections cannot be empty, so this number will always be set
123
+ // Implement the EIP 5450 stack validation algorithm
124
+ const inputs = container.body.typeSections[codeSection].inputs;
125
+ let maxStackHeight = inputs;
126
+ // These arrays track the min/max stack height **before** executing the instruction
127
+ const stackHeightMin = [inputs];
128
+ const stackHeightMax = [inputs];
129
+ // Loop over the entire code section and validate various rules
130
+ // For (most) validation rules, see https://github.com/ipsilon/eof/blob/main/spec/eof.md
131
+ // For all validation rules per opcode, find the corresponding EIP, the rules are there
132
+ while (ptr < code.length) {
133
+ // Tracks the successor opcodes of this opcode (for stack purposes)
134
+ const successorSet = new Set();
135
+ // ReachableOpcodes: this can likely be deleted after implementing the 5450 algorithm
136
+ if (!reachableOpcodes.has(ptr)) {
137
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.UNREACHABLE_CODE);
138
+ }
139
+ if (stackHeightMin[ptr] === undefined || stackHeightMax[ptr] === undefined) {
140
+ // Code is either unreachable or only reachable via a backwards jump
141
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.UNREACHABLE_CODE);
142
+ }
143
+ validJumps.add(ptr);
144
+ const opcode = code[ptr];
145
+ const minStackCurrent = stackHeightMin[ptr];
146
+ const maxStackCurrent = stackHeightMax[ptr];
147
+ const opcodeInputs = stackDelta_ts_1.stackDelta[opcode].inputs;
148
+ const opcodeOutputs = stackDelta_ts_1.stackDelta[opcode].outputs;
149
+ if (minStackCurrent - opcodeInputs < 0) {
150
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.STACK_UNDERFLOW);
151
+ }
152
+ const delta = opcodeOutputs - opcodeInputs;
153
+ let minStackNext = minStackCurrent + delta;
154
+ let maxStackNext = maxStackCurrent + delta;
155
+ if (maxStackNext > 1024) {
156
+ // TODO verify if 1023 or 1024 is the right constant
157
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.STACK_OVERFLOW);
158
+ }
159
+ if (nonReturningFunction && opcode === 0xe4) {
160
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.INVALID_RETURNING_SECTION);
161
+ }
162
+ lastOpcode = opcode;
163
+ if (!opcodeNumbers.has(opcode)) {
164
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.INVALID_OPCODE);
165
+ }
166
+ if (opcode === 0xe0 || opcode === 0xe1) {
167
+ // RJUMP / RJUMPI
168
+ const target = readInt16(code, ptr + 1) + ptr + 3;
169
+ if (target < 0 || target >= code.length) {
170
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.INVALID_RJUMP);
171
+ }
172
+ successorSet.add(target);
173
+ addJump(target);
174
+ reachableOpcodes.add(target);
175
+ if (opcode === 0xe0) {
176
+ // For RJUMP check that the instruction after RJUMP is reachable
177
+ // If not the case then it is not yet targeted by a forward jump
178
+ // and hence violates the spec
179
+ if (!reachableOpcodes.has(ptr + 3) && ptr + 3 < code.length) {
180
+ // Note: the final condition above ensures that the bytes after ptr are there
181
+ // This is an edge case, if the container ends with RJUMP (which is valid)
182
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.UNREACHABLE_CODE);
183
+ }
184
+ }
185
+ }
186
+ else if (opcode === 0xe2) {
187
+ // RJUMPV
188
+ const tableSize = code[ptr + 1] + 1;
189
+ if (tableSize === undefined) {
190
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.OPCODE_INTERMEDIATES_OOB);
191
+ }
192
+ else if (tableSize === 0) {
193
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.RJUMPV_TABLE_SIZE0);
194
+ }
195
+ if (ptr + tableSize * 2 + 2 >= code.length) {
196
+ // Fall-through case
197
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.OPCODE_INTERMEDIATES_OOB);
198
+ }
199
+ const newPc = ptr + 2 + tableSize * 2;
200
+ for (let i = 0; i < tableSize; i++) {
201
+ const newPtr = ptr + 2 + i * 2;
202
+ // Add the table bytes to intermediates
203
+ addIntermediate(newPtr);
204
+ addIntermediate(newPtr + 1);
205
+ const target = readInt16(code, newPtr) + newPc;
206
+ if (target < 0 || target >= code.length) {
207
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.OPCODE_INTERMEDIATES_OOB);
208
+ }
209
+ successorSet.add(target);
210
+ addJump(target);
211
+ reachableOpcodes.add(target);
212
+ }
213
+ // Special case for RJUMPV: move ptr over the table (the immediate starting byte will be added later)
214
+ // In this special case, add the immediate starting byte
215
+ addIntermediate(ptr + 1);
216
+ ptr += 2 * tableSize + 1;
217
+ }
218
+ else if (opcode === 0xe3 || opcode === 0xe5) {
219
+ // CALLF / JUMPF
220
+ const target = readUint16(code, ptr + 1);
221
+ reachableSections[codeSection].add(target);
222
+ if (target >= container.header.codeSizes.length) {
223
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.INVALID_CALL_TARGET);
224
+ }
225
+ if (opcode === 0xe3) {
226
+ // CALLF
227
+ const targetOutputs = container.body.typeSections[target].outputs;
228
+ const targetInputs = container.body.typeSections[target].inputs;
229
+ if (targetOutputs === 0x80) {
230
+ // CALLF points to non-returning function which is not allowed
231
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.INVALID_CALLF_RETURNING);
232
+ }
233
+ if (minStackCurrent < targetInputs) {
234
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.STACK_UNDERFLOW);
235
+ }
236
+ if (maxStackCurrent + container.body.typeSections[target].maxStackHeight - targetInputs >
237
+ 1024) {
238
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.STACK_OVERFLOW);
239
+ }
240
+ minStackNext += targetOutputs - targetInputs;
241
+ maxStackNext += targetOutputs - targetInputs;
242
+ }
243
+ else {
244
+ // JUMPF
245
+ const currentOutputs = container.body.typeSections[codeSection].outputs;
246
+ const targetOutputs = container.body.typeSections[target].outputs;
247
+ const targetInputs = container.body.typeSections[target].inputs;
248
+ const targetNonReturning = targetOutputs === 0x80;
249
+ if (targetOutputs > currentOutputs && !targetNonReturning) {
250
+ // Spec rule:
251
+ // JUMPF operand must point to a code section with equal or fewer number of outputs as
252
+ // the section in which it resides, or to a section with 0x80 as outputs (non-returning)
253
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.INVALID_JUMPF);
254
+ }
255
+ if (nonReturningFunction && targetOutputs <= 0x7f) {
256
+ // Current function is returning, but target is not, cannot jump into this
257
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.INVALID_RETURNING_SECTION);
258
+ }
259
+ if (targetNonReturning) {
260
+ // Target is returning
261
+ if (minStackCurrent < targetInputs) {
262
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.STACK_UNDERFLOW);
263
+ }
264
+ }
265
+ else {
266
+ // Target is returning
267
+ const expectedStack = currentOutputs + targetInputs - targetOutputs;
268
+ if (!(minStackCurrent === maxStackCurrent && maxStackCurrent === expectedStack)) {
269
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.INVALID_STACK_HEIGHT);
270
+ }
271
+ sectionHasReturningOpcode = true;
272
+ }
273
+ if (maxStackCurrent + container.body.typeSections[target].maxStackHeight - targetInputs >
274
+ 1024) {
275
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.STACK_OVERFLOW);
276
+ }
277
+ }
278
+ }
279
+ else if (opcode === 0xe4) {
280
+ // RETF
281
+ // Stack height must match the outputs of current code section
282
+ const outputs = container.body.typeSections[codeSection].outputs;
283
+ if (!(minStackCurrent === maxStackCurrent && maxStackCurrent === outputs)) {
284
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.INVALID_STACK_HEIGHT);
285
+ }
286
+ sectionHasReturningOpcode = true;
287
+ }
288
+ else if (opcode === 0xe6) {
289
+ // DUPN
290
+ const toDup = code[ptr + 1];
291
+ if (toDup + 1 > minStackCurrent) {
292
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.STACK_UNDERFLOW);
293
+ }
294
+ }
295
+ else if (opcode === 0xe7) {
296
+ // SWAPN
297
+ const toSwap = code[ptr + 1];
298
+ if (toSwap + 2 > minStackCurrent) {
299
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.STACK_UNDERFLOW);
300
+ }
301
+ }
302
+ else if (opcode === 0xe8) {
303
+ // EXCHANGE
304
+ const exchangeRaw = code[ptr + 1];
305
+ const n = (exchangeRaw >> 4) + 1;
306
+ const m = (exchangeRaw & 0x0f) + 1;
307
+ if (n + m + 1 > minStackCurrent) {
308
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.STACK_UNDERFLOW);
309
+ }
310
+ }
311
+ else if (opcode === 0xec) {
312
+ // EOFCREATE
313
+ const target = code[ptr + 1];
314
+ if (target >= container.header.containerSizes.length) {
315
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.INVALID_EOF_CREATE_TARGET);
316
+ }
317
+ if (containerTypeMap.has(target)) {
318
+ if (containerTypeMap.get(target) !== exports.ContainerSectionType.InitCode) {
319
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.CONTAINER_DOUBLE_TYPE);
320
+ }
321
+ }
322
+ containerTypeMap.set(target, exports.ContainerSectionType.InitCode);
323
+ }
324
+ else if (opcode === 0xee) {
325
+ // RETURNCONTRACT
326
+ if (mode !== exports.ContainerSectionType.InitCode) {
327
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.CONTAINER_TYPE_ERROR);
328
+ }
329
+ const target = code[ptr + 1];
330
+ if (target >= container.header.containerSizes.length) {
331
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.INVALID_RETURN_CONTRACT_TARGET);
332
+ }
333
+ if (containerTypeMap.has(target)) {
334
+ if (containerTypeMap.get(target) !== exports.ContainerSectionType.DeploymentCode) {
335
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.CONTAINER_DOUBLE_TYPE);
336
+ }
337
+ }
338
+ containerTypeMap.set(target, exports.ContainerSectionType.DeploymentCode);
339
+ }
340
+ else if (opcode === 0xd1) {
341
+ // DATALOADN
342
+ const dataTarget = readUint16(code, ptr + 1);
343
+ const endOfSlice = dataTarget + 32;
344
+ if (container.header.dataSize < endOfSlice) {
345
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.DATALOADN_OOB);
346
+ }
347
+ }
348
+ else if (opcode === 0x00 || opcode === 0xf3) {
349
+ // STOP / RETURN
350
+ if (mode === exports.ContainerSectionType.InitCode) {
351
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.CONTAINER_TYPE_ERROR);
352
+ }
353
+ }
354
+ // Move ptr forward over any intermediates (if any)
355
+ // Note: for EOF this stackDelta is guaranteed to exist
356
+ const intermediates = stackDelta_ts_1.stackDelta[opcode].intermediates;
357
+ if (intermediates > 0) {
358
+ for (let i = 1; i <= intermediates; i++) {
359
+ addIntermediate(ptr + i);
360
+ }
361
+ ptr += intermediates; // If the opcode has any intermediates, jump over it
362
+ }
363
+ if (ptr >= code.length) {
364
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.OPCODE_INTERMEDIATES_OOB);
365
+ }
366
+ ptr++; // Move to next opcode
367
+ if (stackDelta_ts_1.stackDelta[opcode].terminating === undefined) {
368
+ // If the opcode is not terminating we can add the next opcode to the reachable opcodes
369
+ // It can be reached by sequential instruction flow
370
+ reachableOpcodes.add(ptr);
371
+ // Add next opcode to successorSet
372
+ // NOTE: these are all opcodes except RJUMP
373
+ if (opcode !== 0xe0) {
374
+ successorSet.add(ptr);
375
+ }
376
+ }
377
+ // TODO here validate stack / reachability and stack overflow check
378
+ for (const successor of successorSet) {
379
+ if (successor < ptr) {
380
+ // Reached via backwards jump
381
+ if (stackHeightMin[successor] !== minStackNext ||
382
+ stackHeightMax[successor] !== maxStackNext) {
383
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.UNSTABLE_STACK);
384
+ }
385
+ }
386
+ if (stackHeightMax[successor] === undefined) {
387
+ // Target is seen for first time
388
+ stackHeightMin[successor] = minStackNext;
389
+ stackHeightMax[successor] = maxStackNext;
390
+ }
391
+ else {
392
+ stackHeightMin[successor] = Math.min(stackHeightMin[successor], minStackNext);
393
+ stackHeightMax[successor] = Math.max(stackHeightMax[successor], maxStackNext);
394
+ }
395
+ }
396
+ maxStackHeight = Math.max(maxStackNext, maxStackHeight);
397
+ }
398
+ // Validate that the final opcode terminates
399
+ if (!terminatingOpcodes.has(lastOpcode)) {
400
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.INVALID_TERMINATOR);
401
+ }
402
+ if (container.body.typeSections[codeSection].maxStackHeight !== maxStackHeight) {
403
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.MAX_STACK_HEIGHT_VIOLATION);
404
+ }
405
+ if (maxStackHeight > 1024) {
406
+ // TODO verify if 1023 or 1024 is the right constant
407
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.MAX_STACK_HEIGHT_LIMIT);
408
+ }
409
+ // Validate that if the section is returning, there is a returning opcode
410
+ if (!sectionHasReturningOpcode && !nonReturningFunction) {
411
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.RETURNING_NO_RETURN);
412
+ }
413
+ }
414
+ // Verify that each code section can be reached from code section 0
415
+ const sectionAccumulator = new Set();
416
+ sectionAccumulator.add(0); // 0 is always reachable
417
+ const toCheck = [0];
418
+ while (toCheck.length > 0) {
419
+ const checkArray = reachableSections[toCheck.pop()];
420
+ for (const checkSection of checkArray) {
421
+ if (!sectionAccumulator.has(checkSection)) {
422
+ // Only check the reachable section if
423
+ sectionAccumulator.add(checkSection);
424
+ toCheck.push(checkSection);
425
+ }
426
+ }
427
+ }
428
+ if (sectionAccumulator.size !== container.header.codeSizes.length) {
429
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.UNREACHABLE_CODE_SECTIONS);
430
+ }
431
+ if (containerTypeMap.size !== container.header.containerSizes.length) {
432
+ (0, errors_ts_1.validationError)(errors_ts_1.EOFErrorMessage.UNREACHABLE_CONTAINER_SECTIONS);
433
+ }
434
+ return containerTypeMap;
435
+ }
436
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/eof/verify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ export type EVMErrorType = (typeof EVMErrorMessage)[keyof typeof EVMErrorMessage];
2
+ export declare const EVMErrorTypeString = "EVMError";
3
+ declare const EVMErrorMessage: {
4
+ readonly OUT_OF_GAS: "out of gas";
5
+ readonly CODESTORE_OUT_OF_GAS: "code store out of gas";
6
+ readonly CODESIZE_EXCEEDS_MAXIMUM: "code size to deposit exceeds maximum code size";
7
+ readonly STACK_UNDERFLOW: "stack underflow";
8
+ readonly STACK_OVERFLOW: "stack overflow";
9
+ readonly INVALID_JUMP: "invalid JUMP";
10
+ readonly INVALID_OPCODE: "invalid opcode";
11
+ readonly OUT_OF_RANGE: "value out of range";
12
+ readonly REVERT: "revert";
13
+ readonly STATIC_STATE_CHANGE: "static state change";
14
+ readonly INTERNAL_ERROR: "internal error";
15
+ readonly CREATE_COLLISION: "create collision";
16
+ readonly STOP: "stop";
17
+ readonly REFUND_EXHAUSTED: "refund exhausted";
18
+ readonly VALUE_OVERFLOW: "value overflow";
19
+ readonly INSUFFICIENT_BALANCE: "insufficient balance";
20
+ readonly INVALID_BYTECODE_RESULT: "invalid bytecode deployed";
21
+ readonly INITCODE_SIZE_VIOLATION: "initcode exceeds max initcode size";
22
+ readonly INVALID_INPUT_LENGTH: "invalid input length";
23
+ readonly INVALID_EOF_FORMAT: "invalid EOF format";
24
+ readonly BLS_12_381_INVALID_INPUT_LENGTH: "invalid input length";
25
+ readonly BLS_12_381_POINT_NOT_ON_CURVE: "point not on curve";
26
+ readonly BLS_12_381_INPUT_EMPTY: "input is empty";
27
+ readonly BLS_12_381_FP_NOT_IN_FIELD: "fp point not in field";
28
+ readonly BN254_FP_NOT_IN_FIELD: "fp point not in field";
29
+ readonly INVALID_COMMITMENT: "kzg commitment does not match versioned hash";
30
+ readonly INVALID_INPUTS: "kzg inputs invalid";
31
+ readonly INVALID_PROOF: "kzg proof invalid";
32
+ };
33
+ export declare class EVMError {
34
+ error: EVMErrorType;
35
+ errorType: string;
36
+ static errorMessages: Record<keyof typeof EVMErrorMessage, EVMErrorType>;
37
+ constructor(error: EVMErrorType);
38
+ }
39
+ export {};
40
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAA;AAEjF,eAAO,MAAM,kBAAkB,aAAa,CAAA;AAE5C,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BX,CAAA;AAEV,qBAAa,QAAQ;IACnB,KAAK,EAAE,YAAY,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,OAAO,eAAe,EAAE,YAAY,CAAC,CAAkB;gBAE9E,KAAK,EAAE,YAAY;CAIhC"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EVMError = exports.EVMErrorTypeString = void 0;
4
+ exports.EVMErrorTypeString = 'EVMError';
5
+ const EVMErrorMessage = {
6
+ OUT_OF_GAS: 'out of gas',
7
+ CODESTORE_OUT_OF_GAS: 'code store out of gas',
8
+ CODESIZE_EXCEEDS_MAXIMUM: 'code size to deposit exceeds maximum code size',
9
+ STACK_UNDERFLOW: 'stack underflow',
10
+ STACK_OVERFLOW: 'stack overflow',
11
+ INVALID_JUMP: 'invalid JUMP',
12
+ INVALID_OPCODE: 'invalid opcode',
13
+ OUT_OF_RANGE: 'value out of range',
14
+ REVERT: 'revert',
15
+ STATIC_STATE_CHANGE: 'static state change',
16
+ INTERNAL_ERROR: 'internal error',
17
+ CREATE_COLLISION: 'create collision',
18
+ STOP: 'stop',
19
+ REFUND_EXHAUSTED: 'refund exhausted',
20
+ VALUE_OVERFLOW: 'value overflow',
21
+ INSUFFICIENT_BALANCE: 'insufficient balance',
22
+ INVALID_BYTECODE_RESULT: 'invalid bytecode deployed',
23
+ INITCODE_SIZE_VIOLATION: 'initcode exceeds max initcode size',
24
+ INVALID_INPUT_LENGTH: 'invalid input length',
25
+ INVALID_EOF_FORMAT: 'invalid EOF format',
26
+ BLS_12_381_INVALID_INPUT_LENGTH: 'invalid input length',
27
+ BLS_12_381_POINT_NOT_ON_CURVE: 'point not on curve',
28
+ BLS_12_381_INPUT_EMPTY: 'input is empty',
29
+ BLS_12_381_FP_NOT_IN_FIELD: 'fp point not in field',
30
+ BN254_FP_NOT_IN_FIELD: 'fp point not in field',
31
+ INVALID_COMMITMENT: 'kzg commitment does not match versioned hash',
32
+ INVALID_INPUTS: 'kzg inputs invalid',
33
+ INVALID_PROOF: 'kzg proof invalid',
34
+ };
35
+ class EVMError {
36
+ constructor(error) {
37
+ this.error = error;
38
+ this.errorType = exports.EVMErrorTypeString;
39
+ }
40
+ }
41
+ exports.EVMError = EVMError;
42
+ EVMError.errorMessages = EVMErrorMessage;
43
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":";;;AAEa,QAAA,kBAAkB,GAAG,UAAU,CAAA;AAE5C,MAAM,eAAe,GAAG;IACtB,UAAU,EAAE,YAAY;IACxB,oBAAoB,EAAE,uBAAuB;IAC7C,wBAAwB,EAAE,gDAAgD;IAC1E,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,gBAAgB;IAChC,YAAY,EAAE,oBAAoB;IAClC,MAAM,EAAE,QAAQ;IAChB,mBAAmB,EAAE,qBAAqB;IAC1C,cAAc,EAAE,gBAAgB;IAChC,gBAAgB,EAAE,kBAAkB;IACpC,IAAI,EAAE,MAAM;IACZ,gBAAgB,EAAE,kBAAkB;IACpC,cAAc,EAAE,gBAAgB;IAChC,oBAAoB,EAAE,sBAAsB;IAC5C,uBAAuB,EAAE,2BAA2B;IACpD,uBAAuB,EAAE,oCAAoC;IAC7D,oBAAoB,EAAE,sBAAsB;IAC5C,kBAAkB,EAAE,oBAAoB;IACxC,+BAA+B,EAAE,sBAAsB;IACvD,6BAA6B,EAAE,oBAAoB;IACnD,sBAAsB,EAAE,gBAAgB;IACxC,0BAA0B,EAAE,uBAAuB;IACnD,qBAAqB,EAAE,uBAAuB;IAC9C,kBAAkB,EAAE,8CAA8C;IAClE,cAAc,EAAE,oBAAoB;IACpC,aAAa,EAAE,mBAAmB;CAC1B,CAAA;AAEV,MAAa,QAAQ;IAKnB,YAAY,KAAmB;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,SAAS,GAAG,0BAAkB,CAAA;IACrC,CAAC;;AARH,4BASC;AANQ,sBAAa,GAAuD,eAAe,CAAA"}