finish up making the new serializations work

This commit is contained in:
whyrusleeping 2019-09-10 16:03:17 -07:00
parent 2f019158d0
commit a47969c76b
21 changed files with 712 additions and 262 deletions

View File

@ -183,6 +183,8 @@ func (ias *InitActorState) AddActor(cst *hamt.CborIpldStore, addr address.Addres
nid := ias.NextID nid := ias.NextID
ias.NextID++ ias.NextID++
fmt.Println("ADD ACTOR: ", addr.String())
amap, err := hamt.LoadNode(context.TODO(), cst, ias.AddressMap) amap, err := hamt.LoadNode(context.TODO(), cst, ias.AddressMap)
if err != nil { if err != nil {
return address.Undef, err return address.Undef, err

View File

@ -5,6 +5,7 @@ import (
cbor "github.com/ipfs/go-ipld-cbor" cbor "github.com/ipfs/go-ipld-cbor"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
cbg "github.com/whyrusleeping/cbor-gen"
"github.com/filecoin-project/go-lotus/chain/actors" "github.com/filecoin-project/go-lotus/chain/actors"
"github.com/filecoin-project/go-lotus/chain/address" "github.com/filecoin-project/go-lotus/chain/address"
@ -23,7 +24,7 @@ func TestMultiSigCreate(t *testing.T) {
h := NewHarness(t, opts...) h := NewHarness(t, opts...)
ret, _ := h.CreateActor(t, creatorAddr, actors.MultisigActorCodeCid, ret, _ := h.CreateActor(t, creatorAddr, actors.MultisigActorCodeCid,
actors.MultiSigConstructorParams{ &actors.MultiSigConstructorParams{
Signers: []address.Address{creatorAddr, sig1Addr, sig2Addr}, Signers: []address.Address{creatorAddr, sig1Addr, sig2Addr},
Required: 2, Required: 2,
}) })
@ -49,8 +50,8 @@ func TestMultiSigOps(t *testing.T) {
HarnessAddr(&sig2Addr, 100000), HarnessAddr(&sig2Addr, 100000),
HarnessAddr(&outsideAddr, 100000), HarnessAddr(&outsideAddr, 100000),
HarnessActor(&multSigAddr, &creatorAddr, actors.MultisigActorCodeCid, HarnessActor(&multSigAddr, &creatorAddr, actors.MultisigActorCodeCid,
func() interface{} { func() cbg.CBORMarshaler {
return actors.MultiSigConstructorParams{ return &actors.MultiSigConstructorParams{
Signers: []address.Address{creatorAddr, sig1Addr, sig2Addr}, Signers: []address.Address{creatorAddr, sig1Addr, sig2Addr},
Required: 2, Required: 2,
} }
@ -71,8 +72,7 @@ func TestMultiSigOps(t *testing.T) {
// Transfer funds outside of multsig // Transfer funds outside of multsig
const sendVal = 1000 const sendVal = 1000
ret, _ := h.Invoke(t, creatorAddr, multSigAddr, actors.MultiSigMethods.Propose, ret, _ := h.Invoke(t, creatorAddr, multSigAddr, actors.MultiSigMethods.Propose,
&actors.MultiSigProposeParams{
actors.MultiSigProposeParams{
To: outsideAddr, To: outsideAddr,
Value: types.NewInt(sendVal), Value: types.NewInt(sendVal),
}) })
@ -82,12 +82,12 @@ func TestMultiSigOps(t *testing.T) {
assert.NoError(t, err, "decoding txid") assert.NoError(t, err, "decoding txid")
ret, _ = h.Invoke(t, outsideAddr, multSigAddr, actors.MultiSigMethods.Approve, ret, _ = h.Invoke(t, outsideAddr, multSigAddr, actors.MultiSigMethods.Approve,
txIDParam) &txIDParam)
assert.Equal(t, uint8(1), ret.ExitCode, "outsideAddr should not approve") assert.Equal(t, uint8(1), ret.ExitCode, "outsideAddr should not approve")
h.AssertBalanceChange(t, multSigAddr, 0) h.AssertBalanceChange(t, multSigAddr, 0)
ret2, _ := h.Invoke(t, sig1Addr, multSigAddr, actors.MultiSigMethods.Approve, ret2, _ := h.Invoke(t, sig1Addr, multSigAddr, actors.MultiSigMethods.Approve,
txIDParam) &txIDParam)
ApplyOK(t, ret2) ApplyOK(t, ret2)
h.AssertBalanceChange(t, outsideAddr, sendVal) h.AssertBalanceChange(t, outsideAddr, sendVal)

View File

@ -113,6 +113,7 @@ func (pca PaymentChannelActor) UpdateChannelState(act *types.Actor, vmctx types.
} }
if err := vmctx.VerifySignature(sv.Signature, self.From, vb); err != nil { if err := vmctx.VerifySignature(sv.Signature, self.From, vb); err != nil {
fmt.Printf("bad bits: %x", vb)
return nil, err return nil, err
} }
@ -120,7 +121,7 @@ func (pca PaymentChannelActor) UpdateChannelState(act *types.Actor, vmctx types.
return nil, aerrors.New(2, "cannot use this voucher yet!") return nil, aerrors.New(2, "cannot use this voucher yet!")
} }
if sv.SecretPreimage != nil { if len(sv.SecretPreimage) > 0 {
if !bytes.Equal(hash(params.Secret), sv.SecretPreimage) { if !bytes.Equal(hash(params.Secret), sv.SecretPreimage) {
return nil, aerrors.New(3, "incorrect secret!") return nil, aerrors.New(3, "incorrect secret!")
} }

View File

@ -2,6 +2,7 @@ package actors_test
import ( import (
"context" "context"
"fmt"
"testing" "testing"
"github.com/filecoin-project/go-lotus/chain/actors" "github.com/filecoin-project/go-lotus/chain/actors"
@ -19,7 +20,7 @@ func TestPaychCreate(t *testing.T) {
h := NewHarness(t, opts...) h := NewHarness(t, opts...)
ret, _ := h.CreateActor(t, creatorAddr, actors.PaymentChannelActorCodeCid, ret, _ := h.CreateActor(t, creatorAddr, actors.PaymentChannelActorCodeCid,
actors.PCAConstructorParams{ &actors.PCAConstructorParams{
To: targetAddr, To: targetAddr,
}) })
ApplyOK(t, ret) ApplyOK(t, ret)
@ -36,6 +37,7 @@ func signVoucher(t *testing.T, w *wallet.Wallet, addr address.Address, sv *types
t.Fatal(err) t.Fatal(err)
} }
fmt.Printf("SIGNING: %x\n", vb)
sv.Signature = sig sv.Signature = sig
} }
@ -48,7 +50,7 @@ func TestPaychUpdate(t *testing.T) {
h := NewHarness(t, opts...) h := NewHarness(t, opts...)
ret, _ := h.CreateActor(t, creatorAddr, actors.PaymentChannelActorCodeCid, ret, _ := h.CreateActor(t, creatorAddr, actors.PaymentChannelActorCodeCid,
actors.PCAConstructorParams{ &actors.PCAConstructorParams{
To: targetAddr, To: targetAddr,
}) })
ApplyOK(t, ret) ApplyOK(t, ret)
@ -66,12 +68,12 @@ func TestPaychUpdate(t *testing.T) {
} }
signVoucher(t, h.w, creatorAddr, sv) signVoucher(t, h.w, creatorAddr, sv)
ret, _ = h.Invoke(t, targetAddr, pch, actors.PCAMethods.UpdateChannelState, actors.PCAUpdateChannelStateParams{ ret, _ = h.Invoke(t, targetAddr, pch, actors.PCAMethods.UpdateChannelState, &actors.PCAUpdateChannelStateParams{
Sv: *sv, Sv: *sv,
}) })
ApplyOK(t, ret) ApplyOK(t, ret)
ret, _ = h.Invoke(t, targetAddr, pch, actors.PCAMethods.GetToSend, struct{}{}) ret, _ = h.Invoke(t, targetAddr, pch, actors.PCAMethods.GetToSend, nil)
ApplyOK(t, ret) ApplyOK(t, ret)
bi := types.BigFromBytes(ret.Return) bi := types.BigFromBytes(ret.Return)
@ -79,13 +81,13 @@ func TestPaychUpdate(t *testing.T) {
t.Fatal("toSend amount was wrong: ", bi.String()) t.Fatal("toSend amount was wrong: ", bi.String())
} }
ret, _ = h.Invoke(t, targetAddr, pch, actors.PCAMethods.Close, struct{}{}) ret, _ = h.Invoke(t, targetAddr, pch, actors.PCAMethods.Close, nil)
ApplyOK(t, ret) ApplyOK(t, ret)
// now we have to 'wait' for the chain to advance. // now we have to 'wait' for the chain to advance.
h.vm.SetBlockHeight(1000) h.vm.SetBlockHeight(1000)
ret, _ = h.Invoke(t, targetAddr, pch, actors.PCAMethods.Collect, struct{}{}) ret, _ = h.Invoke(t, targetAddr, pch, actors.PCAMethods.Collect, nil)
ApplyOK(t, ret) ApplyOK(t, ret)
h.AssertBalanceChange(t, targetAddr, 100) h.AssertBalanceChange(t, targetAddr, 100)

View File

@ -13,11 +13,6 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
func TestDumpEmpyStruct(t *testing.T) {
res, err := SerializeParams(struct{}{})
t.Logf("res: %x, err: %+v", res, err)
}
func TestStorageMarketCreateMiner(t *testing.T) { func TestStorageMarketCreateMiner(t *testing.T) {
var ownerAddr, workerAddr address.Address var ownerAddr, workerAddr address.Address
@ -31,7 +26,7 @@ func TestStorageMarketCreateMiner(t *testing.T) {
var minerAddr address.Address var minerAddr address.Address
{ {
ret, _ := h.Invoke(t, ownerAddr, StorageMarketAddress, SMAMethods.CreateStorageMiner, ret, _ := h.Invoke(t, ownerAddr, StorageMarketAddress, SMAMethods.CreateStorageMiner,
CreateStorageMinerParams{ &CreateStorageMinerParams{
Owner: ownerAddr, Owner: ownerAddr,
Worker: workerAddr, Worker: workerAddr,
SectorSize: types.NewInt(build.SectorSize), SectorSize: types.NewInt(build.SectorSize),
@ -45,7 +40,7 @@ func TestStorageMarketCreateMiner(t *testing.T) {
{ {
ret, _ := h.Invoke(t, ownerAddr, StorageMarketAddress, SMAMethods.IsMiner, ret, _ := h.Invoke(t, ownerAddr, StorageMarketAddress, SMAMethods.IsMiner,
IsMinerParam{Addr: minerAddr}) &IsMinerParam{Addr: minerAddr})
ApplyOK(t, ret) ApplyOK(t, ret)
var output bool var output bool
@ -61,7 +56,7 @@ func TestStorageMarketCreateMiner(t *testing.T) {
{ {
ret, _ := h.Invoke(t, ownerAddr, StorageMarketAddress, SMAMethods.PowerLookup, ret, _ := h.Invoke(t, ownerAddr, StorageMarketAddress, SMAMethods.PowerLookup,
PowerLookupParams{Miner: minerAddr}) &PowerLookupParams{Miner: minerAddr})
ApplyOK(t, ret) ApplyOK(t, ret)
power := types.BigFromBytes(ret.Return) power := types.BigFromBytes(ret.Return)

View File

@ -3,9 +3,10 @@ package actors_test
import ( import (
"context" "context"
"encoding/binary" "encoding/binary"
"github.com/filecoin-project/go-lotus/build"
"testing" "testing"
"github.com/filecoin-project/go-lotus/build"
. "github.com/filecoin-project/go-lotus/chain/actors" . "github.com/filecoin-project/go-lotus/chain/actors"
"github.com/filecoin-project/go-lotus/chain/address" "github.com/filecoin-project/go-lotus/chain/address"
"github.com/filecoin-project/go-lotus/chain/gen" "github.com/filecoin-project/go-lotus/chain/gen"
@ -14,7 +15,6 @@ import (
"github.com/filecoin-project/go-lotus/chain/vm" "github.com/filecoin-project/go-lotus/chain/vm"
dstore "github.com/ipfs/go-datastore" dstore "github.com/ipfs/go-datastore"
bstore "github.com/ipfs/go-ipfs-blockstore" bstore "github.com/ipfs/go-ipfs-blockstore"
cbor "github.com/ipfs/go-ipld-cbor"
) )
func blsaddr(n uint64) address.Address { func blsaddr(n uint64) address.Address {
@ -62,7 +62,8 @@ func TestVMInvokeMethod(t *testing.T) {
vm, addrs := setupVMTestEnv(t) vm, addrs := setupVMTestEnv(t)
from := addrs[0] from := addrs[0]
cenc, err := cbor.DumpObject(StorageMinerConstructorParams{}) var err error
cenc, err := SerializeParams(&StorageMinerConstructorParams{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -71,7 +72,7 @@ func TestVMInvokeMethod(t *testing.T) {
Code: StorageMinerCodeCid, Code: StorageMinerCodeCid,
Params: cenc, Params: cenc,
} }
enc, err := cbor.DumpObject(execparams) enc, err := SerializeParams(execparams)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -115,7 +116,8 @@ func TestStorageMarketActorCreateMiner(t *testing.T) {
SectorSize: types.NewInt(build.SectorSize), SectorSize: types.NewInt(build.SectorSize),
PeerID: "fakepeerid", PeerID: "fakepeerid",
} }
enc, err := cbor.DumpObject(params) var err error
enc, err := SerializeParams(params)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,7 @@
package actors_test package actors_test
import ( import (
"bytes"
"context" "context"
"testing" "testing"
@ -9,7 +10,7 @@ import (
hamt "github.com/ipfs/go-hamt-ipld" hamt "github.com/ipfs/go-hamt-ipld"
blockstore "github.com/ipfs/go-ipfs-blockstore" blockstore "github.com/ipfs/go-ipfs-blockstore"
bstore "github.com/ipfs/go-ipfs-blockstore" bstore "github.com/ipfs/go-ipfs-blockstore"
cbor "github.com/ipfs/go-ipld-cbor" cbg "github.com/whyrusleeping/cbor-gen"
"golang.org/x/xerrors" "golang.org/x/xerrors"
"github.com/filecoin-project/go-lotus/chain/actors" "github.com/filecoin-project/go-lotus/chain/actors"
@ -91,7 +92,7 @@ func HarnessMiner(addr *address.Address) HarnessOpt {
} }
} }
func HarnessActor(actor *address.Address, creator *address.Address, code cid.Cid, params func() interface{}) HarnessOpt { func HarnessActor(actor *address.Address, creator *address.Address, code cid.Cid, params func() cbg.CBORMarshaler) HarnessOpt {
return func(t testing.TB, h *Harness) error { return func(t testing.TB, h *Harness) error {
if h.Stage != HarnessPostInit { if h.Stage != HarnessPostInit {
return nil return nil
@ -205,7 +206,7 @@ func (h *Harness) Apply(t testing.TB, msg types.Message) (*vm.ApplyRet, *state.S
} }
func (h *Harness) CreateActor(t testing.TB, from address.Address, func (h *Harness) CreateActor(t testing.TB, from address.Address,
code cid.Cid, params interface{}) (*vm.ApplyRet, *state.StateTree) { code cid.Cid, params cbg.CBORMarshaler) (*vm.ApplyRet, *state.StateTree) {
t.Helper() t.Helper()
return h.Apply(t, types.Message{ return h.Apply(t, types.Message{
@ -237,7 +238,7 @@ func (h *Harness) SendFunds(t testing.TB, from address.Address, to address.Addre
} }
func (h *Harness) Invoke(t testing.TB, from address.Address, to address.Address, func (h *Harness) Invoke(t testing.TB, from address.Address, to address.Address,
method uint64, params interface{}) (*vm.ApplyRet, *state.StateTree) { method uint64, params cbg.CBORMarshaler) (*vm.ApplyRet, *state.StateTree) {
t.Helper() t.Helper()
return h.Apply(t, types.Message{ return h.Apply(t, types.Message{
To: to, To: to,
@ -297,11 +298,14 @@ func (h *Harness) AssertBalanceChange(t testing.TB, addr address.Address, amt in
} }
} }
func DumpObject(t testing.TB, obj interface{}) []byte { func DumpObject(t testing.TB, obj cbg.CBORMarshaler) []byte {
if obj == nil {
return nil
}
t.Helper() t.Helper()
enc, err := cbor.DumpObject(obj) b := new(bytes.Buffer)
if err != nil { if err := obj.MarshalCBOR(b); err != nil {
t.Fatalf("dumping params: %+v", err) t.Fatalf("dumping params: %+v", err)
} }
return enc return b.Bytes()
} }

View File

@ -67,7 +67,7 @@ func (m mybs) Get(c cid.Cid) (block.Block, error) {
b, err := m.Blockstore.Get(c) b, err := m.Blockstore.Get(c)
if err != nil { if err != nil {
// change to error for stacktraces, don't commit with that pls // change to error for stacktraces, don't commit with that pls
log.Warnf("Get failed: %s %s", c, err) //log.Warnf("Get failed: %s %s", c, err)
return nil, err return nil, err
} }
@ -119,6 +119,7 @@ func NewGenerator() (*ChainGen, error) {
if err != nil { if err != nil {
return nil, xerrors.Errorf("failed to generate receiver key: %w", err) return nil, xerrors.Errorf("failed to generate receiver key: %w", err)
} }
fmt.Println("RECEIVER KEY: ", receievers[r].String())
} }
minercfg := &GenMinerCfg{ minercfg := &GenMinerCfg{

View File

@ -55,8 +55,6 @@ func SetupInitActor(bs bstore.Blockstore, addrs []address.Address) (*types.Actor
return nil, err return nil, err
} }
fmt.Println("INIT ACTOR HEAD: ", statecid)
act := &types.Actor{ act := &types.Actor{
Code: actors.InitActorCodeCid, Code: actors.InitActorCodeCid,
Head: statecid, Head: statecid,

View File

@ -61,8 +61,6 @@ func (st *StateTree) SetActor(addr address.Address, act *types.Actor) error {
if act == cact { if act == cact {
return nil return nil
} }
} else {
st.actorcache[addr] = act
} }
return st.root.Set(context.TODO(), string(addr.Bytes()), act) return st.root.Set(context.TODO(), string(addr.Bytes()), act)
@ -91,7 +89,7 @@ func (st *StateTree) GetActor(addr address.Address) (*types.Actor, error) {
iaddr, err := st.lookupID(addr) iaddr, err := st.lookupID(addr)
if err != nil { if err != nil {
if xerrors.Is(err, hamt.ErrNotFound) { if xerrors.Is(err, hamt.ErrNotFound) {
return nil, xerrors.Errorf("lookup failed: %w", types.ErrActorNotFound) return nil, xerrors.Errorf("resolution lookup failed (%s): %w", addr, types.ErrActorNotFound)
} }
return nil, xerrors.Errorf("address resolution: %w", err) return nil, xerrors.Errorf("address resolution: %w", err)
} }

View File

@ -14,6 +14,10 @@ import (
var _ = xerrors.Errorf var _ = xerrors.Errorf
func (t *BlockHeader) MarshalCBOR(w io.Writer) error { func (t *BlockHeader) MarshalCBOR(w io.Writer) error {
if t == nil {
_, err := w.Write(cbg.CborNull)
return err
}
if _, err := w.Write([]byte{140}); err != nil { if _, err := w.Write([]byte{140}); err != nil {
return err return err
} }
@ -23,7 +27,7 @@ func (t *BlockHeader) MarshalCBOR(w io.Writer) error {
return err return err
} }
// t.t.Tickets ([]*Ticket) // t.t.Tickets ([]*types.Ticket)
if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajArray, uint64(len(t.Tickets)))); err != nil { if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajArray, uint64(len(t.Tickets)))); err != nil {
return err return err
} }
@ -51,7 +55,7 @@ func (t *BlockHeader) MarshalCBOR(w io.Writer) error {
} }
} }
// t.t.ParentWeight (BigInt) // t.t.ParentWeight (types.BigInt)
if err := t.ParentWeight.MarshalCBOR(w); err != nil { if err := t.ParentWeight.MarshalCBOR(w); err != nil {
return err return err
} }
@ -71,7 +75,7 @@ func (t *BlockHeader) MarshalCBOR(w io.Writer) error {
return xerrors.Errorf("failed to write cid field t.Messages: %w", err) return xerrors.Errorf("failed to write cid field t.Messages: %w", err)
} }
// t.t.BLSAggregate (Signature) // t.t.BLSAggregate (types.Signature)
if err := t.BLSAggregate.MarshalCBOR(w); err != nil { if err := t.BLSAggregate.MarshalCBOR(w); err != nil {
return err return err
} }
@ -86,14 +90,15 @@ func (t *BlockHeader) MarshalCBOR(w io.Writer) error {
return err return err
} }
// t.t.BlockSig (Signature) // t.t.BlockSig (types.Signature)
if err := t.BlockSig.MarshalCBOR(w); err != nil { if err := t.BlockSig.MarshalCBOR(w); err != nil {
return err return err
} }
return nil return nil
} }
func (t *BlockHeader) UnmarshalCBOR(br io.Reader) error { func (t *BlockHeader) UnmarshalCBOR(r io.Reader) error {
br := cbg.GetPeeker(r)
maj, extra, err := cbg.CborReadHeader(br) maj, extra, err := cbg.CborReadHeader(br)
if err != nil { if err != nil {
@ -109,10 +114,14 @@ func (t *BlockHeader) UnmarshalCBOR(br io.Reader) error {
// t.t.Miner (address.Address) // t.t.Miner (address.Address)
if err := t.Miner.UnmarshalCBOR(br); err != nil { {
return err
if err := t.Miner.UnmarshalCBOR(br); err != nil {
return err
}
} }
// t.t.Tickets ([]*Ticket) // t.t.Tickets ([]*types.Ticket)
maj, extra, err = cbg.CborReadHeader(br) maj, extra, err = cbg.CborReadHeader(br)
if err != nil { if err != nil {
@ -179,10 +188,14 @@ func (t *BlockHeader) UnmarshalCBOR(br io.Reader) error {
t.Parents[i] = c t.Parents[i] = c
} }
// t.t.ParentWeight (BigInt) // t.t.ParentWeight (types.BigInt)
{
if err := t.ParentWeight.UnmarshalCBOR(br); err != nil {
return err
}
if err := t.ParentWeight.UnmarshalCBOR(br); err != nil {
return err
} }
// t.t.Height (uint64) // t.t.Height (uint64)
@ -212,10 +225,14 @@ func (t *BlockHeader) UnmarshalCBOR(br io.Reader) error {
} }
t.Messages = c t.Messages = c
} }
// t.t.BLSAggregate (Signature) // t.t.BLSAggregate (types.Signature)
{
if err := t.BLSAggregate.UnmarshalCBOR(br); err != nil {
return err
}
if err := t.BLSAggregate.UnmarshalCBOR(br); err != nil {
return err
} }
// t.t.MessageReceipts (cid.Cid) // t.t.MessageReceipts (cid.Cid)
@ -236,15 +253,23 @@ func (t *BlockHeader) UnmarshalCBOR(br io.Reader) error {
return fmt.Errorf("wrong type for uint64 field") return fmt.Errorf("wrong type for uint64 field")
} }
t.Timestamp = extra t.Timestamp = extra
// t.t.BlockSig (Signature) // t.t.BlockSig (types.Signature)
{
if err := t.BlockSig.UnmarshalCBOR(br); err != nil {
return err
}
if err := t.BlockSig.UnmarshalCBOR(br); err != nil {
return err
} }
return nil return nil
} }
func (t *Ticket) MarshalCBOR(w io.Writer) error { func (t *Ticket) MarshalCBOR(w io.Writer) error {
if t == nil {
_, err := w.Write(cbg.CborNull)
return err
}
if _, err := w.Write([]byte{131}); err != nil { if _, err := w.Write([]byte{131}); err != nil {
return err return err
} }
@ -275,7 +300,8 @@ func (t *Ticket) MarshalCBOR(w io.Writer) error {
return nil return nil
} }
func (t *Ticket) UnmarshalCBOR(br io.Reader) error { func (t *Ticket) UnmarshalCBOR(r io.Reader) error {
br := cbg.GetPeeker(r)
maj, extra, err := cbg.CborReadHeader(br) maj, extra, err := cbg.CborReadHeader(br)
if err != nil { if err != nil {
@ -344,6 +370,10 @@ func (t *Ticket) UnmarshalCBOR(br io.Reader) error {
} }
func (t *Message) MarshalCBOR(w io.Writer) error { func (t *Message) MarshalCBOR(w io.Writer) error {
if t == nil {
_, err := w.Write(cbg.CborNull)
return err
}
if _, err := w.Write([]byte{136}); err != nil { if _, err := w.Write([]byte{136}); err != nil {
return err return err
} }
@ -363,17 +393,17 @@ func (t *Message) MarshalCBOR(w io.Writer) error {
return err return err
} }
// t.t.Value (BigInt) // t.t.Value (types.BigInt)
if err := t.Value.MarshalCBOR(w); err != nil { if err := t.Value.MarshalCBOR(w); err != nil {
return err return err
} }
// t.t.GasPrice (BigInt) // t.t.GasPrice (types.BigInt)
if err := t.GasPrice.MarshalCBOR(w); err != nil { if err := t.GasPrice.MarshalCBOR(w); err != nil {
return err return err
} }
// t.t.GasLimit (BigInt) // t.t.GasLimit (types.BigInt)
if err := t.GasLimit.MarshalCBOR(w); err != nil { if err := t.GasLimit.MarshalCBOR(w); err != nil {
return err return err
} }
@ -393,7 +423,8 @@ func (t *Message) MarshalCBOR(w io.Writer) error {
return nil return nil
} }
func (t *Message) UnmarshalCBOR(br io.Reader) error { func (t *Message) UnmarshalCBOR(r io.Reader) error {
br := cbg.GetPeeker(r)
maj, extra, err := cbg.CborReadHeader(br) maj, extra, err := cbg.CborReadHeader(br)
if err != nil { if err != nil {
@ -409,13 +440,21 @@ func (t *Message) UnmarshalCBOR(br io.Reader) error {
// t.t.To (address.Address) // t.t.To (address.Address)
if err := t.To.UnmarshalCBOR(br); err != nil { {
return err
if err := t.To.UnmarshalCBOR(br); err != nil {
return err
}
} }
// t.t.From (address.Address) // t.t.From (address.Address)
if err := t.From.UnmarshalCBOR(br); err != nil { {
return err
if err := t.From.UnmarshalCBOR(br); err != nil {
return err
}
} }
// t.t.Nonce (uint64) // t.t.Nonce (uint64)
@ -427,20 +466,32 @@ func (t *Message) UnmarshalCBOR(br io.Reader) error {
return fmt.Errorf("wrong type for uint64 field") return fmt.Errorf("wrong type for uint64 field")
} }
t.Nonce = extra t.Nonce = extra
// t.t.Value (BigInt) // t.t.Value (types.BigInt)
{
if err := t.Value.UnmarshalCBOR(br); err != nil {
return err
}
if err := t.Value.UnmarshalCBOR(br); err != nil {
return err
} }
// t.t.GasPrice (BigInt) // t.t.GasPrice (types.BigInt)
{
if err := t.GasPrice.UnmarshalCBOR(br); err != nil {
return err
}
if err := t.GasPrice.UnmarshalCBOR(br); err != nil {
return err
} }
// t.t.GasLimit (BigInt) // t.t.GasLimit (types.BigInt)
{
if err := t.GasLimit.UnmarshalCBOR(br); err != nil {
return err
}
if err := t.GasLimit.UnmarshalCBOR(br); err != nil {
return err
} }
// t.t.Method (uint64) // t.t.Method (uint64)
@ -473,23 +524,28 @@ func (t *Message) UnmarshalCBOR(br io.Reader) error {
} }
func (t *SignedMessage) MarshalCBOR(w io.Writer) error { func (t *SignedMessage) MarshalCBOR(w io.Writer) error {
if t == nil {
_, err := w.Write(cbg.CborNull)
return err
}
if _, err := w.Write([]byte{130}); err != nil { if _, err := w.Write([]byte{130}); err != nil {
return err return err
} }
// t.t.Message (Message) // t.t.Message (types.Message)
if err := t.Message.MarshalCBOR(w); err != nil { if err := t.Message.MarshalCBOR(w); err != nil {
return err return err
} }
// t.t.Signature (Signature) // t.t.Signature (types.Signature)
if err := t.Signature.MarshalCBOR(w); err != nil { if err := t.Signature.MarshalCBOR(w); err != nil {
return err return err
} }
return nil return nil
} }
func (t *SignedMessage) UnmarshalCBOR(br io.Reader) error { func (t *SignedMessage) UnmarshalCBOR(r io.Reader) error {
br := cbg.GetPeeker(r)
maj, extra, err := cbg.CborReadHeader(br) maj, extra, err := cbg.CborReadHeader(br)
if err != nil { if err != nil {
@ -503,20 +559,32 @@ func (t *SignedMessage) UnmarshalCBOR(br io.Reader) error {
return fmt.Errorf("cbor input had wrong number of fields") return fmt.Errorf("cbor input had wrong number of fields")
} }
// t.t.Message (Message) // t.t.Message (types.Message)
{
if err := t.Message.UnmarshalCBOR(br); err != nil {
return err
}
if err := t.Message.UnmarshalCBOR(br); err != nil {
return err
} }
// t.t.Signature (Signature) // t.t.Signature (types.Signature)
{
if err := t.Signature.UnmarshalCBOR(br); err != nil {
return err
}
if err := t.Signature.UnmarshalCBOR(br); err != nil {
return err
} }
return nil return nil
} }
func (t *MsgMeta) MarshalCBOR(w io.Writer) error { func (t *MsgMeta) MarshalCBOR(w io.Writer) error {
if t == nil {
_, err := w.Write(cbg.CborNull)
return err
}
if _, err := w.Write([]byte{130}); err != nil { if _, err := w.Write([]byte{130}); err != nil {
return err return err
} }
@ -533,7 +601,8 @@ func (t *MsgMeta) MarshalCBOR(w io.Writer) error {
return nil return nil
} }
func (t *MsgMeta) UnmarshalCBOR(br io.Reader) error { func (t *MsgMeta) UnmarshalCBOR(r io.Reader) error {
br := cbg.GetPeeker(r)
maj, extra, err := cbg.CborReadHeader(br) maj, extra, err := cbg.CborReadHeader(br)
if err != nil { if err != nil {
@ -569,6 +638,10 @@ func (t *MsgMeta) UnmarshalCBOR(br io.Reader) error {
} }
func (t *SignedVoucher) MarshalCBOR(w io.Writer) error { func (t *SignedVoucher) MarshalCBOR(w io.Writer) error {
if t == nil {
_, err := w.Write(cbg.CborNull)
return err
}
if _, err := w.Write([]byte{137}); err != nil { if _, err := w.Write([]byte{137}); err != nil {
return err return err
} }
@ -586,7 +659,7 @@ func (t *SignedVoucher) MarshalCBOR(w io.Writer) error {
return err return err
} }
// t.t.Extra (ModVerifyParams) // t.t.Extra (types.ModVerifyParams)
if err := t.Extra.MarshalCBOR(w); err != nil { if err := t.Extra.MarshalCBOR(w); err != nil {
return err return err
} }
@ -601,7 +674,7 @@ func (t *SignedVoucher) MarshalCBOR(w io.Writer) error {
return err return err
} }
// t.t.Amount (BigInt) // t.t.Amount (types.BigInt)
if err := t.Amount.MarshalCBOR(w); err != nil { if err := t.Amount.MarshalCBOR(w); err != nil {
return err return err
} }
@ -611,7 +684,7 @@ func (t *SignedVoucher) MarshalCBOR(w io.Writer) error {
return err return err
} }
// t.t.Merges ([]Merge) // t.t.Merges ([]types.Merge)
if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajArray, uint64(len(t.Merges)))); err != nil { if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajArray, uint64(len(t.Merges)))); err != nil {
return err return err
} }
@ -621,14 +694,15 @@ func (t *SignedVoucher) MarshalCBOR(w io.Writer) error {
} }
} }
// t.t.Signature (Signature) // t.t.Signature (types.Signature)
if err := t.Signature.MarshalCBOR(w); err != nil { if err := t.Signature.MarshalCBOR(w); err != nil {
return err return err
} }
return nil return nil
} }
func (t *SignedVoucher) UnmarshalCBOR(br io.Reader) error { func (t *SignedVoucher) UnmarshalCBOR(r io.Reader) error {
br := cbg.GetPeeker(r)
maj, extra, err := cbg.CborReadHeader(br) maj, extra, err := cbg.CborReadHeader(br)
if err != nil { if err != nil {
@ -669,12 +743,26 @@ func (t *SignedVoucher) UnmarshalCBOR(br io.Reader) error {
if _, err := io.ReadFull(br, t.SecretPreimage); err != nil { if _, err := io.ReadFull(br, t.SecretPreimage); err != nil {
return err return err
} }
// t.t.Extra (ModVerifyParams) // t.t.Extra (types.ModVerifyParams)
t.Extra = new(ModVerifyParams) {
pb, err := br.PeekByte()
if err != nil {
return err
}
if pb == cbg.CborNull[0] {
var nbuf [1]byte
if _, err := br.Read(nbuf[:]); err != nil {
return err
}
} else {
t.Extra = new(ModVerifyParams)
if err := t.Extra.UnmarshalCBOR(br); err != nil {
return err
}
}
if err := t.Extra.UnmarshalCBOR(br); err != nil {
return err
} }
// t.t.Lane (uint64) // t.t.Lane (uint64)
@ -696,10 +784,14 @@ func (t *SignedVoucher) UnmarshalCBOR(br io.Reader) error {
return fmt.Errorf("wrong type for uint64 field") return fmt.Errorf("wrong type for uint64 field")
} }
t.Nonce = extra t.Nonce = extra
// t.t.Amount (BigInt) // t.t.Amount (types.BigInt)
{
if err := t.Amount.UnmarshalCBOR(br); err != nil {
return err
}
if err := t.Amount.UnmarshalCBOR(br); err != nil {
return err
} }
// t.t.MinCloseHeight (uint64) // t.t.MinCloseHeight (uint64)
@ -711,7 +803,7 @@ func (t *SignedVoucher) UnmarshalCBOR(br io.Reader) error {
return fmt.Errorf("wrong type for uint64 field") return fmt.Errorf("wrong type for uint64 field")
} }
t.MinCloseHeight = extra t.MinCloseHeight = extra
// t.t.Merges ([]Merge) // t.t.Merges ([]types.Merge)
maj, extra, err = cbg.CborReadHeader(br) maj, extra, err = cbg.CborReadHeader(br)
if err != nil { if err != nil {
@ -736,17 +828,35 @@ func (t *SignedVoucher) UnmarshalCBOR(br io.Reader) error {
t.Merges[i] = v t.Merges[i] = v
} }
// t.t.Signature (Signature) // t.t.Signature (types.Signature)
t.Signature = new(Signature) {
pb, err := br.PeekByte()
if err != nil {
return err
}
if pb == cbg.CborNull[0] {
var nbuf [1]byte
if _, err := br.Read(nbuf[:]); err != nil {
return err
}
} else {
t.Signature = new(Signature)
if err := t.Signature.UnmarshalCBOR(br); err != nil {
return err
}
}
if err := t.Signature.UnmarshalCBOR(br); err != nil {
return err
} }
return nil return nil
} }
func (t *ModVerifyParams) MarshalCBOR(w io.Writer) error { func (t *ModVerifyParams) MarshalCBOR(w io.Writer) error {
if t == nil {
_, err := w.Write(cbg.CborNull)
return err
}
if _, err := w.Write([]byte{131}); err != nil { if _, err := w.Write([]byte{131}); err != nil {
return err return err
} }
@ -771,7 +881,8 @@ func (t *ModVerifyParams) MarshalCBOR(w io.Writer) error {
return nil return nil
} }
func (t *ModVerifyParams) UnmarshalCBOR(br io.Reader) error { func (t *ModVerifyParams) UnmarshalCBOR(r io.Reader) error {
br := cbg.GetPeeker(r)
maj, extra, err := cbg.CborReadHeader(br) maj, extra, err := cbg.CborReadHeader(br)
if err != nil { if err != nil {
@ -787,8 +898,12 @@ func (t *ModVerifyParams) UnmarshalCBOR(br io.Reader) error {
// t.t.Actor (address.Address) // t.t.Actor (address.Address)
if err := t.Actor.UnmarshalCBOR(br); err != nil { {
return err
if err := t.Actor.UnmarshalCBOR(br); err != nil {
return err
}
} }
// t.t.Method (uint64) // t.t.Method (uint64)
@ -821,6 +936,10 @@ func (t *ModVerifyParams) UnmarshalCBOR(br io.Reader) error {
} }
func (t *Merge) MarshalCBOR(w io.Writer) error { func (t *Merge) MarshalCBOR(w io.Writer) error {
if t == nil {
_, err := w.Write(cbg.CborNull)
return err
}
if _, err := w.Write([]byte{130}); err != nil { if _, err := w.Write([]byte{130}); err != nil {
return err return err
} }
@ -837,7 +956,8 @@ func (t *Merge) MarshalCBOR(w io.Writer) error {
return nil return nil
} }
func (t *Merge) UnmarshalCBOR(br io.Reader) error { func (t *Merge) UnmarshalCBOR(r io.Reader) error {
br := cbg.GetPeeker(r)
maj, extra, err := cbg.CborReadHeader(br) maj, extra, err := cbg.CborReadHeader(br)
if err != nil { if err != nil {

View File

@ -6,8 +6,6 @@ import (
"fmt" "fmt"
"io" "io"
cbor "github.com/ipfs/go-ipld-cbor"
"github.com/polydawn/refmt/obj/atlas"
cbg "github.com/whyrusleeping/cbor-gen" cbg "github.com/whyrusleeping/cbor-gen"
) )
@ -25,21 +23,6 @@ const (
IKTBLS IKTBLS
) )
func init() {
cbor.RegisterCborType(atlas.BuildEntry(Signature{}).Transform().
TransformMarshal(atlas.MakeMarshalTransformFunc(
func(s Signature) ([]byte, error) {
buf := make([]byte, 4)
n := binary.PutUvarint(buf, uint64(s.TypeCode()))
return append(buf[:n], s.Data...), nil
})).
TransformUnmarshal(atlas.MakeUnmarshalTransformFunc(
func(x []byte) (Signature, error) {
return SignatureFromBytes(x)
})).
Complete())
}
type Signature struct { type Signature struct {
Type string Type string
Data []byte Data []byte
@ -80,6 +63,11 @@ func (s *Signature) TypeCode() int {
} }
func (s *Signature) MarshalCBOR(w io.Writer) error { func (s *Signature) MarshalCBOR(w io.Writer) error {
if s == nil {
_, err := w.Write(cbg.CborNull)
return err
}
header := cbg.CborEncodeMajorType(cbg.MajByteString, uint64(len(s.Data)+1)) header := cbg.CborEncodeMajorType(cbg.MajByteString, uint64(len(s.Data)+1))
if _, err := w.Write(header); err != nil { if _, err := w.Write(header); err != nil {

View File

@ -8,12 +8,6 @@ import (
cbor "github.com/ipfs/go-ipld-cbor" cbor "github.com/ipfs/go-ipld-cbor"
) )
func init() {
cbor.RegisterCborType(Merge{})
cbor.RegisterCborType(SignedVoucher{})
cbor.RegisterCborType(ModVerifyParams{})
}
type SignedVoucher struct { type SignedVoucher struct {
TimeLock uint64 TimeLock uint64
SecretPreimage []byte SecretPreimage []byte
@ -31,16 +25,22 @@ type SignedVoucher struct {
func (sv *SignedVoucher) SigningBytes() ([]byte, error) { func (sv *SignedVoucher) SigningBytes() ([]byte, error) {
osv := *sv osv := *sv
osv.Signature = nil osv.Signature = nil
return cbor.DumpObject(osv)
buf := new(bytes.Buffer)
if err := osv.MarshalCBOR(buf); err != nil {
return nil, err
}
return buf.Bytes(), nil
} }
func (sv *SignedVoucher) EncodedString() (string, error) { func (sv *SignedVoucher) EncodedString() (string, error) {
data, err := cbor.DumpObject(sv) buf := new(bytes.Buffer)
if err != nil { if err := sv.MarshalCBOR(buf); err != nil {
return "", err return "", err
} }
return base64.RawURLEncoding.EncodeToString(data), nil return base64.RawURLEncoding.EncodeToString(buf.Bytes()), nil
} }
func (sv *SignedVoucher) Equals(other *SignedVoucher) bool { func (sv *SignedVoucher) Equals(other *SignedVoucher) bool {

View File

@ -1,11 +1,15 @@
package vm package vm
import ( import (
"fmt"
"io"
"testing" "testing"
cbor "github.com/ipfs/go-ipld-cbor" cbor "github.com/ipfs/go-ipld-cbor"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
cbg "github.com/whyrusleeping/cbor-gen"
"github.com/filecoin-project/go-lotus/chain/actors"
"github.com/filecoin-project/go-lotus/chain/actors/aerrors" "github.com/filecoin-project/go-lotus/chain/actors/aerrors"
"github.com/filecoin-project/go-lotus/chain/types" "github.com/filecoin-project/go-lotus/chain/types"
) )
@ -15,6 +19,25 @@ type basicParams struct {
B byte B byte
} }
func (b *basicParams) MarshalCBOR(w io.Writer) error {
_, err := w.Write(cbg.CborEncodeMajorType(cbg.MajUnsignedInt, uint64(b.B)))
return err
}
func (b *basicParams) UnmarshalCBOR(r io.Reader) error {
maj, val, err := cbg.CborReadHeader(r)
if err != nil {
return err
}
if maj != cbg.MajUnsignedInt {
return fmt.Errorf("bad cbor type")
}
b.B = byte(val)
return nil
}
func init() { func init() {
cbor.RegisterCborType(basicParams{}) cbor.RegisterCborType(basicParams{})
} }
@ -39,6 +62,7 @@ func (basicContract) InvokeSomething0(act *types.Actor, vmctx types.VMContext,
params *basicParams) ([]byte, aerrors.ActorError) { params *basicParams) ([]byte, aerrors.ActorError) {
return nil, aerrors.New(params.B, "params.B") return nil, aerrors.New(params.B, "params.B")
} }
func (basicContract) BadParam(act *types.Actor, vmctx types.VMContext, func (basicContract) BadParam(act *types.Actor, vmctx types.VMContext,
params *basicParams) ([]byte, aerrors.ActorError) { params *basicParams) ([]byte, aerrors.ActorError) {
return nil, aerrors.New(255, "bad params") return nil, aerrors.New(255, "bad params")
@ -55,7 +79,7 @@ func TestInvokerBasic(t *testing.T) {
assert.NoError(t, err) assert.NoError(t, err)
{ {
bParam, err := cbor.DumpObject(basicParams{B: 1}) bParam, err := actors.SerializeParams(&basicParams{B: 1})
assert.NoError(t, err) assert.NoError(t, err)
_, aerr := code[0](nil, &VMContext{}, bParam) _, aerr := code[0](nil, &VMContext{}, bParam)
@ -67,7 +91,7 @@ func TestInvokerBasic(t *testing.T) {
} }
{ {
bParam, err := cbor.DumpObject(basicParams{B: 2}) bParam, err := actors.SerializeParams(&basicParams{B: 2})
assert.NoError(t, err) assert.NoError(t, err)
_, aerr := code[10](nil, &VMContext{}, bParam) _, aerr := code[10](nil, &VMContext{}, bParam)
@ -77,7 +101,7 @@ func TestInvokerBasic(t *testing.T) {
} }
} }
_, aerr := code[1](nil, &VMContext{}, []byte{0}) _, aerr := code[1](nil, &VMContext{}, []byte{99})
if aerrors.IsFatal(aerr) { if aerrors.IsFatal(aerr) {
t.Fatal("err should not be fatal") t.Fatal("err should not be fatal")
} }

View File

@ -2,9 +2,9 @@ package vm
import ( import (
"context" "context"
"fmt"
"github.com/filecoin-project/go-lotus/chain/actors" "github.com/filecoin-project/go-lotus/chain/actors"
"github.com/filecoin-project/go-lotus/chain/actors/aerrors"
"github.com/filecoin-project/go-lotus/chain/address" "github.com/filecoin-project/go-lotus/chain/address"
"github.com/filecoin-project/go-lotus/chain/state" "github.com/filecoin-project/go-lotus/chain/state"
"github.com/filecoin-project/go-lotus/chain/types" "github.com/filecoin-project/go-lotus/chain/types"
@ -27,42 +27,41 @@ func init() {
var EmptyObjectCid cid.Cid var EmptyObjectCid cid.Cid
func TryCreateAccountActor(st *state.StateTree, addr address.Address) (*types.Actor, error) { func TryCreateAccountActor(st *state.StateTree, addr address.Address) (*types.Actor, aerrors.ActorError) {
act, err := makeActor(st, addr) act, err := makeActor(st, addr)
if err != nil { if err != nil {
return nil, err return nil, err
} }
_, err = st.RegisterNewAddress(addr, act) if _, err := st.RegisterNewAddress(addr, act); err != nil {
if err != nil { return nil, aerrors.Escalate(err, "registering actor address")
return nil, err
} }
return act, nil return act, nil
} }
func makeActor(st *state.StateTree, addr address.Address) (*types.Actor, error) { func makeActor(st *state.StateTree, addr address.Address) (*types.Actor, aerrors.ActorError) {
switch addr.Protocol() { switch addr.Protocol() {
case address.BLS: case address.BLS:
return NewBLSAccountActor(st, addr) return NewBLSAccountActor(st, addr)
case address.SECP256K1: case address.SECP256K1:
return NewSecp256k1AccountActor(st, addr) return NewSecp256k1AccountActor(st, addr)
case address.ID: case address.ID:
return nil, fmt.Errorf("no actor with given ID") return nil, aerrors.New(1, "no actor with given ID")
case address.Actor: case address.Actor:
return nil, fmt.Errorf("no such actor: %s", addr) return nil, aerrors.Newf(1, "no such actor: %s", addr)
default: default:
return nil, fmt.Errorf("address has unsupported protocol: %d", addr.Protocol()) return nil, aerrors.Newf(1, "address has unsupported protocol: %d", addr.Protocol())
} }
} }
func NewBLSAccountActor(st *state.StateTree, addr address.Address) (*types.Actor, error) { func NewBLSAccountActor(st *state.StateTree, addr address.Address) (*types.Actor, aerrors.ActorError) {
var acstate actors.AccountActorState var acstate actors.AccountActorState
acstate.Address = addr acstate.Address = addr
c, err := st.Store.Put(context.TODO(), acstate) c, err := st.Store.Put(context.TODO(), &acstate)
if err != nil { if err != nil {
return nil, err return nil, aerrors.Escalate(err, "serializing account actor state")
} }
nact := &types.Actor{ nact := &types.Actor{
@ -74,7 +73,7 @@ func NewBLSAccountActor(st *state.StateTree, addr address.Address) (*types.Actor
return nact, nil return nact, nil
} }
func NewSecp256k1AccountActor(st *state.StateTree, addr address.Address) (*types.Actor, error) { func NewSecp256k1AccountActor(st *state.StateTree, addr address.Address) (*types.Actor, aerrors.ActorError) {
nact := &types.Actor{ nact := &types.Actor{
Code: actors.AccountActorCodeCid, Code: actors.AccountActorCodeCid,
Balance: types.NewInt(0), Balance: types.NewInt(0),

View File

@ -319,6 +319,7 @@ func (vm *VM) send(ctx context.Context, msg *types.Message, parent *VMContext,
toActor, err := st.GetActor(msg.To) toActor, err := st.GetActor(msg.To)
if err != nil { if err != nil {
if xerrors.Is(err, types.ErrActorNotFound) { if xerrors.Is(err, types.ErrActorNotFound) {
fmt.Println("actor not found on send: ", msg.To.String())
a, err := TryCreateAccountActor(st, msg.To) a, err := TryCreateAccountActor(st, msg.To)
if err != nil { if err != nil {
return nil, aerrors.Absorb(err, 1, "could not create account"), nil return nil, aerrors.Absorb(err, 1, "could not create account"), nil

View File

@ -62,7 +62,7 @@ var createMinerCmd = &cli.Command{
return xerrors.Errorf("failed to get default address: %w", err) return xerrors.Errorf("failed to get default address: %w", err)
} }
params, err := actors.SerializeParams(createMinerArgs) params, err := actors.SerializeParams(&createMinerArgs)
if err != nil { if err != nil {
return err return err
} }

View File

@ -224,7 +224,7 @@ func createStorageMiner(ctx context.Context, api api.FullNode, peerid peer.ID) (
collateral := types.NewInt(1000) // TODO: Get this from params collateral := types.NewInt(1000) // TODO: Get this from params
params, err := actors.SerializeParams(actors.CreateStorageMinerParams{ params, err := actors.SerializeParams(&actors.CreateStorageMinerParams{
Owner: defOwner, Owner: defOwner,
Worker: k, Worker: k,
SectorSize: types.NewInt(build.SectorSize), SectorSize: types.NewInt(build.SectorSize),

2
go.mod
View File

@ -67,7 +67,7 @@ require (
github.com/polydawn/refmt v0.0.0-20190809202753-05966cbd336a github.com/polydawn/refmt v0.0.0-20190809202753-05966cbd336a
github.com/stretchr/testify v1.4.0 github.com/stretchr/testify v1.4.0
github.com/whyrusleeping/bencher v0.0.0-20190829221104-bb6607aa8bba github.com/whyrusleeping/bencher v0.0.0-20190829221104-bb6607aa8bba
github.com/whyrusleeping/cbor-gen v0.0.0-20190910040623-f29470053db6 github.com/whyrusleeping/cbor-gen v0.0.0-20190910224804-fde80d83b106
github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7 github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7
github.com/whyrusleeping/pubsub v0.0.0-20131020042734-02de8aa2db3d github.com/whyrusleeping/pubsub v0.0.0-20131020042734-02de8aa2db3d
github.com/whyrusleeping/sharray v0.0.0-20190718051354-e41931821e33 github.com/whyrusleeping/sharray v0.0.0-20190718051354-e41931821e33

2
go.sum
View File

@ -536,6 +536,8 @@ github.com/whyrusleeping/cbor-gen v0.0.0-20190910031516-c1cbffdb01bb h1:8yBVx6dg
github.com/whyrusleeping/cbor-gen v0.0.0-20190910031516-c1cbffdb01bb/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY= github.com/whyrusleeping/cbor-gen v0.0.0-20190910031516-c1cbffdb01bb/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY=
github.com/whyrusleeping/cbor-gen v0.0.0-20190910040623-f29470053db6 h1:e46mGjWNMelsw+YLq/5TyMfwGz8p0cBY2cf91y6tSBA= github.com/whyrusleeping/cbor-gen v0.0.0-20190910040623-f29470053db6 h1:e46mGjWNMelsw+YLq/5TyMfwGz8p0cBY2cf91y6tSBA=
github.com/whyrusleeping/cbor-gen v0.0.0-20190910040623-f29470053db6/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY= github.com/whyrusleeping/cbor-gen v0.0.0-20190910040623-f29470053db6/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY=
github.com/whyrusleeping/cbor-gen v0.0.0-20190910224804-fde80d83b106 h1:PRWDVakEjB5ju0toKWbXSExfi5BB+oU87/8GhBKXIWE=
github.com/whyrusleeping/cbor-gen v0.0.0-20190910224804-fde80d83b106/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY=
github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f h1:jQa4QT2UP9WYv2nzyawpKMOCl+Z/jW7djv2/J50lj9E= github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f h1:jQa4QT2UP9WYv2nzyawpKMOCl+Z/jW7djv2/J50lj9E=
github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f/go.mod h1:p9UJB6dDgdPgMJZs7UjUOdulKyRr9fqkS+6JKAInPy8= github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f/go.mod h1:p9UJB6dDgdPgMJZs7UjUOdulKyRr9fqkS+6JKAInPy8=
github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 h1:EKhdznlJHPMoKr0XTrX+IlJs1LH3lyx2nfr1dOlZ79k= github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 h1:EKhdznlJHPMoKr0XTrX+IlJs1LH3lyx2nfr1dOlZ79k=