Skip to content

Commit

Permalink
updated upstream changes
Browse files Browse the repository at this point in the history
  • Loading branch information
NagaTulasi committed Dec 18, 2024
1 parent 98dabed commit 02f1200
Show file tree
Hide file tree
Showing 26 changed files with 1,474 additions and 74 deletions.
26 changes: 26 additions & 0 deletions .github/workflows/generate_genesis_template.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Generate Genesis Template
on: ["push"]
jobs:
build:
runs-on: ubuntu-latest
name: Generate Genesis Template
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: "1.23.1"

- name: Install Dasel
run: |
curl -sSLf https://github.com/TomWright/dasel/releases/latest/download/dasel_linux_amd64 -o /usr/local/bin/dasel
chmod +x /usr/local/bin/dasel
- name: Generate genesis template mainnet
run: make generate-genesis env=mainnet
env:
BECH32_PREFIX: ethm

- name: Generate genesis template testnet
run: make generate-genesis env=testnet
env:
BECH32_PREFIX: ethm
8 changes: 5 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ FROM ubuntu:latest as go-builder

# Install necessary dependencies
RUN apt-get update && apt-get install -y \
wget make git \
wget make git build-essential \
&& rm -rf /var/lib/apt/lists/*

# Download and install Go 1.21
Expand All @@ -17,8 +17,6 @@ ENV GOROOT=/usr/local/go
ENV GOPATH=$HOME/go
ENV PATH=$GOPATH/bin:$GOROOT/bin:$PATH

RUN apt-get update -y
RUN apt-get install build-essential -y
# Set the working directory
WORKDIR /app

Expand All @@ -40,6 +38,8 @@ RUN ARCH=$(uname -m) && WASMVM_VERSION=$(go list -m github.com/CosmWasm/wasmvm |
wget https://github.com/CosmWasm/wasmvm/releases/download/$WASMVM_VERSION/libwasmvm.aarch64.so \
-O /lib/libwasmvm.aarch64.so

RUN go install -v github.com/bcdevtools/devd/v2/cmd/devd@latest

# Copy the remaining files
COPY . .

Expand All @@ -48,7 +48,9 @@ RUN make build BECH32_PREFIX=ethm
FROM ubuntu:latest

RUN apt-get update -y
RUN apt-get install -y curl

COPY --from=go-builder /go/bin/devd /usr/local/bin/devd
COPY --from=go-builder /app/build/rollapp-evm /usr/local/bin/rollappd
COPY --from=go-builder /lib/libwasmvm.x86_64.so /lib/libwasmvm.x86_64.so
COPY --from=go-builder /lib/libwasmvm.aarch64.so /lib/libwasmvm.aarch64.so
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ PROJECT_NAME=rollappd
BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
COMMIT := $(shell git log -1 --format='%H')
LEDGER_ENABLED ?= true
DRS_VERSION = 1
DRS_VERSION = 3

#ifndef $(AVAIL_NETWORK)
# AVAIL_NETWORK=mock
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ $EXECUTABLE tx sequencer create-sequencer sequencerConsensusKey --from $KEY_NAME
### Install dymension relayer

```shell
git clone https://github.com/dymensionxyz/go-relayer.git --branch v0.3.4-v2.5.2-relayer-canon-3
git clone https://github.com/dymensionxyz/go-relayer.git --branch v0.3.4-v2.5.2-relayer-canon-6
cd go-relayer && make install
```

Expand Down
6 changes: 6 additions & 0 deletions app/ante/ante.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
evmosante "github.com/evmos/evmos/v12/app/ante"
evmosanteevm "github.com/evmos/evmos/v12/app/ante/evm"
evmostypes "github.com/evmos/evmos/v12/types"
erc20keeper "github.com/evmos/evmos/v12/x/erc20/keeper"
evmtypes "github.com/evmos/evmos/v12/x/evm/types"
evmosvestingtypes "github.com/evmos/evmos/v12/x/vesting/types"
tmlog "github.com/tendermint/tendermint/libs/log"
Expand All @@ -38,6 +39,7 @@ func MustCreateHandler(codec codec.BinaryCodec,
bankKeeper evmtypes.BankKeeper,
feeMarketKeeper evmosanteevm.FeeMarketKeeper,
evmKeeper evmosanteevm.EVMKeeper,
erc20Keeper erc20keeper.Keeper,
ibcKeeper *ibckeeper.Keeper,
distrKeeper distrkeeper.Keeper,
sequencerKeeper seqkeeper.Keeper,
Expand All @@ -51,6 +53,7 @@ func MustCreateHandler(codec codec.BinaryCodec,
StakingKeeper: stakingKeeper,
FeegrantKeeper: feeGrantKeeper,
DistributionKeeper: distrKeeper,
ERC20Keeper: erc20Keeper,
IBCKeeper: ibcKeeper,
FeeMarketKeeper: feeMarketKeeper,
SignModeHandler: txConfig.SignModeHandler(),
Expand Down Expand Up @@ -100,6 +103,9 @@ func (o HandlerOptions) validate() error {
if o.EvmKeeper == nil {
return errorsmod.Wrap(sdkerrors.ErrLogic, "evm keeper missing")
}
if o.ERC20Keeper == nil {
return errorsmod.Wrap(sdkerrors.ErrLogic, "erc20 keeper missing")
}
if o.DistributionKeeper == nil {
return errorsmod.Wrap(sdkerrors.ErrLogic, "distribution keeper missing")
}
Expand Down
4 changes: 2 additions & 2 deletions app/ante/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ func newEVMAnteHandler(options HandlerOptions) sdk.AnteHandler {
evmante.NewEthAccountVerificationDecorator(options.AccountKeeper, options.EvmKeeper),
evmante.NewCanTransferDecorator(options.EvmKeeper),
// we intentionally omit the eth vesting transaction decorator
evmante.NewEthGasConsumeDecorator(options.BankKeeper, options.DistributionKeeper, options.EvmKeeper, options.StakingKeeper, options.MaxTxGasWanted),
evmante.NewEthGasConsumeDecorator(options.AccountKeeper, options.BankKeeper, options.ERC20Keeper, options.DistributionKeeper, options.EvmKeeper, options.StakingKeeper, options.MaxTxGasWanted),
evmante.NewEthIncrementSenderSequenceDecorator(options.AccountKeeper),
evmante.NewGasWantedDecorator(options.EvmKeeper, options.FeeMarketKeeper),
// emit eth tx hash and index at the very last ante handler.
Expand Down Expand Up @@ -79,7 +79,7 @@ func cosmosHandler(options HandlerOptions, sigChecker sdk.AnteDecorator) sdk.Ant
NewCreateAccountDecorator(options.AccountKeeper),
ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper),
rdkante.NewBypassIBCFeeDecorator(
cosmosante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.DistributionKeeper, options.FeegrantKeeper, options.StakingKeeper, options.TxFeeChecker),
cosmosante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.ERC20Keeper, options.DistributionKeeper, options.FeegrantKeeper, options.StakingKeeper, options.TxFeeChecker),
options.DistrKeeper,
options.SequencersKeeper,
),
Expand Down
81 changes: 45 additions & 36 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,6 @@ import (

"github.com/evmos/evmos/v12/ethereum/eip712"
ethermint "github.com/evmos/evmos/v12/types"
claimstypes "github.com/evmos/evmos/v12/x/claims/types"
"github.com/evmos/evmos/v12/x/erc20"
erc20client "github.com/evmos/evmos/v12/x/erc20/client"
erc20keeper "github.com/evmos/evmos/v12/x/erc20/keeper"
Expand All @@ -152,11 +151,16 @@ import (
hubtypes "github.com/dymensionxyz/dymension-rdk/x/hub/types"

// Upgrade handlers
v2_2_0_upgrade "github.com/dymensionxyz/rollapp-evm/app/upgrades/v2.2.0"

// Force-load the tracer engines to trigger registration due to Go-Ethereum v1.10.15 changes
_ "github.com/ethereum/go-ethereum/eth/tracers/js"
_ "github.com/ethereum/go-ethereum/eth/tracers/native"

dymintversion "github.com/dymensionxyz/dymint/version"

"github.com/dymensionxyz/rollapp-evm/app/upgrades"
drs2 "github.com/dymensionxyz/rollapp-evm/app/upgrades/drs-2"
drs3 "github.com/dymensionxyz/rollapp-evm/app/upgrades/drs-3"
)

const (
Expand All @@ -181,6 +185,8 @@ var (
feemarkettypes.StoreKey,
erc20types.StoreKey,
}
// Upgrades contains the upgrade handlers for the application
Upgrades = []upgrades.Upgrade{drs2.Upgrade, drs3.Upgrade}
)

func getGovProposalHandlers() []govclient.ProposalHandler {
Expand Down Expand Up @@ -564,6 +570,7 @@ func NewRollapp(
app.AccountKeeper,
app.BankKeeper,
app.MintKeeper,
app.IBCKeeper.ChannelKeeper,
)

app.HubKeeper = hubkeeper.NewKeeper(
Expand Down Expand Up @@ -614,7 +621,6 @@ func NewRollapp(
transferStack,
app.HubGenesisKeeper,
app.BankKeeper,
app.IBCKeeper.ChannelKeeper,
)

// Create static IBC router, add transfer route, then set and seal it
Expand Down Expand Up @@ -810,6 +816,7 @@ func NewRollapp(
app.BankKeeper,
app.FeeMarketKeeper,
app.EvmKeeper,
app.Erc20Keeper,
app.IBCKeeper,
app.DistrKeeper,
app.SequencersKeeper,
Expand Down Expand Up @@ -862,6 +869,13 @@ func (app *App) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.R
resp := app.mm.BeginBlock(ctx, req)
resp.ConsensusMessagesResponses = consensusResponses

drsVersion, err := dymintversion.GetDRSVersion()
if err != nil {
panic(fmt.Errorf("Unable to get DRS version from binary: %w", err))
}
if drsVersion != app.RollappParamsKeeper.Version(ctx) {
panic(fmt.Errorf("DRS version mismatch. rollapp DRS version: %d binary DRS version:%d", app.RollappParamsKeeper.Version(ctx), drsVersion))
}
return resp
}

Expand Down Expand Up @@ -1103,39 +1117,6 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino
return paramsKeeper
}

func (app *App) setupUpgradeHandlers() {
UpgradeName := "v2.2.0"

app.UpgradeKeeper.SetUpgradeHandler(
UpgradeName,
v2_2_0_upgrade.CreateUpgradeHandler(
app.mm, app.configurator,
),
)

// When a planned update height is reached, the old binary will panic
// writing on disk the height and name of the update that triggered it
// This will read that value, and execute the preparations for the upgrade.
upgradeInfo, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk()
if err != nil {
panic(fmt.Errorf("failed to read upgrade info from disk: %w", err))
}

// Pre upgrade handler
switch upgradeInfo.Name {
// do nothing
}

if upgradeInfo.Name == UpgradeName && !app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) {

storeUpgrades := storetypes.StoreUpgrades{
Deleted: []string{claimstypes.ModuleName},
}

app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &storeUpgrades))
}
}

var evmAccountName = proto.MessageName(&ethermint.EthAccount{})

func shouldBumpEvmAccountSequence(accountProtoName string, account authtypes.AccountI) (bool, error) {
Expand All @@ -1150,3 +1131,31 @@ func shouldBumpEvmAccountSequence(accountProtoName string, account authtypes.Acc
}
return evmAccount.Type() == ethermint.AccountTypeEOA, nil
}

func (app *App) setupUpgradeHandlers() {
for _, u := range Upgrades {
app.setupUpgradeHandler(u)
}
}

func (app *App) setupUpgradeHandler(upgrade upgrades.Upgrade) {
app.UpgradeKeeper.SetUpgradeHandler(
upgrade.Name,
upgrade.CreateHandler(
app.RollappParamsKeeper,
app.EvmKeeper,
app.mm,
app.configurator,
),
)

upgradeInfo, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk()
if err != nil {
panic(fmt.Errorf("failed to read upgrade info from disk: %w", err))
}

if upgradeInfo.Name == upgrade.Name && !app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) {
// configure store loader with the store upgrades
app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &upgrade.StoreUpgrades))
}
}
5 changes: 4 additions & 1 deletion app/test_helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import (
"testing"
"time"

version "github.com/dymensionxyz/dymint/version"

appcodec "github.com/cosmos/cosmos-sdk/codec"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
"github.com/cosmos/cosmos-sdk/crypto/codec"
Expand Down Expand Up @@ -87,8 +89,8 @@ func SetupWithGenesisValSet(t *testing.T, valSet *types2.ValidatorSet, genAccs [
app, genesisState := setup(true, 5)
genesisState = genesisStateWithValSet(t, app, genesisState, valSet, genAccs, balances...)

version.DRS = "1"
genesisState = setRollappVersion(app.appCodec, genesisState, 1)

denomMD := banktypes.Metadata{
Description: "Stake token",
DenomUnits: []*banktypes.DenomUnit{
Expand Down Expand Up @@ -121,6 +123,7 @@ func SetupWithGenesisValSet(t *testing.T, valSet *types2.ValidatorSet, genAccs [
ConsensusParams: utils.DefaultConsensusParams,
AppStateBytes: stateBytes,
ChainId: TestChainID,
GenesisChecksum: "abcdef",
},
)

Expand Down
19 changes: 19 additions & 0 deletions app/upgrades/drs-2/constants.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package drs2

import (
storetypes "github.com/cosmos/cosmos-sdk/store/types"
"github.com/dymensionxyz/rollapp-evm/app/upgrades"
claimstypes "github.com/evmos/evmos/v12/x/claims/types"
)

const (
UpgradeName = "drs-2"
)

var Upgrade = upgrades.Upgrade{
Name: UpgradeName,
CreateHandler: CreateUpgradeHandler,
StoreUpgrades: storetypes.StoreUpgrades{
Deleted: []string{claimstypes.ModuleName},
},
}
50 changes: 50 additions & 0 deletions app/upgrades/drs-2/upgrade.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package drs2

import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
rollappparamskeeper "github.com/dymensionxyz/dymension-rdk/x/rollappparams/keeper"
rollappparamstypes "github.com/dymensionxyz/dymension-rdk/x/rollappparams/types"
evmkeeper "github.com/evmos/evmos/v12/x/evm/keeper"
)

func CreateUpgradeHandler(
rpKeeper rollappparamskeeper.Keeper,
evmKeeper *evmkeeper.Keeper,
mm *module.Manager,
configurator module.Configurator,
) upgradetypes.UpgradeHandler {
return func(ctx sdk.Context, _ upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) {
// upgrade drs to 2
if err := rpKeeper.SetVersion(ctx, uint32(2)); err != nil {
return nil, err
}

if err := HandleUpgrade(ctx, rpKeeper, evmKeeper); err != nil {
return nil, err
}
return mm.RunMigrations(ctx, configurator, fromVM)
}
}

func HandleUpgrade(
ctx sdk.Context,
rpKeeper rollappparamskeeper.Keeper,
evmKeeper *evmkeeper.Keeper,
) error {
// migrate rollapp params with missing min-gas-prices
if err := rpKeeper.SetMinGasPrices(ctx, rollappparamstypes.DefaultParams().MinGasPrices); err != nil {
return err
}

// migrate evm params with missing gasDenom
evmParams := evmKeeper.GetParams(ctx)
evmParams.GasDenom = evmParams.EvmDenom

if err := evmKeeper.SetParams(ctx, evmParams); err != nil {
return err
}

return nil
}
17 changes: 17 additions & 0 deletions app/upgrades/drs-3/constants.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package drs3

import (
storetypes "github.com/cosmos/cosmos-sdk/store/types"

"github.com/dymensionxyz/rollapp-evm/app/upgrades"
)

const (
UpgradeName = "drs-3"
)

var Upgrade = upgrades.Upgrade{
Name: UpgradeName,
CreateHandler: CreateUpgradeHandler,
StoreUpgrades: storetypes.StoreUpgrades{},
}
Loading

0 comments on commit 02f1200

Please sign in to comment.