diff --git a/charts-api-tool.html b/charts-api-tool.html index 7ab2770825..96731357e8 100644 --- a/charts-api-tool.html +++ b/charts-api-tool.html @@ -53,6 +53,7 @@
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • rippled
  • rippled Setup
  • Ripple-REST
  • diff --git a/charts_api.html b/charts_api.html index bedede24d4..bb46b9c909 100644 --- a/charts_api.html +++ b/charts_api.html @@ -74,6 +74,7 @@
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • rippled
  • rippled Setup
  • Ripple-REST
  • diff --git a/content/freeze.md b/content/freeze.md new file mode 100644 index 0000000000..3fe91ff947 --- /dev/null +++ b/content/freeze.md @@ -0,0 +1,243 @@ +Freeze Features +=============== + +The Ripple Consensus Ledger gives accounts the ability to freeze non-XRP balances, which can be useful to comply with regulatory requirements, or while investigating suspicious activity. There are three settings related to freezes: + +* [**Individual Freeze**](#individual-freeze) - Freeze one counterparty. +* [**Global Freeze**](#global-freeze) - Freeze all counterparties. +* [**No Freeze**](#no-freeze) - Permanently give up the ability to freeze individual counterparties. Also gives up the ability to end a global freeze. + +Because no party has a privileged place in the Ripple Consensus Ledger, the freeze feature cannot prevent a counterparty from conducting transactions in XRP or funds issued by other counterparties. + + +Individual Freeze +----------------- + +The Individual Freeze feature is a setting on a trust line. When an issuing account enables the Individual Freeze setting, the counterparty of that trust line can no longer send or receive issuances on the frozen trust line, except in transactions that go directly to and from the issuing account itself. + +A gateway can freeze a counterparty if that counterparty shows suspicious activity or violates the gateway's terms of use. + +If the counterparty has trust lines to the issuing account in more than one currency, the issuing account must freeze each trust line individually. + +An account cannot enable the Individual Freeze setting if it has previously enabled the [No Freeze](#no-freeze) setting. + + +Global Freeze +------------- + +The Global Freeze feature is a setting on an account. When an issuing account enables the Global Freeze feature, all counterparties can only send and receive the issuing account's funds directly to and from the issuing account itself. (This includes any [hot wallet](gateway_guide.html#hot-and-cold-wallets) accounts.) + +It can be useful to enable Global Freeze on a gateway's [cold wallet](gateway_guide.html#hot-and-cold-wallets) if a hot wallet is compromised, or immediately after regaining control of a compromised issuing account. This stops the flow of funds, preventing attackers from getting away with any more money or at least making it easier to track what happened. + +It can also be useful to enable Global Freeze if a gateway intends to migrate its cold wallet to a new Ripple account, or if the gateway intends to cease doing business. This locks the funds at a specific point in time, so users cannot trade them away for other currencies. + +An account can always enable the Global Freeze setting. However, if the account has previously enabled the [No Freeze](#no-freeze) setting, it can never _disable_ the Global Freeze. + + +No Freeze +--------- + +The **NoFreeze** feature is a setting on an account that permanently gives up the ability to freeze counterparties. A business can use this feature to treat its issued funds as "more like physical money" in that the business cannot interfere with customers trading it among themselves. The NoFreeze setting has two effects: + +* The issuing account can no longer use **tfSetFreeze** to freeze an individual counterparty. +* The issuing account can still enable **asfGlobalFreeze** to enact a global freeze, but the account cannot _disable_ **asfGlobalFreeze** to end the global freeze. + +The Ripple Consensus Ledger cannot force a gateway to honor the obligations that its issued funds represent, so giving up the ability to enable a Global Freeze cannot protect customers. However, giving up the ability to _disable_ a Global Freeze ensures that the Global Freeze feature is not used unfairly against some customers. + + +# Technical Details # + +## Enabling or Disabling Individual Freeze ## + +### Using `rippled` ### + +To enable or disable Individual Freeze on a specific trust line, send a `TrustSet` transaction. Use the [`tfSetFreeze` flag](transactions.html#trustset-flags) to enable a freeze, and the `tfClearFreeze` flag to disable it. The fields of the transaction should be as follows: + +| Field | Value | Description | +|----------------------|--------|-------------| +| Account | String | The address of your Ripple account. | +| TransactionType | String | `TrustSet` | +| LimitAmount | Object | Object defining the trust line to freeze. | +| LimitAmount.currency | String | Currency of the trust line | +| LimitAmount.issuer | String | The Ripple address of the counterparty to freeze | +| LimitAmount.value | String | The amount of currency you trust this counterparty to issue to you, as a quoted number. From the perspective of a gateway, this is typically `"0"`. | +| Flags | Number | To enable a freeze, use a value with the bit `0x00100000` (tfSetFreeze) enabled. To disable a freeze, use a value with the bit `0x00200000` (tfClearFreeze) enabled instead. | + +Set the `Fee`, `Sequence`, and `LastLedgerSequence` parameters [in the typical way](transactions.html#signing-and-sending-transactions). + +Example of submitting a TrustSet transaction to enable an individual freeze: + +``` +TODO +``` + + +### Using RippleAPI ### + +To enable or disable Individual Freeze on a specific trust line, prepare a *Trustline* transaction using the [prepareTrustline](rippleapi.html#preparetrustline) method. The fields of the `trustline` parameter should be set as follows: + +| Field | Value | Description | +|--------------|--------|-------------| +| currency | String | The [currency](rippleapi.html#currency) of the trust line to freeze | +| counterparty | String | The [Ripple address](rippleapi.html#ripple-address) of the counterparty | +| limit | String | The amount of currency you trust this counterparty to issue to you, as a quoted number. From the perspective of a gateway, this is typically `"0"`. | +| frozen | Boolean | `true` to enable Individual Freeze on this trust line. `false` to disable Individual Freeze. | + +The rest of the [transaction flow](rippleapi.html#transaction-flow) is the same as any other transaction. + +Example code to enable Individual Freeze on a trust line: + +``` +TODO +``` + + +## Enabling or Disabling Global Freeze ## + +### Using `rippled` ### + +To enable Global Freeze on an account, send an `AccountSet` transaction with the [asfGlobalFreeze flag value](transactions.html#accountset-flags) in the `SetFlag` field. To disable Global Freeze, put the asfGlobalFreeze flag value in the `ClearFlag` field instead. + +Example of submitting an AccountSet transaction to enable Global Freeze: + +``` +TODO +``` + +### Using RippleAPI ### + +To enable or disable Global Freeze on an account, prepare a **Settings** transaction using the [prepareSettings](rippleapi.html#preparesettings) method. The `settings` parameter should be an object set as follows: + +| Field | Value | Description | +|--------------|--------|-------------| +| globalFreeze | Boolean | `true` to enable a Global Freeze on this account. `false` to disable Global Freeze. | + +The rest of the [transaction flow](rippleapi.html#transaction-flow) is the same as any other transaction. + +Example code to enable Global Freeze on an account: + +``` +TODO +``` + + + +## Enabling No Freeze ## + +### Using `rippled` ### + +To enable No Freeze on an account, send an `AccountSet` transaction with the [asfNoFreeze flag value](transactions.html#accountset-flags) in the `SetFlag` field. You must sign this transaction using the master key. Once enabled, you cannot disable No Freeze. + +Example of submitting an AccountSet transaction to enable No Freeze: + +``` +TODO +``` + +### Using RippleAPI ### + + +To enable No Freeze on an account, prepare a **Settings** transaction using the [prepareSettings](rippleapi.html#preparesettings) method. Once enabled, you cannot disable No Freeze. The `settings` parameter should be an object set as follows: + +| Field | Value | Description | +|----------|---------|-------------| +| noFreeze | Boolean | `true` | + +You must [sign](rippleapi.html#sign) this transaction using the master key. The rest of the [transaction flow](rippleapi.html#transaction-flow) is the same as any other transaction. + +Example code to enable No Freeze on an account: + +``` +TODO +``` + + +## Checking for Individual Freeze ## + +### Using `rippled` ### + +To see if a trust line has an Individual Freeze enabled, use the [`account_lines` method](rippled-apis.html#account-lines) with the following parameters: + +| Field | Value | Description | +|----------|---------|-------------| +| account | String | The Ripple address of the issuing account | +| peer | String | The Ripple address of the counterparty account | +| ledger\_index | String | Use `validated` to get the most recently validated information. | + +The response contains an array of trust lines, for each currency in which the issuing account and the counterparty are linked. Look for the following fields in each trust line object: + +| Field | Value | Description | +|--------------|---------|-------------| +| freeze | Boolean | (May be omitted) `true` if the issuing account has [frozen](freeze.html) this trust line. If omitted, that is the same as `false`. | +| freeze\_peer | (May be omitted) `true` if the counterparty has [frozen](freeze.html) this trust line. If omitted, that is the same as `false`. | + + +### Using RippleAPI ### + +To see if a trust line has an Individual Freeze enabled, use the [`getTrustlines` method](rippleapi.html#gettrustlines) with the following parameters: + +| Field | Value | Description | +|---------------|---------|-------------| +| address | String | The Ripple address of the issuing account | +| options.counterparty | String | The Ripple address of the counterparty account | + +The response contains an array of trust lines, for each currency in which the issuing account and the counterparty are linked. Look for the following fields in each trust line object: + +| Field | Value | Description | +|----------------------|---------|-------------| +| specification.frozen | Boolean | (May be omitted) `true` if the issuing account has frozen the trust line. | +| counterparty.frozen | Boolean | (May be omitted) `true` if the counterparty has frozen the trust line. | + + +## Checking for Global Freeze and No Freeze ## + +### Using `rippled` ### + +To see if an account has Global Freeze and/or No Freeze enabled, use the [`account_info` method](rippled-apis.html#account-lines) with the following parameters: + +| Field | Value | Description | +|----------|---------|-------------| +| account | String | The Ripple address of the issuing account | +| ledger\_index | String | Use `validated` to get the most recently validated information. | + +Check the value of the `account_data.Flags` field of the response using the [bitwise-AND](https://en.wikipedia.org/wiki/Bitwise_operation#AND) operator: + +* If `Flags` AND `0x00400000` ([lsfGlobalFreeze](ripple-ledger.html#accountroot-flags)) is _nonzero_: Global Freeze is enabled. +* If `Flags` AND `0x00200000` ([lsfNoFreeze](ripple-ledger.html#accountroot-flags)) is _nonzero_: No Freeze is enabled. + +Example request: + +``` +TODO +``` + +Example response: + +``` +TODO +``` + +### Using RippleAPI ### + +To see if an account has Global Freeze and/or No Freeze enabled, use the [`getSettings` method](rippleapi.html#getsettings) with the following parameters: + +| Field | Value | Description | +|---------------|---------|-------------| +| address | String | The Ripple address of the issuing account | + +Look for the following values in the response object: + +| Field | Value | Description | +|---------------|---------|-------------| +| noFreeze | Boolean | (May be omitted) `true` if No Freeze is enabled. | +| globalFreeze | Boolean | (May be omitted) `true` if Global Freeze is enabled. | + +Example code: + +``` +TODO +``` + +# See Also # + +[Gateway Bulletin GB-2014-02 New Feature: Balance Freeze](https://ripple.com/files/GB-2014-02.pdf) diff --git a/content/rippled.md b/content/rippled.md index 5f14dc0d43..86d8d91d7f 100644 --- a/content/rippled.md +++ b/content/rippled.md @@ -743,7 +743,7 @@ The response follows the [standard format](#response-formatting), with the resul | account_data | Object | Information about the requested account | | account_data.Account | String | Address of the requested account | | account_data.Balance | String | XRP balance in "drops" represented as a string | -| account_data.Flags | 32-bit unsigned integer | Integer with different bits representing the status of several [account flags](transactions.html#accountset-flags) | +| account_data.Flags | 32-bit unsigned integer | Integer with different bits representing the status of several [account flags](ripple-ledger.html#accountroot-flags) | | account_data.LedgerEntryType | String | "AccountRoot" is the type of ledger entry that holds an account's data | | account_data.OwnerCount | Integer | Number of other ledger entries (specifically, trust lines and offers) attributed to this account. This is used to calculate the total reserve required to use the account. | | account\_data.PreviousTxnID | String | Hash value representing the most recent transaction that affected this account node directly. **Note:** This does not include all changes to the account's trust lines and offers. Use [account_tx](#account-tx) to get a more inclusive list. | @@ -1124,19 +1124,21 @@ The response follows the [standard format](#response-formatting), with a success | ledger\_hash | String | (May be omitted) Hex hash, provided in the request, of the ledger version that was used when retrieving this data. ([New in 0.26.4-sp1](https://ripplelabs.atlassian.net/browse/RIPD-682)) | | marker | [(Not Specified)](#markers-and-pagination) | Server-defined value. Pass this to the next call in order to resume where this call left off. Omitted when there are no additional pages after this one. ([New in 0.26.4](https://ripplelabs.atlassian.net/browse/RIPD-343)) | -Each trust-line object has some combination of the following fields, although not necessarily all of them: +Each trust-line object has some combination of the following fields: | Field | Type | Description | |-------|------|-------------| | account | String | The unique address of the account this line applies to. | | balance | String | Representation of the numeric balance currently held against this line. A positive balance means that the account holds value; a negative balance means that the account owes value. | | currency | String | The currency this line applies to | -| limit | String | The maximum amount of the given currency that the account is willing to owe the peer account | -| limit\_peer | String | The maximum amount of currency that the peer account is willing to owe the account | -| no_ripple | Boolean | Whether or not the account has the [NoRipple flag](https://ripple.com/knowledge_center/understanding-the-noripple-flag/) set for this line | -| no\_ripple\_peer | Boolean | Whether or not the peer account has the [NoRipple flag](https://ripple.com/knowledge_center/understanding-the-noripple-flag/) set for the other direction of this trust line | +| limit | String | The maximum amount of the given currency that this account is willing to owe the peer account | +| limit\_peer | String | The maximum amount of currency that the peer account is willing to owe this account | | quality\_in | Unsigned Integer | Rate at which the account values incoming balances on this trust line, as a ratio of this value per 1 billion units. (For example, a value of 500 million represents a 0.5:1 ratio.) As a special case, 0 is treated as a 1:1 ratio. | | quality\_out | Unsigned Integer | Rate at which the account values outgoing balances on this trust line, as a ratio of this value per 1 billion units. (For example, a value of 500 million represents a 0.5:1 ratio.) As a special case, 0 is treated as a 1:1 ratio. | +| no\_ripple | Boolean | (May be omitted) `true` if this account has enabled the [NoRipple flag](https://ripple.com/knowledge_center/understanding-the-noripple-flag/) for this line. If omitted, that is the same as `false`. | +| no\_ripple\_peer | Boolean | (May be omitted) `true` if the peer account has enabled the [NoRipple flag](https://ripple.com/knowledge_center/understanding-the-noripple-flag/). If omitted, that is the same as `false`. | +| freeze | Boolean | (May be omitted) `true` if this account has [frozen](freeze.html) this trust line. If omitted, that is the same as `false`. | +| freeze\_peer | (May be omitted) `true` if the peer account has [frozen](freeze.html) this trust line. If omitted, that is the same as `false`. | #### Possible Errors #### diff --git a/data-api-v2-tool.html b/data-api-v2-tool.html index 2b31cf8520..20bb623f32 100644 --- a/data-api-v2-tool.html +++ b/data-api-v2-tool.html @@ -53,6 +53,7 @@
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • rippled
  • rippled Setup
  • Ripple-REST
  • diff --git a/data_api_v2.html b/data_api_v2.html index 65e8b1117e..465cfd4591 100644 --- a/data_api_v2.html +++ b/data_api_v2.html @@ -74,6 +74,7 @@
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • rippled
  • rippled Setup
  • Ripple-REST
  • diff --git a/fee-voting.html b/fee-voting.html index 3ecb8767f9..c5c51893a1 100644 --- a/fee-voting.html +++ b/fee-voting.html @@ -74,6 +74,7 @@
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • rippled
  • rippled Setup
  • Ripple-REST
  • diff --git a/fees.html b/fees.html index 9837bad863..859e68be15 100644 --- a/fees.html +++ b/fees.html @@ -74,6 +74,7 @@
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • rippled
  • rippled Setup
  • Ripple-REST
  • diff --git a/freeze.html b/freeze.html new file mode 100644 index 0000000000..f1234e745f --- /dev/null +++ b/freeze.html @@ -0,0 +1,554 @@ + + + + + + + + Freeze - Ripple Developer Portal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +

    Freeze Features

    +

    The Ripple Consensus Ledger gives accounts the ability to freeze non-XRP balances, which can be useful to comply with regulatory requirements, or while investigating suspicious activity. There are three settings related to freezes:

    +
      +
    • Individual Freeze - Freeze one counterparty.
    • +
    • Global Freeze - Freeze all counterparties.
    • +
    • No Freeze - Permanently give up the ability to freeze individual counterparties. Also gives up the ability to end a global freeze.
    • +
    +

    Because no party has a privileged place in the Ripple Consensus Ledger, the freeze feature cannot prevent a counterparty from conducting transactions in XRP or funds issued by other counterparties.

    +

    Individual Freeze

    +

    The Individual Freeze feature is a setting on a trust line. When an issuing account enables the Individual Freeze setting, the counterparty of that trust line can no longer send or receive issuances on the frozen trust line, except in transactions that go directly to and from the issuing account itself.

    +

    A gateway can freeze a counterparty if that counterparty shows suspicious activity or violates the gateway's terms of use.

    +

    If the counterparty has trust lines to the issuing account in more than one currency, the issuing account must freeze each trust line individually.

    +

    An account cannot enable the Individual Freeze setting if it has previously enabled the No Freeze setting.

    +

    Global Freeze

    +

    The Global Freeze feature is a setting on an account. When an issuing account enables the Global Freeze feature, all counterparties can only send and receive the issuing account's funds directly to and from the issuing account itself. (This includes any hot wallet accounts.)

    +

    It can be useful to enable Global Freeze on a gateway's cold wallet if a hot wallet is compromised, or immediately after regaining control of a compromised issuing account. This stops the flow of funds, preventing attackers from getting away with any more money or at least making it easier to track what happened.

    +

    It can also be useful to enable Global Freeze if a gateway intends to migrate its cold wallet to a new Ripple account, or if the gateway intends to cease doing business. This locks the funds at a specific point in time, so users cannot trade them away for other currencies.

    +

    An account can always enable the Global Freeze setting. However, if the account has previously enabled the No Freeze setting, it can never disable the Global Freeze.

    +

    No Freeze

    +

    The NoFreeze feature is a setting on an account that permanently gives up the ability to freeze counterparties. A business can use this feature to treat its issued funds as "more like physical money" in that the business cannot interfere with customers trading it among themselves. The NoFreeze setting has two effects:

    +
      +
    • The issuing account can no longer use tfSetFreeze to freeze an individual counterparty.
    • +
    • The issuing account can still enable asfGlobalFreeze to enact a global freeze, but the account cannot disable asfGlobalFreeze to end the global freeze.
    • +
    +

    The Ripple Consensus Ledger cannot force a gateway to honor the obligations that its issued funds represent, so giving up the ability to enable a Global Freeze cannot protect customers. However, giving up the ability to disable a Global Freeze ensures that the Global Freeze feature is not used unfairly against some customers.

    +

    Technical Details

    +

    Enabling or Disabling Individual Freeze

    +

    Using rippled

    +

    To enable or disable Individual Freeze on a specific trust line, send a TrustSet transaction. Use the tfSetFreeze flag to enable a freeze, and the tfClearFreeze flag to disable it. The fields of the transaction should be as follows:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldValueDescription
    AccountStringThe address of your Ripple account.
    TransactionTypeStringTrustSet
    LimitAmountObjectObject defining the trust line to freeze.
    LimitAmount.currencyStringCurrency of the trust line
    LimitAmount.issuerStringThe Ripple address of the counterparty to freeze
    LimitAmount.valueStringThe amount of currency you trust this counterparty to issue to you, as a quoted number. From the perspective of a gateway, this is typically "0".
    FlagsNumberTo enable a freeze, use a value with the bit 0x00100000 (tfSetFreeze) enabled. To disable a freeze, use a value with the bit 0x00200000 (tfClearFreeze) enabled instead.
    +

    Set the Fee, Sequence, and LastLedgerSequence parameters in the typical way.

    +

    Example of submitting a TrustSet transaction to enable an individual freeze:

    +
    TODO
    +
    +

    Using RippleAPI

    +

    To enable or disable Individual Freeze on a specific trust line, prepare a Trustline transaction using the prepareTrustline method. The fields of the trustline parameter should be set as follows:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldValueDescription
    currencyStringThe currency of the trust line to freeze
    counterpartyStringThe Ripple address of the counterparty
    limitStringThe amount of currency you trust this counterparty to issue to you, as a quoted number. From the perspective of a gateway, this is typically "0".
    frozenBooleantrue to enable Individual Freeze on this trust line. false to disable Individual Freeze.
    +

    The rest of the transaction flow is the same as any other transaction.

    +

    Example code to enable Individual Freeze on a trust line:

    +
    TODO
    +
    +

    Enabling or Disabling Global Freeze

    +

    Using rippled

    +

    To enable Global Freeze on an account, send an AccountSet transaction with the asfGlobalFreeze flag value in the SetFlag field. To disable Global Freeze, put the asfGlobalFreeze flag value in the ClearFlag field instead.

    +

    Example of submitting an AccountSet transaction to enable Global Freeze:

    +
    TODO
    +
    +

    Using RippleAPI

    +

    To enable or disable Global Freeze on an account, prepare a Settings transaction using the prepareSettings method. The settings parameter should be an object set as follows:

    + + + + + + + + + + + + + + + +
    FieldValueDescription
    globalFreezeBooleantrue to enable a Global Freeze on this account. false to disable Global Freeze.
    +

    The rest of the transaction flow is the same as any other transaction.

    +

    Example code to enable Global Freeze on an account:

    +
    TODO
    +
    +

    Enabling No Freeze

    +

    Using rippled

    +

    To enable No Freeze on an account, send an AccountSet transaction with the asfNoFreeze flag value in the SetFlag field. You must sign this transaction using the master key. Once enabled, you cannot disable No Freeze.

    +

    Example of submitting an AccountSet transaction to enable No Freeze:

    +
    TODO
    +
    +

    Using RippleAPI

    +

    To enable No Freeze on an account, prepare a Settings transaction using the prepareSettings method. Once enabled, you cannot disable No Freeze. The settings parameter should be an object set as follows:

    + + + + + + + + + + + + + + + +
    FieldValueDescription
    noFreezeBooleantrue
    +

    You must sign this transaction using the master key. The rest of the transaction flow is the same as any other transaction.

    +

    Example code to enable No Freeze on an account:

    +
    TODO
    +
    +

    Checking for Individual Freeze

    +

    Using rippled

    +

    To see if a trust line has an Individual Freeze enabled, use the account_lines method with the following parameters:

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldValueDescription
    accountStringThe Ripple address of the issuing account
    peerStringThe Ripple address of the counterparty account
    ledger_indexStringUse validated to get the most recently validated information.
    +

    The response contains an array of trust lines, for each currency in which the issuing account and the counterparty are linked. Look for the following fields in each trust line object:

    + + + + + + + + + + + + + + + + + + + + +
    FieldValueDescription
    freezeBoolean(May be omitted) true if the issuing account has frozen this trust line. If omitted, that is the same as false.
    freeze_peer(May be omitted) true if the counterparty has frozen this trust line. If omitted, that is the same as false.
    +

    Using RippleAPI

    +

    To see if a trust line has an Individual Freeze enabled, use the getTrustlines method with the following parameters:

    + + + + + + + + + + + + + + + + + + + + +
    FieldValueDescription
    addressStringThe Ripple address of the issuing account
    options.counterpartyStringThe Ripple address of the counterparty account
    +

    The response contains an array of trust lines, for each currency in which the issuing account and the counterparty are linked. Look for the following fields in each trust line object:

    + + + + + + + + + + + + + + + + + + + + +
    FieldValueDescription
    specification.frozenBoolean(May be omitted) true if the issuing account has frozen the trust line.
    counterparty.frozenBoolean(May be omitted) true if the counterparty has frozen the trust line.
    +

    Checking for Global Freeze and No Freeze

    +

    Using rippled

    +

    To see if an account has Global Freeze and/or No Freeze enabled, use the account_info method with the following parameters:

    + + + + + + + + + + + + + + + + + + + + +
    FieldValueDescription
    accountStringThe Ripple address of the issuing account
    ledger_indexStringUse validated to get the most recently validated information.
    +

    Check the value of the account_data.Flags field of the response using the bitwise-AND operator:

    +
      +
    • If Flags AND 0x00400000 (lsfGlobalFreeze) is nonzero: Global Freeze is enabled.
    • +
    • If Flags AND 0x00200000 (lsfNoFreeze) is nonzero: No Freeze is enabled.
    • +
    +

    Example request:

    +
    TODO
    +
    +

    Example response:

    +
    TODO
    +
    +

    Using RippleAPI

    +

    To see if an account has Global Freeze and/or No Freeze enabled, use the getSettings method with the following parameters:

    + + + + + + + + + + + + + + + +
    FieldValueDescription
    addressStringThe Ripple address of the issuing account
    +

    Look for the following values in the response object:

    + + + + + + + + + + + + + + + + + + + + +
    FieldValueDescription
    noFreezeBoolean(May be omitted) true if No Freeze is enabled.
    globalFreezeBoolean(May be omitted) true if Global Freeze is enabled.
    +

    Example code:

    +
    TODO
    +
    +

    See Also

    +

    Gateway Bulletin GB-2014-02 New Feature: Balance Freeze

    +
    +
    +
    + + + diff --git a/gateway_guide.html b/gateway_guide.html index 7803019962..b9043f8eab 100644 --- a/gateway_guide.html +++ b/gateway_guide.html @@ -74,6 +74,7 @@
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • rippled
  • rippled Setup
  • Ripple-REST
  • diff --git a/historical_data.html b/historical_data.html index 7b2f7ba3b2..b948afba32 100644 --- a/historical_data.html +++ b/historical_data.html @@ -74,6 +74,7 @@
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • rippled
  • rippled Setup
  • Ripple-REST
  • diff --git a/historicaldb-api-tool.html b/historicaldb-api-tool.html index 3da66a5bd5..1bf1c72f44 100644 --- a/historicaldb-api-tool.html +++ b/historicaldb-api-tool.html @@ -53,6 +53,7 @@
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • rippled
  • rippled Setup
  • Ripple-REST
  • diff --git a/index.html b/index.html index 56da8baf85..73af270d8d 100644 --- a/index.html +++ b/index.html @@ -66,6 +66,7 @@
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • rippled
  • rippled Setup
  • Ripple-REST
  • diff --git a/paths.html b/paths.html index 075a0d5154..2b435ab603 100644 --- a/paths.html +++ b/paths.html @@ -74,6 +74,7 @@
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • rippled
  • rippled Setup
  • Ripple-REST
  • diff --git a/reliable_tx.html b/reliable_tx.html index 630bfaa35e..431e717a7e 100644 --- a/reliable_tx.html +++ b/reliable_tx.html @@ -74,6 +74,7 @@
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • rippled
  • rippled Setup
  • Ripple-REST
  • diff --git a/reserves.html b/reserves.html index fca1872514..9a780854e2 100644 --- a/reserves.html +++ b/reserves.html @@ -74,6 +74,7 @@
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • rippled
  • rippled Setup
  • Ripple-REST
  • diff --git a/rest-api-tool.html b/rest-api-tool.html index 62015cfdcb..709053d137 100644 --- a/rest-api-tool.html +++ b/rest-api-tool.html @@ -53,6 +53,7 @@
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • rippled
  • rippled Setup
  • Ripple-REST
  • diff --git a/ripple-api-tool.html b/ripple-api-tool.html index de755a7970..283f510c07 100644 --- a/ripple-api-tool.html +++ b/ripple-api-tool.html @@ -53,6 +53,7 @@
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • rippled
  • rippled Setup
  • Ripple-REST
  • diff --git a/ripple-ledger.html b/ripple-ledger.html index 9a29880322..26f6e577a3 100644 --- a/ripple-ledger.html +++ b/ripple-ledger.html @@ -74,6 +74,7 @@
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • rippled
  • rippled Setup
  • Ripple-REST
  • diff --git a/ripple-rest.html b/ripple-rest.html index 247af104c4..c44683e460 100644 --- a/ripple-rest.html +++ b/ripple-rest.html @@ -74,6 +74,7 @@
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • rippled
  • rippled Setup
  • Ripple-REST
  • diff --git a/rippleapi.html b/rippleapi.html index 9ceec2f2b2..669b2d2845 100644 --- a/rippleapi.html +++ b/rippleapi.html @@ -74,6 +74,7 @@
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • rippled
  • rippled Setup
  • Ripple-REST
  • diff --git a/rippled-apis.html b/rippled-apis.html index 79225edabc..90c8b0a3e1 100644 --- a/rippled-apis.html +++ b/rippled-apis.html @@ -74,6 +74,7 @@
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • rippled
  • rippled Setup
  • Ripple-REST
  • diff --git a/rippled-setup.html b/rippled-setup.html index 254fcc7aac..7bd855713b 100644 --- a/rippled-setup.html +++ b/rippled-setup.html @@ -74,6 +74,7 @@
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • rippled
  • rippled Setup
  • Ripple-REST
  • diff --git a/tool/pages.json b/tool/pages.json index 98021d050a..bf736dba24 100644 --- a/tool/pages.json +++ b/tool/pages.json @@ -53,6 +53,13 @@ "ripple.com": "https://ripple.com/build/reserves/", "category": "Concepts" }, + { + "name": "Freeze", + "md": "freeze.md", + "html": "freeze.html", + "ripple.com": "https://wiki.ripple.com/Freeze", + "category": "Concepts" + }, { "name": "rippled", "md":"rippled.md", diff --git a/transactions.html b/transactions.html index 83c93ce056..627b677200 100644 --- a/transactions.html +++ b/transactions.html @@ -74,6 +74,7 @@
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • rippled
  • rippled Setup
  • Ripple-REST
  • diff --git a/transfer_fees.html b/transfer_fees.html index fa73d3b62a..92dd1cf200 100644 --- a/transfer_fees.html +++ b/transfer_fees.html @@ -74,6 +74,7 @@
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • rippled
  • rippled Setup
  • Ripple-REST
  • diff --git a/tx-cost.html b/tx-cost.html index 68b1cbd795..d07ae5efae 100644 --- a/tx-cost.html +++ b/tx-cost.html @@ -74,6 +74,7 @@
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • Transaction Cost
  • Fee Voting
  • Reserves
  • +
  • Freeze
  • rippled
  • rippled Setup
  • Ripple-REST