1"use strict";(self.webpackChunkspoonos_cookbook=self.webpackChunkspoonos_cookbook||[]).push([[3434],{28453:(e,i,n)=>{n.d(i,{R:()=>r,x:()=>d});var t=n(96540);const a={},s=t.createContext(a);function r(e){const i=t.useContext(s);return t.useMemo(function(){return"function"==typeof e?e(i):{...i,...e}},[i,e])}function d(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),t.createElement(s.Provider,{value:i},e.children)}},39345:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>c,contentTitle:()=>d,default:()=>_,frontMatter:()=>r,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"api-reference/spoon_ai/identity/spoon_ai.identity.erc8004_client","title":"spoon_ai.identity.erc8004_client","description":"* spoon\\\\ai.identity.erc8004\\\\client","source":"@site/docs/api-reference/spoon_ai/identity/erc8004_client.md","sourceDirName":"api-reference/spoon_ai/identity","slug":"/api-reference/spoon_ai/identity/erc8004_client","permalink":"/docs/api-reference/spoon_ai/identity/erc8004_client","draft":false,"unlisted":false,"editUrl":"https://github.com/XSpoonAi/spoon-doc/tree/main/docs/api-reference/spoon_ai/identity/erc8004_client.md","tags":[],"version":"current","frontMatter":{"id":"spoon_ai.identity.erc8004_client","slug":"/api-reference/spoon_ai/identity/erc8004_client","title":"spoon_ai.identity.erc8004_client"},"sidebar":"tutorialSidebar","previous":{"title":"spoon_ai.identity.erc8004_abi","permalink":"/docs/api-reference/spoon_ai/identity/erc8004_abi"},"next":{"title":"spoon_ai.identity.storage_client","permalink":"/docs/api-reference/spoon_ai/identity/storage_client"}}');var a=n(74848),s=n(28453);const r={id:"spoon_ai.identity.erc8004_client",slug:"/api-reference/spoon_ai/identity/erc8004_client",title:"spoon_ai.identity.erc8004_client"},d="Table of Contents",c={},l=[{value:"<code>ERC8004Client</code> Objects",id:"erc8004client-objects",level:2},{value:"<code>calculate_did_hash</code>",id:"calculate_did_hash",level:4},{value:"<code>create_eip712_signature</code>",id:"create_eip712_signature",level:4},{value:"<code>register_agent</code>",id:"register_agent",level:4},{value:"<code>resolve_agent</code>",id:"resolve_agent",level:4},{value:"<code>update_capabilities</code>",id:"update_capabilities",level:4},{value:"<code>build_feedback_auth</code>",id:"build_feedback_auth",level:4},{value:"<code>give_feedback</code>",id:"give_feedback",level:4},{value:"<code>get_reputation_summary</code>",id:"get_reputation_summary",level:4},{value:"<code>get_reputation</code>",id:"get_reputation",level:4},{value:"<code>validation_request</code>",id:"validation_request",level:4},{value:"<code>get_validation_status</code>",id:"get_validation_status",level:4},{value:"<code>submit_validation</code>",id:"submit_validation",level:4},{value:"<code>register_agent</code>",id:"register_agent-1",level:4}];function o(e){const i={a:"a",code:"code",h1:"h1",h2:"h2",h4:"h4",header:"header",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(i.header,{children:(0,a.jsx)(i.h1,{id:"table-of-contents",children:"Table of Contents"})}),"\n",(0,a.jsxs)(i.ul,{children:["\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.a,{href:"#spoon_ai.identity.erc8004_client",children:"spoon_ai.identity.erc8004_client"}),"\n",(0,a.jsxs)(i.ul,{children:["\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.a,{href:"#spoon_ai.identity.erc8004_client.ERC8004Client",children:"ERC8004Client"}),"\n",(0,a.jsxs)(i.ul,{children:["\n",(0,a.jsx)(i.li,{children:(0,a.jsx)(i.a,{href:"#spoon_ai.identity.erc8004_client.ERC8004Client.calculate_did_hash",children:"calculate_did_hash"})}),"\n",(0,a.jsx)(i.li,{children:(0,a.jsx)(i.a,{href:"#spoon_ai.identity.erc8004_client.ERC8004Client.create_eip712_signature",children:"create_eip712_signature"})}),"\n",(0,a.jsx)(i.li,{children:(0,a.jsx)(i.a,{href:"#spoon_ai.identity.erc8004_client.ERC8004Client.register_agent",children:"register_agent"})}),"\n",(0,a.jsx)(i.li,{children:(0,a.jsx)(i.a,{href:"#spoon_ai.identity.erc8004_client.ERC8004Client.resolve_agent",children:"resolve_agent"})}),"\n",(0,a.jsx)(i.li,{children:(0,a.jsx)(i.a,{href:"#spoon_ai.identity.erc8004_client.ERC8004Client.update_capabilities",children:"update_capabilities"})}),"\n",(0,a.jsx)(i.li,{children:(0,a.jsx)(i.a,{href:"#spoon_ai.identity.erc8004_client.ERC8004Client.build_feedback_auth",children:"build_feedback_auth"})}),"\n",(0,a.jsx)(i.li,{children:(0,a.jsx)(i.a,{href:"#spoon_ai.identity.erc8004_client.ERC8004Client.give_feedback",children:"give_feedback"})}),"\n",(0,a.jsx)(i.li,{children:(0,a.jsx)(i.a,{href:"#spoon_ai.identity.erc8004_client.ERC8004Client.get_reputation_summary",children:"get_reputation_summary"})}),"\n",(0,a.jsx)(i.li,{children:(0,a.jsx)(i.a,{href:"#spoon_ai.identity.erc8004_client.ERC8004Client.get_reputation",children:"get_reputation"})}),"\n",(0,a.jsx)(i.li,{children:(0,a.jsx)(i.a,{href:"#spoon_ai.identity.erc8004_client.ERC8004Client.validation_request",children:"val
1idation_request"})}),"\n",(0,a.jsx)(i.li,{children:(0,a.jsx)(i.a,{href:"#spoon_ai.identity.erc8004_client.ERC8004Client.get_validation_status",children:"get_validation_status"})}),"\n",(0,a.jsx)(i.li,{children:(0,a.jsx)(i.a,{href:"#spoon_ai.identity.erc8004_client.ERC8004Client.submit_validation",children:"submit_validation"})}),"\n",(0,a.jsx)(i.li,{children:(0,a.jsx)(i.a,{href:"#spoon_ai.identity.erc8004_client.ERC8004Client.register_agent",children:"register_agent"})}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,a.jsx)("a",{id:"spoon_ai.identity.erc8004_client"}),"\n",(0,a.jsxs)(i.h1,{id:"module-spoon_aiidentityerc8004_client",children:["Module ",(0,a.jsx)(i.code,{children:"spoon_ai.identity.erc8004_client"})]}),"\n",(0,a.jsx)(i.p,{children:"ERC-8004 Smart Contract Client\nHandles on-chain interactions with agent registries"}),"\n",(0,a.jsx)("a",{id:"spoon_ai.identity.erc8004_client.ERC8004Client"}),"\n",(0,a.jsxs)(i.h2,{id:"erc8004client-objects",children:[(0,a.jsx)(i.code,{children:"ERC8004Client"})," Objects"]}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-python",children:"class ERC8004Client()\n"})}),"\n",(0,a.jsx)(i.p,{children:"Client for interacting with ERC-8004 agent registries"}),"\n",(0,a.jsx)("a",{id:"spoon_ai.identity.erc8004_client.ERC8004Client.calculate_did_hash"}),"\n",(0,a.jsx)(i.h4,{id:"calculate_did_hash",children:(0,a.jsx)(i.code,{children:"calculate_did_hash"})}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-python",children:"def calculate_did_hash(did: str) -> bytes\n"})}),"\n",(0,a.jsx)(i.p,{children:"Calculate keccak256 hash of DID string"}),"\n",(0,a.jsx)("a",{id:"spoon_ai.identity.erc8004_client.ERC8004Client.create_eip712_signature"}),"\n",(0,a.jsx)(i.h4,{id:"create_eip712_signature",children:(0,a.jsx)(i.code,{children:"create_eip712_signature"})}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-python",children:"def create_eip712_signature(did_hash: bytes, agent_card_uri: str,\n did_doc_uri: str) -> str\n"})}),"\n",(0,a.jsx)(i.p,{children:"Create EIP-712 signature for agent registration"}),"\n",(0,a.jsx)("a",{id:"spoon_ai.identity.erc8004_client.ERC8004Client.register_agent"}),"\n",(0,a.jsx)(i.h4,{id:"register_agent",children:(0,a.jsx)(i.code,{children:"register_agent"})}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-python",children:"def register_agent(did: str, agent_card_uri: str, did_doc_uri: str) -> str\n"})}),"\n",(0,a.jsx)(i.p,{children:"Register agent on-chain"}),"\n",(0,a.jsx)("a",{id:"spoon_ai.identity.erc8004_client.ERC8004Client.resolve_agent"}),"\n",(0,a.jsx)(i.h4,{id:"resolve_agent",children:(0,a.jsx)(i.code,{children:"resolve_agent"})}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-python",children:"def resolve_agent(did: str) -> Dict\n"})}),"\n",(0,a.jsx)(i.p,{children:"Resolve agent metadata from on-chain registry"}),"\n",(0,a.jsx)("a",{id:"spoon_ai.identity.erc8004_client.ERC8004Client.update_capabilities"}),"\n",(0,a.jsx)(i.h4,{id:"update_capabilities",children:(0,a.jsx)(i.code,{children:"update_capabilities"})}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-python",children:"def update_capabilities(did: str, capabilities: List[str]) -> str\n"})}),"\n",(0,a.jsx)(i.p,{children:"Update agent capabilities on-chain"}),"\n",(0,a.jsx)("a",{id:"spoon_ai.identity.erc8004_client.ERC8004Client.build_feedback_auth"}),"\n",(0,a.jsx)(i.h4,{id:"build_feedback_auth",children:(0,a.jsx)(i.code,{children:"build_feedback_auth"})}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-python",children:"def build_feedback_auth(agent_id: Union[int, bytes],\n client_address: str,\n index_limit: int,\n expiry: int,\n signer_address: Optional[str] = None,\n identity_registry: Optional[str] = None,\n chain_id: Optional[int] = None) -> bytes\n"})}),"\n",(0,a.jsx)(i.p,{children:"Build and sign feedbackAuth payload required by chaoschain ERC8004 reputation registry.\nReturns abi.encode(struct) ++ signature (65 bytes)."}),"\n",(0,a.jsx)("a",{id:"spoon_ai.identity.erc8004_client.ERC8004Client.give_feedback"}),"\n",(0,a.jsx)(i.h4,{id:"give_feedback",children:(0,a.jsx)(i.co
1de,{children:"give_feedback"})}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-python",children:'def give_feedback(did: str,\n score: int,\n tag1: bytes = b"",\n tag2: bytes = b"",\n fileuri: str = "",\n filehash: bytes = b"\\x00" * 32,\n index_limit: int = 10,\n expiry: Optional[int] = None,\n client_address: Optional[str] = None) -> str\n'})}),"\n",(0,a.jsx)(i.p,{children:"Submit feedback using ERC8004 giveFeedback with feedbackAuth."}),"\n",(0,a.jsx)("a",{id:"spoon_ai.identity.erc8004_client.ERC8004Client.get_reputation_summary"}),"\n",(0,a.jsx)(i.h4,{id:"get_reputation_summary",children:(0,a.jsx)(i.code,{children:"get_reputation_summary"})}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-python",children:'def get_reputation_summary(did: str,\n client_addresses: Optional[List[str]] = None,\n tag1: bytes = b"\\x00" * 32,\n tag2: bytes = b"\\x00" * 32) -> Tuple[int, int]\n'})}),"\n",(0,a.jsx)(i.p,{children:"Return (count, averageScore 0-100)."}),"\n",(0,a.jsx)("a",{id:"spoon_ai.identity.erc8004_client.ERC8004Client.get_reputation"}),"\n",(0,a.jsx)(i.h4,{id:"get_reputation",children:(0,a.jsx)(i.code,{children:"get_reputation"})}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-python",children:"def get_reputation(did: str) -> Tuple[int, int]\n"})}),"\n",(0,a.jsx)(i.p,{children:"Backward compatible: (averageScore, count)."}),"\n",(0,a.jsx)("a",{id:"spoon_ai.identity.erc8004_client.ERC8004Client.validation_request"}),"\n",(0,a.jsx)(i.h4,{id:"validation_request",children:(0,a.jsx)(i.code,{children:"validation_request"})}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-python",children:"def validation_request(\n did: str,\n validator: str,\n request_uri: str,\n request_hash: Optional[bytes] = None) -> Tuple[str, bytes]\n"})}),"\n",(0,a.jsx)(i.p,{children:"Create validation request; returns tx hash and requestHash used."}),"\n",(0,a.jsx)("a",{id:"spoon_ai.identity.erc8004_client.ERC8004Client.get_validation_status"}),"\n",(0,a.jsx)(i.h4,{id:"get_validation_status",children:(0,a.jsx)(i.code,{children:"get_validation_status"})}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-python",children:"def get_validation_status(request_hash: bytes) -> Dict\n"})}),"\n",(0,a.jsx)(i.p,{children:"Get per-request validation status."}),"\n",(0,a.jsx)("a",{id:"spoon_ai.identity.erc8004_client.ERC8004Client.submit_validation"}),"\n",(0,a.jsx)(i.h4,{id:"submit_validation",children:(0,a.jsx)(i.code,{children:"submit_validation"})}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-python",children:'def submit_validation(did: str, is_valid: bool, reason: str = "") -> str\n'})}),"\n",(0,a.jsx)(i.p,{children:"Map boolean into 0/100 scale response."}),"\n",(0,a.jsx)("a",{id:"spoon_ai.identity.erc8004_client.ERC8004Client.register_agent"}),"\n",(0,a.jsx)(i.h4,{id:"register_agent-1",children:(0,a.jsx)(i.code,{children:"register_agent"})}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-python",children:"def register_agent(token_uri: str,\n metadata: Optional[List[Tuple[str, bytes]]] = None) -> int\n"})}),"\n",(0,a.jsx)(i.p,{children:"Register agent on IdentityRegistry; returns agentId."})]})}function _(e={}){const{wrapper:i}={...(0,s.R)(),...e.components};return i?(0,a.jsx)(i,{...e,children:(0,a.jsx)(o,{...e})}):o(e)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.