Skip to content

Commit

Permalink
refactor encode methods (#274)
Browse files Browse the repository at this point in the history
* refactor: return error from encode methods
* refactor
* extract the util method to goscale
* use latest goscale hash
  • Loading branch information
radkomih authored Nov 10, 2023

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent 3b86fc9 commit 7522edb
Showing 147 changed files with 679 additions and 452 deletions.
Binary file modified build/runtime.wasm
Binary file not shown.
8 changes: 5 additions & 3 deletions execution/types/block.go
Original file line number Diff line number Diff line change
@@ -20,9 +20,11 @@ type block struct {
extrinsics sc.Sequence[types.UncheckedExtrinsic]
}

func (b block) Encode(buffer *bytes.Buffer) {
buffer.Write(b.header.Bytes())
buffer.Write(b.extrinsics.Bytes())
func (b block) Encode(buffer *bytes.Buffer) error {
return sc.EncodeEach(buffer,
b.header,
b.extrinsics,
)
}

func (b block) Bytes() []byte {
25 changes: 19 additions & 6 deletions execution/types/unchecked_extrinsic.go
Original file line number Diff line number Diff line change
@@ -60,18 +60,31 @@ func NewUnsignedUncheckedExtrinsic(function primitives.Call) primitives.Unchecke
}
}

func (uxt uncheckedExtrinsic) Encode(buffer *bytes.Buffer) {
func (uxt uncheckedExtrinsic) Encode(buffer *bytes.Buffer) error {
tempBuffer := &bytes.Buffer{}

uxt.version.Encode(tempBuffer)
err := uxt.version.Encode(tempBuffer)
if err != nil {
return err
}
if uxt.signature.HasValue {
uxt.signature.Value.Encode(tempBuffer)
err := uxt.signature.Value.Encode(tempBuffer)
if err != nil {
return err
}
}
err = uxt.function.Encode(tempBuffer)
if err != nil {
return err
}
uxt.function.Encode(tempBuffer)

encodedLen := sc.ToCompact(uint64(tempBuffer.Len()))
encodedLen.Encode(buffer)
buffer.Write(tempBuffer.Bytes())
err = encodedLen.Encode(buffer)
if err != nil {
return err
}
_, err = buffer.Write(tempBuffer.Bytes())
return err
}

func (uxt uncheckedExtrinsic) Bytes() []byte {
4 changes: 2 additions & 2 deletions frame/balances/call_force_free.go
Original file line number Diff line number Diff line change
@@ -43,8 +43,8 @@ func (c callForceFree) DecodeArgs(buffer *bytes.Buffer) (primitives.Call, error)
return c, nil
}

func (c callForceFree) Encode(buffer *bytes.Buffer) {
c.Callable.Encode(buffer)
func (c callForceFree) Encode(buffer *bytes.Buffer) error {
return c.Callable.Encode(buffer)
}

func (c callForceFree) Bytes() []byte {
3 changes: 2 additions & 1 deletion frame/balances/call_force_free_test.go
Original file line number Diff line number Diff line change
@@ -72,8 +72,9 @@ func Test_Call_ForceFree_Encode(t *testing.T) {
expectedBuffer := bytes.NewBuffer([]byte{moduleId, functionForceFreeIndex})
buf := &bytes.Buffer{}

target.Encode(buf)
err := target.Encode(buf)

assert.NoError(t, err)
assert.Equal(t, expectedBuffer, buf)
}

4 changes: 2 additions & 2 deletions frame/balances/call_force_transfer.go
Original file line number Diff line number Diff line change
@@ -46,8 +46,8 @@ func (c callForceTransfer) DecodeArgs(buffer *bytes.Buffer) (primitives.Call, er
return c, nil
}

func (c callForceTransfer) Encode(buffer *bytes.Buffer) {
c.Callable.Encode(buffer)
func (c callForceTransfer) Encode(buffer *bytes.Buffer) error {
return c.Callable.Encode(buffer)
}

func (c callForceTransfer) Bytes() []byte {
3 changes: 2 additions & 1 deletion frame/balances/call_force_transfer_test.go
Original file line number Diff line number Diff line change
@@ -48,8 +48,9 @@ func Test_Call_ForceTransfer_Encode(t *testing.T) {
expectedBuffer := bytes.NewBuffer([]byte{moduleId, functionForceTransferIndex})
buf := &bytes.Buffer{}

target.Encode(buf)
err := target.Encode(buf)

assert.NoError(t, err)
assert.Equal(t, expectedBuffer, buf)
}

4 changes: 2 additions & 2 deletions frame/balances/call_set_balance.go
Original file line number Diff line number Diff line change
@@ -54,8 +54,8 @@ func (c callSetBalance) DecodeArgs(buffer *bytes.Buffer) (types.Call, error) {
return c, nil
}

func (c callSetBalance) Encode(buffer *bytes.Buffer) {
c.Callable.Encode(buffer)
func (c callSetBalance) Encode(buffer *bytes.Buffer) error {
return c.Callable.Encode(buffer)
}

func (c callSetBalance) Bytes() []byte {
3 changes: 2 additions & 1 deletion frame/balances/call_set_balance_test.go
Original file line number Diff line number Diff line change
@@ -54,8 +54,9 @@ func Test_Call_SetBalance_Encode(t *testing.T) {
expectedBuffer := bytes.NewBuffer([]byte{moduleId, functionSetBalanceIndex})
buf := &bytes.Buffer{}

target.Encode(buf)
err := target.Encode(buf)

assert.NoError(t, err)
assert.Equal(t, expectedBuffer, buf)
}

4 changes: 2 additions & 2 deletions frame/balances/call_transfer.go
Original file line number Diff line number Diff line change
@@ -45,8 +45,8 @@ func (c callTransfer) DecodeArgs(buffer *bytes.Buffer) (primitives.Call, error)
return c, nil
}

func (c callTransfer) Encode(buffer *bytes.Buffer) {
c.Callable.Encode(buffer)
func (c callTransfer) Encode(buffer *bytes.Buffer) error {
return c.Callable.Encode(buffer)
}

func (c callTransfer) Bytes() []byte {
4 changes: 2 additions & 2 deletions frame/balances/call_transfer_all.go
Original file line number Diff line number Diff line change
@@ -42,8 +42,8 @@ func (c callTransferAll) DecodeArgs(buffer *bytes.Buffer) (primitives.Call, erro
return c, nil
}

func (c callTransferAll) Encode(buffer *bytes.Buffer) {
c.Callable.Encode(buffer)
func (c callTransferAll) Encode(buffer *bytes.Buffer) error {
return c.Callable.Encode(buffer)
}

func (c callTransferAll) Bytes() []byte {
3 changes: 2 additions & 1 deletion frame/balances/call_transfer_all_test.go
Original file line number Diff line number Diff line change
@@ -45,8 +45,9 @@ func Test_Call_TransferAll_Encode(t *testing.T) {
expectedBuffer := bytes.NewBuffer([]byte{moduleId, functionTransferAllIndex})
buf := &bytes.Buffer{}

target.Encode(buf)
err := target.Encode(buf)

assert.NoError(t, err)
assert.Equal(t, expectedBuffer, buf)
}

4 changes: 2 additions & 2 deletions frame/balances/call_transfer_keep_alive.go
Original file line number Diff line number Diff line change
@@ -42,8 +42,8 @@ func (c callTransferKeepAlive) DecodeArgs(buffer *bytes.Buffer) (primitives.Call
return c, nil
}

func (c callTransferKeepAlive) Encode(buffer *bytes.Buffer) {
c.Callable.Encode(buffer)
func (c callTransferKeepAlive) Encode(buffer *bytes.Buffer) error {
return c.Callable.Encode(buffer)
}

func (c callTransferKeepAlive) Bytes() []byte {
3 changes: 2 additions & 1 deletion frame/balances/call_transfer_keep_alive_test.go
Original file line number Diff line number Diff line change
@@ -45,8 +45,9 @@ func Test_Call_TransferKeepAlive_Encode(t *testing.T) {
expectedBuffer := bytes.NewBuffer([]byte{moduleId, functionTransferKeepAliveIndex})
buf := &bytes.Buffer{}

target.Encode(buf)
err := target.Encode(buf)

assert.NoError(t, err)
assert.Equal(t, expectedBuffer, buf)
}

3 changes: 2 additions & 1 deletion frame/balances/call_transfer_test.go
Original file line number Diff line number Diff line change
@@ -62,8 +62,9 @@ func Test_Call_Transfer_Encode(t *testing.T) {
expectedBuffer := bytes.NewBuffer([]byte{moduleId, functionTransferIndex})
buf := &bytes.Buffer{}

target.Encode(buf)
err := target.Encode(buf)

assert.NoError(t, err)
assert.Equal(t, expectedBuffer, buf)
}

8 changes: 5 additions & 3 deletions frame/balances/types.go
Original file line number Diff line number Diff line change
@@ -70,9 +70,11 @@ func newDustCleaner(moduleId sc.U8, accountId types.Address32, negativeImbalance
}
}

func (dcv dustCleaner) Encode(buffer *bytes.Buffer) {
dcv.accountId.Encode(buffer)
dcv.negativeImbalance.Encode(buffer)
func (dcv dustCleaner) Encode(buffer *bytes.Buffer) error {
return sc.EncodeEach(buffer,
dcv.accountId,
dcv.negativeImbalance,
)
}

func (dcv dustCleaner) Bytes() []byte {
5 changes: 3 additions & 2 deletions frame/balances/types_test.go
Original file line number Diff line number Diff line change
@@ -76,10 +76,11 @@ func Test_DustCleanerValue_New(t *testing.T) {

func Test_DustCleanerValue_Encode(t *testing.T) {
target := setupDustCleanerValue()

buffer := &bytes.Buffer{}
target.Encode(buffer)

err := target.Encode(buffer)

assert.NoError(t, err)
assert.Equal(t, expectedDustCleaner.Bytes(), buffer.Bytes())
}

4 changes: 2 additions & 2 deletions frame/system/call_remark.go
Original file line number Diff line number Diff line change
@@ -33,8 +33,8 @@ func (c callRemark) DecodeArgs(buffer *bytes.Buffer) (primitives.Call, error) {
return c, nil
}

func (c callRemark) Encode(buffer *bytes.Buffer) {
c.Callable.Encode(buffer)
func (c callRemark) Encode(buffer *bytes.Buffer) error {
return c.Callable.Encode(buffer)
}

func (c callRemark) Bytes() []byte {
6 changes: 4 additions & 2 deletions frame/system/call_remark_test.go
Original file line number Diff line number Diff line change
@@ -47,8 +47,9 @@ func Test_Call_Remark_Encode(t *testing.T) {

call := newCallRemark(moduleId, functionRemarkIndex)

call.Encode(buf)
err := call.Encode(buf)

assert.NoError(t, err)
assert.Equal(t, expectedBuf, buf)
}

@@ -64,8 +65,9 @@ func Test_Call_Remark_EncodeWithArgs(t *testing.T) {
assert.Nil(t, err)

buf.Reset()
call.Encode(buf)
err = call.Encode(buf)

assert.NoError(t, err)
assert.Equal(t, expectedBuf, buf)
}

4 changes: 3 additions & 1 deletion frame/system/extensions/check_genesis.go
Original file line number Diff line number Diff line change
@@ -19,7 +19,9 @@ func NewCheckGenesis(module system.Module) CheckGenesis {
}
}

func (cg CheckGenesis) Encode(*bytes.Buffer) {}
func (cg CheckGenesis) Encode(*bytes.Buffer) error {
return nil
}

func (cg CheckGenesis) Decode(*bytes.Buffer) error { return nil }

3 changes: 2 additions & 1 deletion frame/system/extensions/check_genesis_test.go
Original file line number Diff line number Diff line change
@@ -37,8 +37,9 @@ func Test_CheckGenesis_Encode(t *testing.T) {
target := setupCheckGenesis()
buffer := &bytes.Buffer{}

target.Encode(buffer)
err := target.Encode(buffer)

assert.NoError(t, err)
assert.Equal(t, 0, buffer.Len())
assert.Equal(t, &bytes.Buffer{}, buffer)
}
4 changes: 2 additions & 2 deletions frame/system/extensions/check_mortality.go
Original file line number Diff line number Diff line change
@@ -21,8 +21,8 @@ func NewCheckMortality(systemModule system.Module) CheckMortality {
}
}

func (cm CheckMortality) Encode(buffer *bytes.Buffer) {
cm.era.Encode(buffer)
func (cm CheckMortality) Encode(buffer *bytes.Buffer) error {
return cm.era.Encode(buffer)
}

func (cm *CheckMortality) Decode(buffer *bytes.Buffer) error {
6 changes: 4 additions & 2 deletions frame/system/extensions/check_mortality_test.go
Original file line number Diff line number Diff line change
@@ -25,16 +25,18 @@ func Test_CheckMortality_Encode(t *testing.T) {
target := setupCheckMortality()
target.era = era

target.Encode(buffer)
err := target.Encode(buffer)

assert.NoError(t, err)
assert.Equal(t, era.Bytes(), buffer.Bytes())
}

func Test_CheckMortality_Empty(t *testing.T) {
buffer := &bytes.Buffer{}

setupCheckMortality().Encode(buffer)
err := setupCheckMortality().Encode(buffer)

assert.NoError(t, err)
assert.Equal(t, primitives.Era{}.Bytes(), buffer.Bytes())
}

4 changes: 3 additions & 1 deletion frame/system/extensions/check_non_zero_sender.go
Original file line number Diff line number Diff line change
@@ -20,7 +20,9 @@ func (c CheckNonZeroAddress) AdditionalSigned() (primitives.AdditionalSigned, pr
return primitives.AdditionalSigned{}, nil
}

func (c CheckNonZeroAddress) Encode(*bytes.Buffer) {}
func (c CheckNonZeroAddress) Encode(*bytes.Buffer) error {
return nil
}

func (c CheckNonZeroAddress) Decode(*bytes.Buffer) error { return nil }

3 changes: 2 additions & 1 deletion frame/system/extensions/check_non_zero_sender_test.go
Original file line number Diff line number Diff line change
@@ -32,8 +32,9 @@ func Test_CheckNonZeroAddress_Encode(t *testing.T) {
target := setupCheckNonZeroSender()
buffer := &bytes.Buffer{}

target.Encode(buffer)
err := target.Encode(buffer)

assert.NoError(t, err)
assert.Equal(t, 0, buffer.Len())
assert.Equal(t, &bytes.Buffer{}, buffer)
}
4 changes: 2 additions & 2 deletions frame/system/extensions/check_nonce.go
Original file line number Diff line number Diff line change
@@ -19,8 +19,8 @@ func NewCheckNonce(systemModule system.Module) CheckNonce {
return CheckNonce{systemModule: systemModule}
}

func (cn CheckNonce) Encode(buffer *bytes.Buffer) {
sc.ToCompact(cn.nonce).Encode(buffer)
func (cn CheckNonce) Encode(buffer *bytes.Buffer) error {
return sc.ToCompact(cn.nonce).Encode(buffer)
}

func (cn *CheckNonce) Decode(buffer *bytes.Buffer) error {
6 changes: 4 additions & 2 deletions frame/system/extensions/check_nonce_test.go
Original file line number Diff line number Diff line change
@@ -30,16 +30,18 @@ func Test_CheckNonce_Encode(t *testing.T) {
target := setupCheckNonce()
target.nonce = nonce

target.Encode(buffer)
err := target.Encode(buffer)

assert.NoError(t, err)
assert.Equal(t, sc.ToCompact(nonce).Bytes(), buffer.Bytes())
}

func Test_CheckNonce_Empty(t *testing.T) {
buffer := &bytes.Buffer{}

setupCheckNonce().Encode(buffer)
err := setupCheckNonce().Encode(buffer)

assert.NoError(t, err)
assert.Equal(t, sc.ToCompact(sc.U32(0)).Bytes(), buffer.Bytes())
}

4 changes: 3 additions & 1 deletion frame/system/extensions/check_spec_version.go
Original file line number Diff line number Diff line change
@@ -19,7 +19,9 @@ func NewCheckSpecVersion(systemModule system.Module) CheckSpecVersion {
}
}

func (csv CheckSpecVersion) Encode(*bytes.Buffer) {}
func (csv CheckSpecVersion) Encode(*bytes.Buffer) error {
return nil
}

func (csv CheckSpecVersion) Decode(*bytes.Buffer) error { return nil }

3 changes: 2 additions & 1 deletion frame/system/extensions/check_spec_version_test.go
Original file line number Diff line number Diff line change
@@ -31,8 +31,9 @@ func Test_CheckSpecVersion_Encode(t *testing.T) {
target := setupCheckSpecVersion()
buffer := &bytes.Buffer{}

target.Encode(buffer)
err := target.Encode(buffer)

assert.NoError(t, err)
assert.Equal(t, 0, buffer.Len())
assert.Equal(t, &bytes.Buffer{}, buffer)
}
4 changes: 3 additions & 1 deletion frame/system/extensions/check_tx_version.go
Original file line number Diff line number Diff line change
@@ -19,7 +19,9 @@ func NewCheckTxVersion(module system.Module) CheckTxVersion {
}
}

func (ctv CheckTxVersion) Encode(*bytes.Buffer) {}
func (ctv CheckTxVersion) Encode(*bytes.Buffer) error {
return nil
}

func (ctv CheckTxVersion) Decode(*bytes.Buffer) error { return nil }

3 changes: 2 additions & 1 deletion frame/system/extensions/check_tx_version_test.go
Original file line number Diff line number Diff line change
@@ -31,8 +31,9 @@ func Test_CheckTxVersion_Encode(t *testing.T) {
target := setupCheckTxVersion()
buffer := &bytes.Buffer{}

target.Encode(buffer)
err := target.Encode(buffer)

assert.NoError(t, err)
assert.Equal(t, 0, buffer.Len())
assert.Equal(t, &bytes.Buffer{}, buffer)
}
Loading

0 comments on commit 7522edb

Please sign in to comment.