It was the Bitcointalk forum that inspired us to create Bitcointalksearch.org - Bitcointalk is an excellent site that should be the default page for anybody dealing in cryptocurrency, since it is a virtual gold-mine of data. However, our experience and user feedback led us create our site; Bitcointalk's search is slow, and difficult to get the results you need, because you need to log in first to find anything useful - furthermore, there are rate limiters for their search functionality.
The aim of our project is to create a faster website that yields more results and faster without having to create an account and eliminate the need to log in - your personal data, therefore, will never be in jeopardy since we are not asking for any of your data and you don't need to provide them to use our site with all of its capabilities.
We created this website with the sole purpose of users being able to search quickly and efficiently in the field of cryptocurrency so they will have access to the latest and most accurate information and thereby assisting the crypto-community at large.
static void MineGenesis(CBlockHeader &genesisBlock, const uint256 &powLimit, bool noProduction) {
if (noProduction) genesisBlock.nTime = std::time(nullptr);
genesisBlock.nNonce = std::time(nullptr);
printf("NOTE: Genesis nTime = %u \n", genesisBlock.nTime);
printf("WARN: Genesis nNonce (BLANK!) = %u \n", genesisBlock.nNonce);
arith_uint256 besthash;
memset(&besthash, 0xFF, 32);
arith_uint256 hashTarget = UintToArith256(powLimit);
printf("Target: %s\n", hashTarget.GetHex().c_str());
arith_uint256 newhash = UintToArith256(genesisBlock.GetHash());
while (newhash > hashTarget) {
genesisBlock.nNonce++;
if (genesisBlock.nNonce == 0) {
printf("NONCE WRAPPED, incrementing time\n");
++genesisBlock.nTime;
}
// If nothing found after trying for a while, print status
if ((genesisBlock.nNonce & 0xffff) == 0)
printf("nonce %08X: hash = %s target=%s \r",
genesisBlock.nNonce, newhash.ToString().c_str(),
hashTarget.ToString().c_str());
if (newhash < besthash) {
besthash = newhash;
printf("New best: %s\n", newhash.GetHex().c_str());
}
newhash = UintToArith256(genesisBlock.GetHash());
}
printf("\nGenesis nTime = %u \n", genesisBlock.nTime);
printf("Genesis nNonce = %u \n", genesisBlock.nNonce);
printf("Genesis nBits: %08x\n", genesisBlock.nBits);
printf("Genesis Hash = %s\n", newhash.ToString().c_str());
printf("Genesis Hash Merkle Root = %s\n", genesisBlock.hashMerkleRoot.ToString().c_str());
printf("Genesis Hash Merkle Root = %s\n", genesisBlock.hashMerkleRoot.ToString().c_str());
}
genesis = CreateGenesisBlock(std::time(nullptr), 546521654, 0x1d00ffff, 1, 50 * COIN);
MineGenesis(genesis, consensus.powLimit, true);
static void MineGenesis(CBlockHeader &genesisBlock, const uint256 &powLimit, bool noProduction) {
if (noProduction) genesisBlock.nTime = std::time(nullptr);
genesisBlock.nNonce = std::time(nullptr);
printf("NOTE: Genesis nTime = %u \n", genesisBlock.nTime);
printf("WARN: Genesis nNonce (BLANK!) = %u \n", genesisBlock.nNonce);
arith_uint256 besthash;
memset(&besthash, 0xFF, 32);
arith_uint256 hashTarget = UintToArith256(powLimit);
printf("Target: %s\n", hashTarget.GetHex().c_str());
arith_uint256 newhash = UintToArith256(genesisBlock.GetHash());
while (newhash > hashTarget) {
genesisBlock.nNonce++;
if (genesisBlock.nNonce == 0) {
printf("NONCE WRAPPED, incrementing time\n");
++genesisBlock.nTime;
}
// If nothing found after trying for a while, print status
if ((genesisBlock.nNonce & 0xffff) == 0)
printf("nonce %08X: hash = %s target=%s \r",
genesisBlock.nNonce, newhash.ToString().c_str(),
hashTarget.ToString().c_str());
if (newhash < besthash) {
besthash = newhash;
printf("New best: %s\n", newhash.GetHex().c_str());
}
newhash = UintToArith256(genesisBlock.GetHash());
}
printf("\nGenesis nTime = %u \n", genesisBlock.nTime);
printf("Genesis nNonce = %u \n", genesisBlock.nNonce);
printf("Genesis nBits: %08x\n", genesisBlock.nBits);
printf("Genesis Hash = %s\n", newhash.ToString().c_str());
printf("Genesis Hash Merkle Root = %s\n", genesisBlock.hashMerkleRoot.ToString().c_str());
printf("Genesis Hash Merkle Root = %s\n", genesisBlock.hashMerkleRoot.ToString().c_str());
}
genesis = CreateGenesisBlock(std::time(nullptr), 546521654, 0x1d00ffff, 1, 50 * COIN);
MineGenesis(genesis, consensus.powLimit, true);
sudo apt install ubuntu-mate-desktop
sudo apt install xrdp
sudo systemctl enable xrdp
https://www.jetbrains.com/clion/download/#section=windows
./maker.sh unix install
./maker.sh unix all
openssl ecparam -genkey -name secp256k1 -text -noout -outform DER | xxd -p -c 1000 | sed 's/41534e31204f49443a20736563703235366b310a30740201010420/PrivKey: /' | sed 's/a00706052b8104000aa144034200/\'$'\nPubKey: /'
const CScript genesisOutputScript = CScript() << ParseHex("04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f") << OP_CHECKSIG;
const char* pszTimestamp = "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks";
genesis = CreateGenesisBlock(nTime, nNonce, 0x1d00ffff, 1, 50 * COIN);
assert(consensus.hashGenesisBlock == uint256S("0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f"));
assert(genesis.hashMerkleRoot == uint256S("0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"));
// change all the pchMessageStart with something else, so that your messages are unique.
pchMessageStart[0] = 0xf9;
pchMessageStart[1] = 0xbe;
pchMessageStart[2] = 0xb4;
pchMessageStart[3] = 0xd9;
// change the default port, choose one port that is not used by another popular prog like ftp, or emails. Choose a different port for main,testnet and regnet.
nDefaultPort = 8333;
// change this to this value so that the consensus will accept your low difficulty mining at starting.
consensus.nMinimumChainWork = uint256S("0000000000000000000000000000000000000000000000000000000100010001");
// start all the PIB from height 1, so change these to 1
consensus.BIP34Height = 1;
consensus.BIP65Height = 1;
consensus.BIP65Height = 1;
// change the hash of BIPs to your genesis hash (see the genesis section) ??? is your genesis hash
// do it for main, testnet and regnet.
consensus.BIP16Exception = uint256S("0x???");
consensus.BIP34Hash = uint256S("0x???");
// fix the checkpoint data with your genesis hash, do it for main,testnet and regnet
checkpointData = {{{0, uint256S("0x???")},}};
// empty ChainTxData like this
chainTxData = ChainTxData{};
// you can change how often the wallet will retarget the difficulty.
consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; // two weeks
// you can change the target for coin generation; bitcoin is 10 minutes, litecoin 2.5 minutes. Short means quicker transactions, but also more risk of orphan and failed transactions due to network issues.
// Also the faster, the more inflation, take this in account when you calculate your max coin generation, and rates.
consensus.nPowTargetSpacing = 10*60;
// blockchain size: your blockchain is very small; change this parameter to 1 so that it will not ask too much space at starting.
m_assumed_blockchain_size = 1; // was 240
// comments all the vSeeds, and change that to your server 1 and server 2 address since they will run the wallet and need to be peer to each other to get your coin to be functional.
vSeeds.emplace_back("seed.bitcoin.sipa.be");
vSeeds.emplace_back("dnsseed.bluematt.me");
// change the prefixes to your coin. If your coin is named Yourcoin for example you want that prefix to be Y
// prefixes are not that obvious, check https://en.bitcoin.it/wiki/List_of_address_prefixes
// to understand how prefixes are calculated
base58Prefixes[PUBKEY_ADDRESS] = std::vector(1,0);
base58Prefixes[SCRIPT_ADDRESS] = std::vector(1,5);
base58Prefixes[SECRET_KEY] = std::vector(1,128);
// change this to something of your own
bech32_hrp = "bc"; // change to yc for yourcoin for example?
CAmount GetBlockSubsidy(int nHeight, const Consensus::Params &consensusParams) {
CAmount nSubsidy;
if (nHeight == 10 || nHeight == 50 || nHeight == 70 || nHeight == 90 || nHeight == 110 || nHeight == 130) {
nSubsidy = 20000*COIN; // premine 6x20000 coins
} else {
if (nHeight <= 150) {
nSubsidy = 10 * COIN ; // small mining to carry out the transactions
} else {
float year= (nHeight / 210240)+1; // avoid to get a negative nSubsidy
float halfing = year/ 1.618033988750;
nSubsidy = (63 / halfing)*COIN;
}
}
printf("GetBlockSubsidy: height: %i - nSubsidy: %ld \n",nHeight, nSubsidy);
return nSubsidy;
}
throw JSONRPCError(RPC_INVALID_PARAMETER, "getblocktemplate must be called with the segwit rule set (call with {\"rules\": [\"segwit\"]})");
qint64 secs = blockDate.secsTo(currentDate);
becomes qint64 secs=0;
If (!coind->height)
// change to
if (coind->height<0)