mirror of
				https://github.com/0glabs/0g-chain.git
				synced 2025-11-04 09:17:28 +00:00 
			
		
		
		
	Merge pull request #53 from 0g-wh/wasm
	
		
			
	
		
	
	
		
	
		
			Some checks are pending
		
		
	
	
		
			
				
	
				Continuous Integration (Commit) / lint (push) Waiting to run
				
			
		
		
	
	
				
					
				
			
		
			Some checks are pending
		
		
	
	Continuous Integration (Commit) / lint (push) Waiting to run
				
			feat: add 08-wasm module
This commit is contained in:
		
						commit
						4aa67c9efb
					
				
							
								
								
									
										10
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								Dockerfile
									
									
									
									
									
								
							@ -19,6 +19,15 @@ RUN --mount=type=cache,target=/root/.cache/go-build \
 | 
			
		||||
    --mount=type=cache,target=/go/pkg/mod \
 | 
			
		||||
    go version && go mod download
 | 
			
		||||
 | 
			
		||||
# Cosmwasm - Download correct libwasmvm version
 | 
			
		||||
RUN ARCH=$(uname -m) && WASMVM_VERSION=$(go list -m github.com/CosmWasm/wasmvm | sed 's/.* //') && \
 | 
			
		||||
    wget https://github.com/CosmWasm/wasmvm/releases/download/$WASMVM_VERSION/libwasmvm_muslc.$ARCH.a \
 | 
			
		||||
    -O /lib/libwasmvm.$ARCH.a && \
 | 
			
		||||
    # verify checksum
 | 
			
		||||
    wget https://github.com/CosmWasm/wasmvm/releases/download/$WASMVM_VERSION/checksums.txt -O /tmp/checksums.txt && \
 | 
			
		||||
    sha256sum /lib/libwasmvm.$ARCH.a | grep $(cat /tmp/checksums.txt | grep libwasmvm_muslc.$ARCH | cut -d ' ' -f 1)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Add source files
 | 
			
		||||
COPY . .
 | 
			
		||||
 | 
			
		||||
@ -27,6 +36,7 @@ COPY . .
 | 
			
		||||
# Mount go build and mod caches as container caches, persisted between builder invocations
 | 
			
		||||
RUN --mount=type=cache,target=/root/.cache/go-build \
 | 
			
		||||
    --mount=type=cache,target=/go/pkg/mod \
 | 
			
		||||
    LINK_STATICALLY=true \
 | 
			
		||||
    make install
 | 
			
		||||
 | 
			
		||||
FROM alpine:3.15
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										3
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								Makefile
									
									
									
									
									
								
							@ -174,6 +174,9 @@ endif
 | 
			
		||||
ifeq (,$(findstring nostrip,$(COSMOS_BUILD_OPTIONS)))
 | 
			
		||||
  ldflags += -w -s
 | 
			
		||||
endif
 | 
			
		||||
ifeq ($(LINK_STATICALLY),true)
 | 
			
		||||
	ldflags += -linkmode=external -extldflags "-Wl,-z,muldefs -static"
 | 
			
		||||
endif
 | 
			
		||||
ldflags += $(LDFLAGS)
 | 
			
		||||
ldflags := $(strip $(ldflags))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										32
									
								
								app/app.go
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								app/app.go
									
									
									
									
									
								
							@ -80,6 +80,9 @@ import (
 | 
			
		||||
	"github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward"
 | 
			
		||||
	packetforwardkeeper "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/keeper"
 | 
			
		||||
	packetforwardtypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/types"
 | 
			
		||||
	ibcwasm "github.com/cosmos/ibc-go/modules/light-clients/08-wasm"
 | 
			
		||||
	ibcwasmkeeper "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/keeper"
 | 
			
		||||
	ibcwasmtypes "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/types"
 | 
			
		||||
	transfer "github.com/cosmos/ibc-go/v7/modules/apps/transfer"
 | 
			
		||||
	ibctransferkeeper "github.com/cosmos/ibc-go/v7/modules/apps/transfer/keeper"
 | 
			
		||||
	ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types"
 | 
			
		||||
@ -178,6 +181,7 @@ var (
 | 
			
		||||
		council.AppModuleBasic{},
 | 
			
		||||
		dasigners.AppModuleBasic{},
 | 
			
		||||
		consensus.AppModuleBasic{},
 | 
			
		||||
		ibcwasm.AppModuleBasic{},
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
	// module account permissions
 | 
			
		||||
@ -246,6 +250,7 @@ type App struct {
 | 
			
		||||
	authzKeeper           authzkeeper.Keeper
 | 
			
		||||
	crisisKeeper          crisiskeeper.Keeper
 | 
			
		||||
	slashingKeeper        slashingkeeper.Keeper
 | 
			
		||||
	ibcWasmClientKeeper   ibcwasmkeeper.Keeper
 | 
			
		||||
	ibcKeeper             *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly
 | 
			
		||||
	packetForwardKeeper   *packetforwardkeeper.Keeper
 | 
			
		||||
	evmKeeper             *evmkeeper.Keeper
 | 
			
		||||
@ -314,6 +319,7 @@ func NewApp(
 | 
			
		||||
		dasignerstypes.StoreKey,
 | 
			
		||||
		vestingtypes.StoreKey,
 | 
			
		||||
		consensusparamtypes.StoreKey, crisistypes.StoreKey,
 | 
			
		||||
		ibcwasmtypes.StoreKey,
 | 
			
		||||
	)
 | 
			
		||||
	tkeys := sdk.NewTransientStoreKeys(paramstypes.TStoreKey, evmtypes.TransientKey, feemarkettypes.TransientKey)
 | 
			
		||||
	memKeys := sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey)
 | 
			
		||||
@ -446,6 +452,19 @@ func NewApp(
 | 
			
		||||
		scopedIBCKeeper,
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
	app.ibcWasmClientKeeper = ibcwasmkeeper.NewKeeperWithConfig(
 | 
			
		||||
		appCodec,
 | 
			
		||||
		keys[ibcwasmtypes.StoreKey],
 | 
			
		||||
		app.ibcKeeper.ClientKeeper,
 | 
			
		||||
		authtypes.NewModuleAddress(govtypes.ModuleName).String(),
 | 
			
		||||
		ibcwasmtypes.WasmConfig{
 | 
			
		||||
			DataDir:               "ibc_08-wasm",
 | 
			
		||||
			SupportedCapabilities: "iterator,stargate",
 | 
			
		||||
			ContractDebugMode:     false,
 | 
			
		||||
		},
 | 
			
		||||
		app.GRPCQueryRouter(),
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
	// Create Ethermint keepers
 | 
			
		||||
	app.feeMarketKeeper = feemarketkeeper.NewKeeper(
 | 
			
		||||
		appCodec,
 | 
			
		||||
@ -650,6 +669,7 @@ func NewApp(
 | 
			
		||||
		evmutil.NewAppModule(app.evmutilKeeper, app.bankKeeper, app.accountKeeper),
 | 
			
		||||
		// nil InflationCalculationFn, use SDK's default inflation function
 | 
			
		||||
		mint.NewAppModule(appCodec, app.mintKeeper, app.accountKeeper, nil, mintSubspace),
 | 
			
		||||
		ibcwasm.NewAppModule(app.ibcWasmClientKeeper),
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
	// Warning: Some begin blockers must run before others. Ensure the dependencies are understood before modifying this list.
 | 
			
		||||
@ -693,6 +713,7 @@ func NewApp(
 | 
			
		||||
		evmutiltypes.ModuleName,
 | 
			
		||||
		consensusparamtypes.ModuleName,
 | 
			
		||||
		packetforwardtypes.ModuleName,
 | 
			
		||||
		ibcwasmtypes.ModuleName,
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
	// Warning: Some end blockers must run before others. Ensure the dependencies are understood before modifying this list.
 | 
			
		||||
@ -726,6 +747,7 @@ func NewApp(
 | 
			
		||||
		minttypes.ModuleName,
 | 
			
		||||
		consensusparamtypes.ModuleName,
 | 
			
		||||
		packetforwardtypes.ModuleName,
 | 
			
		||||
		ibcwasmtypes.ModuleName,
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
	// Warning: Some init genesis methods must run before others. Ensure the dependencies are understood before modifying this list
 | 
			
		||||
@ -758,6 +780,7 @@ func NewApp(
 | 
			
		||||
		consensusparamtypes.ModuleName,
 | 
			
		||||
		packetforwardtypes.ModuleName,
 | 
			
		||||
		crisistypes.ModuleName, // runs the invariants at genesis, should run after other modules
 | 
			
		||||
		ibcwasmtypes.ModuleName,
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
	app.mm.RegisterInvariants(&app.crisisKeeper)
 | 
			
		||||
@ -832,6 +855,15 @@ func NewApp(
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if manager := app.SnapshotManager(); manager != nil {
 | 
			
		||||
		err := manager.RegisterExtensions(
 | 
			
		||||
			ibcwasmkeeper.NewWasmSnapshotter(app.CommitMultiStore(), &app.ibcWasmClientKeeper),
 | 
			
		||||
		)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			panic(fmt.Errorf("failed to register snapshot extension: %s", err))
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	app.ScopedIBCKeeper = scopedIBCKeeper
 | 
			
		||||
	app.ScopedTransferKeeper = scopedTransferKeeper
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.mod
									
									
									
									
									
								
							@ -16,6 +16,7 @@ require (
 | 
			
		||||
	github.com/cosmos/gogoproto v1.4.10
 | 
			
		||||
	github.com/cosmos/iavl v0.20.1
 | 
			
		||||
	github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7 v7.1.3
 | 
			
		||||
	github.com/cosmos/ibc-go/modules/light-clients/08-wasm v0.1.1-ibc-go-v7.3-wasmvm-v1.5
 | 
			
		||||
	github.com/cosmos/ibc-go/v7 v7.4.0
 | 
			
		||||
	github.com/ethereum/go-ethereum v1.10.26
 | 
			
		||||
	github.com/evmos/ethermint v0.21.0
 | 
			
		||||
@ -57,6 +58,7 @@ require (
 | 
			
		||||
	github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect
 | 
			
		||||
	github.com/99designs/keyring v1.2.1 // indirect
 | 
			
		||||
	github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect
 | 
			
		||||
	github.com/CosmWasm/wasmvm v1.5.2 // indirect
 | 
			
		||||
	github.com/StackExchange/wmi v1.2.1 // indirect
 | 
			
		||||
	github.com/VictoriaMetrics/fastcache v1.6.0 // indirect
 | 
			
		||||
	github.com/armon/go-metrics v0.4.1 // indirect
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										4
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								go.sum
									
									
									
									
									
								
							@ -224,6 +224,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03
 | 
			
		||||
github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
 | 
			
		||||
github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM=
 | 
			
		||||
github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4=
 | 
			
		||||
github.com/CosmWasm/wasmvm v1.5.2 h1:+pKB1Mz9GZVt1vadxB+EDdD1FOz3dMNjIKq/58/lrag=
 | 
			
		||||
github.com/CosmWasm/wasmvm v1.5.2/go.mod h1:Q0bSEtlktzh7W2hhEaifrFp1Erx11ckQZmjq8FLCyys=
 | 
			
		||||
github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
 | 
			
		||||
github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
 | 
			
		||||
github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
 | 
			
		||||
@ -425,6 +427,8 @@ github.com/cosmos/iavl v0.20.1 h1:rM1kqeG3/HBT85vsZdoSNsehciqUQPWrR4BYmqE2+zg=
 | 
			
		||||
github.com/cosmos/iavl v0.20.1/go.mod h1:WO7FyvaZJoH65+HFOsDir7xU9FWk2w9cHXNW1XHcl7A=
 | 
			
		||||
github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7 v7.1.3 h1:MZGDMETv72suFpTAD6VPGqSIm1FJcChtk2HmVh9D+Bo=
 | 
			
		||||
github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7 v7.1.3/go.mod h1:UvDmcGIWJPIytq+Q78/ff5NTOsuX/7IrNgEugTW5i0s=
 | 
			
		||||
github.com/cosmos/ibc-go/modules/light-clients/08-wasm v0.1.1-ibc-go-v7.3-wasmvm-v1.5 h1:sMoHjep+KInjMrppNCEutMVm1p8nI9WhKCuMQ+EcUHw=
 | 
			
		||||
github.com/cosmos/ibc-go/modules/light-clients/08-wasm v0.1.1-ibc-go-v7.3-wasmvm-v1.5/go.mod h1:VR2Hg2i/X1bafbmmNsV2Khwsg0PzNeuWoVKmSN5dAwo=
 | 
			
		||||
github.com/cosmos/ibc-go/v7 v7.4.0 h1:8FqYMptvksgMvlbN4UW9jFxTXzsPyfAzEZurujXac8M=
 | 
			
		||||
github.com/cosmos/ibc-go/v7 v7.4.0/go.mod h1:L/KaEhzV5TGUCTfGysVgMBQtl5Dm7hHitfpk+GIeoAo=
 | 
			
		||||
github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM=
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user