cmd | ||
db | ||
environments | ||
filters | ||
integration_test | ||
pkg | ||
scripts | ||
utils | ||
.gitignore | ||
.private_blockchain_password | ||
.travis.yml | ||
Gopkg.lock | ||
Gopkg.toml | ||
LICENSE | ||
main.go | ||
Makefile | ||
README.md |
Vulcanize DB
Dependencies
- Go 1.9+
- Postgres 10
- Go Ethereum
Installation
go get github.com/8thlight/vulcanizedb
Setting up the Databases
- Install Postgres
- Create a superuser for yourself and make sure
psql --list
works without prompting for a password. createdb vulcanize_private
cd $GOPATH/src/github.com/8thlight/vulcanizedb
- Import the schema:
psql vulcanize_private < db/schema.sql
or run the migrations:make migrate HOST_NAME=localhost NAME=vulcanize_public PORT=5432
- See below for configuring additional environments
Adding a new migration: ./scripts/create_migration <migration-name>
Start syncing with postgres
-
Start geth
-
In a separate terminal start vulcanize_db
vulcanizedb sync --config <config.toml> --starting-block-number <block-numbe>
- see
environments
for example config
Watch specific contract events
-
Start geth
-
In a separate terminal start vulcanize_db
vulcanizedb sync --config <config.toml> --starting-block-number <block-numbe>
-
Create event filter
vulcanizedb addFilter --config <config.toml> --filter-filepath <filter.json>
- see
filters
for example filter
Development Setup
Cloning the Repository (Private repo only)
git config --global url."git@github.com:".insteadOf "https://github.com/"
- By default,
go get
does not work for private GitHub repos. This will fix that.
- By default,
go get github.com/8thlight/vulcanizedb
cd $GOPATH/src/github.com/8thlight/vulcanizedb
dep ensure
Creating/Using a test node
Syncing the against the public network takes many hours for the initial sync and will download 20+ GB of data. Here are some instructions for creating a private test node that does not depend on having a network connection.
- Run
./scripts/setup
to create a private blockchain with a new account.- This will result in a warning.
- Run
./scripts/start_private_blockchain
.
IPC File Paths
The default location for Ethereum is:
$HOME/Library/Ethereum
for Mac$HOME/.ethereum
for Ubuntu$GOPATH/src/gihub.com/8thlight/vulcanizedb/test_data_dir/geth.ipc
for private blockchain.
Note the location of the ipc file is printed to the console when you start geth. It is needed to for configuration
Running the Tests
Unit Tests
go test ./pkg/...
Integration Test
In order to run the integration tests, you will need to run them against a real blockchain. At the moment the integration tests require Geth v1.7.2 as they depend on the --dev
mode, which changed in v1.7.3
- Run
./scripts/start_private_blockchain
as a separate process. go test ./...
to run all tests.