github.com/MetalBlockchain/metalgo@v1.11.9/wallet/subnet/primary/examples/get-x-chain-balance/main.go (about) 1 // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. 2 // See the file LICENSE for licensing terms. 3 4 package main 5 6 import ( 7 "context" 8 "log" 9 "time" 10 11 "github.com/MetalBlockchain/metalgo/utils/formatting/address" 12 "github.com/MetalBlockchain/metalgo/utils/set" 13 "github.com/MetalBlockchain/metalgo/wallet/chain/x" 14 "github.com/MetalBlockchain/metalgo/wallet/chain/x/builder" 15 "github.com/MetalBlockchain/metalgo/wallet/subnet/primary" 16 "github.com/MetalBlockchain/metalgo/wallet/subnet/primary/common" 17 ) 18 19 func main() { 20 uri := primary.LocalAPIURI 21 addrStr := "X-local18jma8ppw3nhx5r4ap8clazz0dps7rv5u00z96u" 22 23 addr, err := address.ParseToID(addrStr) 24 if err != nil { 25 log.Fatalf("failed to parse address: %s\n", err) 26 } 27 28 addresses := set.Of(addr) 29 30 ctx := context.Background() 31 32 fetchStartTime := time.Now() 33 state, err := primary.FetchState(ctx, uri, addresses) 34 if err != nil { 35 log.Fatalf("failed to fetch state: %s\n", err) 36 } 37 log.Printf("fetched state of %s in %s\n", addrStr, time.Since(fetchStartTime)) 38 39 xChainID := state.XCTX.BlockchainID 40 41 xUTXOs := common.NewChainUTXOs(xChainID, state.UTXOs) 42 xBackend := x.NewBackend(state.XCTX, xUTXOs) 43 xBuilder := builder.New(addresses, state.XCTX, xBackend) 44 45 currentBalances, err := xBuilder.GetFTBalance() 46 if err != nil { 47 log.Fatalf("failed to get the balance: %s\n", err) 48 } 49 50 avaxID := state.XCTX.AVAXAssetID 51 avaxBalance := currentBalances[avaxID] 52 log.Printf("current AVAX balance of %s is %d nAVAX\n", addrStr, avaxBalance) 53 }