deals: use GetWorkerAddr
This commit is contained in:
parent
3c8ca25764
commit
9733e1f011
@ -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{},
|
||||||
|
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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),
|
||||||
|
Loading…
Reference in New Issue
Block a user