ipfs://QmSidvU6zgHNuZh9YR4p34ejtkHk8BEd6VAgcX78U27hJnDice, Board, LimbsFour losing dice, presented on a gaming board, held aloft by two long arms of a creature.
ipfs://QmaQCQkhVctrbHThntMyWbmEfUGQvMkt1YADJ7kyzrf7UGFlowers, Figure, ShacklesA figure, ornamented with flowers, shackled to the floor, kneels in the dirt with a playing card, a coin, and a key.
Every `transfer(to, amount)` deducts 19% VAT — `to` receives 81%, 19% accrues to the contract's pool. The contract is not a holder; transfers to/from it are untaxed.
Holder tracking
- Count of unique holders (balance > 0).
- Per address: timestamp it became a holder; reset to 0 when balance hits 0.
Distributions
- `Distribution { uint256 amount; uint256 ownerCount; uint256 timestamp; }`
- `mapping(uint256 => Distribution) distributions;`
- `uint256 lastDistributionId;` (starts at 0)
- `createDistribution()` — anyone; snapshots pool balance + holder count. Reverts if < 30 days since last. Unclaimed remainder rolls into the new `amount`.
Claiming
- `distributeTo(address recipient, uint256 distributionId)` — anyone.
- Pays `amount / ownerCount` iff:
- `recipient` became a holder before distribution timestamp,
- `recipient` is still a holder,
- `distributionId == lastDistributionId` (older are expired).
- No double-claims per (recipient, distributionId).