Signatures (EIP-712)
signSetArbiter
async signSetArbiter(
walletClient: WalletClient,
escrowId: bigint,
newArbiter: Address,
arbiterFeeBps: number,
deadline: bigint,
nonce: bigint
): Promise<Hex>
Signs an EIP-712 SetArbiter authorization. Buyer and seller must each sign the exact same struct (same newArbiter, arbiterFeeBps, deadline, and shared nonce); both signatures are then submitted together via setArbiterSigned(). The arbiter itself does not sign.
Parameters
walletClient: WalletClient– Buyer's or seller's connected walletescrowId: bigint– The escrow IDnewArbiter: Address– The arbiter to assignarbiterFeeBps: number– Arbiter fee in basis points (0–2000, max 20%)deadline: bigint– Unix timestamp when the signature expires (at most 1 day in the future)nonce: bigint– Shared nonce, identical for both signers (consumed for both on submission)
Returns
Promise<Hex> – 65-byte EIP-712 signature
import { connectAndInitSDK } from '@/lib/createSDK';
const { sdk, walletClient } = await connectAndInitSDK(); // buyer OR seller
const escrowId = 42n;
const newArbiter = "0xarbiter456...";
const arbiterFeeBps = 250; // 2.5%
// Both parties must use the SAME deadline and nonce
const deadline = await sdk.createSignatureDeadline(60); // max 1 day
const nonce = await sdk.getUserNonce(escrowId, walletClient.account.address);
const signature = await sdk.signSetArbiter(
walletClient,
escrowId,
newArbiter,
arbiterFeeBps,
deadline,
nonce
);
console.log("SetArbiter signature:", signature);
// Share { newArbiter, arbiterFeeBps, deadline, nonce } with the other
// party so they can produce a matching signature.
Signature Structure (EIP-712)
// Domain
{
name: "PalindromePay",
version: "1",
chainId: 84532, // chain-dependent: 8453 Base mainnet, 84532 Base Sepolia
verifyingContract: contractAddress
}
// Types
{
SetArbiter: [
{ name: "escrowId", type: "uint256" },
{ name: "newArbiter", type: "address" },
{ name: "arbiterFeeBps", type: "uint16" },
{ name: "deadline", type: "uint256" },
{ name: "nonce", type: "uint256" }
]
}
See also → setArbiterSigned() · createSignatureDeadline() · getUserNonce()
