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.
jojapoppa f2e6c7b11b changes for windows build... 3 hours ago
blockExplorer gitea init... 9 months ago
boostfedora_android gitea init... 9 months ago
boostfedora_emscripten image 7 months ago
docker_riscV64 set realloc for outputs and spent keys to 13 gigs each 1 week ago
docker_wasm trying fibers on riscv64 2 months ago
docker_x86_64 dockerfile... 3 months ago
external remove mmap allocator 1 week ago
include Windows build updates 3 months ago
oldsite gitea init... 9 months ago
src changes for windows build... 3 hours ago
tests massive update to protocolHandler... more sturdy now... 5 hours ago
.gitignore rework build... 9 months ago
CMakeListsAlpine.txt update to Alpine build... 4 months ago
CMakeListsAndroid.txt gitea init... 9 months ago
CMakeListsEmscripten.txt image 7 months ago
CMakeListsLinux.txt include path 3 months ago
CMakeListsMac.txt mac build updates 3 months ago
CMakeListsOld.txt gitea init... 9 months ago
CMakeListsRiscv32.txt check in... 2 months ago
CMakeListsRiscv64.txt memory model ... alignment tests 2 months ago
CMakeListsUbuntu18.txt remove mmap allocator 1 week ago
CMakeListsWindows.txt Windows build updates 3 months ago
CTestCustom.cmake gitea init... 9 months ago
Makefile gitea init... 9 months ago
README.md upgrading indices to support concurrent adding... to make wallet load faster... 4 months ago
checkheight.sh gitea init... 9 months ago
cpit.sh gitea init... 9 months ago
download.sh gitea init... 9 months ago
elf.sh wip 4 months ago
emchanges.txt gitea init... 9 months ago
makeboost.sh.notes gitea init... 9 months ago
makedebug.sh upgrade for phmap 4 months ago
makefedora.sh path fix for RiscV5 3 months ago
makefedora_emscripten.sh image 7 months ago
makerelease.sh cleaning up link 4 months ago
mkit.sh wip 4 months ago
run.sh big upgrade to fedoragold_simplewallet 5 months ago
stopdaemon.sh gitea init... 9 months ago
test.sh gitea init... 9 months ago
testmine.sh gitea init... 9 months ago
walletd_status.sh gitea init... 9 months ago
webserver.sh gitea init... 9 months ago

README.md

image]

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;

Fifth step. Address prefix

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"

Sixth step. Genesis block

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:

  • Parallel build: run make -j<number of threads> instead of make.
  • Debug build: run make build-debug.
  • Test suite: run make test-release to run tests in addition to building. Running make test-debug will do the same to the debug version.

Good luck!