deals: use GetWorkerAddr

This commit is contained in:
Łukasz Magiera 2019-08-13 01:54:53 +02:00
parent 3c8ca25764
commit 9733e1f011
3 changed files with 24 additions and 17 deletions

View File

@ -4,8 +4,8 @@ import (
"context" "context"
"math" "math"
"github.com/filecoin-project/go-lotus/api"
"github.com/filecoin-project/go-lotus/chain/address" "github.com/filecoin-project/go-lotus/chain/address"
"github.com/filecoin-project/go-lotus/chain/wallet"
"github.com/filecoin-project/go-lotus/lib/sectorbuilder" "github.com/filecoin-project/go-lotus/lib/sectorbuilder"
"github.com/filecoin-project/go-lotus/node/modules/dtypes" "github.com/filecoin-project/go-lotus/node/modules/dtypes"
@ -35,8 +35,8 @@ type MinerDeal struct {
} }
type Handler struct { type Handler struct {
w *wallet.Wallet sb *sectorbuilder.SectorBuilder
sb *sectorbuilder.SectorBuilder full api.FullNode
// TODO: Use a custom protocol or graphsync in the future // TODO: Use a custom protocol or graphsync in the future
// TODO: GC // TODO: GC
@ -60,7 +60,7 @@ type dealUpdate struct {
mut func(*MinerDeal) mut func(*MinerDeal)
} }
func NewHandler(w *wallet.Wallet, ds dtypes.MetadataDS, sb *sectorbuilder.SectorBuilder, dag dtypes.StagingDAG) (*Handler, error) { func NewHandler(ds dtypes.MetadataDS, sb *sectorbuilder.SectorBuilder, dag dtypes.StagingDAG, fullNode api.FullNode) (*Handler, error) {
addr, err := ds.Get(datastore.NewKey("miner-address")) addr, err := ds.Get(datastore.NewKey("miner-address"))
if err != nil { if err != nil {
return nil, err return nil, err
@ -71,9 +71,9 @@ func NewHandler(w *wallet.Wallet, ds dtypes.MetadataDS, sb *sectorbuilder.Sector
} }
return &Handler{ return &Handler{
w: w,
sb: sb, sb: sb,
dag: dag, dag: dag,
full: fullNode,
conns: map[cid.Cid]inet.Stream{}, conns: map[cid.Cid]inet.Stream{},

View File

@ -1,13 +1,17 @@
package deals package deals
import ( import (
"context"
"runtime" "runtime"
"github.com/filecoin-project/go-lotus/chain/actors"
"github.com/filecoin-project/go-lotus/chain/address"
"github.com/filecoin-project/go-lotus/chain/types"
"github.com/filecoin-project/go-lotus/lib/cborrpc" "github.com/filecoin-project/go-lotus/lib/cborrpc"
cbor "github.com/ipfs/go-ipld-cbor"
inet "github.com/libp2p/go-libp2p-core/network"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
cbor "github.com/ipfs/go-ipld-cbor"
inet "github.com/libp2p/go-libp2p-core/network"
"golang.org/x/xerrors" "golang.org/x/xerrors"
) )
@ -68,18 +72,21 @@ func (h *Handler) sendSignedResponse(resp StorageDealResponse) error {
return xerrors.Errorf("serializing response: %w", err) return xerrors.Errorf("serializing response: %w", err)
} }
def, err := h.w.ListAddrs() getworker := &types.Message{
if err != nil { To: h.actor,
log.Error(err) From: h.actor,
return xerrors.Errorf("listing wallet addresses: %w", err) Method: actors.MAMethods.GetWorkerAddr,
} }
if len(def) != 1 { r, err := h.full.ChainCall(context.TODO(), getworker, nil)
// NOTE: If this ever happens for a good reason, implement this with GetWorker on the miner actor if err != nil {
// TODO: implement with GetWorker on the miner actor return xerrors.Errorf("getting worker address: %w", err)
return xerrors.Errorf("expected only 1 address in wallet, got %d", len(def)) }
worker, err := address.NewFromBytes(r.Return)
if err != nil {
return err
} }
sig, err := h.w.Sign(def[0], msg) sig, err := h.full.WalletSign(context.TODO(), worker, msg)
if err != nil { if err != nil {
return xerrors.Errorf("failed to sign response message: %w", err) return xerrors.Errorf("failed to sign response message: %w", err)
} }

View File

@ -181,7 +181,6 @@ func Online() Option {
libp2p(), libp2p(),
// common // common
Override(new(*wallet.Wallet), wallet.NewWallet),
// Full node // Full node
@ -191,6 +190,7 @@ func Online() Option {
Override(HandleIncomingMessagesKey, modules.HandleIncomingMessages), Override(HandleIncomingMessagesKey, modules.HandleIncomingMessages),
Override(new(*store.ChainStore), modules.ChainStore), Override(new(*store.ChainStore), modules.ChainStore),
Override(new(*wallet.Wallet), wallet.NewWallet),
Override(new(dtypes.ChainGCLocker), blockstore.NewGCLocker), Override(new(dtypes.ChainGCLocker), blockstore.NewGCLocker),
Override(new(dtypes.ChainGCBlockstore), modules.ChainGCBlockstore), Override(new(dtypes.ChainGCBlockstore), modules.ChainGCBlockstore),