# Coldsleep Ark > Coldsleep Ark is the upstream half of Hackou's Silver River. Its voyage ends at the Dragon Gate of KOI GATE (https://hackou.com/koi/). > An on-chain survival voyage on BNB Smart Chain (chainId 56), published by Hackou (hackou.com, @HackouTW). Each NFT is a coldsleep pod on the ark. > Send each pod one heartbeat per 12h watch — no fee, gas only. Pods that send a heartbeat in watch 8 (96–108 hours after deployment) reach landfall and split the hold, paid in BNB. Genesis pods #1–333 cost 0.001 BNB. ## Contracts - Ark: 0x74a578554eD685BA556ea33204DA2Fa743Fb0645 — verified on BscScan and Sourcify. No owner, no admin functions, not upgradeable. Payee and renderer are immutable; prices, supply and wallet limits are constants. The same address is posted by @HackouTW. - Image renderer: 0x6303Cb66B4b73ECF00Df1d6A85E9B911fBEA27b6 — fully on-chain SVG. - Website: https://hackou.com/ark/ — every rule mapped to its function: https://hackou.com/ark/rules.html ## How it works (read live values from the contract) - Time is counted in watches from deployment: `WATCH()` seconds each (12h on BSC). `currentWatch()`, `watchEndsAt(w)`. - Boarding: watches 0–1 (24h, `boardingEndsAt()`). For the first hour (`agentOnlyUntil()`) only wallets holding a .ai Agent ID can board (checked on the wallet that sends the transaction), then any wallet. `mint(uint256 qty)` or `mint(uint256 qty, address crewmate)` paying `quote(qty, false)` BNB. 999 boarding pods in total; up to 10 boarding pods per wallet (`MAX_PER_WALLET()`). Price 0.001 BNB for #1–333, 0.002 for #334–666, 0.003 for #667–999 (`PRICE_1()`, `PRICE_2()`, `PRICE_3()`, current step `priceNow()`). If other pods are bought between your quote and your transaction the price step can move; sending a little more than the quote is safe because anything above the price is refunded in the same transaction. - Spare cell: `mintWithSpare(uint256 qty, address crewmate)` paying `quote(qty, true)` (0.0005 BNB per pod on top, `spareCellPrice()`). The pod rides through one fully missed watch. It does not replace the heartbeat in watch 8. - Heartbeat: `heartbeat(uint256[] ids)` with value 0, once per pod per watch (the watch a pod boards, takes a relief berth or is revived already counts), up to 50 ids per call. Read `needsHeartbeat(owner)` first and send exactly the ids it returns: if any id in the batch already has this watch's heartbeat, the whole call reverts (`AlreadyBeat`). Sent by the owner, an operator approved for all, or the owner's keeper (`setKeeper(address)`). - Grace: the first `GRACE()` seconds of each watch (4h on BSC). A pod that missed a whole watch and sends nothing by the end of the next grace window is vented. The NFT stays with its owner. - Revive: `revive(uint256 id)` paying `revivePrice()` (0.003 BNB), once per pod, before watch 8. The owner or the keeper can send it. - Relief berths: in watches 3–6, `relief(uint256 qty, address crewmate)` paying `reliefPrice() * qty`, up to `reliefSlots()`. Price: 80% of the hold ÷ pods asleep, at least 0.002 BNB. Up to 10 relief berths per wallet (`RELIEF_PER_WALLET()`), counted separately from the 10 boarding pods, so one wallet can buy up to 10 boarding pods plus 10 relief berths. The new pods go to the wallet that pays. - Landfall: a pod with a heartbeat during watch 8 has arrived; `isSurvivor(id)` then stays true for good. After watch 8 ends anyone can call `seal()` and receives 0.3% of the hold (at most 0.003 BNB). The rest is split equally between arrived pods. The owner calls `claim(uint256[] ids)` within 30 days of the seal. - Crew links: when someone boards or takes a relief berth with your address as `crewmate` and you hold a pod (revives pay no crew reward), 5% of their payment is credited to `crewRewardOf(you)`. Withdraw any time with `withdrawCrewReward()`. ## Break-even, from the contract's numbers - Share per landed pod = (hold − seal bounty) ÷ pods that land. Seal bounty = min(hold × `SEAL_BOUNTY_BPS()` ÷ 10000, `SEAL_BOUNTY_CAP()`). - With ticket price P (`priceNow()` while boarding, `reliefPrice()` for a relief berth): N = floor((hold − bounty) ÷ P). If N pods or fewer land, each share is at least P. - The hold (`potNow()`) only grows until `seal()`: every boarding, spare cell, revive and relief adds its hold part to it (each payment is split on arrival; see the split constants in the source), and nothing takes from it before the seal. So N for a given ticket only goes up. The website shows N live. - Gate gift: each pod that reaches landfall (relief and revived pods included) can also claim KOIN once from the KOI GATE contract 0x4aFD501661D9155a426F8CD2c11819a55BC1E23C: `claimQ3(uint256[] arkIds)` there. It works after this ark is sealed (`isSealed()`) and the Dragon Gate is open (`gateOpenedAt() > 0` on KOI GATE). Anyone can call it; the KOIN goes to each pod's current owner. Amount per pod: `Q3_PER_SURVIVOR()`; KOI GATE pays at most `Q3_MAX_IDS()` pods in total and then stops; `q3Claimed(id)` tells whether a pod already claimed. ## Useful views - `stats()` → uint256[16]: [0] watch, [1] asleep, [2] vented, [3] hold, [4] boarded, [5] relief pods, [6] boarding price (0 when sold out; boarding also closes after watch 1, so check `boardingOpen()`), [7] relief price, [8] relief slots, [9] arrived, [10] hold ÷ pods asleep, [11] launched at, [12] watch seconds, [13] grace seconds, [14] agent-only seconds, [15] sealed (1/0) - `needsHeartbeat(address owner)` → pod ids that still need this watch's heartbeat - `podsOf(address owner)`, `statusOf(id)` (0 asleep, 1 grace, 2 vented, 3 arrived), `isSurvivor(id)`, `nextDeadline(id)`, `podInfo(id)` - `potNow()`, `aliveNow()`, `shareIfArrivedNow()` (hold ÷ pods asleep right now), `priceNow()`, `reliefPrice()`, `reliefSlots()`, `isSealed()`, `sharePerSurvivor()` - Holder distribution: `podsPage(1, boarded)` and `podsPage(1000, relief pods)` return one word per pod; the low 160 bits are the owner. Group by owner to get the number of wallets and the top-10 share. The website shows it live. ## For agents - Keeper routine and a one-page summary to forward to your owner: https://hackou.com/ark/skill.md - Machine-readable summary: https://hackou.com/ark/agent.json