Skip to content

Commit

Permalink
feat(lib/runtime): wazero implementation of runtime.Instance (#3279)
Browse files Browse the repository at this point in the history
  • Loading branch information
timwu20 authored Jul 21, 2023
1 parent 91eabdc commit 115d6f5
Show file tree
Hide file tree
Showing 22 changed files with 6,217 additions and 27 deletions.
6 changes: 3 additions & 3 deletions dot/core/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ func createTestService(t *testing.T, genesisFilePath string,
gen, err := genesis.NewGenesisFromJSONRaw(genesisFilePath)
require.NoError(t, err)

genesisTrie, err := wasmer.NewTrieFromGenesis(*gen)
genesisTrie, err := runtime.NewTrieFromGenesis(*gen)
require.NoError(t, err)

// Extrinsic and context related stuff
Expand Down Expand Up @@ -266,7 +266,7 @@ func newWestendLocalWithTrieAndHeader(t *testing.T) (
require.NoError(t, err)
gen = *genPtr

genesisTrie, err = wasmer.NewTrieFromGenesis(gen)
genesisTrie, err = runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

parentHash := common.NewHash([]byte{0})
Expand All @@ -287,7 +287,7 @@ func getWestendDevRuntimeCode(t *testing.T) (code []byte) {
westendDevGenesis, err := genesis.NewGenesisFromJSONRaw(path)
require.NoError(t, err)

genesisTrie, err := wasmer.NewTrieFromGenesis(*westendDevGenesis)
genesisTrie, err := runtime.NewTrieFromGenesis(*westendDevGenesis)
require.NoError(t, err)

trieState := rtstorage.NewTrieState(&genesisTrie)
Expand Down
4 changes: 2 additions & 2 deletions dot/digest/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
"github.com/ChainSafe/gossamer/dot/types"
"github.com/ChainSafe/gossamer/lib/common"
"github.com/ChainSafe/gossamer/lib/genesis"
"github.com/ChainSafe/gossamer/lib/runtime/wasmer"
"github.com/ChainSafe/gossamer/lib/runtime"
"github.com/ChainSafe/gossamer/lib/trie"
"github.com/ChainSafe/gossamer/lib/utils"
"github.com/stretchr/testify/require"
Expand All @@ -24,7 +24,7 @@ func newWestendDevGenesisWithTrieAndHeader(t *testing.T) (
require.NoError(t, err)
gen = *genesisPtr

genesisTrie, err = wasmer.NewTrieFromGenesis(gen)
genesisTrie, err = runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

parentHash := common.NewHash([]byte{0})
Expand Down
4 changes: 2 additions & 2 deletions dot/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import (
"github.com/ChainSafe/gossamer/dot/types"
"github.com/ChainSafe/gossamer/lib/common"
"github.com/ChainSafe/gossamer/lib/genesis"
"github.com/ChainSafe/gossamer/lib/runtime/wasmer"
runtime "github.com/ChainSafe/gossamer/lib/runtime"
"github.com/ChainSafe/gossamer/lib/trie"
"github.com/ChainSafe/gossamer/lib/utils"
"github.com/stretchr/testify/require"
Expand All @@ -38,7 +38,7 @@ func newWestendDevGenesisWithTrieAndHeader(t *testing.T) (
require.NoError(t, err)
gen = *genPtr

genesisTrie, err = wasmer.NewTrieFromGenesis(gen)
genesisTrie, err = runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

parentHash := common.NewHash([]byte{0})
Expand Down
3 changes: 1 addition & 2 deletions dot/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ import (
"github.com/ChainSafe/gossamer/lib/grandpa"
"github.com/ChainSafe/gossamer/lib/keystore"
"github.com/ChainSafe/gossamer/lib/runtime"
"github.com/ChainSafe/gossamer/lib/runtime/wasmer"
"github.com/ChainSafe/gossamer/lib/services"
"github.com/ChainSafe/gossamer/lib/utils"
)
Expand Down Expand Up @@ -149,7 +148,7 @@ func (*nodeBuilder) initNode(config *cfg.Config) error {
}

// create trie from genesis
t, err := wasmer.NewTrieFromGenesis(*gen)
t, err := runtime.NewTrieFromGenesis(*gen)
if err != nil {
return fmt.Errorf("failed to create trie from genesis: %w", err)
}
Expand Down
2 changes: 1 addition & 1 deletion dot/node_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ func TestNewNode(t *testing.T) {
return nil, fmt.Errorf("failed to load genesis from file: %w", err)
}
// create trie from genesis
trie, err := wasmer.NewTrieFromGenesis(*gen)
trie, err := runtime.NewTrieFromGenesis(*gen)
if err != nil {
return nil, fmt.Errorf("failed to create trie from genesis: %w", err)
}
Expand Down
4 changes: 2 additions & 2 deletions dot/rpc/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
"github.com/ChainSafe/gossamer/dot/types"
"github.com/ChainSafe/gossamer/lib/common"
"github.com/ChainSafe/gossamer/lib/genesis"
"github.com/ChainSafe/gossamer/lib/runtime/wasmer"
"github.com/ChainSafe/gossamer/lib/runtime"
"github.com/ChainSafe/gossamer/lib/trie"
"github.com/ChainSafe/gossamer/lib/utils"
"github.com/stretchr/testify/require"
Expand All @@ -24,7 +24,7 @@ func newWestendDevGenesisWithTrieAndHeader(t *testing.T) (
require.NoError(t, err)
gen = *genesisPtr

genesisTrie, err = wasmer.NewTrieFromGenesis(gen)
genesisTrie, err = runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

parentHash := common.NewHash([]byte{0})
Expand Down
4 changes: 2 additions & 2 deletions dot/rpc/modules/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
"github.com/ChainSafe/gossamer/dot/types"
"github.com/ChainSafe/gossamer/lib/common"
"github.com/ChainSafe/gossamer/lib/genesis"
"github.com/ChainSafe/gossamer/lib/runtime/wasmer"
"github.com/ChainSafe/gossamer/lib/runtime"
"github.com/ChainSafe/gossamer/lib/trie"
"github.com/ChainSafe/gossamer/lib/utils"
"github.com/stretchr/testify/require"
Expand All @@ -31,7 +31,7 @@ func newWestendLocalGenesisWithTrieAndHeader(t *testing.T) (
require.NoError(t, err)
gen = *genesisPtr

genesisTrie, err = wasmer.NewTrieFromGenesis(gen)
genesisTrie, err = runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

parentHash := common.NewHash([]byte{0})
Expand Down
4 changes: 2 additions & 2 deletions dot/state/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (
"github.com/ChainSafe/gossamer/dot/types"
"github.com/ChainSafe/gossamer/lib/common"
"github.com/ChainSafe/gossamer/lib/genesis"
"github.com/ChainSafe/gossamer/lib/runtime/wasmer"
"github.com/ChainSafe/gossamer/lib/runtime"
"github.com/ChainSafe/gossamer/lib/trie"
"github.com/ChainSafe/gossamer/lib/utils"
"github.com/stretchr/testify/require"
Expand Down Expand Up @@ -98,7 +98,7 @@ func newWestendDevGenesisWithTrieAndHeader(t *testing.T) (
require.NoError(t, err)
gen = *genesisPtr

genesisTrie, err = wasmer.NewTrieFromGenesis(gen)
genesisTrie, err = runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

parentHash := common.NewHash([]byte{0})
Expand Down
3 changes: 2 additions & 1 deletion dot/sync/syncer_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
"github.com/ChainSafe/gossamer/internal/log"
"github.com/ChainSafe/gossamer/lib/common"
"github.com/ChainSafe/gossamer/lib/genesis"
runtime "github.com/ChainSafe/gossamer/lib/runtime"
rtstorage "github.com/ChainSafe/gossamer/lib/runtime/storage"
"github.com/ChainSafe/gossamer/lib/runtime/wasmer"
"github.com/ChainSafe/gossamer/lib/trie"
Expand Down Expand Up @@ -131,7 +132,7 @@ func newWestendDevGenesisWithTrieAndHeader(t *testing.T) (
require.NoError(t, err)
gen = *genesisPtr

genesisTrie, err = wasmer.NewTrieFromGenesis(gen)
genesisTrie, err = runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

parentHash := common.NewHash([]byte{0})
Expand Down
3 changes: 3 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ require (
github.com/spf13/cobra v1.7.0
github.com/spf13/viper v1.16.0
github.com/stretchr/testify v1.8.4
github.com/tetratelabs/wazero v1.1.0
github.com/wasmerio/go-ext-wasm v0.3.2-0.20200326095750-0a32be6068ec
github.com/whyrusleeping/mdns v0.0.0-20190826153040-b9b60ed33aa9
golang.org/x/crypto v0.11.0
Expand Down Expand Up @@ -197,3 +198,5 @@ require (
)

go 1.20

replace github.com/tetratelabs/wazero => github.com/ChainSafe/wazero v0.0.0-20230710171859-39a4c235ec1f
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ github.com/ChainSafe/go-schnorrkel v1.0.1-0.20220711122024-027d287d27bf h1:S195Z
github.com/ChainSafe/go-schnorrkel v1.0.1-0.20220711122024-027d287d27bf/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4=
github.com/ChainSafe/log15 v1.0.0 h1:vRDVtWtVwIH5uSCBvgTTZh6FA58UBJ6+QiiypaZfBf8=
github.com/ChainSafe/log15 v1.0.0/go.mod h1:5v1+ALHtdW0NfAeeoYyKmzCAMcAeqkdhIg4uxXWIgOg=
github.com/ChainSafe/wazero v0.0.0-20230710171859-39a4c235ec1f h1:/sI8TMJ77HL2UImQs7pY7khVN96EXQJGVOrX88dTpcY=
github.com/ChainSafe/wazero v0.0.0-20230710171859-39a4c235ec1f/go.mod h1:wYx2gNRg8/WihJfSDxA1TIL8H+GkfLYm+bIfbblu9VQ=
github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8=
Expand Down
4 changes: 2 additions & 2 deletions lib/babe/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,7 @@ func newWestendLocalGenesisWithTrieAndHeader(t *testing.T) (
require.NoError(t, err)
gen = *genesisPtr

genesisTrie, err = wasmer.NewTrieFromGenesis(gen)
genesisTrie, err = runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

genesisHeader = *types.NewHeader(common.NewHash([]byte{0}),
Expand All @@ -388,7 +388,7 @@ func newWestendDevGenesisWithTrieAndHeader(t *testing.T) (
require.NoError(t, err)
gen = *genesisPtr

genesisTrie, err = wasmer.NewTrieFromGenesis(gen)
genesisTrie, err = runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

genesisHeader = *types.NewHeader(common.NewHash([]byte{0}),
Expand Down
3 changes: 2 additions & 1 deletion lib/grandpa/helpers_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import (
"github.com/ChainSafe/gossamer/lib/common"
"github.com/ChainSafe/gossamer/lib/crypto/ed25519"
"github.com/ChainSafe/gossamer/lib/genesis"
runtime "github.com/ChainSafe/gossamer/lib/runtime"
"github.com/ChainSafe/gossamer/lib/runtime/storage"
"github.com/ChainSafe/gossamer/lib/runtime/wasmer"
"github.com/ChainSafe/gossamer/lib/trie"
Expand Down Expand Up @@ -194,7 +195,7 @@ func newWestendDevGenesisWithTrieAndHeader(t *testing.T) (
assert.NoError(t, err)
gen = *genesisPtr

genesisTrie, err = wasmer.NewTrieFromGenesis(gen)
genesisTrie, err = runtime.NewTrieFromGenesis(gen)
assert.NoError(t, err)

parentHash := common.NewHash([]byte{0})
Expand Down
2 changes: 1 addition & 1 deletion lib/runtime/wasmer/genesis.go → lib/runtime/genesis.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Copyright 2022 ChainSafe Systems (ON)
// SPDX-License-Identifier: LGPL-3.0-only

package wasmer
package runtime

import (
"errors"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Copyright 2022 ChainSafe Systems (ON)
// SPDX-License-Identifier: LGPL-3.0-only

package wasmer
package runtime

import (
"testing"
Expand Down
10 changes: 5 additions & 5 deletions lib/runtime/wasmer/exports_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ func Test_Instance_Version(t *testing.T) {
instanceBuilder: func(t *testing.T) instanceVersioner {
genesisPath := utils.GetKusamaGenesisPath(t)
kusamaGenesis := genesisFromRawJSON(t, genesisPath)
genesisTrie, err := NewTrieFromGenesis(kusamaGenesis)
genesisTrie, err := runtime.NewTrieFromGenesis(kusamaGenesis)
require.NoError(t, err)

cfg := Config{
Expand Down Expand Up @@ -170,7 +170,7 @@ func balanceKey(t *testing.T, pub []byte) []byte {
func TestWestendRuntime_ValidateTransaction(t *testing.T) {
genesisPath := utils.GetWestendDevRawGenesisPath(t)
gen := genesisFromRawJSON(t, genesisPath)
genTrie, err := NewTrieFromGenesis(gen)
genTrie, err := runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

// set state to genesis state
Expand Down Expand Up @@ -472,7 +472,7 @@ func TestInstance_ExecuteBlock_WestendRuntime(t *testing.T) {
func TestInstance_ApplyExtrinsic_WestendRuntime(t *testing.T) {
genesisPath := utils.GetWestendDevRawGenesisPath(t)
gen := genesisFromRawJSON(t, genesisPath)
genTrie, err := NewTrieFromGenesis(gen)
genTrie, err := runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

// set state to genesis state
Expand Down Expand Up @@ -529,7 +529,7 @@ func TestInstance_ExecuteBlock_PolkadotRuntime(t *testing.T) {
func TestInstance_ExecuteBlock_PolkadotRuntime_PolkadotBlock1(t *testing.T) {
genesisPath := utils.GetPolkadotGenesisPath(t)
gen := genesisFromRawJSON(t, genesisPath)
genTrie, err := NewTrieFromGenesis(gen)
genTrie, err := runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

expectedGenesisRoot := common.MustHexToHash("0x29d0d972cd27cbc511e9589fcb7a4506d5eb6a9e8df205f00472e5ab354a4e17")
Expand Down Expand Up @@ -579,7 +579,7 @@ func TestInstance_ExecuteBlock_PolkadotRuntime_PolkadotBlock1(t *testing.T) {
func TestInstance_ExecuteBlock_KusamaRuntime_KusamaBlock1(t *testing.T) {
genesisPath := utils.GetKusamaGenesisPath(t)
gen := genesisFromRawJSON(t, genesisPath)
genTrie, err := NewTrieFromGenesis(gen)
genTrie, err := runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

expectedGenesisRoot := common.MustHexToHash("0xb0006203c3a6e6bd2c6a17b1d4ae8ca49a31da0f4579da950b127774b44aef6b")
Expand Down
Loading

0 comments on commit 115d6f5

Please sign in to comment.