Skip to content

Commit

Permalink
feat: add v4 upgrade logic
Browse files Browse the repository at this point in the history
  • Loading branch information
AdriaCarrera committed Nov 15, 2024
1 parent 6ce448f commit b25f5f6
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 5 deletions.
1 change: 1 addition & 0 deletions app/upgrades.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ func (app *App) setupUpgradeHandlers() {
app.mm,
app.configurator,
app.EvmKeeper,
app.Erc20Keeper,
app.GovKeeper,
),
)
Expand Down
31 changes: 31 additions & 0 deletions app/upgrades/v4/upgrades.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,27 @@ package v4
import (
"context"
upgradetypes "cosmossdk.io/x/upgrade/types"
"errors"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
erc20keeper "github.com/evmos/evmos/v20/x/erc20/keeper"
evmkeeper "github.com/evmos/evmos/v20/x/evm/keeper"
"github.com/evmos/evmos/v20/x/evm/types"
)

const (
XrpAddress = "0xD4949664cD82660AaE99bEdc034a0deA8A0bd517"
XrpOwnerAddress = "ethm1zrxl239wa6ad5xge3gs68rt98227xgnjq0xyw2"
)

// CreateUpgradeHandler creates an SDK upgrade handler for v13
func CreateUpgradeHandler(
mm *module.Manager,
configurator module.Configurator,
ek *evmkeeper.Keeper,
erc20k erc20keeper.Keeper,
gk govkeeper.Keeper,
) upgradetypes.UpgradeHandler {
return func(c context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
Expand All @@ -39,6 +47,19 @@ func CreateUpgradeHandler(
logger.Error("error while updating gov params", "error", err.Error())
}

logger.Debug("Assigning XRP owner address...")
err = AssignXrpOwnerAddress(ctx, erc20k, sdk.MustAccAddressFromBech32(XrpOwnerAddress))
if err != nil {
logger.Error("error while assigning XRP owner address", "error", err.Error())
return vm, err
}

logger.Debug("Re-registering ERC-20 precompile code hashes...")
params := erc20k.GetParams(ctx)
if err := erc20k.SetParams(ctx, params); err != nil {
logger.Error("error while re-registering ERC-20 precompile code hashes", "error", err.Error())
return vm, err
}
return vm, nil
}
}
Expand Down Expand Up @@ -80,3 +101,13 @@ func UpdateExpeditedPropsParams(ctx sdk.Context, gk govkeeper.Keeper) error {
}
return gk.Params.Set(ctx, params)
}

func AssignXrpOwnerAddress(ctx sdk.Context, ek erc20keeper.Keeper, address sdk.AccAddress) error {
tokenPairId := ek.GetTokenPairID(ctx, XrpAddress)
tokenPair, found := ek.GetTokenPair(ctx, tokenPairId)
if !found {
return errors.New("token pair not found")
}
ek.SetTokenPairOwnerAddress(ctx, tokenPair, address.String())
return nil
}
4 changes: 1 addition & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,6 @@ require (
github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect
github.com/oklog/run v1.1.0 // indirect
github.com/olekukonko/tablewriter v0.0.5 // indirect
github.com/onsi/gomega v1.34.2 // indirect
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect
github.com/pkg/errors v0.9.1 // indirect
Expand Down Expand Up @@ -265,8 +264,7 @@ replace (
// use Evmos geth fork
github.com/ethereum/go-ethereum => github.com/evmos/go-ethereum v1.10.26-evmos-rc4
// use exrp Evmos fork
// github.com/evmos/evmos/v20 => github.com/xrplevm/evmos/v20 v20.0.0
github.com/evmos/evmos/v20 => ../evmos
github.com/evmos/evmos/v20 => github.com/xrplevm/evmos/v20 v20.0.0-exrp.2
// Security Advisory https://github.com/advisories/GHSA-h395-qcrw-5vmq
github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.9.1
// replace broken goleveldb
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1349,6 +1349,8 @@ github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6Ut
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
github.com/xrplevm/evmos/v20 v20.0.0-exrp.2 h1:BUr7DBTcR7GA8Il+yBWR40ahLEhIj6KcWmyhUOBwnpk=
github.com/xrplevm/evmos/v20 v20.0.0-exrp.2/go.mod h1:QslHUHSn613wH4l2axRfoyUxBu+OjyqwbNUM3XW8QsM=
github.com/ybbus/jsonrpc v2.1.2+incompatible/go.mod h1:XJrh1eMSzdIYFbM08flv0wp5G35eRniyeGut1z+LSiE=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
Expand Down
5 changes: 3 additions & 2 deletions local-node.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ MONIKER="localnet"
# The keyring test does not require private key to steal tokens from you
KEYRING="test"
KEYALGO="eth_secp256k1"
LOGLEVEL="debug"
LOGLEVEL="info"
# Set dedicated home directory for the evmosd instance
HOMEDIR="$PWD/.exrpd"
# to trace evm
Expand All @@ -29,8 +29,8 @@ rm -rf $HOMEDIR

make build

bin/exrpd --home "$HOMEDIR" config set client keyring-backend "$KEYRING"
bin/exrpd --home "$HOMEDIR" config set client chain-id "$CHAINID"
bin/exrpd --home "$HOMEDIR" config set client keyring-backend "$KEYRING"

echo "$MNEMONIC" | bin/exrpd --home "$HOMEDIR" keys add "$KEY_NAME" --recover --keyring-backend "$KEYRING" --algo "$KEYALGO"

Expand All @@ -48,6 +48,7 @@ jq '.app_state["staking"]["params"]["bond_denom"]="apoa"' "$GENESIS" >"$TMP_GENE
jq '.app_state["staking"]["params"]["unbonding_time"]="60s"' "$GENESIS" >"$TMP_GENESIS" && mv "$TMP_GENESIS" "$GENESIS"
jq '.app_state["feemarket"]["params"]["base_fee"]="'${BASEFEE}'"' "$GENESIS" >"$TMP_GENESIS" && mv "$TMP_GENESIS" "$GENESIS"
jq '.app_state["erc20"]["token_pairs"][0]["denom"]="token"' "$GENESIS" >"$TMP_GENESIS" && mv "$TMP_GENESIS" "$GENESIS"
jq '.app_state["erc20"]["token_pairs"][0]["owner_address"]="ethm1zrxl239wa6ad5xge3gs68rt98227xgnjq0xyw2"' "$GENESIS" >"$TMP_GENESIS" && mv "$TMP_GENESIS" "$GENESIS"
jq '.app_state["slashing"]["params"]["slash_fraction_double_sign"]="0"' "$GENESIS" >"$TMP_GENESIS" && mv "$TMP_GENESIS" "$GENESIS"
jq '.app_state["slashing"]["params"]["slash_fraction_downtime"]="0"' "$GENESIS" >"$TMP_GENESIS" && mv "$TMP_GENESIS" "$GENESIS"

Expand Down

0 comments on commit b25f5f6

Please sign in to comment.