diff --git a/x/authz/spec/01_concepts.md b/x/authz/spec/01_concepts.md index 0f5e482f1..8be3333e6 100644 --- a/x/authz/spec/01_concepts.md +++ b/x/authz/spec/01_concepts.md @@ -35,3 +35,6 @@ Cosmos-SDK `x/authz` module comes with following authorization types +++ https://github.com/cosmos/cosmos-sdk/blob/c95de9c4177442dee4c69d96917efc955b5d19d9/x/authz/types/generic_authorization.go#L20-L28 - `method_name` holds ServiceMsg type. + +## Gas +In order to prevent DoS attacks, granting `StakeAuthorizaiton`s with `x/authz` incur gas. `StakeAuthorizaiton` allows you to authorize another account to delegate, undelegate, or redelegate to validators. The authorizer can define a list of validators they will allow and/or deny delegations to. The SDK will iterate over these lists and charge 10 gas for each validator in both of the lists. \ No newline at end of file diff --git a/x/authz/spec/README.md b/x/authz/spec/README.md index 07ec1ba0c..c5f982440 100644 --- a/x/authz/spec/README.md +++ b/x/authz/spec/README.md @@ -16,6 +16,7 @@ granting arbitrary privileges from one account (the granter) to another account 1. **[Concept](01_concepts.md)** - [Authorization](01_concepts.md#Authorization) - [Built-in Authorizations](01_concepts.md#Built-in-Authorization) + - [Gas](01_concepts.md#gas) 2. **[State](02_state.md)** 3. **[Messages](03_messages.md)** - [Msg/GrantAuthorization](03_messages.md#MsgGrantAuthorization) diff --git a/x/feegrant/spec/01_concepts.md b/x/feegrant/spec/01_concepts.md index 92200f2d4..afdd96d25 100644 --- a/x/feegrant/spec/01_concepts.md +++ b/x/feegrant/spec/01_concepts.md @@ -3,7 +3,6 @@ order: 1 --> # Concepts - ## FeeAllowanceGrant `FeeAllowanceGrant` is stored in the KVStore to record a grant with full context. Every grant will contain `granter`, `grantee` and what kind of `allowance` is granted. `granter` is an account address who is giving permission to `grantee` (the beneficiary account address) to pay for some or all of `grantee`'s transaction fees. `allowance` defines what kind of fee allowance (`BasicFeeAllowance` or `PeriodicFeeAllowance`, see below) is granted to `grantee`. `allowance` accepts an interface which implements `FeeAllowanceI`, encoded as `Any` type. There can be only one existing fee grant allowed for a `grantee` and `granter`, self grants are not allowed. @@ -68,3 +67,8 @@ Example cmd: ## DeductGrantedFeeDecorator `feegrant` module also adds a `DeductGrantedFeeDecorator` ante handler. Whenever a transaction is being executed with `granter` field set, then this ante handler will check whether `payer` and `granter` have proper fee allowance grant in state. If it exists the fees will be deducted from the `granter`'s account address. If the `granter` field isn't set then this ante handler works as normal fee deductor. + +## Gas +In order to prevent DoS attacks, using a filtered `x/feegrant` incurs gas. The SDK must assure that the `grantee`'s transactions all conform to the filter set by the `granter`. The SDK does this by iterating over the allowed messages in the filter and charging 10 gas per filtered message. The SDK will then iterate over the messages being sent by the `grantee` to ensure the messages adhere to the filter, also charging 10 gas per message. The SDK will stop iterating and fail the transaction if it finds a message that does not conform to the filter. + +**WARNING**: The gas is charged against the granted allowance. Ensure your messages conform to the filter, if any, before sending transactions using your allowance. \ No newline at end of file diff --git a/x/feegrant/spec/README.md b/x/feegrant/spec/README.md index 1abdcf464..26be4c49f 100644 --- a/x/feegrant/spec/README.md +++ b/x/feegrant/spec/README.md @@ -20,12 +20,13 @@ This module allows accounts to grant fee allowances and to use fees from their a - [PeriodicFeeAllowance](01_concepts.md#periodicfeeallowance) - [FeeAccount flag](01_concepts.md#feeaccount-flag) - [DeductGrantedFeeDecorator](01_concepts.md#deductgrantedfeedecorator) + - [Gas](01_concepts.md#gas) 2. **[State](02_state.md)** - [FeeAllowance](02_state.md#feeallowance) 3. **[Messages](03_messages.md)** - [Msg/GrantFeeAllowance](03_messages.md#msggrantfeeallowance) - [Msg/RevokeFeeAllowance](03_messages.md#msgrevokefeeallowance) -3. **[Events](04_events.md)** +4. **[Events](04_events.md)** - [MsgGrantFeeAllowance](04_events.md#msggrantfeeallowance) - [MsgrevokeFeeAllowance](04_events.md#msgrevokefeeallowance) - [Exec fee allowance](04_events.md#exec-fee-allowance)