Module sui::accumulator
- Struct
Accumulator - Struct
Key - Constants
- Function
accumulator_id - Function
create - Function
commit_to_checkpoint - Function
get_accumulator_field_name - Function
get_accumulator_field_address
use std::address;
use std::ascii;
use std::bcs;
use std::option;
use std::string;
use std::type_name;
use std::vector;
use sui::address;
use sui::dynamic_field;
use sui::hex;
use sui::object;
use sui::transfer;
use sui::tx_context;
Struct Accumulator
public struct Accumulator has key
Click to open
Fields
- id: sui::object::UID
Struct Key
public struct Key has copy, drop, store
Click to open
Fields
- address: address
- ty: vector<u8>
Constants
const ENotSystemAddress: u64 = 0;
Function accumulator_id
public fun accumulator_id(acc: &mut sui::accumulator::Accumulator): &mut sui::object::UID
Click to open
Implementation
public fun accumulator_id(acc: &mut Accumulator): &mut UID {
&mut acc.id
}
Function create
fun create(ctx: &sui::tx_context::TxContext)
Click to open
Implementation
fun create(ctx: &TxContext) {
assert!(ctx.sender() == @0x0, ENotSystemAddress);
transfer::share_object(Accumulator {
id: object::sui_accumulator_root_object_id(),
})
}
Function commit_to_checkpoint
No-op called by settlement transactions to ensure that they are unique.
entry fun commit_to_checkpoint(_epoch: u64, _checkpoint_height: u64, _idx: u64, ctx: &sui::tx_context::TxContext)
Click to open
Implementation
entry fun commit_to_checkpoint(_epoch: u64, _checkpoint_height: u64, _idx: u64, ctx: &TxContext) {
assert!(ctx.sender() == @0x0, ENotSystemAddress);
}
Function get_accumulator_field_name
public(package) fun get_accumulator_field_name<T>(address: address): sui::accumulator::Key
Click to open
Implementation
public(package) fun get_accumulator_field_name<T>(address: address): Key {
let ty = type_name::get_with_original_ids<T>().into_string().into_bytes();
Key { address, ty }
}
Function get_accumulator_field_address
public(package) fun get_accumulator_field_address<T>(address: address): address
Click to open
Implementation
public(package) fun get_accumulator_field_address<T>(address: address): address {
let key = get_accumulator_field_name<T>(address);
dynamic_field::hash_type_and_key(sui_accumulator_root_address(), key)
}