#contract #dao #nft #factory #voting #tokens #staked

dao-voting-cw721-staked

A DAO DAO voting module based on staked cw721 tokens

7 stable releases

2.6.0 Nov 8, 2024
2.5.0 Oct 31, 2024
2.4.2 Jul 22, 2024
2.3.0 Oct 18, 2023
2.2.0 Jul 9, 2023

#5 in #staked


Used in 2 crates (via dao-testing)

BSD-3-Clause

295KB
6.5K SLoC

dao-voting-cw721-staked

dao-voting-cw721-staked on crates.io docs.rs

This is a basic implementation of an NFT staking contract.

Staked tokens can be unbonded with a configurable unbonding period. Staked balances can be queried at any arbitrary height by external contracts. This contract implements the interface needed to be a DAO DAO voting module.

dao-voting-cw721-staked can be used with an existing NFT collection or to create a new cw721 collection upon instantiation (with the DAO as admin and minter).

To support Stargaze NFTs and other custom NFT contracts or setups with minters (such as the Stargaze Open Edition minter), this contract also supports a factory pattern which takes a single WasmMsg::Execute message that calls into a custom factory contract.

NOTE: when using the factory pattern, it is important to only use a trusted factory contract, as all validation happens in the factory contract.

Those implementing custom factory contracts MUST handle any validation that is to happen, and the custom WasmMsg::Execute message MUST include NftFactoryCallback data respectively.

The dao-test-custom-factory contract provides an example of how this can be done and is used for tests. It is NOT production ready, but meant to serve as an example for building factory contracts.

Dependencies

~10MB
~216K SLoC