Skip to content

Commit 7606b4c

Browse files
authored
Drop unconditional forfeits txs in offline payment (#344)
* remove unconditionnal forfeit tx * fix sqlite vtxo repo * remove pendingData struct * delete uncond_forfeits_tx table
1 parent 1d40892 commit 7606b4c

33 files changed

+1639
-1026
lines changed

api-spec/openapi/swagger/ark/v1/service.swagger.json

+2-28
Original file line numberDiff line numberDiff line change
@@ -511,12 +511,6 @@
511511
"properties": {
512512
"signedRedeemTx": {
513513
"type": "string"
514-
},
515-
"signedUnconditionalForfeitTxs": {
516-
"type": "array",
517-
"items": {
518-
"type": "string"
519-
}
520514
}
521515
}
522516
},
@@ -548,12 +542,6 @@
548542
"signedRedeemTx": {
549543
"type": "string",
550544
"title": "signed only by the ASP"
551-
},
552-
"usignedUnconditionalForfeitTxs": {
553-
"type": "array",
554-
"items": {
555-
"type": "string"
556-
}
557545
}
558546
}
559547
},
@@ -735,20 +723,6 @@
735723
}
736724
}
737725
},
738-
"v1PendingPayment": {
739-
"type": "object",
740-
"properties": {
741-
"redeemTx": {
742-
"type": "string"
743-
},
744-
"unconditionalForfeitTxs": {
745-
"type": "array",
746-
"items": {
747-
"type": "string"
748-
}
749-
}
750-
}
751-
},
752726
"v1PingResponse": {
753727
"type": "object",
754728
"properties": {
@@ -1094,8 +1068,8 @@
10941068
"pending": {
10951069
"type": "boolean"
10961070
},
1097-
"pendingData": {
1098-
"$ref": "#/definitions/v1PendingPayment"
1071+
"redeemTx": {
1072+
"type": "string"
10991073
},
11001074
"amount": {
11011075
"type": "string",

api-spec/protobuf/ark/v1/service.proto

+1-7
Original file line numberDiff line numberDiff line change
@@ -193,12 +193,10 @@ message CreatePaymentRequest {
193193
}
194194
message CreatePaymentResponse {
195195
string signed_redeem_tx = 1; // signed only by the ASP
196-
repeated string usigned_unconditional_forfeit_txs = 2;
197196
}
198197

199198
message CompletePaymentRequest {
200199
string signed_redeem_tx = 1;
201-
repeated string signed_unconditional_forfeit_txs = 2;
202200
}
203201
message CompletePaymentResponse {}
204202

@@ -318,14 +316,10 @@ message Vtxo {
318316
int64 expire_at = 6;
319317
bool swept = 7;
320318
bool pending = 8;
321-
PendingPayment pending_data = 9;
319+
string redeem_tx = 9;
322320
uint64 amount = 10;
323321
}
324322

325-
message PendingPayment {
326-
string redeem_tx = 1;
327-
repeated string unconditional_forfeit_txs =2;
328-
}
329323

330324
message GetTransactionsStreamRequest {}
331325
message GetTransactionsStreamResponse {

api-spec/protobuf/gen/ark/v1/service.pb.go

+369-472
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/client-sdk/client/client.go

+9-10
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ type ASPClient interface {
4242
Ping(ctx context.Context, paymentID string) (RoundEvent, error)
4343
CreatePayment(
4444
ctx context.Context, inputs []Input, outputs []Output,
45-
) (string, []string, error)
45+
) (string, error)
4646
CompletePayment(
47-
ctx context.Context, signedRedeemTx string, signedUnconditionalForfeitTxs []string,
47+
ctx context.Context, signedRedeemTx string,
4848
) error
4949
ListVtxos(ctx context.Context, addr string) ([]Vtxo, []Vtxo, error)
5050
GetRound(ctx context.Context, txID string) (*Round, error)
@@ -80,14 +80,13 @@ type Input struct {
8080

8181
type Vtxo struct {
8282
Outpoint
83-
Descriptor string
84-
Amount uint64
85-
RoundTxid string
86-
ExpiresAt *time.Time
87-
RedeemTx string
88-
UnconditionalForfeitTxs []string
89-
Pending bool
90-
SpentBy string
83+
Descriptor string
84+
Amount uint64
85+
RoundTxid string
86+
ExpiresAt *time.Time
87+
RedeemTx string
88+
Pending bool
89+
SpentBy string
9190
}
9291

9392
type Output struct {

pkg/client-sdk/client/grpc/client.go

+5-6
Original file line numberDiff line numberDiff line change
@@ -238,24 +238,23 @@ func (a *grpcClient) Ping(
238238

239239
func (a *grpcClient) CreatePayment(
240240
ctx context.Context, inputs []client.Input, outputs []client.Output,
241-
) (string, []string, error) {
241+
) (string, error) {
242242
req := &arkv1.CreatePaymentRequest{
243243
Inputs: ins(inputs).toProto(),
244244
Outputs: outs(outputs).toProto(),
245245
}
246246
resp, err := a.svc.CreatePayment(ctx, req)
247247
if err != nil {
248-
return "", nil, err
248+
return "", err
249249
}
250-
return resp.SignedRedeemTx, resp.UsignedUnconditionalForfeitTxs, nil
250+
return resp.SignedRedeemTx, nil
251251
}
252252

253253
func (a *grpcClient) CompletePayment(
254-
ctx context.Context, redeemTx string, signedForfeitTxs []string,
254+
ctx context.Context, redeemTx string,
255255
) error {
256256
req := &arkv1.CompletePaymentRequest{
257-
SignedRedeemTx: redeemTx,
258-
SignedUnconditionalForfeitTxs: signedForfeitTxs,
257+
SignedRedeemTx: redeemTx,
259258
}
260259
_, err := a.svc.CompletePayment(ctx, req)
261260
return err

pkg/client-sdk/client/grpc/types.go

+7-14
Original file line numberDiff line numberDiff line change
@@ -118,25 +118,18 @@ func (v vtxo) toVtxo() client.Vtxo {
118118
t := time.Unix(v.GetExpireAt(), 0)
119119
expiresAt = &t
120120
}
121-
var redeemTx string
122-
var uncondForfeitTxs []string
123-
if v.GetPendingData() != nil {
124-
redeemTx = v.GetPendingData().GetRedeemTx()
125-
uncondForfeitTxs = v.GetPendingData().GetUnconditionalForfeitTxs()
126-
}
127121
return client.Vtxo{
128122
Outpoint: client.Outpoint{
129123
Txid: v.GetOutpoint().GetTxid(),
130124
VOut: v.GetOutpoint().GetVout(),
131125
},
132-
Amount: v.GetAmount(),
133-
RoundTxid: v.GetRoundTxid(),
134-
ExpiresAt: expiresAt,
135-
Pending: v.GetPending(),
136-
RedeemTx: redeemTx,
137-
UnconditionalForfeitTxs: uncondForfeitTxs,
138-
SpentBy: v.GetSpentBy(),
139-
Descriptor: v.GetDescriptor_(),
126+
Amount: v.GetAmount(),
127+
RoundTxid: v.GetRoundTxid(),
128+
ExpiresAt: expiresAt,
129+
Pending: v.GetPending(),
130+
RedeemTx: v.GetRedeemTx(),
131+
SpentBy: v.GetSpentBy(),
132+
Descriptor: v.GetDescriptor_(),
140133
}
141134
}
142135

pkg/client-sdk/client/rest/client.go

+13-23
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ func (a *restClient) Ping(
338338

339339
func (a *restClient) CreatePayment(
340340
ctx context.Context, inputs []client.Input, outputs []client.Output,
341-
) (string, []string, error) {
341+
) (string, error) {
342342
ins := make([]*models.V1Input, 0, len(inputs))
343343
for _, i := range inputs {
344344
ins = append(ins, &models.V1Input{
@@ -365,21 +365,19 @@ func (a *restClient) CreatePayment(
365365
ark_service.NewArkServiceCreatePaymentParams().WithBody(&body),
366366
)
367367
if err != nil {
368-
return "", nil, err
368+
return "", err
369369
}
370-
return resp.GetPayload().SignedRedeemTx, resp.GetPayload().UsignedUnconditionalForfeitTxs, nil
370+
return resp.GetPayload().SignedRedeemTx, nil
371371
}
372372

373373
func (a *restClient) CompletePayment(
374-
ctx context.Context, signedRedeemTx string, signedUncondForfeitTxs []string,
374+
ctx context.Context, signedRedeemTx string,
375375
) error {
376376
req := &arkv1.CompletePaymentRequest{
377-
SignedRedeemTx: signedRedeemTx,
378-
SignedUnconditionalForfeitTxs: signedUncondForfeitTxs,
377+
SignedRedeemTx: signedRedeemTx,
379378
}
380379
body := models.V1CompletePaymentRequest{
381-
SignedRedeemTx: req.GetSignedRedeemTx(),
382-
SignedUnconditionalForfeitTxs: req.GetSignedUnconditionalForfeitTxs(),
380+
SignedRedeemTx: req.GetSignedRedeemTx(),
383381
}
384382
_, err := a.svc.ArkServiceCompletePayment(
385383
ark_service.NewArkServiceCompletePaymentParams().WithBody(&body),
@@ -492,26 +490,18 @@ func (a *restClient) ListVtxos(
492490
return nil, nil, err
493491
}
494492

495-
var redeemTx string
496-
var uncondForfeitTxs []string
497-
if v.PendingData != nil {
498-
redeemTx = v.PendingData.RedeemTx
499-
uncondForfeitTxs = v.PendingData.UnconditionalForfeitTxs
500-
}
501-
502493
spendableVtxos = append(spendableVtxos, client.Vtxo{
503494
Outpoint: client.Outpoint{
504495
Txid: v.Outpoint.Txid,
505496
VOut: uint32(v.Outpoint.Vout),
506497
},
507-
Amount: uint64(amount),
508-
RoundTxid: v.RoundTxid,
509-
ExpiresAt: expiresAt,
510-
Pending: v.Pending,
511-
RedeemTx: redeemTx,
512-
UnconditionalForfeitTxs: uncondForfeitTxs,
513-
SpentBy: v.SpentBy,
514-
Descriptor: v.Descriptor,
498+
Amount: uint64(amount),
499+
RoundTxid: v.RoundTxid,
500+
ExpiresAt: expiresAt,
501+
Pending: v.Pending,
502+
RedeemTx: v.RedeemTx,
503+
SpentBy: v.SpentBy,
504+
Descriptor: v.Descriptor,
515505
})
516506
}
517507

pkg/client-sdk/client/rest/service/arkservice/ark_service/ark_service_client.go

+39
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)