@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 @@
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../src/eof/container.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,oBAAoB,EAAc,MAAM,aAAa,CAAA;AAE9D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAYpC,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAA;AAEvF,eAAO,MAAM,gBAAgB;;;;CAInB,CAAA;AAyFV;;GAEG;AACH,cAAM,SAAS;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,UAAU,CAAA;IAElB,OAAO,CAAC,YAAY,CAAU;IAE9B;;;OAGG;gBACS,KAAK,EAAE,UAAU;IAmG7B,QAAQ;IAGR,YAAY;IAMZ,eAAe,CAAC,OAAO,EAAE,MAAM;IAc/B,4BAA4B,CAAC,cAAc,EAAE,MAAM;CAsBpD;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,MAAM,CAAA;CACvB;AAED;;;GAGG;AACH,cAAM,OAAO;IACX,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,YAAY,EAAE,UAAU,EAAE,CAAA;IAC1B,iBAAiB,EAAE,UAAU,EAAE,CAAA;IAC/B,UAAU,EAAE,UAAU,CAAA;IACtB,WAAW,EAAE,UAAU,CAAA;IACvB,MAAM,EAAE,UAAU,CAAA;IAElB,UAAU,CAAC,EAAE,UAAU,CAAA;gBAIrB,GAAG,EAAE,UAAU,EAAE,8GAA8G;IAC/H,MAAM,EAAE,SAAS,EAAE,uCAAuC;IAC1D,OAAO,GAAE,gBAA2C,EAAE,wBAAwB;IAC9E,yBAAyB,UAAQ;IA4FnC,QAAQ;IAGR,IAAI;;;;;IAOJ,YAAY;CAOb;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,MAAM,EAAE,SAAS,CAAA;IACjB,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,UAAU,CAAA;IAClB,OAAO,EAAE,gBAAgB,CAAA;IAEzB;;;;;OAKG;gBAED,GAAG,EAAE,UAAU,EACf,OAAO,GAAE,gBAA2C,EACpD,yBAAyB,UAAQ;CAYpC;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,GAAG,EACR,aAAa,GAAE,oBAAuD,EACtE,OAAO,GAAE,gBAA2C,gBAerD"}
@@ -0,0 +1,375 @@
1
+ import { EthereumJSErrorWithoutCode } from '@feelyourprotocol/util';
2
+ import { CODE_MIN, CODE_SIZE_MIN, CONTAINER_MAX, CONTAINER_MIN, CONTAINER_SIZE_MIN, FORMAT, INPUTS_MAX, KIND_CODE, KIND_CONTAINER, KIND_DATA, KIND_TYPE, MAGIC, MAX_HEADER_SIZE, MAX_STACK_HEIGHT, OUTPUTS_MAX, TERMINATOR, TYPE_DIVISOR, TYPE_MAX, TYPE_MIN, VERSION, } from "./constants.js";
3
+ import { EOFErrorMessage, validationError } from "./errors.js";
4
+ import { ContainerSectionType, verifyCode } from "./verify.js";
5
+ export const EOFContainerMode = {
6
+ Default: 'default', // Default container validation
7
+ Initmode: 'initMode', // Initmode container validation (for subcontainers pointed to by EOFCreate)
8
+ TxInitmode: 'txInitMode', // Tx initmode container validation (for txs deploying EOF contracts)
9
+ };
10
+ // The StreamReader is a helper class to help reading byte arrays
11
+ class StreamReader {
12
+ constructor(stream) {
13
+ this.data = stream;
14
+ this.ptr = 0;
15
+ }
16
+ /**
17
+ * Read `amount` bytes from the stream. Throws when trying to read out of bounds with an optional error string.
18
+ * This also updates the internal pointer
19
+ * @param amount Bytes to read
20
+ * @param errorStr Optional error string to throw when trying to read out-of-bounds
21
+ * @returns The byte array with length `amount`
22
+ */
23
+ readBytes(amount, errorStr) {
24
+ const end = this.ptr + amount;
25
+ if (end > this.data.length) {
26
+ validationError(EOFErrorMessage.OUT_OF_BOUNDS, this.ptr, errorStr);
27
+ }
28
+ const ptr = this.ptr;
29
+ this.ptr += amount;
30
+ return this.data.slice(ptr, end);
31
+ }
32
+ /**
33
+ * Reads an Uint8. Also updates the pointer.
34
+ * @param errorStr Optional error string
35
+ * @returns The uint8
36
+ */
37
+ readUint(errorStr) {
38
+ if (this.ptr >= this.data.length) {
39
+ validationError(EOFErrorMessage.OUT_OF_BOUNDS, this.ptr, errorStr);
40
+ }
41
+ return this.data[this.ptr++];
42
+ }
43
+ /**
44
+ * Verify that the current uint8 pointed to by the pointer is the expected uint8
45
+ * Also updates the pointer
46
+ * @param expect The uint to expect
47
+ * @param errorStr Optional error string when the read uint is not the expected uint
48
+ */
49
+ verifyUint(expect, errorStr) {
50
+ if (this.readUint() !== expect) {
51
+ validationError(EOFErrorMessage.VERIFY_UINT, this.ptr - 1, errorStr);
52
+ }
53
+ }
54
+ /**
55
+ * Same as readUint, except this reads an uint16
56
+ * @param errorStr - Optional error message to include in thrown validation errors
57
+ * @returns Unsigned 16-bit integer read from the stream
58
+ */
59
+ readUint16(errorStr) {
60
+ const end = this.ptr + 2;
61
+ if (end > this.data.length) {
62
+ validationError(EOFErrorMessage.OUT_OF_BOUNDS, this.ptr, errorStr);
63
+ }
64
+ const ptr = this.ptr;
65
+ this.ptr += 2;
66
+ return new DataView(this.data.buffer).getUint16(ptr);
67
+ }
68
+ /**
69
+ * Get the current pointer of the stream
70
+ * @returns The pointer
71
+ */
72
+ getPtr() {
73
+ return this.ptr;
74
+ }
75
+ // Get the remainder bytes of the current stream
76
+ readRemainder() {
77
+ return this.data.slice(this.ptr);
78
+ }
79
+ // Returns `true` if the stream is fully read, or false if there are dangling bytes
80
+ isAtEnd() {
81
+ return this.ptr === this.data.length;
82
+ }
83
+ }
84
+ // TODO add initcode flags (isEOFContract)
85
+ // TODO validation: mark sections as either initcode or runtime code to validate
86
+ /**
87
+ * The EOFHeader, describing the header of the EOF container
88
+ */
89
+ class EOFHeader {
90
+ /**
91
+ * Create an EOF header. Performs various validation checks inside the constructor
92
+ * @param input either a raw header or a complete container
93
+ */
94
+ constructor(input) {
95
+ if (input.length > MAX_HEADER_SIZE) {
96
+ throw EthereumJSErrorWithoutCode('err: container size more than maximum valid size');
97
+ }
98
+ const stream = new StreamReader(input);
99
+ // Verify that the header starts with 0xEF0001
100
+ stream.verifyUint(FORMAT, EOFErrorMessage.FORMAT);
101
+ stream.verifyUint(MAGIC, EOFErrorMessage.MAGIC);
102
+ stream.verifyUint(VERSION, EOFErrorMessage.VERSION);
103
+ if (input.length < 15) {
104
+ throw EthereumJSErrorWithoutCode('err: container size less than minimum valid size');
105
+ }
106
+ // Verify that the types section is present and its length is valid
107
+ stream.verifyUint(KIND_TYPE, EOFErrorMessage.KIND_TYPE);
108
+ const typeSize = stream.readUint16(EOFErrorMessage.TYPE_SIZE);
109
+ if (typeSize < TYPE_MIN) {
110
+ validationError(EOFErrorMessage.INVALID_TYPE_SIZE, typeSize);
111
+ }
112
+ if (typeSize % TYPE_DIVISOR !== 0) {
113
+ validationError(EOFErrorMessage.INVALID_TYPE_SIZE, typeSize);
114
+ }
115
+ if (typeSize > TYPE_MAX) {
116
+ throw EthereumJSErrorWithoutCode(`err: number of code sections must not exceed 1024 (got ${typeSize})`);
117
+ }
118
+ // Verify that the code section is present and its size is valid
119
+ stream.verifyUint(KIND_CODE, EOFErrorMessage.KIND_CODE);
120
+ const codeSize = stream.readUint16(EOFErrorMessage.CODE_SIZE);
121
+ if (codeSize < CODE_MIN) {
122
+ validationError(EOFErrorMessage.MIN_CODE_SECTIONS);
123
+ }
124
+ if (codeSize !== typeSize / TYPE_DIVISOR) {
125
+ validationError(EOFErrorMessage.TYPE_SECTIONS, typeSize / TYPE_DIVISOR, codeSize);
126
+ }
127
+ // Read the actual code sizes in the code section and verify that each section has the minimum size
128
+ const codeSizes = [];
129
+ for (let i = 0; i < codeSize; i++) {
130
+ const codeSectionSize = stream.readUint16(EOFErrorMessage.CODE_SECTION);
131
+ if (codeSectionSize < CODE_SIZE_MIN) {
132
+ validationError(EOFErrorMessage.CODE_SECTION_SIZE);
133
+ }
134
+ codeSizes.push(codeSectionSize);
135
+ }
136
+ // Check if there are container sections
137
+ let nextSection = stream.readUint();
138
+ const containerSizes = [];
139
+ if (nextSection === KIND_CONTAINER) {
140
+ // The optional container section is present, validate that the size is within bounds
141
+ const containerSectionSize = stream.readUint16(EOFErrorMessage.CONTAINER_SIZE);
142
+ if (containerSectionSize < CONTAINER_MIN) {
143
+ validationError(EOFErrorMessage.CONTAINER_SECTION_SIZE);
144
+ }
145
+ if (containerSectionSize > CONTAINER_MAX) {
146
+ validationError(EOFErrorMessage.CONTAINER_SECTION_SIZE);
147
+ }
148
+ // Read the actual container sections and validate that each section has the minimum size
149
+ for (let i = 0; i < containerSectionSize; i++) {
150
+ const containerSize = stream.readUint16(EOFErrorMessage.CONTAINER_SECTION);
151
+ if (containerSize < CONTAINER_SIZE_MIN) {
152
+ validationError(EOFErrorMessage.CONTAINER_SECTION_MIN);
153
+ }
154
+ containerSizes.push(containerSize);
155
+ }
156
+ nextSection = stream.readUint();
157
+ }
158
+ // Verify that the next section is of the data type
159
+ if (nextSection !== KIND_DATA) {
160
+ validationError(EOFErrorMessage.KIND_DATA);
161
+ }
162
+ this.dataSizePtr = stream.getPtr();
163
+ const dataSize = stream.readUint16(EOFErrorMessage.DATA_SIZE);
164
+ // Verify that the header ends with the TERMINATOR byte
165
+ stream.verifyUint(TERMINATOR, EOFErrorMessage.TERMINATOR);
166
+ // Write all values to the header object
167
+ this.typeSize = typeSize;
168
+ this.codeSizes = codeSizes;
169
+ this.containerSizes = containerSizes;
170
+ this.dataSize = dataSize;
171
+ // Slice the input such that `this.buffer` is now the complete header
172
+ // If there are dangling bytes in the stream, this is OK: this is the body section of the container
173
+ this.buffer = input.slice(0, stream.getPtr());
174
+ const relativeOffset = this.buffer.length + this.typeSize;
175
+ // Write the start of the first code section into `codeStartPos`
176
+ // Note: in EVM, if one would set the Program Counter to this byte, it would start executing the bytecode of the first code section
177
+ this.codeStartPos = [relativeOffset];
178
+ }
179
+ sections() {
180
+ return [this.typeSize, this.codeSizes, this.containerSizes, this.dataSize];
181
+ }
182
+ sectionSizes() {
183
+ return [1, this.codeSizes.length, this.containerSizes.length, 1];
184
+ }
185
+ // Returns the code position in the container for the requested section
186
+ // Setting the Program Counter in the EVM to a number of this array would start executing the bytecode of the indexed section
187
+ getCodePosition(section) {
188
+ if (this.codeStartPos[section]) {
189
+ return this.codeStartPos[section];
190
+ }
191
+ const start = this.codeStartPos.length;
192
+ let offset = this.codeStartPos[start - 1];
193
+ for (let i = start; i <= section; i++) {
194
+ offset += this.codeSizes[i - 1];
195
+ this.codeStartPos[i] = offset;
196
+ }
197
+ return offset;
198
+ }
199
+ // Returns the code section for a given program counter position
200
+ getSectionFromProgramCounter(programCounter) {
201
+ const lastIndex = this.codeSizes.length - 1;
202
+ const lastStart = this.getCodePosition(lastIndex);
203
+ const lastEnd = lastStart + this.codeSizes[lastIndex];
204
+ if (programCounter < 0 || programCounter > lastEnd) {
205
+ // If code position is outside the beginning or end of the code sections, return 0
206
+ throw EthereumJSErrorWithoutCode('program counter out of bounds');
207
+ }
208
+ if (this.codeStartPos.length < this.codeSizes.length) {
209
+ this.getCodePosition(this.codeSizes.length - 1); // initialize code positions if uninitialized
210
+ }
211
+ for (let i = 0; i < this.codeSizes.length; i++) {
212
+ if (programCounter < this.codeStartPos[i] + this.codeSizes[i]) {
213
+ // We've found our section if the code position is less than the end of the current code section
214
+ return i;
215
+ }
216
+ }
217
+ // This shouldn't happen so just error
218
+ throw EthereumJSErrorWithoutCode(`Invalid program counter value: ${programCounter}`);
219
+ }
220
+ }
221
+ /**
222
+ * The EOF body holds the contents of the EOF container, such as the code sections (bytecode),
223
+ * the subcontainers (EOF containers to be deployed via EOFCREATE) and the data section
224
+ */
225
+ class EOFBody {
226
+ // and these are used for the CALLDATA in the EVM when trying to create a contract via a transaction, and the deployment code is an EOF container
227
+ constructor(buf, // Buffer of the body. This should be the entire body. It is not valid to pass an entire EOF container in here
228
+ header, // EOFHeader corresponding to this body
229
+ eofMode = EOFContainerMode.Default, // Container mode of EOF
230
+ dataSectionAllowedSmaller = false) {
231
+ const stream = new StreamReader(buf);
232
+ const typeSections = [];
233
+ // Read and parse each type section, and validate that the type section values are within valid bounds
234
+ for (let i = 0; i < header.typeSize / 4; i++) {
235
+ const inputs = stream.readUint(EOFErrorMessage.INPUTS);
236
+ const outputs = stream.readUint(EOFErrorMessage.OUTPUTS);
237
+ const maxStackHeight = stream.readUint16(EOFErrorMessage.MAX_STACK_HEIGHT);
238
+ if (i === 0) {
239
+ if (inputs !== 0) {
240
+ validationError(EOFErrorMessage.CODE0_INPUTS);
241
+ }
242
+ if (outputs !== 0x80) {
243
+ validationError(EOFErrorMessage.CODE0_OUTPUTS);
244
+ }
245
+ }
246
+ if (inputs > INPUTS_MAX) {
247
+ validationError(EOFErrorMessage.MAX_INPUTS, i, inputs);
248
+ }
249
+ if (outputs > OUTPUTS_MAX) {
250
+ validationError(EOFErrorMessage.MAX_OUTPUTS, i, outputs);
251
+ }
252
+ if (maxStackHeight > MAX_STACK_HEIGHT) {
253
+ validationError(EOFErrorMessage.MAX_STACK_HEIGHT_LIMIT, i, maxStackHeight);
254
+ }
255
+ typeSections.push({
256
+ inputs,
257
+ outputs,
258
+ maxStackHeight,
259
+ });
260
+ }
261
+ // Read each code section
262
+ const codeStartPtr = stream.getPtr();
263
+ const codes = [];
264
+ for (const [i, codeSize] of header.codeSizes.entries()) {
265
+ try {
266
+ const code = stream.readBytes(codeSize);
267
+ codes.push(code);
268
+ }
269
+ catch {
270
+ validationError(EOFErrorMessage.CODE_SECTION, i);
271
+ }
272
+ }
273
+ // Write the entire code section to the entireCodeSection
274
+ const entireCodeSection = buf.slice(codeStartPtr, stream.getPtr());
275
+ // Read all raw subcontainers and push those to the containers array
276
+ const containers = [];
277
+ for (const [i, containerSize] of header.containerSizes.entries()) {
278
+ try {
279
+ const container = stream.readBytes(containerSize);
280
+ containers.push(container);
281
+ }
282
+ catch {
283
+ validationError(EOFErrorMessage.CONTAINER_SECTION, i);
284
+ }
285
+ }
286
+ // Data section of the body
287
+ // Note: for EOF containers in Initmode (these are Subcontainers) it is allowed
288
+ // to have a data section of size lower than what is written in the header
289
+ // For details, see "Data section lifecycle" of EIP 7620
290
+ let dataSection;
291
+ // Edge case: deployment code validation
292
+ if (eofMode !== EOFContainerMode.Initmode && !dataSectionAllowedSmaller) {
293
+ dataSection = stream.readBytes(header.dataSize, EOFErrorMessage.DATA_SECTION);
294
+ if (eofMode === EOFContainerMode.Default) {
295
+ if (!stream.isAtEnd()) {
296
+ // If there are dangling bytes in default container mode, this is invalid
297
+ validationError(EOFErrorMessage.DANGLING_BYTES);
298
+ }
299
+ }
300
+ else {
301
+ // Tx init mode: the remaining bytes (if any) are used as CALLDATA in the EVM, in case of a Tx init
302
+ this.txCallData = stream.readRemainder();
303
+ }
304
+ }
305
+ else {
306
+ dataSection = stream.readRemainder();
307
+ if (dataSection.length > header.dataSize) {
308
+ validationError(EOFErrorMessage.DANGLING_BYTES);
309
+ }
310
+ }
311
+ // Write all data to the object
312
+ this.typeSections = typeSections;
313
+ this.codeSections = codes;
314
+ this.containerSections = containers;
315
+ this.entireCode = entireCodeSection;
316
+ this.dataSection = dataSection;
317
+ this.buffer = buf;
318
+ }
319
+ sections() {
320
+ return [this.typeSections, this.codeSections, this.dataSection];
321
+ }
322
+ size() {
323
+ return {
324
+ typeSize: this.typeSections.length,
325
+ codeSize: this.codeSections.length,
326
+ dataSize: this.dataSection.length,
327
+ };
328
+ }
329
+ sectionSizes() {
330
+ return [
331
+ this.typeSections.map(() => 4),
332
+ this.codeSections.map((b) => b.length),
333
+ this.dataSection.length,
334
+ ];
335
+ }
336
+ }
337
+ /**
338
+ * Main constructor for the EOFContainer
339
+ */
340
+ export class EOFContainer {
341
+ /**
342
+ *
343
+ * @param buf Entire container buffer
344
+ * @param eofMode Container mode to validate the container on
345
+ * @param dataSectionAllowedSmaller `true` if the data section is allowed to be smaller than the data section size in the header
346
+ */
347
+ constructor(buf, eofMode = EOFContainerMode.Default, dataSectionAllowedSmaller = false) {
348
+ this.eofMode = eofMode;
349
+ this.header = new EOFHeader(buf);
350
+ this.body = new EOFBody(buf.slice(this.header.buffer.length), this.header, eofMode, dataSectionAllowedSmaller);
351
+ this.buffer = buf;
352
+ }
353
+ }
354
+ /**
355
+ * This method validates the EOF. It also performs deeper validation of the body, such as stack/opcode validation
356
+ * This is ONLY necessary when trying to deploy contracts from a transaction: these can submit containers which are invalid
357
+ * Since all deployed EOF containers are valid by definition, `validateEOF` does not need to be called each time an EOF contract is called
358
+ * @param input Full container buffer
359
+ * @param evm EVM, to read opcodes from
360
+ * @param containerMode Container mode to validate on
361
+ * @param eofMode EOF mode to run in
362
+ * @returns The decoded EOF container
363
+ */
364
+ export function validateEOF(input, evm, containerMode = ContainerSectionType.RuntimeCode, eofMode = EOFContainerMode.Default) {
365
+ const container = new EOFContainer(input, eofMode, containerMode === ContainerSectionType.DeploymentCode);
366
+ const containerMap = verifyCode(container, evm, containerMode);
367
+ // Recursively validate the containerSections
368
+ for (let i = 0; i < container.body.containerSections.length; i++) {
369
+ const subContainer = container.body.containerSections[i];
370
+ const mode = containerMap.get(i);
371
+ validateEOF(subContainer, evm, mode);
372
+ }
373
+ return container;
374
+ }
375
+ //# sourceMappingURL=container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../../../src/eof/container.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ export type EOFErrorMessage = (typeof EOFErrorMessage)[keyof typeof EOFErrorMessage];
2
+ export declare const EOFErrorMessage: {
3
+ readonly OUT_OF_BOUNDS: "Trying to read out of bounds";
4
+ readonly VERIFY_UINT: "Uint does not match expected value ";
5
+ readonly VERIFY_BYTES: "Bytes do not match expected value";
6
+ readonly FORMAT: "err: invalid format";
7
+ readonly MAGIC: "err: invalid magic";
8
+ readonly VERSION: "err: invalid eof version";
9
+ readonly KIND_TYPE: "err: expected kind types";
10
+ readonly KIND_CODE: "err: expected kind code";
11
+ readonly KIND_DATA: "err: expected kind data";
12
+ readonly TERMINATOR: "err: expected terminator";
13
+ readonly TYPE_SIZE: "missing type size";
14
+ readonly INVALID_TYPE_SIZE: "err: type section size invalid";
15
+ readonly CODE_SIZE: "missing code size";
16
+ readonly CODE_SECTION_SIZE: "code section should be at least one byte";
17
+ readonly INVALID_CODE_SIZE: "code size does not match type size";
18
+ readonly DATA_SIZE: "missing data size";
19
+ readonly CONTAINER_SIZE: "missing container size";
20
+ readonly CONTAINER_SECTION_SIZE: "container section should at least contain one section and at most 255 sections";
21
+ readonly TYPE_SECTIONS: "err: mismatch of code sections count and type signatures";
22
+ readonly INPUTS: "expected inputs";
23
+ readonly OUTPUTS: "expected outputs";
24
+ readonly MAX_INPUTS: "inputs exceeds 127, the maximum, got: ";
25
+ readonly MAX_OUTPUTS: "outputs exceeds 127, the maximum, got: ";
26
+ readonly CODE0_INPUTS: "first code section should have 0 inputs";
27
+ readonly CODE0_OUTPUTS: "first code section should have 0x80 (terminating section) outputs";
28
+ readonly MAX_STACK_HEIGHT: "expected maxStackHeight";
29
+ readonly MAX_STACK_HEIGHT_LIMIT: "stack height limit of 1024 exceeded: ";
30
+ readonly MIN_CODE_SECTIONS: "should have at least 1 code section";
31
+ readonly CODE_SECTION: "expected a code section";
32
+ readonly DATA_SECTION: "Expected data section";
33
+ readonly CONTAINER_SECTION: "expected a container section";
34
+ readonly CONTAINER_SECTION_MIN: "container section should be at least 1 byte";
35
+ readonly INVALID_EOF_CREATE_TARGET: "EOFCREATE targets an undefined container";
36
+ readonly INVALID_RETURN_CONTRACT_TARGET: "RETURNCONTRACT targets an undefined container";
37
+ readonly CONTAINER_DOUBLE_TYPE: "Container is targeted by both EOFCREATE and RETURNCONTRACT";
38
+ readonly UNREACHABLE_CONTAINER_SECTIONS: "Unreachable containers (by both EOFCREATE and RETURNCONTRACT)";
39
+ readonly CONTAINER_TYPE_ERROR: "Container contains opcodes which this mode (deployment mode / init code / runtime mode) cannot have";
40
+ readonly DANGLING_BYTES: "got dangling bytes in body";
41
+ readonly INVALID_OPCODE: "invalid opcode";
42
+ readonly INVALID_TERMINATOR: "invalid terminating opcode";
43
+ readonly OPCODE_INTERMEDIATES_OOB: "invalid opcode: intermediates out-of-bounds";
44
+ readonly INVALID_RJUMP: "invalid rjump* target";
45
+ readonly INVALID_CALL_TARGET: "invalid callf/jumpf target";
46
+ readonly INVALID_CALLF_RETURNING: "invalid callf: calls to non-returning function";
47
+ readonly INVALID_STACK_HEIGHT: "invalid stack height";
48
+ readonly INVALID_JUMPF: "invalid jumpf target (output count)";
49
+ readonly INVALID_RETURNING_SECTION: "invalid returning code section: section is not returning";
50
+ readonly RETURNING_NO_RETURN: "invalid section: section should return but has no RETF/JUMP to return";
51
+ readonly RJUMPV_TABLE_SIZE0: "invalid RJUMPV: table size 0";
52
+ readonly UNREACHABLE_CODE_SECTIONS: "unreachable code sections";
53
+ readonly UNREACHABLE_CODE: "unreachable code (by forward jumps)";
54
+ readonly DATALOADN_OOB: "DATALOADN reading out of bounds";
55
+ readonly MAX_STACK_HEIGHT_VIOLATION: "Max stack height does not match the reported max stack height";
56
+ readonly STACK_UNDERFLOW: "Stack underflow";
57
+ readonly STACK_OVERFLOW: "Stack overflow";
58
+ readonly UNSTABLE_STACK: "Unstable stack (can reach stack under/overflow by jumps)";
59
+ readonly RETF_NO_RETURN: "Trying to return to undefined function";
60
+ readonly RETURN_STACK_OVERFLOW: "Return stack overflow";
61
+ readonly INVALID_EXTCALL_TARGET: "invalid extcall target: address > 20 bytes";
62
+ readonly INVALID_RETURN_CONTRACT_DATA_SIZE: "invalid RETURNCONTRACT: data size lower than expected";
63
+ };
64
+ export declare function validationErrorMsg(type: EOFErrorMessage, ...args: any): string;
65
+ export declare function validationError(type: EOFErrorMessage, ...args: any): never;
66
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/eof/errors.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAA;AAEpF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+DlB,CAAA;AAEV,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,IAAI,EAAE,GAAG,UAyDrE;AACD,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,KAAK,CAsF1E"}