Skip to content

Commit 29dd299

Browse files
authored
chore: prepare 1.3.0 release (#513)
2 parents b9e76cb + f9d0210 commit 29dd299

File tree

131 files changed

+9052
-3519
lines changed

Some content is hidden

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

131 files changed

+9052
-3519
lines changed

.env.IntegrationTest

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,4 +140,10 @@ DB_POSTGRES_JIT=off
140140
DB_POSTGRES_BGWRITER_LRU_MAXPAGES=50
141141
DB_POSTGRES_BGWRITER_DELAY=500ms
142142

143-
SYNC_GRACE_SLOTS_COUNT=100
143+
SYNC_GRACE_SLOTS_COUNT=100
144+
145+
## When set to true, the parsing / processing blockchain data even if an error occurs.
146+
CONTINUE_PARSING_ON_ERROR=false
147+
148+
## Indexer sync starts after node is at tip. Set false for offline mode.
149+
SYNC=false

.env.docker-compose

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
## Main variables
22
API_SPRING_PROFILES_ACTIVE=online
3-
LOG=INFO
3+
LOG=ERROR
44
NETWORK=mainnet
55
# mainnet, preprod, preview, devkit
66
PROTOCOL_MAGIC=764824073
@@ -34,7 +34,7 @@ CARDANO_CONFIG=./config/node/${NETWORK}
3434

3535
## Mithril
3636
MITHRIL_SYNC=true
37-
MITHRIL_VERSION=2517.1
37+
MITHRIL_VERSION=2524.0
3838
SNAPSHOT_DIGEST=latest
3939
# if not set standard values will be used
4040
AGGREGATOR_ENDPOINT=
@@ -99,4 +99,10 @@ SYNC_GRACE_SLOTS_COUNT=100
9999
## Monitoring variables
100100
PROMETHEUS_PORT=9090
101101
GRAFANA_PORT=3000
102-
POSTGRESQL_EXPORTER_PORT=9187
102+
POSTGRESQL_EXPORTER_PORT=9187
103+
104+
## When set to true, the parsing / processing blockchain data even if an error occurs.
105+
CONTINUE_PARSING_ON_ERROR=true
106+
107+
## Indexer sync starts after node is at tip. Set false for offline mode.
108+
SYNC=true

.env.docker-compose-preprod

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,11 @@ NODE_SUBMIT_API_PORT=8090
3030
CARDANO_NODE_DIR=/opt/rosetta-java-preprod/node_data
3131
CARDANO_NODE_SOCKET_PATH=${CARDANO_NODE_DIR}/node.socket
3232
CARDANO_NODE_DB=${CARDANO_NODE_DIR}/db
33-
CARDANO_CONFIG=./config/${NETWORK}
33+
CARDANO_CONFIG=./config/node/${NETWORK}
3434

3535
## Mithril
3636
MITHRIL_SYNC=true
37-
MITHRIL_VERSION=2517.1
37+
MITHRIL_VERSION=2524.0
3838
SNAPSHOT_DIGEST=latest
3939
# if not set standard values will be used
4040
AGGREGATOR_ENDPOINT=
@@ -96,6 +96,12 @@ API_DB_LEAK_CONNECTIONS_WARNING_MS=60000
9696

9797
SYNC_GRACE_SLOTS_COUNT=100
9898

99+
## When set to true, the parsing / processing blockchain data even if an error occurs.
100+
CONTINUE_PARSING_ON_ERROR=false
101+
102+
## Indexer sync starts after node is at tip. Set false for offline mode.
103+
SYNC=true
104+
99105
## Monitoring variables
100106
PROMETHEUS_PORT=9090
101107
GRAFANA_PORT=3000

.env.h2

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,4 +95,10 @@ DB_POSTGRES_BGWRITER_DELAY=500ms
9595
# Path to local cardano node socket (Yaci DevKit)
9696
CARDANO_NODE_SOCKET_PATH=${HOME}/.yaci-cli/local-clusters/default/node/node.sock
9797

98-
SYNC_GRACE_SLOTS_COUNT=100
98+
SYNC_GRACE_SLOTS_COUNT=100
99+
100+
## When set to true, the parsing / processing blockchain data even if an error occurs.
101+
CONTINUE_PARSING_ON_ERROR=false
102+
103+
## Indexer sync starts after node is at tip. Set false for offline mode.
104+
SYNC=false

.env.h2-testdata

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,4 +96,10 @@ DB_POSTGRES_BGWRITER_DELAY=500ms
9696
# Path to local cardano node socket (Yaci DevKit)
9797
CARDANO_NODE_SOCKET_PATH=${HOME}/.yaci-cli/local-clusters/default/node/node.sock
9898

99-
SYNC_GRACE_SLOTS_COUNT=100
99+
SYNC_GRACE_SLOTS_COUNT=100
100+
101+
## When set to true, the parsing / processing blockchain data even if an error occurs.
102+
CONTINUE_PARSING_ON_ERROR=false
103+
104+
## Indexer sync starts after node is at tip. Set false for offline mode.
105+
SYNC=false

CLAUDE.md

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
Rosetta-Java Cardano Application — Development Guide (Context Window For AI Agents)
2+
3+
✅ Overview
4+
5+
This project is a Java implementation of the Rosetta specification, adapted from Coinbase’s original mesh. It targets the Cardano blockchain and is optimized for performance, scalability, and testability.
6+
7+
8+
9+
🛠️ Technologies & Standards
10+
• Java 24 – Latest LTS features leveraged.
11+
• Lombok – For reducing boilerplate (e.g., getters, constructors).
12+
• Hibernate + JOOQ – A hybrid approach planned:
13+
• Hibernate for standard ORM tasks.
14+
• JOOQ for complex SQL operations.
15+
• Hibernate for standard ORM needs.
16+
• JOOQ for high-performance, complex SQL queries.
17+
• Flywheel – Used for event-sourced state and domain logic.
18+
• OpenAPI (api.yaml) – Contract-first approach:
19+
• Edit src/main/resources/rosetta-specifications-1.4.15/api.yaml for API changes.
20+
• Code generation tools automatically create request/response classes.
21+
• No Spring RestControllers – All endpoints are generated from OpenAPI spec; avoid manually annotating endpoints.
22+
• JUnit 5 with @Nested tests – Organize tests into logical groups.
23+
• AssertJ – Preferred assertion framework for fluent and expressive assertions.
24+
25+
26+
27+
📋 Step-by-Step Context Window / Discovery
28+
29+
1. Rosetta API Specification
30+
• Maintained in:
31+
src/main/resources/rosetta-specifications-1.4.15/api.yaml
32+
• ❗ All endpoints and models are generated, do not manually modify controller classes.
33+
34+
2. Code Generation
35+
• Triggered via build tools (Gradle/Maven).
36+
• Output includes:
37+
• DTOs
38+
• Server interfaces
39+
• Clients
40+
• Ensures OpenAPI remains the single source of truth.
41+
42+
3. Persistence Layer
43+
• Hibernate handles standard CRUD and entity management.
44+
• JOOQ will be used for:
45+
• Bulk operations
46+
• Deep filtering
47+
• Custom joins / window functions
48+
• Both work seamlessly alongside Flywheel event sourcing.
49+
50+
4. Domain Logic with Flywheel
51+
• Domain state transitions are event-driven.
52+
• Promotes traceability and immutability.
53+
54+
5. Testing Strategy
55+
• JUnit 5 with @Nested classes to:
56+
• Separate concerns within test files.
57+
• Improve readability and scope clarity.
58+
• AssertJ provides fluent API for:
59+
• Clean, expressive assertions.
60+
• Better failure messages than vanilla JUnit or Hamcrest.
61+
62+
63+
64+
📎 Notes
65+
• Avoid using @RestController or manual API layer.
66+
• All changes to API contract must be made in api.yaml.
67+
• Lombok annotations (@Value, @Builder, @Getter, etc.) are preferred to minimize boilerplate.

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
## What the project is about?
77

8+
89
This repository provides a lightweight java implementation of the [Rosetta API](https://github.com/coinbase/mesh-specifications). It uses [Yaci-Store](https://github.com/bloxbean/yaci-store) as an indexer
910
to fetch the data from a Cardano node.
1011

@@ -99,15 +100,15 @@ For every Release we provide pre-built docker images stored in the DockerHub Rep
99100
To start it use the following command:
100101

101102
```bash
102-
docker run --name rosetta -v {CUSTOM_MOUNT_PATH}:/node --env-file ./docker/.env.dockerfile --env-file ./docker/.env.docker-profile-mid-level -p 8082:8082 --shm-size=4g -d cardanofoundation/cardano-rosetta-java:1.2.10
103+
docker run --name rosetta -v {CUSTOM_MOUNT_PATH}:/node --env-file ./docker/.env.dockerfile --env-file ./docker/.env.docker-profile-mid-level -p 8082:8082 --shm-size=4g -d cardanofoundation/cardano-rosetta-java:1.3.0
103104
```
104105

105106
Changes to the configuration can be made by adjusting the `docker/.env.dockerfile` file. For more information on the environment variables, please refer to the [documentation](https://cardano-foundation.github.io/cardano-rosetta-java/docs/install-and-deploy/env-vars).
106107

107108
If you want to use the `cardano-submit-api` you can additionally expose port `8090`. It can then be used to submit raw cbor transaction (API documentation here: [Link](https://input-output-hk.github.io/cardano-rest/submit-api/))
108109

109110
```bash
110-
docker run --name rosetta -v {CUSTOM_MOUNT_PATH}:/node --env-file ./docker/.env.dockerfile --env-file ./docker/.env.docker-profile-mid-level -p 8090:8090 -p 8082:8082 --shm-size=4g -d cardanofoundation/cardano-rosetta-java:1.2.10
111+
docker run --name rosetta -v {CUSTOM_MOUNT_PATH}:/node --env-file ./docker/.env.dockerfile --env-file ./docker/.env.docker-profile-mid-level -p 8090:8090 -p 8082:8082 --shm-size=4g -d cardanofoundation/cardano-rosetta-java:1.3.0
111112
```
112113

113114
### Docker compose

api/mvnw

100644100755
File mode changed.

api/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,7 @@
275275
<sourceFolder>src/gen/java/main</sourceFolder>
276276
<useJakartaEe>true</useJakartaEe>
277277
<skipValidateSpec>true</skipValidateSpec>
278+
<useEnumCaseInsensitive>true</useEnumCaseInsensitive>
278279
<interfaceOnly>true</interfaceOnly>
279280
<!--suppress UnresolvedMavenProperty -->
280281
<additionalModelTypeAnnotations>@lombok.Builder @lombok.NoArgsConstructor

api/src/main/java/org/cardanofoundation/rosetta/RosettaApiApplication.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
@SpringBootApplication
2424
@EntityScan({
2525
"org.cardanofoundation.rosetta.api.account.model.entity",
26+
"org.cardanofoundation.rosetta.api.error.model.entity",
2627
"org.cardanofoundation.rosetta.api.block.model.entity",
2728
"org.cardanofoundation.rosetta.api.construction.model.entity",
2829
"org.cardanofoundation.rosetta.api.network.model.entity",

0 commit comments

Comments
 (0)