language/diem-framework/releases/artifacts/release-1.2.0-rc0/docs/modules/AccountFreezing.md
<a name="0x1_AccountFreezing"></a>
0x1::AccountFreezingModule which manages freezing of accounts.
FreezingBitFreezeEventsHolderFreezeAccountEventUnfreezeAccountEventinitializecreatefreeze_accountunfreeze_accountaccount_is_frozenassert_not_frozen<a name="0x1_AccountFreezing_FreezingBit"></a>
FreezingBit<a name="0x1_AccountFreezing_FreezeEventsHolder"></a>
FreezeEventsHolder<a name="0x1_AccountFreezing_FreezeAccountEvent"></a>
FreezeAccountEventMessage for freeze account events
<pre><code><b>struct</b> <a href="AccountFreezing.md#0x1_AccountFreezing_FreezeAccountEvent">FreezeAccountEvent</a> </code></pre> <details> <summary>Fields</summary> <dl> <dt> <code>initiator_address: address</code> </dt> <dd> The address that initiated freeze txn </dd> <dt> <code>frozen_address: address</code> </dt> <dd> The address that was frozen </dd> </dl> </details><a name="0x1_AccountFreezing_UnfreezeAccountEvent"></a>
UnfreezeAccountEventMessage for unfreeze account events
<pre><code><b>struct</b> <a href="AccountFreezing.md#0x1_AccountFreezing_UnfreezeAccountEvent">UnfreezeAccountEvent</a> </code></pre> <details> <summary>Fields</summary> <dl> <dt> <code>initiator_address: address</code> </dt> <dd> The address that initiated unfreeze txn </dd> <dt> <code>unfrozen_address: address</code> </dt> <dd> The address that was unfrozen </dd> </dl> </details><a name="@Constants_0"></a>
<a name="0x1_AccountFreezing_EACCOUNT_FROZEN"></a>
The account is frozen
<pre><code><b>const</b> <a href="AccountFreezing.md#0x1_AccountFreezing_EACCOUNT_FROZEN">EACCOUNT_FROZEN</a>: u64 = 5; </code></pre><a name="0x1_AccountFreezing_ECANNOT_FREEZE_DIEM_ROOT"></a>
An attempt to freeze the Diem Root account was attempted
<pre><code><b>const</b> <a href="AccountFreezing.md#0x1_AccountFreezing_ECANNOT_FREEZE_DIEM_ROOT">ECANNOT_FREEZE_DIEM_ROOT</a>: u64 = 3; </code></pre><a name="0x1_AccountFreezing_ECANNOT_FREEZE_TC"></a>
An attempt to freeze the Treasury & Compliance account was attempted
<pre><code><b>const</b> <a href="AccountFreezing.md#0x1_AccountFreezing_ECANNOT_FREEZE_TC">ECANNOT_FREEZE_TC</a>: u64 = 4; </code></pre><a name="0x1_AccountFreezing_EFREEZE_EVENTS_HOLDER"></a>
A property expected of the <code><a href="AccountFreezing.md#0x1_AccountFreezing_FreezeEventsHolder">FreezeEventsHolder</a></code> resource didn't hold
<pre><code><b>const</b> <a href="AccountFreezing.md#0x1_AccountFreezing_EFREEZE_EVENTS_HOLDER">EFREEZE_EVENTS_HOLDER</a>: u64 = 1; </code></pre><a name="0x1_AccountFreezing_EFREEZING_BIT"></a>
The <code><a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBit">FreezingBit</a></code> resource is in an invalid state
<pre><code><b>const</b> <a href="AccountFreezing.md#0x1_AccountFreezing_EFREEZING_BIT">EFREEZING_BIT</a>: u64 = 2; </code></pre><a name="0x1_AccountFreezing_initialize"></a>
initialize<a name="0x1_AccountFreezing_create"></a>
create<a name="0x1_AccountFreezing_addr$13"></a>
<pre><code><b>let</b> addr = <a href="../../../../../../move-stdlib/docs/Signer.md#0x1_Signer_spec_address_of">Signer::spec_address_of</a>(account); <b>modifies</b> <b>global</b><<a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBit">FreezingBit</a>>(addr); <b>aborts_if</b> <b>exists</b><<a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBit">FreezingBit</a>>(addr) <b>with</b> <a href="../../../../../../move-stdlib/docs/Errors.md#0x1_Errors_ALREADY_PUBLISHED">Errors::ALREADY_PUBLISHED</a>; <b>ensures</b> <a href="AccountFreezing.md#0x1_AccountFreezing_spec_account_is_not_frozen">spec_account_is_not_frozen</a>(addr); </code></pre> </details><a name="0x1_AccountFreezing_freeze_account"></a>
freeze_accountFreeze the account at <code>addr</code>.
<pre><code><b>public</b> <b>fun</b> <a href="AccountFreezing.md#0x1_AccountFreezing_freeze_account">freeze_account</a>(account: &signer, frozen_address: address) </code></pre> <details> <summary>Implementation</summary> <pre><code><b>public</b> <b>fun</b> <a href="AccountFreezing.md#0x1_AccountFreezing_freeze_account">freeze_account</a>( account: &signer, frozen_address: address, ) <b>acquires</b> <a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBit">FreezingBit</a>, <a href="AccountFreezing.md#0x1_AccountFreezing_FreezeEventsHolder">FreezeEventsHolder</a> { <a href="DiemTimestamp.md#0x1_DiemTimestamp_assert_operating">DiemTimestamp::assert_operating</a>(); <a href="Roles.md#0x1_Roles_assert_treasury_compliance">Roles::assert_treasury_compliance</a>(account); // The diem root account and TC cannot be frozen <b>assert</b>(frozen_address != <a href="CoreAddresses.md#0x1_CoreAddresses_DIEM_ROOT_ADDRESS">CoreAddresses::DIEM_ROOT_ADDRESS</a>(), <a href="../../../../../../move-stdlib/docs/Errors.md#0x1_Errors_invalid_argument">Errors::invalid_argument</a>(<a href="AccountFreezing.md#0x1_AccountFreezing_ECANNOT_FREEZE_DIEM_ROOT">ECANNOT_FREEZE_DIEM_ROOT</a>)); <b>assert</b>(frozen_address != <a href="CoreAddresses.md#0x1_CoreAddresses_TREASURY_COMPLIANCE_ADDRESS">CoreAddresses::TREASURY_COMPLIANCE_ADDRESS</a>(), <a href="../../../../../../move-stdlib/docs/Errors.md#0x1_Errors_invalid_argument">Errors::invalid_argument</a>(<a href="AccountFreezing.md#0x1_AccountFreezing_ECANNOT_FREEZE_TC">ECANNOT_FREEZE_TC</a>)); <b>assert</b>(<b>exists</b><<a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBit">FreezingBit</a>>(frozen_address), <a href="../../../../../../move-stdlib/docs/Errors.md#0x1_Errors_not_published">Errors::not_published</a>(<a href="AccountFreezing.md#0x1_AccountFreezing_EFREEZING_BIT">EFREEZING_BIT</a>)); borrow_global_mut<<a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBit">FreezingBit</a>>(frozen_address).is_frozen = <b>true</b>; <b>let</b> initiator_address = <a href="../../../../../../move-stdlib/docs/Signer.md#0x1_Signer_address_of">Signer::address_of</a>(account); <a href="../../../../../../move-stdlib/docs/Event.md#0x1_Event_emit_event">Event::emit_event</a><<a href="AccountFreezing.md#0x1_AccountFreezing_FreezeAccountEvent">FreezeAccountEvent</a>>( &<b>mut</b> borrow_global_mut<<a href="AccountFreezing.md#0x1_AccountFreezing_FreezeEventsHolder">FreezeEventsHolder</a>>(<a href="CoreAddresses.md#0x1_CoreAddresses_DIEM_ROOT_ADDRESS">CoreAddresses::DIEM_ROOT_ADDRESS</a>()).freeze_event_handle, <a href="AccountFreezing.md#0x1_AccountFreezing_FreezeAccountEvent">FreezeAccountEvent</a> { initiator_address, frozen_address }, ); } </code></pre> </details> <details> <summary>Specification</summary> <pre><code><b>include</b> <a href="DiemTimestamp.md#0x1_DiemTimestamp_AbortsIfNotOperating">DiemTimestamp::AbortsIfNotOperating</a>; <b>include</b> <a href="Roles.md#0x1_Roles_AbortsIfNotTreasuryCompliance">Roles::AbortsIfNotTreasuryCompliance</a>; <b>aborts_if</b> frozen_address == <a href="CoreAddresses.md#0x1_CoreAddresses_DIEM_ROOT_ADDRESS">CoreAddresses::DIEM_ROOT_ADDRESS</a>() <b>with</b> <a href="../../../../../../move-stdlib/docs/Errors.md#0x1_Errors_INVALID_ARGUMENT">Errors::INVALID_ARGUMENT</a>; <b>aborts_if</b> frozen_address == <a href="CoreAddresses.md#0x1_CoreAddresses_TREASURY_COMPLIANCE_ADDRESS">CoreAddresses::TREASURY_COMPLIANCE_ADDRESS</a>() <b>with</b> <a href="../../../../../../move-stdlib/docs/Errors.md#0x1_Errors_INVALID_ARGUMENT">Errors::INVALID_ARGUMENT</a>; <b>aborts_if</b> !<b>exists</b><<a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBit">FreezingBit</a>>(frozen_address) <b>with</b> <a href="../../../../../../move-stdlib/docs/Errors.md#0x1_Errors_NOT_PUBLISHED">Errors::NOT_PUBLISHED</a>; <b>ensures</b> <a href="AccountFreezing.md#0x1_AccountFreezing_spec_account_is_frozen">spec_account_is_frozen</a>(frozen_address); <b>include</b> <a href="AccountFreezing.md#0x1_AccountFreezing_FreezeAccountEmits">FreezeAccountEmits</a>; </code></pre><a name="0x1_AccountFreezing_FreezeAccountEmits"></a>
<pre><code><b>schema</b> <a href="AccountFreezing.md#0x1_AccountFreezing_FreezeAccountEmits">FreezeAccountEmits</a> { account: &signer; frozen_address: address; <a name="0x1_AccountFreezing_handle$8"></a> <b>let</b> handle = <b>global</b><<a href="AccountFreezing.md#0x1_AccountFreezing_FreezeEventsHolder">FreezeEventsHolder</a>>(<a href="CoreAddresses.md#0x1_CoreAddresses_DIEM_ROOT_ADDRESS">CoreAddresses::DIEM_ROOT_ADDRESS</a>()).freeze_event_handle; <a name="0x1_AccountFreezing_msg$9"></a> <b>let</b> msg = <a href="AccountFreezing.md#0x1_AccountFreezing_FreezeAccountEvent">FreezeAccountEvent</a> { initiator_address: <a href="../../../../../../move-stdlib/docs/Signer.md#0x1_Signer_spec_address_of">Signer::spec_address_of</a>(account), frozen_address }; emits msg <b>to</b> handle; } </code></pre> </details><a name="0x1_AccountFreezing_unfreeze_account"></a>
unfreeze_accountUnfreeze the account at <code>addr</code>.
<pre><code><b>public</b> <b>fun</b> <a href="AccountFreezing.md#0x1_AccountFreezing_unfreeze_account">unfreeze_account</a>(account: &signer, unfrozen_address: address) </code></pre> <details> <summary>Implementation</summary> <pre><code><b>public</b> <b>fun</b> <a href="AccountFreezing.md#0x1_AccountFreezing_unfreeze_account">unfreeze_account</a>( account: &signer, unfrozen_address: address, ) <b>acquires</b> <a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBit">FreezingBit</a>, <a href="AccountFreezing.md#0x1_AccountFreezing_FreezeEventsHolder">FreezeEventsHolder</a> { <a href="DiemTimestamp.md#0x1_DiemTimestamp_assert_operating">DiemTimestamp::assert_operating</a>(); <a href="Roles.md#0x1_Roles_assert_treasury_compliance">Roles::assert_treasury_compliance</a>(account); <b>assert</b>(<b>exists</b><<a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBit">FreezingBit</a>>(unfrozen_address), <a href="../../../../../../move-stdlib/docs/Errors.md#0x1_Errors_not_published">Errors::not_published</a>(<a href="AccountFreezing.md#0x1_AccountFreezing_EFREEZING_BIT">EFREEZING_BIT</a>)); borrow_global_mut<<a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBit">FreezingBit</a>>(unfrozen_address).is_frozen = <b>false</b>; <b>let</b> initiator_address = <a href="../../../../../../move-stdlib/docs/Signer.md#0x1_Signer_address_of">Signer::address_of</a>(account); <a href="../../../../../../move-stdlib/docs/Event.md#0x1_Event_emit_event">Event::emit_event</a><<a href="AccountFreezing.md#0x1_AccountFreezing_UnfreezeAccountEvent">UnfreezeAccountEvent</a>>( &<b>mut</b> borrow_global_mut<<a href="AccountFreezing.md#0x1_AccountFreezing_FreezeEventsHolder">FreezeEventsHolder</a>>(<a href="CoreAddresses.md#0x1_CoreAddresses_DIEM_ROOT_ADDRESS">CoreAddresses::DIEM_ROOT_ADDRESS</a>()).unfreeze_event_handle, <a href="AccountFreezing.md#0x1_AccountFreezing_UnfreezeAccountEvent">UnfreezeAccountEvent</a> { initiator_address, unfrozen_address }, ); } </code></pre> </details> <details> <summary>Specification</summary> <pre><code><b>include</b> <a href="DiemTimestamp.md#0x1_DiemTimestamp_AbortsIfNotOperating">DiemTimestamp::AbortsIfNotOperating</a>; <b>include</b> <a href="Roles.md#0x1_Roles_AbortsIfNotTreasuryCompliance">Roles::AbortsIfNotTreasuryCompliance</a>; <b>aborts_if</b> !<b>exists</b><<a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBit">FreezingBit</a>>(unfrozen_address) <b>with</b> <a href="../../../../../../move-stdlib/docs/Errors.md#0x1_Errors_NOT_PUBLISHED">Errors::NOT_PUBLISHED</a>; <b>ensures</b> !<a href="AccountFreezing.md#0x1_AccountFreezing_spec_account_is_frozen">spec_account_is_frozen</a>(unfrozen_address); <b>include</b> <a href="AccountFreezing.md#0x1_AccountFreezing_UnfreezeAccountEmits">UnfreezeAccountEmits</a>; </code></pre><a name="0x1_AccountFreezing_UnfreezeAccountEmits"></a>
<pre><code><b>schema</b> <a href="AccountFreezing.md#0x1_AccountFreezing_UnfreezeAccountEmits">UnfreezeAccountEmits</a> { account: &signer; unfrozen_address: address; <a name="0x1_AccountFreezing_handle$10"></a> <b>let</b> handle = <b>global</b><<a href="AccountFreezing.md#0x1_AccountFreezing_FreezeEventsHolder">FreezeEventsHolder</a>>(<a href="CoreAddresses.md#0x1_CoreAddresses_DIEM_ROOT_ADDRESS">CoreAddresses::DIEM_ROOT_ADDRESS</a>()).unfreeze_event_handle; <a name="0x1_AccountFreezing_msg$11"></a> <b>let</b> msg = <a href="AccountFreezing.md#0x1_AccountFreezing_UnfreezeAccountEvent">UnfreezeAccountEvent</a> { initiator_address: <a href="../../../../../../move-stdlib/docs/Signer.md#0x1_Signer_spec_address_of">Signer::spec_address_of</a>(account), unfrozen_address }; emits msg <b>to</b> handle; } </code></pre> </details><a name="0x1_AccountFreezing_account_is_frozen"></a>
account_is_frozenReturns if the account at <code>addr</code> is frozen.
<pre><code><b>public</b> <b>fun</b> <a href="AccountFreezing.md#0x1_AccountFreezing_account_is_frozen">account_is_frozen</a>(addr: address): bool </code></pre> <details> <summary>Implementation</summary> <pre><code><b>public</b> <b>fun</b> <a href="AccountFreezing.md#0x1_AccountFreezing_account_is_frozen">account_is_frozen</a>(addr: address): bool <b>acquires</b> <a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBit">FreezingBit</a> { <b>exists</b><<a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBit">FreezingBit</a>>(addr) && borrow_global<<a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBit">FreezingBit</a>>(addr).is_frozen } </code></pre> </details> <details> <summary>Specification</summary> <pre><code><b>aborts_if</b> <b>false</b>; <b>pragma</b> opaque = <b>true</b>; <b>ensures</b> result == <a href="AccountFreezing.md#0x1_AccountFreezing_spec_account_is_frozen">spec_account_is_frozen</a>(addr); </code></pre> </details><a name="0x1_AccountFreezing_assert_not_frozen"></a>
assert_not_frozenAssert that an account is not frozen.
<pre><code><b>public</b> <b>fun</b> <a href="AccountFreezing.md#0x1_AccountFreezing_assert_not_frozen">assert_not_frozen</a>(account: address) </code></pre> <details> <summary>Implementation</summary> <pre><code><b>public</b> <b>fun</b> <a href="AccountFreezing.md#0x1_AccountFreezing_assert_not_frozen">assert_not_frozen</a>(account: address) <b>acquires</b> <a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBit">FreezingBit</a> { <b>assert</b>(!<a href="AccountFreezing.md#0x1_AccountFreezing_account_is_frozen">account_is_frozen</a>(account), <a href="../../../../../../move-stdlib/docs/Errors.md#0x1_Errors_invalid_state">Errors::invalid_state</a>(<a href="AccountFreezing.md#0x1_AccountFreezing_EACCOUNT_FROZEN">EACCOUNT_FROZEN</a>)); } </code></pre> </details> <details> <summary>Specification</summary> <pre><code><b>pragma</b> opaque; <b>include</b> <a href="AccountFreezing.md#0x1_AccountFreezing_AbortsIfFrozen">AbortsIfFrozen</a>; </code></pre><a name="0x1_AccountFreezing_AbortsIfFrozen"></a>
<pre><code><b>schema</b> <a href="AccountFreezing.md#0x1_AccountFreezing_AbortsIfFrozen">AbortsIfFrozen</a> { account: address; <b>aborts_if</b> <a href="AccountFreezing.md#0x1_AccountFreezing_spec_account_is_frozen">spec_account_is_frozen</a>(account) <b>with</b> <a href="../../../../../../move-stdlib/docs/Errors.md#0x1_Errors_INVALID_STATE">Errors::INVALID_STATE</a>; } </code></pre> </details><a name="@Module_Specification_1"></a>
<a name="@Initialization_2"></a>
<code><a href="AccountFreezing.md#0x1_AccountFreezing_FreezeEventsHolder">FreezeEventsHolder</a></code> always exists after genesis.
<pre><code><b>invariant</b> [<b>global</b>] <a href="DiemTimestamp.md#0x1_DiemTimestamp_is_operating">DiemTimestamp::is_operating</a>() ==> <b>exists</b><<a href="AccountFreezing.md#0x1_AccountFreezing_FreezeEventsHolder">FreezeEventsHolder</a>>(<a href="CoreAddresses.md#0x1_CoreAddresses_DIEM_ROOT_ADDRESS">CoreAddresses::DIEM_ROOT_ADDRESS</a>()); </code></pre><a name="@Access_Control_3"></a>
The account of DiemRoot is not freezable [F1]. After genesis, FreezingBit of DiemRoot is always false.
<pre><code><b>invariant</b> [<b>global</b>] <a href="DiemTimestamp.md#0x1_DiemTimestamp_is_operating">DiemTimestamp::is_operating</a>() ==> <a href="AccountFreezing.md#0x1_AccountFreezing_spec_account_is_not_frozen">spec_account_is_not_frozen</a>(<a href="CoreAddresses.md#0x1_CoreAddresses_DIEM_ROOT_ADDRESS">CoreAddresses::DIEM_ROOT_ADDRESS</a>()); </code></pre>The account of TreasuryCompliance is not freezable [F2]. After genesis, FreezingBit of TreasuryCompliance is always false.
<pre><code><b>invariant</b> [<b>global</b>] <a href="DiemTimestamp.md#0x1_DiemTimestamp_is_operating">DiemTimestamp::is_operating</a>() ==> <a href="AccountFreezing.md#0x1_AccountFreezing_spec_account_is_not_frozen">spec_account_is_not_frozen</a>(<a href="CoreAddresses.md#0x1_CoreAddresses_TREASURY_COMPLIANCE_ADDRESS">CoreAddresses::TREASURY_COMPLIANCE_ADDRESS</a>()); </code></pre>resource struct FreezingBit persists
<pre><code><b>invariant</b> <b>update</b> [<b>global</b>] <b>forall</b> addr: address <b>where</b> <b>old</b>(<b>exists</b><<a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBit">FreezingBit</a>>(addr)): <b>exists</b><<a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBit">FreezingBit</a>>(addr); </code></pre>resource struct FreezeEventsHolder is there forever after initialization
<pre><code><b>invariant</b> <b>update</b> [<b>global</b>] <a href="DiemTimestamp.md#0x1_DiemTimestamp_is_operating">DiemTimestamp::is_operating</a>() ==> <b>exists</b><<a href="AccountFreezing.md#0x1_AccountFreezing_FreezeEventsHolder">FreezeEventsHolder</a>>(<a href="CoreAddresses.md#0x1_CoreAddresses_DIEM_ROOT_ADDRESS">CoreAddresses::DIEM_ROOT_ADDRESS</a>()); </code></pre>The permission "{Freeze,Unfreeze}Account" is granted to TreasuryCompliance only [H7].
<pre><code><b>apply</b> <a href="Roles.md#0x1_Roles_AbortsIfNotTreasuryCompliance">Roles::AbortsIfNotTreasuryCompliance</a> <b>to</b> freeze_account, unfreeze_account; </code></pre>Only (un)freeze functions can change the freezing bits of accounts [H7].
<pre><code><b>apply</b> <a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBitRemainsSame">FreezingBitRemainsSame</a> <b>to</b> * <b>except</b> freeze_account, unfreeze_account; </code></pre><a name="0x1_AccountFreezing_FreezingBitRemainsSame"></a>
<pre><code><b>schema</b> <a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBitRemainsSame">FreezingBitRemainsSame</a> { <b>ensures</b> <b>forall</b> addr: address <b>where</b> <b>old</b>(<b>exists</b><<a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBit">FreezingBit</a>>(addr)): <b>global</b><<a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBit">FreezingBit</a>>(addr).is_frozen == <b>old</b>(<b>global</b><<a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBit">FreezingBit</a>>(addr).is_frozen); } </code></pre><a name="@Helper_Functions_4"></a>
<a name="0x1_AccountFreezing_spec_account_is_frozen"></a>
<pre><code><b>define</b> <a href="AccountFreezing.md#0x1_AccountFreezing_spec_account_is_frozen">spec_account_is_frozen</a>(addr: address): bool { <b>exists</b><<a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBit">FreezingBit</a>>(addr) && <b>global</b><<a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBit">FreezingBit</a>>(addr).is_frozen } <a name="0x1_AccountFreezing_spec_account_is_not_frozen"></a> <b>define</b> <a href="AccountFreezing.md#0x1_AccountFreezing_spec_account_is_not_frozen">spec_account_is_not_frozen</a>(addr: address): bool { <b>exists</b><<a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBit">FreezingBit</a>>(addr) && !<b>global</b><<a href="AccountFreezing.md#0x1_AccountFreezing_FreezingBit">FreezingBit</a>>(addr).is_frozen } </code></pre>