Approve builder fee
Changed onApprove a builder's maximum per-order fee ceiling. User signs the approval off-chain; server submits via Router.approveBuilderFee(). Gas sponsored by API service.
Set max_fee_bps=0 to revoke a previously granted approval.
Permit: Client signs an EIP-712 VerifyWitness permit; the server recovers the signer off-chain and matches it to permit.signer (server holds no keys).
Prerequisites:
- GET /v1/auth/eip712-domain — EIP-712 domain (name, version, chainId, verifyingContract = Authorization contract)
- GET /v1/nonce-state/{account} — nonce_anchor and current_bitmap_index (pass it as permit.nonce_bitmap_index; if 208 the anchor is full — use nonce_anchor+1 with bitmap index 0)
- GET /v1/system/config — router address (RISExUniversalRouter), used as the target field below
Action hash:
actionHash = keccak256(abi.encode(
keccak256("RISE_APPROVE_BUILDER_FEE_V1"), // bytes32 action selector
uint16(builder_id),
uint16(max_fee_bps)))
Permit digest (EIP-712):
VerifyWitness(address account,address target,bytes32 hash,uint48 nonceAnchor,uint8 nonceBitmap,uint32 deadline)
Sign as standard EIP-712 typed data (e.g. ethers signTypedData) with hash = actionHash, target = RISExUniversalRouter address (NOT the account, NOT the domain verifyingContract), nonceBitmap = permit.nonce_bitmap_index.
Signature: 64-byte EIP-2098 compact (r + yParityAndS) or 65-byte (r+s+v, auto-converted).
Request
- Base URLhttps://api.testnet.rise.trade
- Authnone required
- TypeScriptA function with typed inputs. Its response is checked against the schema.
Request body
Example request
{
"permit": {
"account": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
"signer": "0x1234567890123456789012345678901234567890",
"nonce_anchor": "0"
}
}Response
A successful response.
Changes
- info
endpoint added
- info