The most primitive NFT token in FreeTON. Inspired by Crypto Punks. But it is better not to make tokens using this contract any more. Use TIP-3 instead.
- Variables
- Structs
- Mapping
- Events
- Error Codes
- Functions
- mint()
- changeUserWallet()
- WithdrawFees()
- TransferAdmin()
- SetBasicFee()
- SetMintFee()
- SetImageUrl()
- BurnTotalSupply()
- getWaifu()
- getOffer()
- getBid()
- getWaifuAllData()
- getPendingWithdrawal()
- getBalance()
- getLatestWaifus()
- getWaifusInRange()
- getWaifusByOwner()
- getActiveOffers()
- getActiveBids()
- getUserWallet()
- setName()
- transferWaifu()
- waifuNoLongerForSale()
- offerWaifuForSale()
- buyWaifu()
- withdraw()
- enterBidForWaifu()
- acceptBidForWaifu()
- withdrawBidForWaifu()
string public name;
string public symbol;
uint256 public totalSupply;
uint8 public decimals;
uint256 public nextWaifuIndexToAssign = 0;
uint256 public waifusRemainingToAssign = 0;
uint128 public mintFee;
string public imageUrl;
uint128 public basicFee;
struct Meta{
uint256 owner;
string name;
uint64 mintTimestamp;
bool isForSale;
bool hasBid;
}
struct Offer {
bool isForSale;
uint256 waifuIndex;
uint256 seller;
uint128 minValue;
}
struct Bid {
bool hasBid;
uint256 waifuIndex;
uint256 bidder;
uint128 value;
}
mapping (uint256 => uint128) public balanceOf;
mapping (uint256 => uint256[]) public OwnerOf;
mapping (uint256 => address) public keysToWallet;
mapping (uint256 => Offer) public waifusOfferedForSale;
mapping (uint256 => Meta) public waifusMeta;
mapping (uint256 => Bid) public waifuBids;
mapping (uint256 => uint128) public pendingWithdrawals;
event eTransfer(uint256 from, uint256 to, uint256 waifuIndex);
event eWaifuNoLongerForSale(uint256 waifuIndex);
event eWaifuOffered(uint256 waifuIndex, uint128 minSalePrice, uint256 to);
event eWaifuBought(uint256 waifuIndex, uint128 price, uint256 seller, uint256 byuer);
event eWaifuBidEntered(uint256 waifuIndex, uint128 price, uint256 bidder);
event eWaifuBidWithdrawn(uint256 waifuIndex, uint128 price, uint256 bidder);
event eWaifuNameChanged(uint256 waifuIndex, string name);
1** - standard errors
*********************
101 - Not authorized to administer
102 - ID is already taken
103 - Invalid user key for a private transaction
*********************
2** - Buying
*********************
201 - not enough money
202 - don't exist this waifu
203 - Not big enough new bet
204 - User isn't the owner
205 - User isn't the bidder
206 - Byuer is owner
207 - Waifu isn't for sell
208 - Seller no longer owner of waifu
209 - No owner
210 - Minimum fee is not provided
*********************
3** - overflow errors
*********************
301 - maximum amount overflow waifus
302 - string byteLength too high
*********************
This chapter describes all the functions of a smart contract
This function creates a new token. msg.value >= mintFee needs to be provided
function mint(uint256 userKey) external
Associate user key and waifus wallet address
function changeUserWallet(uint256 userKey, address newwallet) external
Admin function withdraws fees
function WithdrawFees(address destination) public
Admin function transfers admin
function TransferAdmin(uint256 newadmin) public
function SetBasicFee(uint128 newfee) public
function SetMintFee(uint128 newfee) public
function SetImageUrl(string newurl) public
Limits tokens amount
function BurnTotalSupply(uint256 newsupply) public
Returns waifu's meta
function getWaifu(uint256 waifuIndex) public view returns(Meta m)
Retruns waifu offer
function getOffer(uint256 waifuIndex) public view returns(Offer o)
Returns waifu bid
function getBid(uint256 waifuIndex) public view returns(Bid b)
Returns waifu's meta, offer and bid
function getWaifuAllData(uint256 waifuIndex)public view returns(Meta m, Offer o, Bid b)
Get user's freezed balance
function getPendingWithdrawal(uint256 owner) public view returns(uint128 amount)
Get count of user's waifus
function getBalance(uint256 owner) public view returns(uint128 amount)
Get metas of N latest waifus
function getLatestWaifus(uint256 N) public view returns(mapping(uint256 => Meta))
Get metas of Start to End waifus
function getWaifusInRange(uint256 start, uint256 end) public view returns(mapping(uint256 => Meta))
Get waifus owned by specified user
function getWaifusByOwner(uint256 owner) public view returns(mapping(uint256 => Meta))
function getActiveOffers(uint256 N) public view returns(mapping(uint256 => Offer))
function getActiveBids(uint256 N) public view returns(mapping(uint256 => Bid))
Waifus wallet smart contract address
function getUserWallet (uint256 userKey) public view returns(address sc)
Sets waifus name.
Needs Value provided >= basicFee
If you are using JS SDK, encode name to hex: Buffer.from("My girl").toString("hex")
function setName(uint256 owner, uint256 waifuIndex, string newname) external
Needs Value provided >= basicFee
function transferWaifu(uint256 from, uint256 to, uint256 waifuIndex) external
Cancel waifu offer
function waifuNoLongerForSale(uint256 waifuIndex) public
Offers waifu for sale Needs Value provided >= basicFee
function offerWaifuForSale(uint256 from,uint256 waifuIndex, uint128 minSalePrice) external
Needs Value provided >= minSalePrice
function buyWaifu(uint256 userKey, uint256 waifuIndex) external
Withdraw freezed funds to address
function withdraw(address destination)public
Needs msg.value provided = bid Value + basicFee
function enterBidForWaifu(uint256 userKey, uint256 waifuIndex) external
Accept bid by the owner
function acceptBidForWaifu(uint256 waifuIndex, uint128 minPrice) public
Cancel bid by the bidder
function withdrawBidForWaifu(uint256 waifuIndex) public