Skip to main content

Client Examples

Example of relaying any pre-signed Solana transaction. For EVM samples, see EVM Client Examples.
See Relayer API utils for the utilities used in the examples.

Relay Any Transaction

import { sign } from 'tweetnacl'
import { createReqSignature } from './test/utils/api/createReqSignature'

async function main() {
const requestBody = {
solana: {
txBase64: 'BASE64_WIRE_TX_WITH_AUTHORITY_SIGNATURE',
},
callback: {
url: 'https://webhook.site/cdd23e90-9315-4268-a29f-655bb38b38a5',
},
timestamp: Date.now(),
}

const keyPair = sign.keyPair.fromSecretKey(
Buffer.from(
String(require('fs').readFileSync('.example-api-key-local', 'utf8').trim()),
'base64'
)
)
const signature = createReqSignature(requestBody, keyPair.secretKey)
const sigB64 = Buffer.from(signature).toString('base64')
const pkB64 = Buffer.from(keyPair.publicKey).toString('base64')

const resp = await fetch(
'https://bi6fxskpk4.execute-api.localhost.localstack.cloud:4566/prod/api/v1/relay_meta_tx',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Request-Pk-B64': pkB64,
'X-Request-Sig-B64': sigB64,
},
body: JSON.stringify(requestBody),
}
)

if (resp.status !== 201) {
throw new Error(`Failed to submit meta tx: ${await resp.text()}`)
}
}

main()