Skip to content

Moderators action fee amounts come from the seated charter within the contract maximum (moderation teams F2) #4882

Open

Description

@QuantumExplorer

Part of #4865 (decentralized moderation teams). Item F2 of the PR split. Wave 3: depends on H2 and F1.

Summary

In elected mode the moderators amounts of the action fees come from the seated charter, within the maximum the contract declares. Teams compete on price. Users are protected by $actionFeeAgreement. Owner pot amounts stay in the contract and stay immutable.

Decisions implemented: D45, D63, D64, D65 in #4865.

Current behaviour

Action fees (packages/rs-dpp/src/data_contract/document_type/action_fees/) are fixed credits per action into an owner pot and a moderators pot, declared by the contract, and validate_action_fees_unchanged in document_type/methods/validate_update/v1/mod.rs refuses any change on update.

Scope

  • Effective moderators amount per document type and action = the active charter's moderatorsAmounts when a team is seated, capped by the contract's maximum (B1), else the contract's own amount. The lookup reads the seated team (H1) and the charter (C1) in the action's state read.
  • New amounts apply immediately at the block a seating or amendment passes (D65). Small rises are absorbed by the agreement's increase tolerance; larger ones fail at recheck (F1) and the user re-signs.
  • validate_action_fees_unchanged stays for the owner part and for contracts not in elected mode; in elected mode the contract's moderators amount is only the fallback and the maximum is frozen (B1).
  • Fee estimation and the getContractFeePots path unchanged; the pot receives whatever amount was effective.

Depends on

  • H2 (a seated team with an active charter), F1 (recheck), B1 (maximum), C1 (charter amounts).

Tests

  • Before seating the contract amount is charged; after seating the charter amount; a charter amount above the maximum is refused at application (H2 test) and can never be effective.
  • A transition agreed under the old amount within tolerance passes after seating; one outside fails.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions