Module iota_system::validator_wrapper
- Struct
Validator
- Constants
- Function
create_v1
- Function
load_validator_maybe_upgrade
- Function
destroy
- Function
upgrade_to_latest
- Function
version
use iota::address;
use iota::bag;
use iota::balance;
use iota::coin;
use iota::config;
use iota::deny_list;
use iota::dynamic_field;
use iota::dynamic_object_field;
use iota::event;
use iota::hex;
use iota::iota;
use iota::object;
use iota::table;
use iota::transfer;
use iota::tx_context;
use iota::types;
use iota::url;
use iota::versioned;
use iota_system::staking_pool;
use iota_system::validator;
use iota_system::validator_cap;
use std::address;
use std::ascii;
use std::bcs;
use std::option;
use std::string;
use std::type_name;
use std::u64;
use std::vector;
Struct Validator
public struct Validator has store
Fields
inner: iota::versioned::Versioned
Constants
const EInvalidVersion: u64 = 0;
Function create_v1
public(package) fun create_v1(validator: iota_system::validator::ValidatorV1, ctx: &mut iota::tx_context::TxContext): iota_system::validator_wrapper::Validator
Implementation
Function load_validator_maybe_upgrade
This function should always return the latest supported version. If the inner version is old, we upgrade it lazily in-place.
public(package) fun load_validator_maybe_upgrade(self: &mut iota_system::validator_wrapper::Validator): &mut iota_system::validator::ValidatorV1
Implementation
public(package) fun load_validator_maybe_upgrade(self: &mut Validator): &mut ValidatorV1 {
upgrade_to_latest(self);
versioned::load_value_mut(&mut self.inner)
}
Function destroy
Destroy the wrapper and retrieve the inner validator object.
public(package) fun destroy(self: iota_system::validator_wrapper::Validator): iota_system::validator::ValidatorV1
Implementation
public(package) fun destroy(self: Validator): ValidatorV1 {
upgrade_to_latest(&self);
let Validator { inner } = self;
versioned::destroy(inner)
}
Function upgrade_to_latest
fun upgrade_to_latest(self: &iota_system::validator_wrapper::Validator)
Implementation
fun upgrade_to_latest(self: &Validator) {
let version = version(self);
// TODO: When new versions are added, we need to explicitly upgrade here.
assert!(version == 1, EInvalidVersion);
}
Function version
fun version(self: &iota_system::validator_wrapper::Validator): u64