Module 0x1::GenesisSignerCapability
use 0x1::Account;
use 0x1::CoreAddresses;
use 0x1::Errors;
Resource GenesisSignerCapability
struct GenesisSignerCapability has key
Fields
-
cap: Account::SignerCapability
-
Constants
const ENOT_GENESIS_ACCOUNT: u64 = 11;
Function initialize
public(friend) fun initialize(signer: &signer, cap: Account::SignerCapability)
Implementation
public(friend) fun initialize(signer: &signer, cap: Account::SignerCapability) {
CoreAddresses::assert_genesis_address(signer);
assert!(
Account::signer_address(&cap) == CoreAddresses::GENESIS_ADDRESS(),
Errors::invalid_argument(ENOT_GENESIS_ACCOUNT)
);
move_to(signer, GenesisSignerCapability{cap});
}
Function get_genesis_signer
public(friend) fun get_genesis_signer(): signer
Implementation
public(friend) fun get_genesis_signer(): signer acquires GenesisSignerCapability {
let cap = borrow_global<GenesisSignerCapability>(CoreAddresses::GENESIS_ADDRESS());
Account::create_signer_with_cap(&cap.cap)
}