Merge remote-tracking branch 'origin/testnet/3' into feat/4stage-seal

This commit is contained in:
Łukasz Magiera
2020-03-04 04:01:13 +01:00
38 changed files with 855 additions and 497 deletions
+33 -15
View File
@@ -5,10 +5,10 @@ package types
import (
"fmt"
"io"
"math"
"github.com/filecoin-project/specs-actors/actors/abi"
"github.com/filecoin-project/specs-actors/actors/crypto"
"github.com/filecoin-project/specs-actors/actors/runtime/exitcode"
"github.com/ipfs/go-cid"
cbg "github.com/whyrusleeping/cbor-gen"
xerrors "golang.org/x/xerrors"
@@ -1020,9 +1020,15 @@ func (t *MessageReceipt) MarshalCBOR(w io.Writer) error {
return err
}
// t.ExitCode (uint8) (uint8)
if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajUnsignedInt, uint64(t.ExitCode))); err != nil {
return err
// t.ExitCode (exitcode.ExitCode) (int64)
if t.ExitCode >= 0 {
if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajUnsignedInt, uint64(t.ExitCode))); err != nil {
return err
}
} else {
if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajNegativeInt, uint64(-t.ExitCode)-1)); err != nil {
return err
}
}
// t.Return ([]uint8) (slice)
@@ -1059,19 +1065,31 @@ func (t *MessageReceipt) UnmarshalCBOR(r io.Reader) error {
return fmt.Errorf("cbor input had wrong number of fields")
}
// t.ExitCode (uint8) (uint8)
// t.ExitCode (exitcode.ExitCode) (int64)
{
maj, extra, err := cbg.CborReadHeader(br)
var extraI int64
if err != nil {
return err
}
switch maj {
case cbg.MajUnsignedInt:
extraI = int64(extra)
if extraI < 0 {
return fmt.Errorf("int64 positive overflow")
}
case cbg.MajNegativeInt:
extraI = int64(extra)
if extraI < 0 {
return fmt.Errorf("int64 negative oveflow")
}
extraI = -1 - extraI
default:
return fmt.Errorf("wrong type for int64 field: %d", maj)
}
maj, extra, err = cbg.CborReadHeader(br)
if err != nil {
return err
t.ExitCode = exitcode.ExitCode(extraI)
}
if maj != cbg.MajUnsignedInt {
return fmt.Errorf("wrong type for uint8 field")
}
if extra > math.MaxUint8 {
return fmt.Errorf("integer in input was too large for uint8 field")
}
t.ExitCode = uint8(extra)
// t.Return ([]uint8) (slice)
maj, extra, err = cbg.CborReadHeader(br)
+3 -1
View File
@@ -2,10 +2,12 @@ package types
import (
"bytes"
"github.com/filecoin-project/specs-actors/actors/runtime/exitcode"
)
type MessageReceipt struct {
ExitCode uint8
ExitCode exitcode.ExitCode
Return []byte
GasUsed BigInt
}