Hivemind project's repository for the modified testnet seeder, the code to generate canonical blockchain data, and backups of the canonical blockchain(s)
C++ Shell
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

README.md

testnet-canonical

This repository is the starting point for anyone wanting to connect to the testnet and start testing / working on the bitcoin-hivemind project.

Starting development / testing (environment setup and building):

  1. You may use the following guide to setup a remote node, or follow the instructions on a virtual machine / your local system: Fullnode setup guide

  2. Edit your configuration file; Linux: ~/.hivemind/hivemind.conf Windows: %APPDATA%\hivemind\ Ex: C:\Users\username\AppData\Roaming\Hivemind\hivemind.conf and append the following line:

testnet=1
  1. Start the client of your choice (hivemindd & hivemind-cli or hivemind-qt) You should connect automatically to the testnet seeder node(s), if not run the following command through the debug window or hivemind-cli
addnode 162.243.37.30 onetry

Hivemind-Qt first start / tour

When starting Hivemind for the first time you should see the green testnet logo. Hivemind will start connecting to the testnet sync nodes and begin syncing the blockchain automatically. Once your copy of the blockchain is up to date, the overview page will show a list of recent Hivemind transactions. firstStart

After your node has downloaded the canonical testnet data, (you may need to restart Hivemind-Qt), your Hivemind window should look something like this: Synced

To start creating Decisions & Markets visit the Author tab: Author

To vote on Decisions, use the Vote tab: SealedVote

Click on the "Select Decision" button to select and auto fill the Decision ID field: SelectDecision

Once your vote has been submitted, the txid and voteid will be displayed. If any errors occur an error message will be displayed instead. SealedVoteSubmitted

Submitting a revealed vote: RevealVote RevealVoteSubmitted

The GUI is still in development so the best way to see more details about the Hivemind network is to make use of the RPC console. Hivemind has the following RPC commands available in addition to the standard Bitcoin RPC commands:

createbranch name description baselistingfee freedecisions targetdecisions maxdecisions mintradingfee tau ballottime unsealtime consensusthreshold
createdecision branchid prompt address eventoverby [scaled min max]
createmarket address decisionid[,...] B tradingfee address title description tags[,...] maturation
createrevealvote address branchid height NA decisionid,vote [...]
createsealedvote branchid height voteid
createstealvote branchid height voteid 
createtrade address marketid buy_or_sell number_shares price decision_state [nonce]
getballot branchid [height]
getbranch branchid
getcreatetradecapitalrequired marketid number_shares decision_state
getdecision decisionid
getmarket marketid
getoutcome outcomeid
gettrade tradeid
getvote voteid
listbranches
listdecisions branchid
listmarkets decisionid
listoutcomes branchid
listtrades marketid
listvotes branchid height 

Listing Branches: List Branches

Listing the Decisions on the Branch we just found: List Decisions

Resetting your environment, how to start over with the canonical blockchain data for testing:

  1. Make sure that all instances of hivemind (hivemindd, hivemind-cli and hivemind-qt) are completely shutdown
ps -aux | grep hivemind

The above command will list any process on the system with the name hivemind, look for any running daemons or hivemind-qt instances.

  1. Remove Hivemind's data directory Warning: be careful with the rm command, it will permanently delete files also note that this will remove all transactions, blocks, your configuration files and all of your private keys (coins) which you have created with hivemind.
rm -rf ~/.hivemind/
  1. Remove the directory to which you have built hivemind.

  2. Re-download the source code and build it fresh again using the Fullnode setup guide

Running a testnet sync node (modified to sync a certain number of blocks of data)

Testnet sync nodes for bitcoin-hivemind are full nodes modified to accept a certain number of blocks, up to nHeight of canonical blockchain data. This is to provide developers a testing environment with examples of Hivemind's functions, which is always available in a clean state. Once a developer has synced with the seed node, they can create blocks and share blocks with other nodes that they connect to on the network. If for any reason however, the developer needs to reset the environment they need only erase the data they have added and restore the 'backup' by syncing with the seed node which has remained unchanged.

  1. Download the source code and build it using the Fullnode setup guide

  2. Edit your configuration file (~/.hivemind/hivemind.conf) and append the following line

testnet=1
  1. Set the block sync limit by either:
  • Copying the main.cpp file from this repository to replace the main.cpp in your local repository.
  • Editing main.cpp in your code, adding the following to the AcceptBlock function after line 2751:
// Don't accept any blocks higher than last block of canonical blockchain data
if (nHeight > 279) {
    return false;
}
  1. Copy the canonical blockchain data (blocks/blocks.tar.gz) from this repository into your ~/.hivemind/testnet folder

  2. Extract the contents of the blocks archive inside of the testnet directory:

tar -xvzf blocks.tar.gz
  1. Start the hivemindd daemon with the -rescan option
./src/hivemindd -rescan