Skip to main content
Defined in: client/solana/solana.ts:53 The namespace containing all Solana methods.

Implements

Constructors

Constructor

new SolanaClient(): SolanaClient;

Returns

SolanaClient

Methods

createAccount()

createAccount(options?: CreateAccountOptions): Promise<{
  requestFaucet: (options: Omit<RequestFaucetOptions, "address">) => Promise<SignatureResult>;
  sendTransaction: (options: Omit<SendTransactionOptions, "address">) => Promise<SendTransactionResult>;
  signMessage: (options: Omit<SignMessageOptions, "address">) => Promise<SignatureResult>;
  signTransaction: (options: Omit<SignTransactionOptions, "address">) => Promise<SignTransactionResult>;
  transfer: (options: Omit<TransferOptions, "from">) => Promise<SignatureResult>;
}>;
Defined in: client/solana/solana.ts:84 Creates a new Solana account.

Parameters

options?
CreateAccountOptions = {} Parameters for creating the Solana account.

Returns

Promise<{ requestFaucet: (options: Omit<RequestFaucetOptions, "address">) => Promise<SignatureResult>; sendTransaction: (options: Omit<SendTransactionOptions, "address">) => Promise<SendTransactionResult>; signMessage: (options: Omit<SignMessageOptions, "address">) => Promise<SignatureResult>; signTransaction: (options: Omit<SignTransactionOptions, "address">) => Promise<SignTransactionResult>; transfer: (options: Omit<TransferOptions, "from">) => Promise<SignatureResult>; }> A promise that resolves to the newly created account.

Examples

         const account = await cdp.solana.createAccount();
         const account = await cdp.solana.createAccount(&#123; name: "MyAccount" &#125;);
         const idempotencyKey = uuidv4();

         // First call
         await cdp.solana.createAccount({ idempotencyKey });

         // Second call with the same idempotency key will return the same account
         await cdp.solana.createAccount({ idempotencyKey });

Implementation of

SolanaClientInterface.createAccount

exportAccount()

exportAccount(options: ExportAccountOptions): Promise<string>;
Defined in: client/solana/solana.ts:122 Exports a CDP Solana account’s private key. It is important to store the private key in a secure place after it’s exported.

Parameters

options
ExportAccountOptions Parameters for exporting the Solana account.

Returns

Promise<string> A promise that resolves to the exported account’s full 64-byte private key as a base58 encoded string.

Examples

const privateKey = await cdp.solana.exportAccount({
  address: "1234567890123456789012345678901234567890",
});
const privateKey = await cdp.solana.exportAccount({
  name: "MyAccount",
});

Implementation of

SolanaClientInterface.exportAccount

getAccount()

getAccount(options: GetAccountOptions): Promise<{
  requestFaucet: (options: Omit<RequestFaucetOptions, "address">) => Promise<SignatureResult>;
  sendTransaction: (options: Omit<SendTransactionOptions, "address">) => Promise<SendTransactionResult>;
  signMessage: (options: Omit<SignMessageOptions, "address">) => Promise<SignatureResult>;
  signTransaction: (options: Omit<SignTransactionOptions, "address">) => Promise<SignTransactionResult>;
  transfer: (options: Omit<TransferOptions, "from">) => Promise<SignatureResult>;
}>;
Defined in: client/solana/solana.ts:283 Gets a Solana account by its address.

Parameters

options
GetAccountOptions Parameters for getting the Solana account. Either address or name must be provided. If both are provided, lookup will be done by address and name will be ignored.

Returns

Promise<{ requestFaucet: (options: Omit<RequestFaucetOptions, "address">) => Promise<SignatureResult>; sendTransaction: (options: Omit<SendTransactionOptions, "address">) => Promise<SendTransactionResult>; signMessage: (options: Omit<SignMessageOptions, "address">) => Promise<SignatureResult>; signTransaction: (options: Omit<SignTransactionOptions, "address">) => Promise<SignTransactionResult>; transfer: (options: Omit<TransferOptions, "from">) => Promise<SignatureResult>; }> A promise that resolves to the account.

Examples

         const account = await cdp.solana.getAccount({
           address: "1234567890123456789012345678901234567890",
         });
         const account = await cdp.solana.getAccount({
           name: "MyAccount",
         });

Implementation of

SolanaClientInterface.getAccount

getOrCreateAccount()

getOrCreateAccount(options: GetOrCreateAccountOptions): Promise<{
  requestFaucet: (options: Omit<RequestFaucetOptions, "address">) => Promise<SignatureResult>;
  sendTransaction: (options: Omit<SendTransactionOptions, "address">) => Promise<SendTransactionResult>;
  signMessage: (options: Omit<SignMessageOptions, "address">) => Promise<SignatureResult>;
  signTransaction: (options: Omit<SignTransactionOptions, "address">) => Promise<SignTransactionResult>;
  transfer: (options: Omit<TransferOptions, "from">) => Promise<SignatureResult>;
}>;
Defined in: client/solana/solana.ts:312 Gets a Solana account by its address.

Parameters

options
GetOrCreateAccountOptions Parameters for getting or creating the Solana account.

Returns

Promise<{ requestFaucet: (options: Omit<RequestFaucetOptions, "address">) => Promise<SignatureResult>; sendTransaction: (options: Omit<SendTransactionOptions, "address">) => Promise<SendTransactionResult>; signMessage: (options: Omit<SignMessageOptions, "address">) => Promise<SignatureResult>; signTransaction: (options: Omit<SignTransactionOptions, "address">) => Promise<SignTransactionResult>; transfer: (options: Omit<TransferOptions, "from">) => Promise<SignatureResult>; }> A promise that resolves to the account.

Example

const account = await cdp.solana.getOrCreateAccount({
  name: "MyAccount",
});

Implementation of

SolanaClientInterface.getOrCreateAccount

importAccount()

importAccount(options: ImportAccountOptions): Promise<{
  requestFaucet: (options: Omit<RequestFaucetOptions, "address">) => Promise<SignatureResult>;
  sendTransaction: (options: Omit<SendTransactionOptions, "address">) => Promise<SendTransactionResult>;
  signMessage: (options: Omit<SignMessageOptions, "address">) => Promise<SignatureResult>;
  signTransaction: (options: Omit<SignTransactionOptions, "address">) => Promise<SignTransactionResult>;
  transfer: (options: Omit<TransferOptions, "from">) => Promise<SignatureResult>;
}>;
Defined in: client/solana/solana.ts:203 Imports a Solana account using a private key. The private key will be encrypted before being stored securely.

Parameters

options
ImportAccountOptions Parameters for importing the Solana account.

Returns

Promise<{ requestFaucet: (options: Omit<RequestFaucetOptions, "address">) => Promise<SignatureResult>; sendTransaction: (options: Omit<SendTransactionOptions, "address">) => Promise<SendTransactionResult>; signMessage: (options: Omit<SignMessageOptions, "address">) => Promise<SignatureResult>; signTransaction: (options: Omit<SignTransactionOptions, "address">) => Promise<SignTransactionResult>; transfer: (options: Omit<TransferOptions, "from">) => Promise<SignatureResult>; }> A promise that resolves to the imported account.

Examples

         const account = await cdp.solana.importAccount({
           privateKey: "3Kzj...",
         });
         const account = await cdp.solana.importAccount({
           privateKey: "3Kzj...",
           name: "ImportedAccount",
         });
         const idempotencyKey = uuidv4();

         const account = await cdp.solana.importAccount({
           privateKey: "3Kzj...",
           name: "ImportedAccount",
           idempotencyKey,
         });

Implementation of

SolanaClientInterface.importAccount

listAccounts()

listAccounts(options?: ListAccountsOptions): Promise<ListAccountsResult>;
Defined in: client/solana/solana.ts:376 Lists all Solana accounts.

Parameters

options?
ListAccountsOptions = {} Parameters for listing the Solana accounts.

Returns

Promise<ListAccountsResult> A promise that resolves to an array of Solana account instances.

Examples

         const accounts = await cdp.solana.listAccounts();
         let page = await cdp.solana.listAccounts();

         while (page.nextPageToken) {
           page = await cdp.solana.listAccounts(&#123; pageToken: page.nextPageToken &#125;);
         }

         page.accounts.forEach(account => console.log(account));
}

#### Implementation of

```ts
SolanaClientInterface.listAccounts

listTokenBalances()

listTokenBalances(options: ListTokenBalancesOptions): Promise<ListTokenBalancesResult>;
Defined in: client/solana/solana.ts:664 Lists the token balances for a Solana account.

Parameters

options
ListTokenBalancesOptions Parameters for listing the Solana token balances.

Returns

Promise<ListTokenBalancesResult> A promise that resolves to an array of Solana token balance instances.

Example

const balances = await cdp.solana.listTokenBalances(&#123; address: "...", network: "solana-devnet" &#125;);

Implementation of

SolanaClientInterface.listTokenBalances

requestFaucet()

requestFaucet(options: RequestFaucetOptions): Promise<SignatureResult>;
Defined in: client/solana/solana.ts:422 Requests funds from a Solana faucet.

Parameters

options
RequestFaucetOptions Parameters for requesting funds from the Solana faucet.

Returns

Promise<SignatureResult> A promise that resolves to the transaction signature.

Example

         const signature = await cdp.solana.requestFaucet({
           address: "1234567890123456789012345678901234567890",
           token: "sol",
         });

Implementation of

SolanaClientInterface.requestFaucet

sendTransaction()

sendTransaction(options: SendTransactionOptions): Promise<SendTransactionResult>;
Defined in: client/solana/solana.ts:630 Sends a Solana transaction using the Coinbase API.

Parameters

options
SendTransactionOptions Parameters for sending the Solana transaction.

Returns

Promise<SendTransactionResult> A promise that resolves to the transaction result.

Example

const signature = await cdp.solana.sendTransaction({
  network: "solana-devnet",
  transaction: "...",
  useCdpSponsor: true,
});

Implementation of

SolanaClientInterface.sendTransaction

signMessage()

signMessage(options: SignMessageOptions): Promise<SignatureResult>;
Defined in: client/solana/solana.ts:458 Signs a message.

Parameters

options
SignMessageOptions Parameters for signing the message.

Returns

Promise<SignatureResult> A promise that resolves to the signature.

Example

// Create a Solana account
const account = await cdp.solana.createAccount();

// When you want to sign a message, you can do so by address
const signature = await cdp.solana.signMessage({
  address: account.address,
  message: "Hello, world!",
});

Implementation of

SolanaClientInterface.signMessage

signTransaction()

signTransaction(options: SignTransactionOptions): Promise<SignTransactionResult>;
Defined in: client/solana/solana.ts:531 Signs a transaction.

Parameters

options
SignTransactionOptions Parameters for signing the transaction.

Returns

Promise<SignTransactionResult> A promise that resolves to the signature.

Example

// Create a Solana account
const account = await cdp.solana.createAccount();

// Build your transaction using @solana/kit
import {
  address as solanaAddress,
  appendTransactionMessageInstructions,
  compileTransaction,
  createNoopSigner,
  createSolanaRpc,
  createTransactionMessage,
  getBase64EncodedWireTransaction,
  pipe,
  setTransactionMessageFeePayer,
  setTransactionMessageLifetimeUsingBlockhash,
} from "@solana/kit";
import { getTransferSolInstruction } from "@solana-program/system";

const rpc = createSolanaRpc("https://api.devnet.solana.com");
const { value: { blockhash, lastValidBlockHeight } } = await rpc.getLatestBlockhash().send();

const txMsg = pipe(
  createTransactionMessage({ version: 0 }),
  (tx) => setTransactionMessageFeePayer(solanaAddress(account.address), tx),
  (tx) => setTransactionMessageLifetimeUsingBlockhash(
    { blockhash, lastValidBlockHeight },
    tx,
  ),
  (tx) => appendTransactionMessageInstructions([
    getTransferSolInstruction({
      source: createNoopSigner(solanaAddress(account.address)),
      destination: solanaAddress("3KzDtddx4i53FBkvCzuDmRbaMozTZoJBb1TToWhz3JfE"),
      amount: 10000n,
    }),
  ], tx),
);

// Base64 encode the compiled transaction
const transaction = getBase64EncodedWireTransaction(compileTransaction(txMsg));

// Sign the transaction via the CDP API
const signature = await cdp.solana.signTransaction({
  address: account.address,
  transaction,
});

Implementation of

SolanaClientInterface.signTransaction

updateAccount()

updateAccount(options?: UpdateSolanaAccountOptions): Promise<{
  requestFaucet: (options: Omit<RequestFaucetOptions, "address">) => Promise<SignatureResult>;
  sendTransaction: (options: Omit<SendTransactionOptions, "address">) => Promise<SendTransactionResult>;
  signMessage: (options: Omit<SignMessageOptions, "address">) => Promise<SignatureResult>;
  signTransaction: (options: Omit<SignTransactionOptions, "address">) => Promise<SignTransactionResult>;
  transfer: (options: Omit<TransferOptions, "from">) => Promise<SignatureResult>;
}>;
Defined in: client/solana/solana.ts:586 Updates a CDP Solana account.

Parameters

options?
UpdateSolanaAccountOptions Optional parameters for creating the account.

Returns

Promise<{ requestFaucet: (options: Omit<RequestFaucetOptions, "address">) => Promise<SignatureResult>; sendTransaction: (options: Omit<SendTransactionOptions, "address">) => Promise<SendTransactionResult>; signMessage: (options: Omit<SignMessageOptions, "address">) => Promise<SignatureResult>; signTransaction: (options: Omit<SignTransactionOptions, "address">) => Promise<SignTransactionResult>; transfer: (options: Omit<TransferOptions, "from">) => Promise<SignatureResult>; }> A promise that resolves to the updated account.

Examples

         const account = await cdp.sol.updateAccount({ address: "...", update: { name: "New Name" } });
         const account = await cdp.sol.updateAccount(&#123; address: "...", update: &#123; accountPolicy: "73bcaeeb-d7af-4615-b064-42b5fe83a31e" &#125; });
         const idempotencyKey = uuidv4();

         // First call
         await cdp.sol.updateAccount({
           address: "0x...",
           update: { accountPolicy: "73bcaeeb-d7af-4615-b064-42b5fe83a31e" },
           idempotencyKey,
         });

         // Second call with the same idempotency key will not update
         await cdp.sol.updateAccount({
           address: '0x...',
           update: { name: "" },
           idempotencyKey,
         });

Implementation of

SolanaClientInterface.updateAccount