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

Submit rescue-dissolved only if requested and print the tx data #723

Merged
merged 1 commit into from
Jan 6, 2025
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
4 changes: 4 additions & 0 deletions rocketpool-cli/minipool/commands.go
Original file line number Diff line number Diff line change
Expand Up @@ -546,6 +546,10 @@ func RegisterCommands(app *cli.App, name string, aliases []string) {
Name: "amount, a",
Usage: "The amount of ETH to deposit into the minipool",
},
cli.BoolFlag{
Name: "no-send, n",
Usage: "Don't submit the transaction",
},
},
Action: func(c *cli.Context) error {

Expand Down
4 changes: 3 additions & 1 deletion rocketpool-cli/minipool/rescue-dissolved.go
Original file line number Diff line number Diff line change
Expand Up @@ -209,8 +209,10 @@ func rescueDissolved(c *cli.Context) error {
return nil
}

submit := !c.Bool("no-send")

// Refund minipool
response, err := rp.RescueDissolvedMinipool(selectedMinipool.Address, depositAmount)
response, err := rp.RescueDissolvedMinipool(selectedMinipool.Address, depositAmount, submit)
if err != nil {
return fmt.Errorf("Could not rescue minipool %s: %s.\n", selectedMinipool.Address.Hex(), err.Error())
}
Expand Down
10 changes: 7 additions & 3 deletions rocketpool/api/minipool/commands.go
Original file line number Diff line number Diff line change
Expand Up @@ -773,11 +773,11 @@ func RegisterSubcommands(command *cli.Command, name string, aliases []string) {
{
Name: "rescue-dissolved",
Usage: "Rescue a dissolved minipool by depositing ETH for it to the Beacon deposit contract",
UsageText: "rocketpool api minipool rescue-dissolved minipool-address deposit-amount",
UsageText: "rocketpool api minipool rescue-dissolved minipool-address deposit-amount submit",
Action: func(c *cli.Context) error {

// Validate args
if err := cliutils.ValidateArgCount(c, 2); err != nil {
if err := cliutils.ValidateArgCount(c, 3); err != nil {
return err
}
minipoolAddress, err := cliutils.ValidateAddress("minipool address", c.Args().Get(0))
Expand All @@ -788,9 +788,13 @@ func RegisterSubcommands(command *cli.Command, name string, aliases []string) {
if err != nil {
return err
}
submit, err := cliutils.ValidateBool("submit", c.Args().Get(2))
if err != nil {
return err
}

// Run
api.PrintResponse(rescueDissolvedMinipool(c, minipoolAddress, depositAmount))
api.PrintResponse(rescueDissolvedMinipool(c, minipoolAddress, depositAmount, submit))
return nil

},
Expand Down
14 changes: 13 additions & 1 deletion rocketpool/api/minipool/rescue-dissolved.go
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ func getDepositTx(rp *rocketpool.RocketPool, w *wallet.Wallet, bc beacon.Client,

}

func rescueDissolvedMinipool(c *cli.Context, minipoolAddress common.Address, amount *big.Int) (*api.RescueDissolvedMinipoolResponse, error) {
func rescueDissolvedMinipool(c *cli.Context, minipoolAddress common.Address, amount *big.Int, submit bool) (*api.RescueDissolvedMinipoolResponse, error) {

// Get services
if err := services.RequireNodeRegistered(c); err != nil {
Expand Down Expand Up @@ -316,11 +316,23 @@ func rescueDissolvedMinipool(c *cli.Context, minipoolAddress common.Address, amo
return nil, fmt.Errorf("Error checking for nonce override: %w", err)
}

opts.NoSend = !submit

// Submit the rescue deposit
tx, err := getDepositTx(rp, w, bc, minipoolAddress, amount, opts)
if err != nil {
return nil, fmt.Errorf("error submitting rescue deposit: %w", err)
}

// Print transaction if requested
if !submit {
b, err := tx.MarshalBinary()
if err != nil {
return nil, err
}
fmt.Printf("%x\n", b)
}

response.TxHash = tx.Hash()

// Return response
Expand Down
4 changes: 2 additions & 2 deletions shared/services/rocketpool/minipool.go
Original file line number Diff line number Diff line change
Expand Up @@ -521,8 +521,8 @@ func (c *Client) GetMinipoolRescueDissolvedDetailsForNode() (api.GetMinipoolResc
}

// Rescue a dissolved minipool by depositing ETH for it to the Beacon deposit contract
func (c *Client) RescueDissolvedMinipool(address common.Address, amount *big.Int) (api.RescueDissolvedMinipoolResponse, error) {
responseBytes, err := c.callAPI(fmt.Sprintf("minipool rescue-dissolved %s %s", address.Hex(), amount.String()))
func (c *Client) RescueDissolvedMinipool(address common.Address, amount *big.Int, submit bool) (api.RescueDissolvedMinipoolResponse, error) {
responseBytes, err := c.callAPI(fmt.Sprintf("minipool rescue-dissolved %s %s %t", address.Hex(), amount.String(), submit))
if err != nil {
return api.RescueDissolvedMinipoolResponse{}, fmt.Errorf("Could not rescue dissolved minipool: %w", err)
}
Expand Down
Loading