Skip to content

Commit 84a616d

Browse files
authored
Merge pull request #928 from stellar/release/5.0.0
Release `5.0.0` to `main`
2 parents 96ba362 + 75c1143 commit 84a616d

File tree

166 files changed

+5957
-9047
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

166 files changed

+5957
-9047
lines changed

.env.example

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,4 @@ ADMIN_API_KEY=api_key_1234567890
4646
# scheduler options
4747
# ENABLE_SCHEDULER=true DEPRECATED Use EVENT_BROKER_TYPE=SCHEDULER instead.
4848
SCHEDULER_RECEIVER_INVITATION_JOB_SECONDS="10"
49-
SCHEDULER_PAYMENT_JOB_SECONDS="10"
50-
51-
# Event broker configuration options: KAFKA, SCHEDULER
52-
EVENT_BROKER_TYPE=SCHEDULER
49+
SCHEDULER_PAYMENT_JOB_SECONDS="10"

.github/workflows/anchor_platform_integration_check.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ jobs:
4242
echo 'Anchor-platform is up and running.'
4343
4444
- name: Install NodeJs
45-
uses: actions/setup-node@v5
45+
uses: actions/setup-node@v6
4646
with:
4747
node-version: 14
4848

.github/workflows/ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ jobs:
7575
uses: actions/checkout@v5
7676

7777
- name: Install NodeJs
78-
uses: actions/setup-node@v5
78+
uses: actions/setup-node@v6
7979
with:
8080
node-version: 14
8181

@@ -103,7 +103,7 @@ jobs:
103103
uses: actions/checkout@v5
104104

105105
- name: Install NodeJs
106-
uses: actions/setup-node@v5
106+
uses: actions/setup-node@v6
107107
with:
108108
node-version: 20
109109

.github/workflows/docker_image_public_release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ jobs:
5858
- uses: actions/checkout@v5
5959

6060
- name: Login to DockerHub
61-
uses: docker/login-action@v3.5.0
61+
uses: docker/login-action@v3.6.0
6262
with:
6363
username: ${{ secrets.DOCKERHUB_USERNAME }}
6464
password: ${{ secrets.DOCKERHUB_TOKEN }}
@@ -84,7 +84,7 @@ jobs:
8484
- uses: actions/checkout@v5
8585

8686
- name: Login to DockerHub
87-
uses: docker/login-action@v3.5.0
87+
uses: docker/login-action@v3.6.0
8888
with:
8989
username: ${{ secrets.DOCKERHUB_USERNAME }}
9090
password: ${{ secrets.DOCKERHUB_TOKEN }}

CHANGELOG.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,28 @@ All notable changes to this project will be documented in this file.
44

55
The format is based on [Keep a Changelog](https://keepachangelog.com/).
66

7+
## [5.0.0](https://github.com/stellar/stellar-disbursement-platform-backend/releases/tag/5.0.0) ([diff](https://github.com/stellar/stellar-disbursement-platform-backend/compare/4.1.0...5.0.0))
8+
9+
### Added
10+
11+
- Improve observability for the SDP service by adding the following :
12+
- tag metrics by tenant name to differentiate between tenants
13+
- configure Summary metrics with percentiles for HTTP request durations (0.5, 0.9, 0.95, 0.99)
14+
- rework Grafana dashboard to include tenant tag and new metrics
15+
- [#818](https://github.com/stellar/stellar-disbursement-platform-backend/pull/818)
16+
- Add organization level MFA and ReCAPTCHA settings [#861](https://github.com/stellar/stellar-disbursement-platform-backend/pull/861)
17+
- Add trustlines for distribution account when provisioning tenant [#891](https://github.com/stellar/stellar-disbursement-platform-backend/pull/891)
18+
- Add support for contract account disbursements [#922](https://github.com/stellar/stellar-disbursement-platform-backend/pull/922)
19+
- Add contract account support for direct payments [#924](https://github.com/stellar/stellar-disbursement-platform-backend/pull/924)
20+
- Add support for contract addresses for PATCH receiver [#925](https://github.com/stellar/stellar-disbursement-platform-backend/pull/925)
21+
- Mark tx failures due to archived entries as error [#926](https://github.com/stellar/stellar-disbursement-platform-backend/pull/926)
22+
23+
### Changed
24+
- Decommissioned Event Broker Kafka support in favor of Scheduler for background jobs. [#914](https://github.com/stellar/stellar-disbursement-platform-backend/pull/914)
25+
- Allow configuring `resources` limits and requests for services in the Helm charts [#904](https://github.com/stellar/stellar-disbursement-platform-backend/pull/904)
26+
- Enable short linking by default [#916](https://github.com/stellar/stellar-disbursement-platform-backend/pull/916)
27+
- Make POST /wallets and PATCH /wallets permissions consistent [#909](https://github.com/stellar/stellar-disbursement-platform-backend/pull/909)
28+
729
## [4.1.0](https://github.com/stellar/stellar-disbursement-platform-backend/releases/tag/4.1.0) ([diff](https://github.com/stellar/stellar-disbursement-platform-backend/compare/4.0.1...4.1.0))
830

931
### Added

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# To push:
44
# make docker-push
55

6-
FROM golang:1.25.1-alpine AS build
6+
FROM golang:1.25.3-alpine AS build
77
ARG GIT_COMMIT
88

99
ENV CGO_ENABLED=0 GOOS=linux

Dockerfile.development

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Stage 1: Build the Go application
2-
FROM golang:1.25.1-alpine AS build
2+
FROM golang:1.25.3-alpine AS build
33
ARG GIT_COMMIT
44

55
WORKDIR /src/stellar-disbursement-platform
@@ -9,7 +9,7 @@ COPY . ./
99
RUN go build -o /bin/stellar-disbursement-platform -ldflags "-X main.GitCommit=$GIT_COMMIT" .
1010

1111
# Stage 2: Setup the development environment with Delve for debugging
12-
FROM golang:1.25.1-alpine AS development
12+
FROM golang:1.25.3-alpine AS development
1313

1414
# set workdir according to repo structure so remote debug source code is in sync
1515
WORKDIR /app/github.com/stellar/stellar-disbursement-platform

README.md

Lines changed: 17 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,11 @@ Security is a critical aspect of the SDP. The measures outlined in this document
6565

6666
Google's reCAPTCHA has been integrated into the SDP to prevent automated attacks and ensure that interactions are performed by humans, not bots.
6767

68+
69+
ReCAPTCHA can be configured at two levels:
70+
1. **Environment level (default)**: Set the `DISABLE_RECAPTCHA` environment variable to `true` to disable for all tenants
71+
2. **Organization level**: Each tenant can override the environment default through the organization settings (via API or UI)
72+
6873
The SDP supports both reCAPTCHA v2 ("I'm not a robot") and reCAPTCHA v3 (invisible, score-based) implementations:
6974

7075
- **reCAPTCHA v2**: Traditional checkbox-based verification
@@ -80,15 +85,21 @@ The SDP supports both reCAPTCHA v2 ("I'm not a robot") and reCAPTCHA v3 (invisib
8085

8186
ReCAPTCHA is enabled by default and can be disabled in the development environment by setting the `DISABLE_RECAPTCHA` environment variable to `true`.
8287

83-
**Note:** Disabling reCAPTCHA is supported for pubnet environments but this might reduce security!.
88+
The organization-level setting takes precedence over the environment default when explicitly set. If not set at the organization level, the environment default is used.
89+
90+
**Note:** Disabling reCAPTCHA is supported for pubnet environments but this might reduce security!
8491

8592
### Enforcement of Multi-Factor Authentication
8693

8794
Multi-Factor Authentication (MFA) provides an additional layer of security to user accounts. It is enforced by default on the SDP and it relies on OTPs sent to the account's email.
8895

89-
MFA is enabled by default and can be disabled in the development environment by setting the `DISABLE_MFA` environment variable to `true`.
96+
MFA can be configured at two levels:
97+
1. **Environment level (default)**: Set the `DISABLE_MFA` environment variable to `true` to disable for all tenants
98+
2. **Organization level**: Each tenant can override the environment default through the organization settings (via API or UI)
9099

91-
**Note:** Disabling MFA is not supported for production environments due to security risks.
100+
The organization-level setting takes precedence over the environment default when explicitly set. If not set at the organization level, the environment default is used.
101+
102+
**Note:** Disabling MFA is not recommended for production environments due to security risks.
92103

93104
### Best Practices for Wallet Management
94105

@@ -279,56 +290,8 @@ The tables below are shared by the transaction submission service and core servi
279290

280291
Note that the `submitter_transactions` table is used by the TSS and will be managed by the service when moved to its own project.
281292

282-
### Event Brokers & Background jobs
283-
284-
The SDP can use either an Event Broker or Background jobs to handle asynchronous tasks. The choice depends on the requirements of the organization using the SDP.
285-
Currently, the SDP only supports Kafka as an Event Broker even though it has been designed to support other brokers through the use of interfaces.
286-
287-
> [!NOTE]
288-
> In order to avoid concurrency issues, the SDP only supports one Event Broker or Background Jobs at a time.
289-
290-
#### Configuration Options
291-
292-
The SDP configuration is controlled by the `EVENT_BROKER_TYPE` environment variable:
293-
294-
* `EVENT_BROKER_TYPE=KAFKA` - Uses Kafka for event handling (recommended for multi-tenant deployments)
295-
* `EVENT_BROKER_TYPE=SCHEDULER` - Uses background jobs (recommended for single-tenant deployments)
296-
297-
298-
#### Kafka
299-
We recommend Kafka for organizations that require high throughput and low latency. Organizations that plan on hosting multiple tenants on the SDP should consider using Kafka.
300-
301-
**1. Topics**
302-
303-
* `events.receiver-wallets.new_invitation`: This topic is used to send disbursement invites to recipients. *[Producer: Core, Consumer: Core]*
304-
* `events.payment.ready_to_pay`: This topic is used to submit payments from the Core to the TSS. *[Producer: Core, Consumer: TSS]*
305-
* `events.payment.circle_ready_to_pay`: This topic is used to submit Circle payments. *[Producer: Core, Consumer: Core]*
306-
* `events.payment.payment_completed`: This topic is used to notify the Core that a payment has been completed. *[Producer: TSS, Consumer: Core]*
307-
308-
For each of the topics above, there is a dead letter topic that is used to store messages that could not be processed. The dead letter topics are named as follows:
309-
* `events.receiver-wallets.new_invitation.dlq`
310-
* `events.payment.ready_to_pay.dlq`
311-
* `events.payment.circle_ready_to_pay.dlq`
312-
* `events.payment.payment_completed.dlq`
313-
314-
315-
**2. Configuration**
316-
317-
In order to use Kafka, you need to set the following environment variables for SDP and TSS.
318-
319-
```sh
320-
EVENT_BROKER_TYPE: "KAFKA"
321-
BROKER_URLS: # comma separated list of broker urls
322-
CONSUMER_GROUP_ID: # consumer group id
323-
KAFKA_SECURITY_PROTOCOL: # possible values "PLAINTEXT", "SASL_SSL", "SASL_PLAINTEXT" or "SSL"
324-
KAFKA_SASL_USERNAME: # username for SASL authentication. Required if KAFKA_SECURITY_PROTOCOL is "SASL_SSL" or "SASL_PLAINTEXT"
325-
KAFKA_SASL_PASSWORD: # password for SASL authentication. Required if KAFKA_SECURITY_PROTOCOL is "SASL_SSL" or "SASL_PLAINTEXT"
326-
KAFKA_SSL_ACCESS_KEY: # access key (keystore) in PEM format. Required if KAFKA_SECURITY_PROTOCOL is "SSL"
327-
KAFKA_SSL_ACCESS_CERTIFICATE: # certificate in PEM format that matches the access key. Required if KAFKA_SECURITY_PROTOCOL is "SSL"
328-
```
329-
330-
#### Background Jobs
331-
We recommend Background Jobs for organizations that require a simpler setup and do not need high throughput or low latency. Organizations that plan on hosting a single tenant on the SDP should consider using Background Jobs.
293+
### Background jobs
294+
The SDP uses Background jobs to handle asynchronous tasks.
332295

333296
**1. Jobs**
334297

@@ -342,10 +305,9 @@ We recommend Background Jobs for organizations that require a simpler setup and
342305

343306
**2. Configuration**
344307

345-
In order to use Background Jobs, we need to set the following environment variable for Core.
308+
The following environment variables can be used to configure the intervals of the jobs listed above.
346309

347310
```sh
348-
EVENT_BROKER_TYPE: "SCHEDULER"
349311
SCHEDULER_RECEIVER_INVITATION_JOB_SECONDS: # interval in seconds
350312
SCHEDULER_PAYMENT_JOB_SECONDS: # interval in seconds
351313
```

0 commit comments

Comments
 (0)