crates/sui-framework/docs/sui/accumulator.md
AccumulatorRootU128Keycreateroot_idroot_id_mutaccumulator_u128_existsaccumulator_u128_readcreate_u128destroy_u128update_u128is_zero_u128accumulator_keyaccumulator_addressroot_has_accumulatorroot_add_accumulatorroot_borrow_accumulator_mutroot_borrow_accumulatorroot_remove_accumulatoremit_deposit_eventemit_withdraw_event<a name="sui_accumulator_AccumulatorRoot"></a>
AccumulatorRoot<a name="sui_accumulator_U128"></a>
U128Storage for 128-bit accumulator values.
Currently only used to represent the sum of 64 bit values (such as <code>Balance<T></code>). The additional bits are necessary to prevent overflow, as it would take 2^64 deposits of U64_MAX to cause an overflow.
<pre><code><b>public</b> <b>struct</b> <a href="../sui/accumulator.md#sui_accumulator_U128">U128</a> <b>has</b> store </code></pre> <details> <summary>Fields</summary> <dl> <dt> <code>value: u128</code> </dt> <dd> </dd> </dl> </details><a name="sui_accumulator_Key"></a>
Key<code><a href="../sui/accumulator.md#sui_accumulator_Key">Key</a></code> is used only for computing the field id of accumulator objects. <code>T</code> is the type of the accumulated value, e.g. <code>Balance<SUI></code>
<pre><code><b>public</b> <b>struct</b> <a href="../sui/accumulator.md#sui_accumulator_Key">Key</a><<b>phantom</b> T> <b>has</b> <b>copy</b>, drop, store </code></pre> <details> <summary>Fields</summary> <dl> <dt> <code><b>address</b>: <b>address</b></code> </dt> <dd> </dd> </dl> </details><a name="@Constants_0"></a>
<a name="sui_accumulator_ENotSystemAddress"></a>
<pre><code><b>const</b> <a href="../sui/accumulator.md#sui_accumulator_ENotSystemAddress">ENotSystemAddress</a>: u64 = 0; </code></pre><a name="sui_accumulator_create"></a>
create<a name="sui_accumulator_root_id"></a>
root_id<a name="sui_accumulator_root_id_mut"></a>
root_id_mut<a name="sui_accumulator_accumulator_u128_exists"></a>
accumulator_u128_exists<a name="sui_accumulator_accumulator_u128_read"></a>
accumulator_u128_read<a name="sui_accumulator_create_u128"></a>
create_u128<a name="sui_accumulator_destroy_u128"></a>
destroy_u128<a name="sui_accumulator_update_u128"></a>
update_u128<a name="sui_accumulator_is_zero_u128"></a>
is_zero_u128<a name="sui_accumulator_accumulator_key"></a>
accumulator_key<a name="sui_accumulator_accumulator_address"></a>
accumulator_address<a name="sui_accumulator_root_has_accumulator"></a>
root_has_accumulatorBalance object methods
<pre><code><b>public</b>(<a href="../sui/package.md#sui_package">package</a>) <b>fun</b> <a href="../sui/accumulator.md#sui_accumulator_root_has_accumulator">root_has_accumulator</a><K, V: store>(accumulator_root: &<a href="../sui/accumulator.md#sui_accumulator_AccumulatorRoot">sui::accumulator::AccumulatorRoot</a>, name: <a href="../sui/accumulator.md#sui_accumulator_Key">sui::accumulator::Key</a><K>): bool </code></pre> <details> <summary>Implementation</summary> <pre><code><b>public</b>(<a href="../sui/package.md#sui_package">package</a>) <b>fun</b> <a href="../sui/accumulator.md#sui_accumulator_root_has_accumulator">root_has_accumulator</a><K, V: store>( accumulator_root: &<a href="../sui/accumulator.md#sui_accumulator_AccumulatorRoot">AccumulatorRoot</a>, name: <a href="../sui/accumulator.md#sui_accumulator_Key">Key</a><K>, ): bool { <a href="../sui/dynamic_field.md#sui_dynamic_field_exists_with_type">dynamic_field::exists_with_type</a><<a href="../sui/accumulator.md#sui_accumulator_Key">Key</a><K>, V>(&accumulator_root.id, name) } </code></pre> </details><a name="sui_accumulator_root_add_accumulator"></a>
root_add_accumulator<a name="sui_accumulator_root_borrow_accumulator_mut"></a>
root_borrow_accumulator_mut<a name="sui_accumulator_root_borrow_accumulator"></a>
root_borrow_accumulator<a name="sui_accumulator_root_remove_accumulator"></a>
root_remove_accumulator<a name="sui_accumulator_emit_deposit_event"></a>
emit_deposit_event<a name="sui_accumulator_emit_withdraw_event"></a>
emit_withdraw_event