citahub / re-birth

A blockchain explorer cache server for CITA
MIT License
12 stars 12 forks source link
blockchain cache-server explorer

ReBirth

Build Status codecov Documentation

English | 简体中文

A blockchain explorer cache server for CITA.

Now only support CITA v0.22 and above.

⚠️ NOTE: If you upgrade your chain to 0.18 from 0.17, after upgrade, you should stop sync task(rake daemons:sync:stop) and run rake zero18:update to update your old data, and start your sync task (rake daemons:sync:start), then restart your server 😄

⚠️ NOTE: when update this version, you should run bundle exec rake event_logs:fix_old to sync event logs that it's transaction already saved.

⚠️ NOTE: add errorMessage to transactions, run bundle exec rake transactions:add_error_message to add.

⚠️ NOTE: If you upgrade your chain to 0.20, after upgrade, you should stop sync task(rake daemons:sync:stop) and run rake zero20:update to update your old data, and start your sync task (rake daemons:sync:start), then restart your server

Docker

If you just want to run this, just use docker 🐳

Remember to run rails secret to generate secret key and write in .env.local (read .env for more info) Remember to change your sidekiq username and password in .env.local

⚠️ IMPORTANT: your database data will save at docker/data

⚠️ IMPORTANT: your redis data will save at docker/redis

App will run at http://localhost:8888

$ make setup # run this when you first run this app
$ make up # this command will run docker daemon.
$ make update # when you update the app.

you can get more info from Makefile

Packages

Initial Project

$ bundle
$ touch .env.local (overwrite `.env` config if you need in `.env.local`, such as DB_USERNAME, DB_PASSWORD and CITA_URL...)
$ rails db:setup (or rails db:create db:migrate db:seed)

The default value of CITA_URL is: localhost:1337

Please make sure that the cita blockchain is RUNNING

Running Test

$ touch .env.test.local (test env will not read `.env.local` file, overwrite in `.env.test.local`)
$ rails spec

Run Project

$ rails s

# start sync process
$ rails daemons:sync:start
# run `rails daemons:sync:stop` to stop it
# run `rails daemons:sync:restart` to restart it
# run `rails daemons:sync:status` to see status

Event Log Processor

Create a yaml file with .yml suffix in config/customs, see config/customs/event_log.yml.sample for more detail. For example, your file name is contracts.yml, you can run bundle exec rake event_log:create[contracts] to create your table and now restart sync task bundle exec rake daemons:sync:restart to listen your contact 😝

We'll both use address and topics to select the logs by jsonrpc interface getLogs

Deploy

You can deploy this via mina

# replace `dev` with you env
$ mina dev deploy
$ mina dev 'rake[daemons:sync:start]'

Build Doc

$ bundle exec yard doc
$ bundle exec yard server

How to view log

Under log folder you can the production.log and sidekiq.log file

log
├── production.log
└── sidekiq.log

API Doc

See API Doc

Contributing

Creating a Bug Report

open a new issue: https://github.com/citahub/re-birth/issues/new

with your version info

Tech Stack

Read docs/tech_stack.md to know the programming languages, frameworks, and tools that developers use to build this software.

Get source

git clone git@github.com:citahub/re-birth.git

Coding style

Coding style for Ruby

Coding style for Docker

Coding style for Makefile

Running the tests

$ rails spec

Commit your changes

Workflow

GitHub Flow, Understanding the GitHub flow

git style guide

use git-style-guide for Branches, Commits,Messages, Merging