github.com/InjectiveLabs/sdk-go@v1.53.0/examples/chain/permissions/1_CreateNamespace/example.go (about)

     1  package main
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  	"os"
     7  
     8  	permissionstypes "github.com/InjectiveLabs/sdk-go/chain/permissions/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  )
    14  
    15  func main() {
    16  	network := common.LoadNetwork("devnet", "lb")
    17  	tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket")
    18  	if err != nil {
    19  		panic(err)
    20  	}
    21  
    22  	senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring(
    23  		os.Getenv("HOME")+"/.injectived",
    24  		"injectived",
    25  		"file",
    26  		"inj-user",
    27  		"12345678",
    28  		"f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided
    29  		false,
    30  	)
    31  
    32  	if err != nil {
    33  		panic(err)
    34  	}
    35  
    36  	clientCtx, err := chainclient.NewClientContext(
    37  		network.ChainId,
    38  		senderAddress.String(),
    39  		cosmosKeyring,
    40  	)
    41  
    42  	if err != nil {
    43  		panic(err)
    44  	}
    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  	blockedAddress := "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r"
    59  	namespace := permissionstypes.Namespace{
    60  		Denom: "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test",
    61  		RolePermissions: []*permissionstypes.Role{
    62  			{
    63  				Role:        permissionstypes.EVERYONE,
    64  				Permissions: uint32(permissionstypes.Action_MINT | permissionstypes.Action_RECEIVE | permissionstypes.Action_BURN),
    65  			},
    66  			{
    67  				Role:        "blacklisted",
    68  				Permissions: 0,
    69  			},
    70  		},
    71  		AddressRoles: []*permissionstypes.AddressRoles{
    72  			{
    73  				Address: blockedAddress,
    74  				Roles:   []string{"blacklisted"},
    75  			},
    76  		},
    77  	}
    78  
    79  	msg := &permissionstypes.MsgCreateNamespace{
    80  		Sender:    senderAddress.String(),
    81  		Namespace: namespace,
    82  	}
    83  
    84  	//AsyncBroadcastMsg, SyncBroadcastMsg, QueueBroadcastMsg
    85  	response, err := chainClient.SyncBroadcastMsg(msg)
    86  
    87  	if err != nil {
    88  		panic(err)
    89  	}
    90  
    91  	str, _ := json.MarshalIndent(response, "", " ")
    92  	fmt.Print(string(str))
    93  }