Server backend for indexed ETH IPLD objects
Go to file
Matt K 605b0a96ae Add graphql server (#27)
* Add graphql server

* Update Makefile

* Update log_filters constraint

* Add GetLogFilter to repo

* Update travis (use Makefile, go fmt, go vet)

* Add logFilter schema and resolvers

* Add GetWatchedEvent to watched_events_repo

* Add watchedEventLog schema and resolvers
2018-02-08 10:12:08 -06:00
cmd Add graphql server (#27) 2018-02-08 10:12:08 -06:00
db Add graphql server (#27) 2018-02-08 10:12:08 -06:00
environments Get logs for a contract (#99) 2017-12-11 15:08:00 -06:00
filters Add graphql server (#27) 2018-02-08 10:12:08 -06:00
integration_test Add graphql server (#27) 2018-02-08 10:12:08 -06:00
pkg Add graphql server (#27) 2018-02-08 10:12:08 -06:00
scripts Add contracts table / start building out watch contracts 2017-11-09 15:06:01 -06:00
utils Separate repositories (#25) 2018-02-02 15:53:16 -06:00
vendor Add graphql server (#27) 2018-02-08 10:12:08 -06:00
.gitignore Add vendor dir (#16) (#4) 2018-01-29 13:44:18 -06:00
.private_blockchain_password Add integration test 2017-10-24 15:36:50 -05:00
.travis.yml Add graphql server (#27) 2018-02-08 10:12:08 -06:00
Gopkg.lock Add graphql server (#27) 2018-02-08 10:12:08 -06:00
Gopkg.toml Add graphql server (#27) 2018-02-08 10:12:08 -06:00
LICENSE Add LICENSE 2017-11-09 12:58:17 -06:00
main.go Merge old private repo into vulcanize 2018-01-25 18:08:26 -06:00
Makefile Add graphql server (#27) 2018-02-08 10:12:08 -06:00
README.md Add vendor dir (#16) (#4) 2018-01-29 13:44:18 -06:00

Vulcanize DB

Build Status

Dependencies

Installation

go get github.com/vulcanize/vulcanizedb

Setting up the Databases

  1. Install Postgres

  2. Create a superuser for yourself and make sure psql --list works without prompting for a password.

  3. createdb vulcanize_private

  4. cd $GOPATH/src/github.com/vulcanize/vulcanizedb

  5. 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

  1. Start geth node (if fast syncing wait for geth to finsh initial sync)

  2. 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

  1. Start geth
  2. In a separate terminal start vulcanize_db
    • vulcanizedb sync --config <config.toml> --starting-block-number <block-number>
  3. Create event filter
    • vulcanizedb addFilter --config <config.toml> --filter-filepath <filter.json>
    • see ./filters for example filter
  4. The filters are tracked in the log_filters table and the filtered events will show up in the watched_log_events view

Running the Tests

Unit Tests

  1. 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

  1. Run make startprivate in a separate terminal

  2. Setup a test database and import the schema:

    createdb vulcanize_private

    psql vulcanize_private < db/schema.sql

  3. go test ./... to run all tests.