Relayers
Relayer-related SDK call.
Create Relayer
Create a new relayer for a network.
Response
Promise<CreateRelayerResult>;Just so you understand the properties returned
export interface CreateRelayerResult {
id: string;
address: string;
}Example
// config.ts
import { createClient } from 'rrelayer';
import * as dotenv from 'dotenv';
dotenv.config();
export const client = createClient({
serverUrl: 'http://localhost:8000',
auth: {
username: process.env.RRELAYER_AUTH_USERNAME!,
password: process.env.RRELAYER_AUTH_PASSWORD!,
},
});
///
// create-relayer.ts
import { client, TransactionSpeed } from './config';
// returns a CreateRelayerResult - import { CreateRelayerResult } from 'rrelayer';
let created_result = await client.relayer.create(11155111, 'fancy-relayer');
// created_result.id = relayer id
// created_result.address = relayer address
// You can then create the relayer client doing this
const relayerClient = await client.getRelayerClient(
created_result.id,
// This is optional it defaults to fast and is a fallback
// You can override this with the transaction request
TransactionSpeed.FAST
);Get Relayers
Get all the relayers across all networks or a single network.
Response
Promise<PagingResult<Relayer>>;Just so you understand the properties returned
export interface PagingContext {
limit: number;
offset: number;
}
export interface PagingResult<T> {
items: T[];
next?: PagingContext;
previous?: PagingContext;
}
export interface Relayer {
id: string;
name: string;
chainId: number;
address: `0x${string}`;
walletIndex: number;
maxGasPrice?: number;
paused: boolean;
eip1559Enabled: boolean;
createdAt: Date;
isPrivateKey: boolean;
}Example
// config.ts
import { createClient } from 'rrelayer';
import * as dotenv from "dotenv";
dotenv.config();
export const client = createClient({
serverUrl: 'http://localhost:8000',
auth: {
username: process.env.RRELAYER_AUTH_USERNAME!,
password: process.env.RRELAYER_AUTH_PASSWORD!,
},
});
...
// get-all-relayers.ts
import { client } from './config';
// returns a PagingResult<Relayer> - import { PagingResult, Relayer } from 'rrelayer';
let relayers = await client.relayer.getAll({
limit: 100,
offset: 0,
});Get Relayer
Basic auth can get all relayers information, and API keys can only get the relayer information they have permission to use.
Basic Auth
Response
Promise<GetRelayerResult | null>;Just so you understand the properties returned
export interface Relayer {
id: string;
name: string;
chainId: number;
address: `0x${string}`;
walletIndex: number;
maxGasPrice?: number;
paused: boolean;
eip1559Enabled: boolean;
createdAt: Date;
isPrivateKey: boolean;
}
export interface GetRelayerResult {
relayer: Relayer;
providerUrls: string[];
}// config.ts
import { createClient } from 'rrelayer';
import * as dotenv from "dotenv";
dotenv.config();
export const client = createClient({
serverUrl: 'http://localhost:8000',
auth: {
username: process.env.RRELAYER_AUTH_USERNAME!,
password: process.env.RRELAYER_AUTH_PASSWORD!,
},
});
...
// get-relayer.ts
import { client } from './config';
// returns a GetRelayerResult | null - import { GetRelayerResult } from 'rrelayer';
let relayer = await client.relayer.get('94afb207-bb47-4392-9229-ba87e4d783cb');API Key Auth
Response
Promise<Relayer | null>;Just so you understand the properties returned
export interface Relayer {
id: string;
name: string;
chainId: number;
address: `0x${string}`;
walletIndex: number;
maxGasPrice?: number;
paused: boolean;
eip1559Enabled: boolean;
createdAt: Date;
isPrivateKey: boolean;
}// config.ts
import { createRelayerClient, TransactionSpeed } from 'rrelayer';
export let relayerClient = createRelayerClient({
serverUrl: 'http://localhost:8000',
relayerId: '94afb207-bb47-4392-9229-ba87e4d783cb',
apiKey: 'YOUR_API_KEY',
// This is optional it defaults to fast and is a fallback
// You can override this with the transaction request
speed: TransactionSpeed.FAST,
});
...
// get-relayer.ts
import { relayerClient } from './config';
// returns a Relayer | null - import { Relayer } from 'rrelayer';
let info = await relayerClient.getInfo();Clone Relayer
Clone a relayer to a network.
Response
Promise<CreateRelayerResult>;Just so you understand the properties returned
export interface CreateRelayerResult {
id: string;
address: string;
}Example
// config.ts
import { createClient } from 'rrelayer';
import * as dotenv from "dotenv";
dotenv.config();
export const client = createClient({
serverUrl: 'http://localhost:8000',
auth: {
username: process.env.RRELAYER_AUTH_USERNAME!,
password: process.env.RRELAYER_AUTH_PASSWORD!,
},
});
...
/// clone-relayer.ts
import { client, TransactionSpeed } from './config';
// returns a CreateRelayerResult - import { CreateRelayerResult } from 'rrelayer';
let clonedResult = await client.relayer.clone(
'94afb207-bb47-4392-9229-ba87e4d783cb',
1,
'cloned-relayer'
);
// cloned_result.id = the new cloned relayer id
// cloned_result.address = the new cloned relayer address
// You can then create the relayer client doing this
const relayerClient = await client.getRelayerClient(
clonedResult.id,
// This is optional it defaults to fast and is a fallback
// You can override this with the transaction request
TransactionSpeed.FAST
);Pause/Unpause Relayer
You can pause and unpause a relayers anytime. When you pause, rrelayer will not accept anymore transactions on it.
Response
Promise<Void>;Example
// config.ts
import { createClient, TransactionSpeed } from 'rrelayer';
import * as dotenv from "dotenv";
dotenv.config();
const client = createClient({
serverUrl: 'http://localhost:8000',
auth: {
username: process.env.RRELAYER_AUTH_USERNAME!,
password: process.env.RRELAYER_AUTH_PASSWORD!,
},
});
export const relayerClient = await client.getRelayerClient(
// The relayer id you want to connect to
'94afb207-bb47-4392-9229-ba87e4d783cb',
// This is optional it defaults to fast and is a fallback
// You can override this with the transaction request
TransactionSpeed.FAST
);
...
// pause-relayer.ts
import { relayerClient } from './config';
await relayerClient.pause();Update EIP-1559 Status
By default, EIP-1559 transactions are enabled, but you can turn on legacy and toggle this anytime.
Response
Promise<Void>;Example
// config.ts
import { createClient, TransactionSpeed } from 'rrelayer';
import * as dotenv from "dotenv";
dotenv.config();
const client = createClient({
serverUrl: 'http://localhost:8000',
auth: {
username: process.env.RRELAYER_AUTH_USERNAME!,
password: process.env.RRELAYER_AUTH_PASSWORD!,
},
});
export const relayerClient = await client.getRelayerClient(
// The relayer id you want to connect to
'94afb207-bb47-4392-9229-ba87e4d783cb',
// This is optional it defaults to fast and is a fallback
// You can override this with the transaction request
TransactionSpeed.FAST
);
...
/// disable-eip-1559-status.ts
import { relayerClient } from './config';
await relayerClient.updateEIP1559Status(false);Update Max Gas Price
You can set the max amount the relayer will bump gas up to, this can protect you about network congression/expensive periods. You must pass in the wei amount.
Response
Promise<Void>;Example
// config.ts
import { createClient, TransactionSpeed } from 'rrelayer';
import * as dotenv from "dotenv";
dotenv.config();
const client = createClient({
serverUrl: 'http://localhost:8000',
auth: {
username: process.env.RRELAYER_AUTH_USERNAME!,
password: process.env.RRELAYER_AUTH_PASSWORD!,
},
});
export const relayerClient = await client.getRelayerClient(
// The relayer id you want to connect to
'94afb207-bb47-4392-9229-ba87e4d783cb',
// This is optional it defaults to fast and is a fallback
// You can override this with the transaction request
TransactionSpeed.FAST
);
...
// update-max-gas-price.ts
import { relayerClient } from './config';
// 2 gwei
await relayerClient.updateMaxGasPrice('2000000000');Remove Max Gas Price
You can remove the max gas price set.
Response
Promise<Void>;Example
// config.ts
import { createClient, TransactionSpeed } from 'rrelayer';
import * as dotenv from "dotenv";
dotenv.config();
const client = createClient({
serverUrl: 'http://localhost:8000',
auth: {
username: process.env.RRELAYER_AUTH_USERNAME!,
password: process.env.RRELAYER_AUTH_PASSWORD!,
},
});
export const relayerClient = await client.getRelayerClient(
// The relayer id you want to connect to
'94afb207-bb47-4392-9229-ba87e4d783cb',
// This is optional it defaults to fast and is a fallback
// You can override this with the transaction request
TransactionSpeed.FAST
);
...
// remove-max-gas-price.ts
import { relayerClient } from './config';
await relayerClient.removeMaxGasPrice();Delete Relayer
Delete a new relayer for a network, it just does a soft delete the database records stay, alongside it will clear the current queue.
Response
Promise<Void>;Example
// config.ts
import { createClient } from 'rrelayer';
import * as dotenv from "dotenv";
dotenv.config();
export const client = createClient({
serverUrl: 'http://localhost:8000',
auth: {
username: process.env.RRELAYER_AUTH_USERNAME!,
password: process.env.RRELAYER_AUTH_PASSWORD!,
},
});
...
// delete-relayer.ts
import { client } from './config';
await client.relayer.delete('94afb207-bb47-4392-9229-ba87e4d783cb');Get Allowlist
Basic auth can get all relayers allowlists, and API keys can only get the relayer allowlist they have permission to use.
Response
Promise<PagingResult<`0x${string}`>>;Just so you understand the properties returned
export interface PagingContext {
limit: number;
offset: number;
}
export interface PagingResult<T> {
items: T[];
next?: PagingContext;
previous?: PagingContext;
}Basic Auth
// config.ts
import { createClient, TransactionSpeed } from 'rrelayer';
import * as dotenv from "dotenv";
dotenv.config();
const client = createClient({
serverUrl: 'http://localhost:8000',
auth: {
username: process.env.RRELAYER_AUTH_USERNAME!,
password: process.env.RRELAYER_AUTH_PASSWORD!,
},
});
export const relayerClient = await client.getRelayerClient(
// The relayer id you want to connect to
'94afb207-bb47-4392-9229-ba87e4d783cb',
// This is optional it defaults to fast and is a fallback
// You can override this with the transaction request
TransactionSpeed.FAST
);
...
// get-allowlist.ts
import { relayerClient } from './config';
// returns a PagingResult<`0x${string}`> - import { PagingResult } from 'rrelayer';
let allowlist = await relayerClient.allowlist.get({
limit: 100,
offset: 0,
});API Key Auth
// config.ts
import { createRelayerClient, TransactionSpeed } from 'rrelayer';
export let relayerClient = createRelayerClient({
serverUrl: 'http://localhost:8000',
relayerId: '94afb207-bb47-4392-9229-ba87e4d783cb',
apiKey: 'YOUR_API_KEY',
// This is optional it defaults to fast and is a fallback
// You can override this with the transaction request
speed: TransactionSpeed.FAST,
});
...
// get-allowlist.ts
import { relayerClient } from './config';
// returns a PagingResult<`0x${string}`> - import { PagingResult } from 'rrelayer';
let allowlist = await relayerClient.allowlist.get({
limit: 100,
offset: 0,
});