2022-03-30 23:57:30 +00:00
|
|
|
# ipld-eth-state-snapshot
|
2020-07-01 19:16:21 +00:00
|
|
|
|
2020-07-13 11:20:03 +00:00
|
|
|
> Tool for extracting the entire Ethereum state at a particular block height from leveldb into Postgres-backed IPFS
|
2020-07-01 19:16:21 +00:00
|
|
|
|
2022-03-30 23:57:30 +00:00
|
|
|
[![Go Report Card](https://goreportcard.com/badge/github.com/vulcanize/ipld-eth-state-snapshot)](https://goreportcard.com/report/github.com/vulcanize/ipld-eth-state-snapshot)
|
2020-07-15 04:43:11 +00:00
|
|
|
|
2022-05-23 11:26:48 +00:00
|
|
|
## Usage
|
2020-07-15 04:43:11 +00:00
|
|
|
|
2022-06-15 07:21:26 +00:00
|
|
|
For state snapshot from LevelDB
|
|
|
|
```bash
|
2022-03-30 23:57:30 +00:00
|
|
|
./ipld-eth-state-snapshot stateSnapshot --config={path to toml config file}
|
2022-06-15 07:21:26 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
For in-place snapshot in database
|
|
|
|
```bash
|
|
|
|
./ipld-eth-state-snapshot inPlaceStateSnapshot --config={path to toml config file}
|
|
|
|
```
|
2022-03-30 23:57:30 +00:00
|
|
|
|
|
|
|
### Config
|
2020-07-15 04:43:11 +00:00
|
|
|
|
|
|
|
Config format:
|
|
|
|
|
|
|
|
```toml
|
2022-03-30 23:57:30 +00:00
|
|
|
[snapshot]
|
|
|
|
mode = "file" # indicates output mode ("postgres" or "file")
|
|
|
|
workers = 4 # degree of concurrency, the state trie is subdivided into sectiosn that are traversed and processed concurrently
|
|
|
|
blockHeight = -1 # blockheight to perform the snapshot at (-1 indicates to use the latest blockheight found in leveldb)
|
|
|
|
recoveryFile = "recovery_file" # specifies a file to output recovery information on error or premature closure
|
2020-07-15 04:43:11 +00:00
|
|
|
|
|
|
|
[leveldb]
|
2022-03-30 23:57:30 +00:00
|
|
|
path = "/Users/user/Library/Ethereum/geth/chaindata" # path to geth leveldb
|
|
|
|
ancient = "/Users/user/Library/Ethereum/geth/chaindata/ancient" # path to geth ancient database
|
2020-07-15 04:43:11 +00:00
|
|
|
|
2022-03-30 23:57:30 +00:00
|
|
|
[database]
|
|
|
|
name = "vulcanize_public" # postgres database name
|
|
|
|
hostname = "localhost" # postgres host
|
|
|
|
port = 5432 # postgres port
|
|
|
|
user = "postgres" # postgres user
|
|
|
|
password = "" # postgres password
|
|
|
|
|
|
|
|
[file]
|
|
|
|
outputDir = "output_dir/" # when operating in 'file' output mode, this is the directory the files are written to
|
2022-05-23 11:26:48 +00:00
|
|
|
|
|
|
|
[log]
|
|
|
|
level = "info" # log level (trace, debug, info, warn, error, fatal, panic) (default: info)
|
|
|
|
file = "log_file" # file path for logging
|
|
|
|
|
|
|
|
[prom]
|
|
|
|
metrics = true # enable prometheus metrics (default: false)
|
|
|
|
http = true # enable prometheus http service (default: false)
|
|
|
|
httpAddr = "0.0.0.0" # prometheus http host (default: 127.0.0.1)
|
|
|
|
httpPort = 9101 # prometheus http port (default: 8086)
|
|
|
|
dbStats = true # enable prometheus db stats (default: false)
|
2022-05-25 12:45:08 +00:00
|
|
|
|
|
|
|
# node info
|
|
|
|
[ethereum]
|
|
|
|
clientName = "Geth" # $ETH_CLIENT_NAME
|
|
|
|
nodeID = "arch1" # $ETH_NODE_ID
|
|
|
|
networkID = "1" # $ETH_NETWORK_ID
|
|
|
|
chainID = "1" # $ETH_CHAIN_ID
|
|
|
|
genesisBlock = "0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3" # $ETH_GENESIS_BLOCK
|
2020-08-20 10:25:11 +00:00
|
|
|
```
|
2022-05-26 10:20:42 +00:00
|
|
|
|
|
|
|
## Tests
|
|
|
|
|
|
|
|
* Install [mockgen](https://github.com/golang/mock#installation)
|
|
|
|
* `make test`
|