Tools to manage and test self VIT node operations and integrations.
- Download the latest release from releases page https://github.com/input-output-hk/jorvit/releases
- Download the jörmungandr nightly binaries from https://github.com/input-output-hk/jormungandr/releases/tag/nightly and place them inside
jor_bins
folder - Download the servicing station binaries from https://github.com/input-output-hk/vit-servicing-station/releases and place them inside
vit_bins
folder
Upon installation the content/structure of the working folder should be like:
.
├── assets
│ ├── fund.csv <-- fund general info
│ └── proposals.csv <-- proposals list example
├── jor_bins
│ ├── jcli <-- node binary
│ ├── jormungandr <-- node binary
│ └── Readme.md
├── vit_bins
│ ├── vit-servicing-station-cli <-- station binary
│ ├── vit-servicing-station-server <-- station binary
│ └── Readme.md
├── jorvit <-- our binary
└── README.md
3 directories, 10 files
Just execute jorvit
binary within a shell and the application will start in foreground
and will display some informations related to the content and services it provides.
There are a lot of config parameters that you can use for the configurations
-allow-node-restart
Allows to stop the node started from the service and restart it manually (default true)
-bft-leader-fund uint
Lovelace amount to fund bft leader account
-bft-leader-min uint
Minimun number of BFT Leaders. NEW SK/PK key pair(s) will be autogenerated if > "bft-leader-secret-key" + "bft-leader-public-key". min: 1 (default 1)
-bft-leader-public-key value
PK (public key) to be used as BFT leader. No config file will be generated for this (since don't have the SK). ex: ed25519_pk15f7p4nzektlrj6muvvmn0hatzekg7yf0qjx54pg72qq2zgjjzdzqwhm8rz
-bft-leader-secret-key value
File containing SK (secret key) to be used as BFT leader
-block0-voteplan
Enable/Disable inclusion of proposals/voteplans signed certificate on block0
-committee-auth-fund uint
Lovelace amount to fund committee auth account
-committee-auth-public-key value
Global committee member public key. ex: ed25519_pk15f7p4nzektlrj6muvvmn0hatzekg7yf0qjx54pg72qq2zgjjzdzqwhm8rz
-committee-duration string
Committee period duration. Ignored if 'committee-end' is set (default "24h")
-committee-end string
Committee end time in '2006-01-02T15:04:05Z07:00' RFC3339 format. If not set 'committee-duration' will be used
-committee-privacy-public-key value
Privacy committee member public key used to build encyption key, hex encoded
-cors string
Comma separated list of CORS allowed origins (default "http://127.0.0.1,http://localhost")
-epoch-duration string
Epoch period duration (default "24h")
-explorer
Enable/Disable explorer
-fees-certificate uint
Default certificate fee (lovelace)
-fees-certificate-pool-registration uint
Pool registration certificate fee (lovelace)
-fees-certificate-stake-delegation uint
Stake delegation certificate fee (lovelace)
-fees-certificate-vote-cast uint
VoteCast certificate fee (lovelace)
-fees-certificate-vote-plan uint
VotePlan certificate fee (lovelace)
-fees-coefficient uint
Coefficient fee
-fees-constant uint
Constant fee (lovelace)
-fees-go-to string
Where to send the collected fees, rewards or treasury (default "rewards")
-fund string
CSV full path (filename) to load FUND info from (default "./assets/fund.csv")
-genesis-extra-data string
YAML full path (filename) to load extra genesis funds from (default "./assets/extra_genesis_data.yaml")
-genesis-time string
Genesis time in '2006-01-02T15:04:05Z07:00' RFC3339 format (default "Now()")
-node string
Address where Jörmungandr node should listen in IP:PORT format (default "127.0.0.1:9001")
-node-log-level string
Jörmungandr node log level, [off, critical, error, warn, info, debug, trace] (default "warn")
-proposals string
CSV full path (filename) to load PROPOSALS from (default "./assets/proposals.csv")
-proxy string
Address where REST api PROXY should listen in IP:PORT format (default "0.0.0.0:8000")
-rest string
Address where Jörmungandr REST api should listen in IP:PORT format (default "0.0.0.0:8001")
-shutdown-node
When exiting try node shutdown in case the node was restarted manually (default true)
-skip-bootstrap
Skip node bootstrap, in case of first/single genesis leader (default true) (default true)
-slot-duration string
Slot period duration. 1s-255s (default "20s")
-start-node
Start jörmungandr node. When false only config will be generated
-start-vit
Start vit-servicing-station-server. When false only config will be generated
-vit-log-level string
vit-servicing-station-server log level, [off, critical, error, warn, info, debug, trace] (default "warn")
-vit-station string
Address where vit-servicing-station-server should listen in IP:PORT format (default "0.0.0.0:3030")
-vote-duration string
Voting period duration. Ignored if 'vote-end' is set (default "144h")
-vote-end string
Vote end time in '2006-01-02T15:04:05Z07:00' RFC3339 format. If not set 'vote-duration' will be used
-vote-start string
Vote start time in '2006-01-02T15:04:05Z07:00' RFC3339 format. If not set 'genesis-time' will be used
-voteplan-proposals-max uint
Max number of proposals per voteplan [1-256] (default 255)
The important service is the APP - PROXY Rest API
since the other 2 services are provided from the jörmungandr service itself.
This service exposes the following rest endpoints:
-
/api/v0/fund
- provides general info related to the active fund phase:curl 'http://localhost:8000/api/v0/fund'
{ "fund_name": "Fund0", "fund_goal": "Support innovative projects", "voting_power_info": "2020-05-26 15:26:29 +0000 UTC", "rewards_info": "2020-06-26 15:26:29 +0000 UTC", "fund_start_time": "2020-05-26 15:26:29 +0000 UTC", "fund_end_time": "2020-06-26 15:26:29 +0000 UTC", "next_fund_start_time": "2021-06-26 15:26:29 +0000 UTC", "chain_vote_plans": [ { "chain_voteplan_id": "f4fdab54e2d516ce1cabe8ae8cfe77e99eeb530f7033cdf20e2392e012373a7b", "chain_vote_starttime": "2020-05-26 19:38:35 +0000 UTC", "chain_vote_endtime": "2020-05-26 19:43:35 +0000 UTC", "chain_committee_endtime": "2020-05-26 19:48:35 +0000 UTC", "chain_voteplan_payload": "Public" }, { "chain_voteplan_id": "145b208b9de264352ae8b7071ee1c59996de01dde03ce8ecd5b44f7f71631cec", "chain_vote_starttime": "2020-05-26 19:38:35 +0000 UTC", "chain_vote_endtime": "2020-05-26 19:43:35 +0000 UTC", "chain_committee_endtime": "2020-05-26 19:48:35 +0000 UTC", "chain_voteplan_payload": "Public" } ] }
-
/api/v0/proposals/{internal_id}
- get a single proposal details based oninternal_id
:curl 'http://localhost:8000/api/v0/proposals/1'
{ "internal_id": "1", "category": { "category_id": "", "category_name": "Fund0 Development", "category_description": "" }, "proposal_id": "16444246", "proposal_title": "Test proposal 16444246", "proposal_summary": "To test the proposal process 16444246", "proposal_problem": "We haven't tested proposal integration yet 16444246", "proposal_solution": "Test the proposal integration process 16444246", "proposal_url": "https://iohk.submittable.com/submissions/16444246", "proposal_files_url": "https://iohk.submittable.com/submissions/16444246/file/0", "proposal_public_key": "Ae2tdPwUPEYwrazXRJVK4NgHSZCjP9kLSMrx2awgYiBH61zT8kz6u33Sije", "proposal_funds": 1000246, "proposer": { "proposer_email": "iohk_16444246@iohk.io", "proposer_name": "IOHK 16444246", "proposer_url": "https://iohk.io" }, "chain_proposal_id": "5db05d3c7bfc37f2059d24966aa6ef05cfa25b6a478dedb3b93f5dca5c57c24a", "chain_proposal_index": 0, "chain_vote_options": { "blank": 0, "YES": 1, "NO": 2 }, "chain_voteplan_id": "f4fdab54e2d516ce1cabe8ae8cfe77e99eeb530f7033cdf20e2392e012373a7b", "chain_vote_starttime": "2020-05-26 19:38:35 +0000 UTC", "chain_vote_endtime": "2020-05-26 19:43:35 +0000 UTC", "chain_committee_endtime": "2020-05-26 19:48:35 +0000 UTC", "chain_voteplan_payload": "Public" }
-
/api/v0/proposals
- get a array with all detailed proposals:curl 'http://localhost:8000/api/v0/proposals'
[ { "internal_id": "1", "category": { "category_id": "", "category_name": "Fund0 Development", "category_description": "" }, "proposal_id": "16444246", "proposal_title": "Test proposal 16444246", "proposal_summary": "To test the proposal process 16444246", "proposal_problem": "We haven't tested proposal integration yet 16444246", "proposal_solution": "Test the proposal integration process 16444246", "proposal_url": "https://iohk.submittable.com/submissions/16444246", "proposal_files_url": "https://iohk.submittable.com/submissions/16444246/file/0", "proposal_public_key": "Ae2tdPwUPEYwrazXRJVK4NgHSZCjP9kLSMrx2awgYiBH61zT8kz6u33Sije", "proposal_funds": 1000246, "proposer": { "proposer_email": "iohk_16444246@iohk.io", "proposer_name": "IOHK 16444246", "proposer_url": "https://iohk.io" }, "chain_proposal_id": "5db05d3c7bfc37f2059d24966aa6ef05cfa25b6a478dedb3b93f5dca5c57c24a", "chain_proposal_index": 0, "chain_vote_options": { "blank": 0, "YES": 1, "NO": 2 }, "chain_voteplan_id": "f4fdab54e2d516ce1cabe8ae8cfe77e99eeb530f7033cdf20e2392e012373a7b", "chain_vote_starttime": "2020-05-26 19:38:35 +0000 UTC", "chain_vote_endtime": "2020-05-26 19:43:35 +0000 UTC", "chain_committee_endtime": "2020-05-26 19:48:35 +0000 UTC", "chain_voteplan_payload": "Public" }, { "internal_id": "20", "category": { "category_id": "", "category_name": "Fund0 Development", "category_description": "" }, "proposal_id": "16444265", "proposal_title": "Test proposal 16444265", "proposal_summary": "To test the proposal process 16444265", "proposal_problem": "We haven't tested proposal integration yet 16444265", "proposal_solution": "Test the proposal integration process 16444265", "proposal_url": "https://iohk.submittable.com/submissions/16444265", "proposal_files_url": "https://iohk.submittable.com/submissions/16444265/file/0", "proposal_public_key": "Ae2tdPwUPEYwrazXRJVK4NgHSZCjP9kLSMrx2awgYiBH61zT8kz6u33Sije", "proposal_funds": 1000265, "proposer": { "proposer_email": "iohk_16444265@iohk.io", "proposer_name": "IOHK 16444265", "proposer_url": "https://iohk.io" }, "chain_proposal_id": "31a4ecb01eeae808323a11621173f684f64cd35b76b5fe876abfaf694095fee9", "chain_proposal_index": 9, "chain_vote_options": { "blank": 0, "YES": 1, "NO": 2 }, "chain_voteplan_id": "145b208b9de264352ae8b7071ee1c59996de01dde03ce8ecd5b44f7f71631cec", "chain_vote_starttime": "2020-05-26 19:38:35 +0000 UTC", "chain_vote_endtime": "2020-05-26 19:43:35 +0000 UTC", "chain_committee_endtime": "2020-05-26 19:48:35 +0000 UTC", "chain_voteplan_payload": "Public" } ]
-
/api/v0/block0
- get the binary content of the genesis block needed for wallet recovery:curl 'http://localhost:8000/api/v0/block0'
There are also some endpoints proxied to the Jörmungadr node Rest service. Are provided in the proxy endpoint for convenience, just to keep the same endpoint in the client. The api docs can be found here
/api/v0/account
- needed to update the wallet state/api/v0/message
- needed to send transactions (wallet recovery, voting, ...)