otconchain.Join platform
PROPOSED INTERFACEv1.0.0-draft7 min read

A small interface. Exact terms.

Reviewed 22 October 2026 · Local prototype / proposed platform design

The maker adapter is a proposed server-to-server contract, version 1.0.0-draft. It is not a deployed platform endpoint. OTConChain calls an agreed maker-owned quote service; client workflow endpoints and the onboarding application are separate interfaces.

Terminal software calling OTConChain uses the separate partner handoff API, version 0.1.0-draft. It creates scoped pilot requests and retrieves status/receipts; it cannot sign, select or broadcast a client trade.

Download the contract

The schema and examples in this site are generated together. The example native quote uses a disposable local signer, chain 1337 and mock addresses; its fixed historical deadline is not executable now. The downloadable kit generates fresh local fixtures.

POST /rfqs/v1/quote

HTTPS, scoped server-side bearer authentication. Send Idempotency-Key equal to requestId and X-Request-Timestamp as Unix seconds. The proposed replay window is 60 seconds; repeated identical requests return the same result within the agreed retention window. Reusing an ID with changed terms returns 409. A late retry cannot extend auction close.

Request fieldTypeValidation
requestIdstringUnique, bounded identifier; unchanged on retry
chainIdsafe integerExact configured sandbox chain
sellToken / buyTokenaddressDistinct approved 20-byte addresses
sellAmountdecimal stringPositive base-unit uint128
taker / executoraddressClient wallet / actual external EOA
requestedValiditySecondssafe integerRequested window; actual signed expiry governs
auctionobjectauctionId, opensAt, closesAt, minimumQuoteExpiry, rulesVersion

Auction timestamps are safe integer Unix seconds. A maker must return before closesAt and sign an expiry exceeding the configured acceptance headroom. Native expiry remains a uint64 decimal string in this JSON profile. Application IDs and timing metadata are not added to the EIP-712 order.

Response examples

REQUEST / LOCAL FIXTURE
{
  "requestId": "local-example-001",
  "chainId": 1337,
  "sellToken": "0x2222222222222222222222222222222222222222",
  "buyToken": "0x3333333333333333333333333333333333333333",
  "sellAmount": "10000000000000000000",
  "taker": "0x099e6e0073d12DF35Dc937666A0Da7613f022Bac",
  "executor": "0x099e6e0073d12DF35Dc937666A0Da7613f022Bac",
  "requestedValiditySeconds": 300,
  "auction": {
    "auctionId": "auction-local-001",
    "opensAt": 1791971990,
    "closesAt": 1791972030,
    "minimumQuoteExpiry": 1791972060,
    "rulesVersion": "1.0.0-draft"
  }
}

The auction envelope is application metadata. It does not change the native signed order.

Firm response: requestId, quoteId, status=firm, domain, order and signature. Non-executable response: requestId, status=indicative or declined, reason and optional indicativeBuyAmount. Zero/overflowing amounts, mismatched terms and unsupported signature types are invalid.

Native signed fields

FieldSolidity typeMeaning
makerTokenaddressToken delivered by the maker
takerTokenaddressToken sold by the client
makerAmountuint128Exact offered output
takerAmountuint128Exact client sell amount
makeraddressInventory owner
takeraddressPermitted native caller
txOriginaddressExternal executor restriction
poolbytes32Zero bytes32 in the initial profile
expiryuint64Unix-second deadline
saltuint256Distinct order issuance value

Preserve this order and these Solidity types in the EIP-712 type definition. makerAmount, takerAmount, expiry and salt are canonical unsigned decimal strings in our JSON profile. Do not use floating-point numbers for token amounts.

Domain: name=ZeroEx, version=1.0.0, configured chainId and verifyingContract=verified ExchangeProxy. Signature tuple: signatureType=2, v=27 or 28, r and s as bytes32. Recover the EOA and check its maker authorization. Zero txOrigin is not a wildcard in the pinned implementation.

Errors and idempotency

400 invalid terms; 401/403 invalid credentials/authorization; 409 changed request under the same ID; 429 rate limit; 503 unavailable. Specify the server timeout, retry backoff, retention window, limits and credential rotation in the environment agreement. Never return indicative data under a firm status or turn an upstream failure into a fictional quote.

Versioning

The earlier maker draft was 0.1.0. This generalized 1.0.0-draft adds an explicit auction envelope and transport profile while preserving native order semantics. It requires agreement before connecting an external desk. Breaking application changes require a new contract version; native signing changes require independent protocol review.