Skip to content

Commit a42de2b

Browse files
committed
feat(x/wasm): enable smart contracts on akash
Signed-off-by: Artur Troian <[email protected]>
1 parent 758e940 commit a42de2b

File tree

129 files changed

+1151
-1293
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

129 files changed

+1151
-1293
lines changed

app/app.go

Lines changed: 38 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ import (
66
"net/http"
77
"os"
88
"path/filepath"
9+
"reflect"
910
"time"
1011

12+
wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper"
1113
wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types"
1214
"github.com/gorilla/mux"
1315
"github.com/rakyll/statik/fs"
@@ -58,7 +60,6 @@ import (
5860
paramstypes "github.com/cosmos/cosmos-sdk/x/params/types"
5961
slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
6062
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
61-
ibcwasmtypes "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/types"
6263
transfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types"
6364
ibchost "github.com/cosmos/ibc-go/v10/modules/core/exported"
6465
ibctm "github.com/cosmos/ibc-go/v10/modules/light-clients/07-tendermint"
@@ -71,10 +72,11 @@ import (
7172
providertypes "pkg.akt.dev/go/node/provider/v1beta4"
7273
taketypes "pkg.akt.dev/go/node/take/v1"
7374

74-
apptypes "pkg.akt.dev/node/app/types"
75-
utypes "pkg.akt.dev/node/upgrades/types"
75+
apptypes "pkg.akt.dev/node/v2/app/types"
76+
utypes "pkg.akt.dev/node/v2/upgrades/types"
77+
awasm "pkg.akt.dev/node/v2/x/wasm"
7678
// unnamed import of statik for swagger UI support
77-
_ "pkg.akt.dev/node/client/docs/statik"
79+
_ "pkg.akt.dev/node/v2/client/docs/statik"
7880
)
7981

8082
const (
@@ -133,6 +135,16 @@ func NewApp(
133135
homePath = DefaultHome
134136
}
135137

138+
var wasmOpts []wasmkeeper.Option
139+
140+
if val := appOpts.Get("wasm"); val != nil {
141+
if vl, valid := val.([]wasmkeeper.Option); valid {
142+
wasmOpts = append(wasmOpts, vl...)
143+
} else {
144+
panic(fmt.Sprintf("invalid type for aptOpts.Get(\"wasmh\"). expected %s, actual %s", reflect.TypeOf(wasmOpts).String(), reflect.TypeOf(vl).String()))
145+
}
146+
}
147+
136148
app := &AkashApp{
137149
BaseApp: bapp,
138150
App: &apptypes.App{
@@ -146,18 +158,25 @@ func NewApp(
146158
}
147159

148160
wasmDir := filepath.Join(homePath, "wasm")
149-
ibcWasmConfig := ibcwasmtypes.WasmConfig{
150-
DataDir: filepath.Join(homePath, "ibc_08-wasm"),
151-
SupportedCapabilities: []string{"iterator", "stargate", "abort"},
152-
ContractDebugMode: false,
153-
}
161+
//ibcWasmConfig := ibcwasmtypes.WasmConfig{
162+
// DataDir: filepath.Join(homePath, "ibc_08-wasm"),
163+
// SupportedCapabilities: []string{"iterator", "stargate", "abort"},
164+
// ContractDebugMode: false,
165+
//}
154166
wasmConfig, err := wasm.ReadNodeConfig(appOpts)
155-
// Uncomment this for debugging contracts. In the future this could be made into a param passed by the tests
156-
// wasmConfig.ContractDebugMode = true
157167
if err != nil {
158168
panic(fmt.Sprintf("error while reading wasm config: %s", err))
159169
}
160170

171+
wasmConfig.ContractDebugMode = false
172+
// Memory limits - prevent DoS
173+
wasmConfig.MemoryCacheSize = 100 // 100 MB max
174+
// Query gas limit - prevent expensive queries
175+
wasmConfig.SmartQueryGasLimit = 3_000_000
176+
// Debug mode - MUST be false in production
177+
// Uncomment this for debugging contracts. In the future this could be made into a param passed by the tests
178+
wasmConfig.ContractDebugMode = false
179+
161180
app.InitSpecialKeepers(
162181
app.cdc,
163182
aminoCdc,
@@ -171,6 +190,9 @@ func NewApp(
171190
encodingConfig,
172191
app.BaseApp,
173192
ModuleAccountPerms(),
193+
wasmDir,
194+
wasmConfig,
195+
wasmOpts,
174196
app.BlockedAddrs(),
175197
invCheckPeriod,
176198
)
@@ -212,7 +234,7 @@ func NewApp(
212234
app.MM.SetOrderInitGenesis(OrderInitGenesis(app.MM.ModuleNames())...)
213235

214236
app.Configurator = module.NewConfigurator(app.AppCodec(), app.MsgServiceRouter(), app.GRPCQueryRouter())
215-
err := app.MM.RegisterServices(app.Configurator)
237+
err = app.MM.RegisterServices(app.Configurator)
216238
if err != nil {
217239
panic(err)
218240
}
@@ -304,6 +326,8 @@ func orderBeginBlockers(_ []string) []string {
304326
ibctm.ModuleName,
305327
ibchost.ModuleName,
306328
feegrant.ModuleName,
329+
// akash wasm module must be prior wasm
330+
awasm.ModuleName,
307331
// wasm after ibc transfer
308332
wasmtypes.ModuleName,
309333
}
@@ -335,6 +359,8 @@ func OrderEndBlockers(_ []string) []string {
335359
transfertypes.ModuleName,
336360
ibchost.ModuleName,
337361
feegrant.ModuleName,
362+
// akash wasm module must be prior wasm
363+
awasm.ModuleName,
338364
// wasm after ibc transfer
339365
wasmtypes.ModuleName,
340366
}

app/app_configure.go

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
evidencetypes "cosmossdk.io/x/evidence/types"
55
"cosmossdk.io/x/feegrant"
66
upgradetypes "cosmossdk.io/x/upgrade/types"
7+
wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types"
78
"github.com/cosmos/cosmos-sdk/types/module"
89
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
910
vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
@@ -24,13 +25,14 @@ import (
2425
audittypes "pkg.akt.dev/go/node/audit/v1"
2526
taketypes "pkg.akt.dev/go/node/take/v1"
2627

27-
"pkg.akt.dev/node/x/audit"
28-
"pkg.akt.dev/node/x/cert"
29-
"pkg.akt.dev/node/x/deployment"
30-
"pkg.akt.dev/node/x/escrow"
31-
"pkg.akt.dev/node/x/market"
32-
"pkg.akt.dev/node/x/provider"
33-
"pkg.akt.dev/node/x/take"
28+
"pkg.akt.dev/node/v2/x/audit"
29+
"pkg.akt.dev/node/v2/x/cert"
30+
"pkg.akt.dev/node/v2/x/deployment"
31+
"pkg.akt.dev/node/v2/x/escrow"
32+
"pkg.akt.dev/node/v2/x/market"
33+
"pkg.akt.dev/node/v2/x/provider"
34+
"pkg.akt.dev/node/v2/x/take"
35+
awasm "pkg.akt.dev/node/v2/x/wasm"
3436
)
3537

3638
func akashModuleBasics() []module.AppModuleBasic {
@@ -42,6 +44,7 @@ func akashModuleBasics() []module.AppModuleBasic {
4244
provider.AppModuleBasic{},
4345
audit.AppModuleBasic{},
4446
cert.AppModuleBasic{},
47+
awasm.AppModuleBasic{},
4548
}
4649
}
4750

@@ -78,5 +81,7 @@ func OrderInitGenesis(_ []string) []string {
7881
provider.ModuleName,
7982
market.ModuleName,
8083
genutiltypes.ModuleName,
84+
awasm.ModuleName,
85+
wasmtypes.ModuleName,
8186
}
8287
}

app/config.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"cosmossdk.io/x/evidence"
55
feegrantmodule "cosmossdk.io/x/feegrant/module"
66
"cosmossdk.io/x/upgrade"
7+
"github.com/CosmWasm/wasmd/x/wasm"
78
"github.com/cosmos/cosmos-sdk/types/module"
89
"github.com/cosmos/cosmos-sdk/x/auth"
910
"github.com/cosmos/cosmos-sdk/x/auth/vesting"
@@ -60,6 +61,7 @@ var mbasics = module.NewBasicManager(
6061
transfer.AppModuleBasic{},
6162
vesting.AppModuleBasic{},
6263
feegrantmodule.AppModuleBasic{},
64+
wasm.AppModuleBasic{},
6365
},
6466
// akash
6567
akashModuleBasics()...,

app/modules.go

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
feegrantmodule "cosmossdk.io/x/feegrant/module"
66
"cosmossdk.io/x/upgrade"
77
"github.com/CosmWasm/wasmd/x/wasm"
8+
wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types"
89
addresscodec "github.com/cosmos/cosmos-sdk/codec/address"
910
"github.com/cosmos/cosmos-sdk/types/module"
1011
"github.com/cosmos/cosmos-sdk/x/auth"
@@ -33,13 +34,14 @@ import (
3334

3435
"pkg.akt.dev/go/sdkutil"
3536

36-
"pkg.akt.dev/node/x/audit"
37-
"pkg.akt.dev/node/x/cert"
38-
"pkg.akt.dev/node/x/deployment"
39-
"pkg.akt.dev/node/x/escrow"
40-
"pkg.akt.dev/node/x/market"
41-
"pkg.akt.dev/node/x/provider"
42-
"pkg.akt.dev/node/x/take"
37+
"pkg.akt.dev/node/v2/x/audit"
38+
"pkg.akt.dev/node/v2/x/cert"
39+
"pkg.akt.dev/node/v2/x/deployment"
40+
"pkg.akt.dev/node/v2/x/escrow"
41+
"pkg.akt.dev/node/v2/x/market"
42+
"pkg.akt.dev/node/v2/x/provider"
43+
"pkg.akt.dev/node/v2/x/take"
44+
awasm "pkg.akt.dev/node/v2/x/wasm"
4345
)
4446

4547
func appModules(
@@ -191,14 +193,18 @@ func appModules(
191193
app.cdc,
192194
app.Keepers.Akash.Cert,
193195
),
196+
awasm.NewAppModule(
197+
app.cdc,
198+
app.Keepers.Akash.Wasm,
199+
),
194200
wasm.NewAppModule(
195201
app.cdc,
196202
app.Keepers.External.Wasm,
197203
app.Keepers.Cosmos.Staking,
198204
app.Keepers.Cosmos.Acct,
199205
app.Keepers.Cosmos.Bank,
200206
app.MsgServiceRouter(),
201-
nil,
207+
app.GetSubspace(wasmtypes.ModuleName),
202208
),
203209
}
204210
}
@@ -331,5 +337,20 @@ func appSimModules(
331337
app.cdc,
332338
app.Keepers.Akash.Cert,
333339
),
340+
341+
awasm.NewAppModule(
342+
app.cdc,
343+
app.Keepers.Akash.Wasm,
344+
),
345+
346+
wasm.NewAppModule(
347+
app.cdc,
348+
app.Keepers.External.Wasm,
349+
app.Keepers.Cosmos.Staking,
350+
app.Keepers.Cosmos.Acct,
351+
app.Keepers.Cosmos.Bank,
352+
app.MsgServiceRouter(),
353+
app.GetSubspace(wasmtypes.ModuleName),
354+
),
334355
}
335356
}

app/sim/sim_utils.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
"github.com/cosmos/cosmos-sdk/runtime"
1515
simtypes "github.com/cosmos/cosmos-sdk/types/simulation"
1616

17-
akash "pkg.akt.dev/node/app"
17+
akash "pkg.akt.dev/node/v2/app"
1818
)
1919

2020
// SetupSimulation creates the config, db (levelDB), temporary directory and logger for

0 commit comments

Comments
 (0)