Mastering Evrmore
*A collection of information about the Evrmore Defi
blockchain*
Summary of Evrmore Chain Parameters for
Developers
The Forkdrop:
A snapshot of
the Ravencoin blockchain was taken at block #2,510,000
on 2022-10-25 02:47:20-UTC
The most
valuable 50,000 addresses were extracted.
That included
all addresses containing >=2,673.14 RVN, and
accounted for 99.21% of all RVN including all burned and
lost RVN
The list of
included addresses and their balances is available HERE.
From that
snapshot, an airdrop was calculated for inclusion in the
Evrmore genesis granting 1 EVR for every RVN
The full
details of the Evrmore genesis block coinbase
transaction is available HERE.
The airdrop
outputs become non-spendable after block height 60x60x24
(estimated 2022-12-29 19:07-UTC))
Evrmore genesis block:
hash:
"0000007b11d0481b2420a7c656ef76775d54ab5b29ee7ea250bc768535693b05"
merkleroot:
"c191c775b10d2af1fcccb4121095b2a018f1bee84fa5efb568fcddd383969262"
Start of Evrmore blockchain mining: block #1 was mined
2022-10-31 15:03:40-UTC
RPC Ports: 8819 mainnet; 18819 testnet
P2P Ports: 8820 mainnet; 18820 testnet
Algo:
mainnet: ProgPow
starting with block 0.
Same as Kawpow except starting
DAG=3GB and EPOCH=12000 blocks and new custom seeds
note: reference C++ implementation
with all details is at
https://github.com/EvrmoreOrg/cpp-evrprogpow
testnet: SHA256 cpu mining using
built-in miner (use "setgenerate true" in the node)
Coinbase subsidy:
2778 EVR starting.
SubsidyHalvingInterval = 1648776
blocks which is ~= 3.1 years
Minerdevfund:
Every coinbase transaction must have
2 outputs:
1 output for the
minerdevfund (value >= 0.1 x (block subsidy +
transaction fees) note: starting block subsidy is 2778
EVR
1 output for the
miner (value <= 0.9 x (block subsidy + transaction
fees) note: starting block subsidy is 2778 EVR
The core node software contains a
hard-coded whitelist of minerdevfund addresses
The whitelist of
addresses will change with different versions of
evrmored/-qt.
The current
whitelist of addresses is reported in the response to
the "getblocktemplate" RPC command
The whitelist (for
core v1.0.5) is:
Mainnet:
"eHNUGzw8ZG9PGC8gKtnneyMaQXQTtAUm98",
"e7Tkk3kjS9NjSYVX2Q8qzxXB1WKMRvea1j"
Testnet:
"n2rxh4SrVLkzASyxaP3jB6Zf2TEfsPXdMz",
"muFMkxZeEpptRMNK1zWvsi2aPRNULCin3s"
Addresses and Keys:
mainnet=>
pchMessageStart[0] = 0x45; // E
pchMessageStart[1] = 0x56; // V
pchMessageStart[2] = 0x52; // R
pchMessageStart[3] = 0x4d; // M
base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned
char>(1,33); // produces 'E' as
first char of address after base58 encoding
base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned
char>(1,92); // produces 'e' as
first char of address after base58 encoding
base58Prefixes[SECRET_KEY] =
std::vector<unsigned char>(1,128); // after base58
encoding, produces a first char of '5' for uncompressed
// WIF, 'K' or 'L' for
compressed WIF (as for Bitcoin)
base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x88, 0xB2,
0x1E};
base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x88, 0xAD,
0xE4};
nExtCoinType
= 175;
strIssueAssetBurnAddress =
"EXissueAssetXXXXXXXXXXXXXXXXYiYRBD";
strReissueAssetBurnAddress =
"EXReissueAssetXXXXXXXXXXXXXXY1ANQH";
strIssueSubAssetBurnAddress =
"EXissueSubAssetXXXXXXXXXXXXXWW1ASo";
strIssueUniqueAssetBurnAddress =
"EXissueUniqueAssetXXXXXXXXXXTZjZJ5";
strIssueMsgChannelAssetBurnAddress =
"EXissueMsgChanneLAssetXXXXXXXD3mRa";
strIssueQualifierAssetBurnAddress =
"EXissueQuaLifierXXXXXXXXXXXXW5Zxyf";
strIssueSubQualifierAssetBurnAddress =
"EXissueSubQuaLifierXXXXXXXXXUgTjtu";
strIssueRestrictedAssetBurnAddress =
"EXissueRestrictedXXXXXXXXXXXZZMynb";
strAddNullQualifierTagBurnAddress =
"EXaddTagBurnXXXXXXXXXXXXXXXXb5HLXh";
strGlobalBurnAddress =
"EXBurnXXXXXXXXXXXXXXXXXXXXXXZ8ZjfN";
testnet=>
pchMessageStart[0] = 0x45; // E
pchMessageStart[1] = 0x56; // V
pchMessageStart[2] = 0x52; // R
pchMessageStart[3] = 0x54; // T
base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned
char>(1,111); // produces 'm' or 'n' as first
char of address after base58 encoding
base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned
char>(1,196); // produces '2' as first char of
address after base58 encoding
base58Prefixes[SECRET_KEY] =
std::vector<unsigned char>(1,239); // after
base58 encoding, produces a first char of '9' for
uncompressed
// WIF, 'c' for compressed
WIF (as for Bitcoin)
base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x35, 0x87,
0xCF};
base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x35, 0x83,
0x94};
nExtCoinType
= 1;
strIssueAssetBurnAddress =
"n1issueAssetXXXXXXXXXXXXXXXXWdnemQ";
strReissueAssetBurnAddress =
"n1ReissueAssetXXXXXXXXXXXXXXWG9NLd";
strIssueSubAssetBurnAddress =
"n1issueSubAssetXXXXXXXXXXXXXbNiH6v";
strIssueUniqueAssetBurnAddress =
"n1issueUniqueAssetXXXXXXXXXXS4695i";
strIssueMsgChannelAssetBurnAddress =
"n1issueMsgChanneLAssetXXXXXXT2PBdD";
strIssueQualifierAssetBurnAddress =
"n1issueQuaLifierXXXXXXXXXXXXUysLTj";
strIssueSubQualifierAssetBurnAddress =
"n1issueSubQuaLifierXXXXXXXXXYffPLh";
strIssueRestrictedAssetBurnAddress =
"n1issueRestrictedXXXXXXXXXXXXZVT9V";
strAddNullQualifierTagBurnAddress =
"n1addTagBurnXXXXXXXXXXXXXXXXX5oLMH";
strGlobalBurnAddress =
"n1BurnXXXXXXXXXXXXXXXXXXXXXXU1qejP";
"In Theory There Is No
Difference Between Theory and Practice, While In
Practice There Is"
Copyright 2022,2023 by Hans Schmidt
Note: this is in no way related to the
wonderful book "Mastering Bitcoin" by Andreas Antonopoulos