Files
ark/noah/faucet.go
Pietralberto Mazza d150c4bbac Add support for collaborative redemption of vtxos & Changes to ark wallet (#72)
* Add internal support for collaborative exit

* Update protos and interface layer

* Fixes after proto updates

* Fix printing json & Do not print ark pubkey in config

* Add collaborative redeem command

* Polish

* Add address validation

* Fix building tree without right branch

* Fixes and validation checks

* Fixes

* Fix counting complete queued payments

* Add relays

* Add and compute onchain balance concurrently

* Tiny refactor

* Merge `config connect` into `init` cmd
2023-12-29 17:09:50 +01:00

72 lines
1.3 KiB
Go

package main
import (
"context"
"fmt"
"io"
arkv1 "github.com/ark-network/ark/api-spec/protobuf/gen/ark/v1"
"github.com/urfave/cli/v2"
)
var faucetCommand = cli.Command{
Name: "faucet",
Usage: "Faucet your wallet",
Action: faucetAction,
}
func faucetAction(ctx *cli.Context) error {
addr, _, err := getAddress()
if err != nil {
return err
}
client, close, err := getClientFromState(ctx)
if err != nil {
return err
}
defer close()
_, err = client.Faucet(ctx.Context, &arkv1.FaucetRequest{
Address: addr,
})
if err != nil {
return err
}
eventStream, err := client.GetEventStream(ctx.Context, &arkv1.GetEventStreamRequest{})
if err != nil {
return err
}
for {
event, err := eventStream.Recv()
if err == io.EOF {
break
}
if err != nil {
return err
}
if event.GetRoundFinalization() != nil {
if _, err := client.FinalizePayment(context.Background(), &arkv1.FinalizePaymentRequest{
SignedForfeitTxs: event.GetRoundFinalization().GetForfeitTxs(),
}); err != nil {
return err
}
}
if event.GetRoundFailed() != nil {
return fmt.Errorf("faucet failed: %s", event.GetRoundFailed().GetReason())
}
if event.GetRoundFinalized() != nil {
return printJSON(map[string]interface{}{
"pool_txid": event.GetRoundFinalized().GetPoolTxid(),
})
}
}
return nil
}