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  }