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.
Joja Poppa 9aee0f93c4 new caching algo. wow. 1 year ago
blockExplorer gitea init... 2 years ago
boostfedora_android gitea init... 2 years ago
boostfedora_emscripten image 1 year ago
docker_riscV64 small edit 1 year ago
docker_wasm trying fibers on riscv64 1 year ago
docker_x86_64 dockerfile... 1 year ago
external using virtual memory now... 1 year ago
include initial checking/setup for support for randomX 1 year ago
oldsite gitea init... 2 years ago
src new caching algo. wow. 1 year ago
tests work on cache exit efficiency... 1 year ago
.gitignore rework build... 2 years ago
CMakeListsAlpine.txt update to Alpine build... 1 year ago
CMakeListsAndroid.txt gitea init... 2 years ago
CMakeListsEmscripten.txt image 1 year ago
CMakeListsLinux.txt another major upgrde to the caching algo 1 year ago
CMakeListsMac.txt initial checking/setup for support for randomX 1 year ago
CMakeListsOld.txt gitea init... 2 years ago
CMakeListsRiscv32.txt check in... 1 year ago
CMakeListsRiscv64.txt now wchar 1 year ago
CMakeListsUbuntu18.txt new caching algo. wow. 1 year ago
CMakeListsUbuntu18Old.txt new caching algo. wow. 1 year ago
CMakeListsUbuntu18maybe.txt new caching algo. wow. 1 year ago
CMakeListsWindows.txt Windows build 1 year ago
CTestCustom.cmake gitea init... 2 years ago
Makefile gitea init... 2 years ago
README.md upgrading indices to support concurrent adding... to make wallet load faster... 1 year ago
checkheight.sh gitea init... 2 years ago
cpit.sh gitea init... 2 years ago
createcgroup.sh using virtual memory now... 1 year ago
download.sh gitea init... 2 years ago
elf.sh wip 1 year ago
emchanges.txt gitea init... 2 years ago
fedoragold_daemon.log new caching algo. wow. 1 year ago
forcefree.sh new caching algo. wow. 1 year ago
librandomx.a initial checking/setup for support for randomX 1 year ago
makeboost.sh.notes new caching algo. wow. 1 year ago
makedebug.sh upgrade for phmap 1 year ago
makefedora.sh new caching algo. wow. 1 year ago
makefedora_emscripten.sh image 1 year ago
makerelease.sh cleaning up link 1 year ago
mkit.sh wip 1 year ago
mmapOverRAM.sh new caching algo. wow. 1 year ago
run.sh big upgrade to fedoragold_simplewallet 1 year ago
run_daemon.sh wip on cache... 1 year ago
stopdaemon.sh gitea init... 2 years ago
tail.sh wip on cache... 1 year ago
test.sh gitea init... 2 years ago
testmine.sh gitea init... 2 years ago
walletd_status.sh gitea init... 2 years ago
webserver.sh gitea init... 2 years 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!