Eduard S 482c94d374 Advance coordinator implementation
- Common
	- Move ErrTODO and ErrDone to common for usage where needed.
- Coordinator
	- Move prover types to prover package
	- Handle reorgs, stopping the pipeline when necessary
	- Handle ethereum transaction errors by stopping the pipeline
	- In case of ethereum transaction revert, check for known revert causes
	  (more revert causes can be added to handle more cases)
	- Fix skipped transactions in TxManager confirmation logic
	- Cancel and wait for provers to be ready
	- Connect L2DB to:
		- purge l2txs due to timeout
		- mark l2txs at the different states
	- Connect HistoryDB to query L1UserTxs to forge in an L1Batch
- L2DB
	- Skip update functions when the input slices have no values (to avoid a
	  query with no values that results in an SQL error)
- StateDB
	- In LocalStateDB, fix Reset when mt == nil
- Prover (new package)
	- Rename the interface to Prover
	- Rename the mock struct to Mock
	- Extend Prover interface methods to provide everything required by the
	  coordinator
	- Begin implementing required http client code to interact with server
	  proof (not tested)
- Synchronizer:
	- Add LastForgeL1TxsNum to Stats
- Test/Client
	- Update Auction logic to track slots in which there's no forge during
	  the time before the deadline (following the solidity implementation)
2020-12-03 13:00:06 +01:00
2020-11-30 12:58:36 +01:00
2020-11-30 12:58:36 +01:00
2020-11-30 12:58:36 +01:00
2020-11-30 12:58:36 +01:00
2020-12-03 13:00:06 +01:00
2020-11-30 12:58:36 +01:00
2020-12-03 13:00:06 +01:00
2020-12-03 13:00:06 +01:00
2020-11-30 12:58:05 +01:00
2020-12-03 13:00:06 +01:00
2020-11-30 12:58:36 +01:00
2020-12-03 13:00:06 +01:00
2020-12-03 13:00:06 +01:00
2020-11-30 12:58:36 +01:00
2020-09-10 11:36:58 +02:00
2020-11-30 12:58:05 +01:00
2020-11-30 12:58:05 +01:00
2020-11-30 14:15:02 +01:00

hermez-node Go Report Card Test Status Lint Status GoDoc

Go implementation of the Hermez node.

Test

  • First run a docker instance of the PostgresSQL (where yourpasswordhere should be your password)
POSTGRES_PASS=yourpasswordhere; sudo docker run --rm --name hermez-db-test -p 5432:5432 -e POSTGRES_DB=hermez -e POSTGRES_USER=hermez -e POSTGRES_PASSWORD="$POSTGRES_PASS" -d postgres
  • Then, run the tests with the password as env var
POSTGRES_PASS=yourpasswordhere go test -p 1 ./...

NOTE: -p 1 forces execution of package test in serial. Otherwise they may be executed in paralel and the test may find unexpected entries in the SQL databse because it's shared among all tests.

  • There is an extra temporal option that allows to run the API server through the Go tests. This should be removed once the API can be properly initialized, with data from the synchronizer and so on. To use this, run FAKE_SERVER=yes POSTGRES_PASS=yourpasswordhere go test -timeout 0 ./api -p 1 -count 1 -v

Lint

golangci-lint run --timeout=5m -E whitespace -E gosec -E gci -E misspell -E gomnd -E gofmt -E goimports -E golint --exclude-use-default=false --max-same-issues 0
Description
No description provided
Readme AGPL-3.0 2.8 MiB
Languages
Go 98.6%
PLpgSQL 1.1%
Makefile 0.2%