solana-go-sdk icon indicating copy to clipboard operation
solana-go-sdk copied to clipboard

how to get token account

Open yangyile1990 opened this issue 1 year ago • 2 comments

I see the demo:

c.GetTokenAccountBalance(
		context.Background(),
		"HeCBh32JJ8DxcjTyc6q46tirHR8hd2xj3mGoAcQ7eduL",
	)

what the value HeCBh32JJ8DxcjTyc6q46tirHR8hd2xj3mGoAcQ7eduL ? where did it come?

how to get my account usdt amount?

yangyile1990 avatar Aug 10 '23 03:08 yangyile1990

your demo:

func main() {
	c := client.NewClient(rpc.DevnetRPCEndpoint)

	// token account address
	getAccountInfoResponse, err := c.GetAccountInfo(context.TODO(), "HeCBh32JJ8DxcjTyc6q46tirHR8hd2xj3mGoAcQ7eduL")
	if err != nil {
		log.Fatalf("failed to get account info, err: %v", err)
	}

	tokenAccount, err := token.TokenAccountFromData(getAccountInfoResponse.Data)
	if err != nil {
		log.Fatalf("failed to parse data to a token account, err: %v", err)
	}

	fmt.Printf("%+v\n", tokenAccount)
	// {Mint:F6tecPzBMF47yJ2EN6j2aGtE68yR5jehXcZYVZa6ZETo Owner:9aE476sH92Vz7DMPyq5WLPkrKWivxeuTKEFKd2sZZcde Amount:100000000 Delegate:<nil> State:1 IsNative:<nil> DelegatedAmount:0 CloseAuthority:<nil>}
}

but why HeCBh32JJ8DxcjTyc6q46tirHR8hd2xj3mGoAcQ7eduL is Mint:F6tecPzBMF47yJ2EN6j2aGtE68yR5jehXcZYVZa6ZETo Owner:9aE476sH92Vz7DMPyq5WLPkrKWivxeuTKEFKd2sZZcde.

if I have Mint:F6tecPzBMF47yJ2EN6j2aGtE68yR5jehXcZYVZa6ZETo Owner:9aE476sH92Vz7DMPyq5WLPkrKWivxeuTKEFKd2sZZcde, How can I get HeCBh32JJ8DxcjTyc6q46tirHR8hd2xj3mGoAcQ7eduL.

your api is not a circle. even too hard to use. that's why your chain is not popular.

yangyile1990 avatar Aug 10 '23 03:08 yangyile1990

thank you for the reporting. v1.26.0 has been released. could you upgrade it and try to use this one to get token accounts?

package main

import (
	"context"
	"fmt"
	"log"

	"github.com/blocto/solana-go-sdk/client"
	"github.com/blocto/solana-go-sdk/rpc"
)

func main() {
	owner := "9aE476sH92Vz7DMPyq5WLPkrKWivxeuTKEFKd2sZZcde"
	mint := "F6tecPzBMF47yJ2EN6j2aGtE68yR5jehXcZYVZa6ZETo"

	c := client.NewClient(rpc.DevnetRPCEndpoint)

	tokenAccounts, err := c.GetTokenAccountsByOwnerByMint(
		context.Background(),
		owner,
		mint,
	)
	if err != nil {
		log.Fatalf("failed to GetTokenAccountsByOwnerByMint, err: %v", err)
	}

	for i, tokenAccount := range tokenAccounts {
		fmt.Printf("[#%v] token account: %v amount: %v\n", i+1, tokenAccount.PublicKey, tokenAccount.Amount)
	}
}

yihau avatar Aug 10 '23 05:08 yihau