Skip to content

Commit 0e6bd97

Browse files
committed
mk20 GC
1 parent 14cc9ba commit 0e6bd97

File tree

16 files changed

+124
-50
lines changed

16 files changed

+124
-50
lines changed

cmd/sptool/toolbox_deal_client.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import (
1919
"time"
2020

2121
"github.com/dustin/go-humanize"
22-
"github.com/filecoin-project/curio/market/mk20"
2322
"github.com/google/uuid"
2423
"github.com/ipfs/go-cid"
2524
"github.com/ipni/go-libipni/maurl"
@@ -43,6 +42,8 @@ import (
4342
"github.com/filecoin-project/curio/lib/keystore"
4443
mk12_libp2p "github.com/filecoin-project/curio/market/libp2p"
4544
"github.com/filecoin-project/curio/market/mk12"
45+
"github.com/filecoin-project/curio/market/mk20"
46+
4647
"github.com/filecoin-project/lotus/api"
4748
chain_types "github.com/filecoin-project/lotus/chain/types"
4849
"github.com/filecoin-project/lotus/chain/wallet"

documentation/en/configuration/default-curio-configuration.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,7 @@ description: The default curio configuration
509509
# Time duration string (e.g., "1h2m3s") in TOML format. (Default: "5m0s")
510510
#
511511
# type: time.Duration
512-
#IdleTimeout = "2m0s"
512+
#IdleTimeout = "1h0m0s"
513513

514514
# ReadHeaderTimeout is amount of time allowed to read request headers
515515
# Time duration string (e.g., "1h2m3s") in TOML format. (Default: "5m0s")

documentation/en/curio-cli/sptool.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -503,6 +503,7 @@ USAGE:
503503
COMMANDS:
504504
spark Manage Smart Contract PeerID used by Spark
505505
mk12-client mk12 client for Curio
506+
mk20-client mk20 client for Curio
506507
help, h Shows a list of commands or help for one command
507508
508509
OPTIONS:
@@ -888,3 +889,56 @@ USAGE:
888889
OPTIONS:
889890
--help, -h show help
890891
```
892+
893+
### sptool toolbox mk20-client
894+
```
895+
NAME:
896+
sptool toolbox mk20-client - mk20 client for Curio
897+
898+
USAGE:
899+
sptool toolbox mk20-client command [command options]
900+
901+
COMMANDS:
902+
init Initialise curio mk12 client repo
903+
deal Make a mk20 deal with Curio
904+
help, h Shows a list of commands or help for one command
905+
906+
OPTIONS:
907+
--mk12-client-repo value repo directory for mk12 client (default: "~/.curio-client") [$CURIO_MK12_CLIENT_REPO]
908+
--help, -h show help
909+
```
910+
911+
#### sptool toolbox mk20-client init
912+
```
913+
NAME:
914+
sptool toolbox mk20-client init - Initialise curio mk12 client repo
915+
916+
USAGE:
917+
sptool toolbox mk20-client init [command options]
918+
919+
OPTIONS:
920+
--help, -h show help
921+
```
922+
923+
#### sptool toolbox mk20-client deal
924+
```
925+
NAME:
926+
sptool toolbox mk20-client deal - Make a mk20 deal with Curio
927+
928+
USAGE:
929+
sptool toolbox mk20-client deal [command options]
930+
931+
OPTIONS:
932+
--http-url value http url to CAR file
933+
--http-headers value [ --http-headers value ] http headers to be passed with the request (e.g key=value)
934+
--car-size value size of the CAR file: required for online deals (default: 0)
935+
--provider value storage provider on-chain address
936+
--commp value commp of the CAR file
937+
--piece-size value size of the CAR file as a padded piece (default: 0)
938+
--duration value duration of the deal in epochs (default: 518400)
939+
--verified whether the deal funds should come from verified client data-cap (default: false)
940+
--indexing indicates that an deal should be indexed (default: true)
941+
--wallet value wallet address to be used to initiate the deal
942+
--announce indicates that deal should be announced to the IPNI(Network Indexer) (default: true)
943+
--help, -h show help
944+
```

harmony/harmonydb/sql/20250505-market_mk20.sql

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -154,10 +154,7 @@ CREATE TABLE market_mk20_offline_urls (
154154
url TEXT NOT NULL,
155155
headers jsonb NOT NULL DEFAULT '{}',
156156
raw_size BIGINT NOT NULL,
157-
PRIMARY KEY (id, piece_cid, piece_size),
158-
CONSTRAINT market_mk20_offline_urls_id_fk FOREIGN KEY (id)
159-
REFERENCES market_mk20_pipeline (id)
160-
ON DELETE CASCADE
157+
PRIMARY KEY (id, piece_cid, piece_size)
161158
);
162159

163160
CREATE TABLE market_mk20_products (

lib/commcidv2/commcidv2.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@ package commcidv2
33
import (
44
"math/bits"
55

6-
filabi "github.com/filecoin-project/go-state-types/abi"
76
"github.com/ipfs/go-cid"
87
pool "github.com/libp2p/go-buffer-pool"
98
"github.com/multiformats/go-multihash"
109
"github.com/multiformats/go-varint"
1110
"golang.org/x/xerrors"
11+
12+
filabi "github.com/filecoin-project/go-state-types/abi"
1213
)
1314

1415
type CommP struct {

market/mk20/info.md

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -96,19 +96,19 @@ DataSource represents the source of piece data, including metadata and optional
9696

9797
| Field | Type | Tag | Description |
9898
|-------|------|-----|-------------|
99-
| PieceCID | [cid.Cid](https://pkg.go.dev/github.com/ipfs/go-cid#Cid) | json:"piececid" | PieceCID represents the unique identifier for a piece of data, stored as a CID object. |
99+
| PieceCID | [cid.Cid](https://pkg.go.dev/github.com/ipfs/go-cid#Cid) | json:"piece_cid" | PieceCID represents the unique identifier for a piece of data, stored as a CID object. |
100100
| Size | [abi.PaddedPieceSize](https://pkg.go.dev/github.com/filecoin-project/go-state-types/abi#PaddedPieceSize) | json:"size" | Size represents the size of the padded piece in the data source. |
101101
| Format | [mk20.PieceDataFormat](#piecedataformat) | json:"format" | Format defines the format of the piece data, which can include CAR, Aggregate, or Raw formats. |
102-
| SourceHTTP | [*mk20.DataSourceHTTP](#datasourcehttp) | json:"sourcehttp" | SourceHTTP represents the HTTP-based source of piece data within a deal, including raw size and URLs for retrieval. |
103-
| SourceAggregate | [*mk20.DataSourceAggregate](#datasourceaggregate) | json:"sourceaggregate" | SourceAggregate represents an aggregated source, comprising multiple data sources as pieces. |
104-
| SourceOffline | [*mk20.DataSourceOffline](#datasourceoffline) | json:"sourceoffline" | SourceOffline defines the data source for offline pieces, including raw size information. |
105-
| SourceHttpPut | [*mk20.DataSourceHttpPut](#datasourcehttpput) | json:"sourcehttpput" | SourceHTTPPut // allow clients to push piece data after deal accepted, sort of like offline import |
102+
| SourceHTTP | [*mk20.DataSourceHTTP](#datasourcehttp) | json:"source_http" | SourceHTTP represents the HTTP-based source of piece data within a deal, including raw size and URLs for retrieval. |
103+
| SourceAggregate | [*mk20.DataSourceAggregate](#datasourceaggregate) | json:"source_aggregate" | SourceAggregate represents an aggregated source, comprising multiple data sources as pieces. |
104+
| SourceOffline | [*mk20.DataSourceOffline](#datasourceoffline) | json:"source_offline" | SourceOffline defines the data source for offline pieces, including raw size information. |
105+
| SourceHttpPut | [*mk20.DataSourceHttpPut](#datasourcehttpput) | json:"source_httpput" | SourceHTTPPut // allow clients to push piece data after deal accepted, sort of like offline import |
106106

107107
### Products
108108

109109
| Field | Type | Tag | Description |
110110
|-------|------|-----|-------------|
111-
| DDOV1 | [*mk20.DDOV1](#ddov1) | json:"ddov1" | DDOV1 represents a product v1 configuration for Direct Data Onboarding (DDO) |
111+
| DDOV1 | [*mk20.DDOV1](#ddov1) | json:"ddo_v1" | DDOV1 represents a product v1 configuration for Direct Data Onboarding (DDO) |
112112

113113
### DDOV1
114114

@@ -119,16 +119,16 @@ for a DDO deal handling.
119119
|-------|------|-----|-------------|
120120
| Provider | [address.Address](https://pkg.go.dev/github.com/filecoin-project/go-address#Address) | json:"provider" | Provider specifies the address of the provider |
121121
| Client | [address.Address](https://pkg.go.dev/github.com/filecoin-project/go-address#Address) | json:"client" | Client represents the address of the deal client |
122-
| PieceManager | [address.Address](https://pkg.go.dev/github.com/filecoin-project/go-address#Address) | json:"piecemanager" | Actor able to with AuthorizeMessage (like f1/f3 wallet) able to authorize actions such as managing ACLs |
122+
| PieceManager | [address.Address](https://pkg.go.dev/github.com/filecoin-project/go-address#Address) | json:"piece_manager" | Actor providing AuthorizeMessage (like f1/f3 wallet) able to authorize actions such as managing ACLs |
123123
| Duration | [abi.ChainEpoch](https://pkg.go.dev/github.com/filecoin-project/go-state-types/abi#ChainEpoch) | json:"duration" | Duration represents the deal duration in epochs. This value is ignored for the deal with allocationID. It must be at least 518400 |
124-
| AllocationId | [*verifreg.AllocationId](https://pkg.go.dev/github.com/filecoin-project/go-state-types/builtin/v16/verifreg#AllocationId) | json:"aggregatedallocationid" | AllocationId represents an aggregated allocation identifier for the deal. |
125-
| ContractAddress | [string](https://pkg.go.dev/builtin#string) | json:"contractaddress" | ContractAddress specifies the address of the contract governing the deal |
126-
| ContractDealIDMethod | [string](https://pkg.go.dev/builtin#string) | json:"contractdealidmethod" | ContractDealIDMethod specifies the method name to retrieve the deal ID for a contract |
127-
| ContractDealIDMethodParams | [[]byte](https://pkg.go.dev/builtin#byte) | json:"contractdealidmethodparams" | ContractDealIDMethodParams represents encoded parameters for the contract deal ID method if required by the contract |
128-
| NotificationAddress | [string](https://pkg.go.dev/builtin#string) | json:"notificationaddress" | NotificationAddress specifies the address to which notifications will be relayed to when sector is activated |
129-
| NotificationPayload | [[]byte](https://pkg.go.dev/builtin#byte) | json:"notificationpayload" | NotificationPayload holds the notification data typically in a serialized byte array format. |
124+
| AllocationId | [*verifreg.AllocationId](https://pkg.go.dev/github.com/filecoin-project/go-state-types/builtin/v16/verifreg#AllocationId) | json:"allocation_id" | AllocationId represents an aggregated allocation identifier for the deal. |
125+
| ContractAddress | [string](https://pkg.go.dev/builtin#string) | json:"contract_address" | ContractAddress specifies the address of the contract governing the deal |
126+
| ContractVerifyMethod | [string](https://pkg.go.dev/builtin#string) | json:"contract_verify_method" | ContractDealIDMethod specifies the method name to verify the deal and retrieve the deal ID for a contract |
127+
| ContractVerifyMethodParams | [[]byte](https://pkg.go.dev/builtin#byte) | json:"contract_verify_method_params" | ContractDealIDMethodParams represents encoded parameters for the contract verify method if required by the contract |
128+
| NotificationAddress | [string](https://pkg.go.dev/builtin#string) | json:"notification_address" | NotificationAddress specifies the address to which notifications will be relayed to when sector is activated |
129+
| NotificationPayload | [[]byte](https://pkg.go.dev/builtin#byte) | json:"notification_payload" | NotificationPayload holds the notification data typically in a serialized byte array format. |
130130
| Indexing | [bool](https://pkg.go.dev/builtin#bool) | json:"indexing" | Indexing indicates if the deal is to be indexed in the provider's system to support CIDs based retrieval |
131-
| AnnounceToIPNI | [bool](https://pkg.go.dev/builtin#bool) | json:"announcetoinpni" | AnnounceToIPNI indicates whether the deal should be announced to the Interplanetary Network Indexer (IPNI). |
131+
| AnnounceToIPNI | [bool](https://pkg.go.dev/builtin#bool) | json:"announce_to_ipni" | AnnounceToIPNI indicates whether the deal should be announced to the Interplanetary Network Indexer (IPNI). |
132132

133133
### DataSourceAggregate
134134

@@ -153,15 +153,15 @@ DataSourceHttpPut represents a data source allowing clients to push piece data a
153153

154154
| Field | Type | Tag | Description |
155155
|-------|------|-----|-------------|
156-
| RawSize | [uint64](https://pkg.go.dev/builtin#uint64) | json:"rawsize" | RawSize specifies the raw size of the data in bytes. |
156+
| RawSize | [uint64](https://pkg.go.dev/builtin#uint64) | json:"raw_size" | RawSize specifies the raw size of the data in bytes. |
157157

158158
### DataSourceOffline
159159

160160
DataSourceOffline represents the data source for offline pieces, including metadata such as the raw size of the piece.
161161

162162
| Field | Type | Tag | Description |
163163
|-------|------|-----|-------------|
164-
| RawSize | [uint64](https://pkg.go.dev/builtin#uint64) | json:"rawsize" | RawSize specifies the raw size of the data in bytes. |
164+
| RawSize | [uint64](https://pkg.go.dev/builtin#uint64) | json:"raw_size" | RawSize specifies the raw size of the data in bytes. |
165165

166166
### DealStatusResponse
167167

@@ -170,7 +170,7 @@ DealStatusResponse represents the response of a deal's status, including its cur
170170
| Field | Type | Tag | Description |
171171
|-------|------|-----|-------------|
172172
| State | [mk20.DealState](#constants-for-dealstate) | json:"status" | State indicates the current processing state of the deal as a DealState value. |
173-
| ErrorMsg | [string](https://pkg.go.dev/builtin#string) | json:"errormsg" | ErrorMsg is an optional field containing error details associated with the deal's current state if an error occurred. |
173+
| ErrorMsg | [string](https://pkg.go.dev/builtin#string) | json:"error_msg" | ErrorMsg is an optional field containing error details associated with the deal's current state if an error occurred. |
174174

175175
### FormatAggregate
176176

@@ -190,11 +190,10 @@ FormatBytes defines the raw byte representation of data as a format.
190190

191191
### FormatCar
192192

193-
FormatCar represents the CAR (Content Addressable aRchive) format with version metadata for piece data serialization.
193+
FormatCar represents the CAR (Content Addressable archive) format for piece data serialization.
194194

195195
| Field | Type | Tag | Description |
196196
|-------|------|-----|-------------|
197-
| Version | [uint64](https://pkg.go.dev/builtin#uint64) | json:"version" | Version specifies the version of the CAR format used for piece data serialization. |
198197

199198
### HttpUrl
200199

@@ -203,7 +202,7 @@ HttpUrl represents an HTTP endpoint configuration for fetching piece data.
203202
| Field | Type | Tag | Description |
204203
|-------|------|-----|-------------|
205204
| URL | [string](https://pkg.go.dev/builtin#string) | json:"url" | URL specifies the HTTP endpoint where the piece data can be fetched. |
206-
| HTTPHeaders | [http.Header](https://pkg.go.dev/net/http#Header) | json:"httpheaders" | HTTPHeaders represents the HTTP headers associated with the URL. |
205+
| Headers | [http.Header](https://pkg.go.dev/net/http#Header) | json:"headers" | HTTPHeaders represents the HTTP headers associated with the URL. |
207206
| Priority | [uint64](https://pkg.go.dev/builtin#uint64) | json:"priority" | Priority indicates the order preference for using the URL in requests, with lower values having higher priority. |
208207
| Fallback | [bool](https://pkg.go.dev/builtin#bool) | json:"fallback" | Fallback indicates whether this URL serves as a fallback option when other URLs fail. |
209208

market/mk20/types.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ package mk20
33
import (
44
"net/http"
55

6-
"github.com/filecoin-project/go-state-types/abi"
76
"github.com/ipfs/go-cid"
87
"github.com/oklog/ulid"
8+
9+
"github.com/filecoin-project/go-state-types/abi"
910
)
1011

1112
// Deal represents a structure defining the details and components of a specific deal in the system.

market/mk20/utils.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ import (
1212
"net/url"
1313
"time"
1414

15-
"github.com/filecoin-project/go-address"
1615
"github.com/ipfs/go-cid"
1716
"github.com/oklog/ulid"
1817
"github.com/yugabyte/pgx/v5"
1918
"golang.org/x/xerrors"
2019

20+
"github.com/filecoin-project/go-address"
2121
"github.com/filecoin-project/go-data-segment/datasegment"
2222
"github.com/filecoin-project/go-padreader"
2323
"github.com/filecoin-project/go-state-types/abi"

tasks/gc/pipeline_meta_gc.go

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ func (s *PipelineGC) Do(taskID harmonytask.TaskID, stillOwned func() bool) (done
3838
return false, xerrors.Errorf("cleanupUnseal: %w", err)
3939

4040
}
41+
if err := s.cleanupMK20DealPipeline(); err != nil {
42+
return false, xerrors.Errorf("cleanupMK20DealPipeline: %w", err)
43+
}
4144

4245
return true, nil
4346
}
@@ -158,13 +161,9 @@ func (s *PipelineGC) cleanupUpgrade() error {
158161
}
159162

160163
func (s *PipelineGC) cleanupMK12DealPipeline() error {
161-
// Remove market_mk12_deal_pipeline entries where:
162-
// sealed is true and indexed is true
163164
ctx := context.Background()
164165

165-
// Execute the query
166-
// NOTE: pipelines can be complete before indexing finishes in case of reindexing pipeline tasks (created in CheckIndex task)
167-
_, err := s.db.Exec(ctx, `DELETE FROM market_mk12_deal_pipeline WHERE (should_index = FALSE OR indexed = TRUE) AND complete = TRUE;`)
166+
_, err := s.db.Exec(ctx, `DELETE FROM market_mk12_deal_pipeline WHERE complete = TRUE;`)
168167
if err != nil {
169168
return xerrors.Errorf("failed to clean up sealed deals: %w", err)
170169
}
@@ -177,6 +176,24 @@ func (s *PipelineGC) cleanupMK12DealPipeline() error {
177176
return nil
178177
}
179178

179+
func (s *PipelineGC) cleanupMK20DealPipeline() error {
180+
ctx := context.Background()
181+
182+
_, err := s.db.Exec(ctx, `DELETE FROM market_mk20_offline_urls
183+
WHERE id IN (
184+
SELECT id FROM market_mk20_pipeline WHERE complete = TRUE
185+
);
186+
187+
DELETE FROM market_mk20_pipeline
188+
WHERE complete = TRUE;
189+
`)
190+
if err != nil {
191+
return xerrors.Errorf("failed to clean up sealed deals: %w", err)
192+
}
193+
194+
return nil
195+
}
196+
180197
func (s *PipelineGC) cleanupUnseal() error {
181198
// Remove sectors_unseal_pipeline entries where:
182199
// after_unseal_sdr is true

tasks/indexing/task_indexing.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@ import (
1212
"sync"
1313
"time"
1414

15-
"github.com/filecoin-project/curio/market/mk20"
16-
"github.com/filecoin-project/go-data-segment/datasegment"
17-
"github.com/filecoin-project/go-data-segment/fr32"
1815
"github.com/ipfs/go-cid"
1916
logging "github.com/ipfs/go-log/v2"
2017
carv2 "github.com/ipld/go-car/v2"
@@ -23,6 +20,8 @@ import (
2320
"golang.org/x/sync/errgroup"
2421
"golang.org/x/xerrors"
2522

23+
"github.com/filecoin-project/go-data-segment/datasegment"
24+
"github.com/filecoin-project/go-data-segment/fr32"
2625
"github.com/filecoin-project/go-state-types/abi"
2726

2827
"github.com/filecoin-project/curio/deps/config"
@@ -36,6 +35,7 @@ import (
3635
"github.com/filecoin-project/curio/lib/passcall"
3736
"github.com/filecoin-project/curio/lib/storiface"
3837
"github.com/filecoin-project/curio/market/indexstore"
38+
"github.com/filecoin-project/curio/market/mk20"
3939
)
4040

4141
var log = logging.Logger("indexing")

tasks/indexing/task_ipni.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@ import (
1111
"strings"
1212
"time"
1313

14-
"github.com/filecoin-project/curio/lib/cachedreader"
15-
"github.com/filecoin-project/curio/market/mk20"
1614
"github.com/google/uuid"
1715
"github.com/ipfs/go-cid"
1816
logging "github.com/ipfs/go-log/v2"
@@ -36,12 +34,14 @@ import (
3634
"github.com/filecoin-project/curio/harmony/harmonytask"
3735
"github.com/filecoin-project/curio/harmony/resources"
3836
"github.com/filecoin-project/curio/harmony/taskhelp"
37+
"github.com/filecoin-project/curio/lib/cachedreader"
3938
"github.com/filecoin-project/curio/lib/ffi"
4039
"github.com/filecoin-project/curio/lib/passcall"
4140
"github.com/filecoin-project/curio/lib/storiface"
4241
"github.com/filecoin-project/curio/market/indexstore"
4342
"github.com/filecoin-project/curio/market/ipni/chunker"
4443
"github.com/filecoin-project/curio/market/ipni/ipniculib"
44+
"github.com/filecoin-project/curio/market/mk20"
4545
)
4646

4747
var ilog = logging.Logger("ipni")

web/api/webrpc/deals.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,13 @@ import (
44
"context"
55
"time"
66

7-
"github.com/filecoin-project/curio/lib/commcidv2"
8-
"github.com/filecoin-project/go-address"
9-
"github.com/filecoin-project/go-state-types/abi"
107
"github.com/ipfs/go-cid"
118
"golang.org/x/xerrors"
129

10+
"github.com/filecoin-project/go-address"
11+
"github.com/filecoin-project/go-state-types/abi"
12+
13+
"github.com/filecoin-project/curio/lib/commcidv2"
1314
"github.com/filecoin-project/curio/market/storageingest"
1415

1516
"github.com/filecoin-project/lotus/chain/types"

web/api/webrpc/ipni.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,13 @@ import (
1111
"strings"
1212
"time"
1313

14-
"github.com/filecoin-project/curio/lib/commcidv2"
1514
"github.com/ipfs/go-cid"
1615
"golang.org/x/xerrors"
1716

1817
"github.com/filecoin-project/go-address"
1918
"github.com/filecoin-project/go-state-types/abi"
19+
20+
"github.com/filecoin-project/curio/lib/commcidv2"
2021
)
2122

2223
type IpniAd struct {

web/api/webrpc/market.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@ import (
1111
"strings"
1212
"time"
1313

14-
"github.com/filecoin-project/curio/lib/commcidv2"
15-
"github.com/filecoin-project/curio/market/mk20"
1614
"github.com/google/uuid"
1715
"github.com/ipfs/go-cid"
1816
"github.com/samber/lo"
@@ -25,6 +23,8 @@ import (
2523
"github.com/filecoin-project/go-state-types/big"
2624

2725
"github.com/filecoin-project/curio/harmony/harmonydb"
26+
"github.com/filecoin-project/curio/lib/commcidv2"
27+
"github.com/filecoin-project/curio/market/mk20"
2828

2929
lapi "github.com/filecoin-project/lotus/api"
3030
"github.com/filecoin-project/lotus/chain/actors"

0 commit comments

Comments
 (0)