The smart contract has extensive options for managing delegations

Basic delegation by use case and collection

There are 4 distinct approaches to basic delegation. In all cases, the 'vault' address holds the NFTs, and assigns rights and benefits to a more active 'hot' address (that holds very limited value).

In the most general case, the vault delegates all rights and benefits to hot address, for ANY collection of NFTs. Once that delegation is recorded on chain, projects that recognize NFTDelegation will grant NFT ownership benefits to the hot address.

The granting of all rights can also be scoped to a specific NFT collection. For example, a collector who desires to interact with The Memes collection via a dedicated address like memes.collector.eth can use NFTDelegation to assign all rights from the vault, to that specific address. NFTs from other collections will not be impacted, and can have their own collection-specific delegations.

Collectors may also assign specific rights on an individual basis, with use cases. By using use-case specific delegations, the vault address might assign voting rights to one address, and minting rights to a different address.

These specific use-cases can be assigned by individual collection, or can apply for all collections.

So, from most general to most specific, the basic approaches that can be registered on-chain are:

  1. Delegate ALL use cases for ANY collection

  2. Delegate ALL use cases for a single collection

  3. Delegate a specific use case for ANY collection

  4. Delegate a specific use case for a single collection

These different delegations can co-exist, and may at times even overlap. Projects will generally recognize the most recent delegation that applies as the canonical option to respect, if there is any conflict.

NFTDelegation supports deep customization

Beyond scoping delegations to specific use cases or collections, collectors can get even more granular, and register delegations for individual tokens.

For example, if a collector had multiple BAYC tokens in the vault, each token could delegate rights to a distinct active address. That would let activity related to each token remain separated by address.

In further support of fine-grained management, collectors may choose an expiration date for delegations of all types. This means the assignment of rights will be time limited, from the time of creation. This is useful for temporary delegations, or short-term configurations that you don't want to have to remember to revert.

Delegations can be created with these options one at a time, or in batches.

All delegations are updatable revokable

Any delegation that's recorded on the blockchain can be updated through the NFTDelegation smart contract or website. Updates can rewrite any of the key attributes of the delegation.

Sometimes, updates aren't enough. At any time, a collector may revoke previously-created delegations. This breaks the link between addresses.

Revocation of delegations can also be done in batches, for expedient removal of assigned delegationas.

Addresses can be locked

If a collector does not want their address to accept any incoming delegation assignments, they can mark their address as locked, via the NFTDelegation smart contract.

This will prevent anyone else from delegating to the locked address. Any attempts to delegate to a locked address will result in an error message.

Reading delegation data

The NFTDelegation smart contract provides a number of ways to retrieve delgation date from the blockchain.

Projects wanting to use delegation data can invoke functions to:

  1. return an array of all delegation addresses assigned by a Delegator for a specific use case on a specific NFT collection (including the option for ALL + ANY general delegations).

  2. return an array of all delegators for a specific use case on a specific NFT collection given a delegation address.

  3. return an array of all active delegations for a specific use case on a specific NFT collection on a certain date.

  4. return an array of all active Delegators for a specific use case on a specific NFT collection on a certain date.

  5. get the status (true/false) of a delegation.

  6. get the status (true/false) of a delegation, given a token id.

  7. check the status (true/false) of an active delegator on a given date.

  8. get the tokens ids as well as the expiry dates of a delegation given a delegator address and an assigned address.

  9. get the most recent delegation address delegated on a specific use case

  10. get the most recent Delegator given an assigned address.

  11. check the consolidation relationship between two addresses.

All this info can be used during mints, or any other times that NFT possession brings rights along with it.

Last updated