{"data":{"source":{"origin":"sourcify","address":"0x2Ce6311ddAE708829bc0784C967b7d77D19FD779","name":"FiatTokenV2_2","viaProxy":true},"results":{"token-trap-detector":{"honeypotProbability":25,"proxyRisk":"high","maxSafeSlippage":1,"verdict":"CAUTION","confidence":"medium","risk_factors":["Privileged functions with live control: blacklist(address), isBlacklisted(address), mint(address,uint256), pause(), unpause()","Proxy upgradeable by a single key (OpenZeppelin legacy (zeppelinos) proxy)"],"mitigating_factors":["honeypot.is simulated a buy and a sell: buy tax 0%, sell tax 0%"],"summary":"CAUTION: decided by rules from a honeypot.is buy/sell simulation and on-chain control telemetry, with no model call. Simulated taxes 0% buy / 0% sell; proxy risk high; live privileged control present.","verdict_floor_applied":false,"decidedBy":"rules:simulation","evidenceBasis":"simulation","llmCalls":0,"source_review":{"status":"not_requested","observations":[]},"oracles":{"honeypotIs":{"simulated":true,"isHoneypot":false,"reason":null,"buyTax":0,"sellTax":0,"transferTax":0,"simulationError":null},"goPlus":null,"errors":["GoPlus has no record for this token"],"sources":[{"name":"honeypot.is","url":"https://api.honeypot.is/v2/IsHoneypot?address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&chainID=8453","status":"ok","detail":null},{"name":"GoPlus","url":"https://api.gopluslabs.io/api/v1/token_security/8453?contract_addresses=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","status":"no_data","detail":null}]},"privilegedSelectorsFound":[{"selector":"0xf9f92be4","signature":"blacklist(address)","category":"blacklist"},{"selector":"0xfe575a87","signature":"isBlacklisted(address)","category":"blacklist"},{"selector":"0x40c10f19","signature":"mint(address,uint256)","category":"mint"},{"selector":"0x8456cb59","signature":"pause()","category":"trading_switch"},{"selector":"0x3f4ba83a","signature":"unpause()","category":"trading_switch"}],"telemetry":{"chainId":8453,"blockNumber":53987149,"address":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","proxy":{"type":"OpenZeppelin legacy (zeppelinos) proxy","implementation":"0x2Ce6311ddAE708829bc0784C967b7d77D19FD779","admin":"0x4fc7850364958d97B4d3f5A08f79db2493f8cA44","beacon":null,"adminAccount":{"address":"0x4fc7850364958d97B4d3f5A08f79db2493f8cA44","isContract":false,"codeSize":0,"kind":null},"implementationCodeSize":23464},"bytecode":{"contract":{"codeSize":1852,"codeHash":"0xa6705a10bb756b5dea144591118be77d7af0c3eee3bf2dfe2583dcb0364fefab","opcodes":{"ORIGIN":0,"SSTORE":2,"CREATE":0,"CALL":1,"CALLCODE":0,"DELEGATECALL":1,"CREATE2":0,"SELFDESTRUCT":0},"pushedSelectors":6,"dispatchedSelectors":5,"selectorSource":"dispatch","knownSelectors":[{"selector":"0x8f283970","signature":"changeAdmin(address)","category":"upgrade"},{"selector":"0x3659cfe6","signature":"upgradeTo(address)","category":"upgrade"},{"selector":"0x4f1ef286","signature":"upgradeToAndCall(address,bytes)","category":"upgrade"}]},"implementation":{"codeSize":23464,"codeHash":"0x11b75a237997ab8328f65b2d5a55c10f0346d0a175741ed42ddf4f2c66b9e873","opcodes":{"ORIGIN":8,"SSTORE":39,"CREATE":0,"CALL":1,"CALLCODE":0,"DELEGATECALL":2,"CREATE2":0,"SELFDESTRUCT":0},"pushedSelectors":59,"dispatchedSelectors":55,"selectorSource":"dispatch","knownSelectors":[{"selector":"0xf9f92be4","signature":"blacklist(address)","category":"blacklist"},{"selector":"0xfe575a87","signature":"isBlacklisted(address)","category":"blacklist"},{"selector":"0xdd62ed3e","signature":"allowance(address,address)","category":"erc20"},{"selector":"0x095ea7b3","signature":"approve(address,uint256)","category":"erc20"},{"selector":"0x70a08231","signature":"balanceOf(address)","category":"erc20"},{"selector":"0x313ce567","signature":"decimals()","category":"erc20"},{"selector":"0x06fdde03","signature":"name()","category":"erc20"},{"selector":"0x95d89b41","signature":"symbol()","category":"erc20"},{"selector":"0x18160ddd","signature":"totalSupply()","category":"erc20"},{"selector":"0xa9059cbb","signature":"transfer(address,uint256)","category":"erc20"},{"selector":"0x23b872dd","signature":"transferFrom(address,address,uint256)","category":"erc20"},{"selector":"0x40c10f19","signature":"mint(address,uint256)","category":"mint"},{"selector":"0x8da5cb5b","signature":"owner()","category":"ownership"},{"selector":"0xf2fde38b","signature":"transferOwnership(address)","category":"ownership"},{"selector":"0x8456cb59","signature":"pause()","category":"trading_switch"},{"selector":"0x3f4ba83a","signature":"unpause()","category":"trading_switch"}]}},"erc20":{"name":"USD Coin","symbol":"USDC","decimals":6,"totalSupply":"4265032530616116"},"ownership":{"owner":"0x3ABd6f64A422225E61E435baE41db12096106df7","renounced":false,"ownerAccount":{"address":"0x3ABd6f64A422225E61E435baE41db12096106df7","isContract":false,"codeSize":0,"kind":null},"ownerSupplyPct":0,"adminFunction":{"address":"0x4fc7850364958d97B4d3f5A08f79db2493f8cA44","renounced":false},"accessControl":false},"privilegedSelectorsFound":[{"selector":"0xf9f92be4","signature":"blacklist(address)","category":"blacklist"},{"selector":"0xfe575a87","signature":"isBlacklisted(address)","category":"blacklist"},{"selector":"0x40c10f19","signature":"mint(address,uint256)","category":"mint"},{"selector":"0x8456cb59","signature":"pause()","category":"trading_switch"},{"selector":"0x3f4ba83a","signature":"unpause()","category":"trading_switch"}]}},"contract-auditor":{"verdict":"warn","verdict_reason":"3 medium or lower severity findings, or high severity findings of low confidence; review before deploying","risk_score":10,"status":"complete","next_step":"Review \"delegatecall present\" at contract.sol:695, fix or document accepted risks, then re-run.","top_findings":[{"id":"F-01","title":"delegatecall present","severity":"medium","confidence":"low","file":"contract.sol","line":695,"fix":"Restrict the target to a trusted, immutable or access-controlled address and keep storage layouts aligned."},{"id":"F-02","title":"initializeV2_2 has no access control and can be front-run if not called atomically","severity":"low","confidence":"medium","file":"contract.sol","line":47,"fix":"Always call initializeV2_2 atomically with the upgrade (upgradeToAndCall). Optionally restrict the initializer to the owner, e.g. add an onlyOwner modifier."},{"id":"F-03","title":"Heavy privileged-role centralization (owner, blacklister, pauser, masterMinter, rescuer)","severity":"low","confidence":"high","file":"contract.sol","line":2576,"fix":"Hold these roles in multisigs or timelocked governance, and monitor role-change events."}],"source":{"kind":"code","files":["contract.sol"]},"sarif":{"$schema":"https://raw.githubusercontent.com/oasis-tcs/sarif-spec/main/sarif-2.1/schema/sarif-schema-2.1.0.json","version":"2.1.0","runs":[{"tool":{"driver":{"name":"writerslogic-contract-auditor","version":"1.0.0","semanticVersion":"1.0.0","informationUri":"https://agents.writerslogic.com","rules":[{"id":"sol/delegatecall_proxy","name":"delegatecall_proxy","shortDescription":{"text":"Delegatecall or proxy risk"},"defaultConfiguration":{"level":"warning"},"properties":{"tags":["security","smart-contract","solidity"],"security-severity":"5.5"}},{"id":"sol/storage_collision_uninitialized","name":"storage_collision_uninitialized","shortDescription":{"text":"Storage collision or uninitialized state"},"defaultConfiguration":{"level":"note"},"properties":{"tags":["security","smart-contract","solidity"],"security-severity":"3.0"}},{"id":"sol/centralization_risk","name":"centralization_risk","shortDescription":{"text":"Centralization risk"},"defaultConfiguration":{"level":"note"},"properties":{"tags":["security","smart-contract","solidity"],"security-severity":"3.0"}},{"id":"sol/other","name":"other","shortDescription":{"text":"Other"},"defaultConfiguration":{"level":"note"},"properties":{"tags":["security","smart-contract","solidity"],"security-severity":"0.5"}},{"id":"sol/logic_error","name":"logic_error","shortDescription":{"text":"Logic error"},"defaultConfiguration":{"level":"note"},"properties":{"tags":["security","smart-contract","solidity"],"security-severity":"0.5"}}]}},"results":[{"ruleId":"sol/delegatecall_proxy","ruleIndex":0,"level":"warning","message":{"text":"delegatecall present. delegatecall executes foreign code against this contract's storage. It is unsafe when the target is attacker-influenced or its storage layout differs. Fix: Restrict the target to a trusted, immutable or access-controlled address and keep storage layouts aligned."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"contract.sol","uriBaseId":"%SRCROOT%"},"region":{"startLine":695,"endLine":695}}}],"partialFingerprints":{"primaryLocationLineHash/v1":"F-01"},"properties":{"severity":"medium","confidence":"low","source":"static","verification":"static_detector"}},{"ruleId":"sol/storage_collision_uninitialized","ruleIndex":1,"level":"note","message":{"text":"initializeV2_2 has no access control and can be front-run if not called atomically. initializeV2_2 is external with no caller restriction. Anyone can call it while _initializedVersion == 2. The caller picks the new token symbol and the list of accounts to migrate from the deprecated blacklist. Each migrated account must already be in the old blacklist, so the damage is bounded to a symbol overwrite and an incomplete migration. An account left out of the list stays blacklisted only in the deprecated mapping, and so is effectively unblacklisted under the new data structure. The risk exists only if the upgrade and the initializer are not executed in one transaction. Fix: Always call initializeV2_2 atomically with the upgrade (upgradeToAndCall). Optionally restrict the initializer to the owner, e.g. add an onlyOwner modifier."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"contract.sol","uriBaseId":"%SRCROOT%"},"region":{"startLine":47,"endLine":47}}}],"partialFingerprints":{"primaryLocationLineHash/v1":"F-02"},"properties":{"severity":"low","confidence":"medium","source":"model","verification":"verified"}},{"ruleId":"sol/centralization_risk","ruleIndex":2,"level":"note","message":{"text":"Heavy privileged-role centralization (owner, blacklister, pauser, masterMinter, rescuer). The blacklister can freeze any account's balance, since _setBalance reverts for blacklisted accounts. The pauser can halt all transfers. The owner can replace the masterMinter, pauser, blacklister and rescuer. The masterMinter can configure minters with arbitrary allowances. The rescuer can move any ERC-20 held by the contract. This is inherent to a regulated fiat-backed stablecoin but is still a trust assumption. Fix: Hold these roles in multisigs or timelocked governance, and monitor role-change events."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"contract.sol","uriBaseId":"%SRCROOT%"},"region":{"startLine":2576,"endLine":2576}}}],"partialFingerprints":{"primaryLocationLineHash/v1":"F-03"},"properties":{"severity":"low","confidence":"high","source":"model","verification":"verified"}},{"ruleId":"sol/other","ruleIndex":3,"level":"note","message":{"text":"Floating compiler pragma. The pragma accepts several compiler versions, so the deployed bytecode may come from a version that was not tested. Fix: Pin the exact compiler version used in testing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"contract.sol","uriBaseId":"%SRCROOT%"},"region":{"startLine":20,"endLine":20}}}],"partialFingerprints":{"primaryLocationLineHash/v1":"F-04"},"properties":{"severity":"informational","confidence":"high","source":"static","verification":"static_detector"}},{"ruleId":"sol/logic_error","ruleIndex":4,"level":"note","message":{"text":"Blacklist checks are inconsistent across approval and permit entry points. The V2_2 overrides of approve, increaseAllowance, decreaseAllowance and the bytes-signature permit drop the notBlacklisted checks that earlier versions had. The v,r,s permit overload in V2_2 also drops them. transferWithAuthorization and receiveWithAuthorization still check both parties. Blacklisted accounts can therefore change allowances and spend them as spenders in some flows. Transfers still fail, because _setBalance and the notBlacklisted modifiers block them. The impact is limited to state and allowance noise, plus behaviour that differs from older versions and from the documented intent. Fix: If the intent is to prevent blacklisted accounts from interacting at all, restore notBlacklisted(owner)/notBlacklisted(spender) on these functions. Otherwise document that this is deliberate."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"contract.sol","uriBaseId":"%SRCROOT%"},"region":{"startLine":103,"endLine":103}}}],"partialFingerprints":{"primaryLocationLineHash/v1":"F-05"},"properties":{"severity":"informational","confidence":"medium","source":"model","verification":"verified"}}]}]},"contract_names":["FiatTokenV2_2","SafeMath","Address","IERC20","SafeERC20","Ownable","EIP2612","EIP3009","EIP712","Pausable","ECRecover","Rescuable","FiatTokenV1","FiatTokenV2","EIP712Domain","Blacklistable","FiatTokenV2_1","IERC1271","FiatTokenV1_1","MessageHashUtils"],"compiler_version":"0.6.12, >=0.6.0 <0.8.0, >=0.6.2 <0.8.0","summary":"FiatTokenV2_2 is Circle's USDC v2.2 implementation. It packs the blacklist flag into the top bit of each balance and adds ERC-1271-aware permit and EIP-3009 overloads. I found no critical or high-severity issue in the code. The mint, burn, transfer and balance paths use SafeMath and the top-bit mask correctly. The signature flows use a nonce (permit) or a unique authorization nonce, plus the chainId in the domain separator and an expiry. Signature checks for contract wallets go through static calls, so they cannot reenter. The remaining findings are an unauthenticated initializer, blacklist checks that are inconsistent across the permit/approve paths, and privileged-role centralization. Lead L1 is refuted for the primary contract, which uses a fixed 0.6.12 pragma; only the vendored OpenZeppelin files use ranges. Lead L2 is refuted: Address.functionDelegateCall is an unused internal library function, and SafeERC20 only uses functionCall.","overall_risk":"medium","findings":[{"id":"F-01","title":"delegatecall present","severity":"medium","category":"delegatecall_proxy","location":"Address.functionDelegateCall, line 695","code_snippet":"(bool success, bytes memory returndata) = target.delegatecall(data);","description":"delegatecall executes foreign code against this contract's storage. It is unsafe when the target is attacker-influenced or its storage layout differs.","exploit_scenario":"If the target is user-controlled, an attacker supplies code that overwrites ownership or drains funds.","recommendation":"Restrict the target to a trusted, immutable or access-controlled address and keep storage layouts aligned.","confidence":"low","source":"static","verification":"static_detector","line_start":695,"line_end":695,"file":"contract.sol","line":695,"end_line":695},{"id":"F-02","title":"initializeV2_2 has no access control and can be front-run if not called atomically","severity":"low","category":"storage_collision_uninitialized","location":"FiatTokenV2_2.initializeV2_2, lines 42-66","code_snippet":"require(_initializedVersion == 2);","description":"initializeV2_2 is external with no caller restriction. Anyone can call it while _initializedVersion == 2. The caller picks the new token symbol and the list of accounts to migrate from the deprecated blacklist. Each migrated account must already be in the old blacklist, so the damage is bounded to a symbol overwrite and an incomplete migration. An account left out of the list stays blacklisted only in the deprecated mapping, and so is effectively unblacklisted under the new data structure. The risk exists only if the upgrade and the initializer are not executed in one transaction.","exploit_scenario":"The proxy is upgraded to V2_2 in one transaction and initializeV2_2 is sent in a later one. An attacker front-runs it with a bogus symbol and an empty or partial account list. _initializedVersion becomes 3 and the legitimate initialization can no longer run. Blacklisted accounts omitted from the list are no longer blocked.","recommendation":"Always call initializeV2_2 atomically with the upgrade (upgradeToAndCall). Optionally restrict the initializer to the owner, e.g. add an onlyOwner modifier.","confidence":"medium","source":"model","verification":"verified","line_start":47,"line_end":47,"file":"contract.sol","line":47,"end_line":47},{"id":"F-03","title":"Heavy privileged-role centralization (owner, blacklister, pauser, masterMinter, rescuer)","severity":"low","category":"centralization_risk","location":"Blacklistable.blacklist line 2576; Pausable.pause line 1562","code_snippet":"function blacklist(address _account) external onlyBlacklister {","description":"The blacklister can freeze any account's balance, since _setBalance reverts for blacklisted accounts. The pauser can halt all transfers. The owner can replace the masterMinter, pauser, blacklister and rescuer. The masterMinter can configure minters with arbitrary allowances. The rescuer can move any ERC-20 held by the contract. This is inherent to a regulated fiat-backed stablecoin but is still a trust assumption.","exploit_scenario":"A compromised blacklister or owner key freezes users' funds or censors transfers. A compromised masterMinter key lets an attacker configure a minter with an arbitrary allowance and inflate supply.","recommendation":"Hold these roles in multisigs or timelocked governance, and monitor role-change events.","confidence":"high","source":"model","verification":"verified","line_start":2576,"line_end":2576,"file":"contract.sol","line":2576,"end_line":2576},{"id":"F-04","title":"Floating compiler pragma","severity":"informational","category":"other","location":"(file level), line 20","code_snippet":"pragma solidity 0.6.12;","description":"The pragma accepts several compiler versions, so the deployed bytecode may come from a version that was not tested.","exploit_scenario":"n/a","recommendation":"Pin the exact compiler version used in testing.","confidence":"high","source":"static","verification":"static_detector","line_start":20,"line_end":20,"file":"contract.sol","line":20,"end_line":20},{"id":"F-05","title":"Blacklist checks are inconsistent across approval and permit entry points","severity":"informational","category":"logic_error","location":"FiatTokenV2_2.permit (bytes signature) lines 96-104; approve lines 260-268; increaseAllowance/decreaseAllowance lines 288-309","code_snippet":"_permit(owner, spender, value, deadline, signature);","description":"The V2_2 overrides of approve, increaseAllowance, decreaseAllowance and the bytes-signature permit drop the notBlacklisted checks that earlier versions had. The v,r,s permit overload in V2_2 also drops them. transferWithAuthorization and receiveWithAuthorization still check both parties. Blacklisted accounts can therefore change allowances and spend them as spenders in some flows. Transfers still fail, because _setBalance and the notBlacklisted modifiers block them. The impact is limited to state and allowance noise, plus behaviour that differs from older versions and from the documented intent.","exploit_scenario":"n/a","recommendation":"If the intent is to prevent blacklisted accounts from interacting at all, restore notBlacklisted(owner)/notBlacklisted(spender) on these functions. Otherwise document that this is deliberate.","confidence":"medium","source":"model","verification":"verified","line_start":103,"line_end":103,"file":"contract.sol","line":103,"end_line":103}],"not_checked":["Inherited contract AbstractFiatTokenV2 is not in the provided source","Inherited contract AbstractFiatTokenV1 is not in the provided source","Import ./IERC20.sol is not in the provided source","Import ../../math/SafeMath.sol is not in the provided source","Import ../../utils/Address.sol is not in the provided source","Import ./AbstractFiatTokenV2.sol is not in the provided source","Import ../util/SignatureChecker.sol is not in the provided source","Import ./AbstractFiatTokenV2.sol is not in the provided source","Import ../util/SignatureChecker.sol is not in the provided source","Import ./AbstractFiatTokenV1.sol is not in the provided source","The code executed by delegatecall is not part of the provided source","Deployed bytecode, off-chain components, and economic or oracle assumptions are outside this source-level review"],"severity_counts":{"critical":0,"high":0,"medium":1,"low":2,"informational":2},"lines_of_code":2808}},"deterministic":false},"_provenance":{"version":"writerslogic-provenance/1","issuer":"did:web:agents.writerslogic.com","verify":{"endpoint":"POST /api/v1/verify-provenance","did":"did:web:agents.writerslogic.com"},"manifest":{"format":"application/json","instance_id":"xmp:iid:1297a182-200c-4415-b7dc-819be44c2388","claim_generator_info":[{"name":"WritersLogic x402 Agent Hub","version":"2.0.0"}],"title":"Token Due Diligence Pack","assertions":[{"label":"c2pa.actions.v2","data":{"actions":[{"action":"c2pa.created","when":"2026-11-06T17:57:12.859Z","softwareAgent":{"name":"writerslogic-agent-hub/token-due-diligence","version":"2.0.0"},"digitalSourceType":"http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia","parameters":{"endpoint":"POST /api/v1/bundles/token-due-diligence","inputDigest":{"alg":"sha256","hash":"7a9738ed20d014102fba08544e1f1b581267636d0519c2cd66cfa9797ce6c25f","canonicalization":"JCS"}}}]}},{"label":"c2pa.hash.data","data":{"alg":"sha256","hash":"b988de454ac814cd517bb4c59b97db26cb6876f99f4c3701ed4e6e9d1f7bb07d","name":"jcs-canonical-json(data)"}},{"label":"c2pa.ingredient.v3","data":{"title":"https://sourcify.dev/server/v2/contract/8453/0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913?fields=proxyResolution","format":"application/json","relationship":"inputTo","dc":{"source":"https://sourcify.dev/server/v2/contract/8453/0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913?fields=proxyResolution","date":"2026-11-06T17:56:45.150Z"},"hash":{"alg":"sha256","hash":"d2141b2f94871371c84e594f4be84da45851f5ef1e12e2d2b0faf3e995c5b675","basis":"body"}}},{"label":"c2pa.ingredient.v3","data":{"title":"https://sourcify.dev/server/v2/contract/8453/0x2Ce6311ddAE708829bc0784C967b7d77D19FD779?fields=sources,compilation","format":"application/json","relationship":"inputTo","dc":{"source":"https://sourcify.dev/server/v2/contract/8453/0x2Ce6311ddAE708829bc0784C967b7d77D19FD779?fields=sources,compilation","date":"2026-11-06T17:56:45.321Z"},"hash":{"alg":"sha256","hash":"1021e5687ba81244cec733b790469758f0af14de24284f36b9aafdcda3f22a27","basis":"body"}}},{"label":"c2pa.ingredient.v3","data":{"title":"https://api.developer.coinbase.com/rpc/v1/base/H40340sxRub3vIuyhYC0nu4IGzzgj9bw","format":"application/json","relationship":"inputTo","dc":{"source":"https://api.developer.coinbase.com/rpc/v1/base/H40340sxRub3vIuyhYC0nu4IGzzgj9bw","date":"2026-11-06T17:56:45.445Z"},"hash":{"alg":"sha256","hash":"bbc2d1ff4e13ca0bed8010574f456c2f4e5d4e4adec5932ab529e6551512a92a","basis":"body"}}},{"label":"c2pa.ingredient.v3","data":{"title":"https://api.developer.coinbase.com/rpc/v1/base/H40340sxRub3vIuyhYC0nu4IGzzgj9bw","format":"application/json","relationship":"inputTo","dc":{"source":"https://api.developer.coinbase.com/rpc/v1/base/H40340sxRub3vIuyhYC0nu4IGzzgj9bw","date":"2026-11-06T17:56:45.556Z"},"hash":{"alg":"sha256","hash":"84b2cf68feaa3cf97381efccc79f3990270fcae0db0cfdd0b2b0104e01b521d9","basis":"body"}}},{"label":"c2pa.ingredient.v3","data":{"title":"https://api.gopluslabs.io/api/v1/token_security/8453?contract_addresses=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","format":"application/json","relationship":"inputTo","dc":{"source":"https://api.gopluslabs.io/api/v1/token_security/8453?contract_addresses=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","date":"2026-11-06T17:56:45.649Z"},"hash":{"alg":"sha256","hash":"8f78a6007b5c143a7d13aa97b7a1a7edd72054530745c3e8d658e5cb677a75b9","basis":"body"}}},{"label":"c2pa.ingredient.v3","data":{"title":"https://api.honeypot.is/v2/IsHoneypot?address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&chainID=8453","format":"application/json","relationship":"inputTo","dc":{"source":"https://api.honeypot.is/v2/IsHoneypot?address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&chainID=8453","date":"2026-11-06T17:56:45.829Z"},"hash":{"alg":"sha256","hash":"60477200aa220b47880ecc91e269a3b23d009d4871fc59e6ff0482d3bcb36ca3","basis":"body"}}},{"label":"c2pa.ingredient.v3","data":{"title":"https://api.developer.coinbase.com/rpc/v1/base/H40340sxRub3vIuyhYC0nu4IGzzgj9bw","format":"application/json","relationship":"inputTo","dc":{"source":"https://api.developer.coinbase.com/rpc/v1/base/H40340sxRub3vIuyhYC0nu4IGzzgj9bw","date":"2026-11-06T17:56:45.981Z"},"hash":{"alg":"sha256","hash":"74250213012b9281bbe664314d11e63c579dc6c06cf1a9fe5675d6fcf8157667","basis":"body"}}}]},"credential":{"@context":["https://www.w3.org/ns/credentials/v2"],"id":"urn:uuid:1e67d5e4-ba12-4258-96d8-1a7983d6fc0b","type":["VerifiableCredential","AgentOutputCredential"],"issuer":"did:web:agents.writerslogic.com","validFrom":"2026-11-06T17:57:12.859Z","credentialSubject":{"id":"urn:sha256:b988de454ac814cd517bb4c59b97db26cb6876f99f4c3701ed4e6e9d1f7bb07d","agent":"token-due-diligence","endpoint":"POST /api/v1/bundles/token-due-diligence","outputDigest":{"alg":"sha256","value":"b988de454ac814cd517bb4c59b97db26cb6876f99f4c3701ed4e6e9d1f7bb07d","canonicalization":"JCS"},"inputDigest":{"alg":"sha256","value":"7a9738ed20d014102fba08544e1f1b581267636d0519c2cd66cfa9797ce6c25f","canonicalization":"JCS"},"manifestDigest":{"alg":"sha256","value":"87dcc23e0e10627a1c5c5cf648561dc1db946436b5e28e364bd0e3aa080d517c","canonicalization":"JCS"},"ingredients":[{"url":"https://sourcify.dev/server/v2/contract/8453/0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913?fields=proxyResolution","sha256":"d2141b2f94871371c84e594f4be84da45851f5ef1e12e2d2b0faf3e995c5b675"},{"url":"https://sourcify.dev/server/v2/contract/8453/0x2Ce6311ddAE708829bc0784C967b7d77D19FD779?fields=sources,compilation","sha256":"1021e5687ba81244cec733b790469758f0af14de24284f36b9aafdcda3f22a27"},{"url":"https://api.developer.coinbase.com/rpc/v1/base/H40340sxRub3vIuyhYC0nu4IGzzgj9bw","sha256":"bbc2d1ff4e13ca0bed8010574f456c2f4e5d4e4adec5932ab529e6551512a92a"},{"url":"https://api.developer.coinbase.com/rpc/v1/base/H40340sxRub3vIuyhYC0nu4IGzzgj9bw","sha256":"84b2cf68feaa3cf97381efccc79f3990270fcae0db0cfdd0b2b0104e01b521d9"},{"url":"https://api.gopluslabs.io/api/v1/token_security/8453?contract_addresses=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","sha256":"8f78a6007b5c143a7d13aa97b7a1a7edd72054530745c3e8d658e5cb677a75b9"},{"url":"https://api.honeypot.is/v2/IsHoneypot?address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&chainID=8453","sha256":"60477200aa220b47880ecc91e269a3b23d009d4871fc59e6ff0482d3bcb36ca3"},{"url":"https://api.developer.coinbase.com/rpc/v1/base/H40340sxRub3vIuyhYC0nu4IGzzgj9bw","sha256":"74250213012b9281bbe664314d11e63c579dc6c06cf1a9fe5675d6fcf8157667"}],"payment":{"scheme":"api-key","network":"eip155:8453","payer":"sample"}},"proof":{"type":"DataIntegrityProof","cryptosuite":"eddsa-jcs-2022","created":"2026-11-06T17:57:12.859Z","verificationMethod":"did:web:agents.writerslogic.com#key-1","proofPurpose":"assertionMethod","proofValue":"z4aKWxyhgwakpLGZXhv4pmTLBsYZT3pPQ5P624S37RU3u6oqZLSeRT1GasAS5YmQi9c77q2MJwVYEQAFotV47Jwgm"}},"ethSignature":{"type":"EIP-191","signer":"did:pkh:eip155:8453:0x3DBd42560cA7a7E448A2c7DfC9E785526189411f","address":"0x3DBd42560cA7a7E448A2c7DfC9E785526189411f","message":"writerslogic-provenance:16803137aa3e954322601aa52da0202158a246dc323ed92162d2b45381f571a4","signature":"0xf295342f31209ee0bfb0cf2fce08cecea9e8b57b13a2eae9fba65859ce3a68b373c7e0a50d4824387ec66f25bbc6aa7da130f994cf1553afda2b59bd795203ba1b"}}}