diff --git a/chain/sync.go b/chain/sync.go index 89823c7f0..43c1030ff 100644 --- a/chain/sync.go +++ b/chain/sync.go @@ -116,6 +116,13 @@ func (syncer *Syncer) InformNewHead(from peer.ID, fts *store.FullTipSet) { return } + // TODO: IMPORTANT(GARBAGE) this needs to be put in the 'temporary' side of + // the blockstore + if err := syncer.store.PersistBlockHeaders(fts.TipSet().Blocks()...); err != nil { + log.Warn("failed to persist incoming block header: ", err) + return + } + syncer.peerHeadsLk.Lock() syncer.peerHeads[from] = fts.TipSet() syncer.peerHeadsLk.Unlock() @@ -147,7 +154,12 @@ func (syncer *Syncer) ValidateMsgMeta(fblk *types.FullBlock) error { scids = append(scids, &c) } - bs := amt.WrapBlockstore(syncer.store.Blockstore()) + // TODO: IMPORTANT(GARBAGE). These message puts and the msgmeta + // computation need to go into the 'temporary' side of the blockstore when + // we implement that + blockstore := syncer.store.Blockstore() + + bs := amt.WrapBlockstore(blockstore) smroot, err := computeMsgMeta(bs, bcids, scids) if err != nil { return xerrors.Errorf("validating msgmeta, compute failed: %w", err) @@ -157,6 +169,20 @@ func (syncer *Syncer) ValidateMsgMeta(fblk *types.FullBlock) error { return xerrors.Errorf("messages in full block did not match msgmeta root in header (%s != %s)", fblk.Header.Messages, smroot) } + for _, m := range fblk.BlsMessages { + _, err := store.PutMessage(blockstore, m) + if err != nil { + return xerrors.Errorf("putting bls message to blockstore after msgmeta computation: %w", err) + } + } + + for _, m := range fblk.SecpkMessages { + _, err := store.PutMessage(blockstore, m) + if err != nil { + return xerrors.Errorf("putting bls message to blockstore after msgmeta computation: %w", err) + } + } + return nil } diff --git a/cmd/lotus-storage-miner/init.go b/cmd/lotus-storage-miner/init.go index 00e189cfe..9bbf21d33 100644 --- a/cmd/lotus-storage-miner/init.go +++ b/cmd/lotus-storage-miner/init.go @@ -132,19 +132,19 @@ func storageMinerInit(ctx context.Context, cctx *cli.Context, api api.FullNode, p2pSk, err := makeHostKey(lr) if err != nil { - return err + return xerrors.Errorf("make host key: %w", err) } peerid, err := peer.IDFromPrivateKey(p2pSk) if err != nil { - return err + return xerrors.Errorf("peer ID from private key: %w", err) } var addr address.Address if act := cctx.String("actor"); act != "" { a, err := address.NewFromString(act) if err != nil { - return err + return xerrors.Errorf("failed parsing actor flag value (%q): %w", act, err) } if err := configureStorageMiner(ctx, api, a, peerid, cctx.Bool("genesis-miner")); err != nil {