Skip to content

Commit 0fd6752

Browse files
committed
Support signet as parent chain
signed has simpler signed blocks but no CT or any other extra feature
1 parent 5442657 commit 0fd6752

File tree

6 files changed

+17
-4
lines changed

6 files changed

+17
-4
lines changed

src/chainparams.cpp

+4-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
#include "chainparams.h"
77
#include "consensus/merkle.h"
88
#include "issuance.h"
9-
9+
#include "primitives/bitcoin/block.h"
1010
#include "tinyformat.h"
1111
#include "util.h"
1212
#include "utilstrencodings.h"
@@ -131,6 +131,9 @@ class CCustomParams : public CChainParams {
131131
consensus.pegin_min_depth = GetArg("-peginconfirmationdepth", DEFAULT_PEGIN_CONFIRMATION_DEPTH);
132132
consensus.mandatory_coinbase_destination = StrHexToScriptWithDefault(GetArg("-con_mandatorycoinbase", ""), CScript()); // Blank script allows any coinbase destination
133133
consensus.parent_chain_signblockscript = StrHexToScriptWithDefault(GetArg("-con_parent_chain_signblockscript", ""), CScript());
134+
consensus.parent_is_signet = GetBoolArg("-con_parent_is_signet", false);
135+
g_solution_blocks = consensus.parent_is_signet;
136+
g_solution_block_len = GetArg("-con_parent_signet_siglen", 77);
134137
consensus.parent_pegged_asset.SetHex(GetArg("-con_parent_pegged_asset", "0x00"));
135138

136139
// bitcoin regtest is the parent chain by default

src/consensus/params.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,10 @@ struct Params {
7474
CScript signblockscript;
7575
bool has_parent_chain;
7676
CScript parent_chain_signblockscript;
77+
bool parent_is_signet;
7778
CAsset parent_pegged_asset;
78-
bool ParentChainHasPow() const { return parent_chain_signblockscript == CScript();}
79+
bool ParentChainHasPow() const { return parent_chain_signblockscript == CScript(); }
80+
bool ParentChainIsBitcoinLike() const { return parent_is_signet || ParentChainHasPow(); }
7981
};
8082
} // namespace Consensus
8183

src/init.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -519,6 +519,8 @@ std::string HelpMessage(HelpMessageMode mode)
519519
strUsage += HelpMessageOpt("-parentpubkeyprefix", strprintf(_("The byte prefix, in decimal, of the parent chain's base58 pubkey address. (default: %d)"), 111));
520520
strUsage += HelpMessageOpt("-parentscriptprefix", strprintf(_("The byte prefix, in decimal, of the parent chain's base58 script address. (default: %d)"), 196));
521521
strUsage += HelpMessageOpt("-con_parent_chain_signblockscript", _("Whether parent chain uses pow or signed blocks. If the parent chain uses signed blocks, the challenge (scriptPubKey) script. If not, an empty string. (default: empty script [ie parent uses pow])"));
522+
strUsage += HelpMessageOpt("-con_parent_is_signet", _("If parent chain uses signed blocks, whether it is an elements based chain or one based on signet (default: false)"));
523+
strUsage += HelpMessageOpt("-con_parent_signet_siglen", _("If parent chain uses signed blocks based on signet, The length of the signature must be exactly this long (padded to this length, if shorter). All block headers in this network are of length 80 + this value. (default: 77)"));
522524
strUsage += HelpMessageOpt("-con_parent_pegged_asset=<hex>", _("Asset ID (hex) for pegged asset for when parent chain has CA. (default: 0x00)"));
523525
}
524526
strUsage += HelpMessageOpt("-validatepegin", strprintf(_("Validate peg-in claims. An RPC connection will be attempted to the trusted bitcoind using the `mainchain*` settings below. All functionaries must run this enabled. (default: %u)"), DEFAULT_VALIDATE_PEGIN));

src/rpc/blockchain.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -1112,6 +1112,8 @@ UniValue getsidechaininfo(const JSONRPCRequest& request)
11121112
" \"min_peg_diff\" : \"xxxx\", (string) The minimum difficulty parent chain header target. Peg-in headers that have less work will be rejected as an anti-Dos measure.\n"
11131113
" \"parent_blockhash\" : \"xxxx\", (string) The parent genesis blockhash as source of pegged-in funds.\n"
11141114
" \"parent_chain_has_pow\": \"xxxx\", (boolean) Whether parent chain has pow or signed blocks.\n"
1115+
" \"parent_chain_is_signet\": \"xxxx\", (boolean) If parent chain uses signed blocks, whether it is an elements based chain or one based on signet.\n"
1116+
" \"parent_chain_signet_siglen\": \"xxxx\", (numeric) If parent chain uses signed blocks based on signet, The length of the signature must be exactly this long (padded to this length, if shorter). All block headers in this network are of length 80 + this value.\n"
11151117
" \"parent_chain_signblockscript_asm\": \"xxxx\", (string) If the parent chain has signed blocks, its signblockscript in ASM.\n"
11161118
" \"parent_chain_signblockscript_hex\": \"xxxx\", (string) If the parent chain has signed blocks, its signblockscript in hex.\n"
11171119
" \"parent_pegged_asset\": \"xxxx\", (boolean) If the parent chain has Confidential Assets, the asset id of the pegged asset in that chain.\n"
@@ -1133,6 +1135,10 @@ UniValue getsidechaininfo(const JSONRPCRequest& request)
11331135
obj.push_back(Pair("parent_blockhash", parent_blockhash.GetHex()));
11341136
obj.push_back(Pair("parent_chain_has_pow", consensus.ParentChainHasPow()));
11351137
if (!consensus.ParentChainHasPow()) {
1138+
obj.push_back(Pair("parent_chain_is_signet", consensus.parent_is_signet));
1139+
if (consensus.parent_is_signet) {
1140+
obj.push_back(Pair("parent_chain_signet_siglen", (uint64_t)g_solution_block_len));
1141+
}
11361142
obj.push_back(Pair("parent_chain_signblockscript_asm", ScriptToAsmStr(consensus.parent_chain_signblockscript)));
11371143
obj.push_back(Pair("parent_chain_signblockscript_hex", HexStr(consensus.parent_chain_signblockscript)));
11381144
obj.push_back(Pair("parent_pegged_asset", HexStr(consensus.parent_pegged_asset)));

src/validation.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -2533,7 +2533,7 @@ bool IsValidPeginWitness(const CScriptWitness& pegin_witness, const COutPoint& p
25332533
uint256 tx_hash;
25342534
int num_txs;
25352535
// Get txout proof
2536-
if (Params().GetConsensus().ParentChainHasPow()) {
2536+
if (Params().GetConsensus().ParentChainIsBitcoinLike()) {
25372537

25382538
Sidechain::Bitcoin::CMerkleBlock merkle_block_pow;
25392539
if (!GetBlockAndTxFromMerkleBlock(block_hash, tx_hash, merkle_block_pow, stack[5])) {

src/wallet/rpcwallet.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -3716,7 +3716,7 @@ static UniValue createrawpegin(const JSONRPCRequest& request, T_tx_ref& txBTCRef
37163716
UniValue createrawpegin(const JSONRPCRequest& request)
37173717
{
37183718
UniValue ret(UniValue::VOBJ);
3719-
if (Params().GetConsensus().ParentChainHasPow()) {
3719+
if (Params().GetConsensus().ParentChainIsBitcoinLike()) {
37203720
Sidechain::Bitcoin::CTransactionRef txBTCRef;
37213721
Sidechain::Bitcoin::CTransaction tx_aux;
37223722
Sidechain::Bitcoin::CMerkleBlock merkleBlock;

0 commit comments

Comments
 (0)