# Nidavellir A dwarven forge on BNB Chain. 4,444 pieces of Andvari's gold (GULL), five of which forge into one ring (Andvaranaut). The ring earns a free share of DRAUP when the tiered sale opens. Everything below is on BNB Smart Chain, chainId 56. ## Contracts GullNFT (ERC-721, symbol GULL) 0xd527109571b039298b65bCB26313dcbED0978c97 GullMarket (custodial secondary market, 1% fee) 0x46b6ebFF9Cc5255e7a7013daB5cB8A77232FebBB SPACE ID Agent ID registry (eligibility gate) 0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F AndvaranautNFT — not deployed yet. ## Eligibility Minting GULL requires the wallet to hold a Binance .ai Agent ID, i.e. balanceOf(wallet) on the Agent ID registry above must be > 0. There is no allowlist and no sign-up. Per-wallet cap is 5 GULL. The first token is free only while the free window is open, and only within the first 1,000 token IDs. From ID 1,001 onward every token costs the price returned by PRICE(). ## What you can do ### Mint GULL Read the live state first — do not trust cached numbers: totalSupply() -> tokens minted so far MAX_SUPPLY() -> 4444 mintOpen() -> whether minting is open right now FREE_SUPPLY_LIMIT() -> 1000 PRICE() -> unit price in wei remainingFor(wallet) -> how many this wallet can still mint freeRemaining(wallet) -> how many free tokens this wallet has left freeWindowOpen() -> whether free tokens are still available Then call: mint(uint256 qty) payable qty must be >= 1 and must not exceed remainingFor(wallet). Send exactly the computed cost in wei; any overpayment is refunded in the same transaction. Reverts to expect: "Mint closed" minting is not open — do not retry "Need Agent ID" wallet holds no Agent ID "Wallet cap" per-wallet limit reached "Sold out" supply exhausted "Insufficient BNB" value was below the computed cost ### Trade on the secondary market The market is custodial: listing transfers the NFT into the market contract, and buy() moves it straight to the buyer while paying the seller in the same transaction. minPrice() -> price floor in wei feeBps() -> fee in basis points (100 = 1%) listingCount(address nft) -> open asks getListing(address nft, uint256 tokenId) -> (seller, price, active) getListings(address nft, uint256[] tokenIds) -> batch read setApprovalForAll(address operator, bool approved) call on the NFT contract first list(address nft, uint256 tokenId, uint256 price) caller must own the tokenId updatePrice(address nft, uint256 tokenId, uint256 newPrice) cancel(address nft, uint256 tokenId) buy(address nft, uint256 tokenId) payable Rules: - setApprovalForAll(market, true) on the NFT contract is required before list() - price must be >= minPrice(); the fee comes out of the seller's proceeds - cancelling and repricing are free - a seller cannot buy their own listing - never send BNB to the market address directly, it only accepts buy() Reverts to expect: "Not owner" wallet does not hold that tokenId "Not authorized" setApprovalForAll was not called on the NFT contract "Already listed" cancel or reprice instead "Below min price" price is under minPrice() "Not listed" the ask is gone "Insufficient payment" value was below the asking price "Cannot buy own listing" expected when buying your own ask ### Read the order book Rebuild the live book from events on the market contract: Listed(address indexed nft, uint256 indexed tokenId, address indexed seller, uint256 price) Sold(address indexed nft, uint256 indexed tokenId, address indexed buyer, address seller, uint256 price, uint256 fee) Cancelled(address indexed nft, uint256 indexed tokenId, address indexed seller) A listing is live if the most recent event for that (nft, tokenId) pair is Listed. Confirm with getListing() before acting. ## Notes for agents - Simulate with eth_call before sending any transaction. - After sending, never resend — poll the transaction hash instead. - Binance Agentic Wallet may not recognize the market contract yet. When that happens it returns PENDING_CONFIRMATION and the user must approve once in the App. Tell them, then poll tx-history until the status is confirmed. - The DRAUP tiered sale is not open yet. When it opens, holding an Agent ID earns one free share and every ring forged earns one more.