Skip to main content

MINER_REGISTER, NFT_SETNAME, NFT_TRANSFER

To run a miner, a wallet must first register an on-chain MinerNFT — a soulbound-ish identity that tracks reputation, capabilities, and earnings. The NFT can be renamed and transferred.

MINER_REGISTER

Registers a new miner identity. The wallet's address becomes the initial owner.

FieldTypeNotes
type"MINER_REGISTER"
fromstringMiner wallet — becomes owner
namestringHuman-readable miner name (≤ 64 chars)
capabilitiesarray<string>What tasks this miner can handle: ["chat", "code_simple", "image", "audio", "embedding", "nft_svg", "judge"]
modelInfostringFree-form description (e.g., "llama-server:Qwen2.5-7B-Q4_K_M / stable-diffusion-1.5")
nonce, timestamp

Validation:

  • name non-empty, ≤ 64 chars, unique on chain
  • capabilities non-empty, all values in the known set
  • One MINER_REGISTER per address (can re-register only after NFT_TRANSFER)

Effect:

  • Creates state.miners[nftId] where nftId = sha256(MINER_REGISTER tx hash)
  • state.minerByAddress[from] = nftId

nftId is the canonical reference used in TASK_RESPONSE.minerId.

NFT_SETNAME

Rename the miner NFT.

FieldTypeNotes
type"NFT_SETNAME"
fromstringCurrent owner
minerIdstringnftId of the miner
newNamestringNew name (same constraints as MINER_REGISTER)

Validation:

  • state.miners[minerId].owner == from
  • newName unique on chain

Effect:

  • state.miners[minerId].name = newName

NFT_TRANSFER

Transfer miner NFT ownership to another wallet.

FieldTypeNotes
type"NFT_TRANSFER"
fromstringCurrent owner
minerIdstring
tostringNew owner address

Validation:

  • state.miners[minerId].owner == from
  • to valid 40-hex address

Effect:

  • state.miners[minerId].owner = to
  • state.minerByAddress[from] removed
  • state.minerByAddress[to] = minerId

Builders

buildMinerRegisterTx(from, name, capabilities, modelInfo, nonce, privKey)
buildNftSetNameTx(from, minerId, newName, nonce, privKey)
buildNftTransferTx(from, minerId, to, nonce, privKey)

Next: NFT mint (ART/IMAGE/AUDIO) →