Smart Contract Attestation
How the attestation engine works
The problem it solves, in plain English
Legal Document
Fund manager files offering docs stating rules: "max 250 investors, accredited only, 12-month lockup."
Smart Contract
A separate piece of code is deployed on-chain. It may — or may not — actually enforce those rules.
Attestation Engine
Dudilig reads the contract code directly and checks every claim. Produces a cryptographic proof of the result.
Trust Certificate
A shareable public certificate any LP, regulator, or liquidity provider can verify — no code-reading required.
Real example
A Singapore-based tokenized private credit fund launches a Reg S offering for non-US investors only. Their lawyer filed the right documents. But does the smart contract actually block US wallet addresses? Dudilig reads the contract, verifies the geo-blocking and accreditation logic is correctly implemented, and issues a signed attestation certificate. That certificate is what gets Wintermute or Galaxy Digital comfortable enough to provide liquidity — without it, they won't touch it.
The gap nobody talks about: Legal documents and smart contracts are two completely separate things. The contract could say one thing and do another — and nobody would know until something goes wrong in a trade or an audit. Toggle "Simulate mismatch" below to see what that looks like.
On-Chain Contract
0x742dF4b8e77eDf3c9B2a1E4d6F8c3A09f2e1b3a2
Polygon
Block #54,821,049
1// SPDX-License-Identifier: MIT2pragma solidity ^0.8.19;34import "@openzeppelin/contracts/token/ERC1400/ERC1400.sol";5import "./interfaces/ICompliance.sol";67contract MeridianPrivateCreditFund is ERC1400 {89 uint256 public constant MAX_INVESTORS = 250;10 uint256 public constant TRANSFER_LOCKUP = 365 days;11 bool public constant ACCREDITED_ONLY = true;1213 string[] public jurisdictionWhitelist = [14 "KY", "SG", "AE", "HK", "VG", "BVI"15 ];1617 mapping(address => bool) private _accreditedInvestors;18 mapping(address => uint256) private _investorSince;19 uint256 private _totalInvestors;2021 ICompliance private _compliance;2223 modifier onlyAccredited(address investor) {24 require(25 _accreditedInvestors[investor],26 "Investor not accredited"27 );28 _;29 }3031 modifier withinInvestorCap() {32 require(33 _totalInvestors < MAX_INVESTORS,34 "Investor cap reached"35 );36 _;37 }3839 function _beforeTokenTransfer(40 address from,41 address to,42 uint256 amount43 ) internal override {44 if (from != address(0)) {45 require(46 block.timestamp >= _investorSince[from] + TRANSFER_LOCKUP,47 "Transfer locked"48 );49 }50 require(51 _compliance.isJurisdictionAllowed(to),52 "Jurisdiction not permitted"53 );54 super._beforeTokenTransfer(from, to, amount);55 }56}Attestation Engine
Compliance Claim
Attestation History
| Token | Run At | Result | Fields Checked | Hash |
|---|---|---|---|---|
Meridian Private Credit Fund I | 4d ago | Passed | 7 fields | a1b2c3d4e5f67890... |
Meridian Private Credit Fund I | 18d ago | Passed | 7 fields | b2c3d4e5f6789012... |
Gulf Real Estate Income Trust | 9d ago | Failed | 7 fields1 mismatch | c3d4e5f678901234... |
Meridian Private Credit Fund I | 32d ago | Passed | 7 fields | d4e5f67890123456... |