Link Signer

Designates an address to be able to sign executes on behalf of a subaccount.

Each subaccount can have at most one linked signer at a time. A linked signer can perform any execute on behalf of the subaccount it is linked to. Use the Linked Signer query to view your current linked signer.

Please note:

  • To enable a linked signer, your subaccount must have a minimum of 5 USDC worth in account value.

Rate limits

  • A max of 5 link signer requests every 7 days per subaccount. (weight=50). Use the Linked Signer Rate Limit query to check a subaccount's linked signer usage and remaining wait time.

See more general details in API Rate limits.

Request

Connect

WEBSOCKET [GATEWAY_WEBSOCKET_ENDPOINT]

Message

{
  "link_signer": {
    "tx": {
      "sender": "0x7a5ec2748e9065794491a8d29dcf3f9edb8d7c43746573743000000000000000",
      "signer": "0xeae27ae6412147ed6d5692fd91709dad6dbfc34264656661756c740000000000",
      "nonce": "1"
    },
    "signature": "0x"
  }
}

Request Parameters

Signing

See more details and examples in our signing page.

The solidity typed data struct that needs to be signed is:

struct LinkSigner {
    bytes32 sender;
    bytes32 signer;
    uint64 nonce;
}

sender: a bytes32 sent as a hex string; includes the address and the subaccount identifier of the primary subaccount to add a signer to.

signer: a bytes32 sent as a hex string; includes the address (first 20 bytes) that'll be used as the sender's signer.

Notes:

  • the last 12 bytes of the signer field do not matter and can be set to anything.

  • set signer to the zero address to revoke current signer on the provided sender.

nonce: the tx_nonce. This is an incrementing nonce, can be obtained using the Nonces query.

Note: for signing you should always use the data type specified in the solidity struct which might be different from the type sent in the request e.g: nonce should be an uint64 for Signing but should be sent as a string in the final payload.

Response

Success

{
  "status": "success",
  "signature": {signature},
  "request_type": "execute_link_signer"
}

Failure

{
  "status": "failure",
  "signature": {signature},
  "error": "{error_msg}",
  "error_code": {error_code},
  "request_type": "execute_link_signer"
}

Last updated