0Pricing
Web3 & DApp Development Fundamentals · 강의

제안과 투표

Governor 컨트랙트

제안과 투표은(는) CoddyKit의 무료 Web3 & DApp Development Fundamentals 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 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 AI 튜터), CoddyKit PRO로 업그레이드하면 Web3 & DApp Development Fundamentals 강의 전체를 잠금 해제할 수 있습니다. Web3 & DApp Development Fundamentals 강의에는 총 4개의 강의가 포함되어 있습니다.

“제안과 투표”에서 뭘 배우나요?

Governor 컨트랙트 브라우저에서 직접 실행하는 실습 코드로 Web3 & DApp Development Fundamentals을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Web3 & DApp Development Fundamentals을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Web3 & DApp Development Fundamentals은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“제안과 투표” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Web3 & DApp Development Fundamentals 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Web3 & DApp Development Fundamentals 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. DAO란 무엇인가
  2. 거버넌스 토큰
  3. 제안과 투표
  4. 타임락과 실행
← Web3 & DApp Development Fundamentals(으)로 돌아가기