You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Three smart contracts forming a decentralized agent identity, job validation, and reputation system on MultiversX. Contracts communicate via cross-contract storage reads (storage_mapper_from_address) — no async calls.
1. Identity Registry
Manages agent identities as soulbound (non-transferable) NFTs.
1.1 Endpoints
Endpoint
Access
Description
init()
deploy
No-op constructor
upgrade()
upgrade
No-op
issue_token(name, ticker)
owner, payable EGLD
Issues the NFT collection; can only be called once
Creates job with New status. If service_id provided, reads agent's service config from identity registry via cross-contract storage, validates payment token/nonce, requires amount >= price, and forwards payment to agent owner
submit_proof(job_id, proof)
anyone
Sets proof data and transitions status New -> Pending
submit_proof_with_nft(job_id, proof)
anyone, payable NFT
Like submit_proof but accepts an NFT as proof attachment
Collects feedback on jobs and computes on-chain reputation scores. No pre-authorization needed — the employer who created the job can submit feedback directly.
3.1 Endpoints
Endpoint
Access
Description
init(validation_addr, identity_addr)
deploy
Stores both contract addresses
upgrade()
upgrade
No-op
submit_feedback(job_id, agent_nonce, rating)
employer only
Validates: (1) job exists via cross-contract read from validation registry, (2) caller is the employer who created the job, (3) no duplicate feedback for this job. Updates cumulative moving average score
append_response(job_id, response_uri)
anyone
ERC-8004: Anyone can append a response URI to a job (e.g., agent showing refund, data aggregator tagging feedback as spam)
All inter-contract communication uses #[storage_mapper_from_address] — synchronous reads from another contract's storage on the same shard. No async calls, no callbacks.
Consumer
Source Contract
Storage Key
Mapper Type
Validation Registry
Identity Registry
agents
BiDiMapper<u64, ManagedAddress>
Validation Registry
Identity Registry
agentServiceConfigs
MapMapper<u32, Payment>
Reputation Registry
Validation Registry
jobData
SingleValueMapper<JobData>
Reputation Registry
Identity Registry
agents
BiDiMapper<u64, ManagedAddress>
Defined in common::cross_contract::CrossContractModule.