Skip to main content

TbaResource

Access via urblock.tba.

Create and manage ERC-6551 Token Bound Accounts — smart contract wallets owned by NFTs.

Methods

create(params)

Create a new Token Bound Account for an NFT.

const tba = await urblock.tba.create({
token_id: "tok_abc123",
nft_token_id: "1",
network: "polygon_amoy",
idempotency_key: "tba-001",
});

Returns: TbaResponse


list(params?)

List Token Bound Accounts.

const tbas = await urblock.tba.list({ limit: 10 });

Returns: ListResponse<TbaResponse>


retrieve(id)

Get a TBA by ID.

const tba = await urblock.tba.retrieve("tba_abc123");

Returns: TbaResponse


predictAccount(id)

Predict the deterministic address for a TBA.

const result = await urblock.tba.predictAccount("tba_abc123");

Returns: TbaAccountResponse


getToken(id)

Get the NFT that owns this TBA.

const token = await urblock.tba.getToken("tba_abc123");

Returns: TbaTokenResponse


getState(id)

Get the state (nonce) of a TBA.

const state = await urblock.tba.getState("tba_abc123");

Returns: TbaStateResponse


getBalance(id)

Get ETH and token balances for a TBA.

const balance = await urblock.tba.getBalance("tba_abc123");

Returns: TbaBalanceResponse


execute(id, params)

Execute a call from the TBA.

const tx = await urblock.tba.execute("tba_abc123", {
to: "0x...",
value: "0",
data: "0x...",
idempotency_key: "tba-exec-001",
});

Returns: TransactionShortResponse


executeBatch(id, params)

Execute multiple calls from the TBA in a single transaction.

const tx = await urblock.tba.executeBatch("tba_abc123", {
calls: [
{ to: "0xAAA...", value: "0", data: "0x..." },
{ to: "0xBBB...", value: "100", data: "0x..." },
],
idempotency_key: "tba-batch-001",
});

Returns: TransactionShortResponse


isValidSignature(id, hash, signature)

Verify an EIP-1271 signature.

const result = await urblock.tba.isValidSignature(
"tba_abc123",
"0xabc...",
"0xdef...",
);

Returns: TbaIsValidSignatureResponse


isValidSigner(id, signer)

Check if an address is a valid signer for this TBA.

const result = await urblock.tba.isValidSigner("tba_abc123", "0x...");

Returns: TbaIsValidSignerResponse


getAccountImplementation(id)

Get the implementation address of the TBA.

const result = await urblock.tba.getAccountImplementation("tba_abc123");

Returns: TbaRegistryImplementationResponse


getTotalAccounts(id)

Get the total number of TBAs created by the registry.

const result = await urblock.tba.getTotalAccounts("tba_abc123");

Returns: TbaRegistryTotalAccountsResponse


getByNft(tokenId, nftTokenId)

Get a TBA by its parent NFT.

const tba = await urblock.tba.getByNft("tok_abc123", "1");

Returns: TbaResponse