Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix/retrieval #36

Merged
merged 3 commits into from
Nov 19, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ type MarketFullNode interface {
GetDeals(ctx context.Context, miner address.Address, pageIndex, pageSize int) ([]*types.DealInfo, error) //perm:read
GetUnPackedDeals(ctx context.Context, miner address.Address, spec *types.GetDealSpec) ([]*types.DealInfoIncludePath, error) //perm:read
AssignUnPackedDeals(ctx context.Context, miner address.Address, ssize abi.SectorSize, spec *types.GetDealSpec) ([]*types.DealInfoIncludePath, error) //perm:write

UpdateStorageDealStatus(ctx context.Context, dealProposalCid cid.Cid, state storagemarket.StorageDealStatus) error //perm:write
//market event
ResponseMarketEvent(ctx context.Context, resp *types2.ResponseEvent) error //perm:read
ListenMarketEvent(ctx context.Context, policy *marketevent.MarketRegisterPolicy) (<-chan *types2.RequestEvent, error) //perm:read
Expand Down
2 changes: 1 addition & 1 deletion api/clients/modules.go
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ func NewIMarketEvent(stream *marketevent.MarketEventStream) (MarketRequestEvent,
return stream, nil
}

var ClientsOpts = func(server bool, mCfg *config.Messager, signerCfg *config.Signer, mysqlCfg *config.Mysql) builder.Option {
var ClientsOpts = func(server bool, mCfg *config.Messager, signerCfg *config.Signer) builder.Option {
opts := builder.Options(
builder.ApplyIf(
func(s *builder.Settings) bool {
Expand Down
18 changes: 18 additions & 0 deletions api/impl/impl.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package impl

import (
"context"
"encoding/json"
"fmt"
"github.com/filecoin-project/venus-market/models/repo"
"os"
Expand Down Expand Up @@ -140,6 +141,19 @@ func (m MarketNodeImpl) MarketListRetrievalDeals(ctx context.Context, mAddr addr
}
}
// todo: 按miner过滤交易
out = append(out, *deal)
}
for _, mm := range deals {
xxxx, err := json.Marshal(mm)
if err != nil {
fmt.Println(err)
}

var dd retrievalmarket.ProviderDealState
err = json.Unmarshal(xxxx, &dd)
if err != nil {
fmt.Println(err)
}
}

return out, nil
Expand Down Expand Up @@ -175,6 +189,10 @@ func (m MarketNodeImpl) MarketListIncompleteDeals(ctx context.Context, mAddr add
return resDeals, nil
}

func (m MarketNodeImpl) UpdateStorageDealStatus(ctx context.Context, dealProposal cid.Cid, state storagemarket.StorageDealStatus) error {
return m.Repo.StorageDealRepo().UpdateDealStatus(dealProposal, state)
}

func (m MarketNodeImpl) MarketSetAsk(ctx context.Context, mAddr address.Address, price vTypes.BigInt, verifiedPrice vTypes.BigInt, duration abi.ChainEpoch, minPieceSize abi.PaddedPieceSize, maxPieceSize abi.PaddedPieceSize) error {
options := []storagemarket.StorageAskOption{
storagemarket.MinPieceSize(minPieceSize),
Expand Down
15 changes: 12 additions & 3 deletions api/proxy_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions cli/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -1202,6 +1202,12 @@ var clientRetrieveCmd = &cli.Command{
IsCAR: cctx.Bool("car"),
}

fmt.Println("Size:", order.Size)
fmt.Println("Unseal Price:", order.UnsealPrice)
fmt.Println("Total Fee:", order.Total)

data, _ := json.MarshalIndent(order, " ", "\t")
fmt.Println(string(data))
updates, err := mapi.ClientRetrieveWithEvents(ctx, *order, ref)
if err != nil {
return xerrors.Errorf("error setting up retrieval: %w", err)
Expand Down
32 changes: 32 additions & 0 deletions cli/market.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"errors"
"fmt"
"github.com/filecoin-project/go-address"
"github.com/filecoin-project/venus-market/storageprovider"
"io"
"log"
"os"
Expand Down Expand Up @@ -321,6 +322,7 @@ var StorageDealsCmd = &cli.Command{
Subcommands: []*cli.Command{
dealsImportDataCmd,
dealsListCmd,
updateStorageDealStateCmd,
storageDealSelectionCmd,
setAskCmd,
getAskCmd,
Expand Down Expand Up @@ -440,6 +442,36 @@ var dealsListCmd = &cli.Command{
},
}

var updateStorageDealStateCmd = &cli.Command{
Name: "update",
Usage: "update deal status",
Flags: []cli.Flag{
&cli.StringFlag{
Name: "proposalcid",
Required: true,
},
&cli.StringFlag{
Name: "state",
Required: true,
},
},
Action: func(cctx *cli.Context) error {
api, closer, err := NewMarketNode(cctx)
if err != nil {
return err
}
defer closer()

ctx := DaemonContext(cctx)
proposalCid, err := cid.Decode(cctx.String("proposalcid"))
if err != nil {
return err
}
state := storageprovider.StringToStorageState[cctx.String("state")]
return api.UpdateStorageDealStatus(ctx, proposalCid, state)
},
}

func outputStorageDeals(out io.Writer, deals []storagemarket.MinerDeal, verbose bool) error {
sort.Slice(deals, func(i, j int) bool {
return deals[i].CreationTime.Time().Before(deals[j].CreationTime.Time())
Expand Down
12 changes: 8 additions & 4 deletions cli/retrieval-deals.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,22 +148,23 @@ var retrievalDealsListCmd = &cli.Command{
if err != nil {
return err
}

w := tabwriter.NewWriter(os.Stdout, 2, 4, 2, ' ', 0)

_, _ = fmt.Fprintf(w, "Receiver\tDealID\tPayload\tState\tPricePerByte\tBytesSent\tMessage\n")
_, _ = fmt.Fprintf(w, "Receiver\tDealID\tPayload\tState\tPricePerByte\tBytesSent\tPaied\tInterval\tMessage\n")

for _, deal := range deals {
payloadCid := deal.PayloadCID.String()

_, _ = fmt.Fprintf(w,
"%s\t%d\t%s\t%s\t%s\t%d\t%s\n",
"%s\t%d\t%s\t%s\t%s\t%d\t%d\t%d\t%s\n",
deal.Receiver.String(),
deal.ID,
"..."+payloadCid[len(payloadCid)-8:],
retrievalmarket.DealStatuses[deal.Status],
deal.PricePerByte.String(),
deal.TotalSent,
deal.FundsReceived,
deal.CurrentInterval,
deal.Message,
)
}
Expand Down Expand Up @@ -212,7 +213,10 @@ var retrievalSetAskCmd = &cli.Command{

ask, err := api.MarketGetRetrievalAsk(ctx, mAddr)
if err != nil {
return err
if err.Error() != "record not found" {
return err
}
ask = &retrievalmarket.Ask{}
}

if cctx.IsSet("price") {
Expand Down
2 changes: 1 addition & 1 deletion client/modules.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ func NewClientGraphsyncDataTransfer(lc fx.Lifecycle, h host.Host, gs network.Gra
dtRetryParams := dtnet.RetryParameters(time.Second, 5*time.Minute, 15, 5)
net := dtnet.NewFromLibp2pHost(h, dtRetryParams)

transport := dtgstransport.NewTransport(h.ID(), gs)
transport := dtgstransport.NewTransport(h.ID(), gs, net)
err := os.MkdirAll(filepath.Join(string(*homeDir), "data-transfer"), 0755) //nolint: gosec
if err != nil && !os.IsExist(err) {
return nil, err
Expand Down
4 changes: 2 additions & 2 deletions cmd/market-client/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,8 @@ func marketClient(cctx *cli.Context) error {

config.ConfigClientOpts(cfg),

clients2.ClientsOpts(false, &cfg.Messager, &cfg.Signer, &config.Mysql{}),
models.DBOptions(false, &config.Mysql{}),
clients2.ClientsOpts(false, &cfg.Messager, &cfg.Signer),
models.DBOptions(false, nil),
network.NetworkOpts(false, cfg.SimultaneousTransfers),
paychmgr.PaychOpts,
fundmgr.FundMgrOpts,
Expand Down
4 changes: 2 additions & 2 deletions cmd/venus-market/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ func daemon(cctx *cli.Context) error {
minermgr2.MinerMgrOpts(cfg),

//clients
clients.ClientsOpts(true, &cfg.Messager, &cfg.Signer, &cfg.Mysql),
clients.ClientsOpts(true, &cfg.Messager, &cfg.Signer),
models.DBOptions(true, &cfg.Mysql),
network.NetworkOpts(true, cfg.SimultaneousTransfers),
piecestorage.PieceStorageOpts(cfg),
Expand Down Expand Up @@ -265,7 +265,7 @@ func flagData(cctx *cli.Context, cfg *config.MarketConfig) error {
if err != nil {
return xerrors.Errorf("flag provide a wrong address %s %w", addrStr, err)
}
cfg.MinerAddress = append(cfg.MinerAddress, addr)
cfg.MinerAddress = append(cfg.MinerAddress, config.Address(addr))
}
}
return nil
Expand Down
13 changes: 11 additions & 2 deletions config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ type RetrievalPricingDefault struct {
}

type AddressConfig struct {
DealPublishControl []address.Address
DealPublishControl []Address

// DisableOwnerFallback disables usage of the owner address for messages
// sent automatically
Expand Down Expand Up @@ -165,7 +165,8 @@ type MarketConfig struct {
AddressConfig AddressConfig
DAGStore DAGStoreConfig

MinerAddress []address.Address
MinerAddress []Address
RetrievalPaymentAddress Address
// When enabled, the miner can accept online deals
ConsiderOnlineStorageDeals bool
// When enabled, the miner can accept offline deals
Expand Down Expand Up @@ -266,3 +267,11 @@ func (addr *Address) UnmarshalText(text []byte) error {
func (dur Address) MarshalText() ([]byte, error) {
return []byte(address.Address(dur).String()), nil
}

func ConvertConfigAddress(addrs []Address) []address.Address {
addrs2 := make([]address.Address, len(addrs))
for index, addr := range addrs {
addrs2[index] = address.Address(addr)
}
return addrs2
}
7 changes: 4 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ require (
github.com/filecoin-project/go-bitfield v0.2.4
github.com/filecoin-project/go-cbor-util v0.0.0-20201016124514-d0bbec7bfcc4
github.com/filecoin-project/go-commp-utils v0.1.1-0.20210427191551-70bf140d31c7
github.com/filecoin-project/go-data-transfer v1.10.1
github.com/filecoin-project/go-data-transfer v1.11.4
github.com/filecoin-project/go-fil-commcid v0.1.0
github.com/filecoin-project/go-fil-commp-hashhash v0.1.0
github.com/filecoin-project/go-fil-markets v1.12.0
Expand Down Expand Up @@ -50,7 +50,7 @@ require (
github.com/ipfs/go-ds-badger2 v0.1.1-0.20200708190120-187fc06f714e
github.com/ipfs/go-ds-leveldb v0.4.2
github.com/ipfs/go-ds-measure v0.1.0
github.com/ipfs/go-graphsync v0.9.1
github.com/ipfs/go-graphsync v0.10.0
github.com/ipfs/go-ipfs-blockstore v1.0.4
github.com/ipfs/go-ipfs-blocksutil v0.0.1
github.com/ipfs/go-ipfs-chunker v0.0.5
Expand All @@ -63,7 +63,7 @@ require (
github.com/ipfs/go-merkledag v0.3.2
github.com/ipfs/go-metrics-interface v0.0.1
github.com/ipfs/go-unixfs v0.2.6
github.com/ipld/go-car v0.3.1-0.20210601190600-f512dac51e8e
github.com/ipld/go-car v0.3.2-0.20211001225732-32d0d9933823
github.com/ipld/go-car/v2 v2.0.3-0.20210811121346-c514a30114d7
github.com/ipld/go-ipld-prime v0.12.3
github.com/libp2p/go-buffer-pool v0.0.2
Expand Down Expand Up @@ -104,6 +104,7 @@ require (

replace (
github.com/filecoin-project/filecoin-ffi => ./extern/filecoin-ffi
github.com/filecoin-project/go-fil-markets => /Users/lijunlong/code/go-fil-markets
github.com/filecoin-project/go-jsonrpc => github.com/ipfs-force-community/go-jsonrpc v0.1.4-0.20210721095535-a67dff16de21
github.com/ipfs/go-ipfs-cmds => github.com/ipfs-force-community/go-ipfs-cmds v0.6.1-0.20210521090123-4587df7fa0ab
)
Loading