Skip to content

Commit 11103ae

Browse files
committed
Update permission delegation docs for PermissionDelegationV1_1
- Point amendment disclaimers at PermissionDelegationV1_1 (concept page, account_tx) - Add account_tx delegate filter parameter (#6126) - Note pseudo-account delegate rejection in DelegateSet error cases (#7597) - Document that delegated transactions cannot be queued (#7640)
1 parent 5c5a9a9 commit 11103ae

4 files changed

Lines changed: 19 additions & 9 deletions

File tree

docs/concepts/accounts/permission-delegation.md

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ status: not_enabled
1010

1111
Permission delegation is the function of granting various permissions to another account to send permissions on behalf of your account. You can use permission delegation to enable flexible security paradigms such as role-based access control, instead of or alongside techniques such as [multi-signing](./multi-signing.md).
1212

13-
{% amendment-disclaimer name="PermissionDelegation" /%}
13+
{% amendment-disclaimer name="PermissionDelegationV1_1" /%}
1414

1515

1616
## Background: The Need for Permission Delegation
@@ -43,13 +43,12 @@ For a complete list of transaction types that can or cannot be delegated as well
4343

4444
### Limitations of Permission Delegation
4545

46-
The main limiting factor on how many delegates you can have is that you must hold enough XRP to meet the [reserve requirement](./reserves.md). Each delegate's permissions are tracked with a [Delegate ledger entry][], which counts as one item towards the delegator's owner reserve.
47-
48-
Each delegate can be granted up to 10 permissions.
49-
50-
Some permissions cannot be delegated, especially permissions that would allow the delegate to change cryptographic keys or grant additional permissions.
51-
52-
The available set of granular permissions is hard-coded, and the permissions cannot be customized. For example, you cannot grant permission to send only certain currencies and not others.
46+
- The number of delegates you can have is limited by the [reserve requirement](./reserves.md). Each delegate's permissions are tracked with a [Delegate ledger entry][], which counts as one item towards the delegator's owner reserve.
47+
- Each delegate can be granted up to 10 permissions.
48+
- Some permissions cannot be delegated, especially permissions that would allow the delegate to change cryptographic keys or grant additional permissions.
49+
- The set of granular permissions is hard-coded and cannot be customized. For example, you cannot grant permission to send only certain currencies and not others.
50+
- You cannot delegate permissions to a [pseudo-account](/docs/concepts/accounts/pseudo-accounts.md) (such as an AMM or a Single Asset Vault).
51+
- Delegated transactions cannot be held in the [transaction queue](/docs/concepts/transactions/transaction-queue.md). A delegated transaction that can't apply to the open ledger immediately fails with `telCAN_NOT_QUEUE` instead of being queued.
5352

5453
## Comparison with Multi-Signing
5554

docs/concepts/transactions/transaction-queue.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ The `xrpld` server uses a variety of heuristics to estimate which transactions a
3939
- Transactions must be properly-formed and [authorized](index.md#authorizing-transactions) with valid signatures.
4040
- Transactions with an `AccountTxnID` field cannot be queued.
4141
- Fee-sponsored transactions (using the `spfSponsorFee` flag) cannot be queued. {% amendment-disclaimer name="Sponsor" /%}
42+
- [Delegated transactions](../accounts/permission-delegation.md) (those with a `Delegate` field) cannot be queued. {% amendment-disclaimer name="PermissionDelegationV1_1" /%}
4243
- A single sending address can have at most 10 transactions queued at the same time.
4344
- To queue a transaction, the sender must have enough XRP for all of the following:
4445
- Destroying the XRP [transaction cost](transaction-cost.md) as specified in the `Fee` fields of all the sender's queued transactions. The total amount among queued transactions cannot be more than the base account reserve (currently {% $env.PUBLIC_BASE_RESERVE %}). (Transactions paying significantly more than the minimum transaction cost of 0.00001 XRP typically skip the queue and go straight into the open ledger.)

docs/references/http-websocket-apis/public-api-methods/account-methods/account_tx.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,19 @@ The request includes the following parameters:
7777
| `forward` | Boolean | _(Optional)_ Defaults to `false`. If set to `true`, returns values indexed with the oldest ledger first. Otherwise, the results are indexed with the newest ledger first. (Each page of results may not be internally ordered, but the pages are overall ordered.) |
7878
| `limit` | Positive Integer | _(Optional)_ Default varies. Limit the number of transactions to retrieve. The server is not required to honor this value. |
7979
| `marker` | [Marker][] | Value from a previous paginated response. Resume retrieving data where that response left off. This value is stable even if there is a change in the server's range of available ledgers. |
80+
| `delegate` | Object | _(Optional)_ Filter the results by [transaction delegation](../../../../concepts/accounts/permission-delegation.md) relationship. See [`delegate` filter](#delegate-filter) for the object's fields. {% amendment-disclaimer name="PermissionDelegationV1_1" /%} |
8081

8182
- [API v2]: If you specify either `ledger_index` or `ledger_hash`, including `ledger_index_min` and `ledger_index_max` returns an `invalidParams` error.
8283

84+
#### `delegate` filter
85+
86+
The `delegate` object filters results to transactions where one account (the delegatee) signed and submitted a transaction on behalf of another account (the delegator). It has the following fields:
87+
88+
| `Field` | Type | Description |
89+
|:------------------|:-------|:------------|
90+
| `delegate_filter` | String | _(Required)_ The relationship to filter by. `actor` returns transactions others signed on behalf of the `account` (the account holder's view). `authorizer` returns transactions the `account` signed on behalf of others (the delegatee's view). |
91+
| `counter_party` | String | _(Optional)_ An [address][] to filter by. Use with `delegate_filter`:`actor` to limit results to transactions signed by this delegatee. Use with `delegate_filter`:`authorizer` to limit results to transactions signed on behalf of this delegator. |
92+
8393

8494
### Iterating over queried data
8595

docs/references/protocol/transactions/types/delegateset.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ Besides errors that can occur for all transactions, {% $frontmatter.seo.title %}
7070
| `tecDIR_FULL` | The sender owns too many items in the ledger already.<br>This error is effectively impossible to receive if {% amendment-disclaimer name="fixDirectoryLimit" compact=true /%} is enabled. |
7171
| `tecINSUFFICIENT_RESERVE` | The sender does not have enough XRP to meet the [reserve requirement](/docs/concepts/accounts/reserves.md) of creating a new Delegate ledger entry. |
7272
| `tecNO_ENTRY` | The `Permissions` list is empty but no [Delegate ledger entry][] exists for the delegate. An empty list is only valid for deleting an existing entry. |
73-
| `tecNO_PERMISSION` | At least one permission in the `Permissions` list is not delegatable. See [Permission Values](../../data-types/permission-values.md) for which permissions are not delegatable. |
73+
| `tecNO_PERMISSION` | At least one permission in the `Permissions` list is not delegatable (see [Permission Values](../../data-types/permission-values.md) for which permissions are not delegatable), or the `Authorize` account is a [pseudo-account](/docs/concepts/accounts/pseudo-accounts.md). |
7474
| `tecNO_TARGET` | The account specified in the `Authorize` field does not exist in the ledger. |
7575
| `temARRAY_TOO_LARGE` | The `Permissions` list is too large. It cannot contain more than 10 entries. |
7676
| `temDISABLED` | The [PermissionDelegation amendment][] is not enabled. |

0 commit comments

Comments
 (0)