@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,71 @@
1
+ import { EthereumJSErrorWithoutCode, concatBytes } from '@feelyourprotocol/util';
2
+ const ceil = (value, ceiling) => {
3
+ const r = value % ceiling;
4
+ if (r === 0) {
5
+ return value;
6
+ }
7
+ else {
8
+ return value + ceiling - r;
9
+ }
10
+ };
11
+ const CONTAINER_SIZE = 8192;
12
+ /**
13
+ * Memory implements a simple memory model
14
+ * for the ethereum virtual machine.
15
+ */
16
+ export class Memory {
17
+ constructor() {
18
+ this._store = new Uint8Array(CONTAINER_SIZE);
19
+ }
20
+ /**
21
+ * Extends the memory given an offset and size. Rounds extended
22
+ * memory to word-size.
23
+ */
24
+ extend(offset, size) {
25
+ if (size === 0) {
26
+ return;
27
+ }
28
+ const newSize = ceil(offset + size, 32);
29
+ const sizeDiff = newSize - this._store.length;
30
+ if (sizeDiff > 0) {
31
+ const expandBy = Math.ceil(sizeDiff / CONTAINER_SIZE) * CONTAINER_SIZE;
32
+ this._store = concatBytes(this._store, new Uint8Array(expandBy));
33
+ }
34
+ }
35
+ /**
36
+ * Writes a byte array with length `size` to memory, starting from `offset`.
37
+ * @param offset - Starting position
38
+ * @param size - How many bytes to write
39
+ * @param value - Value
40
+ */
41
+ write(offset, size, value) {
42
+ if (size === 0) {
43
+ return;
44
+ }
45
+ this.extend(offset, size);
46
+ if (value.length !== size)
47
+ throw EthereumJSErrorWithoutCode('Invalid value size');
48
+ if (offset + size > this._store.length)
49
+ throw EthereumJSErrorWithoutCode('Value exceeds memory capacity');
50
+ this._store.set(value, offset);
51
+ }
52
+ /**
53
+ * Reads a slice of memory from `offset` till `offset + size` as a `Uint8Array`.
54
+ * It fills up the difference between memory's length and `offset + size` with zeros.
55
+ * @param offset - Starting position
56
+ * @param size - How many bytes to read
57
+ * @param avoidCopy - Avoid memory copy if possible for performance reasons (optional)
58
+ */
59
+ read(offset, size, avoidCopy) {
60
+ this.extend(offset, size);
61
+ const loaded = this._store.subarray(offset, offset + size);
62
+ if (avoidCopy === true) {
63
+ return loaded;
64
+ }
65
+ const returnBytes = new Uint8Array(size);
66
+ // Copy the stored "buffer" from memory into the return Uint8Array
67
+ returnBytes.set(loaded);
68
+ return returnBytes;
69
+ }
70
+ }
71
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE1E,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,OAAe,EAAU,EAAE;IACtD,MAAM,CAAC,GAAG,KAAK,GAAG,OAAO,CAAA;IACzB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACZ,OAAO,KAAK,CAAA;IACd,CAAC;SAAM,CAAC;QACN,OAAO,KAAK,GAAG,OAAO,GAAG,CAAC,CAAA;IAC5B,CAAC;AACH,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,IAAI,CAAA;AAE3B;;;GAGG;AACH,MAAM,OAAO,MAAM;IAGjB;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,cAAc,CAAC,CAAA;IAC9C,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,MAAc,EAAE,IAAY;QACjC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,OAAM;QACR,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,EAAE,CAAC,CAAA;QACvC,MAAM,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA;QAC7C,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,GAAG,cAAc,CAAA;YACtE,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAA;QAClE,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAc,EAAE,IAAY,EAAE,KAAiB;QACnD,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,OAAM;QACR,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAEzB,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI;YAAE,MAAM,0BAA0B,CAAC,oBAAoB,CAAC,CAAA;QACjF,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;YACpC,MAAM,0BAA0B,CAAC,+BAA+B,CAAC,CAAA;QAEnE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAChC,CAAC;IAED;;;;;;OAMG;IACH,IAAI,CAAC,MAAc,EAAE,IAAY,EAAE,SAAmB;QACpD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAA4B,CAAA;QACrF,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,OAAO,MAAM,CAAA;QACf,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;QACxC,kEAAkE;QAClE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAEvB,OAAO,WAAW,CAAA;IACpB,CAAC;CACF"}
@@ -0,0 +1,70 @@
1
+ import type { BinaryTreeAccessWitnessInterface } from '@feelyourprotocol/common';
2
+ import type { Address, PrefixedHexString } from '@feelyourprotocol/util';
3
+ import type { PrecompileFunc } from './precompiles/index.ts';
4
+ import type { EOFEnv, SelfdestructMap } from './types.ts';
5
+ interface MessageOpts {
6
+ to?: Address;
7
+ value?: bigint;
8
+ caller?: Address;
9
+ gasLimit: bigint;
10
+ data?: Uint8Array;
11
+ eofCallData?: Uint8Array;
12
+ depth?: number;
13
+ code?: Uint8Array | PrecompileFunc;
14
+ codeAddress?: Address;
15
+ isStatic?: boolean;
16
+ isCompiled?: boolean;
17
+ salt?: Uint8Array;
18
+ /**
19
+ * Selfdestructed addresses mapped to their beneficiary, see {@link Message.selfdestruct}
20
+ */
21
+ selfdestruct?: SelfdestructMap;
22
+ /**
23
+ * Map of addresses which were created (used in EIP 6780)
24
+ */
25
+ createdAddresses?: Set<PrefixedHexString>;
26
+ delegatecall?: boolean;
27
+ gasRefund?: bigint;
28
+ blobVersionedHashes?: PrefixedHexString[];
29
+ accessWitness?: BinaryTreeAccessWitnessInterface;
30
+ }
31
+ export declare class Message {
32
+ to?: Address;
33
+ value: bigint;
34
+ caller: Address;
35
+ gasLimit: bigint;
36
+ data: Uint8Array;
37
+ eofCallData?: Uint8Array;
38
+ isCreate?: boolean;
39
+ depth: number;
40
+ code?: Uint8Array | PrecompileFunc;
41
+ _codeAddress?: Address;
42
+ isStatic: boolean;
43
+ isCompiled: boolean;
44
+ salt?: Uint8Array;
45
+ eof?: EOFEnv;
46
+ chargeCodeAccesses?: boolean;
47
+ /**
48
+ * Selfdestructed addresses mapped to their beneficiary.
49
+ */
50
+ selfdestruct?: SelfdestructMap;
51
+ /**
52
+ * Map of addresses which were created (used in EIP 6780)
53
+ */
54
+ createdAddresses?: Set<PrefixedHexString>;
55
+ delegatecall: boolean;
56
+ gasRefund: bigint;
57
+ /**
58
+ * List of versioned hashes if message is a blob transaction in the outer VM
59
+ */
60
+ blobVersionedHashes?: PrefixedHexString[];
61
+ accessWitness?: BinaryTreeAccessWitnessInterface;
62
+ constructor(opts: MessageOpts);
63
+ /**
64
+ * Note: should only be called in instances where `_codeAddress` or `to` is defined.
65
+ */
66
+ get codeAddress(): Address;
67
+ }
68
+ export type MessageWithTo = Message & Pick<Required<MessageOpts>, 'to'>;
69
+ export {};
70
+ //# sourceMappingURL=message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/message.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAA;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAazD,UAAU,WAAW;IACnB,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,WAAW,CAAC,EAAE,UAAU,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,UAAU,GAAG,cAAc,CAAA;IAClC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB;;OAEG;IACH,YAAY,CAAC,EAAE,eAAe,CAAA;IAC9B;;OAEG;IACH,gBAAgB,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAA;IACzC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mBAAmB,CAAC,EAAE,iBAAiB,EAAE,CAAA;IACzC,aAAa,CAAC,EAAE,gCAAgC,CAAA;CACjD;AAED,qBAAa,OAAO;IAClB,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,UAAU,CAAA;IAChB,WAAW,CAAC,EAAE,UAAU,CAAA;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,UAAU,GAAG,cAAc,CAAA;IAClC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;OAEG;IACH,YAAY,CAAC,EAAE,eAAe,CAAA;IAC9B;;OAEG;IACH,gBAAgB,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAA;IACzC,YAAY,EAAE,OAAO,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,mBAAmB,CAAC,EAAE,iBAAiB,EAAE,CAAA;IACzC,aAAa,CAAC,EAAE,gCAAgC,CAAA;gBAEpC,IAAI,EAAE,WAAW;IAwB7B;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAMzB;CACF;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAA"}
@@ -0,0 +1,47 @@
1
+ import { BIGINT_0, EthereumJSErrorWithoutCode, createZeroAddress } from '@feelyourprotocol/util';
2
+ const defaults = {
3
+ value: BIGINT_0,
4
+ caller: createZeroAddress(),
5
+ data: new Uint8Array(0),
6
+ depth: 0,
7
+ isStatic: false,
8
+ isCompiled: false,
9
+ delegatecall: false,
10
+ gasRefund: BIGINT_0,
11
+ };
12
+ export class Message {
13
+ constructor(opts) {
14
+ this.to = opts.to;
15
+ this.value = opts.value ?? defaults.value;
16
+ this.caller = opts.caller ?? defaults.caller;
17
+ this.gasLimit = opts.gasLimit;
18
+ this.data = opts.data ?? defaults.data;
19
+ this.eofCallData = opts.eofCallData;
20
+ this.depth = opts.depth ?? defaults.depth;
21
+ this.code = opts.code;
22
+ this._codeAddress = opts.codeAddress;
23
+ this.isStatic = opts.isStatic ?? defaults.isStatic;
24
+ this.isCompiled = opts.isCompiled ?? defaults.isCompiled;
25
+ this.salt = opts.salt;
26
+ this.selfdestruct = opts.selfdestruct;
27
+ this.createdAddresses = opts.createdAddresses;
28
+ this.delegatecall = opts.delegatecall ?? defaults.delegatecall;
29
+ this.gasRefund = opts.gasRefund ?? defaults.gasRefund;
30
+ this.blobVersionedHashes = opts.blobVersionedHashes;
31
+ this.accessWitness = opts.accessWitness;
32
+ if (this.value < 0) {
33
+ throw EthereumJSErrorWithoutCode(`value field cannot be negative, received ${this.value}`);
34
+ }
35
+ }
36
+ /**
37
+ * Note: should only be called in instances where `_codeAddress` or `to` is defined.
38
+ */
39
+ get codeAddress() {
40
+ const codeAddress = this._codeAddress ?? this.to;
41
+ if (!codeAddress) {
42
+ throw EthereumJSErrorWithoutCode('Missing codeAddress');
43
+ }
44
+ return codeAddress;
45
+ }
46
+ }
47
+ //# sourceMappingURL=message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAO1F,MAAM,QAAQ,GAAG;IACf,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,iBAAiB,EAAE;IAC3B,IAAI,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC;IACvB,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,KAAK;IACf,UAAU,EAAE,KAAK;IACjB,YAAY,EAAE,KAAK;IACnB,SAAS,EAAE,QAAQ;CACpB,CAAA;AA6BD,MAAM,OAAO,OAAO;IAgClB,YAAY,IAAiB;QAC3B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAA;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAA;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAA;QAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAA;QACtC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;QACnC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAA;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAA;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAA;QAClD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAA;QACxD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;QACrC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAA;QAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,CAAA;QAC9D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAA;QACrD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAA;QACnD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;QACvC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACnB,MAAM,0BAA0B,CAAC,4CAA4C,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;QAC5F,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACb,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,EAAE,CAAA;QAChD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,0BAA0B,CAAC,qBAAqB,CAAC,CAAA;QACzD,CAAC;QACD,OAAO,WAAW,CAAA;IACpB,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import type { Common } from '@feelyourprotocol/common';
2
+ import type { RunState } from '../interpreter.ts';
3
+ /**
4
+ * Adjusts gas usage and refunds of SStore ops per EIP-1283 (Constantinople)
5
+ *
6
+ * @param {RunState} runState
7
+ * @param {Uint8Array} currentStorage
8
+ * @param {Uint8Array} originalStorage
9
+ * @param {Uint8Array} value
10
+ * @param {Common} common
11
+ */
12
+ export declare function updateSstoreGasEIP1283(runState: RunState, currentStorage: Uint8Array, originalStorage: Uint8Array, value: Uint8Array, common: Common): bigint;
13
+ //# sourceMappingURL=EIP1283.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EIP1283.d.ts","sourceRoot":"","sources":["../../../src/opcodes/EIP1283.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,UAAU,EAC1B,eAAe,EAAE,UAAU,EAC3B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,MAAM,UAyDf"}
@@ -0,0 +1,55 @@
1
+ import { equalsBytes } from '@feelyourprotocol/util';
2
+ /**
3
+ * Adjusts gas usage and refunds of SStore ops per EIP-1283 (Constantinople)
4
+ *
5
+ * @param {RunState} runState
6
+ * @param {Uint8Array} currentStorage
7
+ * @param {Uint8Array} originalStorage
8
+ * @param {Uint8Array} value
9
+ * @param {Common} common
10
+ */
11
+ export function updateSstoreGasEIP1283(runState, currentStorage, originalStorage, value, common) {
12
+ if (equalsBytes(currentStorage, value)) {
13
+ // If current value equals new value (this is a no-op), 200 gas is deducted.
14
+ return common.param('netSstoreNoopGas');
15
+ }
16
+ // If current value does not equal new value
17
+ if (equalsBytes(originalStorage, currentStorage)) {
18
+ // If original value equals current value (this storage slot has not been changed by the current execution context)
19
+ if (originalStorage.length === 0) {
20
+ // If original value is 0, 20000 gas is deducted.
21
+ return common.param('netSstoreInitGas');
22
+ }
23
+ if (value.length === 0) {
24
+ // If new value is 0, add 15000 gas to refund counter.
25
+ runState.interpreter.refundGas(common.param('netSstoreClearRefundGas'), 'EIP-1283 -> netSstoreClearRefund');
26
+ }
27
+ // Otherwise, 5000 gas is deducted.
28
+ return common.param('netSstoreCleanGas');
29
+ }
30
+ // If original value does not equal current value (this storage slot is dirty), 200 gas is deducted. Apply both of the following clauses.
31
+ if (originalStorage.length !== 0) {
32
+ // If original value is not 0
33
+ if (currentStorage.length === 0) {
34
+ // If current value is 0 (also means that new value is not 0), remove 15000 gas from refund counter. We can prove that refund counter will never go below 0.
35
+ runState.interpreter.subRefund(common.param('netSstoreClearRefundGas'), 'EIP-1283 -> netSstoreClearRefund');
36
+ }
37
+ else if (value.length === 0) {
38
+ // If new value is 0 (also means that current value is not 0), add 15000 gas to refund counter.
39
+ runState.interpreter.refundGas(common.param('netSstoreClearRefundGas'), 'EIP-1283 -> netSstoreClearRefund');
40
+ }
41
+ }
42
+ if (equalsBytes(originalStorage, value)) {
43
+ // If original value equals new value (this storage slot is reset)
44
+ if (originalStorage.length === 0) {
45
+ // If original value is 0, add 19800 gas to refund counter.
46
+ runState.interpreter.refundGas(common.param('netSstoreResetClearRefundGas'), 'EIP-1283 -> netSstoreResetClearRefund');
47
+ }
48
+ else {
49
+ // Otherwise, add 4800 gas to refund counter.
50
+ runState.interpreter.refundGas(common.param('netSstoreResetRefundGas'), 'EIP-1283 -> netSstoreResetRefund');
51
+ }
52
+ }
53
+ return common.param('netSstoreDirtyGas');
54
+ }
55
+ //# sourceMappingURL=EIP1283.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EIP1283.js","sourceRoot":"","sources":["../../../src/opcodes/EIP1283.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAK9C;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CACpC,QAAkB,EAClB,cAA0B,EAC1B,eAA2B,EAC3B,KAAiB,EACjB,MAAc;IAEd,IAAI,WAAW,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;QACvC,4EAA4E;QAC5E,OAAO,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACzC,CAAC;IACD,4CAA4C;IAC5C,IAAI,WAAW,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE,CAAC;QACjD,mHAAmH;QACnH,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,iDAAiD;YACjD,OAAO,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;QACzC,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,sDAAsD;YACtD,QAAQ,CAAC,WAAW,CAAC,SAAS,CAC5B,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,EACvC,kCAAkC,CACnC,CAAA;QACH,CAAC;QACD,mCAAmC;QACnC,OAAO,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;IAC1C,CAAC;IACD,yIAAyI;IACzI,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,6BAA6B;QAC7B,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,4JAA4J;YAC5J,QAAQ,CAAC,WAAW,CAAC,SAAS,CAC5B,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,EACvC,kCAAkC,CACnC,CAAA;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,+FAA+F;YAC/F,QAAQ,CAAC,WAAW,CAAC,SAAS,CAC5B,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,EACvC,kCAAkC,CACnC,CAAA;QACH,CAAC;IACH,CAAC;IACD,IAAI,WAAW,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC;QACxC,kEAAkE;QAClE,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,2DAA2D;YAC3D,QAAQ,CAAC,WAAW,CAAC,SAAS,CAC5B,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,EAC5C,uCAAuC,CACxC,CAAA;QACH,CAAC;aAAM,CAAC;YACN,6CAA6C;YAC7C,QAAQ,CAAC,WAAW,CAAC,SAAS,CAC5B,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,EACvC,kCAAkC,CACnC,CAAA;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;AAC1C,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { Common } from '@feelyourprotocol/common';
2
+ import type { RunState } from '../interpreter.ts';
3
+ /**
4
+ * Adjusts gas usage and refunds of SStore ops per EIP-2200 (Istanbul)
5
+ *
6
+ * @param {RunState} runState
7
+ * @param {Uint8Array} currentStorage
8
+ * @param {Uint8Array} originalStorage
9
+ * @param {Uint8Array} value
10
+ * @param {Common} common
11
+ */
12
+ export declare function updateSstoreGasEIP2200(runState: RunState, currentStorage: Uint8Array, originalStorage: Uint8Array, value: Uint8Array, key: Uint8Array, common: Common): bigint;
13
+ //# sourceMappingURL=EIP2200.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EIP2200.d.ts","sourceRoot":"","sources":["../../../src/opcodes/EIP2200.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,UAAU,EAC1B,eAAe,EAAE,UAAU,EAC3B,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,MAAM,UA6Df"}
@@ -0,0 +1,61 @@
1
+ import { equalsBytes } from '@feelyourprotocol/util';
2
+ import { EVMError } from "../errors.js";
3
+ import { adjustSstoreGasEIP2929 } from "./EIP2929.js";
4
+ import { trap } from "./util.js";
5
+ /**
6
+ * Adjusts gas usage and refunds of SStore ops per EIP-2200 (Istanbul)
7
+ *
8
+ * @param {RunState} runState
9
+ * @param {Uint8Array} currentStorage
10
+ * @param {Uint8Array} originalStorage
11
+ * @param {Uint8Array} value
12
+ * @param {Common} common
13
+ */
14
+ export function updateSstoreGasEIP2200(runState, currentStorage, originalStorage, value, key, common) {
15
+ // Fail if not enough gas is left
16
+ if (runState.interpreter.getGasLeft() <= common.param('sstoreSentryEIP2200Gas')) {
17
+ trap(EVMError.errorMessages.OUT_OF_GAS);
18
+ }
19
+ // Noop
20
+ if (equalsBytes(currentStorage, value)) {
21
+ const sstoreNoopCost = common.param('sstoreNoopEIP2200Gas');
22
+ return adjustSstoreGasEIP2929(runState, key, sstoreNoopCost, 'noop', common);
23
+ }
24
+ if (equalsBytes(originalStorage, currentStorage)) {
25
+ // Create slot
26
+ if (originalStorage.length === 0) {
27
+ return common.param('sstoreInitEIP2200Gas');
28
+ }
29
+ // Delete slot
30
+ if (value.length === 0) {
31
+ runState.interpreter.refundGas(common.param('sstoreClearRefundEIP2200Gas'), 'EIP-2200 -> sstoreClearRefundEIP2200');
32
+ }
33
+ // Write existing slot
34
+ return common.param('sstoreCleanEIP2200Gas');
35
+ }
36
+ if (originalStorage.length > 0) {
37
+ if (currentStorage.length === 0) {
38
+ // Recreate slot
39
+ runState.interpreter.subRefund(common.param('sstoreClearRefundEIP2200Gas'), 'EIP-2200 -> sstoreClearRefundEIP2200');
40
+ }
41
+ else if (value.length === 0) {
42
+ // Delete slot
43
+ runState.interpreter.refundGas(common.param('sstoreClearRefundEIP2200Gas'), 'EIP-2200 -> sstoreClearRefundEIP2200');
44
+ }
45
+ }
46
+ if (equalsBytes(originalStorage, value)) {
47
+ if (originalStorage.length === 0) {
48
+ // Reset to original non-existent slot
49
+ const sstoreInitRefund = common.param('sstoreInitRefundEIP2200Gas');
50
+ runState.interpreter.refundGas(adjustSstoreGasEIP2929(runState, key, sstoreInitRefund, 'initRefund', common), 'EIP-2200 -> initRefund');
51
+ }
52
+ else {
53
+ // Reset to original existing slot
54
+ const sstoreCleanRefund = common.param('sstoreCleanRefundEIP2200Gas');
55
+ runState.interpreter.refundGas(BigInt(adjustSstoreGasEIP2929(runState, key, sstoreCleanRefund, 'cleanRefund', common)), 'EIP-2200 -> cleanRefund');
56
+ }
57
+ }
58
+ // Dirty update
59
+ return common.param('sstoreDirtyEIP2200Gas');
60
+ }
61
+ //# sourceMappingURL=EIP2200.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EIP2200.js","sourceRoot":"","sources":["../../../src/opcodes/EIP2200.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import type { Common } from '@feelyourprotocol/common';
2
+ import type { RunState } from '../interpreter.ts';
3
+ /**
4
+ * Returns the gas cost for accessing an address WITHOUT any side effects.
5
+ * Use this to check if you have enough gas before committing to the access.
6
+ *
7
+ * @param {RunState} runState
8
+ * @param {Uint8Array} address
9
+ * @param {Common} common
10
+ * @param {Boolean} chargeGas (default: true)
11
+ * @param {Boolean} isSelfdestruct (default: false)
12
+ * @returns {bigint} The gas cost for this address access
13
+ */
14
+ export declare function getAddressAccessCost(runState: RunState, address: Uint8Array, common: Common, chargeGas?: boolean, isSelfdestruct?: boolean): bigint;
15
+ /**
16
+ * Warms an address (adds to EIP-2929 accessed addresses set).
17
+ * Call this AFTER verifying you have enough gas for the access.
18
+ *
19
+ * @param {RunState} runState
20
+ * @param {Uint8Array} address
21
+ */
22
+ export declare function warmAddress(runState: RunState, address: Uint8Array): void;
23
+ /**
24
+ * Adds address to BAL (Block Access List) for EIP-7928.
25
+ * Call this AFTER verifying you have enough gas for the access.
26
+ *
27
+ * @param {RunState} runState
28
+ * @param {Uint8Array} address
29
+ * @param {Common} common
30
+ */
31
+ export declare function addAddressToBAL(runState: RunState, address: Uint8Array, common: Common): void;
32
+ /**
33
+ * Adds address to accessedAddresses set if not already included.
34
+ * Adjusts cost incurred for executing opcode based on whether address read
35
+ * is warm/cold. (EIP 2929)
36
+ *
37
+ * This is a convenience function that combines getAddressAccessCost + warmAddress.
38
+ * For fine-grained control (e.g., EIP-7928 BAL with OOG checks), use the
39
+ * individual functions instead.
40
+ *
41
+ * @param {RunState} runState
42
+ * @param {Uint8Array} address
43
+ * @param {Common} common
44
+ * @param {Boolean} chargeGas (default: true)
45
+ * @param {Boolean} isSelfdestruct (default: false)
46
+ */
47
+ export declare function accessAddressEIP2929(runState: RunState, address: Uint8Array, common: Common, chargeGas?: boolean, isSelfdestruct?: boolean): bigint;
48
+ /**
49
+ * Adds (address, key) to accessedStorage tuple set if not already included.
50
+ * Adjusts cost incurred for executing opcode based on whether storage read
51
+ * is warm/cold. (EIP 2929)
52
+ * @param {RunState} runState
53
+ * @param {Uint8Array} key (to storage slot)
54
+ * @param {Common} common
55
+ */
56
+ export declare function accessStorageEIP2929(runState: RunState, key: Uint8Array, isSstore: boolean, common: Common, chargeGas?: boolean): bigint;
57
+ /**
58
+ * Adjusts cost of SSTORE_RESET_GAS or SLOAD (aka sstorenoop) (EIP-2200) downward when storage
59
+ * location is already warm
60
+ * @param {RunState} runState
61
+ * @param {Uint8Array} key storage slot
62
+ * @param {BigInt} defaultCost SSTORE_RESET_GAS / SLOAD
63
+ * @param {string} costName parameter name ('noop')
64
+ * @param {Common} common
65
+ * @return {BigInt} adjusted cost
66
+ */
67
+ export declare function adjustSstoreGasEIP2929(runState: RunState, key: Uint8Array, defaultCost: bigint, costName: string, common: Common): bigint;
68
+ //# sourceMappingURL=EIP2929.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EIP2929.d.ts","sourceRoot":"","sources":["../../../src/opcodes/EIP2929.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,UAAO,EAChB,cAAc,UAAQ,GACrB,MAAM,CAqBR;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,CAIzE;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAK7F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,UAAO,EAChB,cAAc,UAAQ,GACrB,MAAM,CAMR;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,UAAU,EACf,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,UAAO,GACf,MAAM,CAmBR;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,UAAU,EACf,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,MAAM,CAmBR"}
@@ -0,0 +1,138 @@
1
+ import { BIGINT_0, bytesToHex } from '@feelyourprotocol/util';
2
+ /**
3
+ * Returns the gas cost for accessing an address WITHOUT any side effects.
4
+ * Use this to check if you have enough gas before committing to the access.
5
+ *
6
+ * @param {RunState} runState
7
+ * @param {Uint8Array} address
8
+ * @param {Common} common
9
+ * @param {Boolean} chargeGas (default: true)
10
+ * @param {Boolean} isSelfdestruct (default: false)
11
+ * @returns {bigint} The gas cost for this address access
12
+ */
13
+ export function getAddressAccessCost(runState, address, common, chargeGas = true, isSelfdestruct = false) {
14
+ if (!common.isActivatedEIP(2929))
15
+ return BIGINT_0;
16
+ const isCold = !runState.interpreter.journal.isWarmedAddress(address);
17
+ if (isCold) {
18
+ // CREATE, CREATE2 opcodes have the address warmed for free.
19
+ // selfdestruct beneficiary address reads are charged an *additional* cold access
20
+ // if binary tree not activated
21
+ if (chargeGas && !common.isActivatedEIP(7864)) {
22
+ return common.param('coldaccountaccessGas');
23
+ }
24
+ else if (chargeGas && common.isActivatedEIP(7864)) {
25
+ // If binary tree is active, then the warmstoragereadGas should still be charged
26
+ // This is because otherwise opcodes will have cost 0 (this is thus the base fee)
27
+ return common.param('warmstoragereadGas');
28
+ }
29
+ }
30
+ else if (chargeGas && !isSelfdestruct) {
31
+ // Warm: (selfdestruct beneficiary address reads are not charged when warm)
32
+ return common.param('warmstoragereadGas');
33
+ }
34
+ return BIGINT_0;
35
+ }
36
+ /**
37
+ * Warms an address (adds to EIP-2929 accessed addresses set).
38
+ * Call this AFTER verifying you have enough gas for the access.
39
+ *
40
+ * @param {RunState} runState
41
+ * @param {Uint8Array} address
42
+ */
43
+ export function warmAddress(runState, address) {
44
+ if (!runState.interpreter.journal.isWarmedAddress(address)) {
45
+ runState.interpreter.journal.addWarmedAddress(address);
46
+ }
47
+ }
48
+ /**
49
+ * Adds address to BAL (Block Access List) for EIP-7928.
50
+ * Call this AFTER verifying you have enough gas for the access.
51
+ *
52
+ * @param {RunState} runState
53
+ * @param {Uint8Array} address
54
+ * @param {Common} common
55
+ */
56
+ export function addAddressToBAL(runState, address, common) {
57
+ if (common.isActivatedEIP(7928)) {
58
+ const addressHex = bytesToHex(address);
59
+ runState.interpreter._evm.blockLevelAccessList?.addAddress(addressHex);
60
+ }
61
+ }
62
+ /**
63
+ * Adds address to accessedAddresses set if not already included.
64
+ * Adjusts cost incurred for executing opcode based on whether address read
65
+ * is warm/cold. (EIP 2929)
66
+ *
67
+ * This is a convenience function that combines getAddressAccessCost + warmAddress.
68
+ * For fine-grained control (e.g., EIP-7928 BAL with OOG checks), use the
69
+ * individual functions instead.
70
+ *
71
+ * @param {RunState} runState
72
+ * @param {Uint8Array} address
73
+ * @param {Common} common
74
+ * @param {Boolean} chargeGas (default: true)
75
+ * @param {Boolean} isSelfdestruct (default: false)
76
+ */
77
+ export function accessAddressEIP2929(runState, address, common, chargeGas = true, isSelfdestruct = false) {
78
+ if (!common.isActivatedEIP(2929))
79
+ return BIGINT_0;
80
+ const cost = getAddressAccessCost(runState, address, common, chargeGas, isSelfdestruct);
81
+ warmAddress(runState, address);
82
+ return cost;
83
+ }
84
+ /**
85
+ * Adds (address, key) to accessedStorage tuple set if not already included.
86
+ * Adjusts cost incurred for executing opcode based on whether storage read
87
+ * is warm/cold. (EIP 2929)
88
+ * @param {RunState} runState
89
+ * @param {Uint8Array} key (to storage slot)
90
+ * @param {Common} common
91
+ */
92
+ export function accessStorageEIP2929(runState, key, isSstore, common, chargeGas = true) {
93
+ if (!common.isActivatedEIP(2929))
94
+ return BIGINT_0;
95
+ const address = runState.interpreter.getAddress().bytes;
96
+ const slotIsCold = !runState.interpreter.journal.isWarmedStorage(address, key);
97
+ // Cold (SLOAD and SSTORE)
98
+ if (slotIsCold) {
99
+ runState.interpreter.journal.addWarmedStorage(address, key);
100
+ if (chargeGas && !(common.isActivatedEIP(6800) || common.isActivatedEIP(7864))) {
101
+ return common.param('coldsloadGas');
102
+ }
103
+ }
104
+ else if (chargeGas &&
105
+ (!isSstore || common.isActivatedEIP(6800) || common.isActivatedEIP(7864))) {
106
+ return common.param('warmstoragereadGas');
107
+ }
108
+ return BIGINT_0;
109
+ }
110
+ /**
111
+ * Adjusts cost of SSTORE_RESET_GAS or SLOAD (aka sstorenoop) (EIP-2200) downward when storage
112
+ * location is already warm
113
+ * @param {RunState} runState
114
+ * @param {Uint8Array} key storage slot
115
+ * @param {BigInt} defaultCost SSTORE_RESET_GAS / SLOAD
116
+ * @param {string} costName parameter name ('noop')
117
+ * @param {Common} common
118
+ * @return {BigInt} adjusted cost
119
+ */
120
+ export function adjustSstoreGasEIP2929(runState, key, defaultCost, costName, common) {
121
+ if (!common.isActivatedEIP(2929))
122
+ return defaultCost;
123
+ const address = runState.interpreter.getAddress().bytes;
124
+ const warmRead = common.param('warmstoragereadGas');
125
+ const coldSload = common.param('coldsloadGas');
126
+ if (runState.interpreter.journal.isWarmedStorage(address, key)) {
127
+ switch (costName) {
128
+ case 'noop':
129
+ return warmRead;
130
+ case 'initRefund':
131
+ return common.param('sstoreInitEIP2200Gas') - warmRead;
132
+ case 'cleanRefund':
133
+ return common.param('sstoreResetGas') - coldSload - warmRead;
134
+ }
135
+ }
136
+ return defaultCost;
137
+ }
138
+ //# sourceMappingURL=EIP2929.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EIP2929.js","sourceRoot":"","sources":["../../../src/opcodes/EIP2929.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { Common } from '@feelyourprotocol/common';
2
+ import { type CustomOpcode } from '../types.ts';
3
+ import type { OpHandler } from './functions.ts';
4
+ import type { AsyncDynamicGasHandler, SyncDynamicGasHandler } from './gas.ts';
5
+ export declare class Opcode {
6
+ readonly code: number;
7
+ readonly name: string;
8
+ readonly fullName: string;
9
+ readonly fee: number;
10
+ readonly feeBigInt: bigint;
11
+ readonly isAsync: boolean;
12
+ readonly dynamicGas: boolean;
13
+ readonly isInvalid: boolean;
14
+ constructor({ code, name, fullName, fee, isAsync, dynamicGas, }: {
15
+ code: number;
16
+ name: string;
17
+ fullName: string;
18
+ fee: number;
19
+ isAsync: boolean;
20
+ dynamicGas: boolean;
21
+ });
22
+ }
23
+ export type OpcodeList = Map<number, Opcode>;
24
+ type OpcodeContext = {
25
+ dynamicGasHandlers: Map<number, AsyncDynamicGasHandler | SyncDynamicGasHandler>;
26
+ handlers: Map<number, OpHandler>;
27
+ opcodes: OpcodeList;
28
+ opcodeMap: OpcodeMap;
29
+ };
30
+ export type OpcodeMapEntry = {
31
+ opcodeInfo: Opcode;
32
+ opHandler: OpHandler;
33
+ gasHandler: AsyncDynamicGasHandler | SyncDynamicGasHandler;
34
+ };
35
+ export type OpcodeMap = OpcodeMapEntry[];
36
+ /**
37
+ * Get suitable opcodes for the required hardfork.
38
+ *
39
+ * @param common {Common} Ethereumjs Common metadata object.
40
+ * @param customOpcodes List with custom opcodes (see EVM `customOpcodes` option description).
41
+ * @returns {OpcodeList} Opcodes dictionary object.
42
+ */
43
+ export declare function getOpcodesForHF(common: Common, customOpcodes?: CustomOpcode[]): OpcodeContext;
44
+ export {};
45
+ //# sourceMappingURL=codes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codes.d.ts","sourceRoot":"","sources":["../../../src/opcodes/codes.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,aAAa,CAAA;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAE7E,qBAAa,MAAM;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;gBAEf,EACV,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,GAAG,EACH,OAAO,EACP,UAAU,GACX,EAAE;QACD,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,MAAM,CAAA;QAChB,GAAG,EAAE,MAAM,CAAA;QACX,OAAO,EAAE,OAAO,CAAA;QAChB,UAAU,EAAE,OAAO,CAAA;KACpB;CAaF;AAED,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAoX5C,KAAK,aAAa,GAAG;IACnB,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,GAAG,qBAAqB,CAAC,CAAA;IAC/E,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAChC,OAAO,EAAE,UAAU,CAAA;IACnB,SAAS,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,SAAS,CAAA;IACpB,UAAU,EAAE,sBAAsB,GAAG,qBAAqB,CAAA;CAC3D,CAAA;AACD,MAAM,MAAM,SAAS,GAAG,cAAc,EAAE,CAAA;AAExC;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,YAAY,EAAE,GAAG,aAAa,CAmF7F"}