@@ -114,6 +114,46 @@ pub struct ProviderRegistrationPayload {
114114}
115115
116116impl ProviderRegistrationPayload {
117+ /// Latest spec version of the ProRegTx payload.
118+ pub const CURRENT_VERSION : u16 = 2 ;
119+
120+ /// Create a new ProRegTx payload at [`Self::CURRENT_VERSION`].
121+ #[ allow( clippy:: too_many_arguments) ]
122+ pub fn new (
123+ masternode_type : ProviderMasternodeType ,
124+ masternode_mode : u16 ,
125+ collateral_outpoint : OutPoint ,
126+ service_address : SocketAddr ,
127+ owner_key_hash : PubkeyHash ,
128+ operator_public_key : BLSPublicKey ,
129+ voting_key_hash : PubkeyHash ,
130+ operator_reward : u16 ,
131+ script_payout : ScriptBuf ,
132+ inputs_hash : InputsHash ,
133+ signature : Vec < u8 > ,
134+ platform_node_id : Option < PubkeyHash > ,
135+ platform_p2p_port : Option < u16 > ,
136+ platform_http_port : Option < u16 > ,
137+ ) -> Self {
138+ Self {
139+ version : Self :: CURRENT_VERSION ,
140+ masternode_type,
141+ masternode_mode,
142+ collateral_outpoint,
143+ service_address,
144+ owner_key_hash,
145+ operator_public_key,
146+ voting_key_hash,
147+ operator_reward,
148+ script_payout,
149+ inputs_hash,
150+ signature,
151+ platform_node_id,
152+ platform_p2p_port,
153+ platform_http_port,
154+ }
155+ }
156+
117157 /// A convenience method to get the address from payout script
118158 pub fn payout_address ( & self , network : Network ) -> Result < Address , encode:: Error > {
119159 match Address :: from_script ( & self . script_payout , network) {
0 commit comments