timelocked deposit address
This commit is contained in:
parent
fea08cc1ea
commit
da916d044c
3 changed files with 18 additions and 3 deletions
|
|
@ -413,8 +413,9 @@ void btc_one_or_weighted_multisig_address::create_segwit_address() {
|
||||||
address = segwit_addr::encode(hrp, 0, hash_data);
|
address = segwit_addr::encode(hrp, 0, hash_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
btc_timelocked_one_or_weighted_multisig_address::btc_timelocked_one_or_weighted_multisig_address(const fc::ecc::public_key &user_key_data, const std::vector<std::pair<fc::ecc::public_key, uint16_t> > &keys_data, bitcoin_address::network ntype) :
|
btc_timelocked_one_or_weighted_multisig_address::btc_timelocked_one_or_weighted_multisig_address(const fc::ecc::public_key &user_key_data, uint32_t latency, const std::vector<std::pair<fc::ecc::public_key, uint16_t> > &keys_data, bitcoin_address::network ntype) :
|
||||||
btc_one_or_weighted_multisig_address(user_key_data, keys_data, ntype)
|
btc_one_or_weighted_multisig_address(user_key_data, keys_data, ntype),
|
||||||
|
latency_(latency)
|
||||||
{
|
{
|
||||||
create_redeem_script(user_key_data, keys_data);
|
create_redeem_script(user_key_data, keys_data);
|
||||||
create_witness_script();
|
create_witness_script();
|
||||||
|
|
@ -427,6 +428,9 @@ void btc_timelocked_one_or_weighted_multisig_address::create_redeem_script(const
|
||||||
builder << user_key_data.serialize();
|
builder << user_key_data.serialize();
|
||||||
builder << op::CHECKSIG;
|
builder << op::CHECKSIG;
|
||||||
builder << op::IF;
|
builder << op::IF;
|
||||||
|
builder << uint32_t(latency_);
|
||||||
|
builder << op::CHECKSEQUENCEVERIFY;
|
||||||
|
builder << op::DROP;
|
||||||
builder << op::_1;
|
builder << op::_1;
|
||||||
builder << op::ELSE;
|
builder << op::ELSE;
|
||||||
uint32_t total_weight = 0;
|
uint32_t total_weight = 0;
|
||||||
|
|
|
||||||
|
|
@ -211,11 +211,13 @@ public:
|
||||||
class btc_timelocked_one_or_weighted_multisig_address : public btc_one_or_weighted_multisig_address {
|
class btc_timelocked_one_or_weighted_multisig_address : public btc_one_or_weighted_multisig_address {
|
||||||
public:
|
public:
|
||||||
btc_timelocked_one_or_weighted_multisig_address() = default;
|
btc_timelocked_one_or_weighted_multisig_address() = default;
|
||||||
btc_timelocked_one_or_weighted_multisig_address(const fc::ecc::public_key &user_key_data, const std::vector<std::pair<fc::ecc::public_key, uint16_t>> &keys_data,
|
btc_timelocked_one_or_weighted_multisig_address(const fc::ecc::public_key &user_key_data, uint32_t latency, const std::vector<std::pair<fc::ecc::public_key, uint16_t>> &keys_data,
|
||||||
network network_type = network::regtest);
|
network network_type = network::regtest);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void create_redeem_script(const fc::ecc::public_key &user_key_data, const std::vector<std::pair<fc::ecc::public_key, uint16_t>> &keys_data);
|
void create_redeem_script(const fc::ecc::public_key &user_key_data, const std::vector<std::pair<fc::ecc::public_key, uint16_t>> &keys_data);
|
||||||
|
|
||||||
|
uint32_t latency_;
|
||||||
};
|
};
|
||||||
|
|
||||||
}}} // namespace graphene::peerplays_sidechain::bitcoin
|
}}} // namespace graphene::peerplays_sidechain::bitcoin
|
||||||
|
|
@ -237,3 +239,11 @@ FC_REFLECT_DERIVED(graphene::peerplays_sidechain::bitcoin::btc_weighted_multisig
|
||||||
FC_REFLECT_DERIVED(graphene::peerplays_sidechain::bitcoin::btc_one_or_m_of_n_multisig_address,
|
FC_REFLECT_DERIVED(graphene::peerplays_sidechain::bitcoin::btc_one_or_m_of_n_multisig_address,
|
||||||
(graphene::peerplays_sidechain::bitcoin::bitcoin_address),
|
(graphene::peerplays_sidechain::bitcoin::bitcoin_address),
|
||||||
(redeem_script_)(witness_script_));
|
(redeem_script_)(witness_script_));
|
||||||
|
|
||||||
|
FC_REFLECT_DERIVED(graphene::peerplays_sidechain::bitcoin::btc_one_or_weighted_multisig_address,
|
||||||
|
(graphene::peerplays_sidechain::bitcoin::bitcoin_address),
|
||||||
|
(redeem_script_)(witness_script_));
|
||||||
|
|
||||||
|
FC_REFLECT_DERIVED(graphene::peerplays_sidechain::bitcoin::btc_timelocked_one_or_weighted_multisig_address,
|
||||||
|
(graphene::peerplays_sidechain::bitcoin::btc_one_or_weighted_multisig_address),
|
||||||
|
(latency_));
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ enum class op {
|
||||||
RETURN = 0x6a,
|
RETURN = 0x6a,
|
||||||
|
|
||||||
// stack ops
|
// stack ops
|
||||||
|
DROP = 0x75,
|
||||||
DUP = 0x76,
|
DUP = 0x76,
|
||||||
SWAP = 0x7c,
|
SWAP = 0x7c,
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue