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.