github.com/MetalBlockchain/metalgo@v1.11.9/wallet/subnet/primary/examples/get-p-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/constants" 12 "github.com/MetalBlockchain/metalgo/utils/formatting/address" 13 "github.com/MetalBlockchain/metalgo/utils/set" 14 "github.com/MetalBlockchain/metalgo/wallet/chain/p" 15 "github.com/MetalBlockchain/metalgo/wallet/chain/p/builder" 16 "github.com/MetalBlockchain/metalgo/wallet/subnet/primary" 17 "github.com/MetalBlockchain/metalgo/wallet/subnet/primary/common" 18 ) 19 20 func main() { 21 uri := primary.LocalAPIURI 22 addrStr := "P-local18jma8ppw3nhx5r4ap8clazz0dps7rv5u00z96u" 23 24 addr, err := address.ParseToID(addrStr) 25 if err != nil { 26 log.Fatalf("failed to parse address: %s\n", err) 27 } 28 29 addresses := set.Of(addr) 30 31 ctx := context.Background() 32 33 fetchStartTime := time.Now() 34 state, err := primary.FetchState(ctx, uri, addresses) 35 if err != nil { 36 log.Fatalf("failed to fetch state: %s\n", err) 37 } 38 log.Printf("fetched state of %s in %s\n", addrStr, time.Since(fetchStartTime)) 39 40 pUTXOs := common.NewChainUTXOs(constants.PlatformChainID, state.UTXOs) 41 pBackend := p.NewBackend(state.PCTX, pUTXOs, nil) 42 pBuilder := builder.New(addresses, state.PCTX, pBackend) 43 44 currentBalances, err := pBuilder.GetBalance() 45 if err != nil { 46 log.Fatalf("failed to get the balance: %s\n", err) 47 } 48 49 avaxID := state.PCTX.AVAXAssetID 50 avaxBalance := currentBalances[avaxID] 51 log.Printf("current AVAX balance of %s is %d nAVAX\n", addrStr, avaxBalance) 52 }