blocto / solana-go-sdk

Solana Golang SDK
https://blocto.github.io/solana-go-sdk/
MIT License
349 stars 86 forks source link

how to get token account #140

Open yangyile1990 opened 11 months ago

yangyile1990 commented 11 months ago

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 commented 11 months ago

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.

yihau commented 11 months ago

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)
    }
}