Files
pezkuwi-subxt/substrate/frame/democracy
Gilt0 b78c72cf9c [FRAME Core] remove unnecessary overrides while using derive_impl for frame_system (#3317)
# Description

This PR removes redundant type definition from test definition config
implementations like
```
#[derive_impl(frame_system::config_preludes::TestDefaultConfig as frame_system::DefaultConfig)]
impl frame_system::Config for Test {
    type A = A;
    ...
}
```

This changes avoid redundancies in the code as the macro `derive_impl`
defines the relevant types. To implement the changes, it was a simple
fact of running tests and making sure that the tests would still run
while the definition would be removed.

Closes #3237

As a note, here is a brief account of things done from the Issue's
description statement
```
alliance migrate alliance, fast-unstake and bags list to use derive-impl #1636
asset-conversion                                                                                            DONE
asset-rate                                                                                                  DONE
assets                                                                                                      DONE
atomic-swap                                                                                                 DONE
aura                                                                                                        DONE
authority-discovery                                                                                         DONE                                                                     
authorship  migrate babe and authorship to use derive-impl #1790
babe  migrate babe and authorship to use derive-impl #1790
bags-list migrate alliance, fast-unstake and bags list to use derive-impl #1636
balances                                                                                                    DONE
beefy                                                                                                       NOTHING TO DO --- also noted this error without failing tests Feb 13 13:49:08.941 ERROR runtime::timestamp: `pallet_timestamp::UnixTime::now` is called at genesis, invalid value returned: 0
beefy-mmr                                                                                                   NOTHING TO DO
bounties                                                                                                    DONE
child-bounties                                                                                              DONE
collective                                                                                                  DONE
contracts                                                                                                   DONE
conviction-voting                                                                                           DONE
core-fellowship                                                                                             NOTHING TO DO
democracy                                                                                                   DONE
election-provider-multi-phase                                                                               NOTHING TO DO
elections-phragmen                                                                                          DONE
executive                                                                                                   NOTHING TO DO
fast-unstake migrate alliance, fast-unstake and bags list to use derive-impl #1636
glutton                                                                                                     DONE
grandpa                                                                                                     DONE
identity                                                                                                    DONE
im-online                                                                                                   NOTHING TO DO
indices Refactor indices pallet #1789
insecure-randomness-collective-flip                                                                         DONE
lottery                                                                                                     DONE
membership                                                                                                  DONE
merkle-mountain-range                                                                                       NOTHING TO DO
message-queue                                                                                               DONE
multisig add frame_system::DefaultConfig to individual pallet DefaultConfigs substrate#14453
nft-fractionalization                                                                                       DONE
nfts                                                                                                        DONE
nicks Refactor pallet-state-trie-migration to fungible::* traits #1801                                      NOT IN REPO
nis                                                                                                         DONE
node-authorization                                                                                          DONE
nomination-pools                                                                                            NOTHING TO DO -- ONLY impl for Runtime
offences                                                                                                    DELETED EVERYTHING -- IS THAT CORRECT??
preimage                                                                                                    DONE
proxy add frame_system::DefaultConfig to individual pallet DefaultConfigs substrate#14453
ranked-collective                                                                                           NOTHING TO DO
recovery                                                                                                    DONE
referenda                                                                                                   DONE
remark                                                                                                      DONE
root-offences                                                                                               DONE
root-testing                                                                                                NOTHING TO DO
salary                                                                                                      NOTHING TO DO
scheduler                                                                                                   DONE
scored-pool                                                                                                 DONE
session                                                                                                     DONE -- substrate/frame/session/benchmarking/src/mock.rs untouched
society                                                                                                     NOTHING TO DO
staking                                                                                                     DONE
staking-bags-benchmarks                                                                                     NOT IN REPO
state-trie-migration                                                                                        NOTHING TO DO
statement                                                                                                   DONE
sudo                                                                                                        DONE
system                                                                                                      DONE
timestamp                                                                                                   DONE
tips                                                                                                        DONE
transaction-payment                                                                                         NOTHING TO DO
transaction-storage                                                                                         NOTHING TO DO
treasury                                                                                                    DONE
try-runtime                                                                                                 NOTHING TO DO -- no specific mention of 'for Test'
uniques                                                                                                     DONE
utility                                                                                                     DONE
vesting                                                                                                     DONE
whitelist                                                                                                   DONE
```

---------

Co-authored-by: command-bot <>
Co-authored-by: gupnik <nikhilgupta.iitk@gmail.com>
2024-02-19 12:07:10 +00:00
..

Democracy Pallet

Overview

The Democracy pallet handles the administration of general stakeholder voting.

There are two different queues that a proposal can be added to before it becomes a referendum, 1) the proposal queue consisting of all public proposals and 2) the external queue consisting of a single proposal that originates from one of the external origins (such as a collective group).

Every launch period - a length defined in the runtime - the Democracy pallet launches a referendum from a proposal that it takes from either the proposal queue or the external queue in turn. Any token holder in the system can vote on referenda. The voting system uses time-lock voting by allowing the token holder to set their conviction behind a vote. The conviction will dictate the length of time the tokens will be locked, as well as the multiplier that scales the vote power.

Terminology

  • Enactment Period: The minimum period of locking and the period between a proposal being approved and enacted.
  • Lock Period: A period of time after proposal enactment that the tokens of winning voters will be locked.
  • Conviction: An indication of a voter's strength of belief in their vote. An increase of one in conviction indicates that a token holder is willing to lock their tokens for twice as many lock periods after enactment.
  • Vote: A value that can either be in approval ("Aye") or rejection ("Nay") of a particular referendum.
  • Proposal: A submission to the chain that represents an action that a proposer (either an account or an external origin) suggests that the system adopt.
  • Referendum: A proposal that is in the process of being voted on for either acceptance or rejection as a change to the system.
  • Delegation: The act of granting your voting power to the decisions of another account for up to a certain conviction.

Adaptive Quorum Biasing

A referendum can be either simple majority-carries in which 50%+1 of the votes decide the outcome or adaptive quorum biased. Adaptive quorum biasing makes the threshold for passing or rejecting a referendum higher or lower depending on how the referendum was originally proposed. There are two types of adaptive quorum biasing: 1) positive turnout bias makes a referendum require a super-majority to pass that decreases as turnout increases and 2) negative turnout bias makes a referendum require a super-majority to reject that decreases as turnout increases. Another way to think about the quorum biasing is that positive bias referendums will be rejected by default and negative bias referendums get passed by default.

Interface

Dispatchable Functions

Public

These calls can be made from any externally held account capable of creating a signed extrinsic.

Basic actions:

  • propose - Submits a sensitive action, represented as a hash. Requires a deposit.
  • second - Signals agreement with a proposal, moves it higher on the proposal queue, and requires a matching deposit to the original.
  • vote - Votes in a referendum, either the vote is "Aye" to enact the proposal or "Nay" to keep the status quo.
  • unvote - Cancel a previous vote, this must be done by the voter before the vote ends.
  • delegate - Delegates the voting power (tokens * conviction) to another account.
  • undelegate - Stops the delegation of voting power to another account.

Administration actions that can be done to any account:

  • reap_vote - Remove some account's expired votes.
  • unlock - Redetermine the account's balance lock, potentially making tokens available.

Preimage actions:

  • note_preimage - Registers the preimage for an upcoming proposal, requires a deposit that is returned once the proposal is enacted.
  • note_preimage_operational - same but provided by T::OperationalPreimageOrigin.
  • note_imminent_preimage - Registers the preimage for an upcoming proposal. Does not require a deposit, but the proposal must be in the dispatch queue.
  • note_imminent_preimage_operational - same but provided by T::OperationalPreimageOrigin.
  • reap_preimage - Removes the preimage for an expired proposal. Will only work under the condition that it's the same account that noted it and after the voting period, OR it's a different account after the enactment period.

Cancellation Origin

This call can only be made by the CancellationOrigin.

  • emergency_cancel - Schedules an emergency cancellation of a referendum. Can only happen once to a specific referendum.

ExternalOrigin

This call can only be made by the ExternalOrigin.

  • external_propose - Schedules a proposal to become a referendum once it is is legal for an externally proposed referendum.

External Majority Origin

This call can only be made by the ExternalMajorityOrigin.

  • external_propose_majority - Schedules a proposal to become a majority-carries referendum once it is legal for an externally proposed referendum.

External Default Origin

This call can only be made by the ExternalDefaultOrigin.

  • external_propose_default - Schedules a proposal to become a negative-turnout-bias referendum once it is legal for an externally proposed referendum.

Fast Track Origin

This call can only be made by the FastTrackOrigin.

  • fast_track - Schedules the current externally proposed proposal that is "majority-carries" to become a referendum immediately.

Veto Origin

This call can only be made by the VetoOrigin.

  • veto_external - Vetoes and blacklists the external proposal hash.

Root

  • cancel_referendum - Removes a referendum.
  • cancel_queued - Cancels a proposal that is queued for enactment.
  • clear_public_proposal - Removes all public proposals.

License: Apache-2.0