Relayer service that makes calls to the smart contracts. Now it is used to work with such endpoints:
-
POST
/integrations/voting-relayer/v1/register
- it takes calldata in hex encoided format from Rarime mobile applications and makes call to the smart contract.Request body example:
{ "data": { "tx_data": "hex_encoded_call_data", "destination": "contract_address,optional" } }
-
GET
/integrations/voting-relayer/v1/operations/latest
- it returnes info about latest transited root Response body example{ "data": { "id": "", "type": "", "attributes": { "block_height": 0, "destination_chain": "", "operation_id": "", "proof": "", "tx_hash": "" } }, "included": [] }
-
GET
/integrations/voting-relayer/v1/operations/{root}
- it returnes info about transited root, where root is lower case hex string with 0x prefix Response body example{ "data": { "id": "", "type": "", "attributes": { "block_height": 0, "destination_chain": "", "operation_id": "", "proof": "", "tx_hash": "" } }, "included": [] }
git clone github.com/rarimo/voting-relayer
cd voting-relayer
go build main.go
export KV_VIPER_FILE=./config.yaml
./main run service
We do use openapi:json standard for API. We use swagger for documenting our API.
To open online documentation, go to swagger editor here is how you can start it
cd docs
npm install
npm start
To build documentation use npm run build
command,
that will create open-api documentation in web_deploy
folder.
To generate resources for Go models run ./generate.sh
script in root folder.
use ./generate.sh --help
to see all available options.
Note: if you are using Gitlab for building project docs/spec/paths
folder must not be
empty, otherwise only Build and Publish
job will be passed.
network:
rpc: "" # (url) RPC API endpoint | required
registration: "" # (hex) target contract address | required
private_key: "" # (hex without 0x) ECDSA secp256k1 private key for sign transactions
vault_address: "http://127.0.0.1:8200" # (url) vault address
vault_mount_path: "secret_data" # (string)
whitelist: # (list of hex addresses) specify which contracts can be passed in `destination` field in request
- "0x123...123"
- "0x123...123"
ENV
VAULT_TOKEN (will be cleared after start service)
There must be specified or private key, or vault address and path. If specified both, then will be used private_key from config.
Make sure that docker installed.
use docker run
with -p 8080:80
to expose port 80 to 8080
docker build -t github.com/rarimo/voting-relayer .
docker run -e KV_VIPER_FILE=/config.yaml github.com/rarimo/voting-relayer
- Set up environment value with config file path
KV_VIPER_FILE=./config.yaml
- Provide valid config file
- Launch the service with
run service
command to run full mode (voting and relayer)
To run service only in voting mode should use run voting
To run service only in relayer mode should use run relayer
Responsible The primary contact for this project is [//]: # (TODO: place link to your telegram and email)