Skip to main content

Table of Contents

Module spoon_ai.identity.erc8004_client

ERC-8004 Smart Contract Client Handles on-chain interactions with agent registries

ERC8004Client Objects​

class ERC8004Client()

Client for interacting with ERC-8004 agent registries

calculate_did_hash​

def calculate_did_hash(did: str) -> bytes

Calculate keccak256 hash of DID string

create_eip712_signature​

def create_eip712_signature(did_hash: bytes, agent_card_uri: str,
did_doc_uri: str) -> str

Create EIP-712 signature for agent registration

register_agent​

def register_agent(did: str, agent_card_uri: str, did_doc_uri: str) -> str

Register agent on-chain

resolve_agent​

def resolve_agent(did: str) -> Dict

Resolve agent metadata from on-chain registry

update_capabilities​

def update_capabilities(did: str, capabilities: List[str]) -> str

Update agent capabilities on-chain

build_feedback_auth​

def build_feedback_auth(agent_id: Union[int, bytes],
client_address: str,
index_limit: int,
expiry: int,
signer_address: Optional[str] = None,
identity_registry: Optional[str] = None,
chain_id: Optional[int] = None) -> bytes

Build and sign feedbackAuth payload required by chaoschain ERC8004 reputation registry. Returns abi.encode(struct) ++ signature (65 bytes).

give_feedback​

def give_feedback(did: str,
score: int,
tag1: bytes = b"",
tag2: bytes = b"",
fileuri: str = "",
filehash: bytes = b"\x00" * 32,
index_limit: int = 10,
expiry: Optional[int] = None,
client_address: Optional[str] = None) -> str

Submit feedback using ERC8004 giveFeedback with feedbackAuth.

get_reputation_summary​

def get_reputation_summary(did: str,
client_addresses: Optional[List[str]] = None,
tag1: bytes = b"\x00" * 32,
tag2: bytes = b"\x00" * 32) -> Tuple[int, int]

Return (count, averageScore 0-100).

get_reputation​

def get_reputation(did: str) -> Tuple[int, int]

Backward compatible: (averageScore, count).

validation_request​

def validation_request(
did: str,
validator: str,
request_uri: str,
request_hash: Optional[bytes] = None) -> Tuple[str, bytes]

Create validation request; returns tx hash and requestHash used.

get_validation_status​

def get_validation_status(request_hash: bytes) -> Dict

Get per-request validation status.

submit_validation​

def submit_validation(did: str, is_valid: bool, reason: str = "") -> str

Map boolean into 0/100 scale response.

register_agent​

def register_agent(token_uri: str,
metadata: Optional[List[Tuple[str, bytes]]] = None) -> int

Register agent on IdentityRegistry; returns agentId.