For the complete documentation index, see llms.txt. This page is also available as Markdown.

Bind the sub-account to a PartyB

Symmio core's sendQuote usually runs a Muon signature check on a SingleUpnlAndPriceSig parameter, unless the trading account is bound to a specific PartyB, in which case the check is skipped. The solver's instant-trade flow ships an empty upnlSig placeholder in the calldata it sends on-chain (it has no way to inject a fresh Muon sig into the EIP-712 op you signed), so without a bind your executeTemplate call reverts on-chain with "LibMuon: Expired signature". That surfaces on the notifications feed as SendQuoteTransaction / action_status = failed / error_code = 2000.

Binding fixes this permanently for the sub-account. It pins the sub-account to the deployment's hedger and tells the core "I'm not using Muon oracles for this account; trust the PartyB."

Signed by. Owner EOA. The call goes to the AccountLayer's _call(account, callDatas[]), because bindToPartyB lives on the Symmio core and the core needs to see the sub-account as msg.sender. _call is the AccountLayer's mechanism for forwarding calls with the right signer context.

Calldata to encode for the inner call:

selector  = 0xcf462cb2                        // bindToPartyB(address)
arguments = abi.encode(address: hedger)

So the actual outer call is:

AccountLayer._call(
    account   = subAccount,
    callDatas = [ 0xcf462cb2 || abi.encode(hedger) ]
)

After it lands, sanity-check by reading Symmio.getBindState(subAccount): status == 1 means bound. Once done, leave it alone. There's a requestToUnbindFromPartyB flow with a cooldown if you ever need to switch solvers, but you almost never will.

Last updated