tokamak-l2js 0.0.1

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 (84) hide show
  1. package/LICENSE-APACHE +201 -0
  2. package/LICENSE-MIT +21 -0
  3. package/NOTICE +2 -0
  4. package/README.md +31 -0
  5. package/dist/cjs/crypto/index.js +112 -0
  6. package/dist/cjs/crypto/index.js.map +1 -0
  7. package/dist/cjs/index.js +33 -0
  8. package/dist/cjs/index.js.map +1 -0
  9. package/dist/cjs/package.json +3 -0
  10. package/dist/cjs/params/index.js +12 -0
  11. package/dist/cjs/params/index.js.map +1 -0
  12. package/dist/cjs/stateManager/TokamakL2StateManager.js +227 -0
  13. package/dist/cjs/stateManager/TokamakL2StateManager.js.map +1 -0
  14. package/dist/cjs/stateManager/constructors.js +26 -0
  15. package/dist/cjs/stateManager/constructors.js.map +1 -0
  16. package/dist/cjs/stateManager/index.js +22 -0
  17. package/dist/cjs/stateManager/index.js.map +1 -0
  18. package/dist/cjs/stateManager/types.js +3 -0
  19. package/dist/cjs/stateManager/types.js.map +1 -0
  20. package/dist/cjs/tx/TokamakL2Tx.js +148 -0
  21. package/dist/cjs/tx/TokamakL2Tx.js.map +1 -0
  22. package/dist/cjs/tx/constructors.js +55 -0
  23. package/dist/cjs/tx/constructors.js.map +1 -0
  24. package/dist/cjs/tx/index.js +21 -0
  25. package/dist/cjs/tx/index.js.map +1 -0
  26. package/dist/cjs/tx/types.js +3 -0
  27. package/dist/cjs/tx/types.js.map +1 -0
  28. package/dist/cjs/utils/utils.js +89 -0
  29. package/dist/cjs/utils/utils.js.map +1 -0
  30. package/dist/cjs/utils/web.js +35 -0
  31. package/dist/cjs/utils/web.js.map +1 -0
  32. package/dist/crypto/index.d.ts +11 -0
  33. package/dist/crypto/index.d.ts.map +1 -0
  34. package/dist/crypto/index.js +103 -0
  35. package/dist/crypto/index.js.map +1 -0
  36. package/dist/index.d.ts +7 -0
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/index.js +7 -0
  39. package/dist/index.js.map +1 -0
  40. package/dist/params/index.d.ts +7 -0
  41. package/dist/params/index.d.ts.map +1 -0
  42. package/dist/params/index.js +9 -0
  43. package/dist/params/index.js.map +1 -0
  44. package/dist/stateManager/TokamakL2StateManager.d.ts +24 -0
  45. package/dist/stateManager/TokamakL2StateManager.d.ts.map +1 -0
  46. package/dist/stateManager/TokamakL2StateManager.js +223 -0
  47. package/dist/stateManager/TokamakL2StateManager.js.map +1 -0
  48. package/dist/stateManager/constructors.d.ts +5 -0
  49. package/dist/stateManager/constructors.d.ts.map +1 -0
  50. package/dist/stateManager/constructors.js +22 -0
  51. package/dist/stateManager/constructors.js.map +1 -0
  52. package/dist/stateManager/index.d.ts +4 -0
  53. package/dist/stateManager/index.d.ts.map +1 -0
  54. package/dist/stateManager/index.js +4 -0
  55. package/dist/stateManager/index.js.map +1 -0
  56. package/dist/stateManager/types.d.ts +27 -0
  57. package/dist/stateManager/types.d.ts.map +1 -0
  58. package/dist/stateManager/types.js +2 -0
  59. package/dist/stateManager/types.js.map +1 -0
  60. package/dist/tx/TokamakL2Tx.d.ts +23 -0
  61. package/dist/tx/TokamakL2Tx.d.ts.map +1 -0
  62. package/dist/tx/TokamakL2Tx.js +144 -0
  63. package/dist/tx/TokamakL2Tx.js.map +1 -0
  64. package/dist/tx/constructors.d.ts +18 -0
  65. package/dist/tx/constructors.d.ts.map +1 -0
  66. package/dist/tx/constructors.js +50 -0
  67. package/dist/tx/constructors.js.map +1 -0
  68. package/dist/tx/index.d.ts +4 -0
  69. package/dist/tx/index.d.ts.map +1 -0
  70. package/dist/tx/index.js +3 -0
  71. package/dist/tx/index.js.map +1 -0
  72. package/dist/tx/types.d.ts +32 -0
  73. package/dist/tx/types.d.ts.map +1 -0
  74. package/dist/tx/types.js +2 -0
  75. package/dist/tx/types.js.map +1 -0
  76. package/dist/utils/utils.d.ts +6 -0
  77. package/dist/utils/utils.d.ts.map +1 -0
  78. package/dist/utils/utils.js +84 -0
  79. package/dist/utils/utils.js.map +1 -0
  80. package/dist/utils/web.d.ts +13 -0
  81. package/dist/utils/web.d.ts.map +1 -0
  82. package/dist/utils/web.js +28 -0
  83. package/dist/utils/web.js.map +1 -0
  84. package/package.json +65 -0
@@ -0,0 +1,227 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TokamakL2StateManager = void 0;
4
+ const statemanager_1 = require("@ethereumjs/statemanager");
5
+ const imt_1 = require("@zk-kit/imt");
6
+ const util_1 = require("@ethereumjs/util");
7
+ const ethers_1 = require("ethers");
8
+ const rlp_1 = require("@ethereumjs/rlp");
9
+ const index_js_1 = require("../params/index.js");
10
+ const index_js_2 = require("../crypto/index.js");
11
+ class TokamakL2StateManager extends statemanager_1.MerkleStateManager {
12
+ constructor() {
13
+ super(...arguments);
14
+ this._cachedOpts = null;
15
+ this._registeredKeys = null;
16
+ this._initialMerkleTree = null;
17
+ }
18
+ async initTokamakExtendsFromRPC(rpcUrl, opts) {
19
+ if (this._cachedOpts !== null) {
20
+ throw new Error('Cannot rewrite cached opts');
21
+ }
22
+ this._cachedOpts = opts;
23
+ await this.initTokamakExtend(opts);
24
+ await this.fetchStorageFromRPC(rpcUrl, opts);
25
+ if (this._initialMerkleTree !== null) {
26
+ throw new Error('Merkle tree is already initialized');
27
+ }
28
+ this._initialMerkleTree = await TokamakL2MerkleTree.buildFromTokamakL2StateManager(this);
29
+ }
30
+ async initTokamakExtendsFromSnapshot(snapshot, opts) {
31
+ if (this._cachedOpts !== null) {
32
+ throw new Error('Cannot rewrite cached opts');
33
+ }
34
+ this._cachedOpts = opts;
35
+ await this.initTokamakExtend(opts);
36
+ await this.fetchStorageFromSnapshot(snapshot, opts);
37
+ if (this._initialMerkleTree !== null) {
38
+ throw new Error('Merkle tree is already initialized');
39
+ }
40
+ this._initialMerkleTree = await TokamakL2MerkleTree.buildFromTokamakL2StateManager(this);
41
+ if (BigInt(this._initialMerkleTree.root) !== (0, util_1.hexToBigInt)((0, util_1.addHexPrefix)(snapshot.stateRoot))) {
42
+ throw new Error(`Creating TokamakL2StateManager using StateSnapshot fails: (provided root: ${snapshot.stateRoot}, reconstructed root: ${this._initialMerkleTree.toString()})`);
43
+ }
44
+ }
45
+ async initTokamakExtend(opts) {
46
+ if (opts.common.customCrypto.keccak256 === undefined) {
47
+ throw new Error('Custom crypto must be set');
48
+ }
49
+ const contractAddress = new util_1.Address((0, util_1.toBytes)(opts.contractAddress));
50
+ const POSEIDON_RLP = opts.common.customCrypto.keccak256(rlp_1.RLP.encode(new Uint8Array([])));
51
+ const POSEIDON_NULL = opts.common.customCrypto.keccak256(new Uint8Array(0));
52
+ const contractAccount = (0, util_1.createAccount)({ nonce: 0n, balance: 0n, storageRoot: POSEIDON_RLP, codeHash: POSEIDON_NULL });
53
+ await this.putAccount(contractAddress, contractAccount);
54
+ }
55
+ async fetchStorageFromRPC(rpcUrl, opts) {
56
+ const provider = new ethers_1.ethers.JsonRpcProvider(rpcUrl);
57
+ const contractAddress = new util_1.Address((0, util_1.toBytes)(opts.contractAddress));
58
+ if (await this.getAccount(contractAddress) === undefined) {
59
+ throw new Error('TokamakL2StateManager is not initialized.');
60
+ }
61
+ if (opts.blockNumber === undefined) {
62
+ throw new Error('Creating TokamakL2StateManager from RPC requires a block number.');
63
+ }
64
+ const byteCodeStr = await provider.getCode(contractAddress.toString(), opts.blockNumber);
65
+ await this.putCode(contractAddress, (0, util_1.hexToBytes)((0, util_1.addHexPrefix)(byteCodeStr)));
66
+ if (opts.initStorageKeys === undefined) {
67
+ throw new Error('Creating TokamakL2StateManager from RPC requires L1 and L2 key pairs.');
68
+ }
69
+ if (this._registeredKeys !== null) {
70
+ throw new Error('Cannot rewrite registered keys');
71
+ }
72
+ const usedL1Keys = new Set();
73
+ const registeredL2KeyBigInts = new Set();
74
+ this._registeredKeys = [];
75
+ for (const keys of opts.initStorageKeys) {
76
+ const keyL1BigInt = (0, util_1.bytesToBigInt)(keys.L1);
77
+ const keyL2BigInt = (0, util_1.bytesToBigInt)(keys.L2);
78
+ if (usedL1Keys.has(keyL1BigInt)) {
79
+ throw new Error(`Duplication in L1 MPT keys.`);
80
+ }
81
+ if (registeredL2KeyBigInts.has(keyL2BigInt)) {
82
+ throw new Error(`Duplication in L2 MPT keys.`);
83
+ }
84
+ const v = await provider.getStorage(contractAddress.toString(), (0, util_1.bytesToBigInt)(keys.L1), opts.blockNumber);
85
+ const vBytes = (0, util_1.hexToBytes)((0, util_1.addHexPrefix)(v));
86
+ await this.putStorage(contractAddress, keys.L2, vBytes);
87
+ usedL1Keys.add(keyL1BigInt);
88
+ registeredL2KeyBigInts.add(keyL2BigInt);
89
+ this._registeredKeys.push(keys.L2);
90
+ }
91
+ }
92
+ async fetchStorageFromSnapshot(snapshot, opts) {
93
+ if (opts.contractCode === undefined) {
94
+ throw new Error('Creating TokamakL2StateManager using StateSnapshot requires a contract code.');
95
+ }
96
+ const contractAddress = new util_1.Address((0, util_1.toBytes)(opts.contractAddress));
97
+ await this.putCode(contractAddress, (0, util_1.hexToBytes)((0, util_1.addHexPrefix)(opts.contractCode)));
98
+ if (this._registeredKeys !== null) {
99
+ throw new Error('Cannot rewrite registered keys');
100
+ }
101
+ this._registeredKeys = snapshot.registeredKeys.map(str => (0, util_1.hexToBytes)((0, util_1.addHexPrefix)(str)));
102
+ for (const entry of [...snapshot.storageEntries, ...snapshot.preAllocatedLeaves]) {
103
+ const vBytes = (0, util_1.hexToBytes)((0, util_1.addHexPrefix)(entry.value));
104
+ const keyBytes = (0, util_1.hexToBytes)((0, util_1.addHexPrefix)(entry.key));
105
+ await this.putStorage(contractAddress, keyBytes, vBytes);
106
+ }
107
+ }
108
+ async convertLeavesIntoMerkleTreeLeaves() {
109
+ const contractAddress = new util_1.Address((0, util_1.toBytes)(this.cachedOpts.contractAddress));
110
+ const leaves = new Array(index_js_1.MAX_MT_LEAVES);
111
+ for (var index = 0; index < index_js_1.MAX_MT_LEAVES; index++) {
112
+ const key = this.registeredKeys[index];
113
+ if (key === undefined) {
114
+ leaves[index] = (0, index_js_2.poseidon_raw)([0n, 0n]);
115
+ }
116
+ else {
117
+ const val = await this.getStorage(contractAddress, key);
118
+ leaves[index] = (0, index_js_2.poseidon_raw)([(0, util_1.bytesToBigInt)(key), (0, util_1.bytesToBigInt)(val)]);
119
+ }
120
+ }
121
+ return leaves;
122
+ }
123
+ _permuteRegisteredKeys(permutation) {
124
+ if (this._registeredKeys === null) {
125
+ throw new Error('Registered storage keys must be permuted after init.');
126
+ }
127
+ const permutedKeys = [...this._registeredKeys];
128
+ for (const [newIdx, oldIdx] of permutation.entries()) {
129
+ permutedKeys[newIdx] = this._registeredKeys[oldIdx].slice();
130
+ }
131
+ this._registeredKeys = permutedKeys;
132
+ }
133
+ // getters
134
+ get initialMerkleTree() {
135
+ if (this._initialMerkleTree === null) {
136
+ throw new Error('Merkle tree is not initialized');
137
+ }
138
+ const imt = this._initialMerkleTree;
139
+ return new imt_1.IMT(index_js_2.poseidon_raw, imt.depth, 0n, imt.arity, imt.leaves);
140
+ }
141
+ async getUpdatedMerkleTreeRoot(permutation) {
142
+ if (permutation !== undefined) {
143
+ this._permuteRegisteredKeys(permutation);
144
+ }
145
+ const merkleTree = await TokamakL2MerkleTree.buildFromTokamakL2StateManager(this);
146
+ const _root = merkleTree.root;
147
+ let root = new Uint8Array([]);
148
+ if (typeof _root === 'bigint') {
149
+ root = (0, util_1.bigIntToBytes)(_root);
150
+ }
151
+ if (typeof _root === 'string') {
152
+ root = (0, util_1.hexToBytes)((0, util_1.addHexPrefix)(_root));
153
+ }
154
+ if (typeof _root === 'number') {
155
+ root = (0, util_1.bigIntToBytes)(BigInt(_root));
156
+ }
157
+ return (0, util_1.bytesToBigInt)(root);
158
+ }
159
+ async getMerkleProof(leafIndex) {
160
+ const merkleTree = await TokamakL2MerkleTree.buildFromTokamakL2StateManager(this);
161
+ // pathIndices of this proof generation is incorrect. The indices are based on binary, but we are using 4-ary.
162
+ return merkleTree.createProof(leafIndex);
163
+ }
164
+ // public getInputMerkleTreeRootForTxNonce(txNonce: number) {
165
+ // const val = this._merkleTreeRoots[txNonce]
166
+ // if (val === undefined) {
167
+ // throw new Error('The Merkle tree has not been updated')
168
+ // }
169
+ // return val
170
+ // }
171
+ get registeredKeys() { return this._registeredKeys; }
172
+ getMTIndex(key) {
173
+ const MTIndex = this.registeredKeys.findIndex(register => (0, util_1.bytesToBigInt)(register) === key);
174
+ return MTIndex;
175
+ }
176
+ get cachedOpts() { return this._cachedOpts; }
177
+ async captureStateSnapshot(prevSnapshot) {
178
+ if ((0, util_1.hexToBigInt)((0, util_1.addHexPrefix)(prevSnapshot.contractAddress)) !== (0, util_1.bytesToBigInt)(this.cachedOpts.contractAddress.bytes)) {
179
+ throw new Error('Mismatch between contract addresses of the previous state snapshot and the current state.');
180
+ }
181
+ const contractAddress = this.cachedOpts.contractAddress;
182
+ const getUpdatedEntry = async (entry) => {
183
+ const keyBytes = (0, util_1.hexToBytes)((0, util_1.addHexPrefix)(entry.key));
184
+ const value = await this.getStorage(contractAddress, keyBytes);
185
+ return {
186
+ key: entry.key,
187
+ value: (0, util_1.bytesToHex)(value),
188
+ };
189
+ };
190
+ // Build state snapshot (matching snapshot.ts logic)
191
+ const permutedRegisteredKeys = this.registeredKeys.map((key) => (0, util_1.bytesToHex)(key));
192
+ const afterStorageEntries = await Promise.all(prevSnapshot.storageEntries.map(entry => getUpdatedEntry(entry)));
193
+ const afterPreAllocatedLeaves = await Promise.all(prevSnapshot.preAllocatedLeaves.map(entry => getUpdatedEntry(entry)));
194
+ return {
195
+ channelId: prevSnapshot.channelId,
196
+ stateRoot: (await this.getUpdatedMerkleTreeRoot()).toString(16),
197
+ registeredKeys: permutedRegisteredKeys,
198
+ storageEntries: afterStorageEntries,
199
+ contractAddress: prevSnapshot.contractAddress,
200
+ preAllocatedLeaves: afterPreAllocatedLeaves,
201
+ };
202
+ }
203
+ }
204
+ exports.TokamakL2StateManager = TokamakL2StateManager;
205
+ class TokamakL2MerkleTree extends imt_1.IMT {
206
+ constructor() {
207
+ super(...arguments);
208
+ this._cachedTokamakL2StateManager = null;
209
+ }
210
+ initCache(stateManager) {
211
+ if (this._cachedTokamakL2StateManager !== null) {
212
+ throw new Error('Cannot rewirte cached state manager');
213
+ }
214
+ this._cachedTokamakL2StateManager = stateManager;
215
+ }
216
+ get cachedTokamakL2StateManager() {
217
+ return this._cachedTokamakL2StateManager;
218
+ }
219
+ static async buildFromTokamakL2StateManager(mpt) {
220
+ const treeDepth = index_js_1.MT_DEPTH;
221
+ const leaves = await mpt.convertLeavesIntoMerkleTreeLeaves();
222
+ const mt = new TokamakL2MerkleTree(index_js_2.poseidon_raw, treeDepth, 0n, index_js_1.POSEIDON_INPUTS, leaves);
223
+ mt.initCache(mpt);
224
+ return mt;
225
+ }
226
+ }
227
+ //# sourceMappingURL=TokamakL2StateManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokamakL2StateManager.js","sourceRoot":"","sources":["../../../src/stateManager/TokamakL2StateManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createTokamakL2StateManagerFromL1RPC = createTokamakL2StateManagerFromL1RPC;
4
+ exports.createTokamakL2StateManagerFromStateSnapshot = createTokamakL2StateManagerFromStateSnapshot;
5
+ const TokamakL2StateManager_js_1 = require("./TokamakL2StateManager.js");
6
+ const index_js_1 = require("../params/index.js");
7
+ async function createTokamakL2StateManagerFromL1RPC(rpcUrl, opts) {
8
+ if (opts.initStorageKeys === undefined) {
9
+ throw new Error('Creating TokamakL2StateManager using StateSnapshot requires L1 and L2 key pairs.');
10
+ }
11
+ if (opts.initStorageKeys.length > index_js_1.MAX_MT_LEAVES) {
12
+ throw new Error(`Allowed maximum number of storage slots = ${index_js_1.MAX_MT_LEAVES}, but taking ${opts.initStorageKeys.length}`);
13
+ }
14
+ const stateManager = new TokamakL2StateManager_js_1.TokamakL2StateManager(opts);
15
+ await stateManager.initTokamakExtendsFromRPC(rpcUrl, opts);
16
+ return stateManager;
17
+ }
18
+ async function createTokamakL2StateManagerFromStateSnapshot(snapshot, opts) {
19
+ if (snapshot.registeredKeys.length > index_js_1.MAX_MT_LEAVES) {
20
+ throw new Error(`Allowed maximum number of storage slots = ${index_js_1.MAX_MT_LEAVES}, but taking ${snapshot.registeredKeys.length}`);
21
+ }
22
+ const stateManager = new TokamakL2StateManager_js_1.TokamakL2StateManager(opts);
23
+ await stateManager.initTokamakExtendsFromSnapshot(snapshot, opts);
24
+ return stateManager;
25
+ }
26
+ //# sourceMappingURL=constructors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constructors.js","sourceRoot":"","sources":["../../../src/stateManager/constructors.ts"],"names":[],"mappings":";;AAIA,oFAeC;AAED,oGAYC;AAhCD,yEAAmE;AACnE,iDAAmD;AAE5C,KAAK,UAAU,oCAAoC,CACtD,MAAc,EACd,IAA+B;IAE/B,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAA;IACvG,CAAC;IACD,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,wBAAa,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,6CAA6C,wBAAa,gBAAgB,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAA;IAC5H,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,gDAAqB,CAAC,IAAI,CAAC,CAAC;IAErD,MAAM,YAAY,CAAC,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3D,OAAO,YAAY,CAAA;AACvB,CAAC;AAEM,KAAK,UAAU,4CAA4C,CAC9D,QAAuB,EACvB,IAA+B;IAE/B,IAAI,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,wBAAa,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,6CAA6C,wBAAa,gBAAgB,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAA;IAC/H,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,gDAAqB,CAAC,IAAI,CAAC,CAAC;IAErD,MAAM,YAAY,CAAC,8BAA8B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAClE,OAAO,YAAY,CAAA;AACvB,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.TokamakL2StateManager = void 0;
18
+ __exportStar(require("./constructors.js"), exports);
19
+ __exportStar(require("./types.js"), exports);
20
+ var TokamakL2StateManager_js_1 = require("./TokamakL2StateManager.js");
21
+ Object.defineProperty(exports, "TokamakL2StateManager", { enumerable: true, get: function () { return TokamakL2StateManager_js_1.TokamakL2StateManager; } });
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/stateManager/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oDAAiC;AACjC,6CAA0B;AAC1B,uEAAkE;AAAzD,iIAAA,qBAAqB,OAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/stateManager/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TokamakL2Tx = void 0;
4
+ const util_1 = require("@ethereumjs/util");
5
+ const tx_1 = require("@ethereumjs/tx");
6
+ const rlp_1 = require("@ethereumjs/rlp");
7
+ const misc_js_1 = require("@noble/curves/misc.js");
8
+ const index_js_1 = require("../crypto/index.js");
9
+ const utils_js_1 = require("../utils/utils.js");
10
+ const constructors_js_1 = require("./constructors.js");
11
+ // LegacyTx prohibits to add new members for extension. Bypassing this problem by the follow:
12
+ const _unsafeSenderPubKeyStorage = new WeakMap();
13
+ class TokamakL2Tx extends tx_1.LegacyTx {
14
+ // v: public key in bytes form
15
+ // r: randomizer in bytes form
16
+ // s: The EDDSA signature (in JUBJUB scalar field)
17
+ initUnsafeSenderPubKey(key) {
18
+ if (_unsafeSenderPubKeyStorage.has(this)) {
19
+ throw new Error('Overwriting the sender public key (unsafe) is not allowed');
20
+ }
21
+ _unsafeSenderPubKeyStorage.set(this, key);
22
+ }
23
+ get senderPubKeyUnsafe() {
24
+ const v = _unsafeSenderPubKeyStorage.get(this);
25
+ if (!v)
26
+ throw new Error('The sender public key (unsafe) is not initialized');
27
+ return v;
28
+ }
29
+ getFunctionSelector() {
30
+ if (this.data.length < 4) {
31
+ throw new Error('Insufficient transaction data');
32
+ }
33
+ return this.data.slice(0, 4);
34
+ }
35
+ getFunctionInput(index) {
36
+ const offset = 4 + 32 * index;
37
+ const endExclusiveIndex = offset + 32;
38
+ if (this.data.length < endExclusiveIndex) {
39
+ // throw new Error('Insufficient transaction data')
40
+ return new Uint8Array();
41
+ }
42
+ return this.data.slice(offset, endExclusiveIndex);
43
+ }
44
+ getUnsafeEddsaRandomizer() {
45
+ return this.r === undefined ? undefined : misc_js_1.jubjub.Point.fromBytes((0, util_1.bigIntToBytes)(this.r));
46
+ }
47
+ getUnsafeEddsaPubKey() {
48
+ return misc_js_1.jubjub.Point.fromBytes(this.senderPubKeyUnsafe);
49
+ }
50
+ isSigned() {
51
+ const { v, r, s } = this;
52
+ if (v === undefined || r === undefined || s === undefined) {
53
+ return false;
54
+ }
55
+ return true;
56
+ }
57
+ getMessageToSign() {
58
+ const messageRaw = [
59
+ (0, util_1.bigIntToUnpaddedBytes)(this.nonce),
60
+ this.to.bytes,
61
+ this.getFunctionSelector(),
62
+ ];
63
+ for (let inputIndex = 0; inputIndex < 9; inputIndex++) {
64
+ messageRaw.push(this.getFunctionInput(inputIndex));
65
+ }
66
+ return messageRaw.map(m => (0, util_1.setLengthLeft)(m, 32));
67
+ }
68
+ getSenderPublicKey() {
69
+ if (!this.isSigned()) {
70
+ throw new Error('Public key can be recovered only from a signed transaction');
71
+ }
72
+ const recovered = (0, index_js_1.getEddsaPublicKey)((0, util_1.concatBytes)(...this.getMessageToSign(), (0, util_1.setLengthLeft)(this.senderPubKeyUnsafe, 32)), this.v, (0, util_1.bigIntToBytes)(this.r), (0, util_1.bigIntToBytes)(this.s));
73
+ if (!(0, util_1.equalsBytes)(this.senderPubKeyUnsafe, recovered)) {
74
+ throw new Error('Recovered sender public key is different from the initialized one');
75
+ }
76
+ return recovered;
77
+ }
78
+ addSignature(v, r, s,
79
+ // convertV is `true` when called from `sign`
80
+ // This is used to convert the `v` output from `ecsign` (0 or 1) to the values used for legacy txs:
81
+ // 27 or 28 for non-EIP-155 protected txs
82
+ // 35 or 36 + chainId * 2 for EIP-155 protected txs
83
+ // See: https://eips.ethereum.org/EIPS/eip-155
84
+ convertV = false) {
85
+ if (convertV) {
86
+ throw new Error('convertV should be false');
87
+ }
88
+ const rBigint = typeof r === 'bigint' ? r : (0, util_1.bytesToBigInt)(r);
89
+ const sBigint = typeof s === 'bigint' ? s : (0, util_1.bytesToBigInt)(s);
90
+ const opts = { ...this.txOptions, common: this.common };
91
+ return (0, constructors_js_1.createTokamakL2Tx)({
92
+ nonce: this.nonce,
93
+ to: this.to,
94
+ data: this.data,
95
+ senderPubKey: this.senderPubKeyUnsafe,
96
+ v: 27n,
97
+ r: rBigint,
98
+ s: sBigint,
99
+ }, opts);
100
+ }
101
+ raw() {
102
+ return [
103
+ (0, util_1.bigIntToUnpaddedBytes)(this.nonce),
104
+ this.to.bytes,
105
+ this.data,
106
+ this.getSenderPublicKey(),
107
+ this.v !== undefined ? (0, util_1.bigIntToUnpaddedBytes)(this.v) : new Uint8Array(0),
108
+ this.r !== undefined ? (0, util_1.bigIntToUnpaddedBytes)(this.r) : new Uint8Array(0),
109
+ this.s !== undefined ? (0, util_1.bigIntToUnpaddedBytes)(this.s) : new Uint8Array(0),
110
+ ];
111
+ }
112
+ serialize() {
113
+ return rlp_1.RLP.encode(this.raw());
114
+ }
115
+ verifySignature() {
116
+ try {
117
+ // Main signature verification is done in `getSenderPublicKey()`
118
+ const publicKey = this.getSenderPublicKey();
119
+ return (0, util_1.unpadBytes)(publicKey).length !== 0;
120
+ }
121
+ catch {
122
+ return false;
123
+ }
124
+ }
125
+ getSenderAddress() {
126
+ const pubKeyByte = this.getSenderPublicKey();
127
+ const recovered = (0, utils_js_1.fromEdwardsToAddress)(pubKeyByte);
128
+ return recovered;
129
+ }
130
+ sign(privateKey) {
131
+ const sk = (0, util_1.bytesToBigInt)(privateKey);
132
+ if (sk < 0n || sk >= misc_js_1.jubjub.Point.Fn.ORDER) {
133
+ throw new Error('EDDSA private key must be in JubJub scalar field');
134
+ }
135
+ const msg = this.getMessageToSign();
136
+ const sig = (0, index_js_1.eddsaSign)(sk, msg);
137
+ const publicKey = misc_js_1.jubjub.Point.BASE.multiply(sk);
138
+ if (!publicKey.equals(misc_js_1.jubjub.Point.fromBytes(this.senderPubKeyUnsafe))) {
139
+ throw new Error("The public key initialized is not derived from the input private key");
140
+ }
141
+ if (!(0, index_js_1.eddsaVerify)(msg, publicKey, sig.R, sig.S)) {
142
+ throw new Error('Tried to sign but verification failure');
143
+ }
144
+ return this.addSignature(27n, (0, util_1.bytesToBigInt)(sig.R.toBytes()), sig.S);
145
+ }
146
+ }
147
+ exports.TokamakL2Tx = TokamakL2Tx;
148
+ //# sourceMappingURL=TokamakL2Tx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokamakL2Tx.js","sourceRoot":"","sources":["../../../src/tx/TokamakL2Tx.ts"],"names":[],"mappings":";;;AAAA,2CAAgK;AAChK,uCAAwI;AACxI,yCAAiE;AACjE,mDAA8C;AAE9C,iDAAwF;AACxF,gDAAkF;AAClF,uDAAqD;AAErD,6FAA6F;AAC7F,MAAM,0BAA0B,GAAG,IAAI,OAAO,EAA2B,CAAC;AAG1E,MAAa,WAAY,SAAQ,aAAQ;IAErC,8BAA8B;IAC9B,8BAA8B;IAC9B,kDAAkD;IAElD,sBAAsB,CAAC,GAAe;QAClC,IAAI,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC7E,CAAC;QACD,0BAA0B,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,kBAAkB;QAClB,MAAM,CAAC,GAAG,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAC7E,OAAO,CAAC,CAAC;IACb,CAAC;IAED,mBAAmB;QACf,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;QACpD,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAChC,CAAC;IAED,gBAAgB,CAAC,KAAa;QAC1B,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;QAC7B,MAAM,iBAAiB,GAAG,MAAM,GAAG,EAAE,CAAA;QACrC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC;YACvC,mDAAmD;YACnD,OAAO,IAAI,UAAU,EAAE,CAAA;QAC3B,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;IACrD,CAAC;IAED,wBAAwB;QACpB,OAAO,IAAI,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAA,oBAAa,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3F,CAAC;IAED,oBAAoB;QAChB,OAAO,gBAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAC1D,CAAC;IAEQ,QAAQ;QACb,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAA;QACxB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACxD,OAAO,KAAK,CAAA;QAChB,CAAC;QACD,OAAO,IAAI,CAAA;IACf,CAAC;IAEQ,gBAAgB;QACrB,MAAM,UAAU,GAAiB;YAC7B,IAAA,4BAAqB,EAAC,IAAI,CAAC,KAAK,CAAC;YACjC,IAAI,CAAC,EAAE,CAAC,KAAK;YACb,IAAI,CAAC,mBAAmB,EAAE;SAC7B,CAAA;QACD,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC;YACpD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAA;QACtD,CAAC;QACD,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,oBAAa,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IACpD,CAAC;IAEQ,kBAAkB;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;QACjF,CAAC;QACD,MAAM,SAAS,GAAG,IAAA,4BAAiB,EAC/B,IAAA,kBAAW,EAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAA,oBAAa,EAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,EACnF,IAAI,CAAC,CAAE,EACP,IAAA,oBAAa,EAAC,IAAI,CAAC,CAAE,CAAC,EACtB,IAAA,oBAAa,EAAC,IAAI,CAAC,CAAE,CAAC,CACzB,CAAA;QACD,IAAI,CAAC,IAAA,kBAAW,EAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAA;QACxF,CAAC;QACD,OAAO,SAAS,CAAA;IACpB,CAAC;IAEQ,YAAY,CACjB,CAAS,EACT,CAAsB,EACtB,CAAsB;IACtB,6CAA6C;IAC7C,mGAAmG;IACnG,yCAAyC;IACzC,mDAAmD;IACnD,8CAA8C;IAC9C,WAAoB,KAAK;QAEzB,IAAI,QAAQ,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC/C,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,oBAAa,EAAC,CAAC,CAAC,CAAA;QAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,oBAAa,EAAC,CAAC,CAAC,CAAA;QAE5D,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAA;QAEvD,OAAO,IAAA,mCAAiB,EACpB;YACI,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,YAAY,EAAE,IAAI,CAAC,kBAAkB;YACrC,CAAC,EAAE,GAAG;YACN,CAAC,EAAE,OAAO;YACV,CAAC,EAAE,OAAO;SACb,EACD,IAAI,CACP,CAAA;IACL,CAAC;IAEQ,GAAG;QACR,OAAO;YACH,IAAA,4BAAqB,EAAC,IAAI,CAAC,KAAK,CAAC;YACjC,IAAI,CAAC,EAAE,CAAC,KAAK;YACb,IAAI,CAAC,IAAI;YACT,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAA,4BAAqB,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;YACxE,IAAI,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAA,4BAAqB,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;YACxE,IAAI,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAA,4BAAqB,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;SAC3E,CAAA;IACL,CAAC;IAEQ,SAAS;QACd,OAAO,SAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IACjC,CAAC;IAEQ,eAAe;QACpB,IAAI,CAAC;YACD,gEAAgE;YAChE,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAA;YAC3C,OAAO,IAAA,iBAAU,EAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,CAAA;QAC7C,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,KAAK,CAAA;QAChB,CAAC;IACL,CAAC;IAEQ,gBAAgB;QACrB,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAA;QAC5C,MAAM,SAAS,GAAG,IAAA,+BAAoB,EAAC,UAAU,CAAC,CAAA;QAClD,OAAO,SAAS,CAAA;IACpB,CAAC;IAEQ,IAAI,CAAC,UAAsB;QAChC,MAAM,EAAE,GAAG,IAAA,oBAAa,EAAC,UAAU,CAAC,CAAA;QACpC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,gBAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;QACvE,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACnC,MAAM,GAAG,GAAiC,IAAA,oBAAS,EAAC,EAAE,EAAE,GAAG,CAAC,CAAA;QAE5D,MAAM,SAAS,GAAG,gBAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAChD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC;YACrE,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAA;QAC3F,CAAC;QACD,IAAI,CAAC,IAAA,sBAAW,EAAC,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;QAC7D,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CACpB,GAAG,EACH,IAAA,oBAAa,EAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAC9B,GAAG,CAAC,CAAC,CACR,CAAA;IACL,CAAC;CACJ;AAtKD,kCAsKC"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createTokamakL2Tx = createTokamakL2Tx;
4
+ exports.createTokamakL2TxFromBytesArray = createTokamakL2TxFromBytesArray;
5
+ exports.createTokamakL2TxFromRLP = createTokamakL2TxFromRLP;
6
+ const TokamakL2Tx_js_1 = require("./TokamakL2Tx.js");
7
+ const rlp_1 = require("@ethereumjs/rlp");
8
+ const util_1 = require("@ethereumjs/util");
9
+ const index_js_1 = require("../params/index.js");
10
+ function createTokamakL2Tx(txData, opts) {
11
+ if (opts.common?.customCrypto === undefined) {
12
+ throw new Error("Required 'common.customCrypto'");
13
+ }
14
+ // Set the minimum gasLimit to execute VM._runTx
15
+ const tx = new TokamakL2Tx_js_1.TokamakL2Tx({ ...txData, gasLimit: index_js_1.ANY_LARGE_GAS_LIMIT, gasPrice: index_js_1.ANY_LARGE_GAS_PRICE }, opts);
16
+ tx.initUnsafeSenderPubKey((0, util_1.toBytes)(txData.senderPubKey));
17
+ return tx;
18
+ }
19
+ /**
20
+ * Create a transaction from an array of byte encoded values ordered according to the devp2p network encoding - format noted below.
21
+ *
22
+ * Format: `[nonce, gasPrice, gasLimit, to, value, data, v, r, s]`
23
+ */
24
+ function createTokamakL2TxFromBytesArray(values, opts) {
25
+ if (values.length !== 7) {
26
+ throw (0, rlp_1.EthereumJSErrorWithoutCode)('Invalid transaction. Only expecting 7 values for signed tx.');
27
+ }
28
+ const [nonce, to, data, senderPubKey, v, r, s] = values;
29
+ const txDataRaw = { nonce, to, data, senderPubKey, v, r, s };
30
+ (0, util_1.validateNoLeadingZeroes)(txDataRaw);
31
+ const txDataFormat = {
32
+ nonce: (0, util_1.bytesToBigInt)(nonce),
33
+ to: new util_1.Address(to),
34
+ data,
35
+ senderPubKey,
36
+ v: (0, util_1.bytesToBigInt)(v),
37
+ r: (0, util_1.bytesToBigInt)(r),
38
+ s: (0, util_1.bytesToBigInt)(s),
39
+ };
40
+ return createTokamakL2Tx(txDataFormat, opts);
41
+ }
42
+ /**
43
+ * Instantiate a transaction from a RLP serialized tx.
44
+ *
45
+ * Format: `rlp([nonce, gasPrice, gasLimit, to, value, data,
46
+ * signatureV, signatureR, signatureS])`
47
+ */
48
+ function createTokamakL2TxFromRLP(serialized, opts) {
49
+ const values = rlp_1.RLP.decode(serialized);
50
+ if (!Array.isArray(values)) {
51
+ throw (0, rlp_1.EthereumJSErrorWithoutCode)('Invalid serialized tx input. Must be array');
52
+ }
53
+ return createTokamakL2TxFromBytesArray(values, opts);
54
+ }
55
+ //# sourceMappingURL=constructors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constructors.js","sourceRoot":"","sources":["../../../src/tx/constructors.ts"],"names":[],"mappings":";;AAQA,8CAQC;AAOD,0EAuBC;AAQD,4DAQC;AA7DD,qDAA8C;AAE9C,yCAAiE;AACjE,2CAAuG;AACvG,iDAA6E;AAG7E,SAAgB,iBAAiB,CAAC,MAAuB,EAAE,IAAe;IACtE,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,KAAK,SAAS,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;IACrD,CAAC;IACD,gDAAgD;IAChD,MAAM,EAAE,GAAI,IAAI,4BAAW,CAAC,EAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,8BAAmB,EAAE,QAAQ,EAAE,8BAAmB,EAAC,EAAE,IAAI,CAAC,CAAA;IAC5G,EAAE,CAAC,sBAAsB,CAAC,IAAA,cAAO,EAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAA;IACvD,OAAO,EAAE,CAAA;AACb,CAAC;AAED;;;;GAIG;AACH,SAAgB,+BAA+B,CAAC,MAAoB,EAAE,IAAe;IACnF,IAAK,MAAM,CAAC,MAAM,KAAK,CAAC,EAAG,CAAC;QAC1B,MAAM,IAAA,gCAA0B,EAC9B,6DAA6D,CAC9D,CAAA;IACH,CAAC;IAED,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAA;IAEvD,MAAM,SAAS,GAAG,EAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAA;IAC1D,IAAA,8BAAuB,EAAC,SAAS,CAAC,CAAA;IAElC,MAAM,YAAY,GAAoB;QACpC,KAAK,EAAE,IAAA,oBAAa,EAAC,KAAK,CAAC;QAC3B,EAAE,EAAE,IAAI,cAAO,CAAC,EAAE,CAAC;QACnB,IAAI;QACJ,YAAY;QACZ,CAAC,EAAE,IAAA,oBAAa,EAAC,CAAC,CAAC;QACnB,CAAC,EAAE,IAAA,oBAAa,EAAC,CAAC,CAAC;QACnB,CAAC,EAAE,IAAA,oBAAa,EAAC,CAAC,CAAC;KACpB,CAAA;IAED,OAAO,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;AAC9C,CAAC;AAED;;;;;GAKG;AACH,SAAgB,wBAAwB,CAAC,UAAsB,EAAE,IAAe;IAC9E,MAAM,MAAM,GAAG,SAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAErC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAA,gCAA0B,EAAC,4CAA4C,CAAC,CAAA;IAChF,CAAC;IAED,OAAO,+BAA+B,CAAC,MAAsB,EAAE,IAAI,CAAC,CAAA;AACtE,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.TokamakL2Tx = void 0;
18
+ var TokamakL2Tx_js_1 = require("./TokamakL2Tx.js");
19
+ Object.defineProperty(exports, "TokamakL2Tx", { enumerable: true, get: function () { return TokamakL2Tx_js_1.TokamakL2Tx; } });
20
+ __exportStar(require("./constructors.js"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tx/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mDAA8C;AAArC,6GAAA,WAAW,OAAA;AACpB,oDAAiC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tx/types.ts"],"names":[],"mappings":""}