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 inheritsOrderMixin 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.