mirror of
https://github.com/arnaucube/hermez-node.git
synced 2026-02-07 03:16:45 +01:00
Rename Transakcio to Til for a easier usage
Rename Transakcio to Til for a easier usage, also change til.TestContext to til.Context, and til.NewTestContext to til.NewContext.
This commit is contained in:
115
test/til/README.md
Normal file
115
test/til/README.md
Normal file
@@ -0,0 +1,115 @@
|
||||
# Til (Test instructions language)
|
||||
Language to define sets of instructions to simulate Hermez transactions (L1 & L2) with real data.
|
||||
|
||||
## Syntax
|
||||
### Global
|
||||
- Set type definition
|
||||
- Blockchain: generate the transactions that would come from the Hermez smart contract on the blockchain.
|
||||
```
|
||||
Type: Blockchain
|
||||
```
|
||||
- PoolL2: generate the transactions that would come from the Pool of L2Txs
|
||||
```
|
||||
Type: PoolL2
|
||||
```
|
||||
|
||||
### Blockchain set of instructions
|
||||
Available instructions:
|
||||
```go
|
||||
Type: Blockchain
|
||||
|
||||
// register the TokenID:
|
||||
RegisterToken(1)
|
||||
|
||||
// deposit of TokenID=1, on the account of tokenID=1 for the user A, of an
|
||||
// amount of 50 units
|
||||
CreateAccountDeposit(1) A: 50
|
||||
|
||||
// create the account of TokenID=1 for the user B, deposit of TokenID=1, on the
|
||||
// account of tokenID=1 for the user B, of an amount of 40 units and atomically
|
||||
// transfer 10 units to account of tokenID=1 for the user A, paying a fee of 2
|
||||
CreateAccountDepositTransfer(1) B-A: 40, 10 (2)
|
||||
|
||||
// transaction generated by the Coordinator, create account for user User0 for
|
||||
// the TokenID=2, with a deposit of 0
|
||||
CreateAccountDepositCoordinator(2) User0
|
||||
|
||||
|
||||
// deposit of TokenID=1, at the account A, of 6 units
|
||||
Deposit(1) A: 6
|
||||
|
||||
// deposit of TokenID=1, on the account of tokenID=1 for the user B, of an
|
||||
// amount of 6 units and atomically transfer 10 units to account of tokenID=1 for
|
||||
// the user A, paying a fee of 2
|
||||
DepositTransfer(1) B-A: 6, 4 (2)
|
||||
|
||||
// transfer of TokenID=1, from the account A to B (for that token), of 6 units,
|
||||
// paying a fee of 3. Transaction will be a L2Tx
|
||||
Transfer(1) A-B: 6 (3)
|
||||
|
||||
// exit of TokenID=1, from the account A (for that token), of 5 units.
|
||||
// Transaction will be a L2Tx
|
||||
Exit(1) A: 5
|
||||
|
||||
// force-transfer of TokenID=1, from the account A to B (for that token), of 6
|
||||
// units, paying a fee of 3. Transaction will be L1UserTx of ForceTransfer type
|
||||
ForceTransfer(1) A-B: 6 (3)
|
||||
|
||||
// force-exit of TokenID=1, from the account A (for that token), of 5 units.
|
||||
// Transaction will be L1UserTx of ForceExit type
|
||||
ForceExit(1) A: 5
|
||||
|
||||
// advance one batch, forging without L1UserTxs, only can contain L2Txs and
|
||||
// L1CoordinatorTxs
|
||||
> batch
|
||||
|
||||
// advance one batch, forging with L1UserTxs (and L2Txs and L1CoordinatorTxs)
|
||||
> batchL1
|
||||
|
||||
// advance an ethereum block
|
||||
> block
|
||||
```
|
||||
|
||||
### PoolL2 set of instructions
|
||||
Available instructions:
|
||||
```go
|
||||
Type: PoolL2
|
||||
|
||||
// transfer of TokenID=1, from the account A to B (for that token), of 6 units,
|
||||
// paying a fee of 4
|
||||
PoolTransfer(1) A-B: 6 (4)
|
||||
|
||||
// exit of TokenID=1, from the account A (for that token), of 3 units
|
||||
PoolExit(1) A: 3
|
||||
```
|
||||
|
||||
## Usage
|
||||
```go
|
||||
// create a new til.Context
|
||||
tc := til.NewContext(eth.RollupConstMaxL1UserTx)
|
||||
|
||||
// generate Blockchain blocks data from the common.SetBlockcahin0 instructions set
|
||||
blocks, err = tc.GenerateBlocks(common.SetBlockchain0)
|
||||
assert.Nil(t, err)
|
||||
|
||||
// generate PoolL2 transactions data from the common.SetPool0 instructions set
|
||||
poolL2Txs, err = tc.GenerateBlocks(common.SetPool0)
|
||||
assert.Nil(t, err)
|
||||
```
|
||||
|
||||
Where `blocks` will contain:
|
||||
```go
|
||||
// BatchData contains the information of a Batch
|
||||
type BatchData struct {
|
||||
L1CoordinatorTxs []common.L1Tx
|
||||
L2Txs []common.L2Tx
|
||||
CreatedAccounts []common.Account
|
||||
}
|
||||
|
||||
// BlockData contains the information of a Block
|
||||
type BlockData struct {
|
||||
L1UserTxs []common.L1Tx
|
||||
Batches []BatchData
|
||||
RegisteredTokens []common.Token
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user