ed907535e3
* Separate files for InMemory * Start using separate repos for collaborating objects * Before Updating schema * Separate various repos |
||
---|---|---|
cmd | ||
db | ||
environments | ||
filters | ||
integration_test | ||
pkg | ||
scripts | ||
utils | ||
vendor | ||
.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/vulcanize/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/vulcanize/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
IPC File Paths
The default location for Ethereum is:
$HOME/Library/Ethereum
for Mac$HOME/.ethereum
for Ubuntu$GOPATH/src/gihub.com/vulcanize/vulcanizedb/test_data_dir/geth.ipc
for private node.
Note the location of the ipc file is printed to the console when you start geth. It is needed to for configuration
Start syncing with postgres
-
Start geth node (if fast syncing wait for geth to finsh initial sync)
-
In a separate terminal start vulcanize_db
vulcanizedb sync --config <config.toml> --starting-block-number <block-number>
- see
./environments
for example config
Watch specific events
- Start geth
- In a separate terminal start vulcanize_db
vulcanizedb sync --config <config.toml> --starting-block-number <block-number>
- Create event filter
vulcanizedb addFilter --config <config.toml> --filter-filepath <filter.json>
- see
./filters
for example filter
- The filters are tracked in the
log_filters
table and the filtered events will show up in thewatched_log_events
view
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 node. 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
make startprivate
in a separate terminal -
Setup a test database and import the schema:
createdb vulcanize_private
psql vulcanize_private < db/schema.sql
-
go test ./...
to run all tests.