Via API

A new API key can generated by calling the /register endpoint.

The endpoint requires the following parameters:

  • account: the account's Ethereum address
  • signing_key: a randomly generated Ethereum address
  • expiry: UNIX timestamp in nanoseconds
  • account_signature: signature generated using the account's private key
  • signing_key_signature: signature generated using the signing_key's private key

To generate the signing_key, account_signature and signing_key_signature, you can follow the example code below:

  1. Generate signing_key:
const signer = ethers.Wallet.createRandom()
  1. Generate account_signature:
// First we hash the register data
const registerHash = ethers.utils._TypedDataEncoder.hash(
    {
      name: "Aevo Mainnet",
      version: "1",
      chainId: 1,
    },
    {
      Register: [
        { name: "key", type: "address" },
        { name: "expiry", type: "uint256" },
      ],
    },
    {
      key: await signer.getAddress(),
      expiry: ethers.constants.MaxUint256.toString(),
    }
);

// Then we sign the hash
const res = await promisify(provider.provider.sendAsync)({
  method: "eth_sign",
  params: [account.toLowerCase(), registerHash],
});

// This is the account_signature
const accountSignature = res.result;
  1. Generate signing_key_signature:
// This is the signing_key_signature
const signingKeySignature = await signer._signTypedData(
    {
      name: "Aevo Mainnet",
      version: "1",
      chainId: 1,
    },
    {
      SignKey: [{ name: "account", type: "address" }],
    },
    {
      account: your_wallet_address
    }
);