@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,432 @@
1
+ import { EOFErrorMessage, validationError } from "./errors.js";
2
+ import { stackDelta } from "./stackDelta.js";
3
+ export const ContainerSectionType = {
4
+ InitCode: 'initCode', // Targeted by EOFCreate
5
+ DeploymentCode: 'deploymentCode', // Targeted by RETURNCONTRACT
6
+ RuntimeCode: 'runtimeCode', // "Default" runtime code
7
+ };
8
+ /**
9
+ * This method validates an EOF container deeply. It will validate the opcodes, validate the stack, and performs
10
+ * various checks such as checking for forbidden opcodes in certain modes, jumps to invalid places, etc.
11
+ * For more information, see "Code validation" of https://github.com/ipsilon/eof/blob/main/spec/eof.md
12
+ * This is a compilation of all the extra validation rules introduced by the various EIPs
13
+ * In particular, the stack validation EIP https://eips.ethereum.org/EIPS/eip-5450 is a big part here
14
+ * @param container EOFContainer to verify
15
+ * @param evm The EVM to run in (pulls opcodes from here)
16
+ * @param mode The validation mode to run in
17
+ * @returns Returns a Map which marks what ContainerSectionType each container is
18
+ * NOTE: this should likely not be a map, since a container section can only be of a single type, not multiple
19
+ */
20
+ export function verifyCode(container, evm, mode = ContainerSectionType.RuntimeCode) {
21
+ return validateOpcodes(container, evm, mode);
22
+ }
23
+ // Helper methods to read Int16s / Uint16s
24
+ function readInt16(code, start) {
25
+ return new DataView(code.buffer).getInt16(start);
26
+ }
27
+ function readUint16(code, start) {
28
+ return new DataView(code.buffer).getUint16(start);
29
+ }
30
+ function validateOpcodes(container, evm, mode = ContainerSectionType.RuntimeCode) {
31
+ // Track the type of the container targets
32
+ // Should at the end of the analysis have all the containers
33
+ const containerTypeMap = new Map();
34
+ // TODO (?) -> stackDelta currently only has active EOF opcodes, can use it directly (?)
35
+ // (so no need to generate the valid opcodeNumbers)
36
+ // Validate each code section
37
+ const opcodes = evm.getActiveOpcodes();
38
+ const opcodeNumbers = new Set();
39
+ for (const [key] of opcodes) {
40
+ opcodeNumbers.add(key);
41
+ }
42
+ // Add INVALID as valid
43
+ opcodeNumbers.add(0xfe);
44
+ // Remove CODESIZE, CODECOPY, EXTCODESIZE, EXTCODECOPY, EXTCODEHASH, GAS
45
+ opcodeNumbers.delete(0x38);
46
+ opcodeNumbers.delete(0x39);
47
+ opcodeNumbers.delete(0x5a);
48
+ opcodeNumbers.delete(0x3b);
49
+ opcodeNumbers.delete(0x3c);
50
+ opcodeNumbers.delete(0x3f);
51
+ // Remove CALLCODE and SELFDESTRUCT
52
+ opcodeNumbers.delete(0xf2);
53
+ opcodeNumbers.delete(0xff);
54
+ // TODO omnibus https://github.com/ipsilon/eof/blob/main/spec/eof.md states
55
+ // JUMP / JUMPI / PC / CREATE / CREATE2 also banned
56
+ // This is not in the EIPs yet
57
+ // Add these opcodes here
58
+ opcodeNumbers.delete(0x56); // JUMP
59
+ opcodeNumbers.delete(0x57); // JUMPI
60
+ opcodeNumbers.delete(0x58); // PC
61
+ opcodeNumbers.delete(0xf0); // CREATE
62
+ opcodeNumbers.delete(0xf5); // CREATE2
63
+ // Note: Name might be misleading since this is the list of opcodes which are OK as final opcodes in a code section
64
+ // TODO if using stackDelta for EOF it is possible to add a "termination" boolean for the opcode to mark it as terminating
65
+ // (so no need to generate this set here)
66
+ const terminatingOpcodes = new Set();
67
+ terminatingOpcodes.add(0x00); // STOP
68
+ terminatingOpcodes.add(0xf3); // RETURN
69
+ terminatingOpcodes.add(0xfd); // REVERT
70
+ terminatingOpcodes.add(0xfe); // INVALID
71
+ terminatingOpcodes.add(0xee); // RETURNCONTRACT
72
+ terminatingOpcodes.add(0xe4); // RETF
73
+ terminatingOpcodes.add(0xe5); // JUMPF
74
+ terminatingOpcodes.add(0xe0); // RJUMPing back into code section is OK
75
+ for (const opcode of terminatingOpcodes) {
76
+ if (!opcodeNumbers.has(opcode)) {
77
+ terminatingOpcodes.delete(opcode);
78
+ }
79
+ }
80
+ const validJumps = new Set();
81
+ // Add all reachable code sections
82
+ const reachableSections = {};
83
+ let codeSection = -1;
84
+ for (const code of container.body.codeSections) {
85
+ // Track the intermediate bytes
86
+ const intermediateBytes = new Set();
87
+ // Track the jump locations (for forward jumps it is unknown at the first pass if the byte is intermediate)
88
+ const jumpLocations = new Set();
89
+ function addJump(location) {
90
+ if (intermediateBytes.has(location)) {
91
+ // When trying to JUMP into an intermediate byte: this is invalid
92
+ validationError(EOFErrorMessage.INVALID_RJUMP);
93
+ }
94
+ jumpLocations.add(location);
95
+ }
96
+ function addIntermediate(location) {
97
+ if (jumpLocations.has(location)) {
98
+ // When trying to add an intermediate to a location already JUMPed to: this is invalid
99
+ validationError(EOFErrorMessage.INVALID_RJUMP);
100
+ }
101
+ intermediateBytes.add(location);
102
+ }
103
+ codeSection++;
104
+ reachableSections[codeSection] = new Set();
105
+ // Section is marked as "non-returning": it does never "return" to another code section
106
+ // it rather exits the current EVM call frame
107
+ const nonReturningFunction = container.body.typeSections[codeSection].outputs === 0x80;
108
+ // Boolean flag to mark if this section has a returning opcode:
109
+ // RETF
110
+ // Or JUMPF into a returning section
111
+ // Each returning section should contain a returning opcode
112
+ let sectionHasReturningOpcode = false;
113
+ // Tracking set of reachable opcodes
114
+ const reachableOpcodes = new Set();
115
+ reachableOpcodes.add(0);
116
+ // Validate that each opcode is defined
117
+ let ptr = 0;
118
+ let lastOpcode = 0; // Note: code sections cannot be empty, so this number will always be set
119
+ // Implement the EIP 5450 stack validation algorithm
120
+ const inputs = container.body.typeSections[codeSection].inputs;
121
+ let maxStackHeight = inputs;
122
+ // These arrays track the min/max stack height **before** executing the instruction
123
+ const stackHeightMin = [inputs];
124
+ const stackHeightMax = [inputs];
125
+ // Loop over the entire code section and validate various rules
126
+ // For (most) validation rules, see https://github.com/ipsilon/eof/blob/main/spec/eof.md
127
+ // For all validation rules per opcode, find the corresponding EIP, the rules are there
128
+ while (ptr < code.length) {
129
+ // Tracks the successor opcodes of this opcode (for stack purposes)
130
+ const successorSet = new Set();
131
+ // ReachableOpcodes: this can likely be deleted after implementing the 5450 algorithm
132
+ if (!reachableOpcodes.has(ptr)) {
133
+ validationError(EOFErrorMessage.UNREACHABLE_CODE);
134
+ }
135
+ if (stackHeightMin[ptr] === undefined || stackHeightMax[ptr] === undefined) {
136
+ // Code is either unreachable or only reachable via a backwards jump
137
+ validationError(EOFErrorMessage.UNREACHABLE_CODE);
138
+ }
139
+ validJumps.add(ptr);
140
+ const opcode = code[ptr];
141
+ const minStackCurrent = stackHeightMin[ptr];
142
+ const maxStackCurrent = stackHeightMax[ptr];
143
+ const opcodeInputs = stackDelta[opcode].inputs;
144
+ const opcodeOutputs = stackDelta[opcode].outputs;
145
+ if (minStackCurrent - opcodeInputs < 0) {
146
+ validationError(EOFErrorMessage.STACK_UNDERFLOW);
147
+ }
148
+ const delta = opcodeOutputs - opcodeInputs;
149
+ let minStackNext = minStackCurrent + delta;
150
+ let maxStackNext = maxStackCurrent + delta;
151
+ if (maxStackNext > 1024) {
152
+ // TODO verify if 1023 or 1024 is the right constant
153
+ validationError(EOFErrorMessage.STACK_OVERFLOW);
154
+ }
155
+ if (nonReturningFunction && opcode === 0xe4) {
156
+ validationError(EOFErrorMessage.INVALID_RETURNING_SECTION);
157
+ }
158
+ lastOpcode = opcode;
159
+ if (!opcodeNumbers.has(opcode)) {
160
+ validationError(EOFErrorMessage.INVALID_OPCODE);
161
+ }
162
+ if (opcode === 0xe0 || opcode === 0xe1) {
163
+ // RJUMP / RJUMPI
164
+ const target = readInt16(code, ptr + 1) + ptr + 3;
165
+ if (target < 0 || target >= code.length) {
166
+ validationError(EOFErrorMessage.INVALID_RJUMP);
167
+ }
168
+ successorSet.add(target);
169
+ addJump(target);
170
+ reachableOpcodes.add(target);
171
+ if (opcode === 0xe0) {
172
+ // For RJUMP check that the instruction after RJUMP is reachable
173
+ // If not the case then it is not yet targeted by a forward jump
174
+ // and hence violates the spec
175
+ if (!reachableOpcodes.has(ptr + 3) && ptr + 3 < code.length) {
176
+ // Note: the final condition above ensures that the bytes after ptr are there
177
+ // This is an edge case, if the container ends with RJUMP (which is valid)
178
+ validationError(EOFErrorMessage.UNREACHABLE_CODE);
179
+ }
180
+ }
181
+ }
182
+ else if (opcode === 0xe2) {
183
+ // RJUMPV
184
+ const tableSize = code[ptr + 1] + 1;
185
+ if (tableSize === undefined) {
186
+ validationError(EOFErrorMessage.OPCODE_INTERMEDIATES_OOB);
187
+ }
188
+ else if (tableSize === 0) {
189
+ validationError(EOFErrorMessage.RJUMPV_TABLE_SIZE0);
190
+ }
191
+ if (ptr + tableSize * 2 + 2 >= code.length) {
192
+ // Fall-through case
193
+ validationError(EOFErrorMessage.OPCODE_INTERMEDIATES_OOB);
194
+ }
195
+ const newPc = ptr + 2 + tableSize * 2;
196
+ for (let i = 0; i < tableSize; i++) {
197
+ const newPtr = ptr + 2 + i * 2;
198
+ // Add the table bytes to intermediates
199
+ addIntermediate(newPtr);
200
+ addIntermediate(newPtr + 1);
201
+ const target = readInt16(code, newPtr) + newPc;
202
+ if (target < 0 || target >= code.length) {
203
+ validationError(EOFErrorMessage.OPCODE_INTERMEDIATES_OOB);
204
+ }
205
+ successorSet.add(target);
206
+ addJump(target);
207
+ reachableOpcodes.add(target);
208
+ }
209
+ // Special case for RJUMPV: move ptr over the table (the immediate starting byte will be added later)
210
+ // In this special case, add the immediate starting byte
211
+ addIntermediate(ptr + 1);
212
+ ptr += 2 * tableSize + 1;
213
+ }
214
+ else if (opcode === 0xe3 || opcode === 0xe5) {
215
+ // CALLF / JUMPF
216
+ const target = readUint16(code, ptr + 1);
217
+ reachableSections[codeSection].add(target);
218
+ if (target >= container.header.codeSizes.length) {
219
+ validationError(EOFErrorMessage.INVALID_CALL_TARGET);
220
+ }
221
+ if (opcode === 0xe3) {
222
+ // CALLF
223
+ const targetOutputs = container.body.typeSections[target].outputs;
224
+ const targetInputs = container.body.typeSections[target].inputs;
225
+ if (targetOutputs === 0x80) {
226
+ // CALLF points to non-returning function which is not allowed
227
+ validationError(EOFErrorMessage.INVALID_CALLF_RETURNING);
228
+ }
229
+ if (minStackCurrent < targetInputs) {
230
+ validationError(EOFErrorMessage.STACK_UNDERFLOW);
231
+ }
232
+ if (maxStackCurrent + container.body.typeSections[target].maxStackHeight - targetInputs >
233
+ 1024) {
234
+ validationError(EOFErrorMessage.STACK_OVERFLOW);
235
+ }
236
+ minStackNext += targetOutputs - targetInputs;
237
+ maxStackNext += targetOutputs - targetInputs;
238
+ }
239
+ else {
240
+ // JUMPF
241
+ const currentOutputs = container.body.typeSections[codeSection].outputs;
242
+ const targetOutputs = container.body.typeSections[target].outputs;
243
+ const targetInputs = container.body.typeSections[target].inputs;
244
+ const targetNonReturning = targetOutputs === 0x80;
245
+ if (targetOutputs > currentOutputs && !targetNonReturning) {
246
+ // Spec rule:
247
+ // JUMPF operand must point to a code section with equal or fewer number of outputs as
248
+ // the section in which it resides, or to a section with 0x80 as outputs (non-returning)
249
+ validationError(EOFErrorMessage.INVALID_JUMPF);
250
+ }
251
+ if (nonReturningFunction && targetOutputs <= 0x7f) {
252
+ // Current function is returning, but target is not, cannot jump into this
253
+ validationError(EOFErrorMessage.INVALID_RETURNING_SECTION);
254
+ }
255
+ if (targetNonReturning) {
256
+ // Target is returning
257
+ if (minStackCurrent < targetInputs) {
258
+ validationError(EOFErrorMessage.STACK_UNDERFLOW);
259
+ }
260
+ }
261
+ else {
262
+ // Target is returning
263
+ const expectedStack = currentOutputs + targetInputs - targetOutputs;
264
+ if (!(minStackCurrent === maxStackCurrent && maxStackCurrent === expectedStack)) {
265
+ validationError(EOFErrorMessage.INVALID_STACK_HEIGHT);
266
+ }
267
+ sectionHasReturningOpcode = true;
268
+ }
269
+ if (maxStackCurrent + container.body.typeSections[target].maxStackHeight - targetInputs >
270
+ 1024) {
271
+ validationError(EOFErrorMessage.STACK_OVERFLOW);
272
+ }
273
+ }
274
+ }
275
+ else if (opcode === 0xe4) {
276
+ // RETF
277
+ // Stack height must match the outputs of current code section
278
+ const outputs = container.body.typeSections[codeSection].outputs;
279
+ if (!(minStackCurrent === maxStackCurrent && maxStackCurrent === outputs)) {
280
+ validationError(EOFErrorMessage.INVALID_STACK_HEIGHT);
281
+ }
282
+ sectionHasReturningOpcode = true;
283
+ }
284
+ else if (opcode === 0xe6) {
285
+ // DUPN
286
+ const toDup = code[ptr + 1];
287
+ if (toDup + 1 > minStackCurrent) {
288
+ validationError(EOFErrorMessage.STACK_UNDERFLOW);
289
+ }
290
+ }
291
+ else if (opcode === 0xe7) {
292
+ // SWAPN
293
+ const toSwap = code[ptr + 1];
294
+ if (toSwap + 2 > minStackCurrent) {
295
+ validationError(EOFErrorMessage.STACK_UNDERFLOW);
296
+ }
297
+ }
298
+ else if (opcode === 0xe8) {
299
+ // EXCHANGE
300
+ const exchangeRaw = code[ptr + 1];
301
+ const n = (exchangeRaw >> 4) + 1;
302
+ const m = (exchangeRaw & 0x0f) + 1;
303
+ if (n + m + 1 > minStackCurrent) {
304
+ validationError(EOFErrorMessage.STACK_UNDERFLOW);
305
+ }
306
+ }
307
+ else if (opcode === 0xec) {
308
+ // EOFCREATE
309
+ const target = code[ptr + 1];
310
+ if (target >= container.header.containerSizes.length) {
311
+ validationError(EOFErrorMessage.INVALID_EOF_CREATE_TARGET);
312
+ }
313
+ if (containerTypeMap.has(target)) {
314
+ if (containerTypeMap.get(target) !== ContainerSectionType.InitCode) {
315
+ validationError(EOFErrorMessage.CONTAINER_DOUBLE_TYPE);
316
+ }
317
+ }
318
+ containerTypeMap.set(target, ContainerSectionType.InitCode);
319
+ }
320
+ else if (opcode === 0xee) {
321
+ // RETURNCONTRACT
322
+ if (mode !== ContainerSectionType.InitCode) {
323
+ validationError(EOFErrorMessage.CONTAINER_TYPE_ERROR);
324
+ }
325
+ const target = code[ptr + 1];
326
+ if (target >= container.header.containerSizes.length) {
327
+ validationError(EOFErrorMessage.INVALID_RETURN_CONTRACT_TARGET);
328
+ }
329
+ if (containerTypeMap.has(target)) {
330
+ if (containerTypeMap.get(target) !== ContainerSectionType.DeploymentCode) {
331
+ validationError(EOFErrorMessage.CONTAINER_DOUBLE_TYPE);
332
+ }
333
+ }
334
+ containerTypeMap.set(target, ContainerSectionType.DeploymentCode);
335
+ }
336
+ else if (opcode === 0xd1) {
337
+ // DATALOADN
338
+ const dataTarget = readUint16(code, ptr + 1);
339
+ const endOfSlice = dataTarget + 32;
340
+ if (container.header.dataSize < endOfSlice) {
341
+ validationError(EOFErrorMessage.DATALOADN_OOB);
342
+ }
343
+ }
344
+ else if (opcode === 0x00 || opcode === 0xf3) {
345
+ // STOP / RETURN
346
+ if (mode === ContainerSectionType.InitCode) {
347
+ validationError(EOFErrorMessage.CONTAINER_TYPE_ERROR);
348
+ }
349
+ }
350
+ // Move ptr forward over any intermediates (if any)
351
+ // Note: for EOF this stackDelta is guaranteed to exist
352
+ const intermediates = stackDelta[opcode].intermediates;
353
+ if (intermediates > 0) {
354
+ for (let i = 1; i <= intermediates; i++) {
355
+ addIntermediate(ptr + i);
356
+ }
357
+ ptr += intermediates; // If the opcode has any intermediates, jump over it
358
+ }
359
+ if (ptr >= code.length) {
360
+ validationError(EOFErrorMessage.OPCODE_INTERMEDIATES_OOB);
361
+ }
362
+ ptr++; // Move to next opcode
363
+ if (stackDelta[opcode].terminating === undefined) {
364
+ // If the opcode is not terminating we can add the next opcode to the reachable opcodes
365
+ // It can be reached by sequential instruction flow
366
+ reachableOpcodes.add(ptr);
367
+ // Add next opcode to successorSet
368
+ // NOTE: these are all opcodes except RJUMP
369
+ if (opcode !== 0xe0) {
370
+ successorSet.add(ptr);
371
+ }
372
+ }
373
+ // TODO here validate stack / reachability and stack overflow check
374
+ for (const successor of successorSet) {
375
+ if (successor < ptr) {
376
+ // Reached via backwards jump
377
+ if (stackHeightMin[successor] !== minStackNext ||
378
+ stackHeightMax[successor] !== maxStackNext) {
379
+ validationError(EOFErrorMessage.UNSTABLE_STACK);
380
+ }
381
+ }
382
+ if (stackHeightMax[successor] === undefined) {
383
+ // Target is seen for first time
384
+ stackHeightMin[successor] = minStackNext;
385
+ stackHeightMax[successor] = maxStackNext;
386
+ }
387
+ else {
388
+ stackHeightMin[successor] = Math.min(stackHeightMin[successor], minStackNext);
389
+ stackHeightMax[successor] = Math.max(stackHeightMax[successor], maxStackNext);
390
+ }
391
+ }
392
+ maxStackHeight = Math.max(maxStackNext, maxStackHeight);
393
+ }
394
+ // Validate that the final opcode terminates
395
+ if (!terminatingOpcodes.has(lastOpcode)) {
396
+ validationError(EOFErrorMessage.INVALID_TERMINATOR);
397
+ }
398
+ if (container.body.typeSections[codeSection].maxStackHeight !== maxStackHeight) {
399
+ validationError(EOFErrorMessage.MAX_STACK_HEIGHT_VIOLATION);
400
+ }
401
+ if (maxStackHeight > 1024) {
402
+ // TODO verify if 1023 or 1024 is the right constant
403
+ validationError(EOFErrorMessage.MAX_STACK_HEIGHT_LIMIT);
404
+ }
405
+ // Validate that if the section is returning, there is a returning opcode
406
+ if (!sectionHasReturningOpcode && !nonReturningFunction) {
407
+ validationError(EOFErrorMessage.RETURNING_NO_RETURN);
408
+ }
409
+ }
410
+ // Verify that each code section can be reached from code section 0
411
+ const sectionAccumulator = new Set();
412
+ sectionAccumulator.add(0); // 0 is always reachable
413
+ const toCheck = [0];
414
+ while (toCheck.length > 0) {
415
+ const checkArray = reachableSections[toCheck.pop()];
416
+ for (const checkSection of checkArray) {
417
+ if (!sectionAccumulator.has(checkSection)) {
418
+ // Only check the reachable section if
419
+ sectionAccumulator.add(checkSection);
420
+ toCheck.push(checkSection);
421
+ }
422
+ }
423
+ }
424
+ if (sectionAccumulator.size !== container.header.codeSizes.length) {
425
+ validationError(EOFErrorMessage.UNREACHABLE_CODE_SECTIONS);
426
+ }
427
+ if (containerTypeMap.size !== container.header.containerSizes.length) {
428
+ validationError(EOFErrorMessage.UNREACHABLE_CONTAINER_SECTIONS);
429
+ }
430
+ return containerTypeMap;
431
+ }
432
+ //# 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,39 @@
1
+ export const EVMErrorTypeString = 'EVMError';
2
+ const EVMErrorMessage = {
3
+ OUT_OF_GAS: 'out of gas',
4
+ CODESTORE_OUT_OF_GAS: 'code store out of gas',
5
+ CODESIZE_EXCEEDS_MAXIMUM: 'code size to deposit exceeds maximum code size',
6
+ STACK_UNDERFLOW: 'stack underflow',
7
+ STACK_OVERFLOW: 'stack overflow',
8
+ INVALID_JUMP: 'invalid JUMP',
9
+ INVALID_OPCODE: 'invalid opcode',
10
+ OUT_OF_RANGE: 'value out of range',
11
+ REVERT: 'revert',
12
+ STATIC_STATE_CHANGE: 'static state change',
13
+ INTERNAL_ERROR: 'internal error',
14
+ CREATE_COLLISION: 'create collision',
15
+ STOP: 'stop',
16
+ REFUND_EXHAUSTED: 'refund exhausted',
17
+ VALUE_OVERFLOW: 'value overflow',
18
+ INSUFFICIENT_BALANCE: 'insufficient balance',
19
+ INVALID_BYTECODE_RESULT: 'invalid bytecode deployed',
20
+ INITCODE_SIZE_VIOLATION: 'initcode exceeds max initcode size',
21
+ INVALID_INPUT_LENGTH: 'invalid input length',
22
+ INVALID_EOF_FORMAT: 'invalid EOF format',
23
+ BLS_12_381_INVALID_INPUT_LENGTH: 'invalid input length',
24
+ BLS_12_381_POINT_NOT_ON_CURVE: 'point not on curve',
25
+ BLS_12_381_INPUT_EMPTY: 'input is empty',
26
+ BLS_12_381_FP_NOT_IN_FIELD: 'fp point not in field',
27
+ BN254_FP_NOT_IN_FIELD: 'fp point not in field',
28
+ INVALID_COMMITMENT: 'kzg commitment does not match versioned hash',
29
+ INVALID_INPUTS: 'kzg inputs invalid',
30
+ INVALID_PROOF: 'kzg proof invalid',
31
+ };
32
+ export class EVMError {
33
+ constructor(error) {
34
+ this.error = error;
35
+ this.errorType = EVMErrorTypeString;
36
+ }
37
+ }
38
+ EVMError.errorMessages = EVMErrorMessage;
39
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,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,MAAM,OAAO,QAAQ;IAKnB,YAAY,KAAmB;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,SAAS,GAAG,kBAAkB,CAAA;IACrC,CAAC;;AALM,sBAAa,GAAuD,eAAe,CAAA"}