0Pricing
Web3 & DApp Development Fundamentals · Урок

Предложения и голосование

Контракты Governor

«Предложения и голосование» — бесплатный урок Web3 & DApp Development Fundamentals на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Web3 & DApp Development Fundamentals, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Web3 & DApp Development Fundamentals содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

The Governance Lifecycle

On-chain governance follows a clear lifecycle: propose, vote, queue, execute.

Each stage is handled by a Governor smart contract that enforces the rules automatically.

The Governor Contract

OpenZeppelin's Governor is the standard framework for DAO voting. It manages proposals, tallies votes, and triggers execution.

It is modular: you plug in a vote-counting strategy, a token, and timing parameters.

contract MyGovernor is
    Governor,
    GovernorVotes,
    GovernorVotesQuorumFraction,
    GovernorTimelockControl
{ /* ... */ }

Creating a Proposal

A proposal bundles the actions to execute: target contracts, call data, and values, plus a human-readable description.

governor.propose(
    [targetContract],   // addresses
    [0],                // ETH values
    [callData],         // encoded function calls
    "Increase reward rate to 5%"
);

The Voting Delay

After a proposal is created, a voting delay passes before voting opens.

This gives members time to review and lets the snapshot block settle so balances are fixed.

votingDelay  = 1 block   // wait before voting
votingPeriod = 50400 blocks // ~1 week of voting

Casting Votes

During the voting period, members cast votes weighted by their delegated power at the snapshot block.

Standard options are For, Against, and Abstain.

governor.castVote(proposalId, 1);
// 0 = Against, 1 = For, 2 = Abstain

Vote Counting and Quorum

When voting ends, the Governor tallies the weighted votes. A proposal succeeds only if it has more For than Against votes and meets the quorum.

Abstain votes typically count toward quorum but not toward the For/Against decision.

Proposal States

A proposal moves through defined states:

  • Pending — waiting for voting delay
  • Active — voting open
  • Defeated or Succeeded
  • Queued then Executed

Queuing a Successful Proposal

A succeeded proposal is usually queued in a timelock before it can run.

This delay (covered next lesson) is a safety buffer letting users react before the change takes effect.

governor.queue(targets, values, calldatas, descHash);

Execution

After the timelock delay, anyone can call execute to carry out the proposal's actions on-chain.

The Governor (or its timelock) holds the permissions needed to make the changes.

governor.execute(targets, values, calldatas, descHash);
// the approved actions now run

Gas Costs and Off-Chain Voting

On-chain voting costs gas per vote. To save costs, many DAOs deliberate and signal off-chain (Snapshot) and only push final, binding actions on-chain.

This hybrid keeps participation cheap while preserving trustless execution.

Putting It Together

Governor contracts standardize the propose-vote-queue-execute flow. Voting delays, periods, quorum, and proposal states make governance predictable and secure.

Next we focus on timelocks, the safety layer before execution.

Quick Check

Test your understanding of the governance flow.

Recap: Proposals and Voting

You learned that:

  • Governance follows propose, vote, queue, execute
  • The Governor contract enforces the rules
  • A voting delay and period structure the timeline
  • Success needs a majority For plus quorum
  • Proposals pass through defined states

Next: timelocks and safe execution.

Часто задаваемые вопросы

Урок «Предложения и голосование» бесплатный?

Да — полный текст урока «Предложения и голосование» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Web3 & DApp Development Fundamentals, подпишись на CoddyKit PRO. Курс Web3 & DApp Development Fundamentals содержит 4 уроков всего.

Чему я научусь в уроке «Предложения и голосование»?

Контракты Governor Ты практикуешь Web3 & DApp Development Fundamentals с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Web3 & DApp Development Fundamentals?

Предыдущий опыт не требуется. Web3 & DApp Development Fundamentals на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Предложения и голосование»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Web3 & DApp Development Fundamentals?

Да. Каждый урок Web3 & DApp Development Fundamentals включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Что такое DAO
  2. Токены управления
  3. Предложения и голосование
  4. Таймлоки и выполнение
← Назад к Web3 & DApp Development Fundamentals