The order protocol
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.GET /config returns its address as contracts.lop; read it from there at
runtime.
The same deployment serves staging and production.
Built on 1inch, not routed through 1inch
The order protocol inheritsOrderMixin from the 1inch Limit Order Protocol v4
(@1inch/limit-order-protocol-contract 4.3.2),
unmodified. 1inch publishes the security audits of that release in
1inch/1inch-audits.
What Aile adds is a 23-line wrapper:
- its own EIP-712 domain (
Aile Intent Protocol/1), so an order signed for Aile cannot be replayed against 1inch’s own deployment or another chain, and vice versa; - an owner-only pause (OpenZeppelin
Pausable,Ownable).
Aile does not claim an audit of its own. The wrapper above is the whole of Aile’s code in the swap path,
and it is small enough to read on Basescan. Aile’s other contracts (maker executors, settlement
extensions for a future partial-fill path) are not called in a firm-quote swap and are not documented
here.
What the contract checks
OnfillOrder, the protocol verifies that:
- the signature (
r,vs, EIP-2098 compact form) recovers toorder.maker; msg.senderis the taker the order was signed for (allowedSenderinmakerTraits);- the order has not expired (
expiresAtinmakerTraits); - the order’s nonce bit is unspent (
bitInvalidatorForOrder(maker, nonce)); a replay revertsBitInvalidatedOrder;
takingAmount of the sold token from the taker to the maker and makingAmount of the
bought token from the maker to the taker, and emits OrderFilled with remainingAmount 0. The maker
pays from its own wallet under an ERC-20 allowance it granted the protocol; its balance and allowance
are what bound maxFirmSize.
The contract does not check the price. The amounts are whatever the maker signed; see
How it works.
Tokens
Token addresses are on Networks and tokens. Every token is a standard ERC-20; approve the order protocol for the one you sell.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.