modulepackage
0.0.0-20190923085903-5a544cf7f34f
Repository: https://github.com/metadium/go-delegator.git
Documentation: pkg.go.dev
# README
Metadium Proxy
Main functions are MetaID CRUD and relaying JSON-RPC result with metadium nodes.
Contents
Features
- JSON-RPC relay with metadium nodes
- Proofs for sign and merkle tree such as Ecrecover, DeriveSha, VerifyProof
Prerequisite
- Go
- Install at https://golang.org/doc/install
- Dep
- Install
brew install dep
- Docker
- Install at https://docs.docker.com/install
- xgo
- because of compilation for C code used in go-ethereum, we need improved cross-compiler
docker pull karalabe/xgo-latest
go get github.com/karalabe/xgo
Build
- Move to root directory of this repo
- Build on your preference
-
In case of Lambda that is cross-compile,
make
ormake lambda
-
In case of Lambda with remote branch,
make branch=master remote
-
In case of compile for local machine,
make local
Test
- Move each module directory such as json, rpc and so on
- Run testunit
go test -v
Usage
- $> proxy [KEY_JSON_PATH] -log_lev=debug -log_out=/log/proxy.log -log_fmt=json
- $> proxy [KEY_JSON_PATH] [KEY_JSON_PASSPHRASE] -log_lev=debug -log_out=/log/proxy.log -log_fmt=json
log_lev
,log_out
,log_fmt
,log_bot_token
andlog_bot_chatid
are optional- description:
- log_lev: log level
- log_out: log output location
- log_fmt: log format, text or JSON
- log_bot_token: telegram access token
- log_bot_chatid: telegram chat ID
- default:
- log_lev: info
- log_out: stdout
- log_fmt: text
Deploy (for AWS Lambda)
- Set Lambda on AWS
- Function package: compressed binary file in $GOPATH/src/{repo}/bin
- Handler: proxy (binary file name, it is optional)
- Runtime: Go 1.x
- (Optional) Include DynamoDB execution role to Lambda execution role
- Set API Gateway as proxy on AWS
- Add API Gateway as Lambda trigger
- Add CloudWatch Logs
Reference
[1] AWS Lambda Go, https://github.com/aws/aws-lambda-go
[2] Go ethereum, https://github.com/ethereum/go-ethereum
[3] IPFS, https://ipfs.io/
[4] IPFS API, https://github.com/ipfs/go-ipfs-api
[5] Cross compiling for ethereum, https://github.com/ethereum/go-ethereum/wiki/Cross-compiling-Ethereum
[6] Xgo, https://github.com/karalabe/xgo
[7] Dep, https://github.com/golang/dep
License
MIT
# Packages
Package abi implements smart contract call helper.
Package common includes utility and constants such as unit (wei, ether).
Package crypto is combined crypto module for both general(AES, ...) and ethereum(Ecrevoer, sign, ...).
Package db is a DB helper interface for AWS DynamoDB.
Package ipfs is a IPFS interface
https://ipfs.io/docs/.
Package json is a JSON parser for request & response body used in JSON-RPC.
Package log is wrapper for logging.
Package metaservice manages metaservice functions for RPC request.
Package metaservice manages metaservice functions for RPC request.
Package rpc invokes JSON-RPC with ethereum node.
Package web3 is converted golang layer from web3.js.
# Constants
ParamFuncName is a name indicating function's.
Targetnet indicates target network.