Turbo SDKArNS Names
You need a Solana key, not Solana funds
An ANT is a Metaplex Core asset on Solana, so the owner is always a Solana address — even when you pay with Arweave or Ethereum credits. But the owner never pays: Turbo is the fee payer on every sponsored action, so the owner's SOL balance can stay at zero for the life of the name.
Supply the owner as an ArNSOwnerSigner:
import { solanaOwnerSigner } from '@ardrive/turbo-sdk';
// From a secret key (servers, scripts, tests)
const owner = solanaOwnerSigner(bs58SolanaSecretKey);A browser wallet (Phantom, Solflare, or an app's embedded wallet) should implement the interface directly rather than exposing a secret key:
const owner = {
getAddress: () => wallet.publicKey.toBase58(),
signTransaction: async (txBase64) => {
// atob/btoa rather than Buffer: browsers do not provide Buffer unless the
// app polyfills it. The spread is safe here because a Solana transaction
// is capped at 1232 bytes.
const tx = VersionedTransaction.deserialize(
Uint8Array.from(atob(txBase64), (c) => c.charCodeAt(0)),
);
const signed = await wallet.signTransaction(tx);
return btoa(String.fromCharCode(...signed.serialize()));
},
signMessage: (message) => wallet.signMessage(message),
};How is this guide?