Skip to content

Commit

Permalink
signet update to use segwit style witness sig approach
Browse files Browse the repository at this point in the history
  • Loading branch information
kallewoof committed Dec 15, 2018
1 parent d518ea1 commit d579df0
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 41 deletions.
48 changes: 13 additions & 35 deletions src/chainparams.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -276,28 +276,23 @@ class CTestNetParams : public CChainParams {
*/
class SigNetParams : public CChainParams {
public:
SigNetParams(const ChainParamArgs& args) {
for (const auto& a : args) {
for (const auto& b : a.second) {
printf("%s : %s\n", a.first.c_str(), b.c_str());
}
}
if (!args.count("signet_blockscript") || !args.count("signet_siglen")) {
throw std::runtime_error(strprintf("%s: Signet requires -signet_blockscript and -signet_siglen provided.", __func__));
SigNetParams(const ArgsManager& args) {
if (!args.IsArgSet("-signet_blockscript") || !args.IsArgSet("-signet_siglen")) {
throw std::runtime_error("%s: -signet_blockscript and -signet_siglen are both mandatory for signet networks");
}
if (args.at("signet_blockscript").size() != 1) {
if (args.GetArgs("-signet_blockscript").size() != 1) {
throw std::runtime_error(strprintf("%s: -signet_blockscript cannot be multiple values.", __func__));
}
if (args.at("signet_siglen").size() != 1) {
if (args.GetArgs("-signet_siglen").size() != 1) {
throw std::runtime_error(strprintf("%s: -signet_siglen cannot be multiple values.", __func__));
}

LogPrintf("SigNet with block script %s\n", args.at("signet_blockscript")[0]);
LogPrintf("SigNet with block script %s\n", gArgs.GetArgs("-signet_blockscript")[0]);

strNetworkID = "signet";
consensus.blockscript = ParseHex(args.at("signet_blockscript")[0]);
g_solution_block_len = consensus.siglen = atoi64(args.at("signet_siglen")[0]);
consensus.signature_pow = true;
consensus.blockscript = ParseHex(args.GetArgs("-signet_blockscript")[0]);
consensus.siglen = g_solution_block_len = atoi64(args.GetArgs("-signet_siglen")[0]);
consensus.nSubsidyHalvingInterval = 210000;
consensus.BIP34Height = 1;
consensus.BIP65Height = 1;
Expand Down Expand Up @@ -340,8 +335,8 @@ class SigNetParams : public CChainParams {

vFixedSeeds.clear();
vSeeds.clear();
if (args.count("signet_seednode")) {
vSeeds = args.at("signet_seednode");
if (args.IsArgSet("-signet_seednode")) {
vSeeds = gArgs.GetArgs("-signet_seednode");
}

base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>{125};
Expand Down Expand Up @@ -489,7 +484,7 @@ const CChainParams &Params() {
return *globalChainParams;
}

std::unique_ptr<const CChainParams> CreateChainParams(const std::string& chain, const ChainParamArgs& args)
std::unique_ptr<const CChainParams> CreateChainParams(const std::string& chain)
{
if (chain == CBaseChainParams::MAIN)
return std::unique_ptr<CChainParams>(new CMainParams());
Expand All @@ -499,30 +494,13 @@ std::unique_ptr<const CChainParams> CreateChainParams(const std::string& chain,
return std::unique_ptr<CChainParams>(new CRegTestParams(gArgs));
else if (chain == CBaseChainParams::SIGNET) {
g_solution_blocks = true;
return std::unique_ptr<CChainParams>(new SigNetParams(args));
return std::unique_ptr<CChainParams>(new SigNetParams(gArgs));
}
throw std::runtime_error(strprintf("%s: Unknown chain %s.", __func__, chain));
}

void SelectParams(const std::string& network)
{
ChainParamArgs chain_args;
if (gArgs.IsArgSet("-signet_blockscript") && gArgs.IsArgSet("-signet_siglen")) {
chain_args["signet_blockscript"] = gArgs.GetArgs("-signet_blockscript");
chain_args["signet_siglen"] = gArgs.GetArgs("-signet_siglen");
if (gArgs.IsArgSet("-signet_seednode")) {
chain_args["signet_seednode"] = gArgs.GetArgs("-signet_seednode");
}
} else if (gArgs.IsArgSet("-signet_blockscript") || gArgs.IsArgSet("-signet_siglen")) {
throw std::runtime_error("%s: -signet_blockscript and -signet_siglen are both mandatory for signet networks");
} else {
chain_args["signet_blockscript"].push_back("512103e464a9f3070da4d3e0b34ce971ff36f3e07c47a8f4beadf32e8ea7e2afa8a82451ae");
chain_args["signet_siglen"].push_back("77");
if (!gArgs.IsArgSet("-signet_seednode")) {
chain_args["signet_seednode"].push_back("178.128.221.177"); // DG seed node
}
}

SelectBaseParams(network);
globalChainParams = CreateChainParams(network, chain_args);
globalChainParams = CreateChainParams(network);
}
4 changes: 1 addition & 3 deletions src/chainparams.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,14 +101,12 @@ class CChainParams
bool m_fallback_fee_enabled;
};

typedef std::map<std::string,std::vector<std::string>> ChainParamArgs;

/**
* Creates and returns a std::unique_ptr<CChainParams> of the chosen chain.
* @returns a CChainParams* of the chosen chain.
* @throws a std::runtime_error if the chain is not supported.
*/
std::unique_ptr<const CChainParams> CreateChainParams(const std::string& chain, const ChainParamArgs& args=ChainParamArgs());
std::unique_ptr<const CChainParams> CreateChainParams(const std::string& chain);

/**
* Return the currently selected parameters. This won't change after app
Expand Down
2 changes: 1 addition & 1 deletion src/primitives/block.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ std::map<uint256,std::vector<uint8_t>> g_blockheader_payload_map;

uint256 CBlockHeader::GetHash() const
{
return SerializeHash(*this);
return SerializeHash(*this, SER_GETHASH, SERIALIZE_TRANSACTION_NO_WITNESS);
}

std::string CBlock::ToString() const
Expand Down
2 changes: 1 addition & 1 deletion src/primitives/block.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ class CBlockHeader
READWRITE(nTime);
READWRITE(nBits);
READWRITE(nNonce);
if (g_solution_blocks && !(s.GetType() & SER_GETHASH)) {
if (g_solution_blocks && !(s.GetVersion() & SERIALIZE_TRANSACTION_NO_WITNESS)) {
READWRITE(g_blockheader_payload_map[GetHash()]);
size_t len = GetSizeOfCompactSize(g_blockheader_payload_map[GetHash()].size()) + g_blockheader_payload_map[GetHash()].size();
while (len < g_solution_block_len) {
Expand Down
1 change: 1 addition & 0 deletions src/util/system.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -409,6 +409,7 @@ const std::set<std::string> ArgsManager::GetUnrecognizedSections() const
{
// Section names to be recognized in the config file.
static const std::set<std::string> available_sections{
CBaseChainParams::SIGNET,
CBaseChainParams::REGTEST,
CBaseChainParams::TESTNET,
CBaseChainParams::MAIN
Expand Down
2 changes: 1 addition & 1 deletion src/wallet/rpcwallet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3462,7 +3462,7 @@ UniValue getnewblockhex(const JSONRPCRequest& request)
JSONRPCRequest req;
req.params = params;
submitblock(req);
return HexStr(hash);
return hash.GetHex();
}

return HexStr(ssBlock.begin(), ssBlock.end());
Expand Down

0 comments on commit d579df0

Please sign in to comment.