From 6eee109c52a897889d8bda4d18366f4ce7d26391 Mon Sep 17 00:00:00 2001 From: hunjixin <1084400399@qq.com> Date: Fri, 3 Feb 2023 14:49:22 +0800 Subject: [PATCH] feat: add list storage/retrieval asks cli --- api/clients/mix_msgclient.go | 4 +- api/impl/venus_market.go | 108 +---------------------------------- cli/migration.go | 31 ---------- cli/retrieval-asks.go | 41 +++++++++++-- cli/storage-ask.go | 58 +++++++++++++++++-- cmd/venus-market/main.go | 1 - go.mod | 8 +-- go.sum | 16 +++--- 8 files changed, 106 insertions(+), 161 deletions(-) delete mode 100644 cli/migration.go diff --git a/api/clients/mix_msgclient.go b/api/clients/mix_msgclient.go index daf14484..a88dd80b 100644 --- a/api/clients/mix_msgclient.go +++ b/api/clients/mix_msgclient.go @@ -144,7 +144,7 @@ func (msgClient *MixMsgClient) WaitMsg(ctx context.Context, mCid cid.Cid, confid case msgTypes.UnKnown: continue //OnChain - case msgTypes.ReplacedMsg: + case msgTypes.NonceConflictMsg: fallthrough case msgTypes.OnChainMsg: if msg.Confidence > int64(confidence) { @@ -198,7 +198,7 @@ func (msgClient *MixMsgClient) SearchMsg(ctx context.Context, from types.TipSetK case msgTypes.UnKnown: return nil, nil //OnChain - case msgTypes.ReplacedMsg: + case msgTypes.NonceConflictMsg: fallthrough case msgTypes.OnChainMsg: return &types.MsgLookup{ diff --git a/api/impl/venus_market.go b/api/impl/venus_market.go index 94f23d14..a03a5a85 100644 --- a/api/impl/venus_market.go +++ b/api/impl/venus_market.go @@ -2,9 +2,7 @@ package impl import ( "context" - "encoding/json" "fmt" - "io/ioutil" "os" "sort" "time" @@ -234,7 +232,7 @@ func (m *MarketNodeImpl) MarketSetAsk(ctx context.Context, mAddr address.Address return m.StorageAsk.SetAsk(ctx, mAddr, price, verifiedPrice, duration, options...) } -func (m *MarketNodeImpl) MarketListAsk(ctx context.Context) ([]*types.SignedStorageAsk, error) { +func (m *MarketNodeImpl) MarketListStorageAsk(ctx context.Context) ([]*types.SignedStorageAsk, error) { return m.StorageAsk.ListAsk(ctx) } @@ -899,110 +897,6 @@ func (m *MarketNodeImpl) PaychVoucherList(ctx context.Context, pch address.Addre return m.PaychAPI.PaychVoucherList(ctx, pch) } -// ImportV1Data deprecated api -func (m *MarketNodeImpl) ImportV1Data(ctx context.Context, src string) error { - type minerDealsIncludeStatus struct { - MinerDeal storagemarket.MinerDeal - DealInfo piecestore.DealInfo - Status types.PieceStatus - } - - type exportData struct { - Miner address.Address - MinerDeals []minerDealsIncludeStatus - SignedVoucher map[string]*types.ChannelInfo - StorageAsk *storagemarket.SignedStorageAsk - RetrievalAsk *retrievalmarket.Ask - RetrievalDeals []retrievalmarket.ProviderDealState - } - - srcBytes, err := ioutil.ReadFile(src) - if err != nil { - return err - } - - data := exportData{} - err = json.Unmarshal(srcBytes, &data) - if err != nil { - return err - } - - err = m.Repo.StorageAskRepo().SetAsk(ctx, types.FromChainAsk(data.StorageAsk)) - if err != nil { - return err - } - - err = m.Repo.RetrievalAskRepo().SetAsk(ctx, &types.RetrievalAsk{ - Miner: data.Miner, - PricePerByte: data.RetrievalAsk.PricePerByte, - UnsealPrice: data.RetrievalAsk.UnsealPrice, - PaymentInterval: data.RetrievalAsk.PaymentInterval, - PaymentIntervalIncrease: data.RetrievalAsk.PaymentIntervalIncrease, - }) - if err != nil { - return err - } - - for _, channelInfo := range data.SignedVoucher { - err = m.Repo.PaychChannelInfoRepo().SaveChannel(ctx, channelInfo) - if err != nil { - return fmt.Errorf("save channel fail %w", err) - } - } - - for _, minerDeal := range data.MinerDeals { - err = m.Repo.StorageDealRepo().SaveDeal(ctx, &types.MinerDeal{ - ClientDealProposal: minerDeal.MinerDeal.ClientDealProposal, - ProposalCid: minerDeal.MinerDeal.ProposalCid, - AddFundsCid: minerDeal.MinerDeal.AddFundsCid, - PublishCid: minerDeal.MinerDeal.PublishCid, - Miner: minerDeal.MinerDeal.Miner, - Client: minerDeal.MinerDeal.Client, - State: minerDeal.MinerDeal.State, - PiecePath: minerDeal.MinerDeal.PiecePath, - // PayloadSize: ,// - MetadataPath: minerDeal.MinerDeal.MetadataPath, - SlashEpoch: minerDeal.MinerDeal.SlashEpoch, - FastRetrieval: minerDeal.MinerDeal.FastRetrieval, - Message: minerDeal.MinerDeal.Message, - FundsReserved: minerDeal.MinerDeal.FundsReserved, - Ref: minerDeal.MinerDeal.Ref, - AvailableForRetrieval: minerDeal.MinerDeal.AvailableForRetrieval, - DealID: minerDeal.MinerDeal.DealID, - CreationTime: minerDeal.MinerDeal.CreationTime, - TransferChannelID: minerDeal.MinerDeal.TransferChannelId, - SectorNumber: minerDeal.MinerDeal.SectorNumber, - Offset: minerDeal.DealInfo.Offset, - PieceStatus: minerDeal.Status, - InboundCAR: minerDeal.MinerDeal.InboundCAR, - }) - if err != nil { - return fmt.Errorf("save storage deal fail %w", err) - } - } - - for _, retrievalDeal := range data.RetrievalDeals { - err = m.Repo.RetrievalDealRepo().SaveDeal(ctx, &types.ProviderDealState{ - DealProposal: retrievalDeal.DealProposal, - StoreID: retrievalDeal.StoreID, - // SelStorageProposalCid: retrievalDeal, - ChannelID: retrievalDeal.ChannelID, - Status: retrievalDeal.Status, - Receiver: retrievalDeal.Receiver, - TotalSent: retrievalDeal.TotalSent, - FundsReceived: retrievalDeal.FundsReceived, - Message: retrievalDeal.Message, - CurrentInterval: retrievalDeal.CurrentInterval, - LegacyProtocol: retrievalDeal.LegacyProtocol, - }) - if err != nil { - return fmt.Errorf("retrieval storage deal fail %w", err) - } - } - - return nil -} - func (m *MarketNodeImpl) AddFsPieceStorage(ctx context.Context, name string, path string, readonly bool) error { ifs := &config.FsPieceStorage{ReadOnly: readonly, Path: path, Name: name} fsps, err := piecestorage.NewFsPieceStorage(ifs) diff --git a/cli/migration.go b/cli/migration.go deleted file mode 100644 index 9b1565e2..00000000 --- a/cli/migration.go +++ /dev/null @@ -1,31 +0,0 @@ -package cli - -import ( - "github.com/urfave/cli/v2" -) - -var MigrateCmd = &cli.Command{ - Name: "migrate", - Usage: "Manage P2P Network", - Subcommands: []*cli.Command{ - ImportV1DataCmd, - }, -} - -var ImportV1DataCmd = &cli.Command{ - Name: "import_v1", - Usage: "import v1 data", - Action: func(cctx *cli.Context) error { - api, closer, err := NewMarketNode(cctx) - if err != nil { - return err - } - defer closer() - ctx := ReqContext(cctx) - err = api.ImportV1Data(ctx, cctx.Args().Get(0)) - if err != nil { - return err - } - return nil - }, -} diff --git a/cli/retrieval-asks.go b/cli/retrieval-asks.go index 35a58ba7..32ef06be 100644 --- a/cli/retrieval-asks.go +++ b/cli/retrieval-asks.go @@ -20,12 +20,13 @@ var retirevalAsksCmds = &cli.Command{ Name: "ask", Usage: "Configure retrieval asks", Subcommands: []*cli.Command{ - retrievalGetAskCmd, - retrievalSetAskCmd, + getRetrievalAskCmd, + setRetrievalAskCmd, + listRetrievalAskCmd, }, } -var retrievalSetAskCmd = &cli.Command{ +var setRetrievalAskCmd = &cli.Command{ Name: "set", ArgsUsage: "", Usage: "Configure(set/update)the provider's retrieval ask", @@ -139,7 +140,7 @@ var retrievalSetAskCmd = &cli.Command{ }, } -var retrievalGetAskCmd = &cli.Command{ +var getRetrievalAskCmd = &cli.Command{ Name: "get", ArgsUsage: "", Usage: "Get the provider's current retrieval ask", @@ -181,3 +182,35 @@ var retrievalGetAskCmd = &cli.Command{ return w.Flush() }, } + +var listRetrievalAskCmd = &cli.Command{ + Name: "list", + Usage: "List the currently configured retrieval miner asks", + Action: func(cctx *cli.Context) error { + ctx := DaemonContext(cctx) + + api, closer, err := NewMarketNode(cctx) + if err != nil { + return err + } + defer closer() + + asks, err := api.MarketListRetrievalAsk(ctx) + if err != nil { + return err + } + + w := tabwriter.NewWriter(os.Stdout, 2, 4, 2, ' ', 0) + fmt.Fprintf(w, "Miner\tPrice per Byte\tUnseal Price\tPayment Interval\tPayment Interval Increase\n") + for _, ask := range asks { + fmt.Fprintf(w, "%s\t%s\t%s\t%s\t%s\n", + ask.Miner, + types.FIL(ask.PricePerByte), + types.FIL(ask.UnsealPrice), + units.BytesSize(float64(ask.PaymentInterval)), + units.BytesSize(float64(ask.PaymentIntervalIncrease)), + ) + } + return w.Flush() + }, +} diff --git a/cli/storage-ask.go b/cli/storage-ask.go index f2ad8be0..2c2f1cad 100644 --- a/cli/storage-ask.go +++ b/cli/storage-ask.go @@ -25,12 +25,13 @@ var storageAsksCmds = &cli.Command{ Name: "ask", Usage: "Configure storage asks", Subcommands: []*cli.Command{ - setAskCmd, - getAskCmd, + setStorageAskCmd, + getStorageAskCmd, + listStorageAsksCmd, }, } -var setAskCmd = &cli.Command{ +var setStorageAskCmd = &cli.Command{ Name: "set", ArgsUsage: "", Usage: "Configure(set/update) the miner's ask", @@ -150,7 +151,7 @@ var setAskCmd = &cli.Command{ }, } -var getAskCmd = &cli.Command{ +var getStorageAskCmd = &cli.Command{ Name: "get", Usage: "Print the miner's ask", ArgsUsage: "", @@ -210,3 +211,52 @@ var getAskCmd = &cli.Command{ return w.Flush() }, } + +var listStorageAsksCmd = &cli.Command{ + Name: "list", + Usage: "List the currently configured storage provider asks", + Action: func(cctx *cli.Context) error { + ctx := DaemonContext(cctx) + + fnapi, closer, err := NewFullNode(cctx) + if err != nil { + return err + } + defer closer() + + smapi, closer, err := NewMarketNode(cctx) + if err != nil { + return err + } + defer closer() + + asks, err := smapi.MarketListStorageAsk(ctx) + if err != nil { + return err + } + + head, err := fnapi.ChainHead(ctx) + if err != nil { + return err + } + + w := tabwriter.NewWriter(os.Stdout, 2, 4, 2, ' ', 0) + fmt.Fprintf(w, "Miner\tPrice per GiB/Epoch\tVerified\tMin. Piece Size (padded)\tMax. Piece Size (padded)\tExpiry (Epoch)\tExpiry (Appx. Rem. Time)\tSeq. No.\n") + + for _, sask := range asks { + var ask *storagemarket.StorageAsk + if sask != nil && sask.Ask != nil { + ask = sask.Ask + } + + dlt := ask.Expiry - head.Height() + rem := "" + if dlt > 0 { + rem = (time.Second * time.Duration(int64(dlt)*int64(constants.MainNetBlockDelaySecs))).String() + } + + fmt.Fprintf(w, "%s\t%s\t%s\t%s\t%s\t%d\t%s\t%d\n", ask.Miner, types.FIL(ask.Price), types.FIL(ask.VerifiedPrice), types.SizeStr(types.NewInt(uint64(ask.MinPieceSize))), types.SizeStr(types.NewInt(uint64(ask.MaxPieceSize))), ask.Expiry, rem, ask.SeqNo) + } + return w.Flush() + }, +} diff --git a/cmd/venus-market/main.go b/cmd/venus-market/main.go index de52d521..327064ad 100644 --- a/cmd/venus-market/main.go +++ b/cmd/venus-market/main.go @@ -94,7 +94,6 @@ func main() { cli2.NetCmd, cli2.DataTransfersCmd, cli2.DagstoreCmd, - cli2.MigrateCmd, cli2.PieceStorageCmd, cli2.MarketCmds, cli2.StatsCmds, diff --git a/go.mod b/go.mod index a32e89d7..b461108b 100644 --- a/go.mod +++ b/go.mod @@ -24,14 +24,14 @@ require ( github.com/filecoin-project/go-fil-markets v1.24.0-v17 github.com/filecoin-project/go-jsonrpc v0.1.5 github.com/filecoin-project/go-padreader v0.0.1 - github.com/filecoin-project/go-state-types v0.9.8 + github.com/filecoin-project/go-state-types v0.9.9 github.com/filecoin-project/go-statemachine v1.0.2 github.com/filecoin-project/go-statestore v0.2.0 github.com/filecoin-project/specs-actors/v2 v2.3.6 github.com/filecoin-project/specs-actors/v7 v7.0.1 - github.com/filecoin-project/venus v1.9.0 + github.com/filecoin-project/venus v1.9.0-rc1.0.20230203064217-14f0513a243e github.com/filecoin-project/venus-auth v1.9.0 - github.com/filecoin-project/venus-messager v1.9.0 + github.com/filecoin-project/venus-messager v1.9.0-rc1 github.com/golang/mock v1.6.0 github.com/google/uuid v1.3.0 github.com/gorilla/mux v1.8.0 @@ -39,7 +39,7 @@ require ( github.com/howeyc/gopass v0.0.0-20210920133722-c8aef6fb66ef github.com/ipfs-force-community/metrics v1.0.1-0.20220824061112-ac916bacf2ea github.com/ipfs-force-community/venus-common-utils v0.0.0-20220217030526-e5e4c6bc14f7 - github.com/ipfs-force-community/venus-gateway v1.9.0 + github.com/ipfs-force-community/venus-gateway v1.9.0-rc1 github.com/ipfs/go-block-format v0.0.3 github.com/ipfs/go-blockservice v0.4.0 github.com/ipfs/go-cid v0.2.0 diff --git a/go.sum b/go.sum index 1ffc9e3e..80c659be 100644 --- a/go.sum +++ b/go.sum @@ -408,8 +408,8 @@ github.com/filecoin-project/go-state-types v0.1.4/go.mod h1:xCA/WfKlC2zcn3fUmDv4 github.com/filecoin-project/go-state-types v0.1.6/go.mod h1:UwGVoMsULoCK+bWjEdd/xLCvLAQFBC7EDT477SKml+Q= github.com/filecoin-project/go-state-types v0.1.8/go.mod h1:UwGVoMsULoCK+bWjEdd/xLCvLAQFBC7EDT477SKml+Q= github.com/filecoin-project/go-state-types v0.1.10/go.mod h1:UwGVoMsULoCK+bWjEdd/xLCvLAQFBC7EDT477SKml+Q= -github.com/filecoin-project/go-state-types v0.9.8 h1:xkdITiR7h691z1tWOhNCJxHI+cq+Mq7ATkpHQ7f1gu8= -github.com/filecoin-project/go-state-types v0.9.8/go.mod h1:+HCZifUV+e8TlQkgll22Ucuiq8OrVJkK+4Kh4u75iiw= +github.com/filecoin-project/go-state-types v0.9.9 h1:gd7Mo6f9jHHpLahttBE88YeQA77i4GK6W5kFdQDnuME= +github.com/filecoin-project/go-state-types v0.9.9/go.mod h1:+HCZifUV+e8TlQkgll22Ucuiq8OrVJkK+4Kh4u75iiw= github.com/filecoin-project/go-statemachine v0.0.0-20200925024713-05bd7c71fbfe/go.mod h1:FGwQgZAt2Gh5mjlwJUlVB62JeYdo+if0xWxSEfBD9ig= github.com/filecoin-project/go-statemachine v1.0.1/go.mod h1:jZdXXiHa61n4NmgWFG4w8tnqgvZVHYbJ3yW7+y8bF54= github.com/filecoin-project/go-statemachine v1.0.2-0.20220322104818-27f8fbb86dfd/go.mod h1:jZdXXiHa61n4NmgWFG4w8tnqgvZVHYbJ3yW7+y8bF54= @@ -457,13 +457,13 @@ github.com/filecoin-project/storetheindex v0.4.17 h1:w0dVc954TGPukoVbidlYvn9Xt+w github.com/filecoin-project/storetheindex v0.4.17/go.mod h1:y2dL8C5D3PXi183hdxgGtM8vVYOZ1lg515tpl/D3tN8= github.com/filecoin-project/test-vectors/schema v0.0.5/go.mod h1:iQ9QXLpYWL3m7warwvK1JC/pTri8mnfEmKygNDqqY6E= github.com/filecoin-project/venus v1.2.4/go.mod h1:hJULXHGAnWuq5S5KRtPkwbT8DqgM9II7NwyNU7t59D0= -github.com/filecoin-project/venus v1.9.0 h1:JdGPR7ank9XxlTmcaoXKKofqP+QnTmpiG5lEvJ5AixQ= -github.com/filecoin-project/venus v1.9.0/go.mod h1:3fBoP8nPxHYGerersp5m0J5hY0wsDGnWtolTEao/lwE= +github.com/filecoin-project/venus v1.9.0-rc1.0.20230203064217-14f0513a243e h1:l2EhKlBboVUij2CTf0iHtQvrCmOn52qTbtJAvjDjxss= +github.com/filecoin-project/venus v1.9.0-rc1.0.20230203064217-14f0513a243e/go.mod h1:TIRaBucKJIIe0QxuSWsRkO6fpRdKWdYY990KjQ/Fa38= github.com/filecoin-project/venus-auth v1.3.2/go.mod h1:m5Jog2GYxztwP7w3m/iJdv/V1/bTcAVU9rm/CbhxRQU= github.com/filecoin-project/venus-auth v1.9.0 h1:GH0o/jPdF55/U/uLoMzrqR9+DOsMf5oWM/X4UPuyWPA= github.com/filecoin-project/venus-auth v1.9.0/go.mod h1:Ckj8F/iuSgXnCb9LvH0IiPR7swJZQAhabDOxVycLGWs= -github.com/filecoin-project/venus-messager v1.9.0 h1:owOTGzqlVcB46nROj/c1xBoFqBhFnljmWbXjaAKEXZA= -github.com/filecoin-project/venus-messager v1.9.0/go.mod h1:UgUU95+8G7ffHyXO/WLIl75ZBqj1NU9DjxMo5ZN3U+w= +github.com/filecoin-project/venus-messager v1.9.0-rc1 h1:NpjCXY1IMfUhoNvvocNxIirC+Q8iZsQYB8XXHe7s5mY= +github.com/filecoin-project/venus-messager v1.9.0-rc1/go.mod h1:1v7uhBYR1IsIeCud4a+scDVNgVtjCxS/DVIxnXQiuMo= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/flynn/noise v0.0.0-20180327030543-2492fe189ae6/go.mod h1:1i71OnUq3iUe1ma7Lr6yG6/rjvM3emb6yoL7xLFzcVQ= github.com/flynn/noise v1.0.0 h1:DlTHqmzmvcEiKj+4RYo/imoswx/4r6iBlCMfVtrMXpQ= @@ -819,8 +819,8 @@ github.com/ipfs-force-community/metrics v1.0.1-0.20220824061112-ac916bacf2ea/go. github.com/ipfs-force-community/venus-common-utils v0.0.0-20210924063144-1d3a5b30de87/go.mod h1:RTVEOzM+hkpqmcEWpyLDkx1oGO5r9ZWCgYxG/CsXzJQ= github.com/ipfs-force-community/venus-common-utils v0.0.0-20220217030526-e5e4c6bc14f7 h1:v/1/INcqm3kHLauWQYB63MwWJRWGz+3WEuUPp0jzIl8= github.com/ipfs-force-community/venus-common-utils v0.0.0-20220217030526-e5e4c6bc14f7/go.mod h1:sSTUXgIu95tPHvgcYhdLuELmgPJWCP/pNMFtsrVtOyA= -github.com/ipfs-force-community/venus-gateway v1.9.0 h1:/Gaax6I4sJLDQSpMdjBArQyHPNEjRqtMTaOOVGyr5Fs= -github.com/ipfs-force-community/venus-gateway v1.9.0/go.mod h1:5cqgQrA4Sv8nrJENG02JLVe+aourp9ouQJeaHHirrOM= +github.com/ipfs-force-community/venus-gateway v1.9.0-rc1 h1:eXBREWs0mkscx+vrwcgCNal+QlNGqazULU5kargzkhU= +github.com/ipfs-force-community/venus-gateway v1.9.0-rc1/go.mod h1:+TXUDejSPrY8aNLJcbAn5e6QU3xxirhxNvHUszGuESY= github.com/ipfs/bbloom v0.0.1/go.mod h1:oqo8CVWsJFMOZqTglBG4wydCE4IQA/G2/SEofB0rjUI= github.com/ipfs/bbloom v0.0.4 h1:Gi+8EGJ2y5qiD5FbsbpX/TMNcJw8gSqr7eyjHa4Fhvs= github.com/ipfs/bbloom v0.0.4/go.mod h1:cS9YprKXpoZ9lT0n/Mw/a6/aFV6DTjTLYHeA+gyqMG0=