Files
ritmex-bot/docs/nado/developer-resources/api/gateway/signing/examples.md
T

11 KiB

Examples

The following are full examples of EIP12 typed data for each of Nado's executes. Each execute includes a sender field which is a solidity bytes32 . There are two components to this field:

  • an address that is a bytes20
  • a subaccount identifier that is a bytes12

For example, if your address was 0x7a5ec2748e9065794491a8d29dcf3f9edb8d7c43, and you wanted to use the default subaccount identifier (i.e: an empty identifier "") you can set sender to 0x7a5ec2748e9065794491a8d29dcf3f9edb8d7c43000000000000000000000000 , which sets all bytes of the subaccount identifier to 0.

{% hint style="info" %} Note: a bytes32 representation of the sender must used when signing the request. {% endhint %}

See below a sample util to convert a hex to a bytes32:

{% tabs %} {% tab title="Python" %}

def hex_to_bytes32(hex_string):
    if hex_string.startswith("0x"):
        hex_string = hex_string[2:]
    data_bytes = bytes.fromhex(hex_string)
    padded_data = data_bytes + b"\x00" * (32 - len(data_bytes))
    return padded_data

sender = hex_to_bytes32('0x841fe4876763357975d60da128d8a54bb045d76a64656661756c740000000000')

{% endtab %}

{% tab title="Typescript" %}

import { arrayify } from 'ethers/lib/utils';

export function hexToBytes32(subaccount: string) {
  const subaccountBytes = arrayify(subaccount);
  const bytes32 = new Uint8Array(32);
  for (let i = 0; i < Math.min(subaccountBytes.length, 32); i++) {
    bytes32[i] = subaccountBytes[i];
  }
  return bytes32;
}

const sender = hexToBytes32('0x841fe4876763357975d60da128d8a54bb045d76a64656661756c740000000000')

{% endtab %} {% endtabs %}

EIP712 Typed data examples

{% tabs %} {% tab title="Place Order" %}

{
    'types': {
        'EIP712Domain': [
            {'name': 'name', 'type': 'string'},
            {'name': 'version', 'type': 'string'},
            {'name': 'chainId', 'type': 'uint256'},
            {'name': 'verifyingContract', 'type': 'address'}
        ],
        'Order': [
            {'name': 'sender', 'type': 'bytes32'},
            {'name': 'priceX18', 'type': 'int128'},
            {'name': 'amount', 'type': 'int128'},
            {'name': 'expiration', 'type': 'uint64'},
            {'name': 'nonce', 'type': 'uint64'},
            {'name': 'appendix', 'type': 'uint128'},
        ],
    },
    'primaryType': 'Order',
    'domain': {
        'name': 'Nado',
        'version': '0.0.1',
        'chainId': 763373,  
        'verifyingContract': '0x0000000000000000000000000000000000000001'
    },
    'message': {
        'sender': hex_to_bytes32('0x841fe4876763357975d60da128d8a54bb045d76a64656661756c740000000000'),
        'priceX18': 28898000000000000000000,
        'amount': -10000000000000000,
        'expiration': 4611687701117784255,
        'appendix': 1537,  # Version 1, POST_ONLY order
        'nonce': 1764428860167815857,
    },
}

{% endtab %}

{% tab title="Cancel Orders" %}

{
    'types': {
        'EIP712Domain': [
            {'name': 'name', 'type': 'string'},
            {'name': 'version', 'type': 'string'},
            {'name': 'chainId', 'type': 'uint256'},
            {'name': 'verifyingContract', 'type': 'address'}
        ],
        'Cancellation': [
            { 'name': 'sender', 'type': 'bytes32' },
            { 'name': 'productIds', 'type': 'uint32[]'},
            { 'name': 'digests', 'type': 'bytes32[]'},
            { 'name': 'nonce', 'type': 'uint64'},
        ],
    },
    'primaryType': 'Cancellation',
    'domain': {
        'name': 'Nado',
        'version': '0.0.1',
        'chainId': 763373,  
        'verifyingContract': '0xbf16e41fb4ac9922545bfc1500f67064dc2dcc3b'
    },
    'message': {
        'sender': hex_to_bytes32('0x841fe4876763357975d60da128d8a54bb045d76a64656661756c740000000000'),
        'productIds': [4],
        'digests': [hex_to_bytes32('0x51ba8762bc5f77957a4e896dba34e17b553b872c618ffb83dba54878796f2821')],
        'nonce': 1,
    },
}

{% endtab %}

{% tab title="Cancel Product orders" %}

{
    'types': {
        'EIP712Domain': [
            {'name': 'name', 'type': 'string'},
            {'name': 'version', 'type': 'string'},
            {'name': 'chainId', 'type': 'uint256'},
            {'name': 'verifyingContract', 'type': 'address'}
        ],
        'CancellationProducts': [
            {'name': 'sender', 'type': 'bytes32'},
            {'name': 'productIds', 'type': 'uint32[]'},
            {'name': 'nonce', 'type': 'uint64'},
        ],
    },
    'primaryType': 'CancellationProducts',
    'domain': {
        'name': 'Nado',
        'version': '0.0.1',
        'chainId': 763373,  
        'verifyingContract': '0xbf16e41fb4ac9922545bfc1500f67064dc2dcc3b'
    },
    'message': {
        'sender': hex_to_bytes32('0x841fe4876763357975d60da128d8a54bb045d76a64656661756c740000000000'),
        'productIds': [1, 2],
        'nonce': 1,
    },
}

{% endtab %}

{% tab title="Link Signer" %}

{
    'types': {
        'EIP712Domain': [
            {'name': 'name', 'type': 'string'},
            {'name': 'version', 'type': 'string'},
            {'name': 'chainId', 'type': 'uint256'},
            {'name': 'verifyingContract', 'type': 'address'}
        ],
        'LinkSigner': [
            {'name': 'sender', 'type': 'bytes32'},
            {'name': 'signer', 'type': 'bytes32'},
            {'name': 'nonce', 'type': 'uint64'},
        ],
    },
    'primaryType': 'LinkSigner',
    'domain': {
        'name': 'Nado',
        'version': '0.0.1',
        'chainId': 763373,  
        'verifyingContract': '0xbf16e41fb4ac9922545bfc1500f67064dc2dcc3b'
    },
    'message': {
        'sender': hex_to_bytes32('0x841fe4876763357975d60da128d8a54bb045d76a64656661756c740000000000'),
        'signer': hex_to_bytes32('0x12a0b4888021576eb10a67616dd3dd3d9ce206b664656661756c740000000000'),
        'nonce': 1,
    },
}

{% endtab %} {% endtabs %}

{% tabs %} {% tab title="Withdraw Collateral" %}

{
    'types': {
        'EIP712Domain': [
            {'name': 'name', 'type': 'string'},
            {'name': 'version', 'type': 'string'},
            {'name': 'chainId', 'type': 'uint256'},
            {'name': 'verifyingContract', 'type': 'address'}
        ],
        'WithdrawCollateral': [
            {'name': 'sender', 'type': 'bytes32'},
            {'name': 'productId', 'type': 'uint32'},
            {'name': 'amount', 'type': 'uint128'},
            {'name': 'nonce', 'type': 'uint64'},
        ],
    },
    'primaryType': 'WithdrawCollateral',
    'domain': {
        'name': 'Nado',
        'version': '0.0.1',
        'chainId': 763373,  
        'verifyingContract': '0xbf16e41fb4ac9922545bfc1500f67064dc2dcc3b'
    },
    'message': {
        'sender': hex_to_bytes32('0x841fe4876763357975d60da128d8a54bb045d76a64656661756c740000000000'),
        'productId': 2,
        'amount': 10000000000000000,
        'nonce': 1
    },
}

{% endtab %}

{% tab title="Liquidate Subaccount" %}

{
    'types': {
        'EIP712Domain': [
            {'name': 'name', 'type': 'string'},
            {'name': 'version', 'type': 'string'},
            {'name': 'chainId', 'type': 'uint256'},
            {'name': 'verifyingContract', 'type': 'address'}
        ],
        'LiquidateSubaccount': [
            {'name': 'sender', 'type': 'bytes32'},
            {'name': 'liquidatee', 'type': 'bytes32'},
            {'name': 'productId', 'type': 'uint32'},
            {'name': 'isEncodedSpread', 'type': 'bool'},
            {'name': 'amount', 'type': 'int128'},
            {'name': 'nonce', 'type': 'uint64'},
        ],
    },
    'primaryType': 'LiquidateSubaccount',
    'domain': {
        'name': 'Nado',
        'version': '0.0.1',
        'chainId': 763373,  
        'verifyingContract': '0xbf16e41fb4ac9922545bfc1500f67064dc2dcc3b'
    },
    'message': {
        'sender': hex_to_bytes32('0x841fe4876763357975d60da128d8a54bb045d76a64656661756c740000000000'),
        'liquidatee': hex_to_bytes32('0x12a0b4888021576eb10a67616dd3dd3d9ce206b664656661756c740000000000'),
        'productId': 1,
        'isEncodedSpread': false,
        'amount': 10000000000000000,
        'nonce': 1,
    },
}

{% endtab %}

{% tab title="Mint NLP" %}

{
    'types': {
        'EIP712Domain': [
            {'name': 'name', 'type': 'string'},
            {'name': 'version', 'type': 'string'},
            {'name': 'chainId', 'type': 'uint256'},
            {'name': 'verifyingContract', 'type': 'address'}
        ],
        'MintLp': [
            {'name': 'sender', 'type': 'bytes32' },
            {'name': 'quoteAmount', 'type': 'uint128'},
            {'name': 'nonce', 'type': 'uint64' },
        ],
    },
    'primaryType': 'MintNlp',
    'domain': {
        'name': 'Nado',
        'version': '0.0.1',
        'chainId': 763373,  
        'verifyingContract': '0xbf16e41fb4ac9922545bfc1500f67064dc2dcc3b'
    },
    'message': {
        'sender': hex_to_bytes32('0x841fe4876763357975d60da128d8a54bb045d76a64656661756c740000000000'),
        'quoteAmount': 20000000000000000000000,
        'nonce': 1,
    },
}

{% endtab %}

{% tab title="Burn NLP" %}

{
    'types': {
        'EIP712Domain': [
            {'name': 'name', 'type': 'string'},
            {'name': 'version', 'type': 'string'},
            {'name': 'chainId', 'type': 'uint256'},
            {'name': 'verifyingContract', 'type': 'address'}
        ],
        'BurnLp': [
            {'name': 'sender', 'type': 'bytes32'},
            {'name': 'nlpAmount', 'type': 'uint128'},
            {'name': 'nonce', 'type': 'uint64'},
        ],
    },
    'primaryType': 'BurnNlp',
    'domain': {
        'name': 'Nado',
        'version': '0.0.1',
        'chainId': 763373,  
        'verifyingContract': '0xbf16e41fb4ac9922545bfc1500f67064dc2dcc3b'
    },
    'message': {
        'sender': hex_to_bytes32('0x841fe4876763357975d60da128d8a54bb045d76a64656661756c740000000000'),
        'nlpAmount': 1000000000000000000,
        'nonce': 1,
    },
}

{% endtab %}

{% tab title="List Trigger Orders" %}

{
    'types': {
        'EIP712Domain': [
            {'name': 'name', 'type': 'string'},
            {'name': 'version', 'type': 'string'},
            {'name': 'chainId', 'type': 'uint256'},
            {'name': 'verifyingContract', 'type': 'address'}
        ],
        'ListTriggerOrders': [
            {'name': 'sender', 'type': 'bytes32' },
            {'name': 'recvTime', 'type': 'uint64' }
        ],
    },
    'primaryType': 'WithdrawCollateral',
    'domain': {
        'name': 'Nado',
        'version': '0.0.1',
        'chainId': 763373,  
        'verifyingContract': '0xbf16e41fb4ac9922545bfc1500f67064dc2dcc3b'
    },
    'message': {
        'sender': hex_to_bytes32('0x841fe4876763357975d60da128d8a54bb045d76a64656661756c740000000000'),
        'recvTime': 1688939576000
    },
}

{% endtab %} {% endtabs %}