Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
LABS
Guides

Setting Up a Bug Bounty Program for Your Smart Contract

A technical guide for developers and project leads on establishing a structured, effective bug bounty program to crowdsource security reviews for smart contracts and dApps.
Chainscore © 2026
introduction
GUIDE

Setting Up a Bug Bounty Program for Your Smart Contract

A structured bug bounty program is a critical component of smart contract security, leveraging the expertise of ethical hackers to identify vulnerabilities before malicious actors can exploit them.

A smart contract bug bounty program is a formalized process where developers invite security researchers to find and report vulnerabilities in their code in exchange for monetary rewards. Unlike traditional audits conducted by a single firm, bug bounties create a continuous, crowdsourced security review. This taps into a global pool of talent with diverse skill sets, often uncovering edge cases and logic flaws that automated tools or a small audit team might miss. For high-value protocols managing significant funds, this layer of defense is non-negotiable. Platforms like Immunefi and HackerOne specialize in hosting Web3 bug bounties, providing the infrastructure for submission, triage, and payment.

Before launching your program, you must define its scope and rules clearly. The scope specifies which contracts are in-bounds for testing, typically your core protocol's production addresses on mainnet or a designated testnet replica. You must explicitly list out-of-scope contracts, like third-party dependencies or proxy admin contracts. The rules of engagement are equally critical: they must forbid disruptive testing (e.g., draining liquidity on mainnet), require researchers to keep findings confidential, and outline a safe testing environment. A well-defined scope prevents wasted effort and protects your live system from unintended disruption during testing.

Setting appropriate reward tiers is essential for attracting skilled researchers. Rewards should be commensurate with the severity of the vulnerability and the value of the assets protected. A common framework uses the Immunefi Vulnerability Severity Classification System, which categorizes bugs as Critical, High, Medium, or Low based on impact and likelihood. For example, a Critical bug allowing direct theft of user funds might have a bounty of up to 10% of the funds at risk, capped at a significant sum (e.g., $1M). Payouts must be transparent and timely to build trust with the security community. Clearly publishing these tiers on your program page sets clear expectations.

Technically preparing your project involves more than just deploying code. You must create a comprehensive documentation package for researchers. This includes:

  • Architecture overviews and technical specifications
  • Audit reports from prior engagements
  • Deployed contract addresses and ABIs
  • A dedicated testnet with faucets for ETH and tokens
  • A documented setup script to deploy the protocol locally Providing this material reduces the onboarding time for researchers and allows them to dive deeper into the logic, increasing the quality and depth of the submissions you receive. Consider this documentation a prerequisite for a successful program.

Once launched, you need a process for triaging incoming reports. Designate a security lead or small team responsible for initial assessment, communication with the researcher, and validation. Use the private reporting channel on your chosen platform. The triage process should: 1) Acknowledge receipt promptly, 2) Validate the bug's existence and severity, 3) Determine if it's a duplicate, and 4) Coordinate with developers for a fix. After a fix is deployed and verified, the bounty is paid. Publicly acknowledging the researcher (unless they opt for anonymity) and detailing the fixed vulnerability in a post-mortem enhances your protocol's credibility and security transparency.

A bug bounty is not a substitute for a professional audit or robust internal testing; it is a complementary, ongoing security measure. The most effective security posture employs a defense-in-depth strategy: formal verification, multiple audit rounds, thorough unit/integration testing, and then a public bug bounty. By establishing a clear, well-funded, and professionally managed program, you signal a serious commitment to security, incentivize the global white-hat community to work for you, and significantly strengthen the resilience of your smart contract system against real-world attacks.

prerequisites
SECURITY

Prerequisites for Launching a Program

Before launching a smart contract bug bounty program, you must establish a secure and transparent foundation. This involves defining scope, setting rewards, and preparing your code for public scrutiny.

The first prerequisite is a live, audited smart contract deployed to a public testnet or mainnet. A program launched for unaudited code is inefficient and potentially dangerous, as it may attract reports for known, low-level issues. A professional audit from a reputable firm like OpenZeppelin, Trail of Bits, or ConsenSys Diligence provides a baseline of security and signals to researchers that you are serious. Ensure the audit report is public and that you have addressed all critical and high-severity findings. This step filters out noise and allows whitehats to focus on novel, high-impact vulnerabilities.

You must clearly define the program scope and rules of engagement. This includes specifying the exact smart contract addresses in scope, the networks they are deployed on (e.g., Ethereum Mainnet, Arbitrum, Optimism), and any out-of-scope components like front-end websites or third-party dependencies. The rules should explicitly forbid testing on mainnet with real funds, prohibit denial-of-service attacks, and require ethical disclosure. Platforms like Immunefi and HackerOne provide templates, but your rules must be tailored to your specific protocol. Ambiguity here leads to disputes and wasted effort for both your team and security researchers.

Establish a transparent vulnerability severity classification system and a corresponding reward structure. The Common Vulnerability Scoring System (CVSS) or the simplified Immunefi Vulnerability Severity Classification System are industry standards. You must map each severity level (e.g., Critical, High, Medium, Low) to a specific bounty reward, typically in USD value paid in a stablecoin or your native token. For a credible program, Critical bug bounties for major DeFi protocols often start at $50,000 and can exceed $1,000,000. The reward schedule must be published publicly to incentivize top-tier researchers.

Prepare your internal incident response and triage process. Designate a dedicated security lead or team who will monitor the bug bounty platform, validate incoming reports, and communicate with researchers. This team must be able to understand complex exploit scenarios, reproduce issues on a forked testnet (using tools like Foundry or Hardhat), and assess their impact swiftly. You should have a pre-defined process for escalating validated critical bugs to your development team for an emergency patch and a communication plan for coordinating any necessary upgrades or pauses to the protocol.

Finally, ensure you have the budget and multisig infrastructure to pay rewards promptly. The funds for bounties should be held in a secure, transparent wallet, often a multi-signature Gnosis Safe with known team members or trusted third parties as signers. Delayed payments damage your reputation in the security community. Additionally, consider setting aside a budget for a retroactive funding round to reward researchers who may have submitted valid bugs before the official program launch, a practice that has become common in the ecosystem.

defining-scope-rules
PROGRAM FOUNDATION

Step 1: Define Scope and Rules of Engagement

The first and most critical step in launching a bug bounty program is establishing a clear, comprehensive, and legally sound framework. This defines what researchers can test, how they should report findings, and what rewards they can expect.

A well-defined scope is your program's rulebook. It explicitly lists the in-scope and out-of-scope assets. For a smart contract program, this typically includes the deployed contract addresses on mainnet and testnets (e.g., Ethereum, Arbitrum, Polygon), the project's website, and official APIs. Crucially, you must also list what is out-of-scope: third-party dependencies, any contracts on deprecated forks, social engineering attacks, and denial-of-service vectors that don't lead to fund loss. A vague scope leads to wasted researcher effort and disputes over report validity.

The Rules of Engagement (RoE) document the expected conduct and legal protections. This includes the safe harbor clause, which guarantees legal protection for researchers acting in good faith and following the rules. It should specify the reporting process, mandating use of a secure channel like the project's Immunefi or HackerOne page, and prohibit public disclosure before a fix is deployed. The RoE also sets the response time commitment (e.g., "We will acknowledge reports within 48 hours") and outlines the dispute resolution process for reward disagreements.

Your reward structure must be transparent and incentivize severity-based reporting. Follow a standardized framework like the Immunefi Vulnerability Severity Classification System. Define clear bounty tiers: Critical (e.g., direct loss of funds, theft of unclaimed yield), High (e.g., permanent freezing of funds), Medium (e.g., temporary freezing, griefing), and Low (e.g., state inconsistencies). Attach specific reward amounts or ranges (e.g., "Up to $100,000 for Critical issues") to each tier. For maximum clarity, provide examples of bugs that would qualify for each level.

Finally, publish these documents in an accessible, immutable location. The scope should be listed on your bug bounty platform page (Immunefi, HackerOne) and also referenced in a dedicated SECURITY.md file in your project's GitHub repository. This ensures researchers can easily find the rules. A clear, professional scope and RoE signal to the security community that you are serious, which attracts higher-quality submissions and builds essential trust before the first bug report is ever filed.

REWARD FRAMEWORK

Step 2: Establish Severity and Reward Tiers

A comparison of common severity classification frameworks and their typical bounty reward ranges for smart contract vulnerabilities.

Vulnerability CriteriaOWASP Risk Rating (Low)Immunefi Severity (Medium)Critical Protocol Impact (High/Critical)

Impact on Funds / Protocol

No direct loss, minor griefing

Theft of unclaimed yield, temporary freeze

Direct theft of user funds, permanent freeze

Example Vulnerability

Front-running with minimal profit

Logic error blocking specific user actions

Reentrancy, price oracle manipulation

Typical Bounty Reward

$1,000 - $10,000

$10,000 - $50,000

$50,000 - $250,000+

Time to Resolution SLA

30 days

14 days

< 7 days

Disclosure Policy

Public after fix

Coordinated disclosure

Immediate private report required

Payout Asset

Stablecoin or project token

Stablecoin or project token

Stablecoin (USDC/DAI) preferred

KYC Required for Payout

Maximum Reward (% of TVL)

Up to 0.1%

Up to 1.0%

choosing-platform
PLATFORM SELECTION

Step 3: Choose and Configure a Bounty Platform

Selecting the right platform is critical for managing submissions, payments, and security researcher communication. This step defines your program's operational workflow.

The primary choice is between using a managed platform like Immunefi or HackerOne, or building a custom, self-hosted solution. Managed platforms provide a turnkey system with a built-in community of security researchers, triage services, and payment infrastructure. For most projects, especially new ones, a managed platform reduces operational overhead significantly. Self-hosted solutions offer maximum control and customization but require you to handle marketing, submission management, and payment logistics yourself, which can be a substantial undertaking.

Key configuration parameters must be defined on your chosen platform. The most important is the scope, which explicitly lists the in-scope contracts (by address), dApps, and APIs, and crucially, what is out-of-scope. You must also set the reward structure, detailing bounty amounts for different severity levels (e.g., Critical, High, Medium) based on the CVSS framework. Clearly state the rules of engagement, including testing guidelines, prohibited actions (like frontrunning live trades), and the submission process. Platforms like Immunefi provide templates for these policies.

For a smart contract bounty, your scope configuration in a platform dashboard will typically require adding contract addresses and ABIs. For example, when setting up on Immunefi, you would navigate to your program's scope section and add entries for each chain and contract. A well-configured entry includes the contract address, network (e.g., Ethereum Mainnet, Arbitrum), and a link to the verified source code on a block explorer. This allows researchers to easily access and audit the correct code.

Payment terms must be transparently configured. Specify the currency for payouts (e.g., USDC, ETH, your project's native token) and the timeline for reward distribution after a vulnerability is validated. Many platforms use smart contract-based bounty vaults where funds are escrowed, providing proof of funds to researchers. You'll need to fund this vault according to your published maximum bounty amounts for each severity tier. This step is a strong trust signal to the security community.

Finally, integrate your program's existence into your project's public security documentation. Add a clear "Security" page to your documentation or website that links directly to your bounty platform page. This serves as the official channel for vulnerability disclosures and assures users and auditors that you have a formal process. Regularly update the scope as you deploy new contracts or upgrade existing ones to ensure researchers are always targeting the correct codebase.

secure-submission-process
OPERATIONAL SECURITY

Step 4: Create a Secure Submission and Triage Process

A structured process for receiving, validating, and prioritizing vulnerability reports is critical for program efficiency and researcher trust.

The submission portal is your program's front line. Use a dedicated, secure platform like Immunefi, HackerOne, or a self-hosted solution like Bugzilla or Jira with strict access controls. The portal must clearly outline submission requirements: a detailed proof-of-concept (PoC), the attack's impact, and the affected contract addresses and functions. Require researchers to submit via the portal only—never accept reports via Telegram, Discord DMs, or public channels, as this can lead to disclosure issues and social engineering attacks.

Upon receiving a report, the triage process begins. This involves a dedicated security engineer or triage team verifying the submission's validity and severity. The first step is to reproduce the bug using the provided PoC in a forked testnet environment (e.g., a local Hardhat fork of Mainnet). Assess the impact against your predefined severity classification matrix, typically based on the CVSS framework or platform-specific criteria (e.g., Immunefi's severity system). Critical bugs affecting fund loss or contract control must be escalated immediately.

Maintain clear, professional communication with the researcher throughout. Acknowledge receipt within 24-48 hours. Use the portal's messaging system for all discussions to maintain an audit trail. If a report is a duplicate, out of scope, or invalid, provide a clear, technical explanation. For valid reports, provide regular status updates (e.g., "Confirmed," "In Development," "Resolved"). This transparency is key to building long-term trust with the whitehat community.

For critical vulnerabilities, activate a pre-defined incident response plan. This should include steps to pause vulnerable contracts (if pausable), notify core developers and leadership, and begin patch development. Coordinate with the researcher on a disclosure timeline. A common practice is a 90-day coordinated disclosure period, giving your team time to develop, test, and deploy a fix before the researcher publicly discloses the issue, as outlined by Google's Project Zero.

Finally, document everything. The triage log—including the report, reproduction steps, internal discussions, fix commit hashes, and payout rationale—is essential for post-mortems, regulatory compliance, and demonstrating security diligence to your community and auditors. This structured process transforms raw bug reports into actionable security improvements.

essential-tools-resources
SECURITY

Essential Tools and Resources

A robust bug bounty program requires specialized tools for vulnerability disclosure, smart contract analysis, and incentivized testing. These resources help you structure payouts, automate triage, and engage with security researchers effectively.

06

Program Scope & Policy Template

Before launching, you must define clear rules. Your policy should specify:

  • In-scope and out-of-scope assets (e.g., only the core vault contracts, not the frontend).
  • Severity classification matrix (e.g., OWASP risk rating).
  • Proof of Concept requirements for submissions.
  • Safe harbor provisions to protect researchers acting in good faith.
  • Payout amounts per severity level, often pegged to a percentage of funds at risk.
BUG BOUNTY SETUP

Frequently Asked Questions

Common questions and troubleshooting for developers establishing a smart contract bug bounty program.

A smart contract bug bounty is a crowdsourced security initiative where developers offer rewards to independent security researchers (white-hat hackers) for discovering and responsibly disclosing vulnerabilities in their code. The process typically follows these steps:

  1. Program Scope: The project defines which contracts, repositories, and assets are in-scope for testing.
  2. Reward Tiers: A clear, public reward schedule is published, correlating payout amounts with the severity of the vulnerability (e.g., Critical, High, Medium).
  3. Submission & Triage: Researchers submit findings via a secure portal. The project's security team validates and triages each report.
  4. Remediation & Payout: Once a valid bug is confirmed and fixed, the researcher is paid the corresponding bounty. Platforms like Immunefi and HackerOne standardize this workflow for Web3 projects.

This model leverages the collective expertise of the global security community to identify risks before malicious actors can exploit them.

conclusion-next-steps
IMPLEMENTATION

Conclusion and Next Steps

Your bug bounty program is now live. This section outlines the operational workflow and how to build on your initial setup.

Launching your program is the beginning, not the end. The core of a successful bug bounty is a consistent and professional triage workflow. Establish a clear process for: receiving reports via your chosen platform (like Immunefi or HackerOne), acknowledging submissions within 24-48 hours, validating the vulnerability's severity and impact, and coordinating with your development team for a patch. Use a dedicated internal channel (e.g., a Slack/ Discord channel or project board) to track each report from submission to resolution, ensuring nothing falls through the cracks.

To maximize the program's value, you must actively engage with the security community. This means providing clear, constructive feedback to all researchers, even for invalid or duplicate reports. Publicly thank researchers in your disclosure notes and consider featuring them in a "Hall of Fame" on your security page. Participate in security forums and conferences. A program that is seen as responsive and respectful will attract more high-quality researchers, creating a virtuous cycle of improved security.

Finally, treat your bug bounty as a continuous feedback loop for your development lifecycle. Analyze the patterns in submitted reports: are certain vulnerability classes (e.g., reentrancy, access control flaws) appearing frequently? This data should directly inform your team's secure development training, the scope of your automated testing (like Slither or MythX), and the design of your pre-deployment audit checklist. The goal is to bake the lessons learned from external scrutiny back into your internal processes, progressively raising your security baseline with each resolved issue.

How to Set Up a Smart Contract Bug Bounty Program | ChainScore Guides