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