Skip to content
Open
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 client/swagger/models/deal_list_deal_request.go

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

9 changes: 9 additions & 0 deletions client/swagger/models/model_deal.go

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

5 changes: 4 additions & 1 deletion client/swagger/models/model_deal_type.go

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

2 changes: 1 addition & 1 deletion client/swagger/models/schedule_create_request.go

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

2 changes: 1 addition & 1 deletion client/swagger/models/schedule_update_request.go

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

2 changes: 1 addition & 1 deletion cmd/deal/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ var ListCmd = &cli.Command{
},
&cli.StringSliceFlag{
Name: "deal-type",
Usage: "Filter deals by type: market (legacy f05), pdp (f41 PDP deals)",
Usage: "Filter deals by type: market, f05_paid, pdp, ddo",
},
},
Action: func(c *cli.Context) error {
Expand Down
2 changes: 1 addition & 1 deletion cmd/deal/schedule/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ var CreateCmd = &cli.Command{
&cli.StringFlag{
Name: "deal-type",
Category: "Deal Proposal",
Usage: "Deal type: market (legacy f05), pdp (f41), or ddo (DDO allocations)",
Usage: "Deal type: market (legacy f05), f05_paid (f05 with on-chain payments), pdp (f41), or ddo (DDO allocations)",
Value: string(model.DealTypeMarket),
},
&cli.StringSliceFlag{
Expand Down
2 changes: 1 addition & 1 deletion cmd/deal/schedule/update.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ var UpdateCmd = &cli.Command{
&cli.StringFlag{
Name: "deal-type",
Category: "Deal Proposal",
Usage: "Deal type: market (legacy f05) or pdp (f41)",
Usage: "Deal type: market (legacy f05), f05_paid (f05 with on-chain payments), pdp (f41), or ddo (DDO allocations)",
},
&cli.BoolFlag{
Name: "ipni",
Expand Down
56 changes: 55 additions & 1 deletion cmd/run/dealpusher.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@ import (
"time"

"github.com/cockroachdb/errors"
"github.com/data-preservation-programs/singularity/handler/wallet"
"github.com/data-preservation-programs/singularity/service"
"github.com/data-preservation-programs/singularity/service/dealpusher"
"github.com/data-preservation-programs/singularity/service/epochutil"
"github.com/data-preservation-programs/singularity/util/keystore"
"github.com/urfave/cli/v2"
)

Expand Down Expand Up @@ -49,9 +51,29 @@ var DealPusherCmd = &cli.Command{
},
&cli.StringFlag{
Name: "eth-rpc",
Usage: "Ethereum RPC endpoint for FEVM (required to execute PDP and DDO schedules on-chain)",
Usage: "Ethereum RPC endpoint for FEVM (required to execute PDP, DDO, and experimental paid f05 schedules on-chain)",
EnvVars: []string{"ETH_RPC_URL"},
},
&cli.BoolFlag{
Name: "f05-experimental",
Usage: "Enable experimental paid f05 registry and FIL-balance preflight",
},
&cli.StringFlag{
Name: "f05-min-wallet-balance",
Usage: "Minimum FIL wallet balance required before attempting paid f05 schedules",
Value: "0",
EnvVars: []string{"F05_MIN_WALLET_BALANCE"},
},
&cli.StringFlag{
Name: "f05-sp-registry-contract",
Usage: "SP Registry contract address override for experimental paid f05 scheduling",
EnvVars: []string{"F05_SP_REGISTRY_CONTRACT_ADDRESS"},
},
&cli.StringFlag{
Name: "f05-payments-contract",
Usage: "Payments contract address override for experimental paid f05 scheduling",
EnvVars: []string{"F05_PAYMENTS_CONTRACT_ADDRESS"},
},
&cli.StringFlag{
Name: "ddo-contract",
Usage: "DDO Diamond proxy contract address",
Expand Down Expand Up @@ -137,6 +159,38 @@ var DealPusherCmd = &cli.Command{
)
}

if c.Bool("f05-experimental") {
rpcURL := c.String("eth-rpc")
if rpcURL == "" {
return errors.New("--eth-rpc is required when --f05-experimental is set")
}

minWalletBalance, err := dealpusher.ParseFILAmount(c.String("f05-min-wallet-balance"))
if err != nil {
return errors.Wrap(err, "invalid --f05-min-wallet-balance")
}
f05Cfg := dealpusher.F05PaidSchedulingConfig{
MinWalletBalanceAttoFIL: minWalletBalance,
SPRegistryAddress: c.String("f05-sp-registry-contract"),
PaymentsAddress: c.String("f05-payments-contract"),
}
if err := f05Cfg.Validate(); err != nil {
return errors.WithStack(err)
}

ks, err := keystore.NewLocalKeyStore(wallet.GetKeystoreDir())
if err != nil {
return errors.Wrap(err, "failed to initialize keystore for paid f05 scheduling")
}
f05Adapter, err := dealpusher.NewOnChainF05Paid(c.Context, db, ks, rpcURL, f05Cfg)
if err != nil {
return errors.Wrap(err, "failed to initialize experimental paid f05 adapter")
}
defer f05Adapter.Close()

opts = append(opts, dealpusher.WithF05PaidDealManager(f05Adapter))
}

if ddoContract := c.String("ddo-contract"); ddoContract != "" {
ddoCfg := dealpusher.DDOSchedulingConfig{
BatchSize: c.Int("ddo-batch-size"),
Expand Down
11 changes: 10 additions & 1 deletion cmd/run/dealtracker.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ var DealTrackerCmd = &cli.Command{
},
&cli.StringFlag{
Name: "eth-rpc",
Usage: "Ethereum RPC endpoint for FEVM (required for DDO allocation tracking)",
Usage: "Ethereum RPC endpoint for FEVM (required for DDO allocation tracking and paid f05 transaction receipt tracking)",
EnvVars: []string{"ETH_RPC_URL"},
},
&cli.StringFlag{
Expand All @@ -59,6 +59,15 @@ var DealTrackerCmd = &cli.Command{
}

var opts []dealtracker.DealTrackerOption
if rpcURL := c.String("eth-rpc"); rpcURL != "" {
f05Client, err := dealtracker.NewF05PaymentTrackingClient(c.Context, rpcURL)
if err != nil {
return errors.Wrap(err, "failed to initialize paid f05 tracking client")
}
defer f05Client.Close()
opts = append(opts, dealtracker.WithF05PaymentTracker(f05Client))
}

if ddoContract := c.String("ddo-contract"); ddoContract != "" {
rpcURL := c.String("eth-rpc")
if rpcURL == "" {
Expand Down
2 changes: 1 addition & 1 deletion docs/en/cli-reference/deal/list.md

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

2 changes: 1 addition & 1 deletion docs/en/cli-reference/deal/schedule/create.md

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

2 changes: 1 addition & 1 deletion docs/en/cli-reference/deal/schedule/update.md

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

6 changes: 5 additions & 1 deletion docs/en/cli-reference/run/deal-pusher.md

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

2 changes: 1 addition & 1 deletion docs/en/cli-reference/run/deal-tracker.md

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

18 changes: 15 additions & 3 deletions docs/swagger/docs.go

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

18 changes: 15 additions & 3 deletions docs/swagger/swagger.json

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

Loading
Loading