HYDRA Documentation
  • Introduction to Hydra Chain
  • HydraGon
    • Migrate to HydraGon
    • Staking Calculator
  • Legacy Hydra
  • FAQ
  • Hydra web wallet
    • Create New Wallet
      • Key File Option
      • Mnemonic Words Option
    • Access Your Wallet
      • From Mnemonic Words
      • From Private Key
      • From Key File
    • Send and Receive Assets
      • Receive Assets
      • Send Assets
    • Add HRC20 Token
    • Setup Offline Wallet
  • Hydra web browser extension
    • How to integrate with dApps
  • Hydra for Beginners
  • Ledger Nano Guide
  • Hydra Bridge
  • HydraDEX
    • Adding and Removing Liquidity
    • Liquidity Mining on HydraDEX
  • Useful Links (Legacy)
  • Essentials
    • UTXOs Accounting
    • Test & Main Networks
    • Desktop wallet basic usage
    • Wallet Encrypt, Backup and Restore
    • Hydra Core Wallet Commands
    • Adding Nodes
    • Encrypt and Unlock Hydra Wallet
    • Wallet Recovery With Salvagewallet
    • bech32 support
    • Repositories
    • Hydra Exchange Usage Guide
    • How to Add Options
    • How to Use bootstrap.dat
    • Command Lines (RPC API)
    • Guidance of Hydra Deployment and RPC Settings
    • How to Build Hydra on Raspbian
  • HRC20 Tokens
    • HRC20 Token
    • HRC20 Raw Transactions
    • HRC20 With Hydrachainjs
    • HRC20 DApp
  • HRC721 Tokens
    • HRC721 Token - How to deploy
  • How Transactions Work
  • Hydra Economy (Legacy)
    • The Flexible Supply Mechanism
    • Legacy Staking Calculator
  • Installation Guides
  • Guide for Linux
  • Guide for Raspberry Pi
  • Guide for MacOS
  • Staking HYDRA Coins
    • Setting up Staking
    • Staking with Windows VPS on AWS
    • Staking with Linux on DigitalOcean VPS
    • How to Stake Hydra on Linux
    • Stake With Linux VPS
    • How to Stake on FreeBSD
    • Hydra node health check
    • Superstaking
    • Delegating to Superstaker
    • Delegating via Mobile App or Web Browser
    • Lydra Basics
    • Understanding LYDRA — Key Concepts and Dynamics
  • Hydra Chain Core Team
  • KYC/AML Policy
  • Privacy Policy
  • API Documentation
    • Explorer API (in work)
      • General Blockchain Info
      • Fetching Transaction History for HYDRA and HRC20 tokens
      • Block Info
      • Transaction Info
    • Hydra DEX API
  • Community Tools
    • Github repository
    • Docker image for Hydra Node
    • Hydradex.org Custom Lists
  • Security Audits Hydra Bridge
Powered by GitBook
On this page
  • Get hydra Node
  • Deploy Hydra node
  • Local RPC call
  • JsonRPC settings
  • RPC call example
  • Nginx settings(optional)
  • Executing common commands through RPC (create wallet,transfer amount and get balance)
  • CREATEWALLET
  • TRANSFER AMOUNT
  • GETBALANCE

Was this helpful?

  1. Essentials

Guidance of Hydra Deployment and RPC Settings

PreviousCommand Lines (RPC API)NextHow to Build Hydra on Raspbian

Last updated 1 year ago

Was this helpful?

This guidance includes how to deploy, run and make RPC calls.

Suppose the readers are able to use Linux,Mac or Windows command line. If you are not familiar with command line, or just interested in using GUI wallet, please refer to another document about hydra Wallet Tutorial.

Get hydra Node

There are at least 4 ways to get a hydra node, you can choose any way:

1. Download the binaries

If you do not care much about hydra's source code, the easiest way to obtain hydra node is to download the latest binaries on the . Currently it supports Linux, Window, OSX. It is highly recommended to download the latest version. In this guidance, we will use v0.20.12 version as an example。

(Note: the version number you see might be different, here is v0.20.12, but other key words except for version are the same.)

  • For Mac user:

  • For Linux users: or

  • For Windows users: or

  • For Raspberry Pi: (for Bookworm64 and Bullseye64) or (for Bookworm32 and Bullseye32)

Decompress after downloading, then you will get hydrad and hydra-cli under the path/bin.

Please refer to ,Current support Ubuntu,Debian and Mint。

Raspberry Pi users can also use apt - please refer to

After installation, you should be able to run hydrad and hydra-clidirectly in the terminal。

2. Compiler from source code

After compilation, you also get hydrad and hydra-cli under the path/src/

3. Get Hydra node docker image

The Hydra official docker image on docker hub is locktrip/hydra-node, you can pull it by docker command :

docker pull locktrip/hydra-node

docker run -d -P --name Hydra -v /src/hydra:/hydra -e TZ=Europe/Sofia -i -t -p 3338:3338 locktrip/hydra-node Make sure to set your time zone according to your locale. Startup flags can be set as well such as -staking=false to disable staking.

All the ways above can get Hydra nodes. There are two important binaries which are related to deployment and RPC calls:

hydrad:Hydra core program, i.e. Hydra fullnode program.

hydra-cli:Hydra command line interface,interact with hydrad, achieve RPC calls.

Deploy Hydra node

For the instruction for Hydra docker images, please refer to "How to launch Hydra with docker".

Other normal deployment methods are almost the same, here we take Ubuntu as an example. The commands in Mac and windows are exactly the same.

Run Hydra fullnode with ./hydrad:

./hydrad -daemon

This with launch a hydrad daemon with the option -daemon. If user are interested in the event logs about smart contract, please add one more option -logevents.

More options can be found:

./hydrad -help

To stop running:

./hydra-cli stop

The default data path for different platforms:

  • Linux:~/.hydra

  • Mac OSX:~/Library/Application Support/hydra

  • Windows:%APPDATA%\hydra

You can also use -datadir to set your own data path。

hydra node will sync all the historical block data for first launch, and saves to datadir. It might take some time. Then diagnostics for the node can be found under the data path ~/.hydra/debug.log。

Local RPC call

When the hydra node is running, we can use hydra command line interface hydra-cli to interact with hydrad, and make local RPC calls.

e.g.:

newclock@orlov:~/-0.hydra14.3/bin$ ./hydra-cli getinfo
{
  "version": 140300,
  "protocolversion": 70016,
  "walletversion": 130000,
  "balance": 0.00000000,
  "stake": 0.00000000,
  "blocks": 12126,
  "timeoffset": 0,
  "connections": 8,
  "proxy": "",
  "difficulty": {
    "proof-of-work": 1.52587890625e-05,
    "proof-of-stake": 886731.5868738915
  },
  "testnet": false,
  "moneysupply": 100028504,
  "keypoololdest": 1505186997,
  "keypoolsize": 100,
  "paytxfee": 0.00000000,
  "relayfee": 0.00400000,
  "errors": ""
}

To get all RPC command list:

./hydra-cli help

To get help for specific RPC command, use ./hydra-cli help,e.g.:

./hydra-cli help getinfo

JsonRPC settings

You can get the jsonrpc example by using (here we use getinfo as an example): ./hydra-cli help getinfo

Examples:
> curl --user myusername --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getinfo", "params": [] }' -H 'content-type: text/plain;' http://127.0.0.1:3389/

The example shows detailed format for jsonrpc content. However, it can only be called after setting rpcuser and rpcpassword. There are two ways to set the parameters, you can choose either.

Method 1:Create config file ~/.hydra/hydra.conf,which should include:

rpcuser=test  #rpc user name, (necessary)
rpcpassword=test1234  #rpc password, (necessary)
rpcbind=0.0.0.0 (instructs which IP to listen for)
# By default, only local jsonrpc is allowed
# Remote connection is allowed only when setting rpcallowip as following:
# both ipv4 and ipv6 can be set, e.g.:
#rpcallowip=192.168.77.51/255.255.255.0
#rpcallowip=1.2.3.4/24
#rpcallowip=2001:db8:85a3:0:0:8a2e:370:7334/96

For more config settings, please refer to :hydra.conf example

After creating the config file, please restart the node to finish settings.

Method 2:Restart Hydra node with following options:

./hydrad -daemon -rpcuser=test -rpcpassword=test1234 -rpcbind=0.0.0.0 -rpcallowip=192.168.77.51/255.255.255.0

The meaning of options rpcuser, rpcpassword and rpcallowip are all the same with the config file above.

RPC call example

You can make remote RPC calls after the settings above. Here is an example: Suppose the hydra node is running on an Ubuntu machine, whose ip is 192.168.77.188, default port=3389. Now we try to make jsonrpc call in a remote macbook:

$ curl --user test:test1234 --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getinfo", "params": [] }' -H 'content-type: text/plain;' http://192.168.77.188:3389/
{"result":{"version":140300,"protocolversion":70016,"walletversion":130000,"balance":0.00000000,"stake":0.00000000,"blocks":12197,"timeoffset":0,"connections":8,"proxy":"","difficulty":{"proof-of-work":1.52587890625e-05,"proof-of-stake":650787.7561123729},"testnet":false,"moneysupply":100028788,"keypoololdest":1505186997,"keypoolsize":100,"paytxfee":0.00000000,"relayfee":0.00400000,"errors":""},"error":null,"id":"curltest"}

The result is identical with local call.

You can also use tools like postman to get the same result:

Nginx settings(optional)

As the example above, you might find that it is quite complicated to make remote jsonrpc, since you must include rpcuser, rpcpassword, as well as port in the command. If you don't want users to provide these parameters, we recommand using Nginx. The benefits for Nginx is not only about simplification, but also a good way to hide rpcuser, rpcpassword and port number. And you can filter some RPCs for security. Here we suppose the reader have installed Nginx and have basic knowledges about how to use it.

example:

  • hydra node is running on 192.168.77.188,

  • api proxy ip 192.168.77.51, with Nginx installed

Instructions:

1.Set the hydra.conf of hydra node, remember to add the proxy ip to rpcallowip e.g.:

rpcuser=test
rpcpassword=test1234
rpcallowip=192.168.77.51/255.255.255.0

2.Setup Nginx :

    server {
        listen       80;
        server_name  localhost;

        location / {
            proxy_pass http://192.168.77.188:3389;  #to port 3389
            proxy_set_header Authorization "Basic dGVzdDp0ZXN0MTIzNA==";  # its the base64 encode of test:test1234
        }
    }

3.Then you can make remote rpc call through proxy, without rpcuser or rpcpassword. e.g.:

$ curl  --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getinfo", "params": [] }' -H 'content-type: text/plain;' http://192.168.77.51/
{"result":{"version":140300,"protocolversion":70016,"walletversion":130000,"balance":0.00000000,"stake":0.00000000,"blocks":12250,"timeoffset":0,"connections":8,"proxy":"","difficulty":{"proof-of-work":1.52587890625e-05,"proof-of-stake":651324.7815933984},"testnet":false,"moneysupply":100029000,"keypoololdest":1505186997,"keypoolsize":100,"paytxfee":0.00000000,"relayfee":0.00400000,"errors":""},"error":null,"id":"curltest"}

This is only a simple example. You might have different settings or tools instead.

Executing common commands through RPC (create wallet,transfer amount and get balance)

CREATEWALLET

Creates and loads a new wallet.

Arguments:

1. "wallet_name"        (string, required) The name for the new wallet. If this is a path, the wallet will be created at the path location.
2. disable_private_keys (boolean, optional, default: false) Disable the possibility of private keys (only watchonlys are possible in this mode).

Result:

{
  "name" :    <wallet_name>, (string) The wallet name if created successfully. If the wallet was created using a full path, the wallet_name will be the full path.
  "warning" : <warning>,     (string) Warning message if wallet was not loaded cleanly.
}

Examples:

> hydra-cli createwallet "testwallet"

> curl --user myusername --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "createwallet", "params": ["testwallet"] }' -H 'content-type: text/plain;' http://127.0.0.1:3389/

Test example:

createwallet “hydra”

Test result:

  {
    "name": "hydra",
    "warning": ""
  }

TRANSFER AMOUNT

Send an amount to a given address.

Requires wallet passphrase to be set with walletpassphrase call.

Arguments:

1. "address"            (string, required) The Hydra address to send to.
2. "amount"               (numeric or string, required) The amount in HYDRA to send. eg 0.1
3. "comment"              (string, optional) A comment used to store what the transaction is for. 
                             This is not part of the transaction, just kept in your wallet.
4. "comment_to"           (string, optional) A comment to store the name of the person or organization 
                             to which you're sending the transaction. This is not part of the 
                             transaction, just kept in your wallet.
5. subtractfeefromamount  (boolean, optional, default=false) The fee will be deducted from the amount being sent.
                             The recipient will receive less hydras than you enter in the amount field.
6. replaceable            (boolean, optional) Allow this transaction to be replaced by a transaction with higher fees via BIP 125
7. conf_target            (numeric, optional) Confirmation target (in blocks)
8. "estimate_mode"        (string, optional, default=UNSET) The fee estimate mode, must be one of:
       "UNSET"
       "ECONOMICAL"
       "CONSERVATIVE"
9. "senderaddress"        (string, optional) The quantum address that will be used to send money from.
10."changeToSender"       (bool, optional, default=false) Return the change to the sender.

Result:

"txid" (string) The transaction id.

Examples:

> hydra-cli sendtoaddress "HASUX9pYyHxyxMZgcS8VKBjdcQH7DAL9eW" 0.1

> hydra-cli sendtoaddress "HASUX9pYyHxyxMZgcS8VKBjdcQH7DAL9eW" 0.1 "donation" "seans outpost"

> hydra-cli sendtoaddress "HASUX9pYyHxyxMZgcS8VKBjdcQH7DAL9eW" 0.1 "" "" true

> hy-cli sendtoaddress "HASUX9pYyHxyxMZgcS8VKBjdcQH7DAL9eW", 0.1, "donation", "seans outpost", false, null, null, "", "HASUX9pYyHxyxMZgcS8VKBjdcQH7DAL9eW", true

> curl --user myusername --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "sendtoaddress", "params": ["HASUX9pYyHxyxMZgcS8VKBjdcQH7DAL9eW", 0.1, "donation", "seans outpost"] }' -H 'content-type: text/plain;' http://127.0.0.1:3389/

> curl --user myusername --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "sendtoaddress", "params": ["HASUX9pYyHxyxMZgcS8VKBjdcQH7DAL9eW", 0.1, "donation", "seans outpost", false, null, null, "", "HASUX9pYyHxyxMZgcS8VKBjdcQH7DAL9eW", true] }' -H 'content-type: text/plain;' http://127.0.0.1:3389/wallet/walletname

GETBALANCE

Returns the total available balance. The available balance is what the wallet considers currently spendable, and is thus affected by options which limit spendability such as -spendzeroconfchange.

Arguments:

1. (dummy)           (string, optional) Remains for backward compatibility. Must be excluded or set to "*".
2. minconf           (numeric, optional, default=0) Only include transactions confirmed at least this many times.
3. include_watchonly (bool, optional, default=false) Also include balance in watch-only addresses (see 'importaddress')

Result:

amount              (numeric) The total amount in HYDRA received for this account.

Examples:

As a json RPC call:

 curl --user myusername --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getbalance", "params": ["*", 6] }' -H 'content-type: text/plain;' http://127.0.0.1:3389/wallet/walletname

Test example:

./hydra-cli getbalance

Test result:

5.683000

If you have any questions during node deployment and RPC calls, here are some useful documents to refer to:

  • For source code compilation issues:

  • Command to check all hydrad options:./hydrad -help

  • Command to get all RPC list: ./hydra-cli help

  • Get RPC help(like getinfo): ./hydra-cli help getinfo

  • hydra.conf file example:hydra.conf

If you want to compile latest hydra from source code, please pull the latest source from github :

The instruction for compilation : Currently we recommend to compile on Linux or OSX, while other platforms might need more configuration.

Suppose user has docker environment installed correctly. ()

postman

hydra release page
hydra-0.20.18-macos.dmg
hydra-0.20.18-ubuntu20.04-x86_64-gnu.zip
hydra-0.20.18-ubuntu18.04-x86_64-gnu.zip
hydra-0.20.18-win64.zip
hydra-0.20.18-win32.zip
hydra-0.20.18-aarch64-linux-gnu.zip
hydra-0.20.18-arm-linux-gnueabihf.zip
https://github.com/Hydra-Chain/node/releases
https://github.com/Hydra-Chain/node/releases
https://github.com/Hydra-Chain/node
https://github.com/Hydra-Chain/node
what is docker?
https://hub.docker.com/r/locktrip/hydra-node
https://github.com/Hydra-Chain/node