A comprehensive guide to setting up your own HUSH Smart Chain.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

4.2 KiB

After assigning ip address to each node, we will use:

  • sudo ufw allow from ip-address, where ip-address is the ip of the node you want to be able to connect to.

From here we will start a tmux session on each machine. We do not want to lose our process and break our chain. So we can run the following:

tmux new-session -t NODE1 on our first node and tmux new-session -t NODE2 on our second node From your first tmux session, NODE1 run:

./hush-smart-chain -ac_name=TESTCOIN -ac_private=1 -ac_blocktime=260 -ac_halving=420000 -ac_reward=2400000000 -ac_supply=987318 -addnode=ip-of-node2 &

From your second tmux session, NODE2 run:

./hush-smart-chain -ac_name=TESTCOIN -ac_private=1 -ac_blocktime=260 -ac_halving=420000 -ac_reward=2400000000 -ac_supply=987318 -addnode=ip-of-node1 &
Note: By adding & to the end of this command, it will execute in the background while still allowing you to input commands in the current shell window

Compare the magic number

  • Example: magic.c89b00b16, the string c89b00b16 will be different, but must be identical on both nodes

More info on HSC -ac_ options and what they do:

  • insert link to documentation

Before mining the pre-mined supply

All of the pre-mined coins are mined in the first block. Therefore, whichever machine executes the mining command will receive the entirely of the blockchain's pre-mined coin supply, as set in the ac_supply parameter. Upon mining the first block, these coins are available in the default wallet.dat file.

To collect all the mining rewards from the node to a single address, execute the following command:

if not yet installed: sudo apt install jq
# Get a new address
newaddress=$(./hush-cli -ac_name=TESTCOIN getnewaddress)

# Get the corresponding pubkey

pubkey=$(./hush-cli -ac_name=TESTCOIN validateaddress $newaddress | jq -r '.pubkey' )

# Indicate the pubkey to the daemon
./hush-cli -ac_name=TESTCOIN setpubkey $pubkey

Enable mining

./hush-cli -ac_name=TESTCOIN setgenerate true $(nproc)

Mining is prohibited by all VPS providers, so in that case it is safer to run with -j2(?) option instead of $(nproc), will be updated...

Verify if mining is working

After mining was enabled, you can check if the two nodes are connected by using the following command:

./hush-cli -ac_name=TESTCOIN getinfo | grep connections

Must be "connections": 1.

Useful RPC commands

All RPC commands for Hush can be used the same way for any HSC. The total list: https://faq.hush.is/rpc/coinsupply.html

Most useful:

./hush-cli -ac_name=TESTCOIN getinfo

TO-DO list

  • ac_? for the total supply.
  • DPoW?
  • Specify the devReward wallet, so some portion of all mined coins can go to the devReward address.
  • Add RANDOMX HSC documentation here

The last response from @Duke regarding the last to-do mentioned above:

https://git.hush.is/hush/hush3/src/branch/master/src/hushd#L85

ac_founders and there is also ac_foundersreward

ac_script is the pubkey of the FR address

ac_perc is the percentage

Info

  • SDL/SD/SDP are fully compatible with a HSC, but requires writing some code and running servers.
  • At first, HSC's can just be CPU mined. If we can get the stratum branch merged, that makes it easier for people to use multiple CPUs/GPUs or ASICs to mine HSC's. This assumes the deault PoW algorithm of Equihash (200,9).
  • All HSC's have code inside them already that implements DPoW, such as recognizing notarization transactions and dpowconfs that Duke originally wrote for KMD. So in that sense, all HSC's come equipped with DPoW knowledge. But injecting the data into a new HSC is a service that can be paid for or a project can decide to do it themselves. Projects using HSC's should contact the Hush project to talk about pricing.
  • ac_? for the total supply does not exist. You must get all the other parameters to work exactly right to get the number you want. It's extremely hard, and there will likely be rounding errors because you can't divide 3 satoshis perfectly in half, etc... You can also use -ac_end to say "stop block rewards at this height". KMD internals were not able to represent the HUSH emission schedule, so Duke had to end up manually specifying every single halving until the HUSH BR goes to 0.