This was originally based on the reference code for CryptoNote cryptocurrency protocol. But, since has been modified for the FedoraGold (FED) project.
1. Default ports for P2P and RPC networking (src/CryptoNoteConfig.h)
P2P port is used by daemons to talk to each other through P2P protocol. RPC port is used by wallet and other programs to talk to daemon.
It’s better to choose ports that aren’t used by other software or coins. See known TCP ports lists:
Example:
const int P2P_DEFAULT_PORT = 17236;
const int RPC_DEFAULT_PORT = 18236;
2. Network identifier (src/P2p/P2pNetworks.h)
This identifier is used in network packages in order not to mix two different cryptocoin networks. Change all the bytes to random values for your network:
const static boost::uuids::uuid CRYPTONOTE_NETWORK = { { 0xA1, 0x1A, 0xA1, 0x1A, 0xA1, 0x0A, 0xA1, 0x0A, 0xA0, 0x1A, 0xA0, 0x1A, 0xA0, 0x1A, 0xA1, 0x1A } };
3. Seed nodes (src/CryptoNoteConfig.h)
Add IP addresses of your seed nodes.
Example:
const std::initializer_list<const char*> SEED_NODES = {
"111.11.11.11:17236",
"222.22.22.22:17236",
};
1. Minimum transaction fee (src/CryptoNoteConfig.h)
Zero minimum fee can lead to transaction flooding. Transactions cheaper than the minimum transaction fee wouldn’t be accepted by daemons. 100000 value for MINIMUM_FEE
is usually enough.
Example:
const uint64_t MINIMUM_FEE = 100000;
2. Penalty free block size (src/CryptoNoteConfig.h)
CryptoNote protects chain from tx flooding by reducing block reward for blocks larger than the median block size. However, this rule applies for blocks larger than CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE
bytes.
Example:
const size_t CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE = 20000;
You may choose a letter (in some cases several letters) all the coin’s public addresses will start with. It is defined by CRYPTONOTE_PUBLIC_ADDRESS_BASE58_PREFIX
constant. Since the rules for address prefixes are nontrivial you may use the prefix generator tool.
Example:
const uint64_t CRYPTONOTE_PUBLIC_ADDRESS_BASE58_PREFIX = 0xe9; // addresses start with "f"
1. Build the binaries with blank genesis tx hex (src/CryptoNoteConfig.h)
You should leave const char GENESIS_COINBASE_TX_HEX[]
blank and compile the binaries without it.
Example:
const char GENESIS_COINBASE_TX_HEX[] = "";
2. Start the daemon to print out the genesis block
Run your daemon with --print-genesis-tx
argument. It will print out the genesis block coinbase transaction hash.
Example:
furiouscoind --print-genesis-tx
3. Copy the printed transaction hash (src/CryptoNoteConfig.h)
Copy the tx hash that has been printed by the daemon to GENESIS_COINBASE_TX_HEX
in src/CryptoNoteConfig.h
Example:
const char GENESIS_COINBASE_TX_HEX[] = "013c01ff0001ffff...785a33d9ebdba68b0";
To build, change to a directory where this file is located, and run make
. The resulting executables can be found in build/release/src
.
Advanced options:
make -j<number of threads>
instead of make
.make build-debug
.make test-release
to run tests in addition to building. Running make test-debug
will do the same to the debug version.Good luck!