Skip to main content

Helper methods

Helpers that come part of the Tableland SDK.

The page outlines a few of the most useful helper methods exported from the @tableland/sdk package. You can find the full suite of methods and types available in the API Reference.


To use the helpers, you'll need to import them from the SDK:

import { helpers } from "@tableland/sdk";

The subsequent examples will show how to call each of these methods on the helpers module, such as helpers.createPollingController(). Alternatively, you can import them directly:

import { createPollingController } from "@tableland/sdk/helpers";


The validator base URL can be retrieved using the getBaseUrl method to check what URL should be used when making direct requests to the validator API.

const baseUrl = helpers.getBaseUrl(11155111); // Or pass the chain name, e.g., `sepolia`


The getChainInfo method returns the chain information for the current network. This includes the chain name, chain ID, Tableland registry contract address, and validator information (base URL, polling timeout, and polling interval).

const chainInfo = helpers.getChainInfo(11155111); // Or pass the chain name, e.g., `sepolia`
// {
// chainName: 'sepolia',
// chainId: 11155111,
// contractAddress: '0xc50C62498448ACc8dBdE43DA77f8D5D2E2c7597D',
// baseUrl: '',
// pollingTimeout: 40000,
// pollingInterval: 1500
// }


To simply get the Tableland registry contract address, you can use the getContractAddress method.

const contractAddress = helpers.getContractAddress(11155111); // Or pass the chain name, e.g., `sepolia`
// 0xc50C62498448ACc8dBdE43DA77f8D5D2E2c7597D


See the polling docs for more information on how to use the PollingController object. It's designed to control the polling behavior for Database transaction polling and validator query materialization.


A Signal is a wrapper around the AbortSignal object and an abort() method to cancel the signal. It can be used to cancel a request or polling operation.

const signal = helpers.createSignal();
signal.abort(); // Cancels the signal


If you have an existing Database instance, you can extract the chain ID by passing the Database configuration object to the extractChainId method.

// Set up a `signer` and pass to the `Database` constructor
const db = new Database({ signer });
const chainInfo = await helpers.extractChainId(db.config);
// 31337


The isTestnet method can be used to determine if the current network is a testnet, returning true or false based on the chain ID or name.

const isTestnet = helpers.isTestnet(11155111); // Or pass the chain name, e.g., `sepolia`
// true


You can override the chain and database settings by passing an object with the new values to the overrideDefaults method, which only needs to be executed.

helpers.overrideDefaults(1, {
chainName: "mainnet",
chainId: 1,
contractAddress: "0x012969f7e3439a9B04025b5a049EB9BAD82A8C12",
baseUrl: "",
pollingTimeout: 30000,
pollingInterval: 1000,


The @tableland/sqlparser comes as part of the SDK and can be used to normalize SQL queries. See the full docs on the SQL parser for more information, but here's a simple example:

const normalize = (sql) => helpers.normalize(sql);
const statement = `create table my_table ("invalid-$" int)`;
const normalized = await normalize(statement);
// Error: error parsing statement: syntax error at position 31 near '-'


You can retrieve an array of all of the chains Tableland supports, along with relative chain information.

const chains = helpers.supportedChains;
// {
// mainnet: {
// chainName: 'mainnet',
// chainId: 1,
// contractAddress: '0x012969f7e3439a9B04025b5a049EB9BAD82A8C12',
// baseUrl: '',
// pollingTimeout: 40000,
// pollingInterval: 1500
// },
// ...
// ]


The validateTableName method can be used to validate a table name and extract the prefix, chain ID, and table ID.

const tableParts = await helpers.validateTableName("my_table_31337_2");
// {
// prefix: 'my_table',
// chainId: 31337,
// tableId: 2,
// name: 'my_table_31337_2'
// }