Code Monkey home page Code Monkey logo

theta-eth-rpc-adaptor's Introduction

theta-eth-rpc-adaptor

The theta-eth-rpc-adaptor project is aiming to provide an adaptor which translates the Theta RPC interface to the Ethereum RPC interface.

Setup

On macOS

Install Go and set environment variables GOPATH , GOBIN, and PATH. The current code base should compile with Go 1.14.2. On macOS, install Go with the following command

brew install [email protected]
brew link [email protected] --force

First clone the theta repo following the steps below. Then, clone this repo into your $GOPATH. The path should look like this: $GOPATH/src/github.com/thetatoken/edgecore

git clone https://github.com/thetatoken/theta-protocol-ledger.git $GOPATH/src/github.com/thetatoken/theta
export THETA_HOME=$GOPATH/src/github.com/thetatoken/theta
cd $THETA_HOME

git clone https://github.com/thetatoken/theta-eth-rpc-adaptor
export THETA_ETH_RPC_ADAPTOR_HOME=$GOPATH/src/github.com/thetatoken/theta-eth-rpc-adaptor
cd $THETA_ETH_RPC_ADAPTOR_HOME

Build and Install

Build the binary under macOS or Linux

This should build the theta-eth-rpc-adaptor binary and copy it into your $GOPATH/bin.

export GO111MODULE=on
make install

Cross compilation for Windows

On a macOS machine, the following command should build the theta-eth-rpc-adaptor.exe binary under build/windows/

make windows

Run the Adaptor

To run the adaptor, you'd first need to run a Theta node on the same machine with its RPC port opened at 16888 (for now, compile the latest Theta code in the theta3.0-rpc-compatibility branch). Then, in another terminal, launch the adaptor binary with the following command, assuming the config.yaml file is placed under the <CONFIG_FOLDER>/ folder:

theta-eth-rpc-adaptor start --config=<CONFIG_FOLDER>

Below is an example config.yaml file

theta:
  rpcEndpoint: "http://127.0.0.1:16888/rpc"
rpc:
  enabled: true
  httpAddress: "127.0.0.1"
  httpPort: 18888
  wsAddress: "127.0.0.1"
  wsPort: 18889
  timeoutSecs: 600 
  maxConnections: 2048
log:
  levels: "*:debug"

For example, you can change the above theta.rpcEnpoint to a remote Theta RPC endpoint, or change rpc.httpAddress to "0.0.0.0" so the adaptor is accessor from remote IP addresses.

RPC APIs

The RPC APIs should conform to the Ethereum JSON RPC API standard: https://eth.wiki/json-rpc/API

# Query version
curl -X POST -H 'Content-Type: application/json' --data '{"jsonrpc":"2.0","method":"eth_protocolVersion","params":[],"id":67}' http://localhost:18888/rpc

# Query synchronization status
curl -X POST -H 'Content-Type: application/json' --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' http://localhost:18888/rpc

# Query block number
curl -X POST -H 'Content-Type: application/json' --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":83}' http://localhost:18888/rpc

# Query account TFuel balance (should return an integer which represents the current TFuel balance in wei)
curl -X POST -H 'Content-Type: application/json' --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"],"id":1}' http://localhost:18888/rpc

theta-eth-rpc-adaptor's People

Contributors

zhenyang-sliver avatar jingxu85 avatar jieyilong avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.