radix_native_sdk/consensus_manager/
validator.rs1use radix_common::data::scrypto::{scrypto_decode, scrypto_encode};
2use radix_engine_interface::api::*;
3use radix_engine_interface::blueprints::consensus_manager::{
4 ValidatorAcceptsDelegatedStakeInput, ValidatorRegisterInput, ValidatorStakeInput,
5 ValidatorUpdateAcceptDelegatedStakeInput, VALIDATOR_ACCEPTS_DELEGATED_STAKE_IDENT,
6 VALIDATOR_REGISTER_IDENT, VALIDATOR_STAKE_IDENT, VALIDATOR_UPDATE_ACCEPT_DELEGATED_STAKE_IDENT,
7};
8use radix_engine_interface::blueprints::resource::Bucket;
9use radix_engine_interface::types::ComponentAddress;
10use sbor::rust::fmt::Debug;
11
12#[derive(Debug)]
13pub struct Validator(pub ComponentAddress);
14
15impl Validator {
16 pub fn register<Y: SystemObjectApi<E>, E: SystemApiError>(&self, api: &mut Y) -> Result<(), E> {
17 api.call_method(
18 self.0.as_node_id(),
19 VALIDATOR_REGISTER_IDENT,
20 scrypto_encode(&ValidatorRegisterInput {}).unwrap(),
21 )?;
22
23 Ok(())
24 }
25
26 pub fn update_accept_delegated_stake<Y: SystemObjectApi<E>, E: SystemApiError>(
27 &self,
28 accept_delegated_stake: bool,
29 api: &mut Y,
30 ) -> Result<(), E> {
31 api.call_method(
32 self.0.as_node_id(),
33 VALIDATOR_UPDATE_ACCEPT_DELEGATED_STAKE_IDENT,
34 scrypto_encode(&ValidatorUpdateAcceptDelegatedStakeInput {
35 accept_delegated_stake,
36 })
37 .unwrap(),
38 )?;
39
40 Ok(())
41 }
42
43 pub fn accepts_delegated_stake<Y: SystemObjectApi<E>, E: SystemApiError>(
44 &self,
45 api: &mut Y,
46 ) -> Result<bool, E> {
47 let rtn = api.call_method(
48 self.0.as_node_id(),
49 VALIDATOR_ACCEPTS_DELEGATED_STAKE_IDENT,
50 scrypto_encode(&ValidatorAcceptsDelegatedStakeInput {}).unwrap(),
51 )?;
52
53 Ok(scrypto_decode(&rtn).unwrap())
54 }
55
56 pub fn stake<Y: SystemObjectApi<E>, E: SystemApiError>(
57 &self,
58 stake: Bucket,
59 api: &mut Y,
60 ) -> Result<Bucket, E> {
61 let rtn = api.call_method(
62 self.0.as_node_id(),
63 VALIDATOR_STAKE_IDENT,
64 scrypto_encode(&ValidatorStakeInput { stake }).unwrap(),
65 )?;
66
67 Ok(scrypto_decode(&rtn).unwrap())
68 }
69}