mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-09-12 05:32:22 +02:00
kernel: Generate a signet with a challenge
This commit is contained in:
@@ -45,6 +45,7 @@
|
||||
#include <functional>
|
||||
#include <list>
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
#include <span>
|
||||
#include <stdexcept>
|
||||
#include <string>
|
||||
@@ -822,6 +823,16 @@ btck_ChainParameters* btck_chain_parameters_create(const btck_ChainType chain_ty
|
||||
assert(false);
|
||||
}
|
||||
|
||||
btck_ChainParameters* btck_chain_parameters_create_signet(const void* challenge, size_t challenge_len)
|
||||
{
|
||||
assert(challenge != nullptr || challenge_len == 0);
|
||||
const uint8_t* p = static_cast<const uint8_t*>(challenge);
|
||||
CChainParams::SigNetOptions options{
|
||||
.challenge = std::vector<uint8_t>{p, p + challenge_len},
|
||||
};
|
||||
return btck_ChainParameters::ref(const_cast<CChainParams*>(CChainParams::SigNet(options).release()));
|
||||
}
|
||||
|
||||
btck_ChainParameters* btck_chain_parameters_copy(const btck_ChainParameters* chain_parameters)
|
||||
{
|
||||
return btck_ChainParameters::copy(chain_parameters);
|
||||
|
||||
@@ -958,6 +958,18 @@ BITCOINKERNEL_API void btck_logging_connection_destroy(btck_LoggingConnection* l
|
||||
BITCOINKERNEL_API btck_ChainParameters* BITCOINKERNEL_WARN_UNUSED_RESULT btck_chain_parameters_create(
|
||||
btck_ChainType chain_type);
|
||||
|
||||
/**
|
||||
* @brief Create a signet chain parameters struct with a user-provided
|
||||
* challenge.
|
||||
*
|
||||
* @param[in] challenge The signet challenge value. Blocks must satisfy it in
|
||||
* order to be valid.
|
||||
* @param[in] challenge_len The length of the signet challenge.
|
||||
* @return An allocated chain parameters opaque struct.
|
||||
*/
|
||||
BITCOINKERNEL_API btck_ChainParameters* BITCOINKERNEL_WARN_UNUSED_RESULT btck_chain_parameters_create_signet(
|
||||
const void* challenge, size_t challenge_len);
|
||||
|
||||
/**
|
||||
* Copy the chain parameters.
|
||||
*/
|
||||
|
||||
@@ -1056,9 +1056,12 @@ public:
|
||||
class ChainParams : public Handle<btck_ChainParameters, btck_chain_parameters_copy, btck_chain_parameters_destroy>
|
||||
{
|
||||
public:
|
||||
ChainParams(ChainType chain_type)
|
||||
explicit ChainParams(ChainType chain_type)
|
||||
: Handle{btck_chain_parameters_create(static_cast<btck_ChainType>(chain_type))} {}
|
||||
|
||||
explicit ChainParams(std::span<const std::byte> signet_challenge)
|
||||
: Handle{btck_chain_parameters_create_signet(signet_challenge.data(), signet_challenge.size())} {}
|
||||
|
||||
ConsensusParamsView GetConsensusParams() const
|
||||
{
|
||||
return ConsensusParamsView{btck_chain_parameters_get_consensus_params(get())};
|
||||
|
||||
@@ -651,6 +651,13 @@ BOOST_AUTO_TEST_CASE(logging_tests)
|
||||
Logger logger{std::make_unique<TestLog>()};
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(btck_chainparams_tests)
|
||||
{
|
||||
ChainParams params_signet{ChainType::SIGNET};
|
||||
ChainParams params_signet_challenge{hex_string_to_byte_vec("51")};
|
||||
CheckHandle(params_signet, params_signet_challenge);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(btck_context_tests)
|
||||
{
|
||||
{ // test default context
|
||||
|
||||
Reference in New Issue
Block a user