Smart Contract Attestation

Simulate mismatch

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

MeridianPrivateCreditFund.sol
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

max Investors250
jurisdictionCayman Islands
accredited Onlytrue
transfer Lockup12 months
standardERC-1400
networkPolygon
transfer RestrictionsEnabled

Attestation History

TokenRun AtResultFields CheckedHash

Meridian Private Credit Fund I

4d ago Passed7 fields

a1b2c3d4e5f67890...

Meridian Private Credit Fund I

18d ago Passed7 fields

b2c3d4e5f6789012...

Gulf Real Estate Income Trust

9d ago Failed7 fields1 mismatch

c3d4e5f678901234...

Meridian Private Credit Fund I

32d ago Passed7 fields

d4e5f67890123456...