From ce08f6dc3f36e250fe01b8466c7261851d47bc8c Mon Sep 17 00:00:00 2001 From: artpav <19916123+artemijspavlovs@users.noreply.github.com> Date: Wed, 18 Sep 2024 22:40:55 +0300 Subject: [PATCH] fix(wasm): add wasm vm type (#1000) --- cmd/consts/consts.go | 7 +++-- cmd/relayer/setup/setup.go | 1 + cmd/rollapp/init/init.go | 7 ++--- cmd/rollapp/init/utils.go | 4 ++- .../sequencer/metadata/export/export.go | 1 + cmd/rollapp/setup/setup.go | 1 + cmd/rollapp/start/start.go | 5 ++-- utils/config/tomlconfig/toml.go | 8 ++++-- utils/dependencies/dependencies.go | 6 ++-- utils/filesystem/filesystem.go | 2 +- utils/genesis/genesis.go | 28 +++++++++++++++---- utils/rollapp/rollappId.go | 4 +-- 12 files changed, 51 insertions(+), 23 deletions(-) diff --git a/cmd/consts/consts.go b/cmd/consts/consts.go index 429f1aa2..c8513295 100644 --- a/cmd/consts/consts.go +++ b/cmd/consts/consts.go @@ -126,8 +126,9 @@ const RollerConfigFileName = "roller.toml" type VMType string const ( - SDK_ROLLAPP VMType = "sdk" - EVM_ROLLAPP VMType = "evm" + SDK_ROLLAPP VMType = "sdk" + EVM_ROLLAPP VMType = "evm" + WASM_ROLLAPP VMType = "wasm" ) func ToVMType(s string) (VMType, error) { @@ -136,6 +137,8 @@ func ToVMType(s string) (VMType, error) { return SDK_ROLLAPP, nil case string(EVM_ROLLAPP): return EVM_ROLLAPP, nil + case string(WASM_ROLLAPP): + return WASM_ROLLAPP, nil default: return "", fmt.Errorf("invalid VMType: %s", s) } diff --git a/cmd/relayer/setup/setup.go b/cmd/relayer/setup/setup.go index d61bf42c..2c4c140a 100644 --- a/cmd/relayer/setup/setup.go +++ b/cmd/relayer/setup/setup.go @@ -81,6 +81,7 @@ func Cmd() *cobra.Command { home, rollappConfig.RollappID, &hd, + string(rollappConfig.VMType), ) errorhandling.PrettifyErrorIfExists(err) diff --git a/cmd/rollapp/init/init.go b/cmd/rollapp/init/init.go index 4cd9a948..1f0c6d03 100644 --- a/cmd/rollapp/init/init.go +++ b/cmd/rollapp/init/init.go @@ -83,7 +83,6 @@ func Cmd() *cobra.Command { ).Show() } - pterm.Info.Println("validating RollApp ID: ", raID) _, err = rollapp.ValidateChainID(raID) if err != nil { pterm.Error.Println("failed to validate chain id: ", err) @@ -93,7 +92,7 @@ func Cmd() *cobra.Command { if env == "mock" { vmtypes := []string{"evm", "wasm"} vmtype, _ := pterm.DefaultInteractiveSelect. - WithDefaultText("select the environment you want to initialize for"). + WithDefaultText("select the rollapp VM type you want to initialize for"). WithOptions(vmtypes). Show() err = dependencies.InstallBinaries(env, true, vmtype) @@ -101,7 +100,7 @@ func Cmd() *cobra.Command { pterm.Error.Println("failed to install binaries: ", err) return } - err := runInit(cmd, env, raID) + err := runInit(cmd, env, raID, vmtype) if err != nil { fmt.Println("failed to run init: ", err) return @@ -172,7 +171,7 @@ func Cmd() *cobra.Command { return } - err = runInit(cmd, env, raID) + err = runInit(cmd, env, raID, strings.ToLower(raResponse.Rollapp.VmType)) if err != nil { pterm.Error.Printf("failed to initialize the RollApp: %v\n", err) return diff --git a/cmd/rollapp/init/utils.go b/cmd/rollapp/init/utils.go index c67c184f..85d86449 100644 --- a/cmd/rollapp/init/utils.go +++ b/cmd/rollapp/init/utils.go @@ -32,7 +32,8 @@ import ( "github.com/dymensionxyz/roller/utils/sequencer" ) -func runInit(cmd *cobra.Command, env string, raID string) error { +// nolint: gocyclo +func runInit(cmd *cobra.Command, env, raID, vmType string) error { home, err := filesystem.ExpandHomePath(cmd.Flag(cmdutils.FlagNames.Home).Value.String()) if err != nil { pterm.Error.Println("failed to expand home directory") @@ -134,6 +135,7 @@ func runInit(cmd *cobra.Command, env string, raID string) error { home, raID, &hd, + vmType, ) if err != nil { errorhandling.PrettifyErrorIfExists(err) diff --git a/cmd/rollapp/sequencer/metadata/export/export.go b/cmd/rollapp/sequencer/metadata/export/export.go index 8cc96dd3..c8467fdc 100644 --- a/cmd/rollapp/sequencer/metadata/export/export.go +++ b/cmd/rollapp/sequencer/metadata/export/export.go @@ -51,6 +51,7 @@ func Cmd() *cobra.Command { home, rollerData.RollappID, &hd, + string(rollerData.VMType), ) errorhandling.PrettifyErrorIfExists(err) diff --git a/cmd/rollapp/setup/setup.go b/cmd/rollapp/setup/setup.go index 872300e6..47799165 100644 --- a/cmd/rollapp/setup/setup.go +++ b/cmd/rollapp/setup/setup.go @@ -80,6 +80,7 @@ func Cmd() *cobra.Command { home, rollerData.RollappID, &hd, + string(rollerData.VMType), ) errorhandling.PrettifyErrorIfExists(err) diff --git a/cmd/rollapp/start/start.go b/cmd/rollapp/start/start.go index b79e17b1..73a058f7 100644 --- a/cmd/rollapp/start/start.go +++ b/cmd/rollapp/start/start.go @@ -67,7 +67,6 @@ Consider using 'services' if you want to run a 'systemd' service instead. LogPath = filepath.Join(rollappConfig.Home, consts.ConfigDirName.Rollapp, "rollapp.log") RollappDirPath = filepath.Join(rollappConfig.Home, consts.ConfigDirName.Rollapp) - fmt.Println(startRollappCmd.String()) ctx, cancel := context.WithCancel(context.Background()) defer cancel() go bash.RunCmdAsync( @@ -138,7 +137,9 @@ func PrintOutput( if withEndpoints { pterm.DefaultSection.WithIndentCharacter("💈"). Println("Endpoints:") - fmt.Printf("EVM RPC: http://0.0.0.0:%v\n", seq.JsonRPCPort) + if rlpCfg.VMType == "evm" { + fmt.Printf("EVM RPC: http://0.0.0.0:%v\n", seq.JsonRPCPort) + } fmt.Printf("Node RPC: http://0.0.0.0:%v\n", seq.RPCPort) fmt.Printf("Rest API: http://0.0.0.0:%v\n", seq.APIPort) } diff --git a/utils/config/tomlconfig/toml.go b/utils/config/tomlconfig/toml.go index 848c4374..3ab5f1bd 100644 --- a/utils/config/tomlconfig/toml.go +++ b/utils/config/tomlconfig/toml.go @@ -64,9 +64,13 @@ func Load(path string) ([]byte, error) { func LoadRollappMetadataFromChain( home, raID string, - hd *consts.HubData, + hd *consts.HubData, vmType string, ) (*config.RollappConfig, error) { var cfg config.RollappConfig + vmt, err := consts.ToVMType(vmType) + if err != nil { + return nil, err + } if hd.ID == "mock" { cfg = config.RollappConfig{ Home: home, @@ -74,7 +78,7 @@ func LoadRollappMetadataFromChain( GenesisHash: "", GenesisUrl: "", RollappBinary: consts.Executables.RollappEVM, - VMType: consts.EVM_ROLLAPP, + VMType: vmt, Denom: "mock", Decimals: 18, HubData: *hd, diff --git a/utils/dependencies/dependencies.go b/utils/dependencies/dependencies.go index 4b36e4bc..1be753b5 100644 --- a/utils/dependencies/dependencies.go +++ b/utils/dependencies/dependencies.go @@ -191,9 +191,9 @@ func InstallBinaries(bech32 string, withMockDA bool, vmType string) error { } } else if vmType == "wasm" { goreleaserDeps["rollapp"] = types.Dependency{ - Name: "rollapp-evm", + Name: "rollapp-wasm", Repository: "https://github.com/artemijspavlovs/rollapp-wasm", - Release: "v1.0.0-rc04-roller-02", + Release: "v1.0.0-rc04-roller-03", Binaries: []types.BinaryPathPair{ { Binary: "rollappd", @@ -228,7 +228,7 @@ func InstallBinaries(bech32 string, withMockDA bool, vmType string) error { func InstallBinaryFromRepo(dep types.Dependency, td string) error { spinner, _ := pterm.DefaultSpinner.Start( - fmt.Sprintf("Installing %s\n", dep.Name), + fmt.Sprintf("Installing %s", dep.Name), ) targetDir, err := os.MkdirTemp(os.TempDir(), td) if err != nil { diff --git a/utils/filesystem/filesystem.go b/utils/filesystem/filesystem.go index 620ad554..21851c0e 100644 --- a/utils/filesystem/filesystem.go +++ b/utils/filesystem/filesystem.go @@ -76,7 +76,7 @@ func ExpandHomePath(path string) (string, error) { // TODO: download the file in chunks if possible func DownloadFile(url, fp string) error { spinner, _ := pterm.DefaultSpinner. - Start("Downloading file file from ", url) + Start(fmt.Sprintf("Downloading file from %s", url)) // nolint:gosec resp, err := http.Get(url) diff --git a/utils/genesis/genesis.go b/utils/genesis/genesis.go index 1f5df36e..ae1df098 100644 --- a/utils/genesis/genesis.go +++ b/utils/genesis/genesis.go @@ -12,6 +12,8 @@ import ( "strings" "github.com/cometbft/cometbft/types" + "github.com/pterm/pterm" + "github.com/dymensionxyz/roller/cmd/consts" "github.com/dymensionxyz/roller/utils/bash" "github.com/dymensionxyz/roller/utils/config" @@ -19,7 +21,6 @@ import ( "github.com/dymensionxyz/roller/utils/filesystem" "github.com/dymensionxyz/roller/utils/rollapp" "github.com/dymensionxyz/roller/utils/sequencer" - "github.com/pterm/pterm" ) type AppState struct { @@ -244,14 +245,13 @@ func UpdateGenesisParams(home string, raCfg *config.RollappConfig) error { func getDefaultGenesisParams( raCfg *config.RollappConfig, ) []config.PathValue { - return []config.PathValue{ + var params []config.PathValue + + commonParams := []config.PathValue{ {Path: "app_state.mint.params.mint_denom", Value: raCfg.BaseDenom}, {Path: "app_state.staking.params.bond_denom", Value: raCfg.BaseDenom}, - {Path: "app_state.evm.params.evm_denom", Value: raCfg.BaseDenom}, {Path: "app_state.gov.deposit_params.min_deposit.0.denom", Value: raCfg.BaseDenom}, {Path: "consensus_params.block.max_gas", Value: "40000000"}, - {Path: "app_state.feemarket.params.no_base_fee", Value: true}, - {Path: "app_state.feemarket.params.min_gas_price", Value: "0.0"}, {Path: "app_state.distribution.params.base_proposer_reward", Value: "0.8"}, {Path: "app_state.distribution.params.community_tax", Value: "0.00002"}, {Path: "app_state.gov.voting_params.voting_period", Value: "300s"}, @@ -260,9 +260,25 @@ func getDefaultGenesisParams( Path: "app_state.bank.denom_metadata", Value: getBankDenomMetadata(raCfg.BaseDenom, raCfg.Decimals), }, - {Path: "app_state.evm.params.extra_eips", Value: []string{"3855"}}, {Path: "app_state.claims.params.claims_denom", Value: raCfg.BaseDenom}, } + + if raCfg.VMType == consts.WASM_ROLLAPP { + wasmParams := []config.PathValue{} + params = append(commonParams, wasmParams...) + } + + if raCfg.VMType == consts.EVM_ROLLAPP { + evmParams := []config.PathValue{ + {Path: "app_state.evm.params.evm_denom", Value: raCfg.BaseDenom}, + {Path: "app_state.feemarket.params.no_base_fee", Value: true}, + {Path: "app_state.evm.params.extra_eips", Value: []string{"3855"}}, + {Path: "app_state.feemarket.params.min_gas_price", Value: "0.0"}, + } + params = append(commonParams, evmParams...) + } + + return params } func getBankDenomMetadata(denom string, decimals uint) []BankDenomMetadata { diff --git a/utils/rollapp/rollappId.go b/utils/rollapp/rollappId.go index de3973c2..1157f73a 100644 --- a/utils/rollapp/rollappId.go +++ b/utils/rollapp/rollappId.go @@ -45,7 +45,7 @@ type ChainID struct { // from Dymension source code `x/rollapp/types/chain_id.go` @20240911 func ValidateChainID(id string) (ChainID, error) { spinner, _ := pterm.DefaultSpinner.WithRemoveWhenDone(). - Start(fmt.Sprintf("validating rollapp id '%s'\n", id)) + Start(fmt.Sprintf("validating rollapp id '%s'", id)) chainID := strings.TrimSpace(id) if chainID == "" { @@ -92,7 +92,7 @@ func ValidateChainID(id string) (ChainID, error) { ) } - spinner.Success(fmt.Sprintf("'%s' is a valid RollApp ID", id)) + spinner.Success(fmt.Sprintf("'%s' is a valid RollApp ID\n", id)) return ChainID{ chainID: chainID, eip155ID: chainIDInt,