hermez-node/test/txsets/tilsets.go
test/txsets/tilsets.goRaw
1package txsets
2
3// sets of instructions to be used in tests of other packages
4
5// NOTE: FeeSelector(126) ~ 10%
6// NOTE: FeeSelector(100) ~ 4%
7
8// SetBlockchain0 contains a set of transactions simulated to be from the smart contract
9var SetBlockchain0 = `
10// Set containing Blockchain transactions
11Type: Blockchain
12AddToken(1)
13AddToken(2)
14AddToken(3)
15
16// block:0 batch:1
17
18// Coordinator accounts, Idxs: 256, 257, 258, 259
19CreateAccountCoordinator(0) Coord
20CreateAccountCoordinator(1) Coord
21CreateAccountCoordinator(2) Coord
22CreateAccountCoordinator(3) Coord
23
24> batch
25// block:0 batch:2
26
27// deposits TokenID: 1
28CreateAccountDeposit(1) A: 50
29CreateAccountDeposit(1) B: 5
30CreateAccountDeposit(1) C: 200
31CreateAccountDeposit(1) D: 25
32CreateAccountDeposit(1) E: 25
33CreateAccountDeposit(1) F: 25
34CreateAccountDeposit(1) G: 25
35CreateAccountDeposit(1) H: 25
36CreateAccountDeposit(1) I: 25
37CreateAccountDeposit(1) J: 25
38CreateAccountDeposit(1) K: 25
39CreateAccountDeposit(1) L: 25
40CreateAccountDeposit(1) M: 25
41CreateAccountDeposit(1) N: 25
42CreateAccountDeposit(1) O: 25
43CreateAccountDeposit(1) P: 25
44CreateAccountDeposit(1) Q: 25
45CreateAccountDeposit(1) R: 25
46CreateAccountDeposit(1) S: 25
47CreateAccountDeposit(1) T: 25
48CreateAccountDeposit(1) U: 25
49CreateAccountDeposit(1) V: 25
50CreateAccountDeposit(1) W: 25
51CreateAccountDeposit(1) X: 25
52CreateAccountDeposit(1) Y: 25
53CreateAccountDeposit(1) Z: 25
54// deposits TokenID: 2
55CreateAccountDeposit(2) B: 5
56CreateAccountDeposit(2) A: 20
57// deposits TokenID: 3
58CreateAccountDeposit(3) B: 100
59// deposits TokenID: 0
60CreateAccountDeposit(0) B: 10000
61CreateAccountDeposit(0) C: 1
62
63> batchL1
64// block:0 batch:3
65
66// transactions TokenID: 1
67Transfer(1) A-B: 5 (1)
68Transfer(1) A-L: 10 (1)
69Transfer(1) A-M: 5 (1)
70Transfer(1) A-N: 5 (1)
71Transfer(1) A-O: 5 (1)
72Transfer(1) B-C: 3 (1)
73Transfer(1) C-A: 10 (126)
74Transfer(1) D-A: 5 (1)
75Transfer(1) D-Z: 5 (1)
76Transfer(1) D-Y: 5 (1)
77Transfer(1) D-X: 5 (1)
78Transfer(1) E-Z: 5 (2)
79Transfer(1) E-Y: 5 (1)
80Transfer(1) E-X: 5 (1)
81Transfer(1) F-Z: 5 (1)
82Transfer(1) G-K: 3 (1)
83Transfer(1) G-K: 3 (1)
84Transfer(1) G-K: 3 (1)
85Transfer(1) H-K: 3 (2)
86Transfer(1) H-K: 3 (1)
87Transfer(1) H-K: 3 (1)
88Transfer(0) B-C: 50 (100)
89
90> batchL1
91> block
92
93// block:1 batch:1
94
95// A (3) still does not exist, coordinator should create new L1Tx to create the account
96CreateAccountCoordinator(3) A
97
98Transfer(1) A-B: 1 (1)
99Transfer(1) A-B: 1 (1)
100Transfer(1) A-B: 1 (1)
101Transfer(3) B-A: 5 (1)
102Transfer(2) A-B: 5 (1)
103Transfer(1) I-K: 3 (1)
104Transfer(1) I-K: 3 (1)
105Transfer(1) I-K: 3 (1)
106Transfer(1) J-K: 3 (1)
107Transfer(1) J-K: 3 (1)
108Transfer(1) J-K: 3 (1)
109Transfer(1) K-J: 3 (1)
110Transfer(1) L-A: 5 (1)
111Transfer(1) L-Z: 5 (1)
112Transfer(1) L-Y: 5 (1)
113Transfer(1) L-X: 5 (1)
114Transfer(1) M-A: 5 (1)
115Transfer(1) M-Z: 5 (1)
116Transfer(1) M-Y: 5 (1)
117Transfer(1) N-A: 5 (1)
118Transfer(1) N-Z: 5 (2)
119Transfer(1) N-Y: 5 (1)
120Transfer(1) O-T: 3 (1)
121Transfer(1) O-U: 3 (1)
122Transfer(1) O-V: 3 (1)
123Transfer(1) P-T: 3 (1)
124Transfer(1) P-U: 3 (1)
125Transfer(1) P-V: 3 (5)
126Transfer(1) Q-O: 3 (1)
127Transfer(1) Q-P: 3 (1)
128Transfer(1) R-O: 3 (1)
129Transfer(1) R-P: 3 (1)
130Transfer(1) R-Q: 3 (1)
131Transfer(1) S-O: 3 (1)
132Transfer(1) S-P: 3 (1)
133Transfer(1) S-Q: 3 (1)
134Transfer(1) T-O: 3 (1)
135Transfer(1) T-P: 3 (1)
136Transfer(1) T-Q: 3 (1)
137Transfer(1) U-Z: 5 (3)
138Transfer(1) U-Y: 5 (1)
139Transfer(1) U-T: 3 (1)
140Transfer(1) V-Z: 5 (0)
141Transfer(1) V-Y: 6 (1)
142Transfer(1) V-T: 3 (1)
143Transfer(1) W-K: 3 (1)
144Transfer(1) W-J: 3 (1)
145Transfer(1) W-A: 5 (1)
146Transfer(1) W-Z: 5 (1)
147Transfer(1) X-B: 5 (1)
148Transfer(1) X-C: 10 (126)
149Transfer(1) X-D: 5 (1)
150Transfer(1) X-E: 5 (1)
151Transfer(1) Y-B: 5 (1)
152Transfer(1) Y-C: 5 (1)
153Transfer(1) Y-D: 5 (1)
154Transfer(1) Y-E: 5 (1)
155Transfer(1) Z-A: 5 (1)
156// exits
157ForceExit(1) A: 5
158Exit(1) K: 5 (1)
159Exit(1) X: 5 (1)
160Exit(1) Y: 5 (1)
161Exit(1) Z: 5 (1)
162
163> batch
164// block:1 batch:2
165
166Deposit(1) A: 50
167Deposit(1) B: 5
168Deposit(1) C: 20
169Deposit(1) D: 25
170Deposit(1) E: 25
171Deposit(1) F: 25
172Deposit(1) G: 25
173Deposit(1) H: 25
174Deposit(1) I: 25
175Transfer(1) A-B: 5 (1)
176Transfer(1) A-L: 10 (1)
177Transfer(1) A-M: 5 (1)
178Transfer(1) B-N: 5 (1)
179Transfer(1) C-O: 5 (1)
180Transfer(1) H-O: 5 (1)
181Transfer(1) I-H: 5 (1)
182Exit(1) A: 5 (1)
183
184// create CoordinatorTx CreateAccount for D, TokenId 2, used at SetPool0 for
185// 'PoolTransfer(2) B-D: 3 (1)'
186CreateAccountCoordinator(2) D
187
188> batchL1
189> batchL1
190> block
191`
192
193// SetPool0 contains a set of transactions from the PoolL2
194var SetPool0 = `
195Type: PoolL2
196PoolTransfer(1) A-B: 6 (1)
197PoolTransfer(1) B-C: 3 (1)
198PoolTransfer(1) C-A: 3 (1)
199PoolTransfer(1) A-B: 1 (1)
200PoolTransfer(2) A-B: 15 (1)
201PoolTransfer(2) B-D: 3 (1)
202PoolExit(1) A: 3 (1)
203PoolTransfer(1) A-B: 6 (1)
204PoolTransfer(1) B-C: 3 (1)
205PoolTransfer(1) A-C: 3 (1)
206PoolTransferToEthAddr(1) A-C: 3 (1)
207PoolTransferToBJJ(1) A-C: 3 (1)
208`
209
210// Minimum flow
211
212// SetBlockchainMinimumFlow0 contains a set of transactions with a minimal flow
213var SetBlockchainMinimumFlow0 = `
214Type: Blockchain
215// Idxs:
216// 256: A(0)
217// 257: C(1)
218// 258: A(1)
219// 259: B(0)
220// 260: D(0)
221// 261: Coord(1)
222// 262: Coord(0)
223// 263: B(1)
224// 264: C(0)
225// 265: F(0)
226
227AddToken(1)
228
229// close Block:0, Batch:1
230> batch
231
232CreateAccountDeposit(0) A: 500
233CreateAccountDeposit(1) C: 0
234
235// close Block:0, Batch:2
236> batchL1 // freeze L1User{2}, forge L1Coord{0}
237// Expected balances:
238// C(0): 0
239
240CreateAccountDeposit(1) A: 500
241
242// close Block:0, Batch:3
243> batchL1 // freeze L1User{1}, forge L1User{2}
244// Expected balances:
245// A(0): 500
246// C(0): 0, C(1): 0
247
248// close Block:0, Batch:4
249> batchL1 // freeze L1User{nil}, forge L1User{1}
250// Expected balances:
251// A(0): 500, A(1): 500
252// C(0): 0
253
254
255CreateAccountDepositTransfer(0) B-A: 500, 100
256
257// close Block:0, Batch:5
258> batchL1 // freeze L1User{1}, forge L1User{nil}
259CreateAccountDeposit(0) D: 800
260
261// close Block:0, Batch:6
262> batchL1 // freeze L1User{1}, forge L1User{1}
263// Expected balances:
264// A(0): 600, A(1): 500
265// B(0): 400
266// C(0): 0
267
268// Coordinator creates needed accounts to receive Fees
269// Coordinator creates needed 'To' accounts for the L2Txs
270// sorted in the way that the TxSelector creates them
271CreateAccountCoordinator(1) Coord
272CreateAccountCoordinator(1) B
273CreateAccountCoordinator(0) Coord
274CreateAccountCoordinator(0) C
275
276
277Transfer(1) A-B: 200 (126)
278Transfer(0) B-C: 100 (126)
279
280// close Block:0, Batch:7
281> batchL1 // forge L1User{1}, forge L1Coord{4}, forge L2{2}
282// Expected balances:
283// Coord(0): 10, Coord(1): 20
284// A(0): 600, A(1): 280
285// B(0): 290, B(1): 200
286// C(0): 100, C(1): 0
287// D(0): 800
288
289Deposit(0) C: 500
290DepositTransfer(0) C-D: 400, 100
291
292Transfer(0) A-B: 100 (126)
293Transfer(0) C-A: 50 (126)
294Transfer(1) B-C: 100 (126)
295Exit(0) A: 100 (126)
296
297ForceTransfer(0) D-B: 200
298ForceExit(0) B: 100
299
300// close Block:0, Batch:8
301> batchL1 // freeze L1User{4}, forge L1User{nil}, forge L2{4}
302> block
303// Expected balances:
304// Coord(0): 35, Coord(1): 30
305// A(0): 430, A(1): 280
306// B(0): 390, B(1): 90
307// C(0): 45, C(1): 100
308// D(0): 800
309
310Transfer(0) D-A: 300 (126)
311Transfer(0) B-D: 100 (126)
312
313// close (batch9) Block:1, Batch:1
314> batchL1 // freeze L1User{nil}, forge L1User{4}, forge L2{2}
315// Expected balances:
316// Coord(0): 75, Coord(1): 30
317// A(0): 730, A(1): 280
318// B(0): 380, B(1): 90
319// C(0): 845, C(1): 100
320// D(0): 470
321
322CreateAccountCoordinator(0) F
323
324> batch // batch10: forge L1CoordinatorTx{1}
325> block
326`
327
328// SetPoolL2MinimumFlow0 contains a set of transactions with a minimal flow
329var SetPoolL2MinimumFlow0 = `
330Type: PoolL2
331
332PoolTransfer(0) A-B: 100 (126)
333PoolTransferToEthAddr(0) D-F: 100 (126)
334PoolExit(0) A: 100 (126)
335PoolTransferToEthAddr(1) A-B: 100 (126)
336
337// Expected balances:
338// Coord(0): 105, Coord(1): 40
339// A(0): 510, A(1): 170
340// B(0): 480, B(1): 190
341// C(0): 845, C(1): 100
342// D(0): 360
343// F(0): 100
344`
345
346// SetPoolL2MinimumFlow1 contains the same transactions than the
347// SetPoolL2MinimumFlow0, but simulating coming from the smart contract
348// (always with the parameter ToIdx filled)
349var SetPoolL2MinimumFlow1 = `
350Type: PoolL2
351
352PoolTransfer(0) A-B: 100 (126)
353PoolTransfer(0) D-F: 100 (126)
354PoolExit(0) A: 100 (126)
355PoolTransfer(1) A-B: 100 (126)
356
357// Expected balances:
358// Coord(0): 105, Coord(1): 40
359// A(0): 510, A(1): 170
360// B(0): 480, B(1): 190
361// C(0): 845, C(1): 100
362// D(0): 360
363// F(0): 100
364`