diff --git a/docs/release-notes/release-notes-next.md b/docs/release-notes/release-notes-next.md index 74a56ada..6e1c177c 100644 --- a/docs/release-notes/release-notes-next.md +++ b/docs/release-notes/release-notes-next.md @@ -15,6 +15,12 @@ `ListReservations`, `InstantOut`, `InstantOutQuote`, or `ListInstantOuts`. [PR #1194](https://github.com/lightninglabs/loop/pull/1194) +* Calling `NewStaticAddress` without `send_coins_request.addr` now derives and + returns a fresh receive address instead of reusing the address associated + with the client's L402. Integrations must not assume that repeated calls are + idempotent or return the same address. + [PR #1139](https://github.com/lightninglabs/loop/pull/1139) + #### Bug Fixes * Loop Out requests now account for channel reserves when checking outbound diff --git a/looprpc/client.proto b/looprpc/client.proto index 36374957..c999b445 100644 --- a/looprpc/client.proto +++ b/looprpc/client.proto @@ -163,7 +163,9 @@ service SwapClient { returns (ListInstantOutsResponse); /* loop: `static newstaticaddress` - NewStaticAddress requests a new static address for loop-ins from the server. + NewStaticAddress derives a fresh static receive address on every request + without send_coins_request.addr, or funds an existing address when addr is + set. */ rpc NewStaticAddress (NewStaticAddressRequest) returns (NewStaticAddressResponse); diff --git a/looprpc/client.swagger.json b/looprpc/client.swagger.json index 15ff61af..856f5072 100644 --- a/looprpc/client.swagger.json +++ b/looprpc/client.swagger.json @@ -870,7 +870,7 @@ }, "/v1/staticaddr": { "post": { - "summary": "loop: `static newstaticaddress`\nNewStaticAddress requests a new static address for loop-ins from the server.", + "summary": "loop: `static newstaticaddress`\nNewStaticAddress derives a fresh static receive address on every request\nwithout send_coins_request.addr, or funds an existing address when addr is\nset.", "operationId": "SwapClient_NewStaticAddress", "responses": { "200": { diff --git a/looprpc/client_grpc.pb.go b/looprpc/client_grpc.pb.go index b03cc9e8..8fcce869 100644 --- a/looprpc/client_grpc.pb.go +++ b/looprpc/client_grpc.pb.go @@ -114,7 +114,9 @@ type SwapClientClient interface { // their current status. ListInstantOuts(ctx context.Context, in *ListInstantOutsRequest, opts ...grpc.CallOption) (*ListInstantOutsResponse, error) // loop: `static newstaticaddress` - // NewStaticAddress requests a new static address for loop-ins from the server. + // NewStaticAddress derives a fresh static receive address on every request + // without send_coins_request.addr, or funds an existing address when addr is + // set. NewStaticAddress(ctx context.Context, in *NewStaticAddressRequest, opts ...grpc.CallOption) (*NewStaticAddressResponse, error) // loop: `static listunspentdeposits` // ListUnspentDeposits returns a list of utxos deposited at a static address. @@ -574,7 +576,9 @@ type SwapClientServer interface { // their current status. ListInstantOuts(context.Context, *ListInstantOutsRequest) (*ListInstantOutsResponse, error) // loop: `static newstaticaddress` - // NewStaticAddress requests a new static address for loop-ins from the server. + // NewStaticAddress derives a fresh static receive address on every request + // without send_coins_request.addr, or funds an existing address when addr is + // set. NewStaticAddress(context.Context, *NewStaticAddressRequest) (*NewStaticAddressResponse, error) // loop: `static listunspentdeposits` // ListUnspentDeposits returns a list of utxos deposited at a static address.