Skip to content

Commit

Permalink
chore (pkg/scale) scale babe integration (#1670)
Browse files Browse the repository at this point in the history
* integrate scale into babe library

* use results for unmarshalling

* clean up code

* fix switch to pass checks

* integrate scale into dot/sync

* cr feedback

* merge

Co-authored-by: noot <36753753+noot@users.noreply.github.com>
  • Loading branch information
jimjbrettj and noot authored Jul 6, 2021
1 parent 6fbf2fd commit 7ecada2
Show file tree
Hide file tree
Showing 8 changed files with 234 additions and 114 deletions.
9 changes: 5 additions & 4 deletions dot/sync/test_helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ import (
"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/scale"
"github.com/ChainSafe/gossamer/lib/transaction"
"github.com/ChainSafe/gossamer/lib/trie"
"github.com/ChainSafe/gossamer/pkg/scale"
log "github.com/ChainSafe/log15"
"github.com/stretchr/testify/require"

Expand Down Expand Up @@ -166,10 +166,11 @@ func BuildBlock(t *testing.T, instance runtime.Instance, parent *types.Header, e
require.NoError(t, err)

// decode inherent extrinsics
exts, err := scale.Decode(inherentExts, [][]byte{})
var exts [][]byte
err = scale.Unmarshal(inherentExts, &exts)
require.NoError(t, err)

inExt := exts.([][]byte)
inExt := exts

var body *types.Body
if ext != nil {
Expand All @@ -191,7 +192,7 @@ func BuildBlock(t *testing.T, instance runtime.Instance, parent *types.Header, e

// apply each inherent extrinsic
for _, ext := range inExt {
in, err := scale.Encode(ext) //nolint
in, err := scale.Marshal(ext) //nolint
require.NoError(t, err)

ret, err := instance.ApplyExtrinsic(in)
Expand Down
23 changes: 15 additions & 8 deletions lib/babe/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ import (
"github.com/ChainSafe/gossamer/dot/types"
"github.com/ChainSafe/gossamer/lib/common"
"github.com/ChainSafe/gossamer/lib/runtime"
"github.com/ChainSafe/gossamer/lib/scale"
"github.com/ChainSafe/gossamer/lib/transaction"
"github.com/ChainSafe/gossamer/pkg/scale"
)

const (
Expand Down Expand Up @@ -305,14 +305,15 @@ func (b *BlockBuilder) buildBlockInherents(slot Slot) ([][]byte, error) {
}

// decode inherent extrinsics
exts, err := scale.Decode(inherentExts, [][]byte{})
var exts [][]byte
err = scale.Unmarshal(inherentExts, &exts)
if err != nil {
return nil, err
}

// apply each inherent extrinsic
for _, ext := range exts.([][]byte) {
in, err := scale.Encode(ext)
for _, ext := range exts {
in, err := scale.Marshal(ext)
if err != nil {
return nil, err
}
Expand All @@ -328,7 +329,7 @@ func (b *BlockBuilder) buildBlockInherents(slot Slot) ([][]byte, error) {
}
}

return exts.([][]byte), nil
return exts, nil
}

func (b *BlockBuilder) addToQueue(txs []*transaction.ValidTransaction) {
Expand All @@ -352,12 +353,18 @@ func ExtrinsicsToBody(inherents [][]byte, txs []*transaction.ValidTransaction) (
extrinsics := types.BytesArrayToExtrinsics(inherents)

for _, tx := range txs {
decExt, err := scale.Decode(tx.Extrinsic, []byte{})
var decExt []byte
err := scale.Unmarshal(tx.Extrinsic, &decExt)
if err != nil {
return nil, err
}
extrinsics = append(extrinsics, decExt.([]byte))
extrinsics = append(extrinsics, decExt)
}

return types.NewBodyFromExtrinsics(extrinsics)
enc, err := scale.Marshal(extrinsics)
if err != nil {
return nil, err
}
body := types.Body(enc)
return &body, nil
}
13 changes: 8 additions & 5 deletions lib/babe/build_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ import (
"github.com/ChainSafe/gossamer/lib/common"
"github.com/ChainSafe/gossamer/lib/crypto/sr25519"
"github.com/ChainSafe/gossamer/lib/runtime"
"github.com/ChainSafe/gossamer/lib/scale"
"github.com/ChainSafe/gossamer/lib/transaction"
"github.com/ChainSafe/gossamer/pkg/scale"

log "github.com/ChainSafe/log15"
cscale "github.com/centrifuge/go-substrate-rpc-client/v3/scale"
Expand Down Expand Up @@ -90,11 +90,13 @@ func createTestExtrinsic(t *testing.T, rt runtime.Instance, genHash common.Hash,
rawMeta, err := rt.Metadata()
require.NoError(t, err)

decoded, err := scale.Decode(rawMeta, []byte{})
//decoded, err := scale.Decode(rawMeta, []byte{})
var decoded []byte
err = scale.Unmarshal(rawMeta, &decoded)
require.NoError(t, err)

meta := &ctypes.Metadata{}
err = ctypes.DecodeFromBytes(decoded.([]byte), meta)
err = ctypes.DecodeFromBytes(decoded, meta)
require.NoError(t, err)

rv, err := rt.Version()
Expand Down Expand Up @@ -313,11 +315,12 @@ func TestBuildAndApplyExtrinsic(t *testing.T) {
// build extrinsic
rawMeta, err := babeService.rt.Metadata()
require.NoError(t, err)
decoded, err := scale.Decode(rawMeta, []byte{})
var decoded []byte
err = scale.Unmarshal(rawMeta, []byte{})
require.NoError(t, err)

meta := &ctypes.Metadata{}
err = ctypes.DecodeFromBytes(decoded.([]byte), meta)
err = ctypes.DecodeFromBytes(decoded, meta)
require.NoError(t, err)

rv, err := babeService.rt.Version()
Expand Down
Loading

0 comments on commit 7ecada2

Please sign in to comment.