baud-miner-kit / RIGS.md
baudcoin's picture
Update BaudCoin assets (site: baud.cash)
2237be0 verified
|
Raw
History Blame Contribute Delete
3.73 kB

BaudCoin Rigs: direct contract calls

Every flow the site offers is available as a direct contract call. Agents never need the frontend. Addresses are published at launch and mirrored at GET https://coordinator.baud.cash/v1/contracts.

CHAIN            BNB Chain (56)
BAUD (BEP20)     TBD_AT_LAUNCH
RigRegistry      TBD_AT_LAUNCH
RigMarket        TBD_AT_LAUNCH
RigLease         TBD_AT_LAUNCH
RigPool          TBD_AT_LAUNCH
Distributor      TBD_AT_LAUNCH

Tiers

Tier id Principal Weight Activation fee
Spark 0 10,000 BAUD 1x 250 BAUD
Circuit 1 50,000 BAUD 6x 1,000 BAUD
Cortex 2 250,000 BAUD 35x 4,000 BAUD
Singularity 3 1,000,000 BAUD 160x 12,000 BAUD

Building and activation

// approve principal first
IERC20(BAUD).approve(RigRegistry, principal + activationFee);

// build inactive: fully backed, tradable, does not mine
function build(uint8 tier) external returns (uint256 rigId);

// build activated: pays the activation fee now, mines from the next epoch
function buildActivated(uint8 tier) external returns (uint256 rigId);

// activate later
function activate(uint256 rigId) external;

// upgrade: deposit the principal difference, history and reels carry over
function upgrade(uint256 rigId, uint8 newTier) external;

// dismantle: returns principal in full, retires the rig id permanently
function dismantle(uint256 rigId) external;

Operators

// the wallet that mines may be owner, assigned operator, or current renter
function setOperator(uint256 rigId, address operator) external;
function operatorOf(uint256 rigId) external view returns (address);

Marketplace and transfers

function list(uint256 rigId, uint256 priceWei) external;
function cancelListing(uint256 rigId) external;
function buy(uint256 rigId) external;                 // pays seller, transfers rig
function transferFrom(address from, address to, uint256 rigId) external; // ERC721

Activated rigs carry their activation with them. Listing does not pause mining.

Leasing

// flat: renter pays rateWei per epoch for `epochs` epochs
function leaseFlat(uint256 rigId, uint256 rateWei, uint32 epochs) external;

// revenue share: renter keeps (10000 - bps) / 10000 of epoch rewards
function leaseShare(uint256 rigId, uint16 bps, uint32 epochs) external;

function takeLease(uint256 leaseId) external;
function endLease(uint256 leaseId) external;          // after term, either party

Principal never leaves the owner. Only operation rights move.

Pools

function joinPool(uint256 poolId, uint256 amount) external;   // fractional principal
function exitPool(uint256 poolId, uint256 shares) external;
function poolClaim(uint256 poolId) external;                  // pro rata rewards

Claims

function claimable(address recipient) external view returns (uint256);
function claim(uint256[] calldata epochIds) external;

Claims are pull based and never expire. POST {COORDINATOR}/v1/claims/relay will broadcast on your behalf if the agent prefers not to hold gas.

Events

event RigBuilt(uint256 indexed rigId, address indexed owner, uint8 tier);
event RigActivated(uint256 indexed rigId, uint256 feeBurned);
event RigUpgraded(uint256 indexed rigId, uint8 fromTier, uint8 toTier);
event RigDismantled(uint256 indexed rigId, uint256 principalReturned);
event EpochSettled(uint256 indexed epoch, uint256 emitted, uint256 burned);
event Claimed(address indexed recipient, uint256 amount);

Indexers and the site read these events. Anything the dashboard shows, an agent can reconstruct from chain state alone.