@bradthomasbrown/evm-single-context 1.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 (179) hide show
  1. package/README.md +91 -0
  2. package/dist/lib.d.ts +26 -0
  3. package/dist/lib.d.ts.map +1 -0
  4. package/dist/lib.js +129 -0
  5. package/dist/machine.d.ts +40 -0
  6. package/dist/machine.d.ts.map +1 -0
  7. package/dist/machine.js +166 -0
  8. package/dist/opsets/9db704/opcodes/ADD.d.ts +8 -0
  9. package/dist/opsets/9db704/opcodes/ADD.d.ts.map +1 -0
  10. package/dist/opsets/9db704/opcodes/ADD.js +13 -0
  11. package/dist/opsets/9db704/opcodes/ADDRESS.d.ts +8 -0
  12. package/dist/opsets/9db704/opcodes/ADDRESS.d.ts.map +1 -0
  13. package/dist/opsets/9db704/opcodes/ADDRESS.js +11 -0
  14. package/dist/opsets/9db704/opcodes/AND.d.ts +8 -0
  15. package/dist/opsets/9db704/opcodes/AND.d.ts.map +1 -0
  16. package/dist/opsets/9db704/opcodes/AND.js +13 -0
  17. package/dist/opsets/9db704/opcodes/BYTE.d.ts +8 -0
  18. package/dist/opsets/9db704/opcodes/BYTE.d.ts.map +1 -0
  19. package/dist/opsets/9db704/opcodes/BYTE.js +13 -0
  20. package/dist/opsets/9db704/opcodes/CALLDATACOPY.d.ts +8 -0
  21. package/dist/opsets/9db704/opcodes/CALLDATACOPY.d.ts.map +1 -0
  22. package/dist/opsets/9db704/opcodes/CALLDATACOPY.js +14 -0
  23. package/dist/opsets/9db704/opcodes/CALLDATALOAD.d.ts +8 -0
  24. package/dist/opsets/9db704/opcodes/CALLDATALOAD.d.ts.map +1 -0
  25. package/dist/opsets/9db704/opcodes/CALLDATALOAD.js +17 -0
  26. package/dist/opsets/9db704/opcodes/CALLDATASIZE.d.ts +8 -0
  27. package/dist/opsets/9db704/opcodes/CALLDATASIZE.d.ts.map +1 -0
  28. package/dist/opsets/9db704/opcodes/CALLDATASIZE.js +11 -0
  29. package/dist/opsets/9db704/opcodes/CALLER.d.ts +8 -0
  30. package/dist/opsets/9db704/opcodes/CALLER.d.ts.map +1 -0
  31. package/dist/opsets/9db704/opcodes/CALLER.js +11 -0
  32. package/dist/opsets/9db704/opcodes/CALLVALUE.d.ts +8 -0
  33. package/dist/opsets/9db704/opcodes/CALLVALUE.d.ts.map +1 -0
  34. package/dist/opsets/9db704/opcodes/CALLVALUE.js +11 -0
  35. package/dist/opsets/9db704/opcodes/CHAINID.d.ts +8 -0
  36. package/dist/opsets/9db704/opcodes/CHAINID.d.ts.map +1 -0
  37. package/dist/opsets/9db704/opcodes/CHAINID.js +12 -0
  38. package/dist/opsets/9db704/opcodes/CODECOPY.d.ts +8 -0
  39. package/dist/opsets/9db704/opcodes/CODECOPY.d.ts.map +1 -0
  40. package/dist/opsets/9db704/opcodes/CODECOPY.js +13 -0
  41. package/dist/opsets/9db704/opcodes/CREATE.d.ts +8 -0
  42. package/dist/opsets/9db704/opcodes/CREATE.d.ts.map +1 -0
  43. package/dist/opsets/9db704/opcodes/CREATE.js +49 -0
  44. package/dist/opsets/9db704/opcodes/CREATE2.d.ts +8 -0
  45. package/dist/opsets/9db704/opcodes/CREATE2.d.ts.map +1 -0
  46. package/dist/opsets/9db704/opcodes/CREATE2.js +50 -0
  47. package/dist/opsets/9db704/opcodes/DIV.d.ts +8 -0
  48. package/dist/opsets/9db704/opcodes/DIV.d.ts.map +1 -0
  49. package/dist/opsets/9db704/opcodes/DIV.js +16 -0
  50. package/dist/opsets/9db704/opcodes/DUP.d.ts +8 -0
  51. package/dist/opsets/9db704/opcodes/DUP.d.ts.map +1 -0
  52. package/dist/opsets/9db704/opcodes/DUP.js +11 -0
  53. package/dist/opsets/9db704/opcodes/EQ.d.ts +8 -0
  54. package/dist/opsets/9db704/opcodes/EQ.d.ts.map +1 -0
  55. package/dist/opsets/9db704/opcodes/EQ.js +13 -0
  56. package/dist/opsets/9db704/opcodes/EXTCODECOPY.d.ts +8 -0
  57. package/dist/opsets/9db704/opcodes/EXTCODECOPY.d.ts.map +1 -0
  58. package/dist/opsets/9db704/opcodes/EXTCODECOPY.js +20 -0
  59. package/dist/opsets/9db704/opcodes/EXTCODESIZE.d.ts +8 -0
  60. package/dist/opsets/9db704/opcodes/EXTCODESIZE.d.ts.map +1 -0
  61. package/dist/opsets/9db704/opcodes/EXTCODESIZE.js +20 -0
  62. package/dist/opsets/9db704/opcodes/GAS.d.ts +8 -0
  63. package/dist/opsets/9db704/opcodes/GAS.d.ts.map +1 -0
  64. package/dist/opsets/9db704/opcodes/GAS.js +11 -0
  65. package/dist/opsets/9db704/opcodes/GT.d.ts +8 -0
  66. package/dist/opsets/9db704/opcodes/GT.d.ts.map +1 -0
  67. package/dist/opsets/9db704/opcodes/GT.js +13 -0
  68. package/dist/opsets/9db704/opcodes/ISZERO.d.ts +8 -0
  69. package/dist/opsets/9db704/opcodes/ISZERO.d.ts.map +1 -0
  70. package/dist/opsets/9db704/opcodes/ISZERO.js +13 -0
  71. package/dist/opsets/9db704/opcodes/JUMP.d.ts +8 -0
  72. package/dist/opsets/9db704/opcodes/JUMP.d.ts.map +1 -0
  73. package/dist/opsets/9db704/opcodes/JUMP.js +16 -0
  74. package/dist/opsets/9db704/opcodes/JUMPDEST.d.ts +8 -0
  75. package/dist/opsets/9db704/opcodes/JUMPDEST.d.ts.map +1 -0
  76. package/dist/opsets/9db704/opcodes/JUMPDEST.js +10 -0
  77. package/dist/opsets/9db704/opcodes/JUMPI.d.ts +8 -0
  78. package/dist/opsets/9db704/opcodes/JUMPI.d.ts.map +1 -0
  79. package/dist/opsets/9db704/opcodes/JUMPI.js +20 -0
  80. package/dist/opsets/9db704/opcodes/KECCAK256.d.ts +8 -0
  81. package/dist/opsets/9db704/opcodes/KECCAK256.d.ts.map +1 -0
  82. package/dist/opsets/9db704/opcodes/KECCAK256.js +14 -0
  83. package/dist/opsets/9db704/opcodes/LOG.d.ts +8 -0
  84. package/dist/opsets/9db704/opcodes/LOG.d.ts.map +1 -0
  85. package/dist/opsets/9db704/opcodes/LOG.js +14 -0
  86. package/dist/opsets/9db704/opcodes/LT.d.ts +8 -0
  87. package/dist/opsets/9db704/opcodes/LT.d.ts.map +1 -0
  88. package/dist/opsets/9db704/opcodes/LT.js +13 -0
  89. package/dist/opsets/9db704/opcodes/MLOAD.d.ts +8 -0
  90. package/dist/opsets/9db704/opcodes/MLOAD.d.ts.map +1 -0
  91. package/dist/opsets/9db704/opcodes/MLOAD.js +14 -0
  92. package/dist/opsets/9db704/opcodes/MSIZE.d.ts +8 -0
  93. package/dist/opsets/9db704/opcodes/MSIZE.d.ts.map +1 -0
  94. package/dist/opsets/9db704/opcodes/MSIZE.js +11 -0
  95. package/dist/opsets/9db704/opcodes/MSTORE.d.ts +8 -0
  96. package/dist/opsets/9db704/opcodes/MSTORE.d.ts.map +1 -0
  97. package/dist/opsets/9db704/opcodes/MSTORE.js +14 -0
  98. package/dist/opsets/9db704/opcodes/MSTORE8.d.ts +8 -0
  99. package/dist/opsets/9db704/opcodes/MSTORE8.d.ts.map +1 -0
  100. package/dist/opsets/9db704/opcodes/MSTORE8.js +14 -0
  101. package/dist/opsets/9db704/opcodes/MUL.d.ts +8 -0
  102. package/dist/opsets/9db704/opcodes/MUL.d.ts.map +1 -0
  103. package/dist/opsets/9db704/opcodes/MUL.js +13 -0
  104. package/dist/opsets/9db704/opcodes/NOT.d.ts +8 -0
  105. package/dist/opsets/9db704/opcodes/NOT.d.ts.map +1 -0
  106. package/dist/opsets/9db704/opcodes/NOT.js +13 -0
  107. package/dist/opsets/9db704/opcodes/OR.d.ts +8 -0
  108. package/dist/opsets/9db704/opcodes/OR.d.ts.map +1 -0
  109. package/dist/opsets/9db704/opcodes/OR.js +13 -0
  110. package/dist/opsets/9db704/opcodes/PC.d.ts +8 -0
  111. package/dist/opsets/9db704/opcodes/PC.d.ts.map +1 -0
  112. package/dist/opsets/9db704/opcodes/PC.js +11 -0
  113. package/dist/opsets/9db704/opcodes/POP.d.ts +8 -0
  114. package/dist/opsets/9db704/opcodes/POP.d.ts.map +1 -0
  115. package/dist/opsets/9db704/opcodes/POP.js +11 -0
  116. package/dist/opsets/9db704/opcodes/PUSH.d.ts +8 -0
  117. package/dist/opsets/9db704/opcodes/PUSH.d.ts.map +1 -0
  118. package/dist/opsets/9db704/opcodes/PUSH.js +11 -0
  119. package/dist/opsets/9db704/opcodes/RETURN.d.ts +8 -0
  120. package/dist/opsets/9db704/opcodes/RETURN.d.ts.map +1 -0
  121. package/dist/opsets/9db704/opcodes/RETURN.js +15 -0
  122. package/dist/opsets/9db704/opcodes/RETURNDATACOPY.d.ts +8 -0
  123. package/dist/opsets/9db704/opcodes/RETURNDATACOPY.d.ts.map +1 -0
  124. package/dist/opsets/9db704/opcodes/RETURNDATACOPY.js +13 -0
  125. package/dist/opsets/9db704/opcodes/RETURNDATASIZE.d.ts +8 -0
  126. package/dist/opsets/9db704/opcodes/RETURNDATASIZE.d.ts.map +1 -0
  127. package/dist/opsets/9db704/opcodes/RETURNDATASIZE.js +11 -0
  128. package/dist/opsets/9db704/opcodes/REVERT.d.ts +8 -0
  129. package/dist/opsets/9db704/opcodes/REVERT.d.ts.map +1 -0
  130. package/dist/opsets/9db704/opcodes/REVERT.js +15 -0
  131. package/dist/opsets/9db704/opcodes/SGT.d.ts +8 -0
  132. package/dist/opsets/9db704/opcodes/SGT.d.ts.map +1 -0
  133. package/dist/opsets/9db704/opcodes/SGT.js +15 -0
  134. package/dist/opsets/9db704/opcodes/SHL.d.ts +8 -0
  135. package/dist/opsets/9db704/opcodes/SHL.d.ts.map +1 -0
  136. package/dist/opsets/9db704/opcodes/SHL.js +13 -0
  137. package/dist/opsets/9db704/opcodes/SHR.d.ts +8 -0
  138. package/dist/opsets/9db704/opcodes/SHR.d.ts.map +1 -0
  139. package/dist/opsets/9db704/opcodes/SHR.js +13 -0
  140. package/dist/opsets/9db704/opcodes/SLOAD.d.ts +8 -0
  141. package/dist/opsets/9db704/opcodes/SLOAD.d.ts.map +1 -0
  142. package/dist/opsets/9db704/opcodes/SLOAD.js +21 -0
  143. package/dist/opsets/9db704/opcodes/SLT.d.ts +8 -0
  144. package/dist/opsets/9db704/opcodes/SLT.d.ts.map +1 -0
  145. package/dist/opsets/9db704/opcodes/SLT.js +15 -0
  146. package/dist/opsets/9db704/opcodes/SSTORE.d.ts +8 -0
  147. package/dist/opsets/9db704/opcodes/SSTORE.d.ts.map +1 -0
  148. package/dist/opsets/9db704/opcodes/SSTORE.js +50 -0
  149. package/dist/opsets/9db704/opcodes/STATICCALL.d.ts +8 -0
  150. package/dist/opsets/9db704/opcodes/STATICCALL.d.ts.map +1 -0
  151. package/dist/opsets/9db704/opcodes/STATICCALL.js +104 -0
  152. package/dist/opsets/9db704/opcodes/STOP.d.ts +8 -0
  153. package/dist/opsets/9db704/opcodes/STOP.d.ts.map +1 -0
  154. package/dist/opsets/9db704/opcodes/STOP.js +9 -0
  155. package/dist/opsets/9db704/opcodes/SUB.d.ts +8 -0
  156. package/dist/opsets/9db704/opcodes/SUB.d.ts.map +1 -0
  157. package/dist/opsets/9db704/opcodes/SUB.js +13 -0
  158. package/dist/opsets/9db704/opcodes/SWAP.d.ts +8 -0
  159. package/dist/opsets/9db704/opcodes/SWAP.d.ts.map +1 -0
  160. package/dist/opsets/9db704/opcodes/SWAP.js +15 -0
  161. package/dist/opsets/9db704/opcodes/TIMESTAMP.d.ts +8 -0
  162. package/dist/opsets/9db704/opcodes/TIMESTAMP.d.ts.map +1 -0
  163. package/dist/opsets/9db704/opcodes/TIMESTAMP.js +13 -0
  164. package/dist/opsets/9db704/opcodes/TLOAD.d.ts +8 -0
  165. package/dist/opsets/9db704/opcodes/TLOAD.d.ts.map +1 -0
  166. package/dist/opsets/9db704/opcodes/TLOAD.js +14 -0
  167. package/dist/opsets/9db704/opcodes/TSTORE.d.ts +8 -0
  168. package/dist/opsets/9db704/opcodes/TSTORE.d.ts.map +1 -0
  169. package/dist/opsets/9db704/opcodes/TSTORE.js +18 -0
  170. package/dist/opsets/9db704/opcodes/XOR.d.ts +8 -0
  171. package/dist/opsets/9db704/opcodes/XOR.d.ts.map +1 -0
  172. package/dist/opsets/9db704/opcodes/XOR.js +13 -0
  173. package/dist/opsets/9db704/opset.d.ts +53 -0
  174. package/dist/opsets/9db704/opset.d.ts.map +1 -0
  175. package/dist/opsets/9db704/opset.js +52 -0
  176. package/dist/types.d.ts +49 -0
  177. package/dist/types.d.ts.map +1 -0
  178. package/dist/types.js +1 -0
  179. package/package.json +26 -0
@@ -0,0 +1,50 @@
1
+ import { pop, getStateValue } from "../../../lib.js";
2
+ export default {
3
+ identifier: 0x55,
4
+ executor(context) {
5
+ const [key, newValue] = pop(context.stack, 2);
6
+ let C_sstore_0 = 2100n;
7
+ if (context.storageAccessSet.has(context.address) === false)
8
+ context.storageAccessSet.set(context.address, new Set());
9
+ if (context.storageAccessSet.get(context.address).has(key) === true)
10
+ C_sstore_0 = 0n;
11
+ else
12
+ (context.storageAccessSet.get(context.address).add(key));
13
+ const originalValue = getStateValue(context.states, 0, "storage", [context.address, key]) ?? 0n;
14
+ const currentValue = getStateValue(context.states, null, "storage", [context.address, key]) ?? 0n;
15
+ let C_sstore_1 = null;
16
+ if ((currentValue == newValue) || (originalValue != currentValue))
17
+ C_sstore_1 = 100n;
18
+ if ((currentValue != newValue) && (originalValue == currentValue) && (originalValue == 0n))
19
+ C_sstore_1 = 20000n;
20
+ if ((currentValue != newValue) && (originalValue == currentValue) && (originalValue != 0n))
21
+ C_sstore_1 = 2900n;
22
+ let r_dirtyclear = 0n;
23
+ if ((originalValue != 0n) && (currentValue == 0n))
24
+ r_dirtyclear = -4800n;
25
+ if ((originalValue != 0n) && (newValue == 0n))
26
+ r_dirtyclear = 4800n;
27
+ let r_dirtyreset = 0n;
28
+ if ((originalValue == newValue) && (originalValue == 0n))
29
+ r_dirtyreset = 19900n;
30
+ if ((originalValue == newValue) && (originalValue != 0n))
31
+ r_dirtyreset = 2800n;
32
+ let A_r = 0n;
33
+ if ((currentValue != newValue) && (originalValue == currentValue) && (newValue == 0n))
34
+ A_r = 4800n;
35
+ if ((currentValue != newValue) && (originalValue != currentValue))
36
+ A_r = r_dirtyreset + r_dirtyreset;
37
+ context.gas -= C_sstore_0 + C_sstore_1;
38
+ context.refund += A_r;
39
+ const state = context.states.at(-1);
40
+ if (state.storage === null)
41
+ state.storage = new Map();
42
+ if (state.storage.has(context.address) === false)
43
+ state.storage.set(context.address, new Map());
44
+ state.storage.get(context.address).set(key, newValue);
45
+ context.pc++;
46
+ },
47
+ instructionToString() {
48
+ return "SSTORE";
49
+ }
50
+ };
@@ -0,0 +1,8 @@
1
+ import type { Context } from "../../../types.js";
2
+ declare const _default: {
3
+ identifier: number;
4
+ executor(context: Context): void;
5
+ instructionToString(): string;
6
+ };
7
+ export default _default;
8
+ //# sourceMappingURL=STATICCALL.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"STATICCALL.d.ts","sourceRoot":"","sources":["../../../../src/opsets/9db704/opcodes/STATICCALL.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;;;sBAS5B,OAAO;;;AAJ5B,wBA0GE"}
@@ -0,0 +1,104 @@
1
+ import { keccak256 } from "@bradthomasbrown/keccak/keccak256";
2
+ import { _780119_ } from "@bradthomasbrown/ecdsa/concrete";
3
+ import { peek, pop, memoryExpand, createContext, numberToHex, getStateValue, byteSliceToBigInt_be, copy } from "../../../lib.js";
4
+ export default {
5
+ identifier: 0xfa,
6
+ executor(context) {
7
+ if (context.blocked) {
8
+ // if there was no code at the address
9
+ if (context.subcontext === null) {
10
+ const [_gas, address, argsOffset, argsSize, retOffset, retSize] = pop(context.stack, 6);
11
+ let C_precompile = 0n;
12
+ if (address == 1n) {
13
+ C_precompile = 3000n;
14
+ const data = new Uint8Array(context.memory.slice(Number(argsOffset), Number(argsOffset) + Number(argsSize)));
15
+ const hash = data.slice(0, 32);
16
+ const v = byteSliceToBigInt_be(data, 32, 32, false) - 27n;
17
+ const r = byteSliceToBigInt_be(data, 64, 32, false);
18
+ const s = byteSliceToBigInt_be(data, 96, 32, false);
19
+ const q = _780119_.recover({ r, s, v }, hash);
20
+ const qBytes = new Uint8Array(64);
21
+ let i;
22
+ let x = q.x;
23
+ let y = q.y;
24
+ for (i = qBytes.byteLength - 1; y > 0n; y >>= 8n, i--)
25
+ qBytes[i] = Number(y & 0xffn);
26
+ for (i = (qBytes.byteLength >> 1) - 1; x > 0n; x >>= 8n, i--)
27
+ qBytes[i] = Number(x & 0xffn);
28
+ const returndata = new ArrayBuffer(32);
29
+ const addressBytes = keccak256(qBytes).fill(0, 0, 12).buffer;
30
+ copy(returndata, addressBytes, 12, 12, 20, false);
31
+ memoryExpand(context, Number(retOffset) + Number(retSize));
32
+ copy(context.memory, addressBytes, Number(retOffset), 0, Number(retSize), false);
33
+ context.subcontext = createContext({
34
+ origin: context.origin,
35
+ sender: context.address,
36
+ to: `0x${"1".padStart(40, '0')}`,
37
+ code: new ArrayBuffer(),
38
+ returndata,
39
+ reverted: false // machine will not continue without this, rightfully so
40
+ });
41
+ }
42
+ context.stack.push(1n);
43
+ context.gas += context.L - C_precompile;
44
+ context.blocked = false;
45
+ context.pc++;
46
+ }
47
+ else {
48
+ if (context.subcontext.reverted === null)
49
+ return;
50
+ const [_gas, _address, _argsOffset, _argsSize, _retOffset, _retSize] = pop(context.stack, 6);
51
+ if (context.states.at(-1).accounts === null)
52
+ context.states.at(-1).accounts = new Map();
53
+ context.stack.push(context.subcontext.reverted === false ? 1n : 0n);
54
+ context.states.at(-1).accounts.set(context.subcontext.address, { nonce: 1n, balance: context.subcontext.value, code: context.subcontext.returndata });
55
+ context.gas += context.subcontext.gas - (context.subcontext.returndata === null ? 0n : 200n * BigInt(context.subcontext.returndata.byteLength));
56
+ context.blocked = false;
57
+ context.pc++;
58
+ }
59
+ }
60
+ else {
61
+ const [gas, address, argsOffset, argsSize, retOffset, retSize] = peek(context.stack, 6);
62
+ memoryExpand(context, Math.max(Number(argsOffset) + Number(argsSize), Number(retOffset) + Number(retSize)));
63
+ const addressHex = `0x${numberToHex(address, 40)}`;
64
+ const C_new = 0n;
65
+ const C_xfer = 0n;
66
+ let C_aaccess = 2600n;
67
+ if (context.accountAccessSet.has(addressHex))
68
+ C_aaccess = 100n;
69
+ else
70
+ (context.accountAccessSet.add(addressHex));
71
+ const C_extra = C_aaccess + C_xfer + C_new;
72
+ const _ad_ = context.gas - C_extra;
73
+ const L = _ad_ < 0n ? 0n : _ad_ - (_ad_ >> 6n);
74
+ const C_gascap = L < gas ? L : gas;
75
+ const C_callgas = C_gascap;
76
+ const C_call = C_gascap + C_extra;
77
+ context.gas -= C_call;
78
+ context.L = C_callgas;
79
+ const code = getStateValue(context.states, null, "accounts", [addressHex])?.code ?? null;
80
+ if (code === null) {
81
+ context.blocked = true; // sketchy, needed for gas cost to be "right"
82
+ context.subcontext = null;
83
+ }
84
+ else {
85
+ context.subcontext = createContext({
86
+ origin: context.origin,
87
+ sender: context.address,
88
+ address: addressHex,
89
+ gas: C_callgas,
90
+ states: context.states,
91
+ accountAccessSet: context.accountAccessSet,
92
+ storageAccessSet: context.storageAccessSet,
93
+ depth: context.depth + 1,
94
+ code
95
+ });
96
+ context.states.push({ accounts: null, transientStorage: null, storage: null });
97
+ context.blocked = true;
98
+ }
99
+ }
100
+ },
101
+ instructionToString() {
102
+ return "STATICCALL";
103
+ }
104
+ };
@@ -0,0 +1,8 @@
1
+ import type { Context } from "../../../types.js";
2
+ declare const _default: {
3
+ identifier: number;
4
+ executor(context: Context): void;
5
+ instructionToString(): string;
6
+ };
7
+ export default _default;
8
+ //# sourceMappingURL=STOP.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"STOP.d.ts","sourceRoot":"","sources":["../../../../src/opsets/9db704/opcodes/STOP.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;;;sBAM5B,OAAO;;;AAJ5B,wBAYE"}
@@ -0,0 +1,9 @@
1
+ export default {
2
+ identifier: 0x00,
3
+ executor(context) {
4
+ context.reverted = false;
5
+ },
6
+ instructionToString() {
7
+ return "STOP";
8
+ }
9
+ };
@@ -0,0 +1,8 @@
1
+ import type { Context } from "../../../types.js";
2
+ declare const _default: {
3
+ identifier: number;
4
+ executor(context: Context): void;
5
+ instructionToString(): string;
6
+ };
7
+ export default _default;
8
+ //# sourceMappingURL=SUB.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SUB.d.ts","sourceRoot":"","sources":["../../../../src/opsets/9db704/opcodes/SUB.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;;;sBAO5B,OAAO;;;AAJ5B,wBAeE"}
@@ -0,0 +1,13 @@
1
+ import { pop, F } from "../../../lib.js";
2
+ export default {
3
+ identifier: 0x03,
4
+ executor(context) {
5
+ const [a, b] = pop(context.stack, 2);
6
+ context.stack.push(F.subtract(a, b));
7
+ context.gas -= 3n;
8
+ context.pc++;
9
+ },
10
+ instructionToString() {
11
+ return "SUB";
12
+ }
13
+ };
@@ -0,0 +1,8 @@
1
+ import type { Context, Artifact } from "../../../types.js";
2
+ declare const _default: {
3
+ identifier: number;
4
+ executor(context: Context, artifact: Artifact): void;
5
+ instructionToString(instruction: number): string;
6
+ };
7
+ export default _default;
8
+ //# sourceMappingURL=SWAP.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SWAP.d.ts","sourceRoot":"","sources":["../../../../src/opsets/9db704/opcodes/SWAP.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;;;sBAMtC,OAAO,YAAW,QAAQ;qCAUX,MAAM;;AAd1C,wBAkBE"}
@@ -0,0 +1,15 @@
1
+ export default {
2
+ identifier: 0x90,
3
+ executor(context, artifact) {
4
+ const i = context.stack.length - 1;
5
+ const j = context.stack.length - (artifact.variant + 2);
6
+ const a = context.stack[i];
7
+ context.stack[i] = context.stack[j];
8
+ context.stack[j] = a;
9
+ context.gas -= 3n;
10
+ context.pc++;
11
+ },
12
+ instructionToString(instruction) {
13
+ return `SWAP${instruction - 0x8f}`;
14
+ }
15
+ };
@@ -0,0 +1,8 @@
1
+ import type { Context } from "../../../types.js";
2
+ declare const _default: {
3
+ identifier: number;
4
+ executor(context: Context): void;
5
+ instructionToString(): string;
6
+ };
7
+ export default _default;
8
+ //# sourceMappingURL=TIMESTAMP.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TIMESTAMP.d.ts","sourceRoot":"","sources":["../../../../src/opsets/9db704/opcodes/TIMESTAMP.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;;;sBAQ5B,OAAO;;;AAN5B,wBAgBE"}
@@ -0,0 +1,13 @@
1
+ export default {
2
+ identifier: 0x42,
3
+ // this one is a bit weird
4
+ // will need to use the timestamp in the block header
5
+ executor(context) {
6
+ context.stack.push(BigInt(Date.now()) / 1000n);
7
+ context.gas -= 2n;
8
+ context.pc++;
9
+ },
10
+ instructionToString() {
11
+ return "TIMESTAMP";
12
+ }
13
+ };
@@ -0,0 +1,8 @@
1
+ import type { Context } from "../../../types.js";
2
+ declare const _default: {
3
+ identifier: number;
4
+ executor(context: Context): void;
5
+ instructionToString(): string;
6
+ };
7
+ export default _default;
8
+ //# sourceMappingURL=TLOAD.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TLOAD.d.ts","sourceRoot":"","sources":["../../../../src/opsets/9db704/opcodes/TLOAD.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;;;sBAO5B,OAAO;;;AAJ5B,wBAgBE"}
@@ -0,0 +1,14 @@
1
+ import { pop, getStateValue } from "../../../lib.js";
2
+ export default {
3
+ identifier: 0x5c,
4
+ executor(context) {
5
+ const [key] = pop(context.stack, 1);
6
+ context.gas -= 100n;
7
+ const value = getStateValue(context.states, null, "transientStorage", [context.address, key]) ?? 0n;
8
+ context.stack.push(value);
9
+ context.pc++;
10
+ },
11
+ instructionToString() {
12
+ return "TLOAD";
13
+ }
14
+ };
@@ -0,0 +1,8 @@
1
+ import type { Context } from "../../../types.js";
2
+ declare const _default: {
3
+ identifier: number;
4
+ executor(context: Context): void;
5
+ instructionToString(): string;
6
+ };
7
+ export default _default;
8
+ //# sourceMappingURL=TSTORE.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TSTORE.d.ts","sourceRoot":"","sources":["../../../../src/opsets/9db704/opcodes/TSTORE.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;;;sBAO5B,OAAO;;;AAJ5B,wBAqBE"}
@@ -0,0 +1,18 @@
1
+ import { pop } from "../../../lib.js";
2
+ export default {
3
+ identifier: 0x5d,
4
+ executor(context) {
5
+ const [key, value] = pop(context.stack, 2);
6
+ context.gas -= 100n;
7
+ const state = context.states.at(-1);
8
+ if (state.transientStorage === null)
9
+ state.transientStorage = new Map();
10
+ if (state.transientStorage.has(context.address) === false)
11
+ state.transientStorage.set(context.address, new Map());
12
+ state.transientStorage.get(context.address).set(key, value);
13
+ context.pc++;
14
+ },
15
+ instructionToString() {
16
+ return "TSTORE";
17
+ }
18
+ };
@@ -0,0 +1,8 @@
1
+ import type { Context } from "../../../types.js";
2
+ declare const _default: {
3
+ identifier: number;
4
+ executor(context: Context): void;
5
+ instructionToString(): string;
6
+ };
7
+ export default _default;
8
+ //# sourceMappingURL=XOR.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XOR.d.ts","sourceRoot":"","sources":["../../../../src/opsets/9db704/opcodes/XOR.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;;;sBAO5B,OAAO;;;AAJ5B,wBAeE"}
@@ -0,0 +1,13 @@
1
+ import { pop } from "../../../lib.js";
2
+ export default {
3
+ identifier: 0x18,
4
+ executor(context) {
5
+ const [a, b] = pop(context.stack, 2);
6
+ context.stack.push(a ^ b);
7
+ context.gas -= 3n;
8
+ context.pc++;
9
+ },
10
+ instructionToString() {
11
+ return "XOR";
12
+ }
13
+ };
@@ -0,0 +1,53 @@
1
+ export { default as STOP } from "./opcodes/STOP.js";
2
+ export { default as ADD } from "./opcodes/ADD.js";
3
+ export { default as MUL } from "./opcodes/MUL.js";
4
+ export { default as SUB } from "./opcodes/SUB.js";
5
+ export { default as DIV } from "./opcodes/DIV.js";
6
+ export { default as LT } from "./opcodes/LT.js";
7
+ export { default as GT } from "./opcodes/GT.js";
8
+ export { default as SLT } from "./opcodes/SLT.js";
9
+ export { default as SGT } from "./opcodes/SGT.js";
10
+ export { default as EQ } from "./opcodes/EQ.js";
11
+ export { default as ISZERO } from "./opcodes/ISZERO.js";
12
+ export { default as AND } from "./opcodes/AND.js";
13
+ export { default as OR } from "./opcodes/OR.js";
14
+ export { default as XOR } from "./opcodes/XOR.js";
15
+ export { default as BYTE } from "./opcodes/BYTE.js";
16
+ export { default as NOT } from "./opcodes/NOT.js";
17
+ export { default as SHL } from "./opcodes/SHL.js";
18
+ export { default as SHR } from "./opcodes/SHR.js";
19
+ export { default as KECCAK256 } from "./opcodes/KECCAK256.js";
20
+ export { default as ADDRESS } from "./opcodes/ADDRESS.js";
21
+ export { default as CALLER } from "./opcodes/CALLER.js";
22
+ export { default as CALLVALUE } from "./opcodes/CALLVALUE.js";
23
+ export { default as CALLDATALOAD } from "./opcodes/CALLDATALOAD.js";
24
+ export { default as CALLDATASIZE } from "./opcodes/CALLDATASIZE.js";
25
+ export { default as CALLDATACOPY } from "./opcodes/CALLDATACOPY.js";
26
+ export { default as CODECOPY } from "./opcodes/CODECOPY.js";
27
+ export { default as EXTCODESIZE } from "./opcodes/EXTCODESIZE.js";
28
+ export { default as EXTCODECOPY } from "./opcodes/EXTCODECOPY.js";
29
+ export { default as RETURNDATASIZE } from "./opcodes/RETURNDATASIZE.js";
30
+ export { default as TIMESTAMP } from "./opcodes/TIMESTAMP.js";
31
+ export { default as CHAINID } from "./opcodes/CHAINID.js";
32
+ export { default as POP } from "./opcodes/POP.js";
33
+ export { default as MLOAD } from "./opcodes/MLOAD.js";
34
+ export { default as MSTORE } from "./opcodes/MSTORE.js";
35
+ export { default as SLOAD } from "./opcodes/SLOAD.js";
36
+ export { default as SSTORE } from "./opcodes/SSTORE.js";
37
+ export { default as JUMP } from "./opcodes/JUMP.js";
38
+ export { default as JUMPI } from "./opcodes/JUMPI.js";
39
+ export { default as MSIZE } from "./opcodes/MSIZE.js";
40
+ export { default as GAS } from "./opcodes/GAS.js";
41
+ export { default as JUMPDEST } from "./opcodes/JUMPDEST.js";
42
+ export { default as TLOAD } from "./opcodes/TLOAD.js";
43
+ export { default as TSTORE } from "./opcodes/TSTORE.js";
44
+ export { default as PUSH } from "./opcodes/PUSH.js";
45
+ export { default as DUP } from "./opcodes/DUP.js";
46
+ export { default as SWAP } from "./opcodes/SWAP.js";
47
+ export { default as LOG } from "./opcodes/LOG.js";
48
+ export { default as CREATE } from "./opcodes/CREATE.js";
49
+ export { default as RETURN } from "./opcodes/RETURN.js";
50
+ export { default as CREATE2 } from "./opcodes/CREATE2.js";
51
+ export { default as STATICCALL } from "./opcodes/STATICCALL.js";
52
+ export { default as REVERT } from "./opcodes/REVERT.js";
53
+ //# sourceMappingURL=opset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opset.d.ts","sourceRoot":"","sources":["../../../src/opsets/9db704/opset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,52 @@
1
+ export { default as STOP } from "./opcodes/STOP.js";
2
+ export { default as ADD } from "./opcodes/ADD.js";
3
+ export { default as MUL } from "./opcodes/MUL.js";
4
+ export { default as SUB } from "./opcodes/SUB.js";
5
+ export { default as DIV } from "./opcodes/DIV.js";
6
+ export { default as LT } from "./opcodes/LT.js";
7
+ export { default as GT } from "./opcodes/GT.js";
8
+ export { default as SLT } from "./opcodes/SLT.js";
9
+ export { default as SGT } from "./opcodes/SGT.js";
10
+ export { default as EQ } from "./opcodes/EQ.js";
11
+ export { default as ISZERO } from "./opcodes/ISZERO.js";
12
+ export { default as AND } from "./opcodes/AND.js";
13
+ export { default as OR } from "./opcodes/OR.js";
14
+ export { default as XOR } from "./opcodes/XOR.js";
15
+ export { default as BYTE } from "./opcodes/BYTE.js";
16
+ export { default as NOT } from "./opcodes/NOT.js";
17
+ export { default as SHL } from "./opcodes/SHL.js";
18
+ export { default as SHR } from "./opcodes/SHR.js";
19
+ export { default as KECCAK256 } from "./opcodes/KECCAK256.js";
20
+ export { default as ADDRESS } from "./opcodes/ADDRESS.js";
21
+ export { default as CALLER } from "./opcodes/CALLER.js";
22
+ export { default as CALLVALUE } from "./opcodes/CALLVALUE.js";
23
+ export { default as CALLDATALOAD } from "./opcodes/CALLDATALOAD.js";
24
+ export { default as CALLDATASIZE } from "./opcodes/CALLDATASIZE.js";
25
+ export { default as CALLDATACOPY } from "./opcodes/CALLDATACOPY.js";
26
+ export { default as CODECOPY } from "./opcodes/CODECOPY.js";
27
+ export { default as EXTCODESIZE } from "./opcodes/EXTCODESIZE.js";
28
+ export { default as EXTCODECOPY } from "./opcodes/EXTCODECOPY.js";
29
+ export { default as RETURNDATASIZE } from "./opcodes/RETURNDATASIZE.js";
30
+ export { default as TIMESTAMP } from "./opcodes/TIMESTAMP.js";
31
+ export { default as CHAINID } from "./opcodes/CHAINID.js";
32
+ export { default as POP } from "./opcodes/POP.js";
33
+ export { default as MLOAD } from "./opcodes/MLOAD.js";
34
+ export { default as MSTORE } from "./opcodes/MSTORE.js";
35
+ export { default as SLOAD } from "./opcodes/SLOAD.js";
36
+ export { default as SSTORE } from "./opcodes/SSTORE.js";
37
+ export { default as JUMP } from "./opcodes/JUMP.js";
38
+ export { default as JUMPI } from "./opcodes/JUMPI.js";
39
+ export { default as MSIZE } from "./opcodes/MSIZE.js";
40
+ export { default as GAS } from "./opcodes/GAS.js";
41
+ export { default as JUMPDEST } from "./opcodes/JUMPDEST.js";
42
+ export { default as TLOAD } from "./opcodes/TLOAD.js";
43
+ export { default as TSTORE } from "./opcodes/TSTORE.js";
44
+ export { default as PUSH } from "./opcodes/PUSH.js";
45
+ export { default as DUP } from "./opcodes/DUP.js";
46
+ export { default as SWAP } from "./opcodes/SWAP.js";
47
+ export { default as LOG } from "./opcodes/LOG.js";
48
+ export { default as CREATE } from "./opcodes/CREATE.js";
49
+ export { default as RETURN } from "./opcodes/RETURN.js";
50
+ export { default as CREATE2 } from "./opcodes/CREATE2.js";
51
+ export { default as STATICCALL } from "./opcodes/STATICCALL.js";
52
+ export { default as REVERT } from "./opcodes/REVERT.js";
@@ -0,0 +1,49 @@
1
+ type MapComponents<M, V = never, A extends unknown[] = []> = M extends Map<infer K, infer V> ? MapComponents<V, V, [...A, K]> : {
2
+ keyPath: A;
3
+ value: V;
4
+ };
5
+ type Context = {
6
+ origin: string;
7
+ sender: string;
8
+ to: null | string;
9
+ address: null | string;
10
+ value: bigint;
11
+ pc: number;
12
+ gas: bigint;
13
+ stack: Array<bigint>;
14
+ memory: null | ArrayBuffer;
15
+ C_mem_prev: bigint;
16
+ returndata: null | ArrayBuffer;
17
+ accountAccessSet: Set<string>;
18
+ storageAccessSet: Map<string, Set<bigint>>;
19
+ depth: number;
20
+ calldata: null | ArrayBuffer;
21
+ subcontext: null | Context;
22
+ blocked: boolean;
23
+ reverted: null | boolean;
24
+ states: Array<{
25
+ accounts: null | Map<string, {
26
+ nonce: bigint;
27
+ balance: bigint;
28
+ code: null | ArrayBuffer;
29
+ }>;
30
+ transientStorage: null | Map<string, Map<bigint, bigint>>;
31
+ storage: null | Map<string, Map<bigint, bigint>>;
32
+ }>;
33
+ refund: bigint;
34
+ code: null | ArrayBuffer;
35
+ memoryWords: number;
36
+ L: null | bigint;
37
+ };
38
+ type Artifact = {
39
+ variant: null | number;
40
+ width: number;
41
+ literal: null | bigint;
42
+ };
43
+ type PartialContext = {
44
+ origin: string;
45
+ sender: string;
46
+ code: ArrayBuffer;
47
+ } & Partial<Context>;
48
+ export type { MapComponents, Context, Artifact, PartialContext };
49
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,IACrD,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GACzB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAC9B;IAAE,OAAO,EAAC,CAAC,CAAC;IAAC,KAAK,EAAC,CAAC,CAAA;CAAE,CAAC;AAEjC,KAAK,OAAO,GAAG;IACX,MAAM,EAAC,MAAM,CAAC;IACd,MAAM,EAAC,MAAM,CAAC;IACd,EAAE,EAAC,IAAI,GAAC,MAAM,CAAC;IACf,OAAO,EAAC,IAAI,GAAC,MAAM,CAAC;IACpB,KAAK,EAAC,MAAM,CAAC;IACb,EAAE,EAAC,MAAM,CAAC;IACV,GAAG,EAAC,MAAM,CAAC;IACX,KAAK,EAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACnB,MAAM,EAAC,IAAI,GAAC,WAAW,CAAA;IACvB,UAAU,EAAC,MAAM,CAAC;IAClB,UAAU,EAAC,IAAI,GAAC,WAAW,CAAA;IAC3B,gBAAgB,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,gBAAgB,EAAC,GAAG,CAAC,MAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACzC,KAAK,EAAC,MAAM,CAAC;IACb,QAAQ,EAAC,IAAI,GAAC,WAAW,CAAC;IAC1B,UAAU,EAAC,IAAI,GAAC,OAAO,CAAC;IACxB,OAAO,EAAC,OAAO,CAAC;IAChB,QAAQ,EAAC,IAAI,GAAC,OAAO,CAAC;IACtB,MAAM,EAAC,KAAK,CAAC;QACT,QAAQ,EAAC,IAAI,GAAC,GAAG,CAAC,MAAM,EAAC;YAAE,KAAK,EAAC,MAAM,CAAC;YAAC,OAAO,EAAC,MAAM,CAAC;YAAC,IAAI,EAAC,IAAI,GAAC,WAAW,CAAA;SAAE,CAAC,CAAC;QAClF,gBAAgB,EAAC,IAAI,GAAC,GAAG,CAAC,MAAM,EAAC,GAAG,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC,CAAC;QACrD,OAAO,EAAC,IAAI,GAAC,GAAG,CAAC,MAAM,EAAC,GAAG,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC,CAAA;KAC9C,CAAC,CAAC;IACH,MAAM,EAAC,MAAM,CAAC;IACd,IAAI,EAAC,IAAI,GAAC,WAAW,CAAC;IACtB,WAAW,EAAC,MAAM,CAAC;IACnB,CAAC,EAAC,IAAI,GAAC,MAAM,CAAA;CAChB,CAAC;AAEF,KAAK,QAAQ,GAAG;IACZ,OAAO,EAAC,IAAI,GAAC,MAAM,CAAA;IACnB,KAAK,EAAC,MAAM,CAAC;IACb,OAAO,EAAC,IAAI,GAAC,MAAM,CAAC;CACvB,CAAC;AAGF,KAAK,cAAc,GAAG;IAClB,MAAM,EAAC,MAAM,CAAC;IACd,MAAM,EAAC,MAAM,CAAC;IACd,IAAI,EAAC,WAAW,CAAA;CACnB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAErB,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1 @@
1
+ export {};
package/package.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "@bradthomasbrown/evm-single-context",
3
+ "description": "An implementation of a single-context ethereum virtual machine in JavaScript/TypeScript.",
4
+ "version": "1.0.0",
5
+ "author": "Brad Brown <https://t.me/bradthomasbrown>",
6
+ "type": "module",
7
+ "files": [
8
+ "dist/"
9
+ ],
10
+ "exports": {
11
+ ".": "./dist/machine.js",
12
+ "./lib": "./dist/lib.js",
13
+ "./types": "./dist/types.js",
14
+ "./opsets/9db704": "./dist/opsets/9db704/opset.js"
15
+ },
16
+ "dependencies": {
17
+ "@bradthomasbrown/75bb14": "^1.0.0",
18
+ "@bradthomasbrown/900ef2": "^1.0.0",
19
+ "@bradthomasbrown/ecdsa": "^2.0.1",
20
+ "@bradthomasbrown/entity": "^1.0.1",
21
+ "@bradthomasbrown/finite-field": "^2.0.5",
22
+ "@bradthomasbrown/keccak": "^1.0.1",
23
+ "@bradthomasbrown/machine": "^1.0.0",
24
+ "@bradthomasbrown/rlp": "^1.0.0"
25
+ }
26
+ }