Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 79 additions & 8 deletions cli/commands/bridge/bridge.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,87 @@ package bridge

import (
"fmt"
"strconv"
"strings"

"github.com/hugobyte/dive/common"
"github.com/kurtosis-tech/kurtosis/api/golang/core/kurtosis_core_rpc_api_bindings"
"github.com/spf13/cobra"
)

// bridgeCmd represents the bridge command
var BridgeCmd = &cobra.Command{
Use: "bridge",
Short: "Command for cross chain communication between two different chains",
Long: `To connect two different chains using any of the supported cross chain communication protocols. This will create an relay to connect two different chains and pass any messages between them.`,
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("bridge called")
},
var (
chainA string
chainB string
)

const (
genesisIcon0 = "../services/jvm/icon/static-files/config/genesis-icon-0.zip"
genesisIcon1 = "../services/jvm/icon/static-files/config/genesis-icon-1.zip"
)

func NewBridgeCmd(diveContext *common.DiveContext) *cobra.Command {

var bridgeCmd = &cobra.Command{
Use: "bridge",
Short: "Command for cross chain communication between two different chains",
Long: `To connect two different chains using any of the supported cross chain communication protocols. This will create an relay to connect two different chains and pass any messages between them.`,
Run: func(cmd *cobra.Command, args []string) {
cmd.Help()
},
}

bridgeCmd.AddCommand(btpBridgeCmd(diveContext))

return bridgeCmd
}

func btpBridgeCmd(diveContext *common.DiveContext) *cobra.Command {

var btpbridgeCmd = &cobra.Command{
Use: "btp",
Short: "",
Long: `.`,
Run: func(cmd *cobra.Command, args []string) {

enclaveCtx, err := diveContext.GetEnclaveContext()
if err != nil {
panic(err)

}

bridge, _ := cmd.Flags().GetBool("bridge")

params := fmt.Sprintf(`{"args":{"links": {"src": "%s", "dst": "%s"},"bridge":"%s"}}`, chainA, chainB, strconv.FormatBool(bridge))

if strings.ToLower(chainA) == "icon" && strings.ToLower(chainB) == "icon" {

data, _, err := enclaveCtx.RunStarlarkPackage(diveContext.Ctx, "../", "main.star", "run_btp_setup", params, false, 4, []kurtosis_core_rpc_api_bindings.KurtosisFeatureFlag{})

if err != nil {
fmt.Println(err)
}
response := common.GetSerializedData(data)

common.WriteToFile(response)
} else {
data, _, err := enclaveCtx.RunStarlarkPackage(diveContext.Ctx, "../", "main.star", "run_btp_setup", params, false, 4, []kurtosis_core_rpc_api_bindings.KurtosisFeatureFlag{})

if err != nil {
fmt.Println(err)
}
response := common.GetSerializedData(data)

common.WriteToFile(response)
}
},
}

btpbridgeCmd.Flags().StringVar(&chainA, "chainA", "", "specify chain A")
btpbridgeCmd.Flags().StringVar(&chainB, "chainB", "", "specify chain B")
btpbridgeCmd.Flags().Bool("bridge", false, "sepcify bridge falg")

btpbridgeCmd.MarkFlagRequired("chainA")
btpbridgeCmd.MarkFlagRequired("chainB")

return btpbridgeCmd
}
57 changes: 13 additions & 44 deletions cli/commands/chain/chains.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,65 +4,34 @@ Copyright © 2023 Hugobyte AI Labs<hello@hugobyte.com>
package chain

import (
"context"

"github.com/hugobyte/dive/commands/chain/types"
"github.com/hugobyte/dive/common"
"github.com/kurtosis-tech/kurtosis/api/golang/core/lib/enclaves"
"github.com/kurtosis-tech/kurtosis/api/golang/engine/lib/kurtosis_context"
"github.com/spf13/cobra"
)

// chainCmd represents the chain command
func NewChainCmd(diveContext *common.DiveContext) *cobra.Command {
var chainCmd = &cobra.Command{
Use: "chain",
Short: "runs specfied chain",
Long: ``,

var ChainCmd = &cobra.Command{
Use: "chain",
Short: "runs specfied chain",
Long: ``,

Run: func(cmd *cobra.Command, args []string) {
cmd.Help()

},
}

func init() {

ctx := context.Background()

kurtosisContext, err := kurtosis_context.NewKurtosisContextFromLocalEngine()
if err != nil {
panic(err)
Run: func(cmd *cobra.Command, args []string) {
cmd.Help()

},
}

enclaveCtx, err := getEnclaveContext(ctx, common.DiveEnclave, kurtosisContext)
enclaveCtx, err := diveContext.GetEnclaveContext()
if err != nil {
panic(err)

}

ChainCmd.AddCommand(types.NewIconCmd(ctx, enclaveCtx))
ChainCmd.AddCommand(types.NewEthCmd(ctx, enclaveCtx))
ChainCmd.AddCommand(types.NewHardhatCmd(ctx, enclaveCtx))
chainCmd.AddCommand(types.NewIconCmd(diveContext.Ctx, enclaveCtx))
chainCmd.AddCommand(types.NewEthCmd(diveContext.Ctx, enclaveCtx))
chainCmd.AddCommand(types.NewHardhatCmd(diveContext.Ctx, enclaveCtx))

}

func getEnclaveContext(ctx context.Context, identifier string, kurtosisContext *kurtosis_context.KurtosisContext) (*enclaves.EnclaveContext, error) {

_, err := kurtosisContext.GetEnclave(ctx, common.DiveEnclave)
if err != nil {
enclaveCtx, err := kurtosisContext.CreateEnclave(ctx, identifier, false)
if err != nil {
return nil, err
return chainCmd

}
return enclaveCtx, nil
}
enclaveCtx, err := kurtosisContext.GetEnclaveContext(ctx, identifier)

if err != nil {
return nil, err
}
return enclaveCtx, nil
}
4 changes: 2 additions & 2 deletions cli/commands/chain/types/eth.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,15 @@ func NewEthCmd(ctx context.Context, kurtosisEnclaveContext *enclaves.EnclaveCont
Long: ``,
Run: func(cmd *cobra.Command, args []string) {

fmt.Println(runEthNode(ctx, kurtosisEnclaveContext).EncodeToString())
fmt.Println(RunEthNode(ctx, kurtosisEnclaveContext).EncodeToString())
},
}

return ethCmd

}

func runEthNode(ctx context.Context, kurtosisEnclaveContext *enclaves.EnclaveContext) *common.DiveserviceResponse {
func RunEthNode(ctx context.Context, kurtosisEnclaveContext *enclaves.EnclaveContext) *common.DiveserviceResponse {

data, _, err := kurtosisEnclaveContext.RunStarlarkPackage(ctx, "../", "services/evm/eth/eth.star", "start_eth_node_serivce", `{"args":{},"node_type":"eth"}`, false, 4, []kurtosis_core_rpc_api_bindings.KurtosisFeatureFlag{})

Expand Down
4 changes: 2 additions & 2 deletions cli/commands/chain/types/hardhat.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,15 @@ func NewHardhatCmd(ctx context.Context, kurtosisEnclaveContext *enclaves.Enclave
Long: ``,
Run: func(cmd *cobra.Command, args []string) {

fmt.Println(runHardhatNode(ctx, kurtosisEnclaveContext).EncodeToString())
fmt.Println(RunHardhatNode(ctx, kurtosisEnclaveContext).EncodeToString())
},
}

return ethCmd

}

func runHardhatNode(ctx context.Context, kurtosisEnclaveContext *enclaves.EnclaveContext) *common.DiveserviceResponse {
func RunHardhatNode(ctx context.Context, kurtosisEnclaveContext *enclaves.EnclaveContext) *common.DiveserviceResponse {

data, _, err := kurtosisEnclaveContext.RunStarlarkPackage(ctx, "../", "services/evm/eth/eth.star", "start_eth_node_serivce", `{"args":{},"node_type":"hardhat"}`, false, 4, []kurtosis_core_rpc_api_bindings.KurtosisFeatureFlag{})

Expand Down
52 changes: 26 additions & 26 deletions cli/commands/chain/types/icon.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ import (
"fmt"
"path/filepath"

"os"

"github.com/hugobyte/dive/common"
"github.com/kurtosis-tech/kurtosis/api/golang/core/kurtosis_core_rpc_api_bindings"
"github.com/kurtosis-tech/kurtosis/api/golang/core/lib/enclaves"
Expand Down Expand Up @@ -35,14 +33,26 @@ type IconServiceConfig struct {
Cid string `json:"cid"`
}

func (sc *IconServiceConfig) defaultServiceConfig() {
func (sc *IconServiceConfig) GetDefaultConfigIconNode0() {

sc.Id = "0"
sc.Port = 9080
sc.PublicPort = 8090
sc.P2PListenAddress = "7080"
sc.P2PAddress = "8080"
sc.Cid = "0xacbc4e"

}

func (sc *IconServiceConfig) GetDefaultConfigIconNode1() {

sc.Id = "1"
sc.Port = 9081
sc.PublicPort = 8091
sc.P2PListenAddress = "7081"
sc.P2PAddress = "8081"
sc.Cid = "0x42f1f3"

}

func (sc *IconServiceConfig) EncodeToString() (string, error) {
Expand All @@ -66,11 +76,11 @@ func NewIconCmd(ctx context.Context, kurtosisEnclaveContext *enclaves.EnclaveCon
serviceConfig := &IconServiceConfig{}

if configFilePath == "" {
serviceConfig.defaultServiceConfig()
serviceConfig.GetDefaultConfigIconNode0()
} else {
data, err := readConfigFile(configFilePath)
data, err := common.ReadConfigFile(configFilePath)
if err != nil {
serviceConfig.defaultServiceConfig()
serviceConfig.GetDefaultConfigIconNode0()
}

err = json.Unmarshal(data, serviceConfig)
Expand All @@ -83,15 +93,15 @@ func NewIconCmd(ctx context.Context, kurtosisEnclaveContext *enclaves.EnclaveCon

if decentralisation {

data := runIconNode(ctx, kurtosisEnclaveContext, serviceConfig)
data := RunIconNode(ctx, kurtosisEnclaveContext, serviceConfig, genesis)

params := getDecentralizeParms(data.ServiceName, data.PrivateEndpoint, data.KeystorePath, data.KeyPassword, data.NetworkId)
params := GetDecentralizeParms(data.ServiceName, data.PrivateEndpoint, data.KeystorePath, data.KeyPassword, data.NetworkId)

Decentralisation(ctx, kurtosisEnclaveContext, params)

} else {

data := runIconNode(ctx, kurtosisEnclaveContext, serviceConfig)
data := RunIconNode(ctx, kurtosisEnclaveContext, serviceConfig, genesis)

fmt.Println(data.EncodeToString())

Expand Down Expand Up @@ -121,7 +131,7 @@ func IconDecentralisationCmd(ctx context.Context, kurtosisEnclaveContext *enclav
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("Decentralisation")

params := getDecentralizeParms(serviceName, nodeEndpoint, keystorePath, keystorepassword, networkID)
params := GetDecentralizeParms(serviceName, nodeEndpoint, keystorePath, keystorepassword, networkID)

Decentralisation(ctx, kurtosisEnclaveContext, params)

Expand All @@ -143,7 +153,7 @@ func IconDecentralisationCmd(ctx context.Context, kurtosisEnclaveContext *enclav

}

func runIconNode(ctx context.Context, kurtosisEnclaveContext *enclaves.EnclaveContext, serviceConfig *IconServiceConfig) *common.DiveserviceResponse {
func RunIconNode(ctx context.Context, kurtosisEnclaveContext *enclaves.EnclaveContext, serviceConfig *IconServiceConfig, genesisFilePath string) *common.DiveserviceResponse {

paramData, err := serviceConfig.EncodeToString()
if err != nil {
Expand All @@ -158,16 +168,17 @@ func runIconNode(ctx context.Context, kurtosisEnclaveContext *enclaves.EnclaveCo

responseData := common.GetSerializedData(data)

genesis_file_name := filepath.Base(genesis)
r, d, err := kurtosisEnclaveContext.UploadFiles(genesis, genesis_file_name)
genesis_file_name := filepath.Base(genesisFilePath)
r, d, err := kurtosisEnclaveContext.UploadFiles(genesisFilePath, genesis_file_name)

if err != nil {
panic(err)
}

logrus.Infof("File Uploaded sucessfully : UUID %s", r)
uploadedFiles := fmt.Sprintf(`{"file_path":"%s","file_name":"%s"}`, d, genesis_file_name)

params := fmt.Sprintf(`{"service_config":%s,"id":"%s","start_file_name":"start-icon.sh","genesis_file_path":"%s","genesis_file_name":"%s"}`, responseData, serviceConfig.Id, d, genesis_file_name)
params := fmt.Sprintf(`{"service_config":%s,"id":"%s","uploaded_genesis":%s,"genesis_file_path":"%s","genesis_file_name":"%s"}`, responseData, serviceConfig.Id, uploadedFiles, "", "")
icon_data, _, err := kurtosisEnclaveContext.RunStarlarkPackage(ctx, "../", "services/jvm/icon/src/node-setup/start_icon_node.star", "start_icon_node", params, false, 4, []kurtosis_core_rpc_api_bindings.KurtosisFeatureFlag{})

if err != nil {
Expand Down Expand Up @@ -200,19 +211,8 @@ func Decentralisation(ctx context.Context, kurtosisEnclaveContext *enclaves.Encl

}

func getDecentralizeParms(serviceName, nodeEndpoint, keystorePath, keystorepassword, networkID string) string {
func GetDecentralizeParms(serviceName, nodeEndpoint, keystorePath, keystorepassword, networkID string) string {

return fmt.Sprintf(`{"args":{"service_name":"%s","endpoint":"%s","keystore_path":"%s","keypassword":"%s","nid":"%s"}}`, serviceName, nodeEndpoint, keystorePath, keystorepassword, networkID)

}

func readConfigFile(filePath string) ([]byte, error) {

file, err := os.ReadFile(filePath)

if err != nil {
return nil, err
}

return file, nil
}
8 changes: 6 additions & 2 deletions cli/commands/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (

"github.com/hugobyte/dive/commands/bridge"
"github.com/hugobyte/dive/commands/chain"
"github.com/hugobyte/dive/common"

"github.com/hugobyte/dive/commands/clean"
"github.com/hugobyte/dive/commands/discord"
Expand Down Expand Up @@ -38,12 +39,15 @@ func Execute() {
}

func init() {

diveContext := common.NewDiveContext()

rootCmd.CompletionOptions.DisableDefaultCmd = true
rootCmd.CompletionOptions.DisableNoDescFlag = true

rootCmd.AddCommand(version.VersionCmd)
rootCmd.AddCommand(chain.ChainCmd)
rootCmd.AddCommand(bridge.BridgeCmd)
rootCmd.AddCommand(chain.NewChainCmd(diveContext))
rootCmd.AddCommand(bridge.NewBridgeCmd(diveContext))
rootCmd.AddCommand(clean.CleanCmd)
rootCmd.AddCommand(discord.DiscordCmd)
rootCmd.AddCommand(twitter.TwitterCmd)
Expand Down
Loading