github.com/InjectiveLabs/sdk-go@v1.53.0/examples/chain/tokenfactory/4_MsgSetDenomMetadata/example.go (about)

     1  package main
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  	"os"
     7  
     8  	tokenfactorytypes "github.com/InjectiveLabs/sdk-go/chain/tokenfactory/types"
     9  	"github.com/InjectiveLabs/sdk-go/client"
    10  	chainclient "github.com/InjectiveLabs/sdk-go/client/chain"
    11  	"github.com/InjectiveLabs/sdk-go/client/common"
    12  	rpchttp "github.com/cometbft/cometbft/rpc/client/http"
    13  	banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
    14  )
    15  
    16  func main() {
    17  	network := common.LoadNetwork("testnet", "lb")
    18  	tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket")
    19  	if err != nil {
    20  		panic(err)
    21  	}
    22  
    23  	senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring(
    24  		os.Getenv("HOME")+"/.injectived",
    25  		"injectived",
    26  		"file",
    27  		"inj-user",
    28  		"12345678",
    29  		"f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided
    30  		false,
    31  	)
    32  
    33  	if err != nil {
    34  		panic(err)
    35  	}
    36  
    37  	clientCtx, err := chainclient.NewClientContext(
    38  		network.ChainId,
    39  		senderAddress.String(),
    40  		cosmosKeyring,
    41  	)
    42  	if err != nil {
    43  		fmt.Println(err)
    44  		return
    45  	}
    46  	clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient)
    47  
    48  	chainClient, err := chainclient.NewChainClient(
    49  		clientCtx,
    50  		network,
    51  		common.OptionGasPrices(client.DefaultGasPriceWithDenom),
    52  	)
    53  
    54  	if err != nil {
    55  		panic(err)
    56  	}
    57  
    58  	denom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test"
    59  	subdenom := "inj_test"
    60  	tokenDecimals := uint32(6)
    61  
    62  	microDenomUnit := banktypes.DenomUnit{
    63  		Denom:    denom,
    64  		Exponent: 0,
    65  		Aliases:  []string{fmt.Sprintf("micro%s", subdenom)},
    66  	}
    67  	denomUnit := banktypes.DenomUnit{
    68  		Denom:    subdenom,
    69  		Exponent: tokenDecimals,
    70  		Aliases:  []string{subdenom},
    71  	}
    72  
    73  	metadata := banktypes.Metadata{
    74  		Description: "Injective Test Token",
    75  		DenomUnits:  []*banktypes.DenomUnit{&microDenomUnit, &denomUnit},
    76  		Base:        denom,
    77  		Display:     subdenom,
    78  		Name:        "Injective Test",
    79  		Symbol:      "INJTEST",
    80  		URI:         "http://injective-test.com/icon.jpg",
    81  		URIHash:     "",
    82  		Decimals:    tokenDecimals,
    83  	}
    84  
    85  	message := new(tokenfactorytypes.MsgSetDenomMetadata)
    86  	message.Sender = senderAddress.String()
    87  	message.Metadata = metadata
    88  
    89  	// AsyncBroadcastMsg, SyncBroadcastMsg, QueueBroadcastMsg
    90  	response, err := chainClient.AsyncBroadcastMsg(message)
    91  
    92  	if err != nil {
    93  		panic(err)
    94  	}
    95  
    96  	str, _ := json.MarshalIndent(response, "", " ")
    97  	fmt.Print(string(str))
    98  }