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
8 changes: 3 additions & 5 deletions cmd/relayer/setup/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ import (
"github.com/dymensionxyz/roller/utils/errorhandling"
"github.com/dymensionxyz/roller/utils/filesystem"
firebaseutils "github.com/dymensionxyz/roller/utils/firebase"
"github.com/dymensionxyz/roller/utils/genesis"
"github.com/dymensionxyz/roller/utils/logging"
relayerutils "github.com/dymensionxyz/roller/utils/relayer"
"github.com/dymensionxyz/roller/utils/rollapp"
Expand Down Expand Up @@ -74,7 +73,7 @@ func Cmd() *cobra.Command {
}
pterm.Info.Println("rollapp chain data validation passed")

err = installRelayerDependencies(home, rly.Rollapp.ID, *hd)
err = installRelayerDependencies(rly.Rollapp.ID, *hd)
if err != nil {
pterm.Error.Println("failed to install relayer dependencies: ", err)
return
Expand Down Expand Up @@ -278,7 +277,6 @@ func getPreRunInfo(home string) (*consts.RollappData, *consts.HubData, string, e
}

func installRelayerDependencies(
home string,
raID string,
hd consts.HubData,
) error {
Expand All @@ -287,9 +285,9 @@ func installRelayerDependencies(
return err
}

drsVersion, err := genesis.GetDrsVersionFromGenesis(home, raResp)
drsVersion, err := rollapp.GetDrsVersionFromChain(raID, hd)
if err != nil {
pterm.Error.Println("failed to get drs version from genesis: ", err)
pterm.Error.Println("failed to get drs version from rollapp: ", err)
return err
}

Expand Down
4 changes: 2 additions & 2 deletions cmd/rollapp/init/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ func Cmd() *cobra.Command {
}

if !shouldSkipBinaryInstallation {
_, _, err = dependencies.InstallBinaries(true, raRespMock, env)
_, _, err = dependencies.InstallBinaries(true, raRespMock, hd, env)
if err != nil {
pterm.Error.Println("failed to install binaries: ", err)
return
Expand Down Expand Up @@ -308,7 +308,7 @@ func Cmd() *cobra.Command {
}

start := time.Now()
builtDeps, _, err := dependencies.InstallBinaries(false, *raResponse, env)
builtDeps, _, err := dependencies.InstallBinaries(false, *raResponse, hd, env)
if err != nil {
pterm.Error.Println("failed to install binaries: ", err)
return
Expand Down
15 changes: 7 additions & 8 deletions cmd/rollapp/setup/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -1029,14 +1029,14 @@ func Cmd() *cobra.Command {
_ = tomlconfig.UpdateFieldInFile(
dymintConfigPath,
"da_layer",
getDaLayer(home, raResponse, damanager.DaType),
getDaLayer(rollappConfig.RollappID, rollappConfig.HubData, raResponse, damanager.DaType),
)

if !skipDA {
_ = tomlconfig.UpdateFieldInFile(
dymintConfigPath,
"da_config",
getDaConfig(damanager.DataLayer, nodeType, home, raResponse, rollappConfig),
getDaConfig(damanager.DataLayer, nodeType, raResponse, rollappConfig),
)
}

Expand Down Expand Up @@ -1361,10 +1361,10 @@ func displayRegularDenom(coin cosmossdktypes.Coin, decimals int) string {
return formattedAmount
}

func getDaLayer(home string, raResponse *rollapp.ShowRollappResponse, daType consts.DAType) any {
drsVersion, err := genesis.GetDrsVersionFromGenesis(home, raResponse)
func getDaLayer(raID string, hd consts.HubData, raResponse *rollapp.ShowRollappResponse, daType consts.DAType) any {
drsVersion, err := rollapp.GetDrsVersionFromChain(raID, hd)
if err != nil {
pterm.Error.Println("failed to get drs version from genesis: ", err)
pterm.Error.Println("failed to get drs version from rollapp: ", err)
return nil
}

Expand All @@ -1378,15 +1378,14 @@ func getDaLayer(home string, raResponse *rollapp.ShowRollappResponse, daType con
func getDaConfig(
dataLayer datalayer.DataLayer,
nodeType string,
home string,
raResponse *rollapp.ShowRollappResponse,
rollappConfig *roller.RollappConfig,
) any {
daConfig := dataLayer.GetSequencerDAConfig(nodeType)

drsVersion, err := genesis.GetDrsVersionFromGenesis(home, raResponse)
drsVersion, err := rollapp.GetDrsVersionFromChain(rollappConfig.RollappID, rollappConfig.HubData)
if err != nil {
pterm.Error.Println("failed to get drs version from genesis: ", err)
pterm.Error.Println("failed to get drs version from rollapp: ", err)
return nil
}

Expand Down
12 changes: 8 additions & 4 deletions utils/dependencies/dependencies.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import (
"os/exec"
"path/filepath"
"runtime"
"strconv"
"strings"

"github.com/pterm/pterm"
Expand All @@ -27,7 +26,7 @@ import (
"github.com/dymensionxyz/roller/utils/rollapp"
)

func InstallBinaries(withMockDA bool, raResp rollapp.ShowRollappResponse, env string) (
func InstallBinaries(withMockDA bool, raResp rollapp.ShowRollappResponse, hd consts.HubData, env string) (
map[string]types.Dependency,
map[string]types.Dependency,
error,
Expand Down Expand Up @@ -66,8 +65,13 @@ func InstallBinaries(withMockDA bool, raResp rollapp.ShowRollappResponse, env st
}

da = as.RollappParams.Params.Da
drsVersion = strconv.Itoa(as.RollappParams.Params.DrsVersion)
pterm.Info.Println("RollApp drs version from the genesis file : ", drsVersion)

drsVersion, err = rollapp.GetDrsVersionFromChain(raResp.Rollapp.RollappId, hd)
if err != nil {
return nil, nil, fmt.Errorf("failed to retrieve rollapp drs version from chain: %w", err)
}
pterm.Info.Println("RollApp drs version fetched from chain: ", drsVersion)

drsInfo, err := firebaseutils.GetLatestDrsVersionCommit(drsVersion, env)
if err != nil {
return nil, nil, err
Expand Down
21 changes: 0 additions & 21 deletions utils/genesis/genesis.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import (
"os/exec"
"path/filepath"
"sort"
"strconv"
"strings"

comettypes "github.com/cometbft/cometbft/types"
Expand Down Expand Up @@ -462,23 +461,3 @@ func ValidateGenesis(raCfg roller.RollappConfig, raID string, hd consts.HubData)

return nil
}

func GetDrsVersionFromGenesis(
home string,
raResp *rollapp.ShowRollappResponse,
) (string, error) {
err := DownloadGenesis(home, raResp.Rollapp.Metadata.GenesisUrl)
if err != nil {
return "", err
}

as, err := GetAppStateFromGenesisFile(home)
if err != nil {
pterm.Error.Println("failed to get genesis app state: ", err)
return "", err
}
drsVersion := strconv.Itoa(as.RollappParams.Params.DrsVersion)

pterm.Info.Println("DRS version: ", drsVersion)
return drsVersion, nil
}
95 changes: 95 additions & 0 deletions utils/rollapp/rollapp.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"os"
"os/exec"
"path/filepath"
"strconv"
"strings"

cosmossdktypes "github.com/cosmos/cosmos-sdk/types"
Expand All @@ -17,6 +18,7 @@ import (
datalayer "github.com/dymensionxyz/roller/data_layer"
"github.com/dymensionxyz/roller/utils/bash"
bashutils "github.com/dymensionxyz/roller/utils/bash"
"github.com/dymensionxyz/roller/utils/config"
"github.com/dymensionxyz/roller/utils/filesystem"
"github.com/dymensionxyz/roller/utils/keys"
"github.com/dymensionxyz/roller/utils/roller"
Expand Down Expand Up @@ -374,6 +376,99 @@ func GetRollappParams(hd consts.HubData) (*RaParams, error) {
return &resp, nil
}

func GetDrsVersionFromChain(rollappID string, hd consts.HubData) (string, error) {
rpc, err := fetchRollappRpcFromChain(rollappID, hd)
if err != nil {
return "", err
}

params, err := getRollappParamsFromNode(rpc, rollappID)
if err != nil {
return "", err
}
if params == nil {
return "", errors.New("rollapp params response is nil")
}
return strconv.Itoa(params.DrsVersion), nil
}

type RollappDaemonParams struct {
Da string `json:"da"`
DrsVersion int `json:"drs_version"`
MinGasPrices cosmossdktypes.DecCoins `json:"min_gas_prices"`
}

func getRollappParamsFromNode(rpcEndpoint, chainID string) (*RollappDaemonParams, error) {
rpc := strings.TrimSpace(rpcEndpoint)
if rpc == "" {
rpc = consts.DefaultRollappRPC
}
args := []string{"q", "rollappparams", "params", "--node", rpc, "-o", "json"}
if chainID != "" {
args = append(args, "--chain-id", chainID)
}

cmd := exec.Command(consts.Executables.RollappEVM, args...)
out, err := bash.ExecCommandWithStdout(cmd)
if err != nil {
return nil, err
}
var resp RollappDaemonParams
if err := json.Unmarshal(out.Bytes(), &resp); err != nil {
return nil, err
}
return &resp, nil
}

func fetchRollappRpcFromChain(raID string, hd consts.HubData) (string, error) {
proposer, err := GetCurrentProposer(raID, hd)
if err != nil {
return "", err
}
if proposer == "" {
return "", errors.New("no proposer found for rollapp")
}

cmd := exec.Command(
consts.Executables.Dymension,
"q", "sequencer", "show-sequencer",
proposer, "-o", "json", "--node", hd.RpcUrl, "--chain-id", hd.ID,
)

out, err := bash.ExecCommandWithStdout(cmd)
if err != nil {
return "", err
}

var resp struct {
Sequencer struct {
Metadata struct {
Rpcs []string `json:"rpcs"`
} `json:"metadata"`
} `json:"sequencer"`
}

if err := json.Unmarshal(out.Bytes(), &resp); err != nil {
return "", err
}

if len(resp.Sequencer.Metadata.Rpcs) == 0 {
return "", errors.New("no rpc endpoints found in sequencer metadata")
}

rpc := strings.TrimSpace(resp.Sequencer.Metadata.Rpcs[0])
if rpc == "" {
return "", errors.New("empty rpc endpoint in sequencer metadata")
}

if !strings.HasPrefix(rpc, "http://") && !strings.HasPrefix(rpc, "https://") {
rpc = "https://" + rpc
}
rpc = config.AddHttpsPortIfNeeded(rpc)

return rpc, nil
}

func getGenesisFilePath(root string) string {
return filepath.Join(
RollappConfigDir(root),
Expand Down
Loading