Skip to content

Commit

Permalink
Merge branch 'main' into feat/RA-60-Single-docker-container
Browse files Browse the repository at this point in the history
# Conflicts:
#	config/mainnet/config.json
  • Loading branch information
Kammerlo committed May 7, 2024
2 parents 4c22bde + cf30a02 commit e66a79c
Show file tree
Hide file tree
Showing 160 changed files with 15,812 additions and 15,263 deletions.
6 changes: 4 additions & 2 deletions .env.IntegrationTest
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ DB_HOST="db" # Service name in docker-compose or local db
DB_PORT="5432"
DB_SCHEMA=${NETWORK}
DB_PATH="data"
UPDATE_GENESIS_BLOCK_QUERY="UPDATE preprod.block SET number = 0 WHERE number = -1; UPDATE preprod.block SET prev_hash = 'Genesis' WHERE number = 1"

# Cardano Node variables
CARDANO_NODE_HOST="yaci-cli" # Service name in docker-compose or local cardano node
Expand Down Expand Up @@ -42,9 +43,10 @@ GENESIS_CONWAY_PATH=/config/${NETWORK}/conway-genesis.json

PRINT_EXCEPTION=true

#api env
#yaci env
YACI_SPRING_PROFILES="postgres" # database profiles: h2, postgres
INDEXER_NODE_PORT=3001
INITIAL_BALANCE_CALCULATION_BLOCK=0

#devkit env
DEVKIT_ENABLED=true
Expand Down Expand Up @@ -75,4 +77,4 @@ IS_DOCKER=true
# Format: <address1>:<ada_amount>,<address2>:<ada_amount>,...
#######################################################
# transaction payment
topup_addresses=addr_test1qz5t8wq55e09usmh07ymxry8atzwxwt2nwwzfngg6esffxvw2pfap6uqmkj3n6zmlrsgz397md2gt7yqs5p255uygaesx608y5:2
topup_addresses=addr_test1qz5t8wq55e09usmh07ymxry8atzwxwt2nwwzfngg6esffxvw2pfap6uqmkj3n6zmlrsgz397md2gt7yqs5p255uygaesx608y5:2
5 changes: 3 additions & 2 deletions .env.docker-compose
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ GENESIS_CONWAY_PATH=/config/${NETWORK}/conway-genesis.json
API_NODE_SOCKET_PATH=./node/node.socket
PRINT_EXCEPTION=true

#api env
#yaci env
YACI_SPRING_PROFILES="postgres" # database profiles: h2, postgres
INDEXER_NODE_PORT=3001
MEMPOOL_ENABLED=true
MEMPOOL_ENABLED=false
INITIAL_BALANCE_CALCULATION_BLOCK=0
5 changes: 3 additions & 2 deletions .env.h2
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ GENESIS_CONWAY_PATH=config/${NETWORK}/conway-genesis.json

PRINT_EXCEPTION=true

#api env
#yaci env
API_SPRING_PROFILES_ACTIVE_YACI_INDEXER=postgres # database profiles: h2, postgres
INDEXER_NODE_PORT=3001
INDEXER_NODE_PORT=3001
INITIAL_BALANCE_CALCULATION_BLOCK=0
2 changes: 2 additions & 0 deletions .github/workflows/feature-mvn-build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ jobs:
env:
GH_PACKAGES_USER_NAME: ${{ secrets.GH_PACKAGES_USER_NAME }}
GH_PACKAGES_ACCESS_TOKEN: ${{ secrets.GH_PACKAGES_ACCESS_TOKEN }}
- name: Checking style with Spotless plugin
run: mvn spotless:check --file ./api/pom.xml
- name: Test project
run: mvn -s $GITHUB_WORKSPACE/.github/workflows/maven-settings.xml --batch-mode --update-snapshots clean verify --file ./pom.xml
env:
Expand Down
9 changes: 9 additions & 0 deletions .github/workflows/integration-test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,18 @@ jobs:
uses: actions/setup-node@v1
with:
node-version: '21.x'
- name: "Update Genesis block number"
run: |
source ./.env.IntegrationTest
echo "$UPDATE_GENESIS_BLOCK_QUERY" > temp.sql
PGPASSWORD=$DB_ADMIN_USER_SECRET psql -h localhost -p 5432 -d $DB_NAME -U $DB_ADMIN_USER_NAME -f temp.sql
- name: "Install newman"
run: npm install -g newman
- name: "Install rosetta-cli"
run: curl -sSfL https://raw.githubusercontent.com/coinbase/rosetta-cli/master/scripts/install.sh | sh -s
- name: "Run tests"
run: newman run ./postmanTests/rosetta-java.postman_collection.json -e postmanTests/Rosetta-java-env.postman_environment.json -r cli
- name: "Run rosetta check:data tests"
run: ./bin/rosetta-cli check:data --configuration-file ./rosetta-cli-tests/data/byron_sample.json
- name: "Tear down environment"
run: docker compose --env-file .env.IntegrationTest -f docker-integration-test-environment.yaml down
11 changes: 9 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,15 @@ hs_err_pid*
.flattened-pom.xml
target
settings.xml
.env
.env*

/data/
/docker-compose-3rd.yaml
/testcontainers/node-ipc
/testcontainers/node-ipc

*.trace.db

# Allow files
!.env.docker-compose
!.env.IntegrationTest
!.env.h2
18 changes: 5 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@

---

# :rotating_light: This Repository is under active development. :rotating_light:
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=cardano-foundation_cardano-rosetta-java&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=cardano-foundation_cardano-rosetta-java)

# Cardano Rosetta API Java implementation
This repository provides a lightweight java implementation of the Rosetta API. It uses [Yaci-Store](https://github.com/bloxbean/yaci-store) as an indexer
Expand All @@ -19,15 +16,9 @@ to fetch the data from the node.
- /mempool
- [x] /mempool
- [ ] /mempool/transaction
- Construction API
- [x] /construction/derive
- [x] /construction/preprocess
- [x] /construction/metadata
- [x] /construction/payloads
- [x] /construction/combine
- [x] /construction/parse
- [x] /construction/hash
- [x] /construction/submit
- [x] Construction API
- [ ] Extending Tests
- [ ] Refactoring

## Getting Started

Expand Down Expand Up @@ -82,6 +73,7 @@ So the Node itself needs extra configuration to be able to query mempool transac
- [Cardano specific API Additions](./docs/cardano-specific-api-additions.md)
- [Dev H2 Quickstart Guide](./docs/dev-h2-quick-start-guide.md)
- [Environment Variables](./docs/environment-variables.md)
- [Rosetta-cli tests](./docs/rosetta-cli-tests.md)

## Contributing

Expand Down
73 changes: 12 additions & 61 deletions api/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -82,22 +82,6 @@
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk18on</artifactId>
</dependency>
<dependency>
<groupId>com.nimbusds</groupId>
<artifactId>nimbus-jose-jwt</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
Expand All @@ -108,29 +92,10 @@
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>


<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0.1</version>
</dependency>


<!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/logging-interceptor -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>logging-interceptor</artifactId>
<version>4.10.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>

<!-- https://mvnrepository.com/artifact/org.openapitools/jackson-databind-nullable -->
<dependency>
Expand Down Expand Up @@ -183,19 +148,19 @@
<dependency>
<groupId>commons-validator</groupId>
<artifactId>commons-validator</artifactId>
<version>1.7</version>
<version>1.8.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.swagger.parser.v3/swagger-parser -->
<dependency>
<groupId>io.swagger.parser.v3</groupId>
<artifactId>swagger-parser</artifactId>
<version>2.1.14</version>
<version>2.1.22</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20230227</version>
<version>20231013</version>
</dependency>
<dependency>
<groupId>com.bloxbean.cardano</groupId>
Expand All @@ -205,23 +170,6 @@
<groupId>com.bloxbean.cardano</groupId>
<artifactId>yaci</artifactId>
</dependency>
<dependency>
<groupId>org.purejava</groupId>
<artifactId>tweetnacl-java</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>org.checkerframework</groupId>
<artifactId>checker-qual</artifactId>
<version>3.41.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.hypersistence</groupId>
<artifactId>hypersistence-utils-hibernate-63</artifactId>
Expand Down Expand Up @@ -330,21 +278,18 @@
<excludes>
<exclude>target/**/*.java</exclude>
</excludes>
<removeUnusedImports/>
<replaceRegex>
<name>Remove wildcard imports</name>
<searchRegex>import\\s+[^\\*\\s]+\\*;(\\r\\n|\\r|\\n)</searchRegex>
<replacement>$1</replacement>
</replaceRegex>
<googleJavaFormat>
<version>${version.google-java-format}</version>
<style>GOOGLE</style>
</googleJavaFormat>
<removeUnusedImports/>
<importOrder>
<order>
java,jakarta,javax,lombok,org.springframework,,\\#,org.junit,\\#org.junit,org.cardanofoundation,\\#org.cardanofoundation
java|jakarta|javax,lombok,org.springframework|, ,org.junit,org.cardanofoundation,\#
</order>
</importOrder>
<trimTrailingWhitespace/>
<indent>
<spaces>true</spaces>
<spacesPerTab>2</spacesPerTab>
Expand Down Expand Up @@ -386,6 +331,12 @@
<exclude>**/org/openapitools/**</exclude>
<exclude>**/model/**</exclude>
<exclude>**/entity/**</exclude>
<exclude>**/rosetta/config/**</exclude>
<exclude>**/rosetta/common/enumeration/NetworkId.java</exclude>
<exclude>**/rosetta/common/enumeration/OperationTypeStatus.java</exclude>
<exclude>**/rosetta/common/enumeration/RewardType.java</exclude>
<exclude>**/rosetta/common/enumeration/ScriptPurposetype.java</exclude>
<exclude>**/rosetta/common/enumeration/SyncStateType.java</exclude>
</excludes>
</configuration>
<executions>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,17 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.Profile;
import org.springframework.core.Ordered;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.filter.ForwardedHeaderFilter;
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.info.Info;
import org.modelmapper.ModelMapper;
import org.modelmapper.convention.MatchingStrategies;
import org.openapitools.jackson.nullable.JsonNullableModule;


Expand Down Expand Up @@ -53,4 +53,9 @@ public FilterRegistrationBean<ForwardedHeaderFilter> forwardedHeaderFilter() {
public JsonNullableModule jsonNullableModule() {
return new JsonNullableModule();
}

@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,30 @@
import org.openapitools.client.model.AccountCoinsResponse;

import org.cardanofoundation.rosetta.api.account.service.AccountService;
import org.cardanofoundation.rosetta.api.network.service.NetworkService;

@RestController
@RequiredArgsConstructor
public class AccountApiImplementation implements AccountApi {

private final AccountService accountService;
private final NetworkService networkService;

@Override
public ResponseEntity<AccountBalanceResponse> accountBalance(
@Valid @RequestBody AccountBalanceRequest accountBalanceRequest) {

networkService.verifyNetworkRequest(accountBalanceRequest.getNetworkIdentifier());

return ResponseEntity.ok(accountService.getAccountBalance(accountBalanceRequest));
}

@Override
public ResponseEntity<AccountCoinsResponse> accountCoins(
@Valid @RequestBody AccountCoinsRequest accountCoinsRequest) {

networkService.verifyNetworkRequest(accountCoinsRequest.getNetworkIdentifier());

return ResponseEntity.ok(accountService.getAccountCoins(accountCoinsRequest));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,11 @@

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

import org.hibernate.annotations.DynamicUpdate;

import org.cardanofoundation.rosetta.api.block.model.entity.BlockAwareEntity;

@Data
@NoArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.cardanofoundation.rosetta.api.account.model.entity;

import java.math.BigInteger;
import java.util.List;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
Expand All @@ -10,7 +9,6 @@

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,10 @@
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

import org.cardanofoundation.rosetta.api.block.model.entity.BlockAwareEntity;
import org.hibernate.annotations.DynamicUpdate;

import org.cardanofoundation.rosetta.api.block.model.entity.BlockAwareEntity;

@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
Expand All @@ -38,13 +39,9 @@ public class StakeAddressBalanceEntity extends BlockAwareEntity {
@Column(name = "quantity")
private BigInteger quantity;

@Column(name = "stake_credential")
private String stakeCredential;

@Column(name = "block_hash")
private String blockHash;
@Column(name = "block")
private Long blockNumber;

@Column(name = "epoch")
private Integer epoch;
}

0 comments on commit e66a79c

Please sign in to comment.