ReferrerNFT
Inherits: ERC721, IReferralSource
Transferable distributor NFT. Minted separately as Recruit (10k).
Currently unused for bidding or fees. Referral volume / tier weight remain for a later referral program.
Constants
MAX_SUPPLY
uint256 public constant MAX_SUPPLY = 10_000
SCOUT_MIN
uint256 public constant SCOUT_MIN = 0.5 ether
PROMOTER_MIN
uint256 public constant PROMOTER_MIN = 1 ether
ADVOCATE_MIN
uint256 public constant ADVOCATE_MIN = 5 ether
AMBASSADOR_MIN
uint256 public constant AMBASSADOR_MIN = 10 ether
PARTNER_MIN
uint256 public constant PARTNER_MIN = 25 ether
RECRUIT_WEIGHT
uint256 public constant RECRUIT_WEIGHT = 0
SCOUT_WEIGHT
uint256 public constant SCOUT_WEIGHT = 1
PROMOTER_WEIGHT
uint256 public constant PROMOTER_WEIGHT = 2
ADVOCATE_WEIGHT
uint256 public constant ADVOCATE_WEIGHT = 10
AMBASSADOR_WEIGHT
uint256 public constant AMBASSADOR_WEIGHT = 20
PARTNER_WEIGHT
uint256 public constant PARTNER_WEIGHT = 35
State Variables
owner
address public owner
registry
address public registry
baseURI
string public baseURI
nextTokenId
uint256 public nextTokenId = 1
tokenOfHolder
mapping(address => uint256) public tokenOfHolder
minted
mapping(address => bool) public minted
tokenOf
mapping(address => mapping(address => uint256)) public tokenOf
issuerOf
mapping(uint256 => address) public issuerOf
auctionVolume
mapping(uint256 => mapping(address => uint256)) public auctionVolume
auctionWeight
mapping(uint256 => mapping(address => uint256)) public auctionWeight
volumeOf
mapping(uint256 => uint256) public volumeOf
totalWeightOf
mapping(address => uint256) public totalWeightOf
_owned
mapping(address => uint256[]) private _owned
_ownedIndex
mapping(uint256 => uint256) private _ownedIndex
Functions
constructor
constructor(string memory baseURI_) ERC721("Launchpad Distributor", "LDIST");
setRegistry
function setRegistry(address registry_) external;
setBaseURI
function setBaseURI(string calldata baseURI_) external;
mint
Mint a Recruit NFT to the caller. One per wallet, 10_000 max.
function mint() external returns (uint256);
mintTo
Owner mint for fixtures / allocation.
function mintTo(address to) external returns (uint256);
_mintTo
function _mintTo(address to) internal returns (uint256 tokenId);
bind
Bind the issuer's NFT to an auction so later volume credits it.
function bind(address auction, address issuer) external;
credit
function credit(address auction, address issuer, uint128 amount) external;
tierOf
function tierOf(uint256 volume) public pure returns (Tier t, uint256 weight);
tier
function tier(uint256 tokenId) external view returns (Tier);
tierOfAuction
function tierOfAuction(uint256 tokenId, address auction) external view returns (Tier);
_tier
function _tier(uint256 volume) internal pure returns (Tier t);
referrerWeight
function referrerWeight(uint256 tokenId, address auction) external view returns (uint256);
totalReferrerWeight
function totalReferrerWeight(address auction) external view returns (uint256);
referrerOwner
function referrerOwner(uint256 tokenId) external view returns (address);
hasNft
function hasNft(address account) external view returns (bool);
tokensOfOwner
function tokensOfOwner(address account) external view returns (uint256[] memory);
tokenURI
function tokenURI(uint256 tokenId) public view override returns (string memory);
_update
function _update(address to, uint256 tokenId, address auth) internal override returns (address from);
_removeOwned
function _removeOwned(address from, uint256 tokenId) internal;
Events
RegistrySet
event RegistrySet(address indexed registry);
BaseURISet
event BaseURISet(string baseURI);
Minted
event Minted(uint256 indexed tokenId, address indexed to);
VolumeCredited
event VolumeCredited(
uint256 indexed tokenId, address indexed auction, address indexed issuer, uint256 volume, Tier tier
);
MetadataUpdate
event MetadataUpdate(uint256 indexed tokenId);
Errors
AlreadySet
error AlreadySet();
NotAuthorized
error NotAuthorized();
ZeroAddress
error ZeroAddress();
AlreadyMinted
error AlreadyMinted();
SoldOut
error SoldOut();
NoNft
error NoNft();
Enums
Tier
enum Tier {
None,
Recruit,
Scout,
Promoter,
Advocate,
Ambassador,
Partner
}