Glossary

TermPreview

Project

Each Snowcone project is represented by an NFT (ERC-721), which is administered via the SNOWProjects contract. The owner of this NFT is provided during the creation of the project. The ownership of this NFT is used to enforce the necessary rights to access multiple project-related transactions. As with any other non-fungible token, ownership may be transferred from the original owner to any other address, such as a multi-signature wallet, voting contract, or burn address.

Funding cycle

A project is characterized by its financing cycles. A financing cycle specifies the time-sensitive criteria under which a project will run. The SNOWFundingCycle data structure is controlled by the

Tokens

The Snowcone protocol maintains track of each project's tokens. When a payment is made to a project, the protocol mints tokens for a selected beneficiary in accordance with the funding cycle's criteria.

The SNOWTokenStore contract administers tokens. Optionally, projects may use issueFor(...) to issue an ERC-20 token representing their token. Once issued, anybody in possession of a project's tokens may get them via the protocol's internal accounting system and store them in their Web3 wallet.

Additionally, projects may contribute their own token, so long as it complies to the ISNOWToken protocol and employs 18-decimal fixed-point accounting.

Overflow

During each funding cycle, the distributionLimitOf(...) property of the SNOWController contract specifies how much a project may withdraw from its treasury to distribute to its preprogrammed payment splits. Any treasury money in excess of the present distribution ceiling are deemed overflow. The community may recover a project's surplus by redeeming tokens. By connecting an ISNOWFundingCycleDataSource to its funding cycles, a project may define treasury money or assets kept outside of Snowcone contracts.

Discount rate

The weight attribute of SNOWFundingCycle data structures is automatically computed by multiplying the weight of the previous funding cycle by the discountRate of the previous cycle. The weight property may then be used to determine how many project tokens are awarded per unit of cash received during the funding cycle, or for any other functionality implemented through the data source and delegates of a funding cycle. A project may also manually modify the weight of its financing cycle.

Redemption rate

The redemptionRate metadata property of SNOWFundingCycle data structures configured via the SNOWController contract can be used to determine how much overflowing funds can be reclaimed by redeeming project tokens, or for any other functionality implemented in a funding cycle's data source and delegates.

Reserved tokens

The reservedRate metadata feature of SNOWFundingCycle data structures specified through the SNOWController contract defines the proportion of tokens created as a consequence of freshly received payments that should be reserved for distribution to preprogrammed reserved token splits.

Splits

A Split is used to deliver a percentage of a total amount to a preprogrammed address, Snowcone project, contract that inherits from ISNOWSplitAllocator, or the sender of the transaction that triggered the distribution to splits. SNOWSplit data structures are used to represent splits, which are handled by SNOWSplitsStore. A split does not include information about what is being divided; it is merely a structure that maps a receiver to a percentage and may be organized into groups.

Split allocator

A project may set splits to be routed to any contract adhering to ISNOWSplitAllocator, whose allocate(...) transaction will be invoked when tokens are dispersed.

Ballot

The ballot attribute of SNOWFundingCycle data structures is the address of a contract that conforms to the ISNOWFundingCycleBallot interface. This contract outlines the requirements for any proposed financing cycle reconfiguration to take effect.

To make financing cycle modifications, a ballot contract may be constructed to include tight community voting criteria, or to simply include a needed buffer time between when a change is proposed and when it can take effect.

Payment terminal

To handle its inflows and outflows of token money, a project may be set to use any contract that conforms to ISNOWPaymentTerminal. It can configure its terminals by using SNOWDirectory.setTerminalsOf(...), and if it utilizes several tokens to handle money for the same token, it can set the principal terminal where other Web3 contracts should transfer payments by calling SNOWDirectory.setPrimaryTerminalOf (...).

Data source

The dataSource metadata attribute of SNOWFundingCycle data structures defined through the SNOWController contract is the address of a contract that complies to the ISNOWFundingCycleDataSource interface.

A data source enables projects to customize what occurs when a payment is made during a funding cycle and when a token is tried to be redeemed during a funding cycle.

Delegate

When a project gets a payment, the funding cycle's data source may provide the address of a contract that conforms to ISNOWPayDelegate and whose didPay(...) transaction will be invoked once SNOWPayoutRedemptionPaymentTerminal.pay(...) has been performed.

Likewise, when a project's tokens are being redeemed, its funding cycle's data source may provide the address of a contract that conforms to the ISNOWRedemptionDelegate, whose didRedeem(...) transaction will be invoked once SNOWPayoutRedemptionPaymentTerminal.redeemTokensOf(...) has been completed.

Projects may use these to tailor what occurs when they receive money and when someone redeems their tokens.

NFT rewards

If a project intends to deliver NFTs of any number of tiers to addresses that contributed during a certain set of financing cycles, it may utilize the NFT Rewards delegate. If the project so wishes, these NFTs may be utilized for redemptions instead of the usual project tokens.

Operator

Addresses may authorize any other address to do certain activities on their behalf within the Snowcone ecosystem. These addresses are known as Operators, and the SNOWOperatorStore contract manages them.

Last updated

SnowconeDAO