A new API key can generated by calling the /register
endpoint.
The endpoint requires the following parameters:
account
: the account's Ethereum addresssigning_key
: a randomly generated Ethereum addressexpiry
: UNIX timestamp in nanosecondsaccount_signature
: signature generated using theaccount
's private keysigning_key_signature
: signature generated using thesigning_key
's private key
To generate the signing_key
, account_signature
and signing_key_signature
, you can follow the example code below:
- Generate
signing_key
:
const signer = ethers.Wallet.createRandom()
- 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;
- 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
}
);