Skip to main content

Contracts

A swap on Aile calls exactly one Aile contract: the order protocol. You approve it for the token you sell and send the fill to it. The address above is the one GET /config returns as contracts.lop. The tokens are standard ERC-20s; their addresses are on Networks and tokens.

Security and audit

What is audited. The order protocol inherits OrderMixin from the 1inch Limit Order Protocol v4 (@1inch/limit-order-protocol-contract 4.3.2) without modification. 1inch publishes the security audits of that release in 1inch/1inch-audits. What the contract enforces. On a fill the protocol verifies the maker’s signature: for a maker contract, that the contract itself confirms it (ERC-1271); for a wallet maker, that r and vs (EIP-2098) recover to order.maker. It also verifies that msg.sender is the taker the order was signed for (allowedSender); that the order has not expired (expiresAt); and that its nonce bit is unspent (a replay reverts BitInvalidatedOrder). It then transfers takingAmount of the sold token from the taker to the order’s receiver (the maker’s treasury) and makingAmount of the bought token from the maker to the taker in one transaction, or reverts. The maker pays under an ERC-20 allowance it granted the protocol. What it does not enforce. The contract does not check the price: the amounts are whatever the maker signed. The midmarket rate and the spread are information in the quote for you to judge before you send (Rates & fees). Custody and control. Funds never sit in an Aile contract or on an Aile server; settlement is one atomic transfer between the taker’s wallet and the maker’s. Aile’s servers price and sign quotes; the fill is sent by your wallet straight to the order protocol. The protocol’s owner can pause new fills during an incident; a pause cannot move funds or alter a signed order.

Order format

quote.order is the 1inch v4 order struct with decimal-string amounts: orderHash (the key of GET /orders/{hash}) is the EIP-712 hash of this struct under the domain above.