Static conformance check of a permissioned-EVM settlement contract (Solidity source or ABI) against six settlement-rail invariants: atomic PvP/DvP, no native-token dependence, a finality-hook event, a compliance-gate modifier on every value transfer, bounded participant loops, and upgradeability disclosure.
Source + ABI, v1Bytecode Heuristics DeferredNo solc, No Network
🔒 All inputs are processed locally in your browser. No data is transmitted. Do not enter real personal data — use synthetic or anonymised inputs only.
What this does NOT prove
This is a lightweight regex/structural scan, never a compile: it does not run solc, does not execute the contract, and does not query a chain. v1 scope covers source and ABI fragments only (SLI-WAVE-1 §5 G3); bytecode/opcode heuristics are a deferred wave-2 candidate. A pass here is not a security audit.
–
Overall
–
Fail / Warn
Findings
Rule
Status
Locus
Rationale
⚠ DECISION-SUPPORT DRAFT. Not a security audit. See the "What this does NOT prove" note above.
OpenChainGraph v0.4 artifact · execution_hash:
–
Ask your agent
Copy this paragraph into Claude, OpenClaw, or any MCP-aware agent to run this exact tool, with this sample, and verify the artifact.
Run the AINumbers MCP tool `lint_besu_settlement_contract`. Task: Static conformance lint of a permissioned-EVM settlement contract (Solidity source or ABI) against six invariants: atomic PvP/DvP (paired-or-revert), no native-token/msg.value settlement dependence, a finality-hook/settlement event, a compliance-gate modifier preceding every value transfer, bounded participant-set loops, and upgradeability disclosure.
Call it with arguments: {"policy_parameters":{"artifact_kind":"solidity","source":"contract Settlement {\n event Settled(bytes32 indexed id);\n function transferPair(address a, address b) external onlyCompliant {\n require(safeTransfer(a, 1), \"fail\");\n require(transferFrom(b, address(this), 1), \"fail\");\n emit Settled(bytes32(0));\n }\n}","ruleset_profile":"sli-besu-settlement-v1"}}
Verify before trusting: call `verify_execution_hash` on mcp.ainumbers.co (https://mcp.ainumbers.co/mcp) with the parameter `claimed_hash` set to the returned `execution_hash`, passing the full artifact the run returned (the object containing `policy_parameters` + `output_payload` + `execution_hash`; equivalently `policy_parameters` + `output_payload` with `claimed_hash`), not the bare hash string, or re-run the in-page WebMCP tool `lint_besu_settlement_contract`.
Return the ledger link https://ledger.ainumbers.co/ so a human can re-verify without contacting us.
PII rule: All inputs are processed locally in your browser. No data is transmitted. Do not enter real personal data — use synthetic or anonymised inputs only.
Open the tool with the sample prefilled: https://ainumbers.co/chaingraph/art-289-lint-besu-settlement-contract.html#p=v1.H4sIAAAAAAAA_wFkAZv-eyJhcnRpZmFjdF9raW5kIjoic29saWRpdHkiLCJzb3VyY2UiOiJjb250cmFjdCBTZXR0bGVtZW50IHtcbiAgZXZlbnQgU2V0dGxlZChieXRlczMyIGluZGV4ZWQgaWQpO1xuICBmdW5jdGlvbiB0cmFuc2ZlclBhaXIoYWRkcmVzcyBhLCBhZGRyZXNzIGIpIGV4dGVybmFsIG9ubHlDb21wbGlhbnQge1xuICAgIHJlcXVpcmUoc2FmZVRyYW5zZmVyKGEsIDEpLCBcImZhaWxcIik7XG4gICAgcmVxdWlyZSh0cmFuc2ZlckZyb20oYiwgYWRkcmVzcyh0aGlzKSwgMSksIFwiZmFpbFwiKTtcbiAgICBlbWl0IFNldHRsZWQoYnl0ZXMzMigwKSk7XG4gIH1cbn0iLCJydWxlc2V0X3Byb2ZpbGUiOiJzbGktYmVzdS1zZXR0bGVtZW50LXYxIn3vJgSFZAEAAA