Sejak beberapa hari lalu, saya telah berlatih menggunakan golang untuk memanggil kontrak solana dan menukar bahasa Rasanya tidak begitu mudah apabila melakukan evm, beberapa kod ethereum dilaksanakan. Rasa macam golang evm bahasa pertama.
Pada waktu pagi, saya membaca soalan yang ditanya oleh kumpulan
Keperluan
1. Ingin menentukan sama ada alamat Solana adalah sah
2. Ingin menentukan sama ada alamat sah memegang mana-mana satu daripada tiga token, iaitu baki > 1
Saya kebetulan sedang melakukan beberapa latihan, jadi saya akan menulis secara ringkas ideanya seperti berikut:
Gunakan alamat dompet dan alamat token untuk mengira alamat akaun token, dan kemudian hubungi GetTokenAccountBalance
lokey :=solana.MustPublicKeyFromBase58("HgJ5zad5N4pwKpAM8HQDA3g2r2H7EMLVN6S5HvHdiNyR") //钱包地址 tokenmint := solana.MustPublicKeyFromBase58("J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn") //token 地址 tokenacc, _, _ := solana.FindAssociatedTokenAddress(lokey, tokenmint) //算出token账号地址 outtbl, err = client.GetTokenAccountBalance(context.Background(), tokenacc,rpc.CommitmentFinalized)
Ahli kumpulan berikut mencadangkan penyelesaian yang lebih cekap:
Anda boleh menggunakan rpc getMultipleAccounts untuk meminta ratusan akaun token pada satu masa Beberapa kali dalam kelompok sepatutnya mencukupi, yang mengurangkan penggunaan kuota helius rpc dan mempunyai prestasi yang baik
Secara relatifnya, kaedah rakan kumpulan adalah lebih baik, RPC Helius mempunyai kuota Jika anda boleh mengendalikan satu, jangan lakukan tiga
Ada sedikit perbezaan dalam idea ini Ini adalah data akaun yang diperolehi, jadi kodnya ditulis seperti ini:
//获取token 账号代码和前面一样 out, _ := client.GetMultipleAccounts(context.Background(), lokey, tokenacc, tokenacc2, tokenacc3, tokenacc4) for _, ov := range out.Value { if ov != nil { if ov.Owner.String() == "11111111111111111111111111111111" { log.Debugf("acc %s,bl %d", ov.Owner.String(), ov.Lamports) } else { var ta token.Account err = bin.NewBinDecoder(ov.Data.GetBinary()).Decode(&ta) log.Debugf("acc %s,bl %d", ta.Owner.String(), ta.Amount) } } }
Saya hanya akan menyiarkannya dan mengambil nota Selamat datang untuk berkomunikasi.
Atas ialah kandungan terperinci solana memperoleh baki token dompet dan mengoptimumkannya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!