Files
papers/zoo-dao-emergency-protocol/zoo-dao-emergency-protocol.tex
zeekayandHanzo Dev dced1dcfb9 Publish under the org, not a person
Bylines, paper authorship, correspondence addresses and the founder blurb under
each post named an individual. They name the organisation that published the
work instead: the brand on posts and pages, the research byline on papers, and
research@ in place of a personal address. Both are what these repositories
already used elsewhere — nothing new was coined.

Co-authors are untouched. Where a paper named someone else alongside, they stay
named; only the one byline changed. Bibliography entries, running heads,
PDF metadata and affiliations move with it, so a citation still resolves to
whoever the cited paper names.

Sample and fixture data uses the placeholder name these tests already use
elsewhere, so no assertion changed meaning.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-01 08:55:40 -07:00

752 lines
30 KiB
TeX

\documentclass[11pt,letterpaper]{article}
\usepackage{shared/zoocover}
% Packages
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb,amsthm}
\usepackage{algorithm}
\usepackage{algorithmic}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{xcolor}
\usepackage{booktabs}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,positioning,calc}
\usepackage{listings}
\usepackage{caption}
\usepackage{subcaption}
% geometry loaded by zoocover
% Theorem environments
\newtheorem{theorem}{Theorem}[section]
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem{proposition}[theorem]{Proposition}
\newtheorem{corollary}[theorem]{Corollary}
\newtheorem{definition}{Definition}[section]
\newtheorem{example}{Example}[section]
% Custom commands
\newcommand{\Zoo}{\textsc{Zoo}}
\newcommand{\ZOO}{\textsc{ZOO}}
\newcommand{\DAO}{\textsc{dao}}
% Hyperref setup
\hypersetup{
colorlinks=true,
linkcolor=blue,
citecolor=blue,
urlcolor=blue
}
\input{shared/lstlang}
\lstset{
basicstyle=\ttfamily\footnotesize,
breaklines=true,
frame=single,
numbers=left,
numberstyle=\tiny,
xleftmargin=2em,
framexleftmargin=1.5em,
captionpos=b,
}
% Title and authors
\title{\textbf{Emergency Governance: Pause, Cancel, and Upgrade under Adversarial Conditions}}
\author{
Zoo Labs Foundation Research\thanks{[email protected]}\\
\textit{Zoo Labs Foundation}\\
\texttt{[email protected]}
}
\date{June 2025}
\begin{document}
\zoocoverpage
\begin{abstract}
Standard DAO governance requires days or weeks to reach decisions. When a bridge exploit drains funds, a wildfire threatens a protected habitat, or a critical vulnerability is disclosed, this latency is unacceptable. We present Zoo Network's Emergency Governance Protocol, implementing ZIP-0027, which provides tiered emergency response powers with escalating authority: from immediate 2-of-3 multi-sig pause (DEFCON~1) through 3-of-5 council-authorized conservation crisis funding (DEFCON~2) to fast-track DAO votes with reduced quorum (DEFCON~3/4). We formalize the threat model, define the Emergency Council's authority boundaries, specify pre-approved response playbooks, and prove that the protocol satisfies bounded damage---no single emergency action can disburse more than 5\% of the treasury or extend beyond 72 hours without renewal. Mandatory post-emergency review within 7 days ensures accountability: council members who declare false emergencies face reputation slashing and removal. The protocol has been activated four times in 12 months of operation, with mean DEFCON~1 response time of 47 minutes and zero instances of authority abuse.
\medskip
\noindent\textbf{Keywords:} emergency governance, multi-sig, incident response, crisis management, smart contract security, conservation
\end{abstract}
\newpage
\tableofcontents
\newpage
% ======================================================================
\section{Introduction}
\label{sec:intro}
% ======================================================================
DAO governance optimizes for deliberation: proposals are discussed, voted on, queued through timelocks, and executed after review periods. This deliberation is valuable for routine decisions but catastrophic during crises. The Nomad bridge exploit (August 2022) drained \$190M in hours~\cite{nomad2022}; the Euler Finance attack (March 2023) extracted \$197M before governance could respond~\cite{euler2023}. In conservation, a 2019 Amazon wildfire destroyed 906{,}000 hectares in a single month~\cite{inpe2019}---waiting 7 days for a funding vote would waste critical response time.
ZIP-0027 defines Zoo Network's Emergency Governance Protocol. This paper expands that specification with a formal threat model, detailed contract architecture, operational playbooks, and analysis of the protocol's safety guarantees under adversarial conditions.
\subsection{Design Constraints}
Emergency governance must satisfy conflicting requirements:
\begin{enumerate}
\item \textbf{Speed}: Sub-hour response for critical security incidents.
\item \textbf{Bounded authority}: No emergency action should be able to drain the treasury or permanently modify governance.
\item \textbf{Accountability}: Every emergency action must be justified, reviewed, and ratifiable by the community.
\item \textbf{Abuse resistance}: The emergency mechanism itself must not become an attack vector for governance capture.
\item \textbf{Availability}: The Emergency Council must be reachable 24/7 across time zones.
\end{enumerate}
\subsection{Contributions}
\begin{enumerate}
\item A \textbf{formal threat model} covering both technical (exploit, vulnerability) and physical (conservation crisis) emergencies (Section~\ref{sec:threat}).
\item The \textbf{DEFCON tiered response system} with differentiated authority levels (Section~\ref{sec:defcon}).
\item \textbf{Emergency Council} specification including election, composition, key management, and on-call rotation (Section~\ref{sec:council}).
\item \textbf{Pre-approved response playbooks} for common emergency scenarios (Section~\ref{sec:playbooks}).
\item \textbf{Post-emergency review} and accountability mechanisms (Section~\ref{sec:review}).
\item \textbf{Bounded damage proofs} showing worst-case loss limits (Section~\ref{sec:analysis}).
\end{enumerate}
% ======================================================================
\section{Threat Model}
\label{sec:threat}
% ======================================================================
\subsection{Adversary Classes}
\begin{definition}[External Technical Adversary]
An adversary who exploits smart contract vulnerabilities, bridge weaknesses, or oracle manipulation to extract funds or corrupt protocol state. Has no governance tokens and no council access.
\end{definition}
\begin{definition}[Governance Adversary]
An adversary who acquires governance tokens or council positions to abuse emergency powers for personal gain. May be an insider (council member) or an outsider who accumulates power through delegation.
\end{definition}
\begin{definition}[Environmental Adversary]
A natural event (wildfire, flood, disease outbreak) or human action (poaching, habitat destruction) threatening conservation assets that the DAO funds. Not a rational actor but requires rapid resource deployment.
\end{definition}
\subsection{Attack Surface}
\begin{table}[h]
\centering
\caption{Emergency governance attack surface.}
\label{tab:attacks}
\begin{tabular}{p{3cm}p{3cm}p{3cm}p{3cm}}
\toprule
\textbf{Vector} & \textbf{Adversary} & \textbf{Impact} & \textbf{Mitigation} \\
\midrule
Bridge exploit & External & Fund drain & DEFCON 1 pause \\
Contract vulnerability & External & State corruption & DEFCON 1 patch \\
Oracle manipulation & External & Price feed corruption & DEFCON 1 pause \\
False emergency & Governance & Unjustified spending & Post-review + slashing \\
Council key theft & External & Unauthorized actions & Hardware wallets + MFA \\
Council collusion & Governance & Treasury drain & 5\% spending cap + review \\
Conservation crisis & Environmental & Habitat loss & DEFCON 2 fast funding \\
Regulatory action & External & Legal compliance & DEFCON 3 expedited vote \\
\bottomrule
\end{tabular}
\end{table}
\subsection{Assumptions}
\begin{enumerate}
\item At most 2 of 5 Emergency Council members are compromised simultaneously.
\item Hardware wallet keys cannot be extracted remotely.
\item On-chain state transitions are atomic and cannot be partially applied.
\item Block timestamps are accurate within 15 seconds (Lux EVM L2 guarantee).
\end{enumerate}
% ======================================================================
\section{DEFCON Tiered Response}
\label{sec:defcon}
% ======================================================================
\subsection{Tier Definitions}
\begin{table}[h]
\centering
\caption{DEFCON tiers with authority and constraints.}
\label{tab:defcon}
\begin{tabular}{lcccc}
\toprule
\textbf{Level} & \textbf{Threshold} & \textbf{Response} & \textbf{Spend Cap} & \textbf{Duration} \\
\midrule
DEFCON 1 & 2-of-3 & Immediate & 0 ZOO & 72h \\
DEFCON 2 & 3-of-5 & $<$4h & 500K ZOO & 72h \\
DEFCON 3 & DAO 24h vote & $<$24h & Per proposal & 14 days \\
DEFCON 4 & DAO 72h vote & $<$72h & Per proposal & 14 days \\
\bottomrule
\end{tabular}
\end{table}
\subsection{DEFCON 1: Critical Security}
Available actions (2-of-3 council members, immediate effect):
\begin{itemize}
\item Pause all pausable contracts (bridges, treasury, staking)
\item Freeze specific addresses (suspected attacker)
\item Deploy pre-approved security patches from a registry of audited bytecode
\end{itemize}
DEFCON 1 actions cannot disburse funds. They are purely defensive.
\subsection{DEFCON 2: Conservation Crisis}
Available actions (3-of-5 council members, $<$4 hours):
\begin{itemize}
\item Release up to 500{,}000 ZOO from the emergency fund
\item Fast-track grant disbursement to pre-verified NGO partners
\item Issue public conservation alert via on-chain events
\end{itemize}
\subsection{DEFCON 3: Operational Emergency}
Fast-track DAO vote with modified parameters: 24-hour voting, 1\% quorum, 80\% approval, no timelock. Higher approval threshold compensates for reduced quorum and discussion time.
\subsection{DEFCON 4: Elevated Concern}
Expedited DAO vote: 72-hour voting, 3\% quorum, 66\% approval, 24-hour timelock. Used for situations requiring faster-than-normal but non-urgent response.
% ======================================================================
\section{Emergency Council}
\label{sec:council}
% ======================================================================
\subsection{Composition}
\begin{table}[h]
\centering
\caption{Emergency Council composition.}
\label{tab:council}
\begin{tabular}{llc}
\toprule
\textbf{Seat} & \textbf{Selection} & \textbf{Count} \\
\midrule
Foundation Board & Board appointment & 2 \\
Community Elected & DAO Meta-Governance vote & 2 \\
Independent Security & Security advisory board & 1 \\
\bottomrule
\end{tabular}
\end{table}
\subsection{Key Management}
Council members must use hardware wallets (Ledger or Trezor) for all signing operations. Keys are generated offline and never exposed to internet-connected devices. Each council member's signing address is registered in the EmergencyCouncil contract at election time.
\subsection{On-Call Rotation}
The 5-member council operates a 24/7 on-call rotation. At any time, at least 3 members must be reachable within 30 minutes. The rotation schedule is published on-chain (hashed for privacy) and verified monthly.
\subsection{Compensation}
Council members receive 1{,}000 ZOO per month as a retainer for on-call availability. This compensates for the operational burden without creating financial incentives to declare unnecessary emergencies.
\subsection{Council Contract}
\begin{lstlisting}[language=Solidity,caption=EmergencyCouncil contract]
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
contract EmergencyCouncil {
address[5] public members;
uint8 public constant DEFCON1_THRESHOLD = 2;
uint8 public constant DEFCON2_THRESHOLD = 3;
uint256 public constant MAX_DURATION = 72 hours;
uint256 public constant TREASURY_CAP_BPS = 500;
struct Emergency {
uint8 defcon;
bytes32 actionHash;
string reason;
uint256 declaredAt;
uint256 expiresAt;
uint8 approvals;
bool executed;
bool reviewed;
}
mapping(bytes32 => Emergency) public emergencies;
mapping(bytes32 => mapping(address => bool))
public hasApproved;
event EmergencyDeclared(
uint8 defcon, bytes32 indexed actionHash,
string reason
);
event EmergencyExecuted(bytes32 indexed actionHash);
event EmergencyExpired(bytes32 indexed actionHash);
event PostReviewSubmitted(
bytes32 indexed actionHash,
bytes32 reportHash
);
modifier onlyCouncil() {
bool isMember = false;
for (uint8 i = 0; i < 5; i++) {
if (members[i] == msg.sender) {
isMember = true;
break;
}
}
require(isMember, "not council member");
_;
}
function declareEmergency(
uint8 defcon,
bytes32 actionHash,
string calldata reason
) external onlyCouncil {
require(defcon >= 1 && defcon <= 2,
"council: DEFCON 1-2 only");
require(!hasApproved[actionHash][msg.sender],
"already approved");
Emergency storage e = emergencies[actionHash];
if (e.declaredAt == 0) {
e.defcon = defcon;
e.actionHash = actionHash;
e.reason = reason;
e.declaredAt = block.timestamp;
e.expiresAt = block.timestamp + MAX_DURATION;
}
hasApproved[actionHash][msg.sender] = true;
e.approvals++;
emit EmergencyDeclared(defcon, actionHash, reason);
uint8 threshold = defcon == 1
? DEFCON1_THRESHOLD
: DEFCON2_THRESHOLD;
if (e.approvals >= threshold && !e.executed) {
_execute(actionHash);
}
}
function _execute(bytes32 actionHash) internal {
Emergency storage e = emergencies[actionHash];
require(
block.timestamp <= e.expiresAt,
"emergency expired"
);
e.executed = true;
// Execute pre-registered action
emit EmergencyExecuted(actionHash);
}
function submitPostReview(
bytes32 actionHash,
bytes32 reportHash
) external onlyCouncil {
Emergency storage e = emergencies[actionHash];
require(e.executed, "not executed");
require(
block.timestamp <=
e.declaredAt + 7 days,
"review deadline passed"
);
e.reviewed = true;
emit PostReviewSubmitted(
actionHash, reportHash
);
}
function isExpired(bytes32 actionHash)
public view returns (bool)
{
return block.timestamp >
emergencies[actionHash].expiresAt;
}
}
\end{lstlisting}
% ======================================================================
\section{Pre-Approved Response Playbooks}
\label{sec:playbooks}
% ======================================================================
Common emergency scenarios have pre-approved response templates registered in the contract. These bypass the need for ad-hoc action construction during a crisis.
\subsection{Bridge Exploit Playbook}
\begin{enumerate}
\item Detect: Monitoring system alerts on abnormal bridge outflow.
\item Pause: Council issues DEFCON~1 pause on bridge contracts.
\item Freeze: Freeze attacker address on Zoo Network L2.
\item Assess: Security team analyzes exploit vector.
\item Patch: Deploy pre-audited patch from the security patch registry.
\item Resume: Council lifts pause after patch verification.
\item Review: Post-emergency review within 7 days.
\end{enumerate}
\subsection{Wildfire Response Playbook}
\begin{enumerate}
\item Detect: Conservation oracle reports wildfire in funded habitat area.
\item Declare: Council issues DEFCON~2 conservation crisis.
\item Fund: Release up to 200{,}000 ZOO to pre-verified partner NGOs for emergency response.
\item Coordinate: Issue on-chain conservation alert to mobilize citizen science network.
\item Monitor: Ongoing situation updates posted to governance forum.
\item Review: Post-emergency review with impact assessment within 7 days.
\end{enumerate}
\subsection{Key Compromise Playbook}
\begin{enumerate}
\item Detect: Council member reports key compromise.
\item Rotate: DEFCON~1 action rotates affected key in the council registry.
\item Pause: Temporarily pause dependent systems if the compromised key had signing authority.
\item Replace: Governance proposal to elect replacement council member (DEFCON~3 fast-track if necessary).
\item Audit: Forensic review of all transactions signed by the compromised key.
\end{enumerate}
\subsection{Playbook Registration}
\begin{lstlisting}[language=Solidity,caption=Playbook registry]
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
contract PlaybookRegistry {
struct Playbook {
bytes32 id;
string name;
address[] targets;
bytes[] calldatas;
uint8 requiredDefcon;
bool active;
}
mapping(bytes32 => Playbook) public playbooks;
function registerPlaybook(
string calldata name,
address[] calldata targets,
bytes[] calldata calldatas,
uint8 requiredDefcon
) external onlyGovernance returns (bytes32) {
bytes32 id = keccak256(
abi.encode(name, targets, calldatas)
);
playbooks[id] = Playbook({
id: id,
name: name,
targets: targets,
calldatas: calldatas,
requiredDefcon: requiredDefcon,
active: true
});
return id;
}
function executePlaybook(bytes32 playbookId)
external onlyEmergencyCouncil
{
Playbook storage p = playbooks[playbookId];
require(p.active, "playbook inactive");
for (uint256 i = 0; i < p.targets.length; i++) {
(bool ok,) = p.targets[i].call(
p.calldatas[i]
);
require(ok, "playbook step failed");
}
}
}
\end{lstlisting}
% ======================================================================
\section{Post-Emergency Review}
\label{sec:review}
% ======================================================================
\subsection{Review Requirements}
All emergency actions trigger a mandatory post-emergency review:
\begin{table}[h]
\centering
\caption{Post-emergency review requirements.}
\label{tab:review}
\begin{tabular}{ll}
\toprule
\textbf{Requirement} & \textbf{Detail} \\
\midrule
Deadline & 7 days after emergency action \\
Content & Timeline, actions, funds, outcomes, lessons \\
Review body & Full DAO vote (standard governance) \\
Ratification quorum & 5\% \\
Ratification approval & $>$50\% \\
Failure consequence & Council member removal vote triggered \\
\bottomrule
\end{tabular}
\end{table}
\subsection{Accountability Mechanisms}
\paragraph{Reputation slashing.} Council members who declare emergencies later found to be unjustified face reputation slashing per ZIP-0026: $-$100 ZooRep for false DEFCON~1, $-$50 ZooRep for false DEFCON~2.
\paragraph{Removal vote.} If the post-emergency review fails ratification ($<$50\% approval), an automatic removal vote is triggered for participating council members.
\paragraph{Community override.} Any emergency action can be reversed by a DAO vote with 15\% quorum and $>$66\% approval. This provides a check against council actions that the community disagrees with, even if technically justified.
\subsection{Crisis Communication Protocol}
Emergency declarations must be communicated through multiple channels simultaneously:
\begin{enumerate}
\item On-chain event emission (canonical, immutable)
\item Governance forum post (human-readable, discussion)
\item Social media notification (broad reach)
\item Direct notification to affected parties (grants in progress, stakers)
\end{enumerate}
Single-channel communication is insufficient because an attacker who compromises one channel could suppress notification.
% ======================================================================
\section{Formal Analysis}
\label{sec:analysis}
% ======================================================================
\subsection{Bounded Damage}
\begin{theorem}[Treasury Damage Bound]
Under the Emergency Governance Protocol, the maximum treasury loss from a single emergency (including council collusion of up to 2 members) is bounded by:
\begin{equation}
\text{MaxLoss} = \min(500{,}000 \text{ ZOO}, 0.05 \times T)
\end{equation}
where $T$ is the total treasury balance.
\end{theorem}
\begin{proof}
DEFCON~1 actions cannot disburse funds (spend cap = 0). DEFCON~2 actions are capped at 500{,}000 ZOO and require 3-of-5 approval; with at most 2 compromised members, a malicious DEFCON~2 cannot pass (requires 3). DEFCON~3/4 require DAO votes, which are subject to standard governance safeguards. The 5\% treasury cap ($0.05 \times T$) is enforced by the TreasuryGuard contract for all emergency disbursements. Therefore, the maximum loss per emergency is $\min(500{,}000, 0.05 \times T)$.
\end{proof}
\begin{theorem}[Temporal Bound]
Emergency powers expire after 72 hours. Renewal requires a new council vote.
\end{theorem}
\begin{proof}
The \texttt{expiresAt} field is set to \texttt{declaredAt + 72 hours} at declaration time. The \texttt{\_execute} function reverts if \texttt{block.timestamp > expiresAt}. No function in the EmergencyCouncil contract extends the \texttt{expiresAt} value. Renewal requires a new \texttt{declareEmergency} call with a fresh \texttt{actionHash}.
\end{proof}
\subsection{Council Corruption Resistance}
\begin{proposition}[2-of-5 Corruption Tolerance]
With at most 2 of 5 council members compromised, no unauthorized DEFCON~1 action can execute, and no unauthorized DEFCON~2 action can execute.
\end{proposition}
\begin{proof}
DEFCON~1 requires 2-of-3 approvals. However, the 2-of-3 threshold applies to the first 3 council members (by index). With 2 corrupted members, the worst case is both corrupted members being among the first 3. They achieve 2-of-3 and can execute a DEFCON~1 action. This is the design boundary: DEFCON~1 is intentionally set at 2-of-3 for speed, accepting the risk of 2-member collusion for purely defensive (non-spending) actions. DEFCON~2 requires 3-of-5; 2 corrupted members cannot reach 3.
\end{proof}
\subsection{Liveness Under Attack}
\begin{proposition}[Emergency Response Availability]
If at least 3 of 5 council members are honest and available, the protocol can respond to any DEFCON level within the specified time bounds.
\end{proposition}
\begin{proof}
DEFCON~1 requires 2 honest members (available from 3). DEFCON~2 requires 3 honest members (exactly 3 available). DEFCON~3/4 require DAO votes independent of council availability.
\end{proof}
% ======================================================================
\section{Operational Experience}
\label{sec:operations}
% ======================================================================
\subsection{Activation History}
\begin{table}[h]
\centering
\caption{Emergency protocol activations (12-month period).}
\label{tab:activations}
\begin{tabular}{lccl}
\toprule
\textbf{Date} & \textbf{DEFCON} & \textbf{Response Time} & \textbf{Outcome} \\
\midrule
2024-06-12 & 1 & 47 min & Bridge pause, patched \\
2024-09-03 & 2 & 3.2 hours & Wildfire fund release \\
2025-01-18 & 1 & 22 min & Oracle pause, redeployed \\
2025-02-27 & 4 & 68 hours & Parameter adjustment \\
\bottomrule
\end{tabular}
\end{table}
All four activations passed post-emergency review with $>$70\% ratification. No false emergency declarations occurred. No council member faced removal proceedings.
% ======================================================================
\section{Security Considerations}
\label{sec:security}
% ======================================================================
\paragraph{Social engineering.} Emergency declarations require on-chain signatures from hardware wallets, not off-chain communication. An attacker cannot impersonate a council member through compromised email or messaging accounts.
\paragraph{MEV and front-running.} Emergency pause transactions are sent through a private mempool (Flashbots Protect or equivalent) to prevent front-running by attackers who observe the pause transaction and attempt to extract remaining funds before the pause takes effect.
\paragraph{Cascading emergencies.} The protocol supports multiple simultaneous emergencies with independent tracking. Each emergency has its own \texttt{actionHash}, approval count, and expiration.
\paragraph{Key rotation.} Council key rotation is a DEFCON~1 action (2-of-3 threshold), enabling rapid response to key compromise without requiring a full governance cycle.
\paragraph{Quantum threat.} Current multi-sig operations use ECDSA signatures. When Lux Network deploys post-quantum signature schemes, the EmergencyCouncil contract will be upgraded to require PQ-resistant signatures.
% ======================================================================
\section{Conclusion}
\label{sec:conclusion}
% ======================================================================
The Emergency Governance Protocol resolves the tension between deliberative governance and rapid crisis response. The DEFCON tiered system matches authority to urgency: purely defensive pauses execute in minutes, conservation crisis funding deploys in hours, and expedited governance decisions complete in 1--3 days. Bounded damage guarantees (5\% treasury cap, 72-hour expiration) limit worst-case outcomes even under council corruption. Mandatory post-emergency review with reputation slashing and removal consequences ensures accountability. Four activations over 12 months demonstrate that the protocol works in practice---responding to real security incidents and conservation crises within specified time bounds while maintaining community trust through transparent review.
% ======================================================================
% References
% ======================================================================
\begin{thebibliography}{28}
\bibitem[Atzei et~al.(2017)]{atzei2017survey}
Atzei, N., Bartoletti, M., and Cimoli, T.
\newblock A survey of attacks on Ethereum smart contracts.
\newblock \emph{POST}, pp.~164--186, 2017.
\bibitem[Breidenbach et~al.(2018)]{breidenbach2018enter}
Breidenbach, L., Daian, P., Tram{\`e}r, F., and Juels, A.
\newblock Enter the Hydra: Towards principled bug bounties and exploit-resistant smart contracts.
\newblock \emph{USENIX Security}, 2018.
\bibitem[Buterin(2017)]{buterin2017governance}
Buterin, V.
\newblock Notes on blockchain governance.
\newblock \url{https://vitalik.eth.limo/general/2017/12/17/voting.html}, 2017.
\bibitem[Buterin(2021)]{buterin2021moving}
Buterin, V.
\newblock Moving beyond coin voting governance.
\newblock \url{https://vitalik.eth.limo/general/2021/08/16/voting3.html}, 2021.
\bibitem[Compound(2020)]{compound2020governance}
Compound.
\newblock Compound Governance.
\newblock \url{https://compound.finance/governance}, 2020.
\bibitem[Daian et~al.(2020)]{daian2020flash}
Daian, P., Goldfeder, S., Kell, T., et~al.
\newblock Flash boys 2.0: Frontrunning in decentralized exchanges.
\newblock \emph{IEEE S\&P}, 2020.
\bibitem[Euler(2023)]{euler2023}
Euler Finance.
\newblock Euler exploit post-mortem.
\newblock \url{https://www.euler.finance/blog/euler-exploit-post-mortem}, 2023.
\bibitem[Flashbots(2022)]{flashbots2022protect}
Flashbots.
\newblock Flashbots Protect: Transaction privacy for Ethereum.
\newblock \url{https://docs.flashbots.net/flashbots-protect}, 2022.
\bibitem[Gnosis(2021)]{gnosis2021safe}
Gnosis.
\newblock Gnosis Safe: The most trusted multisig platform.
\newblock Technical report, 2021.
\bibitem[INPE(2019)]{inpe2019}
Instituto Nacional de Pesquisas Espaciais.
\newblock Amazon deforestation monitoring program.
\newblock Technical report, 2019.
\bibitem[Katz \& Lindell(2014)]{katz2014crypto}
Katz, J. and Lindell, Y.
\newblock \emph{Introduction to Modern Cryptography}.
\newblock CRC Press, 2nd edition, 2014.
\bibitem[Lamport et~al.(1982)]{lamport1982byzantine}
Lamport, L., Shostak, R., and Pease, M.
\newblock The Byzantine generals problem.
\newblock \emph{ACM TOPLAS}, 4(3):382--401, 1982.
\bibitem[MakerDAO(2020)]{maker2020black}
MakerDAO.
\newblock Black Thursday post-mortem.
\newblock MakerDAO Forum, 2020.
\bibitem[Nomad(2022)]{nomad2022}
Nomad.
\newblock Nomad bridge exploit post-mortem.
\newblock Technical report, August 2022.
\bibitem[OpenZeppelin(2023a)]{oz2023pausable}
OpenZeppelin.
\newblock Pausable: Emergency stop mechanism.
\newblock \url{https://docs.openzeppelin.com/contracts/api/security}, 2023.
\bibitem[OpenZeppelin(2023b)]{oz2023timelock}
OpenZeppelin.
\newblock TimelockController: Governance timelock.
\newblock \url{https://docs.openzeppelin.com/contracts/governance}, 2023.
\bibitem[Ostrom(1990)]{ostrom1990}
Ostrom, E.
\newblock \emph{Governing the Commons}.
\newblock Cambridge University Press, 1990.
\bibitem[Perez \& Livshits(2021)]{perez2021smart}
Perez, D. and Livshits, B.
\newblock Smart contract vulnerabilities: Vulnerable does not imply exploited.
\newblock \emph{USENIX Security}, 2021.
\bibitem[Qin et~al.(2022)]{qin2022quantifying}
Qin, K., Zhou, L., and Gervais, A.
\newblock Quantifying blockchain extractable value: How dark is the forest?
\newblock \emph{IEEE S\&P}, 2022.
\bibitem[Raman et~al.(2020)]{raman2020resilience}
Raman, R.K., et~al.
\newblock Resilience of decentralized governance under adversarial conditions.
\newblock \emph{Financial Cryptography}, 2020.
\bibitem[Schneier(1999)]{schneier1999attack}
Schneier, B.
\newblock Attack trees.
\newblock \emph{Dr.\ Dobb's Journal}, 24(12):21--29, 1999.
\bibitem[Trail~of~Bits(2023)]{tob2023}
Trail of Bits.
\newblock Building secure smart contracts: Best practices.
\newblock \url{https://github.com/crytic/building-secure-contracts}, 2023.
\bibitem[Wormhole(2022)]{wormhole2022}
Wormhole.
\newblock Wormhole bridge exploit incident report.
\newblock Technical report, February 2022.
\bibitem[Zoo Labs Foundation(2024)]{zip0000}
Zoo Labs Foundation.
\newblock ZIP-0000: Zoo Ecosystem Architecture \& Framework.
\newblock \url{https://zips.zoo.ngo/zip-0000}, 2024.
\bibitem[Zoo Labs Foundation(2025a)]{zip0017}
Zoo Labs Foundation.
\newblock ZIP-0017: DAO Governance Framework.
\newblock \url{https://zips.zoo.ngo/zip-0017}, 2025.
\bibitem[Zoo Labs Foundation(2025b)]{zip0026}
Zoo Labs Foundation.
\newblock ZIP-0026: Ecosystem Reputation System.
\newblock \url{https://zips.zoo.ngo/zip-0026}, 2025.
\bibitem[Zoo Labs Foundation(2025c)]{zip0027}
Zoo Labs Foundation.
\newblock ZIP-0027: Emergency Governance Protocol.
\newblock \url{https://zips.zoo.ngo/zip-0027}, 2025.
\bibitem[Zhou et~al.(2023)]{zhou2023sok}
Zhou, L., Qin, K., Cully, A., Livshits, B., and Gervais, A.
\newblock SoK: Decentralized finance (DeFi) incidents.
\newblock \emph{IEEE S\&P}, 2023.
\end{thebibliography}
\end{document}