Commit Graph

151 Commits

Author SHA1 Message Date
Eduard S
457ff94bfa Test synchronizer reorg 2020-11-16 11:35:15 +01:00
Eduard S
e731b79e96 Fix exit table, set delayed_withdrawn in exits
- In exit table, `instant_withdrawn`, `delayed_withdraw_request`, and
  `delayed_withdrawn` were referencing batch_num.  But these actions happen
  outside a batch, so they should reference a block_num.
- Process delayed withdrawns:
    - In Synchronizer, first match a Rollup delayed withdrawn request, with the
      WDelayer deposit (via TxHash), and store the owner and token associated
      with the delayed withdrawn.
    - In HistoryDB: store the owner and token of a delayed withdrawal request
      in the exit_tree, and set delayed_withdrawn when the withdraw is done in
      the WDelayer.
- Update dependency of sqlx to master
    - Last release of sqlx is from 2018 October, and it doesn't support
      `NamedQuery` with a slice of structs, which is used in this commit.
2020-11-13 16:53:16 +01:00
arnau
8cc165f562 Merge pull request #275 from hermeznetwork/feature/api-db-tests-til
Feature/api db tests til
2020-11-11 15:54:41 +01:00
Arnau B
bed25d424a Use til for batches and blocks at historydb 2020-11-11 14:00:19 +01:00
arnaucube
def6f46d75 Update Account Hash comp to match js version 2020-11-10 16:48:13 +01:00
Eduard S
9f5af0aa07 Process withdrawals in HistoryDB, test withdrawals and vars in sync 2020-11-09 17:13:53 +01:00
Eduard S
5b6639a947 Add DebugAPI to Node, fix StateDB
- Allow starting the DebugAPI from the node via config
- In StateDB:
    - Make checkpoints when ProcessTxs() succeeds
    - Remove extra hardcoded `statedb` path that was redundant
    - Replace hardcoded `[:4]` by `[:]` when parsing idx, which failed because
      idx is 6 bytes length now.
- Extra: In node, use waitgroup instead of `stoppedXXX` channels to wait for
syncrhonizer goroutines to finish.
2020-11-06 13:00:11 +01:00
arnau
fd9b247120 Merge pull request #261 from hermeznetwork/feature/til-extra
Move logic to extend til blocks to til
2020-11-06 11:46:49 +01:00
Eduard S
5ebf46e045 Move logic to extend til blocks to til
Previously, the synchronizer test was extending the output from til to
precalculate many fields to compare it with the synchronizer and BD output.
Since this is useful outside of the syncrhonizer testing: move this
functionality to til via a function that extends the output
(til.Context.FillBlocksExtra).

Also, add new functionality: calculate fee idxs dynamically by setting a user
name, and calculate collected fees.
2020-11-05 18:09:12 +01:00
Eduard S
e8aabab2de Merge pull request #255 from hermeznetwork/feature/zkinputs0
ZKInputs update:
2020-11-05 18:07:28 +01:00
laisolizq
5012b82914 API add slots endpoints 2020-11-05 15:59:27 +01:00
arnaucube
7af6371f1d ZKInputs update:
- Add ZKInputs parser to JSON
- Update ProcessTxs to last go-merkletree version changes
- Add StateDB test to generate ZKInputs to check inside a circom circuit
- Small fix at Til CoordinatorTx.LoadAmount=0
2020-11-04 16:40:55 +01:00
Eduard S
6e4b9b4b70 Update Synchronizer (node) implementation
- node:
    - Extend config to add initial variables of the smart contracts used as
      defaults before they are changed via events.
    - In stopped channels, set size 1 so that panics are not witheld until the
      node stops completely.
- common:
    - In Smart Contract variables, comment:
      - `WDelayerVariables.HermezRollupAddress` because it's not needed.
      - `RollupVariables.Buckets` because there are no events for it, and for
        now it's not used.
- historydb:
    - Add functions to get and set smart contract variables.
- db:
    - Add `Rollback` function in `utils.go` to reduce boilerplate in sql
      transaction rollbacks in defers in db functions.
    - Update `rollup_vars` and `auction_vars` (renamed from `consensus_vars`)
      table, and add `wdelayer_vars` table.
- synchronizer:
    - Synchronize WDelayer
    - Handle SC variables properly
- test/ethclient:
    - Add essential implementation of WDelayer
2020-11-04 15:12:51 +01:00
Eduard S
e6fb0a03de Reorganize smart contract types, udate eth tests, etc.
- Move smart contract constants and structs for variables to
  common/{ethrollup.go, ethauction.go, ethwdelayer.go}:
    - This removes repeated code of the structs for variables
    - Allows reusing the constants and variables from all modules without
      import cycles
- Remove unused common/scvars.go
- In common.BlockData, split data from each smart contract into a sepparate
  field (Rollup, Auction, WDelayer).  This affects the structures that til uses
  as output, and HistoryDB in the AddBlockSCData.
- In Synchronizer:
    - Pass starting block of each smart contract as config, instead of
      incorrectly using the genesis block found in the acution constant (which
      has a very different meaning)
    - Use variable structs from common instead of an internal copy
    - Synchronize more stuff (resolve some TODOs)
    - Fix some issues found after initial testing with ganache
- In eth:
    - In auction.go: Add method to get constants
    - Update README to use ganache instead of buidlerevm as local blockchain
      for testing
    - Update env variables and test vectors to pass the tests with the
      deployment in the ganache testnet.
    - Use ethereum keys derived from paths (hdwallet) in testing to avoid
      hardcoding private keys and generate the same keys from a mnemonic used
      in the ganache tesnet.
2020-11-04 12:06:28 +01:00
Eduard S
fe23361037 Update fee tables 2020-11-03 11:26:23 +01:00
Eduard S
8c6f5f2950 Merge pull request #247 from hermeznetwork/feature/til-sets
Add Til set w minimum flow, add balances tests at StateDB ProcessTxs, small fixes at StateDB
2020-11-02 12:55:43 +01:00
arnaucube
f65a6047b4 Add Til set w minimum flow, small fixes at StateDB 2020-11-02 12:47:34 +01:00
Arnau B
cbeca0f76e Insert ETH as HistoryDB token 2020-11-02 12:09:09 +01:00
arnaucube
2338b6b90b ProcessTxs fees collct update & tests, and other:
- Update StateDB ProcessTxs fees collection
- Update ProcessTxs tests to last StateDB & Til changes
- Til Blockchain L2Txs remove Nonce generation, update tests accordingly
- Update Til Set to test fees
2020-10-28 17:21:12 +01:00
Eduard S
4eb2972b1b Add collectedFees in TxProcessor, update sync test
- In Synchronizer test, test all tx types
2020-10-28 14:24:14 +01:00
Eduard S
558de2737e Test L2Txs, ExitTree in synchronizer 2020-10-27 17:59:18 +01:00
arnaucube
1203ab3865 TxSelector include L1CoordinatorTxs in selections 2020-10-27 17:25:41 +01:00
arnaucube
8f24aa93c9 Add ProcessTxs send fees to Coordinator accounts 2020-10-27 10:28:32 +01:00
Eduard S
b5222303c2 Update Synchroinzer and tests
- Test L1UserTxs in Synchronizer
- Test Batches in Synchronizer
- Add last_idx in `TABLE batch` in HistoryDB
- Minor updates in til to satisfy blockchain constraints
2020-10-26 16:22:40 +01:00
Eduard S
2aa5598975 Merge pull request #223 from hermeznetwork/feature/eth-remove-ERC777
Feature/eth remove erc777
2020-10-26 16:20:41 +01:00
Eduard S
79b105b497 Update importers of eth, review eth/README.md 2020-10-26 16:09:40 +01:00
Arnau B
28c0164525 Impl api get batch(es) 2020-10-26 12:42:05 +01:00
Eduard S
0e5aad4767 Merge pull request #219 from hermeznetwork/feature/api-account-creation
Impl account creation auth endpoints
2020-10-26 11:22:32 +01:00
arnaucube
e76cc98e4c Update fees usage in Til 2020-10-23 18:09:14 +02:00
Arnau B
ede6c33a18 Impl account creation auth endpoints 2020-10-23 13:05:20 +02:00
arnaucube
0ac6c0ecbb Add TxTypeTransferToEthAddr&ToBJJ to StateDB & Til
Add TxTypeTransferToEthAddr&ToBJJ to StateDB & Til
resolves #203, resolves #209
2020-10-23 11:42:39 +02:00
Eduard S
4dbfedee49 In til, process L1UserTxs when defined, not in batch 2020-10-22 16:13:57 +02:00
Eduard S
827e917fa0 Update missing parts, improve til, and more
- Node
	- Updated configuration to initialize the interface to all the smart
	  contracts
- Common
	- Moved BlockData and BatchData types to common so that they can be
	  shared among: historydb, til and synchronizer
	- Remove hash.go (it was never used)
	- Remove slot.go (it was never used)
	- Remove smartcontractparams.go (it was never used, and appropriate
	  structs are defined in `eth/`)
	- Comment state / status method until requirements of this method are
	  properly defined, and move it to Synchronizer
- Synchronizer
	- Simplify `Sync` routine to only sync one block per call, and return
	  useful information.
	- Use BlockData and BatchData from common
	- Check that events belong to the expected block hash
	- In L1Batch, query L1UserTxs from HistoryDB
	- Fill ERC20 token information
	- Test AddTokens with test.Client
- HistryDB
	- Use BlockData and BatchData from common
	- Add `GetAllTokens` method
	- Uncomment and update GetL1UserTxs (with corresponding tests)
- Til
	- Rename all instances of RegisterToken to AddToken (to follow the smart
	  contract implementation naming)
	- Use BlockData and BatchData from common
		- Move testL1CoordinatorTxs and testL2Txs to a separate struct
		  from BatchData in Context
	- Start Context with BatchNum = 1 (which the protocol defines to be the
	  first batchNum)
	- In every Batch, set StateRoot and ExitRoot to a non-nil big.Int
	  (zero).
	- In all L1Txs, if LoadAmount is not used, set it to 0; if Amount is not
	  used, set it to 0; so that no *big.Int is nil.
	- In L1UserTx, don't set BatchNum, because when L1UserTxs are created
	  and obtained by the synchronizer, the BatchNum is not known yet (it's
	  a synchronizer job to set it)
	- In L1UserTxs, set `UserOrigin` and set `ToForgeL1TxsNum`.
2020-10-22 15:20:51 +02:00
Eduard S
24bca9e3b0 Merge pull request #216 from hermeznetwork/feature/batch-total-fee
Calulate total collected batch fee and fix merkleproof api format
2020-10-22 14:28:49 +02:00
Arnau B
f77ea04c2e Calulate total collected batch fee and fix merkleproof api format 2020-10-22 12:59:15 +02:00
arnaucube
34de6412cf Update Til with small fixes [...]
Update Til with small fixes:
- L2Tx TxID & Type correctness done after Idxs setted
- Added PoolL2Tx signature for Exit type

Common:
- Add common.TxID Marshalers test
2020-10-22 12:22:08 +02:00
Arnau B
006bbf3321 Implement tx pool endpoints 2020-10-21 16:34:54 +02:00
arnaucube
265bdf23e3 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.
2020-10-21 15:17:22 +02:00
arnaucube
cfdea57977 Fix test generated transactions L1Tx type 2020-10-21 14:59:39 +02:00
laisolizq
3f6b9d9087 Merge pull request #212 from hermeznetwork/feature/ethclient-simplify
Simplify eth code
2020-10-21 12:39:32 +02:00
Eduard S
a2bda1890d Simplify eth code 2020-10-21 11:56:55 +02:00
arnau
edb466c996 Merge pull request #208 from hermeznetwork/feature/debugapi
Extend statedb and use prefixes, add debugapi
2020-10-21 11:39:42 +02:00
Eduard S
4d90cd9a02 Merge pull request #207 from hermeznetwork/feature/tkcio-l1queues
Add L1UserTxs queues system to Transakcio
2020-10-20 17:48:48 +02:00
arnaucube
e89f89102c Add L1 Queues system for tx generation in Trnskcio 2020-10-20 17:43:57 +02:00
Eduard S
6afbda5302 Extend statedb and use prefixes, add debugapi
In statedb:
- Store all values using prefixes for keys to allow iteration
- Add methods MTGetRoot, GetAccounts

Implement debugapi, an http server with debugging endpoints:
- debugAPI.GET("sdb/batchnum", a.handleCurrentBatch)
- debugAPI.GET("sdb/mtroot", a.handleMTRoot)
- debugAPI.GET("sdb/accounts", a.handleAccounts)
- debugAPI.GET("sdb/accounts/:Idx", a.handleAccount)
2020-10-19 13:53:39 +02:00
a_bennassar
eb54162fb8 Merge pull request #204 from hermeznetwork/feature/api-gettokens
Add get tokens endpoint
2020-10-19 11:20:41 +02:00
laisolizq
043710112d Add get tokens endpoint 2020-10-19 10:14:18 +02:00
arnaucube
a6006ebde7 Add transakcio Token Register instructions parser 2020-10-15 18:06:11 +02:00
Eduard S
8dbcdaf4ea Merge pull request #198 from hermeznetwork/fix/rqcompresseddata
Fix/rqcompresseddata
2020-10-15 11:59:38 +02:00
Eduard S
db22d8538e Merge pull request #197 from hermeznetwork/feature/transakcio-coordtxs
Add transakcio coordinator tx instruction feature
2020-10-15 11:52:45 +02:00