From 3500550686f3add7202224edbf0d4b32e866c12d Mon Sep 17 00:00:00 2001 From: Josh Rickmar Date: Fri, 1 Sep 2023 13:40:22 +0000 Subject: [PATCH 1/2] Check confirmations for submitted unmixed utxo inputs --- coinjoin/coinjoin.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/coinjoin/coinjoin.go b/coinjoin/coinjoin.go index eabd5a5..12ef9d9 100644 --- a/coinjoin/coinjoin.go +++ b/coinjoin/coinjoin.go @@ -311,7 +311,8 @@ func verifyOutput(c Caller, outpoint *wire.OutPoint, value int64) error { ctx, cancel := context.WithTimeout(context.Background(), rpcTimeout) defer cancel() var res struct { - Value float64 `json:"value"` + Value float64 `json:"value"` + Confirmations int64 `json:"confirmations"` } err := c.Call(ctx, "gettxout", &res, outpoint.Hash.String(), outpoint.Index, outpoint.Tree) if err != nil { @@ -323,6 +324,12 @@ func verifyOutput(c Caller, outpoint *wire.OutPoint, value int64) error { nil, } } + if res.Confirmations <= 0 { + return &blameError{ + fmt.Sprintf("output %v has not been confirmed", outpoint), + nil, + } + } return nil } From e31630daf288babe233b26451d5765cfa3ba446b Mon Sep 17 00:00:00 2001 From: Josh Rickmar Date: Fri, 1 Sep 2023 13:44:55 +0000 Subject: [PATCH 2/2] add to integration tests --- integration/honest_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration/honest_test.go b/integration/honest_test.go index 6fb0ebb..16ee136 100644 --- a/integration/honest_test.go +++ b/integration/honest_test.go @@ -39,7 +39,7 @@ var inputValueJSON []byte func TestMain(m *testing.M) { flag.Parse() inputValue = int64(*mFlag) + 1 - inputValueJSON = []byte(fmt.Sprintf(`{"value":%v}`, inputValue)) + inputValueJSON = []byte(fmt.Sprintf(`{"value":%v,"confirmations":1}`, inputValue)) os.Exit(m.Run()) }