From 8d2bcc5e3d3981a59ce67885b7d19abbd19f2455 Mon Sep 17 00:00:00 2001 From: whyrusleeping Date: Mon, 16 Sep 2019 18:56:37 -0700 Subject: [PATCH 1/4] final chain serialization bits --- chain/actors/cbor_gen.go | 61 +++++++++- chain/gen/mining.go | 33 +++--- chain/gen/utils.go | 8 +- chain/state/statetree.go | 15 +-- chain/store/store.go | 53 ++++----- chain/sync.go | 38 +++--- chain/types/actor.go | 5 - chain/types/cbor_gen.go | 204 +++++++++++++++++++++++++++++++++ chain/types/message_receipt.go | 6 - gen/main.go | 2 + go.mod | 4 +- go.sum | 12 ++ 12 files changed, 340 insertions(+), 101 deletions(-) diff --git a/chain/actors/cbor_gen.go b/chain/actors/cbor_gen.go index 29ce4ae86eb..f971b610803 100644 --- a/chain/actors/cbor_gen.go +++ b/chain/actors/cbor_gen.go @@ -25,6 +25,7 @@ func (t *InitActorState) MarshalCBOR(w io.Writer) error { } // t.t.AddressMap (cid.Cid) + if err := cbg.WriteCid(w, t.AddressMap); err != nil { return xerrors.Errorf("failed to write cid field t.AddressMap: %w", err) } @@ -54,11 +55,14 @@ func (t *InitActorState) UnmarshalCBOR(r io.Reader) error { // t.t.AddressMap (cid.Cid) { + c, err := cbg.ReadCid(br) if err != nil { return xerrors.Errorf("failed to read cid field t.AddressMap: %w", err) } + t.AddressMap = c + } // t.t.NextID (uint64) @@ -83,6 +87,7 @@ func (t *ExecParams) MarshalCBOR(w io.Writer) error { } // t.t.Code (cid.Cid) + if err := cbg.WriteCid(w, t.Code); err != nil { return xerrors.Errorf("failed to write cid field t.Code: %w", err) } @@ -115,11 +120,14 @@ func (t *ExecParams) UnmarshalCBOR(r io.Reader) error { // t.t.Code (cid.Cid) { + c, err := cbg.ReadCid(br) if err != nil { return xerrors.Errorf("failed to read cid field t.Code: %w", err) } + t.Code = c + } // t.t.Params ([]uint8) @@ -194,6 +202,7 @@ func (t *StorageMinerActorState) MarshalCBOR(w io.Writer) error { } // t.t.Info (cid.Cid) + if err := cbg.WriteCid(w, t.Info); err != nil { return xerrors.Errorf("failed to write cid field t.Info: %w", err) } @@ -209,6 +218,7 @@ func (t *StorageMinerActorState) MarshalCBOR(w io.Writer) error { } // t.t.Sectors (cid.Cid) + if err := cbg.WriteCid(w, t.Sectors); err != nil { return xerrors.Errorf("failed to write cid field t.Sectors: %w", err) } @@ -219,6 +229,7 @@ func (t *StorageMinerActorState) MarshalCBOR(w io.Writer) error { } // t.t.ProvingSet (cid.Cid) + if err := cbg.WriteCid(w, t.ProvingSet); err != nil { return xerrors.Errorf("failed to write cid field t.ProvingSet: %w", err) } @@ -268,11 +279,14 @@ func (t *StorageMinerActorState) UnmarshalCBOR(r io.Reader) error { // t.t.Info (cid.Cid) { + c, err := cbg.ReadCid(br) if err != nil { return xerrors.Errorf("failed to read cid field t.Info: %w", err) } + t.Info = c + } // t.t.DePledgedCollateral (types.BigInt) @@ -295,11 +309,14 @@ func (t *StorageMinerActorState) UnmarshalCBOR(r io.Reader) error { // t.t.Sectors (cid.Cid) { + c, err := cbg.ReadCid(br) if err != nil { return xerrors.Errorf("failed to read cid field t.Sectors: %w", err) } + t.Sectors = c + } // t.t.SectorSetSize (uint64) @@ -314,11 +331,14 @@ func (t *StorageMinerActorState) UnmarshalCBOR(r io.Reader) error { // t.t.ProvingSet (cid.Cid) { + c, err := cbg.ReadCid(br) if err != nil { return xerrors.Errorf("failed to read cid field t.ProvingSet: %w", err) } + t.ProvingSet = c + } // t.t.ProvingSetSize (uint64) @@ -1057,6 +1077,7 @@ func (t *MultiSigActorState) UnmarshalCBOR(r io.Reader) error { t.Signers = make([]address.Address, extra) } for i := 0; i < int(extra); i++ { + var v address.Address if err := v.UnmarshalCBOR(br); err != nil { return err @@ -1102,6 +1123,7 @@ func (t *MultiSigActorState) UnmarshalCBOR(r io.Reader) error { t.Transactions = make([]MTransaction, extra) } for i := 0; i < int(extra); i++ { + var v MTransaction if err := v.UnmarshalCBOR(br); err != nil { return err @@ -1171,6 +1193,7 @@ func (t *MultiSigConstructorParams) UnmarshalCBOR(r io.Reader) error { t.Signers = make([]address.Address, extra) } for i := 0; i < int(extra); i++ { + var v address.Address if err := v.UnmarshalCBOR(br); err != nil { return err @@ -1600,6 +1623,7 @@ func (t *MTransaction) UnmarshalCBOR(r io.Reader) error { t.Approved = make([]address.Address, extra) } for i := 0; i < int(extra); i++ { + var v address.Address if err := v.UnmarshalCBOR(br); err != nil { return err @@ -2195,8 +2219,15 @@ func (t *PaymentInfo) MarshalCBOR(w io.Writer) error { } // t.t.ChannelMessage (cid.Cid) - if err := cbg.WriteCid(w, *t.ChannelMessage); err != nil { - return xerrors.Errorf("failed to write cid field t.ChannelMessage: %w", err) + + if t.ChannelMessage == nil { + if _, err := w.Write(cbg.CborNull); err != nil { + return err + } + } else { + if err := cbg.WriteCid(w, *t.ChannelMessage); err != nil { + return xerrors.Errorf("failed to write cid field t.ChannelMessage: %w", err) + } } // t.t.Vouchers ([]*types.SignedVoucher) @@ -2247,11 +2278,26 @@ func (t *PaymentInfo) UnmarshalCBOR(r io.Reader) error { // t.t.ChannelMessage (cid.Cid) { - c, err := cbg.ReadCid(br) + + pb, err := br.PeekByte() if err != nil { - return xerrors.Errorf("failed to read cid field t.ChannelMessage: %w", err) + return err + } + if pb == cbg.CborNull[0] { + var nbuf [1]byte + if _, err := br.Read(nbuf[:]); err != nil { + return err + } + } else { + + c, err := cbg.ReadCid(br) + if err != nil { + return xerrors.Errorf("failed to read cid field t.ChannelMessage: %w", err) + } + + t.ChannelMessage = &c } - t.ChannelMessage = &c + } // t.t.Vouchers ([]*types.SignedVoucher) @@ -2270,6 +2316,7 @@ func (t *PaymentInfo) UnmarshalCBOR(r io.Reader) error { t.Vouchers = make([]*types.SignedVoucher, extra) } for i := 0; i < int(extra); i++ { + var v types.SignedVoucher if err := v.UnmarshalCBOR(br); err != nil { return err @@ -2291,6 +2338,7 @@ func (t *StorageMarketState) MarshalCBOR(w io.Writer) error { } // t.t.Miners (cid.Cid) + if err := cbg.WriteCid(w, t.Miners); err != nil { return xerrors.Errorf("failed to write cid field t.Miners: %w", err) } @@ -2320,11 +2368,14 @@ func (t *StorageMarketState) UnmarshalCBOR(r io.Reader) error { // t.t.Miners (cid.Cid) { + c, err := cbg.ReadCid(br) if err != nil { return xerrors.Errorf("failed to read cid field t.Miners: %w", err) } + t.Miners = c + } // t.t.TotalStorage (types.BigInt) diff --git a/chain/gen/mining.go b/chain/gen/mining.go index 4825785c0db..0d484f4ca18 100644 --- a/chain/gen/mining.go +++ b/chain/gen/mining.go @@ -3,11 +3,12 @@ package gen import ( "context" + amt "github.com/filecoin-project/go-amt-ipld" bls "github.com/filecoin-project/go-bls-sigs" cid "github.com/ipfs/go-cid" hamt "github.com/ipfs/go-hamt-ipld" "github.com/pkg/errors" - "github.com/whyrusleeping/sharray" + cbg "github.com/whyrusleeping/cbor-gen" "golang.org/x/xerrors" "github.com/filecoin-project/go-lotus/chain/actors" @@ -77,14 +78,14 @@ func MinerCreateBlock(ctx context.Context, sm *stmgr.StateManager, w *wallet.Wal } } - var receipts []interface{} + var receipts []cbg.CBORMarshaler for _, msg := range blsMessages { rec, err := vmi.ApplyMessage(ctx, msg) if err != nil { return nil, errors.Wrap(err, "apply message failure") } - receipts = append(receipts, rec.MessageReceipt) + receipts = append(receipts, &rec.MessageReceipt) } for _, msg := range secpkMessages { rec, err := vmi.ApplyMessage(ctx, &msg.Message) @@ -92,20 +93,20 @@ func MinerCreateBlock(ctx context.Context, sm *stmgr.StateManager, w *wallet.Wal return nil, errors.Wrap(err, "apply message failure") } - receipts = append(receipts, rec.MessageReceipt) + receipts = append(receipts, &rec.MessageReceipt) } - cst := hamt.CSTFromBstore(sm.ChainStore().Blockstore()) - blsmsgroot, err := sharray.Build(context.TODO(), 4, toIfArr(blsMsgCids), cst) + bs := amt.WrapBlockstore(sm.ChainStore().Blockstore()) + blsmsgroot, err := amt.FromArray(bs, toIfArr(blsMsgCids)) if err != nil { - return nil, err + return nil, xerrors.Errorf("building bls amt: %w", err) } - secpkmsgroot, err := sharray.Build(context.TODO(), 4, toIfArr(secpkMsgCids), cst) + secpkmsgroot, err := amt.FromArray(bs, toIfArr(secpkMsgCids)) if err != nil { - return nil, err + return nil, xerrors.Errorf("building secpk amt: %w", err) } - mmcid, err := cst.Put(context.TODO(), &types.MsgMeta{ + mmcid, err := bs.Put(&types.MsgMeta{ BlsMessages: blsmsgroot, SecpkMessages: secpkmsgroot, }) @@ -114,9 +115,9 @@ func MinerCreateBlock(ctx context.Context, sm *stmgr.StateManager, w *wallet.Wal } next.Messages = mmcid - rectroot, err := sharray.Build(context.TODO(), 4, receipts, cst) + rectroot, err := amt.FromArray(bs, receipts) if err != nil { - return nil, err + return nil, xerrors.Errorf("failed to build receipts amt: %w", err) } next.MessageReceipts = rectroot @@ -142,6 +143,7 @@ func MinerCreateBlock(ctx context.Context, sm *stmgr.StateManager, w *wallet.Wal return nil, xerrors.Errorf("failed to get signing bytes for block: %w", err) } + cst := hamt.CSTFromBstore(sm.ChainStore().Blockstore()) waddr, err := vm.ResolveToKeyAddr(vmi.StateTree(), cst, worker) if err != nil { return nil, xerrors.Errorf("failed to resolve miner address to key address: %w", err) @@ -178,10 +180,11 @@ func aggregateSignatures(sigs []types.Signature) (types.Signature, error) { }, nil } -func toIfArr(cids []cid.Cid) []interface{} { - out := make([]interface{}, 0, len(cids)) +func toIfArr(cids []cid.Cid) []cbg.CBORMarshaler { + out := make([]cbg.CBORMarshaler, 0, len(cids)) for _, c := range cids { - out = append(out, c) + oc := cbg.CborCid(c) + out = append(out, &oc) } return out } diff --git a/chain/gen/utils.go b/chain/gen/utils.go index c45c21e1f5a..7ee1053de2d 100644 --- a/chain/gen/utils.go +++ b/chain/gen/utils.go @@ -4,6 +4,7 @@ import ( "context" "fmt" + amt "github.com/filecoin-project/go-amt-ipld" "github.com/filecoin-project/go-lotus/build" actors "github.com/filecoin-project/go-lotus/chain/actors" "github.com/filecoin-project/go-lotus/chain/address" @@ -19,7 +20,6 @@ import ( bstore "github.com/ipfs/go-ipfs-blockstore" peer "github.com/libp2p/go-libp2p-peer" cbg "github.com/whyrusleeping/cbor-gen" - sharray "github.com/whyrusleeping/sharray" ) type GenesisBootstrap struct { @@ -287,11 +287,11 @@ func MakeGenesisBlock(bs bstore.Blockstore, balances map[address.Address]types.B return nil, xerrors.Errorf("setup storage miners failed: %w", err) } - cst := hamt.CSTFromBstore(bs) + blks := amt.WrapBlockstore(bs) - emptyroot, err := sharray.Build(context.TODO(), 4, []interface{}{}, cst) + emptyroot, err := amt.FromArray(blks, nil) if err != nil { - return nil, xerrors.Errorf("sharray build failed: %w", err) + return nil, xerrors.Errorf("amt build failed: %w", err) } mm := &types.MsgMeta{ diff --git a/chain/state/statetree.go b/chain/state/statetree.go index 50e726bb772..8a0f1ca96e6 100644 --- a/chain/state/statetree.go +++ b/chain/state/statetree.go @@ -6,7 +6,6 @@ import ( "github.com/ipfs/go-cid" hamt "github.com/ipfs/go-hamt-ipld" - cbor "github.com/ipfs/go-ipld-cbor" logging "github.com/ipfs/go-log" "golang.org/x/xerrors" @@ -101,8 +100,8 @@ func (st *StateTree) GetActor(addr address.Address) (*types.Actor, error) { return cact, nil } - var thing interface{} - err := st.root.Find(context.TODO(), string(addr.Bytes()), &thing) + var act types.Actor + err := st.root.Find(context.TODO(), string(addr.Bytes()), &act) if err != nil { if err == hamt.ErrNotFound { return nil, types.ErrActorNotFound @@ -110,16 +109,6 @@ func (st *StateTree) GetActor(addr address.Address) (*types.Actor, error) { return nil, err } - var act types.Actor - badout, err := cbor.DumpObject(thing) - if err != nil { - return nil, err - } - - if err := cbor.DecodeInto(badout, &act); err != nil { - return nil, err - } - st.actorcache[addr] = &act return &act, nil diff --git a/chain/store/store.go b/chain/store/store.go index 903acb4376c..590f5a402ad 100644 --- a/chain/store/store.go +++ b/chain/store/store.go @@ -7,8 +7,8 @@ import ( "fmt" "sync" + amt "github.com/filecoin-project/go-amt-ipld" "github.com/filecoin-project/go-lotus/chain/types" - "golang.org/x/xerrors" block "github.com/ipfs/go-block-format" "github.com/ipfs/go-cid" @@ -18,8 +18,9 @@ import ( bstore "github.com/ipfs/go-ipfs-blockstore" logging "github.com/ipfs/go-log" "github.com/pkg/errors" + cbg "github.com/whyrusleeping/cbor-gen" pubsub "github.com/whyrusleeping/pubsub" - sharray "github.com/whyrusleeping/sharray" + "golang.org/x/xerrors" ) var log = logging.Logger("chainstore") @@ -487,25 +488,21 @@ func (cs *ChainStore) GetSignedMessage(c cid.Cid) (*types.SignedMessage, error) return types.DecodeSignedMessage(sb.RawData()) } -func (cs *ChainStore) readSharrayCids(root cid.Cid) ([]cid.Cid, error) { - cst := hamt.CSTFromBstore(cs.bs) - shar, err := sharray.Load(context.TODO(), root, 4, cst) +func (cs *ChainStore) readAMTCids(root cid.Cid) ([]cid.Cid, error) { + bs := amt.WrapBlockstore(cs.bs) + a, err := amt.LoadAMT(bs, root) if err != nil { - return nil, errors.Wrap(err, "sharray load") + return nil, xerrors.Errorf("amt load: %w", err) } var cids []cid.Cid - err = shar.ForEach(context.TODO(), func(i interface{}) error { - c, ok := i.(cid.Cid) - if !ok { - return fmt.Errorf("value in message sharray was not a cid") + for i := uint64(0); i < a.Count; i++ { + var c cbg.CborCid + if err := a.Get(i, &c); err != nil { + return nil, xerrors.Errorf("failed to load cid from amt: %w", err) } - cids = append(cids, c) - return nil - }) - if err != nil { - return nil, err + cids = append(cids, cid.Cid(c)) } return cids, nil @@ -518,12 +515,12 @@ func (cs *ChainStore) MessagesForBlock(b *types.BlockHeader) ([]*types.Message, return nil, nil, xerrors.Errorf("failed to load msgmeta: %w", err) } - blscids, err := cs.readSharrayCids(msgmeta.BlsMessages) + blscids, err := cs.readAMTCids(msgmeta.BlsMessages) if err != nil { return nil, nil, errors.Wrap(err, "loading bls message cids for block") } - secpkcids, err := cs.readSharrayCids(msgmeta.SecpkMessages) + secpkcids, err := cs.readAMTCids(msgmeta.SecpkMessages) if err != nil { return nil, nil, errors.Wrap(err, "loading secpk message cids for block") } @@ -542,24 +539,14 @@ func (cs *ChainStore) MessagesForBlock(b *types.BlockHeader) ([]*types.Message, } func (cs *ChainStore) GetReceipt(b *types.BlockHeader, i int) (*types.MessageReceipt, error) { - cst := hamt.CSTFromBstore(cs.bs) - shar, err := sharray.Load(context.TODO(), b.MessageReceipts, 4, cst) + bs := amt.WrapBlockstore(cs.bs) + a, err := amt.LoadAMT(bs, b.MessageReceipts) if err != nil { - return nil, errors.Wrap(err, "sharray load") + return nil, errors.Wrap(err, "amt load") } - ival, err := shar.Get(context.TODO(), i) - if err != nil { - return nil, err - } - - // @warpfork, @EricMyhre help me. save me. - out, err := json.Marshal(ival) - if err != nil { - return nil, err - } var r types.MessageReceipt - if err := json.Unmarshal(out, &r); err != nil { + if err := a.Get(uint64(i), &r); err != nil { return nil, err } @@ -652,7 +639,7 @@ func (cs *ChainStore) blockContainsMsg(blk *types.BlockHeader, msg cid.Cid) (*ty return nil, err } - blscids, err := cs.readSharrayCids(msgmeta.BlsMessages) + blscids, err := cs.readAMTCids(msgmeta.BlsMessages) if err != nil { return nil, errors.Wrap(err, "loading bls message cids for block") } @@ -663,7 +650,7 @@ func (cs *ChainStore) blockContainsMsg(blk *types.BlockHeader, msg cid.Cid) (*ty } } - secpkcids, err := cs.readSharrayCids(msgmeta.SecpkMessages) + secpkcids, err := cs.readAMTCids(msgmeta.SecpkMessages) if err != nil { return nil, errors.Wrap(err, "loading secpk message cids for block") } diff --git a/chain/sync.go b/chain/sync.go index 298234d44aa..60872427f82 100644 --- a/chain/sync.go +++ b/chain/sync.go @@ -16,15 +16,15 @@ import ( "github.com/filecoin-project/go-lotus/chain/types" "github.com/filecoin-project/go-lotus/chain/vm" "github.com/filecoin-project/go-lotus/lib/vdf" + cbg "github.com/whyrusleeping/cbor-gen" + amt "github.com/filecoin-project/go-amt-ipld" "github.com/ipfs/go-cid" dstore "github.com/ipfs/go-datastore" - "github.com/ipfs/go-hamt-ipld" bstore "github.com/ipfs/go-ipfs-blockstore" logging "github.com/ipfs/go-log" "github.com/libp2p/go-libp2p-core/peer" "github.com/pkg/errors" - "github.com/whyrusleeping/sharray" ) var log = logging.Logger("chain") @@ -153,7 +153,7 @@ func copyBlockstore(from, to bstore.Blockstore) error { // either validate it here, or ensure that its validated elsewhere (maybe make // sure the blocksync code checks it?) // maybe this code should actually live in blocksync?? -func zipTipSetAndMessages(cst *hamt.CborIpldStore, ts *types.TipSet, allbmsgs []*types.Message, allsmsgs []*types.SignedMessage, bmi, smi [][]uint64) (*store.FullTipSet, error) { +func zipTipSetAndMessages(bs amt.Blocks, ts *types.TipSet, allbmsgs []*types.Message, allsmsgs []*types.SignedMessage, bmi, smi [][]uint64) (*store.FullTipSet, error) { if len(ts.Blocks()) != len(smi) || len(ts.Blocks()) != len(bmi) { return nil, fmt.Errorf("msgincl length didnt match tipset size") } @@ -161,30 +161,32 @@ func zipTipSetAndMessages(cst *hamt.CborIpldStore, ts *types.TipSet, allbmsgs [] fts := &store.FullTipSet{} for bi, b := range ts.Blocks() { var smsgs []*types.SignedMessage - var smsgCids []interface{} + var smsgCids []cbg.CBORMarshaler for _, m := range smi[bi] { smsgs = append(smsgs, allsmsgs[m]) - smsgCids = append(smsgCids, allsmsgs[m].Cid()) + c := cbg.CborCid(allsmsgs[m].Cid()) + smsgCids = append(smsgCids, &c) } - smroot, err := sharray.Build(context.TODO(), 4, smsgCids, cst) + smroot, err := amt.FromArray(bs, smsgCids) if err != nil { return nil, err } var bmsgs []*types.Message - var bmsgCids []interface{} + var bmsgCids []cbg.CBORMarshaler for _, m := range bmi[bi] { bmsgs = append(bmsgs, allbmsgs[m]) - bmsgCids = append(bmsgCids, allbmsgs[m].Cid()) + c := cbg.CborCid(allbmsgs[m].Cid()) + bmsgCids = append(bmsgCids, &c) } - bmroot, err := sharray.Build(context.TODO(), 4, bmsgCids, cst) + bmroot, err := amt.FromArray(bs, bmsgCids) if err != nil { return nil, err } - mrcid, err := cst.Put(context.TODO(), &types.MsgMeta{ + mrcid, err := bs.Put(&types.MsgMeta{ BlsMessages: bmroot, SecpkMessages: smroot, }) @@ -453,14 +455,14 @@ func (syncer *Syncer) ValidateBlock(ctx context.Context, b *types.FullBlock) err return xerrors.Errorf("fund transfer failed: %w", err) } - var receipts []interface{} + var receipts []cbg.CBORMarshaler for i, m := range b.BlsMessages { receipt, err := vmi.ApplyMessage(ctx, m) if err != nil { return xerrors.Errorf("failed executing bls message %d in block %s: %w", i, b.Header.Cid(), err) } - receipts = append(receipts, receipt.MessageReceipt) + receipts = append(receipts, &receipt.MessageReceipt) } for i, m := range b.SecpkMessages { @@ -469,13 +471,13 @@ func (syncer *Syncer) ValidateBlock(ctx context.Context, b *types.FullBlock) err return xerrors.Errorf("failed executing secpk message %d in block %s: %w", i, b.Header.Cid(), err) } - receipts = append(receipts, receipt.MessageReceipt) + receipts = append(receipts, &receipt.MessageReceipt) } - cst := hamt.CSTFromBstore(syncer.store.Blockstore()) - recptRoot, err := sharray.Build(context.TODO(), 4, receipts, cst) + bs := amt.WrapBlockstore(syncer.store.Blockstore()) + recptRoot, err := amt.FromArray(bs, receipts) if err != nil { - return xerrors.Errorf("building receipts sharray failed: %w", err) + return xerrors.Errorf("building receipts hamt failed: %w", err) } if recptRoot != b.Header.MessageReceipts { return fmt.Errorf("receipts mismatched") @@ -614,11 +616,11 @@ func (syncer *Syncer) iterFullTipsets(headers []*types.TipSet, cb func(*store.Fu // temp storage so we don't persist data we dont want to ds := dstore.NewMapDatastore() bs := bstore.NewBlockstore(ds) - cst := hamt.CSTFromBstore(bs) + blks := amt.WrapBlockstore(bs) this := headers[i-bsi] bstip := bstips[len(bstips)-(bsi+1)] - fts, err := zipTipSetAndMessages(cst, this, bstip.BlsMessages, bstip.SecpkMessages, bstip.BlsMsgIncludes, bstip.SecpkMsgIncludes) + fts, err := zipTipSetAndMessages(blks, this, bstip.BlsMessages, bstip.SecpkMessages, bstip.BlsMsgIncludes, bstip.SecpkMsgIncludes) if err != nil { log.Warn("zipping failed: ", err, bsi, i) log.Warn("height: ", this.Height()) diff --git a/chain/types/actor.go b/chain/types/actor.go index 75fbf9b011a..a3a4418c161 100644 --- a/chain/types/actor.go +++ b/chain/types/actor.go @@ -4,15 +4,10 @@ import ( "fmt" "github.com/ipfs/go-cid" - cbor "github.com/ipfs/go-ipld-cbor" ) var ErrActorNotFound = fmt.Errorf("actor not found") -func init() { - cbor.RegisterCborType(Actor{}) -} - type Actor struct { Code cid.Cid Head cid.Cid diff --git a/chain/types/cbor_gen.go b/chain/types/cbor_gen.go index a6aa11da754..ab6f616dc06 100644 --- a/chain/types/cbor_gen.go +++ b/chain/types/cbor_gen.go @@ -3,6 +3,7 @@ package types import ( "fmt" "io" + "math" cid "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" @@ -66,11 +67,13 @@ func (t *BlockHeader) MarshalCBOR(w io.Writer) error { } // t.t.StateRoot (cid.Cid) + if err := cbg.WriteCid(w, t.StateRoot); err != nil { return xerrors.Errorf("failed to write cid field t.StateRoot: %w", err) } // t.t.Messages (cid.Cid) + if err := cbg.WriteCid(w, t.Messages); err != nil { return xerrors.Errorf("failed to write cid field t.Messages: %w", err) } @@ -81,6 +84,7 @@ func (t *BlockHeader) MarshalCBOR(w io.Writer) error { } // t.t.MessageReceipts (cid.Cid) + if err := cbg.WriteCid(w, t.MessageReceipts); err != nil { return xerrors.Errorf("failed to write cid field t.MessageReceipts: %w", err) } @@ -138,6 +142,7 @@ func (t *BlockHeader) UnmarshalCBOR(r io.Reader) error { t.Tickets = make([]*Ticket, extra) } for i := 0; i < int(extra); i++ { + var v Ticket if err := v.UnmarshalCBOR(br); err != nil { return err @@ -210,20 +215,26 @@ func (t *BlockHeader) UnmarshalCBOR(r io.Reader) error { // t.t.StateRoot (cid.Cid) { + c, err := cbg.ReadCid(br) if err != nil { return xerrors.Errorf("failed to read cid field t.StateRoot: %w", err) } + t.StateRoot = c + } // t.t.Messages (cid.Cid) { + c, err := cbg.ReadCid(br) if err != nil { return xerrors.Errorf("failed to read cid field t.Messages: %w", err) } + t.Messages = c + } // t.t.BLSAggregate (types.Signature) @@ -237,11 +248,14 @@ func (t *BlockHeader) UnmarshalCBOR(r io.Reader) error { // t.t.MessageReceipts (cid.Cid) { + c, err := cbg.ReadCid(br) if err != nil { return xerrors.Errorf("failed to read cid field t.MessageReceipts: %w", err) } + t.MessageReceipts = c + } // t.t.Timestamp (uint64) @@ -590,14 +604,17 @@ func (t *MsgMeta) MarshalCBOR(w io.Writer) error { } // t.t.BlsMessages (cid.Cid) + if err := cbg.WriteCid(w, t.BlsMessages); err != nil { return xerrors.Errorf("failed to write cid field t.BlsMessages: %w", err) } // t.t.SecpkMessages (cid.Cid) + if err := cbg.WriteCid(w, t.SecpkMessages); err != nil { return xerrors.Errorf("failed to write cid field t.SecpkMessages: %w", err) } + return nil } @@ -619,20 +636,26 @@ func (t *MsgMeta) UnmarshalCBOR(r io.Reader) error { // t.t.BlsMessages (cid.Cid) { + c, err := cbg.ReadCid(br) if err != nil { return xerrors.Errorf("failed to read cid field t.BlsMessages: %w", err) } + t.BlsMessages = c + } // t.t.SecpkMessages (cid.Cid) { + c, err := cbg.ReadCid(br) if err != nil { return xerrors.Errorf("failed to read cid field t.SecpkMessages: %w", err) } + t.SecpkMessages = c + } return nil } @@ -820,6 +843,7 @@ func (t *SignedVoucher) UnmarshalCBOR(r io.Reader) error { t.Merges = make([]Merge, extra) } for i := 0; i < int(extra); i++ { + var v Merge if err := v.UnmarshalCBOR(br); err != nil { return err @@ -993,3 +1017,183 @@ func (t *Merge) UnmarshalCBOR(r io.Reader) error { t.Nonce = extra return nil } + +func (t *Actor) MarshalCBOR(w io.Writer) error { + if t == nil { + _, err := w.Write(cbg.CborNull) + return err + } + if _, err := w.Write([]byte{132}); err != nil { + return err + } + + // t.t.Code (cid.Cid) + + if err := cbg.WriteCid(w, t.Code); err != nil { + return xerrors.Errorf("failed to write cid field t.Code: %w", err) + } + + // t.t.Head (cid.Cid) + + if err := cbg.WriteCid(w, t.Head); err != nil { + return xerrors.Errorf("failed to write cid field t.Head: %w", err) + } + + // t.t.Nonce (uint64) + if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajUnsignedInt, t.Nonce)); err != nil { + return err + } + + // t.t.Balance (types.BigInt) + if err := t.Balance.MarshalCBOR(w); err != nil { + return err + } + return nil +} + +func (t *Actor) UnmarshalCBOR(r io.Reader) error { + br := cbg.GetPeeker(r) + + maj, extra, err := cbg.CborReadHeader(br) + if err != nil { + return err + } + if maj != cbg.MajArray { + return fmt.Errorf("cbor input should be of type array") + } + + if extra != 4 { + return fmt.Errorf("cbor input had wrong number of fields") + } + + // t.t.Code (cid.Cid) + + { + + c, err := cbg.ReadCid(br) + if err != nil { + return xerrors.Errorf("failed to read cid field t.Code: %w", err) + } + + t.Code = c + + } + // t.t.Head (cid.Cid) + + { + + c, err := cbg.ReadCid(br) + if err != nil { + return xerrors.Errorf("failed to read cid field t.Head: %w", err) + } + + t.Head = c + + } + // t.t.Nonce (uint64) + + maj, extra, err = cbg.CborReadHeader(br) + if err != nil { + return err + } + if maj != cbg.MajUnsignedInt { + return fmt.Errorf("wrong type for uint64 field") + } + t.Nonce = extra + // t.t.Balance (types.BigInt) + + { + + if err := t.Balance.UnmarshalCBOR(br); err != nil { + return err + } + + } + return nil +} + +func (t *MessageReceipt) MarshalCBOR(w io.Writer) error { + if t == nil { + _, err := w.Write(cbg.CborNull) + return err + } + if _, err := w.Write([]byte{131}); err != nil { + return err + } + + // t.t.ExitCode (uint8) + if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajUnsignedInt, uint64(t.ExitCode))); err != nil { + return err + } + + // t.t.Return ([]uint8) + if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajByteString, uint64(len(t.Return)))); err != nil { + return err + } + if _, err := w.Write(t.Return); err != nil { + return err + } + + // t.t.GasUsed (types.BigInt) + if err := t.GasUsed.MarshalCBOR(w); err != nil { + return err + } + return nil +} + +func (t *MessageReceipt) UnmarshalCBOR(r io.Reader) error { + br := cbg.GetPeeker(r) + + maj, extra, err := cbg.CborReadHeader(br) + if err != nil { + return err + } + if maj != cbg.MajArray { + return fmt.Errorf("cbor input should be of type array") + } + + if extra != 3 { + return fmt.Errorf("cbor input had wrong number of fields") + } + + // t.t.ExitCode (uint8) + + maj, extra, err = cbg.CborReadHeader(br) + if err != nil { + return err + } + 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.t.Return ([]uint8) + + maj, extra, err = cbg.CborReadHeader(br) + if err != nil { + return err + } + if extra > 8192 { + return fmt.Errorf("array too large") + } + + if maj != cbg.MajByteString { + return fmt.Errorf("expected byte array") + } + t.Return = make([]byte, extra) + if _, err := io.ReadFull(br, t.Return); err != nil { + return err + } + // t.t.GasUsed (types.BigInt) + + { + + if err := t.GasUsed.UnmarshalCBOR(br); err != nil { + return err + } + + } + return nil +} diff --git a/chain/types/message_receipt.go b/chain/types/message_receipt.go index c739492102e..48139a347fd 100644 --- a/chain/types/message_receipt.go +++ b/chain/types/message_receipt.go @@ -2,14 +2,8 @@ package types import ( "bytes" - - cbor "github.com/ipfs/go-ipld-cbor" ) -func init() { - cbor.RegisterCborType(MessageReceipt{}) -} - type MessageReceipt struct { ExitCode uint8 Return []byte diff --git a/gen/main.go b/gen/main.go index d3609c4a9ad..56323cde33d 100644 --- a/gen/main.go +++ b/gen/main.go @@ -19,6 +19,8 @@ func main() { types.SignedVoucher{}, types.ModVerifyParams{}, types.Merge{}, + types.Actor{}, + types.MessageReceipt{}, ) if err != nil { fmt.Println(err) diff --git a/go.mod b/go.mod index 05fa6342bc1..41be949798e 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( contrib.go.opencensus.io/exporter/jaeger v0.1.0 github.com/BurntSushi/toml v0.3.1 github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d // indirect - github.com/filecoin-project/go-amt-ipld v0.0.0-20190828233303-a41bd0b6f985 + github.com/filecoin-project/go-amt-ipld v0.0.0-20190917010905-40ffeec492ae github.com/filecoin-project/go-bls-sigs v0.0.0-20190718224239-4bc4b8a7bbf8 github.com/filecoin-project/go-leb128 v0.0.0-20190212224330-8d79a5489543 github.com/filecoin-project/go-sectorbuilder v0.0.0-00010101000000-000000000000 @@ -67,7 +67,7 @@ require ( github.com/polydawn/refmt v0.0.0-20190809202753-05966cbd336a github.com/stretchr/testify v1.4.0 github.com/whyrusleeping/bencher v0.0.0-20190829221104-bb6607aa8bba - github.com/whyrusleeping/cbor-gen v0.0.0-20190910224804-fde80d83b106 + github.com/whyrusleeping/cbor-gen v0.0.0-20190917010546-c55df54645cb github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7 github.com/whyrusleeping/pubsub v0.0.0-20131020042734-02de8aa2db3d github.com/whyrusleeping/sharray v0.0.0-20190718051354-e41931821e33 diff --git a/go.sum b/go.sum index a81b46eb148..e53bb63f06d 100644 --- a/go.sum +++ b/go.sum @@ -70,6 +70,10 @@ github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFP github.com/fatih/color v1.6.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/filecoin-project/go-amt-ipld v0.0.0-20190828233303-a41bd0b6f985 h1:rpid5Xgp6GnDACqZvugxWvJ8L1HpyttUkzpUk/4BPXk= github.com/filecoin-project/go-amt-ipld v0.0.0-20190828233303-a41bd0b6f985/go.mod h1:muo8IeR187EUiX5AcMmIb0XSgpSU3qrszgh+pGWf3rY= +github.com/filecoin-project/go-amt-ipld v0.0.0-20190917005524-72dd39686a4b h1:T/musj3r/pgi4RqGNmzPJMxYsbpS7zW+c8p3AABK5h4= +github.com/filecoin-project/go-amt-ipld v0.0.0-20190917005524-72dd39686a4b/go.mod h1:lKjJYPg2kwbav5f78i5YA8kGccnZn18IySbpneXvaQs= +github.com/filecoin-project/go-amt-ipld v0.0.0-20190917010905-40ffeec492ae h1:rSg6wenxKdXby0piY57Vv5gOJR6Eibqq/4PxEk6KjvE= +github.com/filecoin-project/go-amt-ipld v0.0.0-20190917010905-40ffeec492ae/go.mod h1:lKjJYPg2kwbav5f78i5YA8kGccnZn18IySbpneXvaQs= github.com/filecoin-project/go-leb128 v0.0.0-20190212224330-8d79a5489543 h1:aMJGfgqe1QDhAVwxRg5fjCRF533xHidiKsugk7Vvzug= github.com/filecoin-project/go-leb128 v0.0.0-20190212224330-8d79a5489543/go.mod h1:mjrHv1cDGJWDlGmC0eDc1E5VJr8DmL9XMUcaFwiuKg8= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= @@ -605,6 +609,14 @@ 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-20190910224804-fde80d83b106 h1:PRWDVakEjB5ju0toKWbXSExfi5BB+oU87/8GhBKXIWE= github.com/whyrusleeping/cbor-gen v0.0.0-20190910224804-fde80d83b106/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY= +github.com/whyrusleeping/cbor-gen v0.0.0-20190916225017-0e9e4fe27bad h1:rRuESO0E5MwFkbmM6BzG25rPNNUSgEJRITEuzvBQRoM= +github.com/whyrusleeping/cbor-gen v0.0.0-20190916225017-0e9e4fe27bad/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY= +github.com/whyrusleeping/cbor-gen v0.0.0-20190917003517-d78d67427694 h1:Bjfm012LwDvjZvjPDU/oHwm7uX5U/yRHZaQt6gtbGlI= +github.com/whyrusleeping/cbor-gen v0.0.0-20190917003517-d78d67427694/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY= +github.com/whyrusleeping/cbor-gen v0.0.0-20190917010459-657bcab76e7c h1:h3Y1puapIP2wIsGSz5wtI8mr9YWsK/KaBUz4M29kOj8= +github.com/whyrusleeping/cbor-gen v0.0.0-20190917010459-657bcab76e7c/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY= +github.com/whyrusleeping/cbor-gen v0.0.0-20190917010546-c55df54645cb h1:Lc5MOczpVOeI/KwFoib6BMBQ1PfFxMzm/yOUfEeQP+o= +github.com/whyrusleeping/cbor-gen v0.0.0-20190917010546-c55df54645cb/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/go.mod h1:p9UJB6dDgdPgMJZs7UjUOdulKyRr9fqkS+6JKAInPy8= github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 h1:EKhdznlJHPMoKr0XTrX+IlJs1LH3lyx2nfr1dOlZ79k= From 2ab9a0a4b3b4be554238a1d1de1819d4553ab365 Mon Sep 17 00:00:00 2001 From: whyrusleeping Date: Mon, 16 Sep 2019 18:57:49 -0700 Subject: [PATCH 2/4] mod tidy --- go.mod | 1 - go.sum | 13 ------------- 2 files changed, 14 deletions(-) diff --git a/go.mod b/go.mod index 41be949798e..4d6a61cc3d7 100644 --- a/go.mod +++ b/go.mod @@ -70,7 +70,6 @@ require ( github.com/whyrusleeping/cbor-gen v0.0.0-20190917010546-c55df54645cb github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7 github.com/whyrusleeping/pubsub v0.0.0-20131020042734-02de8aa2db3d - github.com/whyrusleeping/sharray v0.0.0-20190718051354-e41931821e33 go.opencensus.io v0.22.0 go.uber.org/dig v1.7.0 // indirect go.uber.org/fx v1.9.0 diff --git a/go.sum b/go.sum index e53bb63f06d..8d2d4410c97 100644 --- a/go.sum +++ b/go.sum @@ -68,10 +68,6 @@ github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5m github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/fatih/color v1.6.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/filecoin-project/go-amt-ipld v0.0.0-20190828233303-a41bd0b6f985 h1:rpid5Xgp6GnDACqZvugxWvJ8L1HpyttUkzpUk/4BPXk= -github.com/filecoin-project/go-amt-ipld v0.0.0-20190828233303-a41bd0b6f985/go.mod h1:muo8IeR187EUiX5AcMmIb0XSgpSU3qrszgh+pGWf3rY= -github.com/filecoin-project/go-amt-ipld v0.0.0-20190917005524-72dd39686a4b h1:T/musj3r/pgi4RqGNmzPJMxYsbpS7zW+c8p3AABK5h4= -github.com/filecoin-project/go-amt-ipld v0.0.0-20190917005524-72dd39686a4b/go.mod h1:lKjJYPg2kwbav5f78i5YA8kGccnZn18IySbpneXvaQs= github.com/filecoin-project/go-amt-ipld v0.0.0-20190917010905-40ffeec492ae h1:rSg6wenxKdXby0piY57Vv5gOJR6Eibqq/4PxEk6KjvE= github.com/filecoin-project/go-amt-ipld v0.0.0-20190917010905-40ffeec492ae/go.mod h1:lKjJYPg2kwbav5f78i5YA8kGccnZn18IySbpneXvaQs= github.com/filecoin-project/go-leb128 v0.0.0-20190212224330-8d79a5489543 h1:aMJGfgqe1QDhAVwxRg5fjCRF533xHidiKsugk7Vvzug= @@ -604,17 +600,10 @@ github.com/whyrusleeping/base32 v0.0.0-20170828182744-c30ac30633cc h1:BCPnHtcboa github.com/whyrusleeping/base32 v0.0.0-20170828182744-c30ac30633cc/go.mod h1:r45hJU7yEoA81k6MWNhpMj/kms0n14dkzkxYHoB96UM= github.com/whyrusleeping/bencher v0.0.0-20190829221104-bb6607aa8bba h1:X4n8JG2e2biEZZXdBKt9HX7DN3bYGFUqljqqy0DqgnY= github.com/whyrusleeping/bencher v0.0.0-20190829221104-bb6607aa8bba/go.mod h1:CHQnYnQUEPydYCwuy8lmTHfGmdw9TKrhWV0xLx8l0oM= -github.com/whyrusleeping/cbor-gen v0.0.0-20190822231004-8db835b09a5a/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY= github.com/whyrusleeping/cbor-gen v0.0.0-20190910031516-c1cbffdb01bb h1:8yBVx6dgk1GfkiWOQ+RbeDDBLCOZxOtmZ949O2uj5H4= github.com/whyrusleeping/cbor-gen v0.0.0-20190910031516-c1cbffdb01bb/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/cbor-gen v0.0.0-20190916225017-0e9e4fe27bad h1:rRuESO0E5MwFkbmM6BzG25rPNNUSgEJRITEuzvBQRoM= -github.com/whyrusleeping/cbor-gen v0.0.0-20190916225017-0e9e4fe27bad/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY= github.com/whyrusleeping/cbor-gen v0.0.0-20190917003517-d78d67427694 h1:Bjfm012LwDvjZvjPDU/oHwm7uX5U/yRHZaQt6gtbGlI= github.com/whyrusleeping/cbor-gen v0.0.0-20190917003517-d78d67427694/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY= -github.com/whyrusleeping/cbor-gen v0.0.0-20190917010459-657bcab76e7c h1:h3Y1puapIP2wIsGSz5wtI8mr9YWsK/KaBUz4M29kOj8= -github.com/whyrusleeping/cbor-gen v0.0.0-20190917010459-657bcab76e7c/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY= github.com/whyrusleeping/cbor-gen v0.0.0-20190917010546-c55df54645cb h1:Lc5MOczpVOeI/KwFoib6BMBQ1PfFxMzm/yOUfEeQP+o= github.com/whyrusleeping/cbor-gen v0.0.0-20190917010546-c55df54645cb/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY= github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f h1:jQa4QT2UP9WYv2nzyawpKMOCl+Z/jW7djv2/J50lj9E= @@ -632,8 +621,6 @@ github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7 h1: github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7/go.mod h1:X2c0RVCI1eSUFI8eLcY3c0423ykwiUdxLJtkDvruhjI= github.com/whyrusleeping/pubsub v0.0.0-20131020042734-02de8aa2db3d h1:wnjWu1N8UTNf2zzF5FWlEyNNbNw5GMVHaHaaLdvdTdA= github.com/whyrusleeping/pubsub v0.0.0-20131020042734-02de8aa2db3d/go.mod h1:g7ckxrjiFh8mi1AY7ox23PZD0g6QU/TxW3U3unX7I3A= -github.com/whyrusleeping/sharray v0.0.0-20190718051354-e41931821e33 h1:7Bsg3GZnFAhdadeyRie9ReenkK2XbC2FlOpJQgTzpbA= -github.com/whyrusleeping/sharray v0.0.0-20190718051354-e41931821e33/go.mod h1:c1pwhNePDPlcYJZinQlfLTOKwTmVf45nfdTg73yOOcA= github.com/whyrusleeping/timecache v0.0.0-20160911033111-cfcb2f1abfee h1:lYbXeSvJi5zk5GLKVuid9TVjS9a0OmLIDKTfoZBL6Ow= github.com/whyrusleeping/timecache v0.0.0-20160911033111-cfcb2f1abfee/go.mod h1:m2aV4LZI4Aez7dP5PMyVKEHhUyEJ/RjmPEDOpDvudHg= github.com/x-cray/logrus-prefixed-formatter v0.5.2/go.mod h1:2duySbKsL6M18s5GU7VPsoEPHyzalCE06qoARUCeBBE= From cf257ae773203c32b2829a494806ae3cd43ec81c Mon Sep 17 00:00:00 2001 From: Whyrusleeping Date: Wed, 18 Sep 2019 04:08:03 +1000 Subject: [PATCH 3/4] Update chain/sync.go MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Ɓukasz Magiera --- chain/sync.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chain/sync.go b/chain/sync.go index 60872427f82..adb3620895f 100644 --- a/chain/sync.go +++ b/chain/sync.go @@ -477,7 +477,7 @@ func (syncer *Syncer) ValidateBlock(ctx context.Context, b *types.FullBlock) err bs := amt.WrapBlockstore(syncer.store.Blockstore()) recptRoot, err := amt.FromArray(bs, receipts) if err != nil { - return xerrors.Errorf("building receipts hamt failed: %w", err) + return xerrors.Errorf("building receipts amt failed: %w", err) } if recptRoot != b.Header.MessageReceipts { return fmt.Errorf("receipts mismatched") From e7b642f1ff0a757c90488dc245efe4e806560913 Mon Sep 17 00:00:00 2001 From: whyrusleeping Date: Tue, 17 Sep 2019 11:09:22 -0700 Subject: [PATCH 4/4] fix import grouping --- chain/sync.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/chain/sync.go b/chain/sync.go index adb3620895f..3af36f57f0a 100644 --- a/chain/sync.go +++ b/chain/sync.go @@ -6,8 +6,6 @@ import ( "sync" "time" - "golang.org/x/xerrors" - "github.com/filecoin-project/go-lotus/build" "github.com/filecoin-project/go-lotus/chain/actors" "github.com/filecoin-project/go-lotus/chain/address" @@ -16,7 +14,6 @@ import ( "github.com/filecoin-project/go-lotus/chain/types" "github.com/filecoin-project/go-lotus/chain/vm" "github.com/filecoin-project/go-lotus/lib/vdf" - cbg "github.com/whyrusleeping/cbor-gen" amt "github.com/filecoin-project/go-amt-ipld" "github.com/ipfs/go-cid" @@ -25,6 +22,8 @@ import ( logging "github.com/ipfs/go-log" "github.com/libp2p/go-libp2p-core/peer" "github.com/pkg/errors" + cbg "github.com/whyrusleeping/cbor-gen" + "golang.org/x/xerrors" ) var log = logging.Logger("chain")