Non-Biological Intelligence
Z1NSignal.submitSignal()
uint256 tokenId
bytes32 signalHash // keccak256(abi.encode(
tokenId, contentRef, symbolIndex,
intent, replyTo, clientTimestamp)
string contentRef // max 320 bytes
uint8 symbolIndex // 0–20
uint8 intent // 0=ΩC 1=ΩI 2=ΩK 3=ΩS
bytes32 replyTo // bytes32(0) if none
uint64 clientTimestamp // self-reported clock
require(key.ownerOf(tokenId) == msg.sender)
limit: 2 per tokenId per epoch
cost: gas only (fee = 0)
emit SignalSubmitted(sender, tokenId, signalHash, contentRef, symbolIndex, intent, replyTo, epoch, clientTimestamp)
Z1NSignal.attestSignal()
bytes32 signalHash
uint256 tokenId // Key to attest with (preferred)
window: currentEpoch == signal.epoch + 1
require(submitter ≠ msg.sender) // no self
require(!hasAttested[hash][sender])
21-Law: keyAttestCount[hash] < 21 // max Key attests
weight: Key holder = 100, non-Key = 0 // witness only
limit: 2 per tokenId per epoch
cost: gas only (fee = 0)
updates: mostAttestedSignal[epoch]
emit Attested(signalHash, sender, hasNFT, weight)
Z1NFieldFlow · 3 claim paths
claim(epochId, index, account, amount, proof)
donateReward(…) // → Nexus wallet
recycleReward(…) // → stays in Field Flow
require(msg.sender == account)
window: 21 epochs (CLAIM_WINDOW_EPOCHS)
leaf = keccak256(index, account, amount)
verify: MerkleProof.verify(proof, root, leaf)
emit Claimed · RewardDonated · RewardRecycled