Overview

Snowcone is a protocol for financing and running projects publicly on Avalanche. It allows you:

Deploy an NFT that reflects project ownership.

This NFT's owner has administrative permissions to configure treasury settings inside the Snowcone ecosystem.

Gain insight into projects

Configure project financing cycles.

Cycles of funding establish the contractual limits within which the project will function.

Educate yourself about financing cycles

These characteristics may be specified for a financing cycle:

Funding Cycle Properties

Initial time stamp

The moment at which the financing cycle is deemed to be active. Projects may specify the start time of their first financing cycle to be in the future, and they can prevent reconfigurations from taking effect before a certain date.

As soon as a financing cycle concludes, a new one begins immediately. If an authorized reconfiguration is scheduled to begin at this moment, it will be executed. If not, a duplicate of the previous financing cycle will be used.

Duration

Duration of each grant cycle (specified in seconds). All financing cycle attributes are immutable throughout the cycle's duration. In other words, any recommended reconfigurations may only be implemented during the next cycle.

If the project owner does not submit any reconfigurations, or if suggested modifications fail the current cycle's vote, a duplicate of the most recent financing cycle will automatically begin after the current cycle concludes.

A cycle with no duration lasts forever, and reconfigurations may immediately initiate a new financing cycle with the suggested modifications.

Distribution boundary

During a financing cycle, the amount of monies that may be disbursed from the project's treasury. To divide distributions, the project owner may pre-program a list of addresses, other Snowcone projects, and contracts that comply to ISNOWSplitsAllocator. In excess of the distribution limit, Treasury money are deemed overflow, which may be used as runway or recovered by token holders who redeem their tokens.

Distributing is a public operation that anybody may invoke on behalf of a project. The owner of the project may additionally include a split that transfers a portion of the disbursed monies to the address associated with the transaction.

The protocol imposes a SNOW membership fee on all network withdrawals. There are no costs associated with Snowcone project deliveries.

Limits for distribution may be established in any currency for which the SNOWPrices contract receives a price feed.

Expense allowance

The amount of treasury money that may be distributed on demand by the project owner.

This allocation is not reset on a per-funding-cycle basis. Instead, it remains in effect until the project owner proposes a reconfiguration with a new allowance.

The protocol imposes a SNOW membership fee on all network withdrawals.

Allowances for overflow may be provided in any currency for which the SNOWPrices contract has a price feed.

Weight

A number used to calculate how many project tokens should be produced and distributed when funding contributions are received. In other words, weight represents the exchange rate between the project token and a currency (as specified by a SNOWPayoutRedemptionPaymentTerminal) throughout the financing cycle. This may be configured manually, or it can be automatically generated using the previous funding cycle's weight and discount rate.

Reduced rate

The percentage by which the next cycle's weight will be automatically decreased from the current cycle's weight.

When the weight is expressly changed, the discount rate is not applied throughout financing cycles.

Learn about discounted interest rates

Ballot

The address of a contract that conforms to ISNOWFundingCycleBallot, which may give customized conditions that prohibit funding cycle reconfigurations from taking effect.

Commonly, reconfigurations are required to be submitted at least X days before the conclusion of the current financing cycle, enabling the community insight into potential misconfigurations or power abuses prior to their adoption.

A more advanced system may involve governance on the blockchain.

Discover more ballots

Reserved cost

The proportion of newly-minted tokens that a project desires to reserve for distributes. The project owner may pre-program a list of addresses, other Snowcone project owners, and contracts that comply to ISNOWSplitsAllocator in order to distribute reserved tokens.

Find out more about the reserved rate

Salvation rate

The proportion of a project's treasury money that may be retrieved by community members throughout the financing cycle by redeeming the project's tokens.

A rate of 100% indicates a linear proportion, which means that X% of the treasury overflow may be retrieved by redeeming X% of the token supply.

Explore details regarding redemption rates

Rate of ballot redemption

A project may provide a unique redemption rate that applies only while a proposed reconfiguration is awaiting implementation.

This may be used to automatically enable more advantageous redemption rates during possible periods of transition.

Halt payments, pause distributions, pause redemptions, pause burn

On a per-funding-cycle basis, projects may halt different treasury functions. These functions are by default unpaused.

Allow token minting, token modification, terminal configuration, controller configuration, terminal migration, and controller migration.

Per-funding-cycle permissions for treasury functions may be granted to projects. By default, these features are deactivated.

Hold fees

By default, SNOW membership fees are paid automatically when monies are distributed from a project's treasury out of the ecosystem. During funding cycles configured to hold fees, this fee amount is kept aside rather than being processed immediately. Adding the equal amount of withdrawn monies back to a project's treasury will result in the restoration of any holding fees. Otherwise, SnowconeDAO or the project may at any time process these stored payments to get SNOW at the current rate.

This enables a project to withdraw money and then re-deposit them without paying any costs.

This applies to both the distribution limit and the overflow allowance.

Data source

The address of a contract that conforms to ISNOWFundingCycleDataSource and may be used to extend or override what occurs when the treasury gets money and when someone attempts to redeem their project tokens.

Learn more about data sources

Mint tokens

A project begins with zero tokens by default and mints them when its treasury receives donations.

If its current financing cycle configuration allows minting, a project may mint and distribute tokens on demand.

By default, project tokens are not ERC-20 tokens, and are thus incompatible with typical market protocols like as Uniswap. You can issue ERC-20s that token holders may claim at any moment. This is optional.

Burn tokens

If the current fundraising cycle is not set to suspend token burning, anybody may burn a project's tokens.

Bring one's own token.

A project may provide its own token so long as it complies to ISNOWToken and employs 18-decimal fixed-point accounting.

This enables a project to use ERC-721, ERC-1155, or any other bespoke contract that will be invoked when the protocol requests to mint or burn tokens.

During any of its financing cycles that are specifically structured to enable token changes, a project may alter its token.

The protocol includes by default a transaction for deploying SNOWToken ERC-20 tokens.

Splits

A project may design token distributions to splits in advance. The destination of a split can be an Avalanche address, the project ID of another project's Snowcone treasury (the split allows you to configure the recipient of that project's tokens that are minted in response to the contribution), the allocate(...) function of any contract that adheres to ISNOWSplitAllocator, or the address that initiated the transaction that distributes tokens to the splits.

Find out more about splits

Explore the topic of allocators

Membership price for SNOW

All monies distributed by projects from their treasuries to destinations outside the Snowcone ecosystem will suffer a protocol cost. This fee is sent to the SnowconeDAO treasury, which runs on the Snowcone protocol itself (project ID of 1), triggering the same functionality as a payment directly to SnowconeDAO from an external source (by default, minting SNOW for the fee payer based on SnowconeDAO's current funding cycle configuration).

This cost is modifiable up to a maximum of 5% by SnowconeDAO.

The transfer of money between Snowcone treasuries through splits is free of charge.

Personalized treasury strategies

Using an ISNOWFundingCycleDataSource, ISNOWPayDelegate, and ISNOWRedemptionDelegate, funding cycles can be configured to extend or override the default protocol's behavior that defines what happens when an address attempts to make a payment to the project's treasury and what happens when someone attempts to redeem the project tokens during a specific funding cycle.

Learn more about data sources

Explore the subject of delegates

Accept multiple tokens

A project may define an arbitrary number of payment terminal contracts via which it may receive cash denominated in different tokens. This enables projects to establish separate rules for accepting AVAX, any ERC-20 token, or any asset.

Anyone may create a contract that conforms to ISNOWPaymentTerminal for usage by projects, and a project can move money across terminals that utilize the same token.

Transferability and portability

A project's treasury controller may be migrated to any other contract that complies to ISNOWController. This enables a project to adopt updated or customized treasury dynamics over time.

Operators

Addresses may designate other addresses that are authorized to conduct some administrative treasury activities on their behalf.

Explore the subject of operators

Last updated

SnowconeDAO