2019-08-02 14:09:54 +00:00
|
|
|
package deals
|
|
|
|
|
|
|
|
import (
|
2019-10-21 18:12:11 +00:00
|
|
|
"github.com/filecoin-project/lotus/api"
|
2019-10-18 04:47:41 +00:00
|
|
|
"github.com/filecoin-project/lotus/chain/actors"
|
|
|
|
"github.com/filecoin-project/lotus/chain/address"
|
|
|
|
"github.com/filecoin-project/lotus/chain/types"
|
2019-11-07 14:09:11 +00:00
|
|
|
"github.com/filecoin-project/lotus/lib/cborrpc"
|
2019-10-22 10:20:43 +00:00
|
|
|
"github.com/ipfs/go-cid"
|
2019-08-02 14:09:54 +00:00
|
|
|
)
|
|
|
|
|
2019-11-06 17:38:42 +00:00
|
|
|
const DealProtocolID = "/fil/storage/mk/1.0.1"
|
|
|
|
const AskProtocolID = "/fil/storage/ask/1.0.1"
|
2019-09-10 12:35:43 +00:00
|
|
|
|
2019-10-21 18:12:11 +00:00
|
|
|
type Proposal struct {
|
2019-11-06 17:38:42 +00:00
|
|
|
DealProposal *actors.StorageDealProposal
|
|
|
|
|
|
|
|
Piece cid.Cid // Used for retrieving from the client
|
2019-08-02 14:09:54 +00:00
|
|
|
}
|
|
|
|
|
2019-10-22 10:20:43 +00:00
|
|
|
type Response struct {
|
2019-09-10 14:13:24 +00:00
|
|
|
State api.DealState
|
2019-08-02 14:09:54 +00:00
|
|
|
|
2019-10-21 18:12:11 +00:00
|
|
|
// DealProposalRejected
|
2019-08-02 14:09:54 +00:00
|
|
|
Message string
|
|
|
|
Proposal cid.Cid
|
|
|
|
|
2019-10-21 18:12:11 +00:00
|
|
|
// DealAccepted
|
2019-10-23 12:59:57 +00:00
|
|
|
StorageDeal *actors.StorageDeal
|
|
|
|
PublishMessage *cid.Cid
|
2019-08-02 14:09:54 +00:00
|
|
|
}
|
|
|
|
|
2019-10-21 18:12:11 +00:00
|
|
|
// TODO: Do we actually need this to be signed?
|
2019-10-22 10:20:43 +00:00
|
|
|
type SignedResponse struct {
|
|
|
|
Response Response
|
2019-08-02 14:09:54 +00:00
|
|
|
|
2019-08-02 16:25:10 +00:00
|
|
|
Signature *types.Signature
|
2019-08-02 14:09:54 +00:00
|
|
|
}
|
2019-09-13 21:00:36 +00:00
|
|
|
|
2019-11-07 14:09:11 +00:00
|
|
|
func (r *SignedResponse) Verify(addr address.Address) error {
|
|
|
|
b, err := cborrpc.Dump(&r.Response)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
return r.Signature.Verify(addr, b)
|
|
|
|
}
|
|
|
|
|
2019-09-13 21:00:36 +00:00
|
|
|
type AskRequest struct {
|
|
|
|
Miner address.Address
|
|
|
|
}
|
|
|
|
|
|
|
|
type AskResponse struct {
|
|
|
|
Ask *types.SignedStorageAsk
|
|
|
|
}
|