Code Monkey home page Code Monkey logo

protocol's Introduction

Reserve Protocol

The Reserve Protocol enables a class of token called RToken: self-issued tokens backed by a rebalancing basket of collateral. While the protocol enables any number of RTokens to be created, further discussion is limited to the characterization of a single RToken instance.

Overview

RTokens can be minted by depositing a basket of collateral tokens, and redeemed for the basket as well. Thus, an RToken will tend to trade at the market value of the entire basket that backs it, as any lower or higher price could be arbitraged.

The definition of the issuance/redemption basket is set dynamically on a block-by-block basis with respect to a reference basket. While the RToken often does its internal calculus in terms of a single unit of account (USD), what constitutes appreciation is entirely a function of the reference basket, which is a linear combination of reference units.

RTokens can be over-collateralized, which means that if any of their collateral tokens default, there's a pool of value available to make up for the loss. RToken over-collateralization is provided by Reserve Rights (RSR) holders, who may choose to stake their RSR on an RToken instance. Staked RSR can be seized in the case of a default, in a process that is entirely mechanistic based on on-chain price-feeds, and does not depend on governance votes or human judgment.

But markets do not over-collateralize holders for free. In order to incentivize RSR holders to stake in an RToken instance, each RToken instance can choose to offer an arbitrary portion of its revenue to be directed towards its RSR over-collateralization pool. This encourages staking in order to provision over-collateralization.

As with any smart contract application, the actual behavior may vary from the intended behavior. It's safest to observe an application in use for a long period of time before trusting it to behave as expected. This overview describes its intended behavior.

For a much more detailed explanation of the economic design, including an hour-long explainer video (!) see the Reserve website.

Further Documentation

  • Development Environment: Setup and usage of our dev environment. How to compile, autoformat, lint, and test our code.
    • Testing with Echidna: Notes so far on setup and usage of Echidna (which is decidedly an integration-in-progress!)
    • Deployment: How to do test deployments in our environment.
  • System Design: The overall architecture of our system, and some detailed descriptions about what our protocol is intended to do.
  • Pause and Freeze States: An overview of which protocol functions are halted in the paused and frozen states.
  • Deployment Variables A detailed description of the governance variables of the protocol.
  • Our Solidity Style: Common practices, details, and conventions relevant to reading and writing our Solidity source code, especially where those go beyond standard practice.
  • Writing Collateral Plugins: An overview of how to develop collateral plugins and the concepts / questions involved.
  • Building on Top: How to build on top of Reserve, including information about long-lived fork environments.
  • MEV: A resource for MEV searchers and others looking to interact with the deployed protocol programmatically.
  • Rebalancing Algorithm: Description of our trading algorithm during the recollateralization process
  • Changelog: Release changelog

Mainnet Addresses (v3.4.0)

Implementation Contracts Address
tradingLib 0xa54544C6C36C0d776cc4F04EBB847e0BB3A11ea2
facade 0x2C7ca56342177343A2954C250702Fd464f4d0613
facadeWriteLib 0xDf73Cd789422040182b0C24a8b2C97bbCbba3263
facadeWrite 0x1D94290F82D0B417B088d9F5dB316B11C9cf220C
deployer 0x2204EC97D31E2C9eE62eaD9e6E2d5F7712D3f1bF
rsrAsset 0x591529f039Ba48C3bEAc5090e30ceDDcb41D0EaA
main 0x24a4B37F9c40fB0E80ec436Df2e9989FBAFa8bB7
gnosisTrade 0x030c9B66Ac089cB01aA2058FC8f7d9baddC9ae75
dutchTrade 0x971c890ACb9EeB084f292996Be667bB9A2889AE9
assetRegistry 0xbF1C0206de440b2cF76Ea4405e1DbF2fC227a463
backingManager 0x20C801869e578E71F2298649870765Aa81f7DC69
basketHandler 0xeE7FC703f84AE2CE30475333c57E56d3A7D3AdBC
broker 0x62BD44b05542bfF1E59A01Bf7151F533e1c9C12c
distributor 0x44a42A0F14128E81a21c5fc4322a9f91fF83b4Ee
furnace 0x845B8b0a1c6DB8318414d708Da25fA28d4a0dc81
rsrTrader 0xc60a7Cd6fce24d0c3637A1dCBC8B0f9A9BFF6a7c
rTokenTrader 0xc60a7Cd6fce24d0c3637A1dCBC8B0f9A9BFF6a7c
rToken 0x784955641292b0014BC9eF82321300f0b6C7E36d
stRSR 0xE433673648c94FEC0706E5AC95d4f4097f58B5fb

The DeployerRegistry, which contains a link to all official releases via their Deployer contracts, can be found here.

Deployed collateral plugin addresses and their configuration parameters can be found here.

Parallel Prototypes

We have a p0 and p1 implementation for each contract in our core system. The p0 version is our specification prototype, and is intended to be as easy as possible to understand. The p1 version should behave identically, except that it employs substantial optimizations and more complicated algorithms in order to achieve lower gas costs.

We implement and maintain both of these systems in the name of correctness. Implementing p0 helps us to specify the exact intended behavior of the protocol without needing to deal simultaneously with gas optimization; maintaining equivalent behavior of both serves as a substantial extra form of testing. The behavior of each contract in p1 should be identical to the behavior of the corresponding contract in p0, so we can perform differential testing between them - checking that they behave identically, both in our explicit tests and in arbitrary randomized tests.

We thought p0 and p1 would end up being a lot more different than they ended up being. For the most part the contracts only really differ for StRSR.sol, and a little for RToken.sol.

Properties of P0

P0 implements our "abstract" economic protocol; it should have equivalent observable behavior to P1, but be expressed just as clearly as we can manage it in Solidity. In several places, we achieve that clarity by forgoing any attempt to be realistic to deploy to Ethereum.

  • Optimized for obviousness and clarity of expression
  • No constraints on execution speed or gas costs
  • State is fully normalized whenever practical

Properties of P1

P1 is the production version of the economic protocol.

  • Upgradable
  • Optimized for gas costs
  • No function call needs more than O(lg N) time or space, and it's O(1) where possible.
    • Caveat: a function might be O(k), where k is the number of registered Assets or Collateral tokens; however, we take great care to make those loops efficient, and to avoid O(k^2) behavior!
  • No user is ever forced to pay gas to process other users' transactions.

Repository Structure

contracts holds our smart contracts:

  • p0 and p1 each contain an entire implementations of our core protocol. p0 is as easy as possible to understand; p1 is our gas-efficient system to deploy in production.
  • The core protocol requires a plugin contract for each asset it handles and each auction platform it can use. plugins contains our initial implementations of these (plugins/assets, plugins/trading), as well as mock implementations of each asset and auction platform that we're using for testing purposes (plugins/mocks).
  • interfaces contains the contract interfaces for all of those implementations.

test holds our Typescript system tests, driven through Hardhat.

The less-central folders in the repository are dedicated to project management, configuration, and other ancillary details:

  • Most of the top-level files are various forms of project-level configuration
  • common: Shared utility types, methods, and constants for testing in TypeScript
  • tasks: Hardhat tasks
  • scripts: Hardhat scripts
  • types: Typescript annotations; currently just export interface Address {}

Types of Tests

Unit/System Tests

  • Driven by hardhat test
  • Addressed by yarn test:unit
  • Checks for expected behavior of the system.
  • Can run the same tests against both p0 and p1
  • Uses contract mocks, where helpful to predict component behavior

Target: Full branch coverage, and testing of any semantically-relevant situations

End-to-End Tests

  • Driven by hardhat test
  • Addressed by yarn test:integration
  • Uses mainnet forking
  • Can run the same tests against both p0 and p1
  • Tests all needed plugin contracts, contract deployment, any migrations, etc.
  • Mock out as little as possible; use instances of real contracts

Target: Each integration we plan to deploy behaves correctly under all actually-anticipated scenarios.

Property Testing

Located in fuzz branch only.

  • Driven by Echidna
  • Asserts that contract invariants and functional properties of contract implementations hold for many executions
  • Particular tests may be either particular to p0, particular to p1, or generic across both (by relying only on their common interface)

Target: The handful of our most depended-upon system properties and invariants are articulated and thoroughly fuzz-tested. Examples of such properties include:

  • Unless the basket is switched (due to token default or governance) the protocol always remains fully-collateralized.
  • Unless the protocol is frozen, RToken holders can always redeem

Contributing

If you would like to contribute, you'll need to configure a secret in your fork repo in order for our integration tests to pass in CI. The name of the secret should ALCHEMY_MAINNET_KEY and it should be equal to the suffix portion of the full URL.

Usage: https://eth-mainnet.alchemyapi.io/v2/${{ secrets.ALCHEMY_MAINNET_KEY }}

To get setup with tenderly, install the tenderly cli. and login with tenderly login --authentication-method access-key --access-key {your_access_key} --force.

Responsible Disclosure

See: Immunefi

External Documentation

Video overview

protocol's People

Contributors

0xceletia avatar akshatmittal avatar andreid avatar coffiasd avatar cyrusofeden avatar dsergiu avatar fiddlemath avatar gjaldon avatar jankjr avatar jeremyschlatter avatar julianmrodri avatar kevinmoll-ls avatar larrythecucumber321 avatar lcamargof avatar omahs avatar parizval avatar pmckelvy1 avatar tbrent avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

protocol's Issues

Collateral Plugin - Notional - nTokens | $3,000

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - BendDAO - Supplied ETH | $1,500

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Grand Prize: Stablecoin Defi Innovation

Prize Title

Grand Prize: Stablecoin Defi Innovation

Prize Bounty

1st Place: $50k (25% USDC 75% RSR)

2nd Place: $30k (25% USDC 75% RSR)

3rd Place: $20k (25% USDC 75% RSR)

Challenge Description

Reserve Protocol is a permissionless platform for anyone to build, deploy and govern asset-backed stablecoins with shared DeFi yield and backstop-insurance. We think the future could host a variety of stablecoins each with different “jobs to be done.” Eventually, there could arise a global reserve currency that retains its value indefinitely, is not too volatile, and is outside the fumbling of geo-political and big tech manipulation.

Do you have a view on how the future reserve currency of the world should work with existing defi infrastructure? Or for a cool new thing that can now exist because of the Reserve Protocol? Or something that you expect to be useful to others building or actors in the Reserve ecosystem?

Yes? Then read on!

Want to create a product on the platform? Here’s some things to think about:

At Reserve, we see our new protocol as a platform for people to launch products and even businesses on. So go ahead, build and pitch your product idea. Come up with a clever, catchy brand. Figure out the economics for how this can be sustainable for this system, and maybe even for you as a builder. Build new collateral plugins or leverage existing one. Fork the [Register.app](http://register.app/)[Register.app](https://register.app/) repo and create a custom website and interface to mint it, redeem it, and stake/unstake RSR.

Looking for some inspiration? Here are a few financial products that could be interesting:

  1. Decentralized High Yield Savings Account
    Currently most crypto savings products are offered by centralized players, but as the trust in centralized players continues to deteriorate, users will look for decentralized alternatives. There is an opportunity to create the leading on-chain high yield savings product. The creator of this product could create its own on-chain savings product, fully backed by a custom basket of yield generating collateral, and then split the yield between the token holders, insurance providers, and the creator.

  2. Branded Loyalty Dollar
    Loyalty dollars are extremely common in our society today, with one of the most recognizable example being the Starbucks loyalty program. The way current loyalty currencies are set up, enabling such a program ends up being a cost for the business, as they need to pay Visa or Mastercard to enable this functionality. By using Reserve to create this branded stablecoin, the business could choose to direct the underlying yield to themselves, in turn resulting in revenue generation for the business.

  3. Crypto ETF Product
    The Reserve Protocol makes it easy to bundle together various yield generating collateral assets to create a customized financial product, while utilizing an insurance backstop and fully on-chain transparency to protect users. This functionality is perfect for creating crypto ETF, as the deployer can choose their custom basket of underlying assets, and even using yield generating assets to generate revenue.

When designing your defi product, here are some things to consider:

Should there be a flywheel that builds up treasury tokens for increased voting power in defi? Should it instead fund marketing operations? How much AUM and revenue is needed to do that?

What is the “risk / reward” profile of this token? Is it high yield, high risk? Low yield, low risk? Something else? Do the collateral plugins exist? Do they need to be written?

This is for you to decide and invent. Feel free to leverage any and all content we’ve created for inspiration or just use your team’s own 🧠.

Want to create a tool for the ecosystem? Here’s some things to think about:

There are two main constituents in our ecosystem: 1) governors / stakers and 2) RToken holders. These groups have some similar, but many different needs and potential pain points.

There are also other smaller but no less critical roles in the ecosystem: Gaurdians, Pausers, “economic designers”. Economic designers might need to know more than a typical yield-farmer: other risk factors, how those interplay and overlap with other types of collateral, etc. Pausers and Gaurdians need to be on-call with varying SLAs and be able to make fairly quick decisions based on data that is not at their fingertips.

Submission Requirements

  • Links to implementation repositories (github, gitlab, etc). Include in that repository:
    • Project description
    • Links to live project, if applicable (recommended)
    • Demo Video

Judging Criteria for your Creation

Our single overriding criterion for judging submissions is the importance of your project to the overall Reserve ecosystem, as determined by the Reserve judges.

The bigger this thing could make the overall ecosystem, the more excited we will be about it. “Importance” is admittedly vague, but is composed mostly of the following subcriteria:

  • Completeness of project.
  • Anticipated usefulness of project (i.e. viability for a product).
  • Safety of project to all constituents.
  • Quality of project (code, design, economics).

Winner Announcement Date

Two weeks following the end of the hackathon (Jan 6, 2023).

To accept the prize, winners will need to complete and sign one of the following on Docusign:

W-9 (for US citizen/resident or company)
W-8BEN (for non-US person)
W-8BEN-E (for non-US company/entity)
We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - RibbonFinance - V2 Vaults | $3,000

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Stargate - USDC/USDT/ETH Pools | $1,500

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Uniswap V2 | $7,000

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Compound - v3 | $3,000

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Bancor - V3 | $1,500

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Bancor - v2.1 | $1,500

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Morpho - Compound | $1,500

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Frigg.eco - Hydro bonds | $1,500

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - BadgerDAO - Vaults | $3,000

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Clearpool - Each permissionless pool | $3,000

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Frax Finance - Fraxlend Pools | $3,000

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Lido - stETH | $3,000

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Research & Create Content (Essay or Video)

Prize Title

Research & Create Content (Essay or Video)

Prize Bounty

  • 1st place will receive $3,000 USDC, determined by judges
  • 2nd place will receive $2,000 USDC, determined by judges
  • 3rd place will receive $1,000 USDC, determined by judges
  • All other completed submissions meeting the requirements and ranking in the top 50% by community quadratic voting will receive $500 USDC.
  • The most innovative-creative storytelling will receive a discretionary bonus of $1,000 USDC, determined by judges
  • Writers and video creators may also be promoted by Reserve Protocol’s social media, blog and newsletter

Challenge Description

The objective of this challenge is to introduce new perspectives and start new conversations about the possibilities related to Reserve Protocol. Using your creative storytelling superpowers and your understanding of The Reserve Protocol, create an essay or video, that meets submission requirements, and explores any one or more of the Ten Hackathon Content Topics.

Submission Requirements

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Confirm you have reviewed and walked through setting up a new RToken in the Register Dapp which should acclimate you to how easy future stablecoin issuance can be.
  • If you are writing an essay
    • You must be an active researcher/writer in topical areas related to DeFi, TradFi, web3 or web2 technologies and applications.
    • Submissions should be a 600 to 2,500 word original essay that you publish to your own Medium, Substack (or your preferred blog platform) or any web3 publication.
    • The essay must be published in English and available free to read on the public internet.
  • If you are creating a video
    • You must be an active researcher/video creator in topical areas related to DeFi, TradFi, web3 or web2 technologies and applications.
    • Channels with larger followings will be given extra considertion, but all submissions are welcome.
    • Submissions should be a 5 to 30 minute original video that you publish to your own YouTube channel.
    • The video must be published in English and available free to view on the public internet.
  • Submissions should not speculate on RSR token price in any way

Judging Criteria

There will be a quadratic community voting element to the judging process that will commence shortly after the project submission deadline; this will close at 11:59 PM PST on 12/13/2022. Four judges from Reserve Protocol will also assess each project submission by 01/16/2023.
The following criteria will be used to assess bounty deliverables:

  • Impact - If content conclusions are realized, how big might the impact be quantitatively?
  • Creative Framing and Point of View - How fun and original are the ideas in the content?
  • Technical Depth - Does the content author demonstrate a deep understanding of the subject matter?
  • Clarity - well structured, well written or spoken, english grammar
    We reserve the right to not pay out prizes if there are copy-pasta submissions.

Winner Announcement Date

Winners will be announced on 01/16/2023, with payouts to be completed ASAP thereafter.

Resources

Collateral Plugin - Rocket - rETH | $3,000

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Concentrator - aCRV / aFXS | $1,500

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Umami - Bridged vaults | $3,000

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Make `grantRTokenAllowance` work for multiple calls to a token like USDT

USDT has a weird requirement that either the allowance being set must be 0 or that the already-set allowance is 0.

We use .safeIncreaseAllowance, which won't work with this logic. We probably need to use safeApprove, and make multiple calls?

This also probably impacts allowances elsewhere. Should scan through rest of code and make sure everywhere we grant allowances we use a robust approach.

Collateral Plugin - Olympus - gOHM | $3,000

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - dydx - Positions | $3,000

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Opyn - Options Strategies | $1,500

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Arrakis Finance - Vaults | $3,000

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Coinbase - cbETH | $3,000

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Ankr - ankrETH | $1,500

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Reentrancy vulnerability in StaticATokenLM.sol

In _deposit, we have:

        if (fromUnderlying) {
            ASSET.safeTransferFrom(depositor, address(this), amount);
            LENDING_POOL.deposit(address(ASSET), amount, address(this), referralCode);
        } else {
            ATOKEN.safeTransferFrom(depositor, address(this), amount);
        }
        uint256 amountToMint = _dynamicToStaticAmount(amount, rate());
        _mint(recipient, amountToMint);

The safeTransferFrom() and deposit() calls are external interactions, but _mint is an effect, so this violates CEI.

Does the _dynamicToStaticAmount call need to happen after the transferFrom and deposit calls, or can these just be inverted? If they can't just be inverted, does this contract need ReentrancyGuard everywhere?

Collateral Plugin - Euler - Lending Positions! | $3,000

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Notional - Fixed Rate Positions | $3,000

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Goldfinch - Senior Pool | $3,000

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Uniswap v3 - v3 | $7,000

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Llama Airforce - uCRV / uFXS / uCVX | $3,000

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Cache array lengths in BasketHandler._switchBasket

Save some gas, avoid length reads and length() calls where possible - especially where the read happens repeatedly in loops. (This might run up against the stack size limit; make good choices, if so.)

Collateral Plugin - Frax Finance - Fraxswap Pools | $3,000

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Morpho - Aave | $1,500

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Maker - Oasis Earn: 50x Uni Pools | $1,500

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

See: https://blog.oasis.app/introducing-oasis-earn/

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Maple Finance - Permissionless Pool | $7,000

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Aura - Staked Balancer LP Tokens | $3,000

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Balancer - Balancer LP Tokens | $1,500

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Collateral Plugin - Set Protocol - Tokensets | $3,000

Prize Title

Collateral Plugin

Prize Bounty

  • $140k total for this category across all plugins.
  • Amount for this particular plugin is in the title. You have a choice of RSR, USDC, or DAI.
  • We have listed $120k of bounties in this category and will be awarding the extra $20k to the best submissions across the category, as determined by the judging criteria.

Challenge Description


Our protocol is a platform that allows anyone to permissionlessly define an asset-backed currency. These currencies can be more creative, and potentially more successful, if there are more building blocks from which to choose.

An important goal of this hackathon is to create as many safe, usable collateral plugins as possible to cover the entirety of possibilities in the defi landscape. We sourced this list from Defillama and our research.

Write a collateral plugin, or collection of plugins, for the defi protocol specified in the title, so that people can use collateral from the protocol as collateral in an RToken.

Submission Requirements


The submitted repository must include:

  • Twitter handle (if any)
  • Telegram handle (if any)
  • Discord handle (if any)
  • Source code for your Collateral plugin or plugins
  • An open source license
  • Documentation (e.g, a README file), describing the following for each plugin:
    • What are the collateral token, reference unit, and target unit for this plugin?
    • How does one configure and deploy an instance of the plugin?
      • If the deployer should plug in price feeds, what units does your plugin expect those price feeds to be stated in?
    • Why should the value (reference units per collateral token) decrease only in exceptional circumstances?
    • How does the plugin guarantee that its status() becomes DISABLED in those circumstances?
  • Tests demonstrating the behaviors checked by our example Collateral plugin test, which we encourage you to use as a starting template for your own testing. Particular behaviors must include:
    • Deployment.
    • Issuance, appreciation, and redemption of an RToken with this Collateral in its basket.
    • Claiming rewards (or, if no rewards are available for this token, tests demonstrating that the claim-reward functions do nothing and don't revert)
    • Correct behavior for price() when any price sources return invalid values.
    • Correctly changing status() whenever that's needed in order to flag sudden or impending default.

Edit: A video for this submission is no longer required; it has been replaced by the testing requirement.

Note: In the Additional Info field, specify the hash of the git commit that you want considered for this bounty. This will help us be sure of the order in which plugin submissions were completed.

Acceptance Criteria


Each Collateral plugin must:

  • Fully implement the [ICollateral interface][icoll].
  • Satisfy the correctness properties given in the Collateral plugin-writing howto.
  • Be fully permissionless once deployed.
  • Be documented with cogent explanations of its economics.
  • Be deployable with USD as its Unit of Account.
  • Not be prone to relatively simple economic attacks or cough cough “highly profitable trading strategies”

Additionally, static analysis with slither over your whole codebase should not yield avoidable issues of moderate or greater severity. If some slither report is not sensibly avoidable, your documentation should note that, and explain either how we can see that the report is spurious, or that the problem it’s reporting is unavoidable in this circumstance.

Judging Criteria


If there are multiple submissions in this category that meet all acceptance criteria, we will decide the grant winner based on the following judgments:

  • How clear, clean, and solidly-engineered is the implementation?
  • How gas-efficient is the implementation? The Reserve protocol makes heavy use of the refresh(), price(), and status() functions, for users’ sake these need to be especially efficient.
  • How easy is it to reason about what these Collateral plugins do?
  • Do we see technical or economic vulnerabilities in these plugins, and how severe are they?
  • Could these plugins be deployed and used on mainnet immediately, or are they missing prerequisites? For instance, do they require price feeds or trading mechanisms that don’t already exist?
  • How large is the range of significant, natural use cases covered by this set of Collateral plugins? Example of this further described below.

For an illustration of “range of use cases,” when we implemented our Compound collateral plugins, we thought it important to implement three different kinds of Collateral contracts to capture three substantially different kinds of Compound-wrapped tokens:

  • Tokens where the underlying token is a fiatcoin, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cUSDC is redeemable for USDC, and the plugin should default if USDC loses its peg to USD.
  • Tokens where the underlying token is pegged to some unstable asset, and the Collateral plugin should default if the underlying token’s price diverges from the target unit’s price. For instance, cWBTC has underlying token WBTC, and the plugin should default if WBTC loses its peg to BTC.
  • Tokens where the underlying token simply is the target asset, and requires no default check. For instance, cETH has underlying token ETH, and so the underlying token itself needs no default check.


If we had implemented only one or two of these, the range of use cases would be notably smaller.
The degree to which each Collateral plugin is configurable will also contribute to the range of use cases covered by the set of plugins. Again, we expect the already-existing Collateral plugins should be a good guide here.

Winner Announcement Date


January 16, 2023; about one month after the end of the hackathon.

To accept the prize, winners will need to complete and sign one of the following on Docusign:

  • W-9 (for US citizen/resident or company)
  • W-8BEN (for non-US person)
  • W-8BEN-E (for non-US company/entity)

    We are quite secure in how we collect KYC information and will never share PII with anyone outside of necessary tax authorities.

Resources

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.