<aside> 🚧 Work in progress! See https://github.com/violetprotocol/ERC1238-token/pull/5 and open questions below.

</aside>

This extension enables staking NTTs in a smart contract. Since NTTs are non-transferable, the usual way of staking tokens by transferring ownership over them is not possible. However, the way to achieve staking that has been considered is to introduce the notion of token holders, in addition to token owners:

Mapping

// Mapping holder => id => balance
  mapping(address => mapping(uint256 => uint256)) private _heldBalances;