diff --git a/.env.IntegrationTest b/.env.IntegrationTest index 1c960a9fe..d25fdc5a3 100644 --- a/.env.IntegrationTest +++ b/.env.IntegrationTest @@ -16,10 +16,10 @@ DB_SECRET=weakpwd#123_d DB_HOST=db # Service name in docker-compose or local db DB_PORT=5432 -DB_SCHEMA=${NETWORK} +DB_SCHEMA=public DB_PATH=data -UPDATE_GENESIS_BLOCK_QUERY="UPDATE devkit.block SET number = 0 WHERE number = -1; UPDATE devkit.block SET prev_hash = 'Genesis' WHERE number = 1" -#UPDATE_GENESIS_BLOCK_QUERY="UPDATE devkit.block SET prev_hash = 'Genesis' WHERE number = 1" +UPDATE_GENESIS_BLOCK_QUERY="UPDATE \"public\".block SET number = 0 WHERE number = -1; UPDATE \"public\".block SET prev_hash = 'Genesis' WHERE number = 1" +#UPDATE_GENESIS_BLOCK_QUERY="UPDATE \"public\".block SET prev_hash = 'Genesis' WHERE number = 1" ## Cardano Node variables CARDANO_NODE_HOST=yaci-cli @@ -162,4 +162,4 @@ TOKEN_REGISTRY_LOGO_FETCH=false TOKEN_REGISTRY_REQUEST_TIMEOUT_SECONDS=2 ## Mithril version for Docker build -MITHRIL_VERSION=2524.0 +MITHRIL_VERSION=2537.0 diff --git a/.env.docker-compose b/.env.docker-compose index 48836d41f..69e7df68f 100644 --- a/.env.docker-compose +++ b/.env.docker-compose @@ -16,7 +16,7 @@ DB_SECRET=weakpwd#123_d DB_HOST=db # Service name in docker-compose or local db DB_PORT=5432 -DB_SCHEMA=${NETWORK} +DB_SCHEMA=public DB_PATH=data ## Cardano Node variables @@ -24,7 +24,7 @@ CARDANO_NODE_HOST=cardano-node # Service name in docker-compose or local cardano node CARDANO_NODE_PORT=3001 # Uncomment if you are using local cardano node -CARDANO_NODE_VERSION=10.4.1 +CARDANO_NODE_VERSION=10.5.1 CARDANO_NODE_SUBMIT_HOST=cardano-submit-api NODE_SUBMIT_API_PORT=8090 CARDANO_NODE_DIR=/node @@ -34,7 +34,7 @@ CARDANO_CONFIG=./config/node/${NETWORK} ## Mithril MITHRIL_SYNC=true -MITHRIL_VERSION=2524.0 +MITHRIL_VERSION=2537.0 SNAPSHOT_DIGEST=latest # if not set standard values will be used AGGREGATOR_ENDPOINT= @@ -109,7 +109,7 @@ CONTINUE_PARSING_ON_ERROR=true SYNC=true ## Peer Discovery -PEER_DISCOVERY=false +PEER_DISCOVERY=true ## Token Registry TOKEN_REGISTRY_ENABLED=false diff --git a/.env.docker-compose-preprod b/.env.docker-compose-preprod index 66c16bfea..557b7bebc 100644 --- a/.env.docker-compose-preprod +++ b/.env.docker-compose-preprod @@ -24,7 +24,7 @@ CARDANO_NODE_HOST=cardano-node # Service name in docker-compose or local cardano node CARDANO_NODE_PORT=3001 # Uncomment if you are using local cardano node -CARDANO_NODE_VERSION=10.4.1 +CARDANO_NODE_VERSION=10.5.1 CARDANO_NODE_SUBMIT_HOST=cardano-submit-api NODE_SUBMIT_API_PORT=8090 CARDANO_NODE_DIR=/opt/rosetta-java-preprod/node_data @@ -34,7 +34,7 @@ CARDANO_CONFIG=./config/node/${NETWORK} ## Mithril MITHRIL_SYNC=true -MITHRIL_VERSION=2524.0 +MITHRIL_VERSION=2537.0 SNAPSHOT_DIGEST=latest # if not set standard values will be used AGGREGATOR_ENDPOINT= @@ -112,7 +112,6 @@ POSTGRESQL_EXPORTER_PORT=9187 PEER_DISCOVERY=true ## Token Registry -# Externally hosted token registry is currently only available for mainnet TOKEN_REGISTRY_ENABLED=false TOKEN_REGISTRY_BASE_URL= TOKEN_REGISTRY_CACHE_TTL_HOURS=1 diff --git a/.env.h2 b/.env.h2 index d1daeb9f3..2c4796ce5 100644 --- a/.env.h2 +++ b/.env.h2 @@ -19,7 +19,7 @@ CARDANO_NODE_HOST=localhost # Service name in docker-compose or local cardano node CARDANO_NODE_PORT=3001 # Uncomment if you are using local cardano node -CARDANO_NODE_VERSION=10.4.1 +CARDANO_NODE_VERSION=10.5.1 CARDANO_NODE_SUBMIT_HOST=localhost NODE_SUBMIT_API_PORT=8090 diff --git a/.env.h2-testdata b/.env.h2-testdata index 4eb66ee8c..01647417a 100644 --- a/.env.h2-testdata +++ b/.env.h2-testdata @@ -19,7 +19,7 @@ CARDANO_NODE_HOST=localhost # Service name in docker-compose or local cardano node CARDANO_NODE_PORT=3001 # Uncomment if you are using local cardano node -CARDANO_NODE_VERSION=10.4.1 +CARDANO_NODE_VERSION=10.5.1 CARDANO_NODE_SUBMIT_HOST=localhost NODE_SUBMIT_API_PORT=8090 diff --git a/.github/actions/build_docker_images/action.yml b/.github/actions/build_docker_images/action.yml index 14572b0e8..0a921899a 100644 --- a/.github/actions/build_docker_images/action.yml +++ b/.github/actions/build_docker_images/action.yml @@ -9,16 +9,66 @@ inputs: description: Is this a release build? If true, the latest tag will be applied required: false default: false + node_version_key: + required: false + default: CARDANO_NODE_VERSION + pg_version_key: + required: false + default: PG_VERSION_TAG + mithril_version_key: + required: false + default: MITHRIL_VERSION + secrets: DOCKERHUB_USERNAME: description: Docker Hub username required: true - DOCKERHUB_TOKEN: - description: Docker Hub token - required: true + DOCKERHUB_TOKEN: + description: Docker Hub token + required: true runs: using: composite steps: + - name: Read versions from .env + id: envver + shell: bash + run: | + NODE_KEY='${{ inputs.node_version_key }}' + PG_KEY='${{ inputs.pg_version_key }}' + MITHRIL_KEY='${{ inputs.mithril_version_key }}' + + if [[ ! -f .env ]]; then + echo ".env not found" + exit 0 + fi + + get_val() { + local key="$1" + grep -E "^${key}=" .env | head -1 | cut -d= -f2- | tr -d '\r' + } + + NODE_VAL="$(get_val "$NODE_KEY")" + PG_VAL="$(get_val "$PG_KEY")" + MITHRIL_VAL="$(get_val "$MITHRIL_KEY")" + + if [[ -n "$NODE_VAL" ]]; then + echo "node_version=$NODE_VAL" >> "$GITHUB_OUTPUT" + else + echo "No value for $NODE_KEY in .env" + fi + + if [[ -n "$PG_VAL" ]]; then + echo "pg_version=$PG_VAL" >> "$GITHUB_OUTPUT" + else + echo "No value for $PG_KEY in .env" + fi + + if [[ -n "$MITHRIL_VAL" ]]; then + echo "mithril_version=$MITHRIL_VAL" >> "$GITHUB_OUTPUT" + else + echo "No value for $MITHRIL_KEY in .env" + fi + - name: API - Build and push Docker ${{ inputs.tag }} image uses: docker/build-push-action@v4 with: @@ -26,6 +76,7 @@ runs: file: ./api/Dockerfile tags: cardanofoundation/cardano-rosetta-java-api:${{ inputs.tag }} push: true + - name: API - Build and push Docker latest image uses: docker/build-push-action@v4 if: ${{ inputs.isRelease == 'true' }} @@ -34,6 +85,7 @@ runs: file: ./api/Dockerfile tags: cardanofoundation/cardano-rosetta-java-api:latest push: true + - name: Indexer - Build and push Docker ${{ inputs.tag }} image uses: docker/build-push-action@v4 with: @@ -41,6 +93,7 @@ runs: file: ./yaci-indexer/Dockerfile tags: cardanofoundation/cardano-rosetta-java-indexer:${{ inputs.tag }} push: true + - name: Indexer - Build and push Docker latest image uses: docker/build-push-action@v4 if: ${{ inputs.isRelease == 'true' }} @@ -49,51 +102,31 @@ runs: file: ./yaci-indexer/Dockerfile tags: cardanofoundation/cardano-rosetta-java-indexer:latest push: true + - name: Cardano Node - Build and push Docker ${{ inputs.tag }} image uses: docker/build-push-action@v4 with: context: . file: ./docker/dockerfiles/node/Dockerfile - tags: cardanofoundation/cardano-rosetta-java-cardano-node:${{ inputs.tag }} - push: true - - name: Cardano Node - Build and push Docker latest image - uses: docker/build-push-action@v4 - if: ${{ inputs.isRelease == 'true' }} - with: - context: . - file: ./docker/dockerfiles/node/Dockerfile - tags: cardanofoundation/cardano-rosetta-java-cardano-node:latest + tags: cardanofoundation/cardano-rosetta-java-cardano-node:${{ steps.envver.outputs.node_version }} push: true + - name: Postgres - Build and push Docker ${{ inputs.tag }} image uses: docker/build-push-action@v4 with: context: . file: ./docker/dockerfiles/postgres/Dockerfile - tags: cardanofoundation/cardano-rosetta-java-postgres:${{ inputs.tag }} - push: true - - name: Postgres - Build and push Docker latest image - uses: docker/build-push-action@v4 - if: ${{ inputs.isRelease == 'true' }} - with: - context: . - file: ./docker/dockerfiles/postgres/Dockerfile - tags: cardanofoundation/cardano-rosetta-java-postgres:latest + tags: cardanofoundation/cardano-rosetta-java-postgres:${{ steps.envver.outputs.pg_version }} push: true + - name: Mithril - Build and push Docker ${{ inputs.tag }} image uses: docker/build-push-action@v4 with: context: . file: ./docker/dockerfiles/mithril/Dockerfile - tags: cardanofoundation/cardano-rosetta-java-mithril:${{ inputs.tag }} - push: true - - name: Mithril - Build and push Docker latest image - uses: docker/build-push-action@v4 - if: ${{ inputs.isRelease == 'true' }} - with: - context: . - file: ./docker/dockerfiles/mithril/Dockerfile - tags: cardanofoundation/cardano-rosetta-java-mithril:latest + tags: cardanofoundation/cardano-rosetta-java-mithril:${{ steps.envver.outputs.mithril_version }} push: true + - name: All-in-one - Build and push Docker image uses: docker/build-push-action@v4 with: @@ -101,6 +134,7 @@ runs: file: ./docker/Dockerfile tags: cardanofoundation/cardano-rosetta-java:${{ inputs.tag }} push: true + - name: All-in-one - Build and push Docker latest image uses: docker/build-push-action@v4 if: ${{ inputs.isRelease == 'true' }} diff --git a/api/src/main/java/org/cardanofoundation/rosetta/api/account/mapper/AccountMapperUtil.java b/api/src/main/java/org/cardanofoundation/rosetta/api/account/mapper/AccountMapperUtil.java index e642cee3e..8be317722 100644 --- a/api/src/main/java/org/cardanofoundation/rosetta/api/account/mapper/AccountMapperUtil.java +++ b/api/src/main/java/org/cardanofoundation/rosetta/api/account/mapper/AccountMapperUtil.java @@ -76,7 +76,8 @@ public List mapUtxosToCoins(List utxos, Amt adaAsset = utxo.getAmounts().stream() .filter(amt -> Constants.LOVELACE.equals(amt.getUnit())) .findFirst() - .orElseGet(() -> new Amt(null, null, Constants.ADA, BigInteger.ZERO)); + .orElseGet(() -> new Amt(null, Constants.ADA, BigInteger.ZERO)); + String coinIdentifier = "%s:%d".formatted(utxo.getTxHash(), utxo.getOutputIndex()); return Coin.builder() diff --git a/api/src/main/java/org/cardanofoundation/rosetta/api/account/model/domain/Amt.java b/api/src/main/java/org/cardanofoundation/rosetta/api/account/model/domain/Amt.java index cabb6cec9..b15ecf64c 100644 --- a/api/src/main/java/org/cardanofoundation/rosetta/api/account/model/domain/Amt.java +++ b/api/src/main/java/org/cardanofoundation/rosetta/api/account/model/domain/Amt.java @@ -23,14 +23,18 @@ public class Amt implements Serializable { private String unit; // subject = policyId + hex(assetName) private String policyId; - // TODO avoid using assetName field for now - // TODO ASCI in case of CIP-26 and bech32 in case of CIP-68, actually it should always be ASCII and never bech32 - @Deprecated - // consider removing - private String assetName; - private BigInteger quantity; + /** + * Returns symbol as hex + * + * unit (subject) = policyId(hex) + symbol(hex) + */ + @Nullable + public String getAssetNameAsHex() { + return getSymbolHex(); + } + /** * Returns symbol as hex * @@ -45,10 +49,4 @@ public String getSymbolHex() { return unit.replace(policyId, ""); } - @Deprecated - // TODO avoid using assetName field for now - public String getAssetName() { - return assetName; - } - } diff --git a/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/repository/TxRepositoryCustomBase.java b/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/repository/TxRepositoryCustomBase.java index 8f12c6bbb..58983c1a9 100644 --- a/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/repository/TxRepositoryCustomBase.java +++ b/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/repository/TxRepositoryCustomBase.java @@ -46,9 +46,9 @@ public final Condition buildCurrencyCondition(Currency currency) { !"lovelace".equalsIgnoreCase(symbol) && !"ada".equalsIgnoreCase(symbol)) { String escapedSymbol = symbol.trim().replace("\"", "\\\""); return buildPolicyIdAndSymbolCondition(escapedPolicyId, escapedSymbol); - } else { - return buildPolicyIdOnlyCondition(escapedPolicyId); } + + return buildPolicyIdOnlyCondition(escapedPolicyId); } if (symbol != null && !symbol.trim().isEmpty()) { diff --git a/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/repository/h2/TxRepositoryH2Impl.java b/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/repository/h2/TxRepositoryH2Impl.java index 63dfb10ba..340e49d4f 100644 --- a/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/repository/h2/TxRepositoryH2Impl.java +++ b/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/repository/h2/TxRepositoryH2Impl.java @@ -152,14 +152,17 @@ public Page searchTxnEntitiesOR(Set txHashes, /** * H2-specific currency condition builder using LIKE operator for JSON string matching. + * Searches by hex-encoded symbols in the unit field to support CIP-68 assets. */ private static class H2CurrencyConditionBuilder extends BaseCurrencyConditionBuilder { - + @Override protected Condition buildPolicyIdAndSymbolCondition(String escapedPolicyId, String escapedSymbol) { + // Search for unit field containing policyId+symbol (hex-encoded) + // unit = policyId + symbol where symbol is hex-encoded asset name + String expectedUnit = escapedPolicyId + escapedSymbol; return DSL.condition("EXISTS (SELECT 1 FROM address_utxo au WHERE au.tx_hash = transaction.tx_hash " + - "AND au.amounts LIKE '%\"policy_id\":\"" + escapedPolicyId + "\"%' " + - "AND au.amounts LIKE '%\"asset_name\":\"" + escapedSymbol + "\"%')"); + "AND au.amounts LIKE '%\"unit\":\"" + expectedUnit + "\"%')"); } @Override @@ -176,8 +179,12 @@ protected Condition buildLovelaceCondition() { @Override protected Condition buildSymbolOnlyCondition(String escapedSymbol) { + // Search for unit field containing the hex-encoded symbol + // Since unit = policyId + symbol, the unit will contain the symbol substring + // We need to exclude lovelace since it's a special case return DSL.condition("EXISTS (SELECT 1 FROM address_utxo au WHERE au.tx_hash = transaction.tx_hash " + - "AND au.amounts LIKE '%\"asset_name\":\"" + escapedSymbol + "\"%')"); + "AND au.amounts LIKE '%\"unit\":\"%" + escapedSymbol + "\"%' " + + "AND au.amounts NOT LIKE '%\"unit\":\"lovelace\"%')"); } } diff --git a/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/repository/postgresql/TxRepositoryPostgreSQLImpl.java b/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/repository/postgresql/TxRepositoryPostgreSQLImpl.java index d0aa31b5c..f28e73cd0 100644 --- a/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/repository/postgresql/TxRepositoryPostgreSQLImpl.java +++ b/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/repository/postgresql/TxRepositoryPostgreSQLImpl.java @@ -193,11 +193,14 @@ private Table createValuesTable(Set hashes) { * PostgreSQL-specific currency condition builder using JSONB @> operator. */ private static class PostgreSQLCurrencyConditionBuilder extends BaseCurrencyConditionBuilder { - + @Override protected Condition buildPolicyIdAndSymbolCondition(String escapedPolicyId, String escapedSymbol) { + // Search for unit field containing policyId+symbol (hex-encoded) + // unit = policyId + symbol where symbol is hex-encoded asset name + String expectedUnit = escapedPolicyId + escapedSymbol; return DSL.condition("EXISTS (SELECT 1 FROM address_utxo au WHERE au.tx_hash = transaction.tx_hash " + - "AND au.amounts::jsonb @> '[{\"policy_id\": \"" + escapedPolicyId + "\", \"asset_name\": \"" + escapedSymbol + "\"}]')"); + "AND au.amounts::jsonb @> '[{\"unit\": \"" + expectedUnit + "\"}]')"); } @Override @@ -214,8 +217,14 @@ protected Condition buildLovelaceCondition() { @Override protected Condition buildSymbolOnlyCondition(String escapedSymbol) { - return DSL.condition("EXISTS (SELECT 1 FROM address_utxo au WHERE au.tx_hash = transaction.tx_hash " + - "AND au.amounts::jsonb @> '[{\"asset_name\": \"" + escapedSymbol + "\"}]')"); + // Search for unit field ending with the hex-encoded symbol + // Since unit = policyId + symbol, we look for units that end with the symbol + // Using jsonb_array_elements to iterate through amounts array and check each unit + return DSL.condition("EXISTS (SELECT 1 FROM address_utxo au, " + + "jsonb_array_elements(au.amounts::jsonb) AS amt " + + "WHERE au.tx_hash = transaction.tx_hash " + + "AND amt->>'unit' LIKE '%" + escapedSymbol + "' " + + "AND amt->>'unit' != 'lovelace')"); } } diff --git a/api/src/main/java/org/cardanofoundation/rosetta/api/common/model/AssetFingerprint.java b/api/src/main/java/org/cardanofoundation/rosetta/api/common/model/AssetFingerprint.java index 723a06de7..9e670d6c0 100644 --- a/api/src/main/java/org/cardanofoundation/rosetta/api/common/model/AssetFingerprint.java +++ b/api/src/main/java/org/cardanofoundation/rosetta/api/common/model/AssetFingerprint.java @@ -1,13 +1,14 @@ package org.cardanofoundation.rosetta.api.common.model; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.EqualsAndHashCode; import org.cardanofoundation.rosetta.common.util.Constants; import javax.annotation.Nullable; +import static org.cardanofoundation.rosetta.common.util.HexUtils.isHexString; + @Data @AllArgsConstructor @EqualsAndHashCode @@ -54,7 +55,7 @@ public static AssetFingerprint fromSubject(@Nullable String subject) { } // Validate that subject is valid hex - if (!isHex(subject)) { + if (!isHexString(subject)) { throw new IllegalArgumentException("subject is not a hex string"); } @@ -64,12 +65,4 @@ public static AssetFingerprint fromSubject(@Nullable String subject) { return new AssetFingerprint(policyId, symbol); } - private static boolean isHex(String str) { - if (str == null || str.isEmpty()) { - return false; - } - - return str.matches("^[0-9a-fA-F]+$"); - } - } diff --git a/api/src/main/java/org/cardanofoundation/rosetta/api/search/service/SearchServiceImpl.java b/api/src/main/java/org/cardanofoundation/rosetta/api/search/service/SearchServiceImpl.java index 8b3d5d133..8dd8fa46c 100644 --- a/api/src/main/java/org/cardanofoundation/rosetta/api/search/service/SearchServiceImpl.java +++ b/api/src/main/java/org/cardanofoundation/rosetta/api/search/service/SearchServiceImpl.java @@ -11,6 +11,8 @@ import org.cardanofoundation.rosetta.api.common.service.TokenRegistryService; import org.cardanofoundation.rosetta.api.search.model.Operator; import org.cardanofoundation.rosetta.common.exception.ExceptionFactory; +import org.cardanofoundation.rosetta.common.util.Constants; +import org.cardanofoundation.rosetta.common.util.HexUtils; import org.openapitools.client.model.*; import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; @@ -21,6 +23,8 @@ import java.util.Optional; import java.util.function.Function; +import static org.cardanofoundation.rosetta.common.util.HexUtils.isHexString; + @Slf4j @Service @RequiredArgsConstructor @@ -58,11 +62,15 @@ public Page searchTransaction( // Extract currency for filtering (policy ID or asset identifier) @Nullable org.cardanofoundation.rosetta.api.search.model.Currency currency = Optional.ofNullable(searchTransactionsRequest.getCurrency()) - .map(c -> org.cardanofoundation.rosetta.api.search.model.Currency.builder() - .symbol(c.getSymbol()) - .decimals(c.getDecimals()) - .policyId(Optional.ofNullable(c.getMetadata()).map(CurrencyMetadataRequest::getPolicyId).orElse(null)) - .build()) + .map(c -> { + validateCurrencySymbolIsHex(c); // Validate that currency symbol is hex-encoded (for native assets) + + return org.cardanofoundation.rosetta.api.search.model.Currency.builder() + .symbol(c.getSymbol()) + .decimals(c.getDecimals()) + .policyId(Optional.ofNullable(c.getMetadata()).map(CurrencyMetadataRequest::getPolicyId).orElse(null)) + .build(); + }) .orElse(null); @Nullable Long maxBlock = searchTransactionsRequest.getMaxBlock(); @@ -166,4 +174,20 @@ private Operator parseAndValidateOperator(@Nullable String operatorString) { } } + private void validateCurrencySymbolIsHex(CurrencyRequest currencyRequest) { + String symbol = currencyRequest.getSymbol(); + + // Skip validation for ADA (lovelace) as it doesn't have a symbol + if (symbol == null + || Constants.LOVELACE.equalsIgnoreCase(symbol) + || Constants.ADA.equals(symbol)) { + return; + } + + // For native assets, symbol must be hex-encoded + if (!isHexString(symbol)) { + throw ExceptionFactory.currencySymbolNotHex(symbol); + } + } + } diff --git a/api/src/main/java/org/cardanofoundation/rosetta/common/exception/ExceptionFactory.java b/api/src/main/java/org/cardanofoundation/rosetta/common/exception/ExceptionFactory.java index 142e0b7fc..f795f9f9a 100644 --- a/api/src/main/java/org/cardanofoundation/rosetta/common/exception/ExceptionFactory.java +++ b/api/src/main/java/org/cardanofoundation/rosetta/common/exception/ExceptionFactory.java @@ -389,4 +389,9 @@ public static ApiException invalidOperationStatus(String status) { Details.builder().message("Invalid operation status: '" + status + "'. Supported values are: 'success', 'invalid', 'true', 'false'").build())); } + public static ApiException currencySymbolNotHex(String symbol) { + return new ApiException(RosettaErrorType.CURRENCY_SYMBOL_NOT_HEX.toRosettaError(false, + Details.builder().message("Currency symbol must be hex-encoded, but got: '" + symbol + "'").build())); + } + } diff --git a/api/src/main/java/org/cardanofoundation/rosetta/common/util/HexUtils.java b/api/src/main/java/org/cardanofoundation/rosetta/common/util/HexUtils.java new file mode 100644 index 000000000..0aa049323 --- /dev/null +++ b/api/src/main/java/org/cardanofoundation/rosetta/common/util/HexUtils.java @@ -0,0 +1,31 @@ +package org.cardanofoundation.rosetta.common.util; + +import javax.annotation.Nullable; + +/** + * Utility class for hexadecimal string validation and operations. + */ +public final class HexUtils { + + private HexUtils() { + throw new IllegalArgumentException("HexUtils is a utility class, a constructor is private"); + } + + /** + * Validates if a string contains only hexadecimal characters (0-9, a-f, A-F). + * Empty strings and null values are considered invalid. + * + * @param str the string to validate + * @return true if the string is a valid hexadecimal string, false otherwise + */ + public static boolean isHexString(@Nullable String str) { + if (str == null || str.isEmpty()) { + return false; + } + + // Use simple regex validation since Guava's canDecode requires even-length strings + // (it validates byte arrays), but we need to validate any hex string + return str.matches("^[0-9a-fA-F]+$"); + } + +} diff --git a/api/src/main/java/org/cardanofoundation/rosetta/common/util/RosettaConstants.java b/api/src/main/java/org/cardanofoundation/rosetta/common/util/RosettaConstants.java index 7515180bd..a3fda3d2b 100644 --- a/api/src/main/java/org/cardanofoundation/rosetta/common/util/RosettaConstants.java +++ b/api/src/main/java/org/cardanofoundation/rosetta/common/util/RosettaConstants.java @@ -169,7 +169,8 @@ public enum RosettaErrorType { BOTH_ACCOUNT_AND_ACCOUNT_IDENTIFIER_PROVIDED( "Cannot specify both 'account' and 'accountIdentifier' parameters simultaneously", 5055), // gap in the error codes is because we removed some errors of issues that we resolved - OPERATION_TYPE_SEARCH_NOT_SUPPORTED("Operation type filtering is not currently supported", 5058); + OPERATION_TYPE_SEARCH_NOT_SUPPORTED("Operation type filtering is not currently supported", 5058), + CURRENCY_SYMBOL_NOT_HEX("Currency symbol must be hex-encoded", 5059); final String message; final int code; diff --git a/api/src/main/resources/config/application-online.yaml b/api/src/main/resources/config/application-online.yaml index 45147a076..69554371d 100644 --- a/api/src/main/resources/config/application-online.yaml +++ b/api/src/main/resources/config/application-online.yaml @@ -9,7 +9,7 @@ spring: datasource: username: ${DB_USER:rosetta_db_admin} password: ${DB_SECRET:weakpwd#123_d} - url: jdbc:postgresql://${DB_HOST:localhost}:${DB_PORT:5433}/${DB_NAME:test}?currentSchema=${DB_SCHEMA:preprod} + url: jdbc:postgresql://${DB_HOST:localhost}:${DB_PORT:5433}/${DB_NAME:test}?currentSchema=${DB_SCHEMA:public} hikari: poolName: "CardanoRosettaJavaDBPool" diff --git a/api/src/main/resources/config/application-staging.yaml b/api/src/main/resources/config/application-staging.yaml index 4801819bc..0149a288d 100644 --- a/api/src/main/resources/config/application-staging.yaml +++ b/api/src/main/resources/config/application-staging.yaml @@ -5,7 +5,7 @@ spring: datasource: username: rosetta_db_service_user password: weakerpwd#123_d - url: jdbc:postgresql://172.16.1.217:5432/rosetta?currentSchema=${DB_SCHEMA:preprod} + url: jdbc:postgresql://172.16.1.217:5432/rosetta?currentSchema=${DB_SCHEMA:public} jpa: properties: hibernate: diff --git a/api/src/test/java/org/cardanofoundation/rosetta/api/account/mapper/AccountMapperUtilTest.java b/api/src/test/java/org/cardanofoundation/rosetta/api/account/mapper/AccountMapperUtilTest.java index 4565ef0dc..a3aea2bcc 100644 --- a/api/src/test/java/org/cardanofoundation/rosetta/api/account/mapper/AccountMapperUtilTest.java +++ b/api/src/test/java/org/cardanofoundation/rosetta/api/account/mapper/AccountMapperUtilTest.java @@ -512,7 +512,6 @@ private Amt createAmt(String policyId, String assetName, BigInteger quantity) { private Amt createAmt(String policyId, String assetName, BigInteger quantity, String unit) { return Amt.builder() .policyId(policyId) - .assetName(assetName) .quantity(quantity) .unit(unit != null ? unit : (policyId != null ? policyId + assetName : assetName)) .build(); diff --git a/api/src/test/java/org/cardanofoundation/rosetta/api/account/service/AccountServiceImplTest.java b/api/src/test/java/org/cardanofoundation/rosetta/api/account/service/AccountServiceImplTest.java index 2beb2f84d..83f81cb1b 100644 --- a/api/src/test/java/org/cardanofoundation/rosetta/api/account/service/AccountServiceImplTest.java +++ b/api/src/test/java/org/cardanofoundation/rosetta/api/account/service/AccountServiceImplTest.java @@ -344,7 +344,7 @@ void getAccountCoinsWithCurrenciesPositiveTest() { when(utxo.getTxHash()).thenReturn("txHash"); when(utxo.getOutputIndex()).thenReturn(1); when(utxo.getAmounts()).thenReturn( - Collections.singletonList(new Amt(LOVELACE, "", LOVELACE, BigInteger.valueOf(1000L)))); + Collections.singletonList(new Amt(LOVELACE, null, BigInteger.valueOf(1000L)))); when(accountCoinsRequest.getAccountIdentifier()).thenReturn(accountIdentifier); when(accountCoinsRequest.getCurrencies()).thenReturn(Collections.singletonList(currency)); when(accountIdentifier.getAddress()).thenReturn(accountAddress); @@ -369,7 +369,7 @@ void getAccountCoinsWithNullCurrenciesPositiveTest() { when(utxo.getTxHash()).thenReturn("txHash"); when(utxo.getOutputIndex()).thenReturn(1); when(utxo.getAmounts()).thenReturn( - Collections.singletonList(new Amt(LOVELACE, "", LOVELACE, BigInteger.valueOf(1000L)))); + Collections.singletonList(new Amt(LOVELACE, null, BigInteger.valueOf(1000L)))); when(accountCoinsRequest.getAccountIdentifier()).thenReturn(accountIdentifier); when(accountCoinsRequest.getCurrencies()).thenReturn(null); when(accountIdentifier.getAddress()).thenReturn(accountAddress); diff --git a/api/src/test/java/org/cardanofoundation/rosetta/api/block/mapper/BlockToBlockResponseTest.java b/api/src/test/java/org/cardanofoundation/rosetta/api/block/mapper/BlockToBlockResponseTest.java index 9e567d9b3..aeec7f9b0 100644 --- a/api/src/test/java/org/cardanofoundation/rosetta/api/block/mapper/BlockToBlockResponseTest.java +++ b/api/src/test/java/org/cardanofoundation/rosetta/api/block/mapper/BlockToBlockResponseTest.java @@ -41,11 +41,11 @@ void mapToBlockResponse_test_invalidTransaction() { .blockNo(1L) .inputs( List.of(Utxo.builder().txHash("Hash").outputIndex(0).ownerAddr("Owner").amounts(List.of( - Amt.builder().unit(unit).policyId(policyId).assetName("tAda").quantity(BigInteger.valueOf(10L)).build())) + Amt.builder().unit(unit).policyId(policyId).quantity(BigInteger.valueOf(10L)).build())) .build())) .outputs( List.of(Utxo.builder().txHash("Hash").outputIndex(0).ownerAddr("Owner").amounts(List.of( - Amt.builder().unit(unit).policyId(policyId).assetName("tAda").quantity(BigInteger.valueOf(10L)).build())) + Amt.builder().unit(unit).policyId(policyId).quantity(BigInteger.valueOf(10L)).build())) .build())) .build(); diff --git a/api/src/test/java/org/cardanofoundation/rosetta/api/block/mapper/BlockTxToBlockTxResponseTest.java b/api/src/test/java/org/cardanofoundation/rosetta/api/block/mapper/BlockTxToBlockTxResponseTest.java index fd8219840..79e2df8fc 100644 --- a/api/src/test/java/org/cardanofoundation/rosetta/api/block/mapper/BlockTxToBlockTxResponseTest.java +++ b/api/src/test/java/org/cardanofoundation/rosetta/api/block/mapper/BlockTxToBlockTxResponseTest.java @@ -72,7 +72,6 @@ private Utxo newUtxo() { private static Amt newAmt() { return Amt.builder() - .assetName("assetName1") .policyId("policyId1") .quantity(BigInteger.ONE) .unit("unit1") diff --git a/api/src/test/java/org/cardanofoundation/rosetta/api/block/mapper/BlockTxToRosettaTransactionTest.java b/api/src/test/java/org/cardanofoundation/rosetta/api/block/mapper/BlockTxToRosettaTransactionTest.java index 2f33d0dce..2c00d3bcd 100644 --- a/api/src/test/java/org/cardanofoundation/rosetta/api/block/mapper/BlockTxToRosettaTransactionTest.java +++ b/api/src/test/java/org/cardanofoundation/rosetta/api/block/mapper/BlockTxToRosettaTransactionTest.java @@ -425,7 +425,6 @@ private Utxo newUtxoOut() { private static Amt newAdaAmt() { return Amt.builder() - .assetName(Constants.LOVELACE) .quantity(BigInteger.TEN) .unit(Constants.LOVELACE) .build(); @@ -435,7 +434,6 @@ private static Amt newTokenAmt() { String policyId = "policyId1"; String symbol = "assetName1"; return Amt.builder() - .assetName("assetName1") .policyId(policyId) .quantity(BigInteger.ONE) .unit(policyId + symbol) diff --git a/api/src/test/java/org/cardanofoundation/rosetta/api/block/mapper/TransactionMapperUtilsTest.java b/api/src/test/java/org/cardanofoundation/rosetta/api/block/mapper/TransactionMapperUtilsTest.java index f73539da0..29ffa2294 100644 --- a/api/src/test/java/org/cardanofoundation/rosetta/api/block/mapper/TransactionMapperUtilsTest.java +++ b/api/src/test/java/org/cardanofoundation/rosetta/api/block/mapper/TransactionMapperUtilsTest.java @@ -243,7 +243,6 @@ void mapToOperationMetaDataSpentAmountTest() { List amtList = Arrays.asList( Amt.builder() - .assetName(assetName) .policyId(policyId) .quantity(BigInteger.valueOf(1000)) .unit(policyId + assetName) @@ -299,7 +298,6 @@ private static Amt newAmt(int policy, int number, boolean isLovelace) { String unit = isLovelace ? Constants.LOVELACE : policyId + symbol; return Amt.builder() - .assetName(isLovelace ? Constants.LOVELACE : "assetName" + number) .policyId(policyId) .quantity(BigInteger.ONE) .unit(unit) @@ -310,7 +308,6 @@ private static Amt newAmtWithCustomName(String policyId, String assetName, boole String unit = isLovelace ? Constants.LOVELACE : policyId + assetName; return Amt.builder() - .assetName(isLovelace ? Constants.LOVELACE : assetName) .policyId(policyId) .quantity(BigInteger.ONE) .unit(unit) diff --git a/api/src/test/java/org/cardanofoundation/rosetta/api/block/model/repository/TxRepositoryCustomImplTest.java b/api/src/test/java/org/cardanofoundation/rosetta/api/block/model/repository/TxRepositoryCustomImplTest.java index 038b85e0e..441545b2f 100644 --- a/api/src/test/java/org/cardanofoundation/rosetta/api/block/model/repository/TxRepositoryCustomImplTest.java +++ b/api/src/test/java/org/cardanofoundation/rosetta/api/block/model/repository/TxRepositoryCustomImplTest.java @@ -717,21 +717,22 @@ public void testSearchTxnEntitiesAND_FilterByPolicyIdOnly() { @Sql(scripts = "classpath:/testdata/sql/tx-repository-currency-test-init.sql", executionPhase = BEFORE_TEST_METHOD) @Sql(scripts = "classpath:/testdata/sql/tx-repository-currency-test-cleanup.sql", executionPhase = AFTER_TEST_METHOD) public void testSearchTxnEntitiesAND_FilterByPolicyIdAndSymbol() { - // Test filtering by both policy ID and asset name (most precise) + // Test filtering by both policy ID and hex-encoded symbol (most precise) + // MIN in hex: 4d494e Currency preciseAssetCurrency = Currency.builder() .policyId("29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6") - .symbol("MIN") + .symbol("4d494e") // hex-encoded "MIN" .decimals(6) .build(); Page results = txRepository.searchTxnEntitiesAND( - Collections.emptySet(), Set.of(), null, null, null, null, preciseAssetCurrency, + Collections.emptySet(), Set.of(), null, null, null, null, preciseAssetCurrency, new SimpleOffsetBasedPageRequest(0, 100)); List txList = results.getContent(); - + // Results could be empty if no transactions with this specific asset exist - // All transactions should contain the exact asset (policy ID + asset name) + // All transactions should contain the exact asset (policy ID + hex-encoded symbol) txList.forEach(tx -> { assertThat(tx.getTxHash()).isNotNull(); }); @@ -741,19 +742,20 @@ public void testSearchTxnEntitiesAND_FilterByPolicyIdAndSymbol() { @Sql(scripts = "classpath:/testdata/sql/tx-repository-currency-test-init.sql", executionPhase = BEFORE_TEST_METHOD) @Sql(scripts = "classpath:/testdata/sql/tx-repository-currency-test-cleanup.sql", executionPhase = AFTER_TEST_METHOD) public void testSearchTxnEntitiesAND_FilterBySymbolOnly() { - // Test filtering by symbol/asset name only (searches across all policy IDs) + // Test filtering by hex-encoded symbol only (searches across all policy IDs) + // MIN in hex: 4d494e Currency symbolCurrency = Currency.builder() - .symbol("MIN") + .symbol("4d494e") // hex-encoded "MIN" .build(); Page results = txRepository.searchTxnEntitiesAND( - Collections.emptySet(), Set.of(), null, null, null, null, symbolCurrency, + Collections.emptySet(), Set.of(), null, null, null, null, symbolCurrency, new SimpleOffsetBasedPageRequest(0, 100)); List txList = results.getContent(); - + // Results could be empty if no transactions with MIN tokens exist - // All transactions should contain assets with "MIN" as asset name + // All transactions should contain assets with hex-encoded "MIN" symbol txList.forEach(tx -> { assertThat(tx.getTxHash()).isNotNull(); }); diff --git a/api/src/test/java/org/cardanofoundation/rosetta/api/common/service/TokenRegistryServiceImplTest.java b/api/src/test/java/org/cardanofoundation/rosetta/api/common/service/TokenRegistryServiceImplTest.java index 566dcf0af..f35f78bd6 100644 --- a/api/src/test/java/org/cardanofoundation/rosetta/api/common/service/TokenRegistryServiceImplTest.java +++ b/api/src/test/java/org/cardanofoundation/rosetta/api/common/service/TokenRegistryServiceImplTest.java @@ -1112,11 +1112,10 @@ private Utxo createUtxoWithAmounts(List amounts) { return Utxo.builder().amounts(amounts).build(); } - private Amt createAmt(String assetName, String policyId, String unit) { + private Amt createAmt(String unit, String policyId, String lovelaceOrUnit) { return Amt.builder() - .assetName(assetName) .policyId(policyId) - .unit(unit) + .unit(lovelaceOrUnit) .quantity(BigDecimal.valueOf(1000000).toBigInteger()) .build(); } diff --git a/api/src/test/java/org/cardanofoundation/rosetta/api/search/service/SearchServiceImplTest.java b/api/src/test/java/org/cardanofoundation/rosetta/api/search/service/SearchServiceImplTest.java index a0d0b3ee3..0deed57ba 100644 --- a/api/src/test/java/org/cardanofoundation/rosetta/api/search/service/SearchServiceImplTest.java +++ b/api/src/test/java/org/cardanofoundation/rosetta/api/search/service/SearchServiceImplTest.java @@ -458,10 +458,10 @@ void shouldPassNullWhenNeitherAddressNorAccountIdentifierProvided() { class CurrencySearchTests { @Test - void shouldSupportCurrencySearch() { + void shouldSupportCurrencySearch_withLovelace() { // Given CurrencyRequest currency = CurrencyRequest.builder().symbol("ADA").build(); - + SearchTransactionsRequest request = SearchTransactionsRequest.builder() .networkIdentifier(networkIdentifier) .currency(currency) @@ -489,12 +489,149 @@ void shouldSupportCurrencySearch() { // Then assertThat(result).isNotNull(); assertThat(result.getContent()).isEmpty(); - + // Verify that ledgerSearchService was called (currency search is now supported) verify(ledgerSearchService).searchTransaction( any(), any(), any(), any(), any(), any(), any(), any(), any(), anyLong(), anyLong() ); } + + @Test + void shouldAcceptHexEncodedCurrencySymbol() { + // Given - hex-encoded asset name from issue #610 + CurrencyRequest currency = CurrencyRequest.builder() + .symbol("000de1404469616d6f6e64486f6f76657332363938") + .build(); + + SearchTransactionsRequest request = SearchTransactionsRequest.builder() + .networkIdentifier(networkIdentifier) + .currency(currency) + .build(); + + Page emptyPage = new PageImpl<>(List.of()); + when(ledgerSearchService.searchTransaction( + any(), any(), any(), any(), any(), any(), any(), any(), any(), anyLong(), anyLong() + )).thenReturn(emptyPage); + + // When + Page result = searchService.searchTransaction(request, 0L, 10L); + + // Then - should not throw exception + assertThat(result).isNotNull(); + verify(ledgerSearchService).searchTransaction( + any(), any(), any(), any(), any(), any(), any(), any(), any(), anyLong(), anyLong() + ); + } + + @Test + void shouldAcceptCIP68HexEncodedSymbol() { + // Given - CIP-68 asset with binary prefix + CurrencyRequest currency = CurrencyRequest.builder() + .symbol("000643b04469616d6f6e64") + .build(); + + SearchTransactionsRequest request = SearchTransactionsRequest.builder() + .networkIdentifier(networkIdentifier) + .currency(currency) + .build(); + + Page emptyPage = new PageImpl<>(List.of()); + when(ledgerSearchService.searchTransaction( + any(), any(), any(), any(), any(), any(), any(), any(), any(), anyLong(), anyLong() + )).thenReturn(emptyPage); + + // When + Page result = searchService.searchTransaction(request, 0L, 10L); + + // Then - should not throw exception + assertThat(result).isNotNull(); + } + + @Test + void shouldRejectAsciiCurrencySymbol() { + // Given - ASCII asset name (not hex-encoded) - issue #610 regression case + CurrencyRequest currency = CurrencyRequest.builder() + .symbol("Diamond") + .build(); + + SearchTransactionsRequest request = SearchTransactionsRequest.builder() + .networkIdentifier(networkIdentifier) + .currency(currency) + .build(); + + // When & Then + assertThatThrownBy(() -> searchService.searchTransaction(request, 0L, 10L)) + .isInstanceOf(ApiException.class) + .hasMessage("Currency symbol must be hex-encoded") + .extracting("error.details.message") + .isEqualTo("Currency symbol must be hex-encoded, but got: 'Diamond'"); + + verifyNoInteractions(ledgerSearchService); + } + + @Test + void shouldRejectCurrencySymbolWithSpaces() { + // Given + CurrencyRequest currency = CurrencyRequest.builder() + .symbol("invalid hex") + .build(); + + SearchTransactionsRequest request = SearchTransactionsRequest.builder() + .networkIdentifier(networkIdentifier) + .currency(currency) + .build(); + + // When & Then + assertThatThrownBy(() -> searchService.searchTransaction(request, 0L, 10L)) + .isInstanceOf(ApiException.class) + .hasMessage("Currency symbol must be hex-encoded"); + + verifyNoInteractions(ledgerSearchService); + } + + @Test + void shouldRejectCurrencySymbolWithSpecialCharacters() { + // Given + CurrencyRequest currency = CurrencyRequest.builder() + .symbol("test@123") + .build(); + + SearchTransactionsRequest request = SearchTransactionsRequest.builder() + .networkIdentifier(networkIdentifier) + .currency(currency) + .build(); + + // When & Then + assertThatThrownBy(() -> searchService.searchTransaction(request, 0L, 10L)) + .isInstanceOf(ApiException.class) + .hasMessage("Currency symbol must be hex-encoded"); + + verifyNoInteractions(ledgerSearchService); + } + + @Test + void shouldAllowNullCurrencySymbol() { + // Given + CurrencyRequest currency = CurrencyRequest.builder() + .symbol(null) + .build(); + + SearchTransactionsRequest request = SearchTransactionsRequest.builder() + .networkIdentifier(networkIdentifier) + .currency(currency) + .build(); + + Page emptyPage = new PageImpl<>(List.of()); + when(ledgerSearchService.searchTransaction( + any(), any(), any(), any(), any(), any(), any(), any(), any(), anyLong(), anyLong() + )).thenReturn(emptyPage); + + // When + Page result = searchService.searchTransaction(request, 0L, 10L); + + // Then - should not throw exception for null symbol + assertThat(result).isNotNull(); + } } @Nested diff --git a/api/src/test/java/org/cardanofoundation/rosetta/common/util/HexUtilsTest.java b/api/src/test/java/org/cardanofoundation/rosetta/common/util/HexUtilsTest.java new file mode 100644 index 000000000..3ffe0708e --- /dev/null +++ b/api/src/test/java/org/cardanofoundation/rosetta/common/util/HexUtilsTest.java @@ -0,0 +1,79 @@ +package org.cardanofoundation.rosetta.common.util; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.NullAndEmptySource; +import org.junit.jupiter.params.provider.ValueSource; + +import static org.assertj.core.api.Assertions.assertThat; + +class HexUtilsTest { + + @Test + @DisplayName("Should return true for valid lowercase hex strings") + void shouldReturnTrueForValidLowercaseHex() { + assertThat(HexUtils.isHexString("deadbeef")).isTrue(); + assertThat(HexUtils.isHexString("0123456789abcdef")).isTrue(); + assertThat(HexUtils.isHexString("a")).isTrue(); + assertThat(HexUtils.isHexString("000de1404469616d6f6e64486f6f76657332363938")).isTrue(); + } + + @Test + @DisplayName("Should return true for valid uppercase hex strings") + void shouldReturnTrueForValidUppercaseHex() { + assertThat(HexUtils.isHexString("DEADBEEF")).isTrue(); + assertThat(HexUtils.isHexString("0123456789ABCDEF")).isTrue(); + assertThat(HexUtils.isHexString("A")).isTrue(); + assertThat(HexUtils.isHexString("000DE1404469616D6F6E64486F6F76657332363938")).isTrue(); + } + + @Test + @DisplayName("Should return true for valid mixed case hex strings") + void shouldReturnTrueForValidMixedCaseHex() { + assertThat(HexUtils.isHexString("DeAdBeEf")).isTrue(); + assertThat(HexUtils.isHexString("0123456789AbCdEf")).isTrue(); + assertThat(HexUtils.isHexString("aB")).isTrue(); + } + + @ParameterizedTest + @NullAndEmptySource + @DisplayName("Should return false for null or empty strings") + void shouldReturnFalseForNullOrEmpty(String input) { + assertThat(HexUtils.isHexString(input)).isFalse(); + } + + @ParameterizedTest + @ValueSource(strings = { + "test", // ASCII text + "hello world", // ASCII with space + "0xdeadbeef", // Hex with prefix + "g", // Invalid hex char + "123xyz", // Mixed valid and invalid + "Diamond", // ASCII name (issue #610 example) + "!@#$", // Special characters + " deadbeef", // Leading space + "deadbeef ", // Trailing space + "dead beef" // Space in middle + }) + @DisplayName("Should return false for invalid hex strings") + void shouldReturnFalseForInvalidHex(String input) { + assertThat(HexUtils.isHexString(input)).isFalse(); + } + + @Test + @DisplayName("Should handle CIP-68 asset names with binary prefixes") + void shouldHandleCIP68Assets() { + // CIP-68 assets have binary prefixes like (000643b0) followed by hex-encoded name + String cip68AssetName = "000643b04469616d6f6e64"; // (000643b0) + hex("Diamond") + assertThat(HexUtils.isHexString(cip68AssetName)).isTrue(); + } + + @Test + @DisplayName("Should validate policy IDs correctly") + void shouldValidatePolicyIds() { + // Standard Cardano policy ID (56 hex chars) + String policyId = "e16c2dc8ae937e8d3790c7fd7168d7b994621ba14ca11415f39fed72"; + assertThat(HexUtils.isHexString(policyId)).isTrue(); + } +} diff --git a/api/src/test/resources/config/application-test-integration.yaml b/api/src/test/resources/config/application-test-integration.yaml index 022b0ad82..290083790 100644 --- a/api/src/test/resources/config/application-test-integration.yaml +++ b/api/src/test/resources/config/application-test-integration.yaml @@ -43,7 +43,7 @@ cardano: GENESIS_SHELLEY_PATH: ${GENESIS_SHELLEY_PATH:../config/node/devkit/shelley-genesis.json} GENESIS_ALONZO_PATH: ${GENESIS_ALONZO_PATH:../config/node/devkit/alonzo-genesis.json} GENESIS_CONWAY_PATH: ${GENESIS_CONWAY_PATH:../config/node/devkit/conway-genesis.json} - CARDANO_NODE_VERSION: ${CARDANO_NODE_VERSION:10.4.1} + CARDANO_NODE_VERSION: ${CARDANO_NODE_VERSION:10.5.1} CARDANO_NODE_SUBMIT_HOST: ${CARDANO_NODE_SUBMIT_HOST:localhost} NODE_SUBMIT_API_PORT: ${NODE_SUBMIT_API_PORT:8090} CARDANO_NODE_SOCKET_PATH: ${CARDANO_NODE_SOCKET_PATH:""} diff --git a/api/src/test/resources/testdata/errors.json b/api/src/test/resources/testdata/errors.json index a674b7eda..26ac92c0d 100644 --- a/api/src/test/resources/testdata/errors.json +++ b/api/src/test/resources/testdata/errors.json @@ -472,5 +472,12 @@ "description": null, "retriable": false, "details": null + }, + { + "code": 5059, + "message": "Currency symbol must be hex-encoded", + "description": null, + "retriable": false, + "details": null } ] diff --git a/api/src/test/resources/testdata/sql/tx-repository-currency-test-init.sql b/api/src/test/resources/testdata/sql/tx-repository-currency-test-init.sql index e8f3c1442..7a554bdef 100644 --- a/api/src/test/resources/testdata/sql/tx-repository-currency-test-init.sql +++ b/api/src/test/resources/testdata/sql/tx-repository-currency-test-init.sql @@ -21,43 +21,50 @@ INSERT INTO address_utxo (tx_hash, output_index, owner_addr, block, amounts) VALUES ('tx_lovelace_2', 0, 'addr_lovelace_2', 100, '[{"unit": "lovelace", "quantity": "3000000"}]'); -- Transaction with native asset (policy ID + asset name) -INSERT INTO address_utxo (tx_hash, output_index, owner_addr, block, amounts) +-- MIN in hex: 4d494e +INSERT INTO address_utxo (tx_hash, output_index, owner_addr, block, amounts) VALUES ('tx_native_asset_1', 0, 'addr_native_1', 101, '[ {"unit": "lovelace", "quantity": "2000000"}, - {"policy_id": "29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6", "asset_name": "MIN", "quantity": "1000000"} + {"unit": "29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c64d494e", "policy_id": "29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6", "asset_name": "MIN", "quantity": "1000000"} ]'); -- Transaction with mixed assets -INSERT INTO address_utxo (tx_hash, output_index, owner_addr, block, amounts) +-- MIN in hex: 4d494e +-- SpaceBud3412 is already hex: 537061636542756433343132 +INSERT INTO address_utxo (tx_hash, output_index, owner_addr, block, amounts) VALUES ('tx_mixed_assets_1', 0, 'addr_mixed_1', 101, '[ {"unit": "lovelace", "quantity": "1500000"}, - {"policy_id": "29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6", "asset_name": "MIN", "quantity": "500000"}, - {"policy_id": "d5e6bf0500378d4f0da4e8dde6becec7621cd8cbf5cbb9b87013d4cc", "asset_name": "537061636542756433343132", "quantity": "100"} + {"unit": "29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c64d494e", "policy_id": "29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6", "asset_name": "MIN", "quantity": "500000"}, + {"unit": "d5e6bf0500378d4f0da4e8dde6becec7621cd8cbf5cbb9b87013d4cc537061636542756433343132", "policy_id": "d5e6bf0500378d4f0da4e8dde6becec7621cd8cbf5cbb9b87013d4cc", "asset_name": "537061636542756433343132", "quantity": "100"} ]'); -- Transaction with specific policy ID only assets -INSERT INTO address_utxo (tx_hash, output_index, owner_addr, block, amounts) +-- TOKEN1 in hex: 544f4b454e31 +-- TOKEN2 in hex: 544f4b454e32 +INSERT INTO address_utxo (tx_hash, output_index, owner_addr, block, amounts) VALUES ('tx_policy_specific_1', 0, 'addr_policy_1', 102, '[ {"unit": "lovelace", "quantity": "2500000"}, - {"policy_id": "29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6", "asset_name": "TOKEN1", "quantity": "1000"}, - {"policy_id": "29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6", "asset_name": "TOKEN2", "quantity": "2000"} + {"unit": "29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6544f4b454e31", "policy_id": "29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6", "asset_name": "TOKEN1", "quantity": "1000"}, + {"unit": "29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6544f4b454e32", "policy_id": "29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6", "asset_name": "TOKEN2", "quantity": "2000"} ]'); -- Transaction with MIN tokens from different policy -INSERT INTO address_utxo (tx_hash, output_index, owner_addr, block, amounts) +-- MIN in hex: 4d494e +INSERT INTO address_utxo (tx_hash, output_index, owner_addr, block, amounts) VALUES ('tx_min_token_1', 0, 'addr_min_1', 102, '[ {"unit": "lovelace", "quantity": "1000000"}, - {"policy_id": "a1b2c3d4e5f6789012345678901234567890123456789012345678901234", "asset_name": "MIN", "quantity": "750000"} + {"unit": "a1b2c3d4e5f6789012345678901234567890123456789012345678901234d494e", "policy_id": "a1b2c3d4e5f6789012345678901234567890123456789012345678901234", "asset_name": "MIN", "quantity": "750000"} ]'); -- Additional UTXOs for same transactions (outputs) -INSERT INTO address_utxo (tx_hash, output_index, owner_addr, block, amounts) +INSERT INTO address_utxo (tx_hash, output_index, owner_addr, block, amounts) VALUES ('tx_native_asset_1', 1, 'addr_native_2', 101, '[ {"unit": "lovelace", "quantity": "1000000"} ]'); -INSERT INTO address_utxo (tx_hash, output_index, owner_addr, block, amounts) +-- MIN in hex: 4d494e +INSERT INTO address_utxo (tx_hash, output_index, owner_addr, block, amounts) VALUES ('tx_mixed_assets_1', 1, 'addr_mixed_2', 101, '[ {"unit": "lovelace", "quantity": "500000"}, - {"policy_id": "29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6", "asset_name": "MIN", "quantity": "250000"} + {"unit": "29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c64d494e", "policy_id": "29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6", "asset_name": "MIN", "quantity": "250000"} ]'); \ No newline at end of file diff --git a/config/node/mainnet/config.json b/config/node/mainnet/config.json index d1cdc9e58..e3457a139 100644 --- a/config/node/mainnet/config.json +++ b/config/node/mainnet/config.json @@ -19,21 +19,12 @@ "SnapshotInterval": 4320 }, "MaxKnownMajorProtocolVersion": 2, - "MinBigLedgerPeersForTrustedState": 5, - "MinNodeVersion": "10.4.0", + "MinNodeVersion": "10.5.0", "PeerSharing": true, "Protocol": "Cardano", "RequiresNetworkMagic": "RequiresNoMagic", "ShelleyGenesisFile": "shelley-genesis.json", "ShelleyGenesisHash": "1a3be38bcbb7911969283716ad7aa550250226b76a61fc51cc9a9a35d9276d81", - "SyncTargetNumberOfActiveBigLedgerPeers": 30, - "SyncTargetNumberOfActivePeers": 0, - "SyncTargetNumberOfEstablishedBigLedgerPeers": 50, - "SyncTargetNumberOfKnownBigLedgerPeers": 100, - "TargetNumberOfActivePeers": 20, - "TargetNumberOfEstablishedPeers": 40, - "TargetNumberOfKnownPeers": 150, - "TargetNumberOfRootPeers": 60, "TraceAcceptPolicy": true, "TraceBlockFetchClient": false, "TraceBlockFetchDecisions": false, diff --git a/config/node/mainnet/peer-snapshot.json b/config/node/mainnet/peer-snapshot.json new file mode 100644 index 000000000..b8af6640c --- /dev/null +++ b/config/node/mainnet/peer-snapshot.json @@ -0,0 +1,7214 @@ +{ + "bigLedgerPools": [ + { + "accumulatedStake": 0.0046978803796026095, + "relativeStake": 0.0046978803796026095, + "relays": [ + { + "domain": "relays-2a.cardano.figment.io", + "port": 3001 + }, + { + "domain": "relays-2b.cardano.figment.io", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.008308890001152286, + "relativeStake": 0.0036110096215496755, + "relays": [ + { + "domain": "Relay1.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay2.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay3.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay4.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay5.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay6.NordicPool.org", + "port": 3005 + } + ] + }, + { + "accumulatedStake": 0.01182528197666577, + "relativeStake": 0.0035163919755134858, + "relays": [ + { + "domain": "cardanosuisse.com", + "port": 170 + }, + { + "domain": "cardanosuisse.com", + "port": 171 + }, + { + "domain": "cardanosuisse.com", + "port": 172 + } + ] + }, + { + "accumulatedStake": 0.015340230483269391, + "relativeStake": 0.003514948506603621, + "relays": [ + { + "address": "148.113.17.23", + "port": 6000 + }, + { + "address": "158.69.25.103", + "port": 6000 + }, + { + "address": "95.216.4.252", + "port": 6000 + }, + { + "address": "178.18.250.204", + "port": 6000 + }, + { + "address": "148.113.17.23", + "port": 6000 + }, + { + "address": "158.69.25.103", + "port": 6000 + }, + { + "address": "95.216.4.252", + "port": 6000 + }, + { + "address": "178.18.250.204", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.01885343599649912, + "relativeStake": 0.00351320551322973, + "relays": [ + { + "domain": "relay-kiln-0-0.cardano.mainnet.kiln.fi", + "port": 3001 + }, + { + "domain": "relay-kiln-0-1.cardano.mainnet.kiln.fi", + "port": 3001 + }, + { + "domain": "relay-kiln-0-2.cardano.mainnet.kiln.fi", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.022365636418634382, + "relativeStake": 0.003512200422135261, + "relays": [ + { + "address": "95.154.235.142", + "port": 6000 + }, + { + "address": "217.155.18.115", + "port": 6003 + }, + { + "address": "217.155.18.115", + "port": 6001 + } + ] + }, + { + "accumulatedStake": 0.025864893089216537, + "relativeStake": 0.0034992566705821537, + "relays": [ + { + "domain": "relays.bladepool.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.029347783867888434, + "relativeStake": 0.0034828907786718963, + "relays": [ + { + "domain": "relay-kiln-1-0.cardano.mainnet.kiln.fi", + "port": 3001 + }, + { + "domain": "relay-kiln-1-1.cardano.mainnet.kiln.fi", + "port": 3001 + }, + { + "domain": "relay-kiln-1-2.cardano.mainnet.kiln.fi", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.03283052233192693, + "relativeStake": 0.003482738464038498, + "relays": [ + { + "address": "178.128.79.219", + "port": 3001 + }, + { + "address": "104.131.122.73", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.036312159384212894, + "relativeStake": 0.003481637052285964, + "relays": [ + { + "domain": "eu.relays.cardanians.io", + "port": 1000 + }, + { + "domain": "ca.relays.cardanians.io", + "port": 1000 + } + ] + }, + { + "accumulatedStake": 0.03979038026577972, + "relativeStake": 0.003478220881566825, + "relays": [ + { + "domain": "relay-kiln-3-0.cardano.mainnet.kiln.fi", + "port": 3001 + }, + { + "domain": "relay-kiln-3-1.cardano.mainnet.kiln.fi", + "port": 3001 + }, + { + "domain": "relay-kiln-3-2.cardano.mainnet.kiln.fi", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.043268156058601966, + "relativeStake": 0.003477775792822244, + "relays": [ + { + "address": "13.236.12.204", + "port": 8332 + } + ] + }, + { + "accumulatedStake": 0.04674447033680533, + "relativeStake": 0.0034763142782033673, + "relays": [ + { + "domain": "Relay1.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay2.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay3.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay4.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay5.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay6.NordicPool.org", + "port": 3005 + } + ] + }, + { + "accumulatedStake": 0.05021870195645891, + "relativeStake": 0.0034742316196535753, + "relays": [ + { + "address": "13.211.73.179", + "port": 8332 + } + ] + }, + { + "accumulatedStake": 0.05369207526902389, + "relativeStake": 0.0034733733125649835, + "relays": [ + { + "domain": "relays.wavepool.digital", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.057146855572210775, + "relativeStake": 0.003454780303186885, + "relays": [ + { + "domain": "relays.wavepool.digital", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.06060086867045238, + "relativeStake": 0.003454013098241609, + "relays": [ + { + "domain": "46.cardano.staked.cloud", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.06405474776099919, + "relativeStake": 0.0034538790905468027, + "relays": [ + { + "domain": "45.cardano.staked.cloud", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.06750857979672732, + "relativeStake": 0.0034538320357281388, + "relays": [ + { + "domain": "44.cardano.staked.cloud", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.07096230480200535, + "relativeStake": 0.0034537250052780323, + "relays": [ + { + "domain": "41.cardano.staked.cloud", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.0744156177667713, + "relativeStake": 0.0034533129647659434, + "relays": [ + { + "domain": "r1.spirestaking.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.07786273025503154, + "relativeStake": 0.0034471124882602413, + "relays": [ + { + "address": "173.15.110.154", + "port": 6000 + }, + { + "address": "173.15.110.155", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.08129878739236472, + "relativeStake": 0.0034360571373331823, + "relays": [ + { + "domain": "relay-kiln-2-0.cardano.mainnet.kiln.fi", + "port": 3001 + }, + { + "domain": "relay-kiln-2-1.cardano.mainnet.kiln.fi", + "port": 3001 + }, + { + "domain": "relay-kiln-2-2.cardano.mainnet.kiln.fi", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.08472578516713812, + "relativeStake": 0.0034269977747733984, + "relays": [ + { + "domain": "Relay1.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay2.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay3.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay4.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay5.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay6.NordicPool.org", + "port": 3005 + } + ] + }, + { + "accumulatedStake": 0.08815131217546857, + "relativeStake": 0.003425527008330439, + "relays": [ + { + "domain": "relays.wavepool.digital", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.09157475084216306, + "relativeStake": 0.0034234386666945, + "relays": [ + { + "domain": "Relay1.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay2.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay3.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay4.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay5.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay6.NordicPool.org", + "port": 3005 + } + ] + }, + { + "accumulatedStake": 0.09499798841344878, + "relativeStake": 0.0034232375712857145, + "relays": [ + { + "domain": "relays-8a.cardano.2k2aa.com", + "port": 3001 + }, + { + "domain": "relays-8b.cardano.aeq5f.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.09842028878924473, + "relativeStake": 0.003422300375795954, + "relays": [ + { + "domain": "gateway.adavault.com", + "port": 4021 + }, + { + "domain": "gateway.adavault.com", + "port": 4022 + }, + { + "domain": "gateway.adavault.com", + "port": 4026 + }, + { + "domain": "gateway.adavault.com", + "port": 4027 + } + ] + }, + { + "accumulatedStake": 0.10183491045921002, + "relativeStake": 0.0034146216699652843, + "relays": [ + { + "domain": "relay.cardano.securestaking.io", + "port": 3000 + }, + { + "domain": "secur2.cardano.securestaking.io", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.10524843836042695, + "relativeStake": 0.0034135279012169326, + "relays": [ + { + "domain": "f9395b98.cardano-relay.herd.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.10865759018392875, + "relativeStake": 0.003409151823501796, + "relays": [ + { + "domain": "gateway.adavault.com", + "port": 4021 + }, + { + "domain": "gateway.adavault.com", + "port": 4022 + }, + { + "domain": "gateway.adavault.com", + "port": 4026 + }, + { + "domain": "gateway.adavault.com", + "port": 4027 + } + ] + }, + { + "accumulatedStake": 0.11206174014319631, + "relativeStake": 0.003404149959267572, + "relays": [ + { + "domain": "relays.wavepool.digital", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.11546298519133957, + "relativeStake": 0.0034012450481432613, + "relays": [ + { + "domain": "r-eu-1.polypool.io", + "port": 4001 + }, + { + "domain": "r-sg-1.polypool.io", + "port": 4001 + } + ] + }, + { + "accumulatedStake": 0.11882618906256656, + "relativeStake": 0.00336320387122698, + "relays": [ + { + "domain": "relays.wavepool.digital", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.12218762934596275, + "relativeStake": 0.0033614402833961996, + "relays": [ + { + "domain": "Relay1.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay2.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay3.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay4.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay5.NordicPool.org", + "port": 3005 + }, + { + "domain": "Relay6.NordicPool.org", + "port": 3005 + } + ] + }, + { + "accumulatedStake": 0.12554629884932592, + "relativeStake": 0.003358669503363155, + "relays": [ + { + "address": "162.120.71.180", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.12890295022719228, + "relativeStake": 0.0033566513778663567, + "relays": [ + { + "domain": "27.cardano.staked.cloud", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.1322572147303395, + "relativeStake": 0.0033542645031472244, + "relays": [ + { + "domain": "28.cardano.staked.cloud", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.13560918004133332, + "relativeStake": 0.003351965310993821, + "relays": [ + { + "domain": "26.cardano.staked.cloud", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.138936216084602, + "relativeStake": 0.0033270360432686922, + "relays": [ + { + "domain": "gateway.adavault.com", + "port": 4021 + }, + { + "domain": "gateway.adavault.com", + "port": 4022 + }, + { + "domain": "gateway.adavault.com", + "port": 4026 + }, + { + "domain": "gateway.adavault.com", + "port": 4027 + } + ] + }, + { + "accumulatedStake": 0.14226067052620014, + "relativeStake": 0.0033244544415981505, + "relays": [ + { + "domain": "cardano-main.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-main2.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay1.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay2.everstake.one", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.1455759481250578, + "relativeStake": 0.0033152775988576394, + "relays": [ + { + "address": "46.101.9.225", + "port": 3001 + }, + { + "address": "64.227.46.95", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.14886746469591533, + "relativeStake": 0.003291516570857541, + "relays": [ + { + "domain": "relay-kiln-4-0.cardano.mainnet.kiln.fi", + "port": 3001 + }, + { + "domain": "relay-kiln-4-1.cardano.mainnet.kiln.fi", + "port": 3001 + }, + { + "domain": "relay-kiln-4-2.cardano.mainnet.kiln.fi", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.15214756214472466, + "relativeStake": 0.0032800974488093222, + "relays": [ + { + "domain": "8d6f8de4.cardano-relay.herd.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.15542652835251475, + "relativeStake": 0.003278966207790078, + "relays": [ + { + "address": "148.113.17.23", + "port": 6000 + }, + { + "address": "158.69.25.103", + "port": 6000 + }, + { + "address": "95.216.70.238", + "port": 6000 + }, + { + "address": "149.102.140.234", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.15870311957183245, + "relativeStake": 0.003276591219317704, + "relays": [ + { + "domain": "b3e201f4.cardano-relay.bison.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.161978512274644, + "relativeStake": 0.003275392702811561, + "relays": [ + { + "domain": "b3bbbcac.cardano-relay.bison.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.16525309433447344, + "relativeStake": 0.0032745820598294286, + "relays": [ + { + "domain": "ddbb5a06.cardano-relay.herd.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.16852262307909663, + "relativeStake": 0.00326952874462319, + "relays": [ + { + "domain": "r1.adastat.net", + "port": 3333 + }, + { + "domain": "r2.adastat.net", + "port": 3333 + }, + { + "domain": "r3.adastat.net", + "port": 3333 + } + ] + }, + { + "accumulatedStake": 0.17179213325223466, + "relativeStake": 0.0032695101731380328, + "relays": [ + { + "domain": "7ddb9c28.cardano-relay.bison.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.17506140238411041, + "relativeStake": 0.0032692691318757577, + "relays": [ + { + "domain": "e4527900.cardano-relay.herd.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.17832941439312058, + "relativeStake": 0.0032680120090101674, + "relays": [ + { + "domain": "9a956262.cardano-relay.bison.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.18159715496236528, + "relativeStake": 0.0032677405692446973, + "relays": [ + { + "domain": "f84db19f.cardano-relay.bison.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.18486457885097138, + "relativeStake": 0.0032674238886061034, + "relays": [ + { + "domain": "778cb679.cardano-relay.bison.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.1881319680698661, + "relativeStake": 0.0032673892188947156, + "relays": [ + { + "address": "35.75.32.253", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.19139930273504197, + "relativeStake": 0.003267334665175869, + "relays": [ + { + "domain": "fdd5329e.cardano-relay.bison.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.19466649685629442, + "relativeStake": 0.0032671941212524666, + "relays": [ + { + "domain": "bb78d57d.cardano-relay.bison.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.1979334652471549, + "relativeStake": 0.0032669683908604814, + "relays": [ + { + "domain": "07f6ea55.cardano-relay.herd.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.20120039105944518, + "relativeStake": 0.0032669258122902775, + "relays": [ + { + "domain": "72e508af.cardano-relay.herd.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.20446730532400423, + "relativeStake": 0.0032669142645590284, + "relays": [ + { + "domain": "9dc533bf.cardano-relay.herd.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.2077341713256115, + "relativeStake": 0.0032668660016072987, + "relays": [ + { + "domain": "d489c136.cardano-relay.bison.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.21100093854958324, + "relativeStake": 0.0032667672239717165, + "relays": [ + { + "domain": "a5f2af9f.cardano-relay.bison.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.21426768194062845, + "relativeStake": 0.0032667433910452126, + "relays": [ + { + "domain": "d89eeea0.cardano-relay.herd.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.21753440233580013, + "relativeStake": 0.003266720395171673, + "relays": [ + { + "domain": "dbe22510.cardano-relay.bison.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.22080111159559357, + "relativeStake": 0.0032667092597934585, + "relays": [ + { + "domain": "e646e266.cardano-relay.bison.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.22406771768431633, + "relativeStake": 0.003266606088722736, + "relays": [ + { + "domain": "94cc7304.cardano-relay.bison.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.2273342733420951, + "relativeStake": 0.0032665556577788006, + "relays": [ + { + "domain": "a94da6a8.cardano-relay.bison.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.23059546721538804, + "relativeStake": 0.0032611938732929184, + "relays": [ + { + "domain": "relay-kiln-7-0.cardano.mainnet.kiln.fi", + "port": 3001 + }, + { + "domain": "relay-kiln-7-1.cardano.mainnet.kiln.fi", + "port": 3001 + }, + { + "domain": "relay-kiln-7-2.cardano.mainnet.kiln.fi", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.2338564222087215, + "relativeStake": 0.003260954993333456, + "relays": [ + { + "domain": "relay1-dl.aichi-stakepool.com", + "port": 6000 + }, + { + "domain": "relay2-jp.aichi-stakepool.com", + "port": 6000 + }, + { + "domain": "relay3-li.aichi-stakepool.com", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.23708813070193557, + "relativeStake": 0.003231708493214084, + "relays": [ + { + "address": "152.53.21.151", + "port": 6000 + }, + { + "address": "149.102.152.63", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.2403171596005932, + "relativeStake": 0.003229028898657608, + "relays": [ + { + "domain": "relays.wavepool.digital", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.24353370284349904, + "relativeStake": 0.0032165432429058552, + "relays": [ + { + "domain": "relaynode1.bravostakepool.nl", + "port": 3001 + }, + { + "domain": "relaynode2.bravostakepool.nl", + "port": 3001 + }, + { + "domain": "relaynode3.bravostakepool.nl", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.24671189308961208, + "relativeStake": 0.0031781902461130492, + "relays": [ + { + "domain": "relay1.str8pool.com", + "port": 7421 + }, + { + "domain": "relay2.str8pool.com", + "port": 3611 + } + ] + }, + { + "accumulatedStake": 0.2498873671289386, + "relativeStake": 0.0031754740393265223, + "relays": [ + { + "domain": "cardano.staking.copper.co", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.25305832024496844, + "relativeStake": 0.003170953116029828, + "relays": [ + { + "domain": "bd-cardano-main-relay-12-a.bdnodes.net", + "port": 6000 + }, + { + "domain": "bd-cardano-main-relay-12-b.bdnodes.net", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.2562034593805283, + "relativeStake": 0.003145139135559887, + "relays": [ + { + "domain": "relay1.clovernodes.io", + "port": 6000 + }, + { + "domain": "relay2.clovernodes.io", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.25934542296172536, + "relativeStake": 0.0031419635811970317, + "relays": [ + { + "domain": "cardano-relays.autostake.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.26248022372164254, + "relativeStake": 0.003134800759917198, + "relays": [ + { + "address": "57.128.184.33", + "port": 3001 + }, + { + "address": "57.128.184.31", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.26560819358463317, + "relativeStake": 0.0031279698629906043, + "relays": [ + { + "domain": "92a8429c.cardano-relay.herd.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.26873603422729603, + "relativeStake": 0.003127840642662881, + "relays": [ + { + "domain": "relay.cardano.securestaking.io", + "port": 3000 + }, + { + "domain": "secur2.cardano.securestaking.io", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.27184949250348645, + "relativeStake": 0.003113458276190432, + "relays": [ + { + "domain": "cof-1.cardanocafe.org", + "port": 3005 + }, + { + "domain": "cof-2.cardanocafe.org", + "port": 3010 + }, + { + "domain": "cap-1.cardanocafe.org", + "port": 4000 + }, + { + "domain": "cap-2.cardanocafe.org", + "port": 4005 + }, + { + "domain": "lat-1.cardanocafe.org", + "port": 5001 + }, + { + "domain": "lat-2.cardanocafe.org", + "port": 5002 + } + ] + }, + { + "accumulatedStake": 0.2749595741649345, + "relativeStake": 0.003110081661448043, + "relays": [ + { + "domain": "relays-10a.cardano.2k2aa.com", + "port": 3001 + }, + { + "domain": "relays-10b.cardano.aeq5f.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.2780586654798147, + "relativeStake": 0.0030990913148802065, + "relays": [ + { + "address": "148.113.17.23", + "port": 6000 + }, + { + "address": "158.69.25.103", + "port": 6000 + }, + { + "address": "46.4.53.238", + "port": 6000 + }, + { + "address": "149.102.140.164", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.2811403525886156, + "relativeStake": 0.003081687108800857, + "relays": [ + { + "domain": "r-eu-0.titanstaking.io", + "port": 4321 + }, + { + "domain": "r-eu-1.titanstaking.io", + "port": 4321 + }, + { + "domain": "r-eu-2.titanstaking.io", + "port": 4321 + } + ] + }, + { + "accumulatedStake": 0.28421628792530196, + "relativeStake": 0.0030759353366863673, + "relays": [ + { + "address": "57.128.184.27", + "port": 3001 + }, + { + "address": "57.128.184.86", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.2872904691762229, + "relativeStake": 0.003074181250920993, + "relays": [ + { + "address": "109.123.231.213", + "port": 6000 + }, + { + "address": "89.58.45.244", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.29036144607785785, + "relativeStake": 0.0030709769016349195, + "relays": [ + { + "domain": "cardano-main.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-main2.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay1.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay2.everstake.one", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.2934284701243953, + "relativeStake": 0.0030670240465374933, + "relays": [ + { + "domain": "relay.cardano.securestaking.io", + "port": 3000 + }, + { + "domain": "secur2.cardano.securestaking.io", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.2964944628282982, + "relativeStake": 0.003065992703902873, + "relays": [ + { + "domain": "relays.stakepool.at", + "port": 3001 + }, + { + "domain": "relay-1.stakepool.at", + "port": 3001 + }, + { + "domain": "relay-2.stakepool.at", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.29954908081583714, + "relativeStake": 0.0030546179875389247, + "relays": [ + { + "address": "54.220.20.40", + "port": 3002 + }, + { + "domain": "octaluso.dyndns.org", + "port": 3002 + } + ] + }, + { + "accumulatedStake": 0.30260135406371763, + "relativeStake": 0.003052273247880506, + "relays": [ + { + "address": "85.215.129.208", + "port": 3001 + }, + { + "address": "154.26.158.189", + "port": 3001 + }, + { + "address": "5.104.83.174", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.30563905307521905, + "relativeStake": 0.0030376990115014175, + "relays": [ + { + "domain": "relay.anonaf.com", + "port": 3333 + } + ] + }, + { + "accumulatedStake": 0.308667515357367, + "relativeStake": 0.003028462282147885, + "relays": [ + { + "domain": "rockyrelay1.ddns.net", + "port": 3001 + }, + { + "domain": "rockyrelay2.ddns.net", + "port": 3002 + } + ] + }, + { + "accumulatedStake": 0.311685174791887, + "relativeStake": 0.0030176594345200517, + "relays": [ + { + "domain": "157.173.120.233", + "port": 3001 + }, + { + "domain": "157.173.120.233", + "port": 3002 + }, + { + "domain": "144.126.157.40", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.3146862739172632, + "relativeStake": 0.0030010991253761957, + "relays": [ + { + "domain": "iogp3-relays.cardano.iog.io", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.3176873440878724, + "relativeStake": 0.0030010701706092405, + "relays": [ + { + "domain": "iogp4-relays.cardano.iog.io", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.3206883851219738, + "relativeStake": 0.0030010410341013423, + "relays": [ + { + "domain": "iogp2-relays.cardano.iog.io", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.32368799479127114, + "relativeStake": 0.0029996096692973735, + "relays": [ + { + "domain": "relays-14a.cardano.2k2aa.com", + "port": 3001 + }, + { + "domain": "relays-14b.cardano.aeq5f.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.32668214032878223, + "relativeStake": 0.00299414553751105, + "relays": [ + { + "domain": "relays.onyxstakepool.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.3296744460716394, + "relativeStake": 0.0029923057428572126, + "relays": [ + { + "address": "54.37.87.63", + "port": 6000 + }, + { + "address": "54.36.178.85", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.33265588958041203, + "relativeStake": 0.002981443508772629, + "relays": [ + { + "domain": "cardano.staking.copper.co", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.3356265006105627, + "relativeStake": 0.002970611030150632, + "relays": [ + { + "domain": "25.cardano.staked.cloud", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.3385845657778983, + "relativeStake": 0.002958065167335628, + "relays": [ + { + "domain": "rel01.fairpool.eu", + "port": 55001 + }, + { + "domain": "rel02.fairpool.eu", + "port": 55002 + }, + { + "domain": "rel03.fairpool.eu", + "port": 55003 + }, + { + "domain": "rel04.fairpool.eu", + "port": 55004 + } + ] + }, + { + "accumulatedStake": 0.3415404664285907, + "relativeStake": 0.002955900650692371, + "relays": [ + { + "domain": "relay1.adaocean.com", + "port": 6000 + }, + { + "domain": "relay2.adaocean.com", + "port": 6000 + }, + { + "domain": "relay3.adaocean.com", + "port": 6000 + }, + { + "domain": "relay4.adaocean.com", + "port": 6000 + }, + { + "domain": "relay5.adaocean.com", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.3444900814245045, + "relativeStake": 0.0029496149959138164, + "relays": [ + { + "domain": "relays.digi.pro", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.34743953976999464, + "relativeStake": 0.002949458345490125, + "relays": [ + { + "domain": "relay1.snakerelays.link", + "port": 3001 + }, + { + "domain": "relay2.snakerelays.link", + "port": 3002 + } + ] + }, + { + "accumulatedStake": 0.3503640437931714, + "relativeStake": 0.0029245040231767492, + "relays": [ + { + "domain": "r1.1percentpool.eu", + "port": 19001 + }, + { + "domain": "r2.1percentpool.eu", + "port": 19002 + } + ] + }, + { + "accumulatedStake": 0.3532732070832079, + "relativeStake": 0.002909163290036547, + "relays": [ + { + "domain": "eu.relays.cardanians.io", + "port": 1000 + }, + { + "domain": "ca.relays.cardanians.io", + "port": 1000 + } + ] + }, + { + "accumulatedStake": 0.3561735522389771, + "relativeStake": 0.002900345155769215, + "relays": [ + { + "domain": "eu.relays.cardanians.io", + "port": 1000 + }, + { + "domain": "ca.relays.cardanians.io", + "port": 1000 + } + ] + }, + { + "accumulatedStake": 0.3590724670299164, + "relativeStake": 0.002898914790939283, + "relays": [ + { + "domain": "relay1.adaocean.com", + "port": 6000 + }, + { + "domain": "relay2.adaocean.com", + "port": 6000 + }, + { + "domain": "relay3.adaocean.com", + "port": 6000 + }, + { + "domain": "relay4.adaocean.com", + "port": 6000 + }, + { + "domain": "relay5.adaocean.com", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.3619357611926281, + "relativeStake": 0.002863294162711684, + "relays": [ + { + "domain": "relay1.mainnet.pool.cardano.services", + "port": 3001 + }, + { + "domain": "relay2.mainnet.pool.cardano.services", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.3647895359090357, + "relativeStake": 0.0028537747164075985, + "relays": [ + { + "domain": "r-eu-0.titanstaking.io", + "port": 4321 + }, + { + "domain": "r-eu-1.titanstaking.io", + "port": 4321 + }, + { + "domain": "r-eu-2.titanstaking.io", + "port": 4321 + } + ] + }, + { + "accumulatedStake": 0.36762474687947383, + "relativeStake": 0.0028352109704381035, + "relays": [ + { + "domain": "relays.stakepool.at", + "port": 3001 + }, + { + "domain": "relay-1.stakepool.at", + "port": 3001 + }, + { + "domain": "relay-2.stakepool.at", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.37044739110002345, + "relativeStake": 0.0028226442205496207, + "relays": [ + { + "address": "52.6.109.221", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.37326550932163427, + "relativeStake": 0.0028181182216108513, + "relays": [ + { + "address": "148.113.17.23", + "port": 6000 + }, + { + "address": "158.69.25.103", + "port": 6000 + }, + { + "address": "95.216.70.238", + "port": 6000 + }, + { + "address": "149.102.140.196", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.37607004083289425, + "relativeStake": 0.0028045315112599557, + "relays": [ + { + "address": "49.12.198.221", + "port": 6000 + }, + { + "address": "89.58.18.51", + "port": 6000 + }, + { + "address": "131.153.199.82", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.3788385141159927, + "relativeStake": 0.002768473283098447, + "relays": [ + { + "domain": "relay1-us.xstakepool.com", + "port": 3001 + }, + { + "domain": "relay2-eu.xstakepool.com", + "port": 3001 + }, + { + "domain": "relay3-sg.xstakepool.com", + "port": 3001 + }, + { + "domain": "relay4-ae.xstakepool.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.381595559279801, + "relativeStake": 0.00275704516380832, + "relays": [ + { + "domain": "relays.mainnet.pools.fivebinaries.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.3843277118645176, + "relativeStake": 0.0027321525847165667, + "relays": [ + { + "address": "91.242.214.33", + "port": 3001 + }, + { + "address": "186.233.187.33", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.3870438364612258, + "relativeStake": 0.0027161245967082556, + "relays": [ + { + "domain": "olive-geonosis-edffc.cardano.bdnodes.net", + "port": 6000 + }, + { + "domain": "violet-kingston-8d67e.cardano.bdnodes.net", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.38975034486362425, + "relativeStake": 0.0027065084023984555, + "relays": [ + { + "domain": "r1.1percentpool.eu", + "port": 19001 + }, + { + "domain": "r2.1percentpool.eu", + "port": 19002 + } + ] + }, + { + "accumulatedStake": 0.39244785790434344, + "relativeStake": 0.0026975130407191467, + "relays": [ + { + "domain": "11.relays.happystaking.io", + "port": 3001 + }, + { + "domain": "12.relays.happystaking.io", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.395137196014782, + "relativeStake": 0.0026893381104385436, + "relays": [ + { + "domain": "relays.smaug.pool.pm", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.3978228036156799, + "relativeStake": 0.0026856076008979516, + "relays": [ + { + "domain": "relays.cardanowithpaul.com", + "port": 1069 + } + ] + }, + { + "accumulatedStake": 0.40049295442762156, + "relativeStake": 0.0026701508119416407, + "relays": [ + { + "address": "35.211.17.86", + "port": 3000 + }, + { + "address": "34.23.88.7", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.4031567474043577, + "relativeStake": 0.002663792976736135, + "relays": [ + { + "domain": "relay1.apexfusionhosting.com", + "port": 3001 + }, + { + "domain": "relay2.apexfusionhosting.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.4057986057169931, + "relativeStake": 0.002641858312635436, + "relays": [ + { + "address": "20.61.229.103", + "port": 3001 + }, + { + "address": "20.61.228.218", + "port": 3001 + }, + { + "address": "108.142.42.221", + "port": 3001 + }, + { + "address": "108.142.42.161", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.40843171431328684, + "relativeStake": 0.002633108596293698, + "relays": [ + { + "domain": "104.131.47.170", + "port": 6000 + }, + { + "domain": "128.199.64.13", + "port": 6000 + }, + { + "domain": "165.232.180.100", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.4110485636201134, + "relativeStake": 0.0026168493068265686, + "relays": [ + { + "address": "198.71.57.191", + "port": 6000 + }, + { + "address": "154.12.240.223", + "port": 6000 + }, + { + "address": "94.16.113.130", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.4136588289693021, + "relativeStake": 0.002610265349188723, + "relays": [ + { + "address": "52.6.109.221", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.4162260108422686, + "relativeStake": 0.002567181872966517, + "relays": [ + { + "domain": "relay1.adaocean.com", + "port": 6000 + }, + { + "domain": "relay2.adaocean.com", + "port": 6000 + }, + { + "domain": "relay3.adaocean.com", + "port": 6000 + }, + { + "domain": "relay4.adaocean.com", + "port": 6000 + }, + { + "domain": "relay5.adaocean.com", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.41878471236144454, + "relativeStake": 0.002558701519175888, + "relays": [ + { + "domain": "relay.de.fikapool.com", + "port": 6000 + }, + { + "domain": "relay.sg.fikapool.com", + "port": 6000 + }, + { + "domain": "relay.ca.fikapool.com", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.4213419890383342, + "relativeStake": 0.002557276676889663, + "relays": [ + { + "domain": "relay-kiln-6-0.cardano.mainnet.kiln.fi", + "port": 3001 + }, + { + "domain": "relay-kiln-6-1.cardano.mainnet.kiln.fi", + "port": 3001 + }, + { + "domain": "relay-kiln-6-2.cardano.mainnet.kiln.fi", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.423894765942093, + "relativeStake": 0.002552776903758832, + "relays": [ + { + "domain": "77cb3f75.cardano-relay.herd.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.42644041599312266, + "relativeStake": 0.0025456500510296393, + "relays": [ + { + "domain": "sydney.cardanode.com.au", + "port": 6000 + }, + { + "domain": "singapore.cardanode.com.au", + "port": 6000 + }, + { + "domain": "goldcoast.cardanode.com.au", + "port": 6000 + }, + { + "domain": "europe.cardanode.com.au", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.42895854862135885, + "relativeStake": 0.0025181326282361803, + "relays": [ + { + "domain": "st3ak.1337.cx", + "port": 6000 + }, + { + "domain": "st3ak.mooo.com", + "port": 6000 + }, + { + "domain": "st3ak.root.sx", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.4314732580770781, + "relativeStake": 0.0025147094557192596, + "relays": [ + { + "address": "3.217.90.52", + "port": 6000 + }, + { + "address": "3.219.254.127", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.4339692681478013, + "relativeStake": 0.0024960100707231694, + "relays": [ + { + "address": "35.156.192.95", + "port": 6000 + }, + { + "address": "18.197.51.215", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.43644736915153903, + "relativeStake": 0.002478101003737767, + "relays": [ + { + "domain": "fr.relays.cardanians.io", + "port": 1000 + }, + { + "domain": "ca.relays.cardanians.io", + "port": 1000 + } + ] + }, + { + "accumulatedStake": 0.43892472274748584, + "relativeStake": 0.0024773535959468226, + "relays": [ + { + "domain": "benitoite-rohan-d68b9.cardano.bdnodes.net", + "port": 6000 + }, + { + "domain": "brown-lagos-6a470.cardano.bdnodes.net", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.4413942534665278, + "relativeStake": 0.002469530719041894, + "relays": [ + { + "domain": "lucerne.datadyne.earth", + "port": 3001 + }, + { + "domain": "g5.datadyne.earth", + "port": 3002 + }, + { + "domain": "drcaroll.datadyne.earth", + "port": 3003 + } + ] + }, + { + "accumulatedStake": 0.4438602765055538, + "relativeStake": 0.0024660230390260674, + "relays": [ + { + "domain": "relays.wavepool.digital", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.44632247093149024, + "relativeStake": 0.00246219442593644, + "relays": [ + { + "address": "15.204.97.132", + "port": 3001 + }, + { + "address": "15.204.97.130", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.448774722609638, + "relativeStake": 0.0024522516781477813, + "relays": [ + { + "domain": "relay1-dl.aichi-stakepool.com", + "port": 6000 + }, + { + "domain": "relay2-jp.aichi-stakepool.com", + "port": 6000 + }, + { + "domain": "relay3-li.aichi-stakepool.com", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.45121025636380585, + "relativeStake": 0.0024355337541677913, + "relays": [ + { + "domain": "relay-trustwallet-5-0.cardano.mainnet.kiln.fi", + "port": 3001 + }, + { + "domain": "relay-trustwallet-5-1.cardano.mainnet.kiln.fi", + "port": 3001 + }, + { + "domain": "relay-trustwallet-5-2.cardano.mainnet.kiln.fi", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.45363196111932574, + "relativeStake": 0.00242170475551993, + "relays": [ + { + "domain": "relay1.0aaaa.org", + "port": 3001 + }, + { + "domain": "relay2.0aaaa.org", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.45604498978225133, + "relativeStake": 0.0024130286629255758, + "relays": [ + { + "domain": "relay1.able-pool.io", + "port": 4555 + }, + { + "domain": "relay2.able-pool.io", + "port": 4419 + } + ] + }, + { + "accumulatedStake": 0.4584471335018261, + "relativeStake": 0.0024021437195747386, + "relays": [ + { + "domain": "cardano-main.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-main2.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay1.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay2.everstake.one", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.4607802215576634, + "relativeStake": 0.002333088055837304, + "relays": [ + { + "address": "20.61.229.103", + "port": 3001 + }, + { + "address": "20.61.228.218", + "port": 3001 + }, + { + "address": "108.142.42.221", + "port": 3001 + }, + { + "address": "108.142.42.161", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.4631133026655041, + "relativeStake": 0.002333081107840733, + "relays": [ + { + "address": "20.61.229.103", + "port": 3001 + }, + { + "address": "20.61.228.218", + "port": 3001 + }, + { + "address": "108.142.42.221", + "port": 3001 + }, + { + "address": "108.142.42.161", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.4654462159632506, + "relativeStake": 0.002332913297746474, + "relays": [ + { + "address": "20.61.229.103", + "port": 3001 + }, + { + "address": "20.61.228.218", + "port": 3001 + }, + { + "address": "108.142.42.221", + "port": 3001 + }, + { + "address": "108.142.42.161", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.4677788187238631, + "relativeStake": 0.0023326027606125335, + "relays": [ + { + "address": "20.61.229.103", + "port": 3001 + }, + { + "address": "20.61.228.218", + "port": 3001 + }, + { + "address": "108.142.42.221", + "port": 3001 + }, + { + "address": "108.142.42.161", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.47011141071893686, + "relativeStake": 0.002332591995073764, + "relays": [ + { + "address": "20.61.229.103", + "port": 3001 + }, + { + "address": "20.61.228.218", + "port": 3001 + }, + { + "address": "108.142.42.221", + "port": 3001 + }, + { + "address": "108.142.42.161", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.47244399762773875, + "relativeStake": 0.0023325869088018573, + "relays": [ + { + "address": "20.61.229.103", + "port": 3001 + }, + { + "address": "20.61.228.218", + "port": 3001 + }, + { + "address": "108.142.42.221", + "port": 3001 + }, + { + "address": "108.142.42.161", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.4747765845365406, + "relativeStake": 0.0023325869088018573, + "relays": [ + { + "address": "20.61.229.103", + "port": 3001 + }, + { + "address": "20.61.228.218", + "port": 3001 + }, + { + "address": "108.142.42.221", + "port": 3001 + }, + { + "address": "108.142.42.161", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.4770801349270183, + "relativeStake": 0.002303550390477686, + "relays": [ + { + "address": "52.177.36.96", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.47938124775772684, + "relativeStake": 0.0023011128307085715, + "relays": [ + { + "address": "137.220.49.160", + "port": 6001 + }, + { + "address": "149.28.106.237", + "port": 6001 + } + ] + }, + { + "accumulatedStake": 0.4816677993368645, + "relativeStake": 0.0022865515791376232, + "relays": [ + { + "domain": "eu-relay.hermes-stakepool.com", + "port": 1000 + }, + { + "domain": "us-relay.hermes-stakepool.com", + "port": 1000 + } + ] + }, + { + "accumulatedStake": 0.4839412784047188, + "relativeStake": 0.0022734790678543017, + "relays": [ + { + "address": "66.160.158.69", + "port": 6000 + }, + { + "address": "66.160.158.70", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.48620766643039487, + "relativeStake": 0.002266388025676063, + "relays": [ + { + "address": "35.211.17.86", + "port": 3000 + }, + { + "address": "34.23.88.7", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.4884615832768297, + "relativeStake": 0.0022539168464348405, + "relays": [ + { + "domain": "ACLrelay1.cardanoland.com", + "port": 6000 + }, + { + "domain": "ACLrelay2.cardanoland.com", + "port": 7000 + }, + { + "domain": "ACLrelay3.cardanoland.com", + "port": 8000 + }, + { + "domain": "ACLrelay4.cardanoland.com", + "port": 6000 + }, + { + "domain": "ACLrelay5.cardanoland.com", + "port": 7000 + }, + { + "domain": "ACLrelay6.cardanoland.com", + "port": 8000 + } + ] + }, + { + "accumulatedStake": 0.4907118754562999, + "relativeStake": 0.002250292179470227, + "relays": [ + { + "domain": "relay1-us.xstakepool.com", + "port": 3001 + }, + { + "domain": "relay2-eu.xstakepool.com", + "port": 3001 + }, + { + "domain": "relay3-sg.xstakepool.com", + "port": 3001 + }, + { + "domain": "relay4-ae.xstakepool.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.49293739765270245, + "relativeStake": 0.0022255221964025246, + "relays": [ + { + "address": "18.157.253.103", + "port": 8381 + } + ] + }, + { + "accumulatedStake": 0.4951451643794488, + "relativeStake": 0.0022077667267463128, + "relays": [ + { + "address": "57.128.184.28", + "port": 3001 + }, + { + "address": "57.128.184.30", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.4973459814151828, + "relativeStake": 0.0022008170357340727, + "relays": [ + { + "domain": "relay0.viperstaking.com", + "port": 4444 + } + ] + }, + { + "accumulatedStake": 0.4995173635268888, + "relativeStake": 0.0021713821117059734, + "relays": [ + { + "domain": "relay.azureada.com", + "port": 3001 + }, + { + "domain": "relay.azureada.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5016723348319972, + "relativeStake": 0.0021549713051084193, + "relays": [ + { + "domain": "eu1.stakecool.io", + "port": 4001 + }, + { + "domain": "eu2.stakecool.io", + "port": 4001 + }, + { + "domain": "ca1.stakecool.io", + "port": 4001 + } + ] + }, + { + "accumulatedStake": 0.5038138341308888, + "relativeStake": 0.0021414992988915355, + "relays": [ + { + "domain": "relays.digi.pro", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5059429535076853, + "relativeStake": 0.0021291193767964543, + "relays": [ + { + "domain": "relay01.ca.lovelace.community", + "port": 3001 + }, + { + "domain": "relay02.ca.lovelace.community", + "port": 3001 + }, + { + "domain": "relay01.fr.lovelace.community", + "port": 3001 + }, + { + "domain": "relay01.de.lovelace.community", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5080667476604476, + "relativeStake": 0.0021237941527623254, + "relays": [ + { + "address": "150.136.111.193", + "port": 6001 + }, + { + "address": "150.136.84.82", + "port": 6001 + }, + { + "address": "158.101.99.150", + "port": 6001 + } + ] + }, + { + "accumulatedStake": 0.5101830422923245, + "relativeStake": 0.0021162946318769253, + "relays": [ + { + "domain": "relay-1.minswap.org", + "port": 3001 + }, + { + "domain": "relay-2.minswap.org", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5122992660877903, + "relativeStake": 0.002116223795465884, + "relays": [ + { + "address": "188.165.236.202", + "port": 3001 + }, + { + "address": "195.201.107.114", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5144086575573985, + "relativeStake": 0.002109391469608166, + "relays": [ + { + "domain": "relay.sunnyada.com", + "port": 5001 + } + ] + }, + { + "accumulatedStake": 0.516514120877437, + "relativeStake": 0.0021054633200384594, + "relays": [ + { + "domain": "cardano-main.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-main2.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay1.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay2.everstake.one", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5185919444611566, + "relativeStake": 0.00207782358371971, + "relays": [ + { + "domain": "adar1.stakit.io", + "port": 30500 + } + ] + }, + { + "accumulatedStake": 0.5206566902348788, + "relativeStake": 0.00206474577372217, + "relays": [ + { + "address": "52.8.37.3", + "port": 3001 + }, + { + "address": "3.125.252.182", + "port": 3001 + }, + { + "address": "52.63.225.190", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.522713978141767, + "relativeStake": 0.002057287906888112, + "relays": [ + { + "domain": "ada-relay01.biglazycat.com", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.5247708271373008, + "relativeStake": 0.0020568489955338615, + "relays": [ + { + "domain": "cardano.staking.copper.co", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5268227808354382, + "relativeStake": 0.002051953698137413, + "relays": [ + { + "domain": "cardano.staking.copper.co", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5288740175825508, + "relativeStake": 0.0020512367471125998, + "relays": [ + { + "domain": "cardano-main.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-main2.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay1.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay2.everstake.one", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5309192069486762, + "relativeStake": 0.002045189366125407, + "relays": [ + { + "domain": "relay.cardano.securestaking.io", + "port": 3000 + }, + { + "domain": "secur2.cardano.securestaking.io", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.5329636344160245, + "relativeStake": 0.0020444274673482713, + "relays": [ + { + "domain": "relay1.nedscave.io", + "port": 3001 + }, + { + "domain": "relay2.nedscave.io", + "port": 3001 + }, + { + "domain": "relay3.nedscave.io", + "port": 3001 + }, + { + "domain": "relay4.nedscave.io", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5350032881514016, + "relativeStake": 0.0020396537353770706, + "relays": [ + { + "address": "102.130.127.242", + "port": 6000 + }, + { + "address": "94.16.106.16", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.5370373802481718, + "relativeStake": 0.002034092096770206, + "relays": [ + { + "domain": "cardano.staking.copper.co", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5390434214882869, + "relativeStake": 0.0020060412401151392, + "relays": [ + { + "domain": "germany.cardanode.io", + "port": 6000 + }, + { + "domain": "missouri.cardanode.io", + "port": 6000 + }, + { + "domain": "la.cardanode.io", + "port": 6000 + }, + { + "domain": "perth.cardanode.io", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.5410448537195168, + "relativeStake": 0.0020014322312299363, + "relays": [ + { + "domain": "cardano.staking.copper.co", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5430431700213111, + "relativeStake": 0.0019983163017942215, + "relays": [ + { + "domain": "relay0.fimi.vn", + "port": 3000 + }, + { + "domain": "relay1.fimi.vn", + "port": 3000 + }, + { + "domain": "relay2.fimi.vn", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.5450275657137983, + "relativeStake": 0.0019843956924872025, + "relays": [ + { + "address": "57.129.28.179", + "port": 3001 + }, + { + "address": "57.129.28.180", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5469652415581031, + "relativeStake": 0.0019376758443047715, + "relays": [ + { + "address": "13.235.131.115", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5488962337399079, + "relativeStake": 0.0019309921818048152, + "relays": [ + { + "address": "89.58.38.12", + "port": 6001 + }, + { + "address": "94.23.40.22", + "port": 6001 + }, + { + "address": "37.120.189.7", + "port": 6001 + } + ] + }, + { + "accumulatedStake": 0.550809944775785, + "relativeStake": 0.00191371103587721, + "relays": [ + { + "address": "20.69.213.207", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.5527130230651345, + "relativeStake": 0.001903078289349384, + "relays": [ + { + "domain": "cardano-relays-1.nu.fi", + "port": 3003 + }, + { + "domain": "cardano-relays-2.nu.fi", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5546135290373576, + "relativeStake": 0.001900505972223148, + "relays": [ + { + "domain": "relay1.adaocean.com", + "port": 6000 + }, + { + "domain": "relay2.adaocean.com", + "port": 6000 + }, + { + "domain": "relay3.adaocean.com", + "port": 6000 + }, + { + "domain": "relay4.adaocean.com", + "port": 6000 + }, + { + "domain": "relay5.adaocean.com", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.5565098670545642, + "relativeStake": 0.0018963380172065335, + "relays": [ + { + "address": "129.80.153.243", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5584056355391591, + "relativeStake": 0.001895768484595022, + "relays": [ + { + "domain": "cardano-relay1.nodes.lgns.xyz", + "port": 6000 + }, + { + "domain": "cardano-relay2.nodes.lgns.xyz", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.5602945554507932, + "relativeStake": 0.0018889199116340412, + "relays": [ + { + "domain": "cardano-main.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-main2.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay1.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay2.everstake.one", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5621802725630959, + "relativeStake": 0.0018857171123027045, + "relays": [ + { + "address": "148.113.17.23", + "port": 6000 + }, + { + "address": "158.69.25.103", + "port": 6000 + }, + { + "address": "168.119.13.158", + "port": 6000 + }, + { + "address": "149.102.140.207", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.5640630362264312, + "relativeStake": 0.001882763663335262, + "relays": [ + { + "domain": "relay1.blueocean.sg", + "port": 3001 + }, + { + "domain": "relay2.blueocean.sg", + "port": 3001 + }, + { + "domain": "hcm07xw90vx.sn.mynetname.net", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5659373833341351, + "relativeStake": 0.001874347107703991, + "relays": [ + { + "address": "35.154.118.137", + "port": 6000 + }, + { + "address": "3.6.81.137", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.5677845050053439, + "relativeStake": 0.0018471216712087272, + "relays": [ + { + "domain": "relays-2a.cardano.2k2aa.com", + "port": 3001 + }, + { + "domain": "relays-2b.cardano.aeq5f.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5696314395514714, + "relativeStake": 0.001846934546127497, + "relays": [ + { + "address": "52.177.36.96", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.571468613218451, + "relativeStake": 0.0018371736669795548, + "relays": [ + { + "address": "150.136.84.82", + "port": 6001 + }, + { + "address": "158.101.99.150", + "port": 6001 + }, + { + "address": "150.136.111.193", + "port": 6001 + } + ] + }, + { + "accumulatedStake": 0.5733017386914739, + "relativeStake": 0.0018331254730229564, + "relays": [ + { + "domain": "relays.mainnet.pools.fivebinaries.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5751151649685664, + "relativeStake": 0.0018134262770925194, + "relays": [ + { + "domain": "relay1-pub.ahlnet.nu", + "port": 2111 + }, + { + "domain": "relay2-pub.ahlnet.nu", + "port": 2111 + }, + { + "domain": "relay3-pub.ahlnet.nu", + "port": 2111 + }, + { + "domain": "relay-fallback.ahlnet.nu", + "port": 55218 + } + ] + }, + { + "accumulatedStake": 0.5769212743357075, + "relativeStake": 0.0018061093671410905, + "relays": [ + { + "address": "157.245.228.134", + "port": 3001 + }, + { + "address": "159.89.120.164", + "port": 3001 + }, + { + "address": "209.97.186.44", + "port": 3001 + }, + { + "domain": "na.bloompool.io", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5787265647651884, + "relativeStake": 0.0018052904294808437, + "relays": [ + { + "address": "139.180.198.13", + "port": 6000 + }, + { + "address": "207.148.77.122", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.5805268161404772, + "relativeStake": 0.0018002513752888609, + "relays": [ + { + "address": "195.201.143.213", + "port": 3001 + }, + { + "address": "194.233.70.237", + "port": 3001 + }, + { + "address": "89.58.59.127", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5823142243308275, + "relativeStake": 0.0017874081903502652, + "relays": [ + { + "address": "34.84.0.241", + "port": 3000 + }, + { + "address": "34.146.198.77", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.5840962354265187, + "relativeStake": 0.001782011095691155, + "relays": [ + { + "domain": "cardano-main.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-main2.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay1.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay2.everstake.one", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5858718366857708, + "relativeStake": 0.001775601259252184, + "relays": [ + { + "domain": "europe-2.katanapool.net", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5876468228501628, + "relativeStake": 0.0017749861643919346, + "relays": [ + { + "domain": "cardano-main.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-main2.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay1.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay2.everstake.one", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5894144897922272, + "relativeStake": 0.0017676669420644828, + "relays": [ + { + "domain": "relays.mainnet.pools.fivebinaries.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5911819960857656, + "relativeStake": 0.0017675062935383586, + "relays": [ + { + "domain": "relays.digi.pro", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5929486941621144, + "relativeStake": 0.0017666980763487365, + "relays": [ + { + "domain": "r1.1percentpool.eu", + "port": 19001 + }, + { + "domain": "r2.1percentpool.eu", + "port": 19002 + } + ] + }, + { + "accumulatedStake": 0.5946935485629636, + "relativeStake": 0.0017448544008493265, + "relays": [ + { + "address": "170.187.203.117", + "port": 6000 + }, + { + "address": "173.255.203.8", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.5964334866797654, + "relativeStake": 0.00173993811680173, + "relays": [ + { + "address": "52.177.36.96", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.5981726501263862, + "relativeStake": 0.0017391634466208188, + "relays": [ + { + "domain": "cardano-main.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-main2.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay1.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay2.everstake.one", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5999062202786034, + "relativeStake": 0.0017335701522172113, + "relays": [ + { + "domain": "cardano-main.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-main2.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay1.everstake.one", + "port": 3001 + }, + { + "domain": "cardano-relay2.everstake.one", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6016313070153534, + "relativeStake": 0.001725086736749934, + "relays": [ + { + "address": "202.61.246.91", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6033560376852862, + "relativeStake": 0.0017247306699329217, + "relays": [ + { + "address": "149.28.106.59", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.6050787778258085, + "relativeStake": 0.001722740140522288, + "relays": [ + { + "domain": "norway.adanorthpool.com", + "port": 9011 + }, + { + "domain": "norway.adanorthpool.com", + "port": 9012 + }, + { + "domain": "norway.adanorthpool.com", + "port": 9014 + }, + { + "domain": "norway2.adanorthpool.com", + "port": 9014 + }, + { + "domain": "norway2.adanorthpool.com", + "port": 9013 + } + ] + }, + { + "accumulatedStake": 0.6067913345072755, + "relativeStake": 0.0017125566814669955, + "relays": [ + { + "domain": "truth.kiwipool.org", + "port": 9630 + }, + { + "domain": "love.kiwipool.org", + "port": 9630 + }, + { + "domain": "liberty.kiwipool.org", + "port": 9630 + }, + { + "domain": "freedom.kiwipool.org", + "port": 9630 + }, + { + "domain": "peace.kiwipool.org", + "port": 9630 + }, + { + "domain": "aspire.kiwipool.org", + "port": 9630 + } + ] + }, + { + "accumulatedStake": 0.6084825754246366, + "relativeStake": 0.0016912409173609688, + "relays": [ + { + "domain": "btc-cardano-main-relay-00-a.bdnodes.net", + "port": 6000 + }, + { + "domain": "btc-cardano-main-relay-00-b.bdnodes.net", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.6101632493575723, + "relativeStake": 0.001680673932935742, + "relays": [ + { + "domain": "84cbba68.cardano-relay.herd.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.6118391569817888, + "relativeStake": 0.0016759076242165048, + "relays": [ + { + "domain": "cardano-relays-1.nu.fi", + "port": 3003 + }, + { + "domain": "cardano-relays-2.nu.fi", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6135014235881572, + "relativeStake": 0.001662266606368385, + "relays": [ + { + "domain": "cardano-relays-1.nu.fi", + "port": 3003 + }, + { + "domain": "cardano-relays-2.nu.fi", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6151573633318277, + "relativeStake": 0.0016559397436705537, + "relays": [ + { + "domain": "bra-relay.cardanistas.io", + "port": 8081 + }, + { + "domain": "usa-relay.cardanistas.io", + "port": 8082 + }, + { + "domain": "de-relay.cardanistas.io", + "port": 8083 + } + ] + }, + { + "accumulatedStake": 0.616792866026546, + "relativeStake": 0.0016355026947183064, + "relays": [ + { + "domain": "53e378bf.cardano-relay.bison.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.6184265390244764, + "relativeStake": 0.0016336729979304194, + "relays": [ + { + "domain": "c2504518.cardano-relay.bison.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.6200598634339846, + "relativeStake": 0.0016333244095080978, + "relays": [ + { + "domain": "d699483e.cardano-relay.bison.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.6216931696701876, + "relativeStake": 0.00163330623620313, + "relays": [ + { + "domain": "3ef2283d.cardano-relay.bison.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.6233260246718206, + "relativeStake": 0.0016328550016329712, + "relays": [ + { + "domain": "north-america-relay.jpn-sp.net", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6249531764492667, + "relativeStake": 0.001627151777446133, + "relays": [ + { + "domain": "cork.queenada.com", + "port": 7500 + } + ] + }, + { + "accumulatedStake": 0.6265641879210517, + "relativeStake": 0.0016110114717849998, + "relays": [ + { + "address": "185.161.193.91", + "port": 6010 + }, + { + "address": "185.161.193.92", + "port": 6010 + }, + { + "address": "2a07:c700:0:700::91", + "port": 6010 + }, + { + "address": "2a07:c700:0:700::92", + "port": 6010 + }, + { + "address": "80.211.123.84", + "port": 6010 + } + ] + }, + { + "accumulatedStake": 0.628163324642511, + "relativeStake": 0.001599136721459223, + "relays": [ + { + "address": "199.247.23.219", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.629754228610294, + "relativeStake": 0.0015909039677829452, + "relays": [ + { + "domain": "relays.mainnet.fortepool.io", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6313427022836657, + "relativeStake": 0.00158847367337182, + "relays": [ + { + "domain": "relays.staking4ada.org", + "port": 1818 + }, + { + "domain": "globecast.staking4ada.org", + "port": 6061 + } + ] + }, + { + "accumulatedStake": 0.6329136897990634, + "relativeStake": 0.0015709875153975682, + "relays": [ + { + "domain": "relay1.hyperlinkpool.kr", + "port": 3002 + }, + { + "domain": "relay2.hyperlinkpool.kr", + "port": 3003 + }, + { + "domain": "relay3.hyperlinkpool.kr", + "port": 3004 + } + ] + }, + { + "accumulatedStake": 0.6344835668572193, + "relativeStake": 0.0015698770581559444, + "relays": [ + { + "address": "52.177.36.96", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.6360458663127326, + "relativeStake": 0.0015622994555133836, + "relays": [ + { + "address": "157.245.228.134", + "port": 3001 + }, + { + "address": "159.89.120.164", + "port": 3001 + }, + { + "address": "209.97.186.44", + "port": 3001 + }, + { + "domain": "eu.bloompool.io", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6376074392763968, + "relativeStake": 0.0015615729636642005, + "relays": [ + { + "address": "157.245.228.134", + "port": 3001 + }, + { + "address": "159.89.120.164", + "port": 3001 + }, + { + "address": "209.97.186.44", + "port": 3001 + }, + { + "domain": "eu.bloompool.io", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6391593268791592, + "relativeStake": 0.0015518876027624127, + "relays": [ + { + "domain": "relays.cardanowithpaul.com", + "port": 1069 + } + ] + }, + { + "accumulatedStake": 0.6407105239085179, + "relativeStake": 0.0015511970293585976, + "relays": [ + { + "domain": "r2.cosd.com", + "port": 5250 + } + ] + }, + { + "accumulatedStake": 0.6422614114797845, + "relativeStake": 0.0015508875712667188, + "relays": [ + { + "address": "52.8.37.3", + "port": 3001 + }, + { + "address": "3.125.252.182", + "port": 3001 + }, + { + "address": "52.63.225.190", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6438105239822901, + "relativeStake": 0.0015491125025055468, + "relays": [ + { + "domain": "relays.wavepool.digital", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6453536803021004, + "relativeStake": 0.0015431563198102021, + "relays": [ + { + "address": "3.231.140.4", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.646886285063726, + "relativeStake": 0.0015326047616257136, + "relays": [ + { + "address": "3.234.66.234", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6484177914492905, + "relativeStake": 0.0015315063855644358, + "relays": [ + { + "address": "3.234.66.234", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.649948217154952, + "relativeStake": 0.0015304257056614722, + "relays": [ + { + "address": "3.234.185.23", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6514761546635223, + "relativeStake": 0.0015279375085702764, + "relays": [ + { + "address": "3.231.62.160", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6530037696658524, + "relativeStake": 0.00152761500233012, + "relays": [ + { + "address": "3.231.140.4", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6545308048145604, + "relativeStake": 0.0015270351487080172, + "relays": [ + { + "address": "3.221.94.137", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6560576882059364, + "relativeStake": 0.0015268833913760034, + "relays": [ + { + "address": "3.231.62.160", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6575841943240397, + "relativeStake": 0.0015265061181033736, + "relays": [ + { + "address": "3.228.183.84", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6591105821541399, + "relativeStake": 0.0015263878301001682, + "relays": [ + { + "address": "3.221.94.137", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6606369026303012, + "relativeStake": 0.0015263204761612806, + "relays": [ + { + "address": "3.222.153.137", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6621629930374846, + "relativeStake": 0.0015260904071833967, + "relays": [ + { + "address": "3.222.153.137", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6636889682671108, + "relativeStake": 0.0015259752296261932, + "relays": [ + { + "address": "34.192.61.190", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6652149149028088, + "relativeStake": 0.00152594663569807, + "relays": [ + { + "address": "3.228.183.84", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6667406409777465, + "relativeStake": 0.0015257260749376965, + "relays": [ + { + "address": "3.224.130.99", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6682660935660731, + "relativeStake": 0.001525452588326561, + "relays": [ + { + "address": "3.225.242.57", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6697905528257488, + "relativeStake": 0.0015244592596756793, + "relays": [ + { + "address": "3.234.185.23", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6713146028959275, + "relativeStake": 0.0015240500701787165, + "relays": [ + { + "domain": "cardano1.staked.cloud", + "port": 3001 + }, + { + "address": "44.242.70.220", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6728331665121237, + "relativeStake": 0.0015185636161961242, + "relays": [ + { + "domain": "relays.digi.pro", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6743486437686587, + "relativeStake": 0.0015154772565349902, + "relays": [ + { + "domain": "cardano2.staked.cloud", + "port": 3001 + }, + { + "address": "52.39.19.247", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6758533594519478, + "relativeStake": 0.001504715683289206, + "relays": [ + { + "domain": "eu-de-blue-cdn-relays.cardano.fans", + "port": 3001 + }, + { + "domain": "us-us-red-cdn-relays.cardano.fans", + "port": 3002 + }, + { + "domain": "us-us-blue-cdn-relays.cardano.fans", + "port": 3002 + }, + { + "domain": "eu-de-blue-cdn-relays.cardano.fans", + "port": 3001 + }, + { + "domain": "eu-de-red-cdn-relays.cardano.fans", + "port": 3001 + }, + { + "domain": "us-us-red-cdn-relays.cardano.fans", + "port": 3002 + }, + { + "domain": "us-us-blue-cdn-relays.cardano.fans", + "port": 3002 + } + ] + }, + { + "accumulatedStake": 0.6773547070229083, + "relativeStake": 0.0015013475709605493, + "relays": [ + { + "address": "23.21.195.62", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6788524609378679, + "relativeStake": 0.0014977539149594774, + "relays": [ + { + "address": "18.207.62.97", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6803494327782494, + "relativeStake": 0.0014969718403815562, + "relays": [ + { + "domain": "csn.relay1.cardanoscan.io", + "port": 3101 + }, + { + "domain": "csn.relay2.cardanoscan.io", + "port": 3101 + } + ] + }, + { + "accumulatedStake": 0.6818454197893031, + "relativeStake": 0.0014959870110536832, + "relays": [ + { + "address": "18.207.62.97", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6833407122318088, + "relativeStake": 0.001495292442505762, + "relays": [ + { + "domain": "relay1.cardanotech.io", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.6848329666355804, + "relativeStake": 0.0014922544037715459, + "relays": [ + { + "address": "18.222.201.35", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6863074045383959, + "relativeStake": 0.0014744379028154705, + "relays": [ + { + "address": "77.68.30.20", + "port": 6000 + }, + { + "address": "132.145.98.48", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.687776124937336, + "relativeStake": 0.0014687203989400593, + "relays": [ + { + "address": "3.224.130.99", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6892357489424833, + "relativeStake": 0.001459624005147311, + "relays": [ + { + "domain": "relay.pasklab.com", + "port": 3001 + }, + { + "domain": "relay.pasklab.com", + "port": 3002 + }, + { + "domain": "relay.pasklab.com", + "port": 3003 + } + ] + }, + { + "accumulatedStake": 0.6906924182901433, + "relativeStake": 0.0014566693476600599, + "relays": [ + { + "domain": "asia-pacific-zzzrelay.zzzpool.net", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6921477402804613, + "relativeStake": 0.0014553219903180618, + "relays": [ + { + "address": "52.177.36.96", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.6935930313263606, + "relativeStake": 0.0014452910458993067, + "relays": [ + { + "address": "3.225.242.57", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6950316852546776, + "relativeStake": 0.001438653928316942, + "relays": [ + { + "domain": "relay1.zetetic.tech", + "port": 3001 + }, + { + "domain": "relay2.zetetic.tech", + "port": 3001 + }, + { + "domain": "relay3.zetetic.tech", + "port": 3001 + }, + { + "domain": "relay4.zetetic.tech", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6964702649394158, + "relativeStake": 0.0014385796847381429, + "relays": [ + { + "domain": "iog1-relays.cardano.iog.io", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6978911417729777, + "relativeStake": 0.0014208768335619779, + "relays": [ + { + "domain": "cardano-relays-1.nu.fi", + "port": 3003 + }, + { + "domain": "cardano-relays-2.nu.fi", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6993057523367194, + "relativeStake": 0.0014146105637417507, + "relays": [ + { + "address": "89.58.57.185", + "port": 4000 + }, + { + "address": "5.250.178.133", + "port": 4000 + } + ] + }, + { + "accumulatedStake": 0.7007134405765344, + "relativeStake": 0.0014076882398148887, + "relays": [ + { + "address": "35.211.17.86", + "port": 3000 + }, + { + "address": "34.23.88.7", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.702118774624206, + "relativeStake": 0.0014053340476716915, + "relays": [ + { + "domain": "relay1.p2p.mainnet.cardano.p2p.org", + "port": 6001 + }, + { + "domain": "relay2.p2p.mainnet.cardano.p2p.org", + "port": 6001 + } + ] + }, + { + "accumulatedStake": 0.7035147780587323, + "relativeStake": 0.0013960034345262336, + "relays": [ + { + "address": "94.130.191.208", + "port": 9630 + } + ] + }, + { + "accumulatedStake": 0.7049083722370906, + "relativeStake": 0.0013935941783583203, + "relays": [ + { + "domain": "asia.jazzstakepool.net", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7063003146018905, + "relativeStake": 0.00139194236479981, + "relays": [ + { + "domain": "cardano-relays-1.nu.fi", + "port": 3003 + }, + { + "domain": "cardano-relays-2.nu.fi", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7076871720358637, + "relativeStake": 0.001386857433973259, + "relays": [ + { + "domain": "relay1.cerostakepool.com", + "port": 3001 + }, + { + "domain": "relay2.cerostakepool.com", + "port": 3001 + }, + { + "domain": "relay3.cerostakepool.com", + "port": 3001 + }, + { + "domain": "relay4.cerostakepool.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7090726769491241, + "relativeStake": 0.0013855049132604055, + "relays": [ + { + "domain": "cardano-relay-1.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-2.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-3.upbit.com", + "port": 30800 + } + ] + }, + { + "accumulatedStake": 0.7104428797427549, + "relativeStake": 0.0013702027936307942, + "relays": [ + { + "domain": "644dd09c.cardano-relay.herd.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.711799087277117, + "relativeStake": 0.0013562075343621044, + "relays": [ + { + "domain": "r1.21ada.ca", + "port": 6000 + }, + { + "domain": "r2.21ada.ca", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.7131546114037457, + "relativeStake": 0.0013555241266286517, + "relays": [ + { + "domain": "cardano-relay-2.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-3.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-1.upbit.com", + "port": 30800 + } + ] + }, + { + "accumulatedStake": 0.714506540031625, + "relativeStake": 0.00135192862787935, + "relays": [ + { + "address": "34.146.212.90", + "port": 6000 + }, + { + "address": "34.175.85.49", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.7158509661167317, + "relativeStake": 0.0013444260851067562, + "relays": [ + { + "domain": "relays.eu-de.cardano24.net", + "port": 6000 + }, + { + "domain": "relays.ap-jp.cardano24.net", + "port": 6000 + }, + { + "domain": "relays.eu-ch.cardano24.net", + "port": 6000 + }, + { + "domain": "relays.na-us.cardano24.net", + "port": 6000 + }, + { + "domain": "relays.af-za.cardano24.net", + "port": 6000 + }, + { + "domain": "relays.ap-hk.cardano24.net", + "port": 6000 + }, + { + "domain": "relays.sa-cl.cardano24.net", + "port": 6000 + }, + { + "domain": "relays.ap-sg.cardano24.net", + "port": 6000 + }, + { + "domain": "relays.na-ca.cardano24.net", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.7171905444548102, + "relativeStake": 0.00133957833807843, + "relays": [ + { + "domain": "relay1.cardanesia.com", + "port": 3001 + }, + { + "domain": "relay2.cardanesia.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7185300572664645, + "relativeStake": 0.0013395128116542535, + "relays": [ + { + "address": "20.42.119.172", + "port": 6000 + }, + { + "address": "160.251.196.40", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.7198672836654939, + "relativeStake": 0.0013372263990294457, + "relays": [ + { + "domain": "ipclub29-1.relay.my-ip.at", + "port": 3001 + }, + { + "domain": "ipclub29-1.relay.my-ip.at", + "port": 3002 + }, + { + "domain": "ipclub29-2.relay.my-ip.at", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.721199200333462, + "relativeStake": 0.0013319166679681004, + "relays": [ + { + "domain": "relay1.angelstakepool.net", + "port": 5001 + }, + { + "domain": "relay2.angelstakepool.net", + "port": 5002 + } + ] + }, + { + "accumulatedStake": 0.722528653941868, + "relativeStake": 0.0013294536084061108, + "relays": [ + { + "domain": "cardano-relay-1.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-2.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-3.upbit.com", + "port": 30800 + } + ] + }, + { + "accumulatedStake": 0.7238572085876138, + "relativeStake": 0.0013285546457457715, + "relays": [ + { + "domain": "cardano-relay-2.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-3.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-1.upbit.com", + "port": 30800 + } + ] + }, + { + "accumulatedStake": 0.7251847831406248, + "relativeStake": 0.0013275745530109556, + "relays": [ + { + "address": "180.150.102.25", + "port": 8376 + }, + { + "address": "180.150.96.245", + "port": 8376 + }, + { + "address": "144.6.112.28", + "port": 8376 + }, + { + "address": "154.38.173.238", + "port": 8376 + }, + { + "address": "152.53.55.29", + "port": 8376 + }, + { + "domain": "relays.terminada.io", + "port": 8376 + } + ] + }, + { + "accumulatedStake": 0.7265118065689359, + "relativeStake": 0.0013270234283110113, + "relays": [ + { + "domain": "cardano-relay-1.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-2.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-3.upbit.com", + "port": 30800 + } + ] + }, + { + "accumulatedStake": 0.7278379031862415, + "relativeStake": 0.00132609661730573, + "relays": [ + { + "domain": "cardano-relay-2.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-3.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-1.upbit.com", + "port": 30800 + } + ] + }, + { + "accumulatedStake": 0.7291632318246054, + "relativeStake": 0.0013253286383637984, + "relays": [ + { + "domain": "cardano-relay-1.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-2.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-3.upbit.com", + "port": 30800 + } + ] + }, + { + "accumulatedStake": 0.7304876166552842, + "relativeStake": 0.0013243848306788242, + "relays": [ + { + "domain": "cardano-relay-1.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-2.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-3.upbit.com", + "port": 30800 + } + ] + }, + { + "accumulatedStake": 0.731810600527466, + "relativeStake": 0.001322983872181907, + "relays": [ + { + "domain": "cardano-relay-1.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-2.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-3.upbit.com", + "port": 30800 + } + ] + }, + { + "accumulatedStake": 0.7331334967682769, + "relativeStake": 0.0013228962408107692, + "relays": [ + { + "domain": "cardano-relay-1.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-2.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-3.upbit.com", + "port": 30800 + } + ] + }, + { + "accumulatedStake": 0.7344484490424065, + "relativeStake": 0.001314952274129632, + "relays": [ + { + "domain": "cardano-relay-1.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-2.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-3.upbit.com", + "port": 30800 + } + ] + }, + { + "accumulatedStake": 0.735752618610598, + "relativeStake": 0.0013041695681915797, + "relays": [ + { + "address": "20.69.213.207", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.7370516189353179, + "relativeStake": 0.0012990003247198435, + "relays": [ + { + "domain": "cardano-relay-1.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-2.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-3.upbit.com", + "port": 30800 + } + ] + }, + { + "accumulatedStake": 0.7383505435318413, + "relativeStake": 0.0012989245965233265, + "relays": [ + { + "domain": "cardano-relay-1.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-2.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-3.upbit.com", + "port": 30800 + } + ] + }, + { + "accumulatedStake": 0.7396477053387878, + "relativeStake": 0.0012971618069465194, + "relays": [ + { + "domain": "cardano-relay-1.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-2.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-3.upbit.com", + "port": 30800 + } + ] + }, + { + "accumulatedStake": 0.7409433580834184, + "relativeStake": 0.0012956527446305658, + "relays": [ + { + "domain": "relays.liqwid.finance", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7422370213974618, + "relativeStake": 0.0012936633140435434, + "relays": [ + { + "domain": "eu.relays.cardanians.io", + "port": 1000 + }, + { + "domain": "ca.relays.cardanians.io", + "port": 1000 + } + ] + }, + { + "accumulatedStake": 0.7435291197548964, + "relativeStake": 0.001292098357434518, + "relays": [ + { + "domain": "94c3c6d3.cardano-relay.herd.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.7448199659706413, + "relativeStake": 0.0012908462157448716, + "relays": [ + { + "domain": "cardano-relay-2.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-3.upbit.com", + "port": 30800 + }, + { + "domain": "cardano-relay-1.upbit.com", + "port": 30800 + } + ] + }, + { + "accumulatedStake": 0.7461096912678263, + "relativeStake": 0.0012897252971850349, + "relays": [ + { + "domain": "relays.liqwid.finance", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7473918462249856, + "relativeStake": 0.0012821549571593001, + "relays": [ + { + "domain": "cardano-relays-1.nu.fi", + "port": 3003 + }, + { + "domain": "cardano-relays-2.nu.fi", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7486635438138449, + "relativeStake": 0.0012716975888592877, + "relays": [ + { + "address": "67.205.138.106", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7499157364005385, + "relativeStake": 0.0012521925866936722, + "relays": [ + { + "domain": "32.cardano.staked.cloud", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.751162874783771, + "relativeStake": 0.0012471383832323676, + "relays": [ + { + "address": "161.35.209.217", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.752409974071395, + "relativeStake": 0.0012470992876240674, + "relays": [ + { + "address": "206.81.3.194", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7536540080109772, + "relativeStake": 0.0012440339395821379, + "relays": [ + { + "address": "65.109.12.161", + "port": 6001 + }, + { + "address": "116.203.131.106", + "port": 6002 + } + ] + }, + { + "accumulatedStake": 0.7548978856975099, + "relativeStake": 0.0012438776865328206, + "relays": [ + { + "domain": "relay1.nedscave.io", + "port": 3001 + }, + { + "domain": "relay2.nedscave.io", + "port": 3001 + }, + { + "domain": "relay3.nedscave.io", + "port": 3001 + }, + { + "domain": "relay4.nedscave.io", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7561394794926226, + "relativeStake": 0.0012415937951127042, + "relays": [ + { + "domain": "tadpole.adafrog.io", + "port": 3728 + } + ] + }, + { + "accumulatedStake": 0.7573797693685244, + "relativeStake": 0.0012402898759017518, + "relays": [ + { + "domain": "relays.planetstake.com", + "port": 3001 + }, + { + "address": "161.97.90.20", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7586180055308794, + "relativeStake": 0.0012382361623550797, + "relays": [ + { + "address": "3.139.50.19", + "port": 6000 + }, + { + "address": "3.137.129.218", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.759845160648273, + "relativeStake": 0.0012271551173934953, + "relays": [ + { + "domain": "relay1.growpools.io", + "port": 4181 + }, + { + "domain": "relay5.growpools.io", + "port": 4181 + } + ] + }, + { + "accumulatedStake": 0.7610637523122337, + "relativeStake": 0.0012185916639607212, + "relays": [ + { + "address": "158.101.99.150", + "port": 6001 + }, + { + "address": "150.136.111.193", + "port": 6001 + }, + { + "address": "150.136.84.82", + "port": 6001 + } + ] + }, + { + "accumulatedStake": 0.7622741962264864, + "relativeStake": 0.001210443914252733, + "relays": [ + { + "domain": "relay1.ada-stake.com", + "port": 3001 + }, + { + "domain": "relay2.ada-stake.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7634694133365939, + "relativeStake": 0.001195217110107479, + "relays": [ + { + "domain": "europe1-zzz3relay.zzzpool.net", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7646534435166787, + "relativeStake": 0.0011840301800847856, + "relays": [ + { + "domain": "relay.hazelpool.com", + "port": 39213 + }, + { + "domain": "relay2.hazelpool.com", + "port": 39213 + } + ] + }, + { + "accumulatedStake": 0.7658373666012991, + "relativeStake": 0.0011839230846203504, + "relays": [ + { + "domain": "r1.isp-r1.wjg.jp", + "port": 3001 + }, + { + "domain": "r2.isp-r1.wjg.jp", + "port": 3002 + } + ] + }, + { + "accumulatedStake": 0.7670202712144274, + "relativeStake": 0.0011829046131283558, + "relays": [ + { + "domain": "relay1.nedscave.io", + "port": 3001 + }, + { + "domain": "relay2.nedscave.io", + "port": 3001 + }, + { + "domain": "relay3.nedscave.io", + "port": 3001 + }, + { + "domain": "relay4.nedscave.io", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.768198111941672, + "relativeStake": 0.0011778407272445795, + "relays": [ + { + "address": "57.129.24.185", + "port": 3001 + }, + { + "address": "57.129.28.178", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7693758450789596, + "relativeStake": 0.0011777331372876743, + "relays": [ + { + "domain": "relay01.nekota.work", + "port": 3001 + }, + { + "domain": "relay02.nekota.work", + "port": 3001 + }, + { + "domain": "relay03.nekota.work", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7705408601981426, + "relativeStake": 0.0011650151191829878, + "relays": [ + { + "address": "217.160.14.223", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.7717035206631272, + "relativeStake": 0.0011626604649845544, + "relays": [ + { + "address": "168.119.124.16", + "port": 3001 + }, + { + "address": "202.61.246.91", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7728654710314432, + "relativeStake": 0.0011619503683160566, + "relays": [ + { + "domain": "a1666f4c.cardano-relay.herd.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.7740154778684655, + "relativeStake": 0.001150006837022213, + "relays": [ + { + "address": "212.103.79.154", + "port": 6002 + }, + { + "address": "212.103.79.154", + "port": 6003 + } + ] + }, + { + "accumulatedStake": 0.7751629978014842, + "relativeStake": 0.0011475199330187643, + "relays": [ + { + "domain": "relaynode1.kaldano.work", + "port": 3001 + }, + { + "domain": "relaynode2.kaldano.work", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7762992908427646, + "relativeStake": 0.0011362930412804303, + "relays": [ + { + "address": "20.69.213.207", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.7774337108011732, + "relativeStake": 0.0011344199584085559, + "relays": [ + { + "domain": "europe-de.popsp.net", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7785674562132819, + "relativeStake": 0.0011337454121087634, + "relays": [ + { + "domain": "relay1.bluecheesestakehouse.com", + "port": 5001 + } + ] + }, + { + "accumulatedStake": 0.7796983355616632, + "relativeStake": 0.0011308793483812002, + "relays": [ + { + "address": "152.53.121.193", + "port": 6000 + }, + { + "address": "84.247.163.186", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.7808255476581487, + "relativeStake": 0.0011272120964855113, + "relays": [ + { + "address": "54.150.77.128", + "port": 6000 + }, + { + "address": "35.72.226.248", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.7819527307359408, + "relativeStake": 0.0011271830777921923, + "relays": [ + { + "domain": "asia.jazzstakepool.net", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7830790686842515, + "relativeStake": 0.0011263379483105916, + "relays": [ + { + "address": "89.58.11.57", + "port": 6000 + }, + { + "address": "185.207.104.130", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.7842012384485496, + "relativeStake": 0.0011221697642981355, + "relays": [ + { + "domain": "relay1.lidonation.com", + "port": 3011 + }, + { + "domain": "relay2.lidonation.com", + "port": 3012 + } + ] + }, + { + "accumulatedStake": 0.785317109215528, + "relativeStake": 0.0011158707669784022, + "relays": [ + { + "address": "20.91.236.57", + "port": 6000 + }, + { + "address": "160.251.204.162", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.786426157697636, + "relativeStake": 0.0011090484821079495, + "relays": [ + { + "address": "3.111.14.60", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7875292508576139, + "relativeStake": 0.001103093159977952, + "relays": [ + { + "domain": "relay1.apexpool.info", + "port": 5001 + }, + { + "domain": "relay2.apexpool.info", + "port": 5001 + } + ] + }, + { + "accumulatedStake": 0.7886301915123389, + "relativeStake": 0.00110094065472502, + "relays": [ + { + "domain": "asia.jazzstakepool.net", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7897305615246434, + "relativeStake": 0.0011003700123043924, + "relays": [ + { + "domain": "relay1.kaizn.kaizencrypto.com", + "port": 6000 + }, + { + "domain": "relay2.kaizn.kaizencrypto.com", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.7908259030787508, + "relativeStake": 0.0010953415541074727, + "relays": [ + { + "address": "135.181.194.233", + "port": 6000 + }, + { + "address": "168.119.101.200", + "port": 6000 + }, + { + "address": "5.161.59.12", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.79192059886726, + "relativeStake": 0.0010946957885091162, + "relays": [ + { + "domain": "relay.azureada.com", + "port": 3001 + }, + { + "domain": "relay.azureada.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7930121034555301, + "relativeStake": 0.0010915045882702128, + "relays": [ + { + "domain": "europe3-zzz5relay.zzzpool.net", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.794095362258198, + "relativeStake": 0.0010832588026678197, + "relays": [ + { + "address": "133.167.33.31", + "port": 6000 + }, + { + "address": "162.43.71.205", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.7951714189514759, + "relativeStake": 0.001076056693278006, + "relays": [ + { + "domain": "relays.koralabs.io", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7962456336729897, + "relativeStake": 0.0010742147215137875, + "relays": [ + { + "address": "52.167.20.127", + "port": 4000 + } + ] + }, + { + "accumulatedStake": 0.7973158744014817, + "relativeStake": 0.0010702407284919142, + "relays": [ + { + "address": "52.167.20.127", + "port": 4000 + } + ] + }, + { + "accumulatedStake": 0.7983806289966155, + "relativeStake": 0.0010647545951339358, + "relays": [ + { + "domain": "relay.azureada.com", + "port": 3001 + }, + { + "domain": "relay.azureada.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7994376292817799, + "relativeStake": 0.0010570002851642646, + "relays": [ + { + "domain": "adaboy-mainnet-2a.gleeze.com", + "port": 6000 + }, + { + "domain": "adaboy-mainnet-3a.gleeze.com", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8004945909225708, + "relativeStake": 0.0010569616407909363, + "relays": [ + { + "domain": "relay1.nedscave.io", + "port": 3001 + }, + { + "domain": "relay2.nedscave.io", + "port": 3001 + }, + { + "domain": "relay3.nedscave.io", + "port": 3001 + }, + { + "domain": "relay4.nedscave.io", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8015466805858068, + "relativeStake": 0.0010520896632360312, + "relays": [ + { + "domain": "relay0.bluecheesestakehouse.com", + "port": 5000 + } + ] + }, + { + "accumulatedStake": 0.8025946877989187, + "relativeStake": 0.0010480072131119115, + "relays": [ + { + "address": "35.154.123.251", + "port": 3001 + }, + { + "address": "15.206.230.107", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8036408483298477, + "relativeStake": 0.0010461605309290136, + "relays": [ + { + "domain": "relay.gmbl.mainnet.cardano.gimbalabs.io", + "port": 30042 + } + ] + }, + { + "accumulatedStake": 0.8046798001936716, + "relativeStake": 0.0010389518638238395, + "relays": [ + { + "domain": "relay1.viperstaking.com", + "port": 4444 + } + ] + }, + { + "accumulatedStake": 0.8057162884645793, + "relativeStake": 0.0010364882709076892, + "relays": [ + { + "domain": "asia.jazzstakepool.net", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8067428716897067, + "relativeStake": 0.0010265832251274802, + "relays": [ + { + "domain": "relays.zw3rkpool.com", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.807762819844467, + "relativeStake": 0.0010199481547602163, + "relays": [ + { + "domain": "relay01.lacepool.com", + "port": 3000 + }, + { + "domain": "relay02.lacepool.com", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.8087824416792299, + "relativeStake": 0.0010196218347629032, + "relays": [ + { + "domain": "relay-0-eu.junostakepool.com", + "port": 4321 + }, + { + "domain": "relay-1-eu.junostakepool.com", + "port": 4321 + }, + { + "domain": "relay-1-nuc.junostakepool.com", + "port": 17421 + }, + { + "domain": "relay-2-nuc.junostakepool.com", + "port": 17431 + } + ] + }, + { + "accumulatedStake": 0.8097959822831037, + "relativeStake": 0.001013540603873825, + "relays": [ + { + "domain": "relay1.squidpool.com", + "port": 3001 + }, + { + "domain": "relay2.squidpool.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8107882654847639, + "relativeStake": 0.0009922832016602413, + "relays": [ + { + "domain": "relays.banderini.net", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8117799514647971, + "relativeStake": 0.000991685980033189, + "relays": [ + { + "domain": "relay1.toiro.love", + "port": 6000 + }, + { + "domain": "relay2.toiro.love", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8127702640623852, + "relativeStake": 0.0009903125975880339, + "relays": [ + { + "domain": "eu.relays.cardanians.io", + "port": 1000 + }, + { + "domain": "ca.relays.cardanians.io", + "port": 1000 + } + ] + }, + { + "accumulatedStake": 0.8137601810670403, + "relativeStake": 0.0009899170046550696, + "relays": [ + { + "domain": "ipclub29-1.relay.my-ip.at", + "port": 3001 + }, + { + "domain": "ipclub29-1.relay.my-ip.at", + "port": 3002 + }, + { + "domain": "ipclub29-2.relay.my-ip.at", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8147488612165654, + "relativeStake": 0.0009886801495252123, + "relays": [ + { + "domain": "north-america.katanapool.net", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8157366887067982, + "relativeStake": 0.000987827490232734, + "relays": [ + { + "domain": "guru-relays.cloudpro.cl", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8167223771568466, + "relativeStake": 0.0009856884500483655, + "relays": [ + { + "domain": "relays.xray.app", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.8177074882916716, + "relativeStake": 0.0009851111348250588, + "relays": [ + { + "domain": "relay1.314pool.com", + "port": 31415 + }, + { + "domain": "relay2.314pool.com", + "port": 31415 + } + ] + }, + { + "accumulatedStake": 0.8186880989966796, + "relativeStake": 0.000980610705008033, + "relays": [ + { + "domain": "white-denver-a41cf.cardano.bdnodes.net", + "port": 6000 + }, + { + "domain": "cinnabar-prague-71400.cardano.bdnodes.net", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8196671139309005, + "relativeStake": 0.000979014934220895, + "relays": [ + { + "domain": "relay-ca.ada.psiloblox.io", + "port": 3002 + }, + { + "address": "2600:ac02:7c06:0:20c:29ff:fe01:4ff9", + "port": 3002 + }, + { + "address": "208.118.69.126", + "port": 3003 + }, + { + "domain": "relay-jp.ada.psiloblox.io", + "port": 3001 + }, + { + "domain": "relay-de.ada.psiloblox.io", + "port": 3002 + } + ] + }, + { + "accumulatedStake": 0.8206412121496943, + "relativeStake": 0.0009740982187938193, + "relays": [ + { + "address": "143.198.100.84", + "port": 6000 + }, + { + "address": "159.65.156.43", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8216100583469406, + "relativeStake": 0.0009688461972462174, + "relays": [ + { + "address": "168.119.124.16", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8225747529814594, + "relativeStake": 0.0009646946345188136, + "relays": [ + { + "address": "3.6.124.226", + "port": 3001 + }, + { + "address": "18.193.92.87", + "port": 3001 + }, + { + "address": "54.219.241.10", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.823538777021341, + "relativeStake": 0.0009640240398816547, + "relays": [ + { + "domain": "cardano-relays-1.nu.fi", + "port": 3003 + }, + { + "domain": "cardano-relays-2.nu.fi", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8244854328910928, + "relativeStake": 0.000946655869751692, + "relays": [ + { + "domain": "relays.xray.app", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.8254314321842458, + "relativeStake": 0.0009459992931529606, + "relays": [ + { + "domain": "relay.plushpool.com", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8263725592435551, + "relativeStake": 0.0009411270593094074, + "relays": [ + { + "domain": "relays.wavepool.digital", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8273133889444957, + "relativeStake": 0.0009408297009405407, + "relays": [ + { + "domain": "cardano-relay.atomicwallet.io", + "port": 6001 + } + ] + }, + { + "accumulatedStake": 0.8282482163898907, + "relativeStake": 0.0009348274453950501, + "relays": [ + { + "address": "45.77.67.30", + "port": 3000 + }, + { + "address": "45.32.153.230", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.8291763325329115, + "relativeStake": 0.0009281161430207212, + "relays": [ + { + "domain": "cardano-relays.atomicwallet.io", + "port": 6001 + } + ] + }, + { + "accumulatedStake": 0.830099281330375, + "relativeStake": 0.0009229487974635949, + "relays": [ + { + "domain": "43.cardano.staked.cloud", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8310195479478176, + "relativeStake": 0.0009202666174426441, + "relays": [ + { + "address": "168.119.124.16", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8319336309024211, + "relativeStake": 0.0009140829546034525, + "relays": [ + { + "domain": "relays.wavepool.digital", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8328438571712062, + "relativeStake": 0.0009102262687850789, + "relays": [ + { + "address": "154.38.174.71", + "port": 6000 + }, + { + "address": "89.117.19.225", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8337513669728592, + "relativeStake": 0.0009075098016530688, + "relays": [ + { + "domain": "germany.cardanode.io", + "port": 6000 + }, + { + "domain": "missouri.cardanode.io", + "port": 6000 + }, + { + "domain": "la.cardanode.io", + "port": 6000 + }, + { + "domain": "perth.cardanode.io", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8346584219080404, + "relativeStake": 0.0009070549351811337, + "relays": [ + { + "domain": "cpr1.sargatxet.cloud", + "port": 6001 + }, + { + "domain": "cpr2.sargatxet.cloud", + "port": 6001 + }, + { + "domain": "cpr3.sargatxet.cloud", + "port": 6001 + } + ] + }, + { + "accumulatedStake": 0.8355646959320158, + "relativeStake": 0.0009062740239754283, + "relays": [ + { + "address": "157.245.228.134", + "port": 3001 + }, + { + "address": "159.89.120.164", + "port": 3001 + }, + { + "address": "209.97.186.44", + "port": 3001 + }, + { + "domain": "na.bloompool.io", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8364699154740105, + "relativeStake": 0.000905219541994653, + "relays": [ + { + "address": "64.176.49.224", + "port": 6000 + }, + { + "address": "149.28.161.63", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8373602544726341, + "relativeStake": 0.0008903389986235982, + "relays": [ + { + "address": "75.119.157.236", + "port": 6000 + }, + { + "address": "149.102.144.126", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8382476437432743, + "relativeStake": 0.0008873892706402659, + "relays": [ + { + "address": "194.233.70.42", + "port": 57997 + }, + { + "address": "194.233.71.183", + "port": 51180 + } + ] + }, + { + "accumulatedStake": 0.8391347643685418, + "relativeStake": 0.0008871206252675408, + "relays": [ + { + "address": "54.228.75.154", + "port": 3003 + }, + { + "address": "54.228.75.154", + "port": 3001 + }, + { + "address": "34.249.11.89", + "port": 3003 + }, + { + "address": "34.249.11.89", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8400115930891544, + "relativeStake": 0.0008768287206125479, + "relays": [ + { + "domain": "cardano-relays.autostake.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8408844457354447, + "relativeStake": 0.0008728526462903211, + "relays": [ + { + "address": "178.128.79.219", + "port": 3001 + }, + { + "address": "104.131.122.73", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8417569201334576, + "relativeStake": 0.0008724743980128314, + "relays": [ + { + "address": "135.181.194.233", + "port": 6000 + }, + { + "address": "168.119.101.200", + "port": 6000 + }, + { + "address": "5.161.59.12", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8426236411552178, + "relativeStake": 0.0008667210217602237, + "relays": [ + { + "address": "126.77.67.70", + "port": 6000 + }, + { + "address": "126.77.67.70", + "port": 7001 + } + ] + }, + { + "accumulatedStake": 0.8434879330711257, + "relativeStake": 0.0008642919159078414, + "relays": [ + { + "domain": "ACLrelay1.cardanoland.com", + "port": 6000 + }, + { + "domain": "ACLrelay2.cardanoland.com", + "port": 7000 + }, + { + "domain": "ACLrelay3.cardanoland.com", + "port": 8000 + }, + { + "domain": "ACLrelay4.cardanoland.com", + "port": 6000 + }, + { + "domain": "ACLrelay5.cardanoland.com", + "port": 7000 + }, + { + "domain": "ACLrelay6.cardanoland.com", + "port": 8000 + } + ] + }, + { + "accumulatedStake": 0.844347083591148, + "relativeStake": 0.00085915052002235, + "relays": [ + { + "address": "13.208.79.46", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.845191831514431, + "relativeStake": 0.0008447479232829781, + "relays": [ + { + "address": "143.110.217.207", + "port": 6000 + }, + { + "address": "167.99.88.198", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8460272679603437, + "relativeStake": 0.0008354364459127259, + "relays": [ + { + "address": "85.215.147.174", + "port": 6000 + }, + { + "address": "85.215.187.104", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8468613147493672, + "relativeStake": 0.0008340467890235434, + "relays": [ + { + "domain": "adar2.stakit.io", + "port": 30501 + } + ] + }, + { + "accumulatedStake": 0.8476914572816308, + "relativeStake": 0.000830142532263491, + "relays": [ + { + "address": "157.245.228.134", + "port": 3001 + }, + { + "address": "159.89.120.164", + "port": 3001 + }, + { + "address": "209.97.186.44", + "port": 3001 + }, + { + "domain": "na.bloompool.io", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8485185763640175, + "relativeStake": 0.0008271190823867543, + "relays": [ + { + "address": "3.125.129.213", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8493435436876215, + "relativeStake": 0.0008249673236040863, + "relays": [ + { + "domain": "relay1.powerstakepool.com", + "port": 6000 + }, + { + "domain": "relay2.powerstakepool.com", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8501618118623958, + "relativeStake": 0.0008182681747742735, + "relays": [ + { + "domain": "europe1-relay.jpn-sp.net", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8509790293142666, + "relativeStake": 0.0008172174518708055, + "relays": [ + { + "domain": "cardano-relays-1.nu.fi", + "port": 3003 + }, + { + "domain": "cardano-relays-2.nu.fi", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8517953112737222, + "relativeStake": 0.0008162819594556032, + "relays": [ + { + "domain": "r1.1percentpool.eu", + "port": 19001 + }, + { + "domain": "r2.1percentpool.eu", + "port": 19002 + } + ] + }, + { + "accumulatedStake": 0.8526006245238439, + "relativeStake": 0.000805313250121616, + "relays": [ + { + "domain": "relay0.crimsonpool.com", + "port": 5100 + }, + { + "domain": "relay1.crimsonpool.com", + "port": 5101 + }, + { + "domain": "relay2.crimsonpool.com", + "port": 5102 + } + ] + }, + { + "accumulatedStake": 0.8534049537472949, + "relativeStake": 0.0008043292234509406, + "relays": [ + { + "address": "157.245.228.134", + "port": 3001 + }, + { + "address": "159.89.120.164", + "port": 3001 + }, + { + "address": "209.97.186.44", + "port": 3001 + }, + { + "domain": "eu.bloompool.io", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8542090877263644, + "relativeStake": 0.0008041339790695681, + "relays": [ + { + "domain": "LANDrelay1.cardanoland.com", + "port": 6000 + }, + { + "domain": "LANDrelay2.cardanoland.com", + "port": 7000 + }, + { + "domain": "LANDrelay3.cardanoland.com", + "port": 8000 + }, + { + "domain": "LANDrelay4.cardanoland.com", + "port": 6000 + }, + { + "domain": "LANDrelay5.cardanoland.com", + "port": 7000 + }, + { + "domain": "LANDrelay6.cardanoland.com", + "port": 8000 + } + ] + }, + { + "accumulatedStake": 0.8549994968867259, + "relativeStake": 0.0007904091603615992, + "relays": [ + { + "domain": "relay1.ppcx1.mainnet.cardano.p2p.org", + "port": 6001 + }, + { + "domain": "relay2.ppcx1.mainnet.cardano.p2p.org", + "port": 6001 + } + ] + }, + { + "accumulatedStake": 0.8557835684901874, + "relativeStake": 0.0007840716034614307, + "relays": [ + { + "domain": "relay1.cashflowpool.com", + "port": 3001 + }, + { + "domain": "relay2.cashflowpool.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8565666643521351, + "relativeStake": 0.0007830958619477167, + "relays": [ + { + "domain": "relay1.astra-pool.com", + "port": 6000 + }, + { + "domain": "relay2.astra-pool.com", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8573478955218456, + "relativeStake": 0.0007812311697105177, + "relays": [ + { + "domain": "relay1.thevikingpool.com", + "port": 6000 + }, + { + "domain": "relay2.thevikingpool.com", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8581280363309487, + "relativeStake": 0.0007801408091030325, + "relays": [ + { + "address": "20.61.229.103", + "port": 3001 + }, + { + "address": "20.61.228.218", + "port": 3001 + }, + { + "address": "108.142.42.221", + "port": 3001 + }, + { + "address": "108.142.42.161", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8589011641546439, + "relativeStake": 0.0007731278236952369, + "relays": [ + { + "domain": "relay1.adaocean.com", + "port": 6000 + }, + { + "domain": "relay2.adaocean.com", + "port": 6000 + }, + { + "domain": "relay3.adaocean.com", + "port": 6000 + }, + { + "domain": "relay4.adaocean.com", + "port": 6000 + }, + { + "domain": "relay5.adaocean.com", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8596725037291842, + "relativeStake": 0.0007713395745403324, + "relays": [ + { + "domain": "40.cardano.staked.cloud", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8604248183285333, + "relativeStake": 0.0007523145993490868, + "relays": [ + { + "domain": "relay.armadastakepool.com", + "port": 5100 + } + ] + }, + { + "accumulatedStake": 0.8611712053179729, + "relativeStake": 0.0007463869894395776, + "relays": [ + { + "domain": "cardano-relays-1.nu.fi", + "port": 3003 + }, + { + "domain": "cardano-relays-2.nu.fi", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8619041174787616, + "relativeStake": 0.0007329121607887086, + "relays": [ + { + "domain": "a-r1.elitestakepool.com", + "port": 7011 + }, + { + "domain": "a-r2.elitestakepool.com", + "port": 7012 + }, + { + "domain": "b-r3.elitestakepool.com", + "port": 7013 + }, + { + "domain": "b-r4.elitestakepool.com", + "port": 7014 + } + ] + }, + { + "accumulatedStake": 0.8626338030091271, + "relativeStake": 0.0007296855303654477, + "relays": [ + { + "domain": "r1.1percentpool.eu", + "port": 19001 + }, + { + "domain": "r2.1percentpool.eu", + "port": 19002 + } + ] + }, + { + "accumulatedStake": 0.863360805048507, + "relativeStake": 0.000727002039379897, + "relays": [ + { + "domain": "otg-relay-1.adamantium.online", + "port": 6001 + }, + { + "domain": "otg-relay-2.adamantium.online", + "port": 6002 + } + ] + }, + { + "accumulatedStake": 0.8640852701754086, + "relativeStake": 0.0007244651269016502, + "relays": [ + { + "domain": "asia-pacific-japan.popsp.net", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8648023798058669, + "relativeStake": 0.0007171096304583112, + "relays": [ + { + "domain": "relays.cardaspians.io", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8655173897047568, + "relativeStake": 0.000715009898889881, + "relays": [ + { + "domain": "cardano-relays-1.nu.fi", + "port": 3003 + }, + { + "domain": "cardano-relays-2.nu.fi", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8662299141286689, + "relativeStake": 0.000712524423912073, + "relays": [ + { + "domain": "cardano1.vampyre.fund", + "port": 3001 + }, + { + "domain": "cardano2.vampyre.fund", + "port": 3001 + }, + { + "domain": "cardano3.vampyre.fund", + "port": 3001 + }, + { + "domain": "cardano4.vampyre.fund", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8669358109756907, + "relativeStake": 0.0007058968470218203, + "relays": [ + { + "address": "78.47.119.91", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8676385900004695, + "relativeStake": 0.0007027790247788347, + "relays": [ + { + "domain": "relays.wavepool.digital", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8683389427398432, + "relativeStake": 0.0007003527393737266, + "relays": [ + { + "domain": "ram-relay1.irota.xyz", + "port": 6000 + }, + { + "domain": "kyu-relay2.irota.xyz", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8690390826469193, + "relativeStake": 0.0007001399070760094, + "relays": [ + { + "address": "20.61.229.103", + "port": 3001 + }, + { + "address": "20.61.228.218", + "port": 3001 + }, + { + "address": "108.142.42.221", + "port": 3001 + }, + { + "address": "108.142.42.161", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.869738166390894, + "relativeStake": 0.0006990837439746569, + "relays": [ + { + "address": "51.195.91.118", + "port": 3001 + }, + { + "address": "51.161.35.246", + "port": 3001 + }, + { + "address": "49.12.123.178", + "port": 3001 + }, + { + "address": "95.217.58.124", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8704357823737064, + "relativeStake": 0.000697615982812552, + "relays": [ + { + "address": "13.215.210.113", + "port": 6000 + }, + { + "address": "13.211.72.184", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.871129003894434, + "relativeStake": 0.0006932215207275278, + "relays": [ + { + "address": "185.64.140.115", + "port": 6001 + }, + { + "address": "185.64.140.115", + "port": 6002 + }, + { + "address": "185.64.140.115", + "port": 6003 + }, + { + "address": "185.64.140.115", + "port": 6004 + }, + { + "address": "162.156.186.249", + "port": 6001 + }, + { + "address": "162.156.186.249", + "port": 6002 + }, + { + "address": "162.156.186.249", + "port": 6003 + }, + { + "address": "162.156.186.249", + "port": 6004 + } + ] + }, + { + "accumulatedStake": 0.8718201626427967, + "relativeStake": 0.0006911587483626646, + "relays": [ + { + "domain": "relays.hypernerd.org", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8725060515920484, + "relativeStake": 0.000685888949251798, + "relays": [ + { + "address": "223.25.73.249", + "port": 6452 + }, + { + "address": "128.199.147.30", + "port": 6001 + }, + { + "address": "158.140.141.199", + "port": 8082 + } + ] + }, + { + "accumulatedStake": 0.8731914879740975, + "relativeStake": 0.0006854363820490332, + "relays": [ + { + "domain": "ruby-cardano.rockx.com", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8738729239838138, + "relativeStake": 0.0006814360097162957, + "relays": [ + { + "domain": "r1.1percentpool.eu", + "port": 19001 + }, + { + "domain": "r2.1percentpool.eu", + "port": 19002 + } + ] + }, + { + "accumulatedStake": 0.8745513886606715, + "relativeStake": 0.0006784646768577397, + "relays": [ + { + "domain": "relay-dfm.cryptoblocks.pro", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8752190206331278, + "relativeStake": 0.000667631972456352, + "relays": [ + { + "address": "137.117.180.0", + "port": 16112 + }, + { + "address": "20.52.178.196", + "port": 16112 + }, + { + "address": "52.152.187.47", + "port": 16112 + } + ] + }, + { + "accumulatedStake": 0.8758803744215248, + "relativeStake": 0.000661353788396878, + "relays": [ + { + "domain": "re1.reservoir.network", + "port": 3001 + }, + { + "domain": "re2.reservoir.network", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8765365132843932, + "relativeStake": 0.0006561388628683956, + "relays": [ + { + "address": "135.181.194.233", + "port": 6000 + }, + { + "address": "168.119.101.200", + "port": 6000 + }, + { + "address": "5.161.59.12", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8771897174783145, + "relativeStake": 0.0006532041939213395, + "relays": [ + { + "domain": "r1.relaypool.online", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.8778425234862447, + "relativeStake": 0.0006528060079302102, + "relays": [ + { + "address": "34.192.61.190", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8784918013677648, + "relativeStake": 0.0006492778815201279, + "relays": [ + { + "domain": "r1.isp-r1.wjg.jp", + "port": 3001 + }, + { + "domain": "r2.isp-r1.wjg.jp", + "port": 3002 + } + ] + }, + { + "accumulatedStake": 0.879139854250664, + "relativeStake": 0.0006480528828991111, + "relays": [ + { + "domain": "relays.onyxstakepool.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8797869807103357, + "relativeStake": 0.0006471264596717548, + "relays": [ + { + "domain": "relays.wavepool.digital", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8804311819445598, + "relativeStake": 0.0006442012342241188, + "relays": [ + { + "domain": "51.195.18.14", + "port": 6000 + }, + { + "domain": "87.98.245.66", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8810746591016351, + "relativeStake": 0.0006434771570752952, + "relays": [ + { + "address": "104.236.24.187", + "port": 5281 + }, + { + "address": "50.185.24.9", + "port": 5282 + } + ] + }, + { + "accumulatedStake": 0.8817167858890983, + "relativeStake": 0.0006421267874632192, + "relays": [ + { + "domain": "relay01.londonpool.co.uk", + "port": 3001 + }, + { + "domain": "relay02.londonpool.co.uk", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8823567567778461, + "relativeStake": 0.0006399708887477372, + "relays": [ + { + "domain": "mound.adastack.net", + "port": 3001 + }, + { + "domain": "pack.adastack.net", + "port": 3001 + }, + { + "domain": "heap.adastack.net", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8829929822565739, + "relativeStake": 0.0006362254787277647, + "relays": [ + { + "address": "194.163.168.97", + "port": 6001 + } + ] + }, + { + "accumulatedStake": 0.8836265348274058, + "relativeStake": 0.0006335525708320069, + "relays": [ + { + "address": "37.60.236.80", + "port": 6000 + }, + { + "address": "173.212.249.217", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8842594650447884, + "relativeStake": 0.0006329302173824691, + "relays": [ + { + "domain": "cardano-relays.atomicwallet.io", + "port": 6001 + } + ] + }, + { + "accumulatedStake": 0.8848909387788461, + "relativeStake": 0.0006314737340577787, + "relays": [ + { + "domain": "cardano-relays-1.nu.fi", + "port": 3003 + }, + { + "domain": "cardano-relays-2.nu.fi", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8855220733358975, + "relativeStake": 0.0006311345570514505, + "relays": [ + { + "domain": "relay1.pudim.cat", + "port": 3002 + }, + { + "domain": "relay2.pudim.cat", + "port": 3002 + } + ] + }, + { + "accumulatedStake": 0.8861479707644528, + "relativeStake": 0.0006258974285552466, + "relays": [ + { + "domain": "15.237.92.158", + "port": 16661 + } + ] + }, + { + "accumulatedStake": 0.8867735354373502, + "relativeStake": 0.0006255646728973292, + "relays": [ + { + "domain": "relays.ektrp.com", + "port": 5859 + } + ] + }, + { + "accumulatedStake": 0.8873941033542156, + "relativeStake": 0.000620567916865528, + "relays": [ + { + "address": "54.150.197.196", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8880125674621712, + "relativeStake": 0.0006184641079554747, + "relays": [ + { + "domain": "relay1-ada.cex.io", + "port": 3001 + }, + { + "domain": "relay2-ada.cex.io", + "port": 3002 + }, + { + "domain": "relay3-ada.cex.io", + "port": 3003 + } + ] + }, + { + "accumulatedStake": 0.8886197052756469, + "relativeStake": 0.0006071378134758381, + "relays": [ + { + "domain": "rho.relay.easy1staking.com", + "port": 30020 + }, + { + "domain": "pi.relay.easy1staking.com", + "port": 30021 + }, + { + "domain": "eu-central-1.relay.easy1staking.com", + "port": 30000 + }, + { + "domain": "us-east-1.relay.easy1staking.com", + "port": 30000 + } + ] + }, + { + "accumulatedStake": 0.8892255575542127, + "relativeStake": 0.0006058522785657288, + "relays": [ + { + "domain": "relays.xray.app", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.8898272336485513, + "relativeStake": 0.0006016760943386435, + "relays": [ + { + "domain": "relay1.adaverse.com", + "port": 5000 + }, + { + "domain": "relay2.adaverse.com", + "port": 4000 + } + ] + }, + { + "accumulatedStake": 0.890424420221485, + "relativeStake": 0.0005971865729337614, + "relays": [ + { + "domain": "relay2.bluecheesestakehouse.com", + "port": 5002 + } + ] + }, + { + "accumulatedStake": 0.8910190577251159, + "relativeStake": 0.0005946375036307746, + "relays": [ + { + "address": "34.175.101.127", + "port": 6000 + }, + { + "address": "34.175.85.49", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8916121292895752, + "relativeStake": 0.0005930715644594012, + "relays": [ + { + "domain": "relaynode1.bravostakepool.nl", + "port": 3001 + }, + { + "domain": "relaynode2.bravostakepool.nl", + "port": 3001 + }, + { + "domain": "relaynode3.bravostakepool.nl", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.892204975972327, + "relativeStake": 0.0005928466827516849, + "relays": [ + { + "domain": "europe2-zzz4relay.zzzpool.net", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8927946785891941, + "relativeStake": 0.0005897026168671545, + "relays": [ + { + "domain": "relays.wavepool.digital", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.89338308800222, + "relativeStake": 0.0005884094130258789, + "relays": [ + { + "address": "125.250.255.197", + "port": 8000 + }, + { + "address": "142.132.189.114", + "port": 6000 + }, + { + "address": "75.119.158.164", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8939631544841781, + "relativeStake": 0.0005800664819581181, + "relays": [ + { + "address": "202.61.225.111", + "port": 6000 + }, + { + "address": "46.38.241.110", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8945418986052868, + "relativeStake": 0.0005787441211086775, + "relays": [ + { + "domain": "relays.wavepool.digital", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8951158432682106, + "relativeStake": 0.0005739446629238425, + "relays": [ + { + "domain": "r1.adaism.uk", + "port": 8081 + }, + { + "domain": "r2.adaism.uk", + "port": 8081 + } + ] + }, + { + "accumulatedStake": 0.8956844821040901, + "relativeStake": 0.0005686388358794773, + "relays": [ + { + "address": "3.111.14.60", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8962490246407491, + "relativeStake": 0.0005645425366589223, + "relays": [ + { + "address": "133.167.33.31", + "port": 6000 + }, + { + "address": "162.43.71.205", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8968127659327427, + "relativeStake": 0.0005637412919936754, + "relays": [ + { + "address": "192.168.1.100", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.8973758941624818, + "relativeStake": 0.0005631282297390217, + "relays": [ + { + "domain": "cardano-relays-1.nu.fi", + "port": 3003 + }, + { + "domain": "cardano-relays-2.nu.fi", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8979370431269504, + "relativeStake": 0.0005611489644687123, + "relays": [ + { + "domain": "relays.digi.pro", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8984973322750155, + "relativeStake": 0.0005602891480650193, + "relays": [ + { + "address": "116.80.93.53", + "port": 6000 + }, + { + "address": "5.104.85.79", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8990485616940108, + "relativeStake": 0.0005512294189953247, + "relays": [ + { + "domain": "cardano-relays-1.nu.fi", + "port": 3003 + }, + { + "domain": "cardano-relays-2.nu.fi", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8995965128825384, + "relativeStake": 0.0005479511885275923, + "relays": [ + { + "address": "202.61.207.98", + "port": 6000 + }, + { + "address": "86.106.182.81", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.9001433144495904, + "relativeStake": 0.0005468015670519815, + "relays": [ + { + "domain": "ada-relay02.biglazycat.com", + "port": 6000 + } + ] + } + ], + "slotNo": 158260519, + "version": 1 +} diff --git a/config/node/mainnet/topology.json b/config/node/mainnet/topology.json index 0433be94d..a7c7ecbfd 100644 --- a/config/node/mainnet/topology.json +++ b/config/node/mainnet/topology.json @@ -27,5 +27,5 @@ "advertise": false } ], - "useLedgerAfterSlot": 148350000 + "useLedgerAfterSlot": 157852837 } diff --git a/config/node/preprod/config.json b/config/node/preprod/config.json index 8edb89579..147abb0a0 100644 --- a/config/node/preprod/config.json +++ b/config/node/preprod/config.json @@ -3,7 +3,7 @@ "AlonzoGenesisHash": "7e94a15f55d1e82d10f09203fa1d40f8eede58fd8066542cf6566008068ed874", "ByronGenesisFile": "byron-genesis.json", "ByronGenesisHash": "d4b8de7a11d929a323373cbab6c1a9bdc931beffff11db111cf9d57356ee1937", - "ConsensusMode": "PraosMode", + "ConsensusMode": "GenesisMode", "ConwayGenesisFile": "conway-genesis.json", "ConwayGenesisHash": "0eb6adaec3fcb1fe286c1b4ae0da2a117eafc3add51e17577d36dd39eddfc3db", "EnableP2P": true, @@ -16,21 +16,12 @@ "QueryBatchSize": 100000, "SnapshotInterval": 4320 }, - "MinBigLedgerPeersForTrustedState": 5, - "MinNodeVersion": "10.4.0", + "MinNodeVersion": "10.5.0", "PeerSharing": true, "Protocol": "Cardano", "RequiresNetworkMagic": "RequiresMagic", "ShelleyGenesisFile": "shelley-genesis.json", "ShelleyGenesisHash": "162d29c4e1cf6b8a84f2d692e67a3ac6bc7851bc3e6e4afe64d15778bed8bd86", - "SyncTargetNumberOfActiveBigLedgerPeers": 30, - "SyncTargetNumberOfActivePeers": 0, - "SyncTargetNumberOfEstablishedBigLedgerPeers": 50, - "SyncTargetNumberOfKnownBigLedgerPeers": 100, - "TargetNumberOfActivePeers": 20, - "TargetNumberOfEstablishedPeers": 40, - "TargetNumberOfKnownPeers": 150, - "TargetNumberOfRootPeers": 60, "TraceAcceptPolicy": true, "TraceBlockFetchClient": false, "TraceBlockFetchDecisions": false, diff --git a/config/node/preprod/peer-snapshot.json b/config/node/preprod/peer-snapshot.json new file mode 100644 index 000000000..442bc4373 --- /dev/null +++ b/config/node/preprod/peer-snapshot.json @@ -0,0 +1,736 @@ +{ + "bigLedgerPools": [ + { + "accumulatedStake": 0.16533648268860082, + "relativeStake": 0.16533648268860082, + "relays": [ + { + "domain": "relay.preprod.staging.wingriders.com", + "port": 3001 + }, + { + "domain": "relay.preprod.wingriders.com", + "port": 3002 + } + ] + }, + { + "accumulatedStake": 0.2567189181469481, + "relativeStake": 0.0913824354583473, + "relays": [ + { + "domain": "preprod-node.pool.milkomeda.com", + "port": 3002 + } + ] + }, + { + "accumulatedStake": 0.3445885486678517, + "relativeStake": 0.08786963052090359, + "relays": [ + { + "address": "132.226.203.38", + "port": 6001 + } + ] + }, + { + "accumulatedStake": 0.4119136114109497, + "relativeStake": 0.06732506274309796, + "relays": [ + { + "address": "144.24.168.10", + "port": 3003 + }, + { + "address": "141.145.210.204", + "port": 3003 + } + ] + }, + { + "accumulatedStake": 0.45796611983279234, + "relativeStake": 0.04605250842184267, + "relays": [ + { + "domain": "node1.cardano.gratis", + "port": 6601 + }, + { + "domain": "node2.cardano.gratis", + "port": 6602 + }, + { + "domain": "mbb3.cardano.gratis", + "port": 6603 + } + ] + }, + { + "accumulatedStake": 0.5018978774335163, + "relativeStake": 0.04393175760072397, + "relays": [ + { + "address": "73.222.122.247", + "port": 13001 + } + ] + }, + { + "accumulatedStake": 0.5423954633128953, + "relativeStake": 0.04049758587937905, + "relays": [ + { + "domain": "logicalmechanism.asuscomm.com", + "port": 6004 + }, + { + "address": "146.190.20.214", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.5706981730212308, + "relativeStake": 0.028302709708335504, + "relays": [ + { + "address": "140.238.91.50", + "port": 3001 + }, + { + "address": "132.145.71.219", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5983648327778356, + "relativeStake": 0.0276666597566047, + "relays": [ + { + "domain": "tn-preprod.psilobyte.io", + "port": 4101 + } + ] + }, + { + "accumulatedStake": 0.619268100260871, + "relativeStake": 0.020903267483035455, + "relays": [ + { + "address": "161.97.136.104", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.639864346692673, + "relativeStake": 0.02059624643180197, + "relays": [ + { + "domain": "adaboy-preprod-2b.gleeze.com", + "port": 3002 + }, + { + "domain": "adaboy-preprod-3b.gleeze.com", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.6590848306573842, + "relativeStake": 0.019220483964711207, + "relays": [ + { + "domain": "pp-relay1.apexpool.info", + "port": 4001 + } + ] + }, + { + "accumulatedStake": 0.6719965788352348, + "relativeStake": 0.012911748177850563, + "relays": [ + { + "domain": "preprod1.volcyada.com", + "port": 6003 + }, + { + "domain": "preprod2.volcyada.com", + "port": 6007 + }, + { + "domain": "preprod3.volcyada.com", + "port": 4001 + } + ] + }, + { + "accumulatedStake": 0.6834996026949426, + "relativeStake": 0.011503023859707823, + "relays": [ + { + "domain": "preprod.bladepool.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.6942679139331743, + "relativeStake": 0.010768311238231795, + "relays": [ + { + "address": "18.222.164.102", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7034792414827027, + "relativeStake": 0.00921132754952832, + "relays": [ + { + "address": "66.42.94.80", + "port": 6000 + }, + { + "address": "170.187.201.55", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.7108466099392908, + "relativeStake": 0.007367368456588143, + "relays": [ + { + "domain": "preprod.canadastakes.ca", + "port": 4002 + } + ] + }, + { + "accumulatedStake": 0.7178378583801969, + "relativeStake": 0.006991248440906062, + "relays": [ + { + "domain": "r1.pp.mrbee.io", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7241149934564234, + "relativeStake": 0.006277135076226503, + "relays": [ + { + "domain": "dyn.derksen-it.nl", + "port": 4001 + } + ] + }, + { + "accumulatedStake": 0.729963375028306, + "relativeStake": 0.00584838157188256, + "relays": [ + { + "address": "152.53.81.245", + "port": 5501 + }, + { + "domain": "relay-s.wotapool.net", + "port": 5501 + } + ] + }, + { + "accumulatedStake": 0.7355758741892675, + "relativeStake": 0.005612499160961567, + "relays": [ + { + "domain": "preprod-r1.panl.org", + "port": 3012 + } + ] + }, + { + "accumulatedStake": 0.7406048008682375, + "relativeStake": 0.005028926678970021, + "relays": [ + { + "domain": "relay.preprod.cardanostakehouse.com", + "port": 9000 + } + ] + }, + { + "accumulatedStake": 0.7454715688237447, + "relativeStake": 0.004866767955507059, + "relays": [ + { + "domain": "relay.preprod.cardanostakehouse.com", + "port": 9000 + } + ] + }, + { + "accumulatedStake": 0.7503379572389104, + "relativeStake": 0.004866388415165782, + "relays": [ + { + "domain": "relay.preprod.cardanostakehouse.com", + "port": 9000 + } + ] + }, + { + "accumulatedStake": 0.7549030501216739, + "relativeStake": 0.004565092882763564, + "relays": [ + { + "domain": "relay1.hunadapool.com", + "port": 3002 + } + ] + }, + { + "accumulatedStake": 0.7594466644849966, + "relativeStake": 0.004543614363322666, + "relays": [ + { + "domain": "relay.preprod.cardanostakehouse.com", + "port": 9000 + } + ] + }, + { + "accumulatedStake": 0.7639232525775537, + "relativeStake": 0.004476588092557058, + "relays": [ + { + "domain": "preprod-relay1.angelstakepool.net", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.7683952804488933, + "relativeStake": 0.004472027871339629, + "relays": [ + { + "domain": "test.smaug.pool.pm", + "port": 3002 + } + ] + }, + { + "accumulatedStake": 0.7727654192847555, + "relativeStake": 0.004370138835862222, + "relays": [ + { + "domain": "relay.preprod.cardanostakehouse.com", + "port": 9000 + } + ] + }, + { + "accumulatedStake": 0.7770721360723702, + "relativeStake": 0.004306716787614722, + "relays": [ + { + "domain": "relay0-preprod.adanet.io", + "port": 7001 + } + ] + }, + { + "accumulatedStake": 0.7811189823413957, + "relativeStake": 0.004046846269025371, + "relays": [ + { + "domain": "d.fluxpool.cc", + "port": 3010 + } + ] + }, + { + "accumulatedStake": 0.7850932733877762, + "relativeStake": 0.003974291046380562, + "relays": [ + { + "address": "73.54.73.48", + "port": 7000 + } + ] + }, + { + "accumulatedStake": 0.7890563953206919, + "relativeStake": 0.003963121932915786, + "relays": [ + { + "address": "168.138.37.117", + "port": 6003 + } + ] + }, + { + "accumulatedStake": 0.793007260955473, + "relativeStake": 0.0039508656347811075, + "relays": [ + { + "domain": "flightrelay1.intertreecryptoconsultants.com", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.7967645583552497, + "relativeStake": 0.003757297399776672, + "relays": [ + { + "address": "204.216.213.96", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8003241492388238, + "relativeStake": 0.0035595908835740005, + "relays": [ + { + "domain": "relay1.preprod.stakepool.quebec", + "port": 5000 + } + ] + }, + { + "accumulatedStake": 0.8038826249133106, + "relativeStake": 0.0035584756744868893, + "relays": [ + { + "domain": "pre-prod1.xstakepool.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8074245012415272, + "relativeStake": 0.003541876328216536, + "relays": [ + { + "domain": "preprod.altzpool.com", + "port": 7001 + } + ] + }, + { + "accumulatedStake": 0.8109168449017807, + "relativeStake": 0.0034923436602535387, + "relays": [ + { + "domain": "gateway.adavault.com", + "port": 4050 + } + ] + }, + { + "accumulatedStake": 0.814407695652531, + "relativeStake": 0.0034908507507502495, + "relays": [ + { + "domain": "preprod.happystaking.io", + "port": 3002 + } + ] + }, + { + "accumulatedStake": 0.8178971488787419, + "relativeStake": 0.003489453226210944, + "relays": [ + { + "domain": "preprod.frcan.com", + "port": 6011 + } + ] + }, + { + "accumulatedStake": 0.8213834145390965, + "relativeStake": 0.0034862656603545355, + "relays": [ + { + "domain": "artemisrelay3.uk", + "port": 6001 + } + ] + }, + { + "accumulatedStake": 0.8248049835205681, + "relativeStake": 0.003421568981471677, + "relays": [ + { + "domain": "alpha.stake-cardano-pool.com", + "port": 7001 + } + ] + }, + { + "accumulatedStake": 0.828221761479261, + "relativeStake": 0.003416777958692851, + "relays": [ + { + "address": "62.169.19.81", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8315669939208559, + "relativeStake": 0.003345232441594875, + "relays": [ + { + "domain": "preprod-relay1.angelstakepool.net", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8349117970731773, + "relativeStake": 0.0033448031523214917, + "relays": [ + { + "domain": "c-pp-rn01.liv.io", + "port": 30000 + }, + { + "domain": "c-pp-rn02.liv.io", + "port": 30000 + } + ] + }, + { + "accumulatedStake": 0.8382240869774304, + "relativeStake": 0.0033122899042531146, + "relays": [ + { + "address": "74.122.122.121", + "port": 6100 + } + ] + }, + { + "accumulatedStake": 0.8415285535715271, + "relativeStake": 0.003304466594096654, + "relays": [ + { + "domain": "preprod-relays.onyxstakepool.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.844830389055782, + "relativeStake": 0.003301835484254944, + "relays": [ + { + "domain": "testicles.kiwipool.org", + "port": 9730 + } + ] + }, + { + "accumulatedStake": 0.8481264239112749, + "relativeStake": 0.003296034855492909, + "relays": [ + { + "domain": "relay1.amapools.ir", + "port": 3002 + } + ] + }, + { + "accumulatedStake": 0.8514077361771208, + "relativeStake": 0.0032813122658458993, + "relays": [ + { + "domain": "preprod.weebl.me", + "port": 3123 + }, + { + "address": "77.174.62.158", + "port": 3124 + } + ] + }, + { + "accumulatedStake": 0.8546890089693876, + "relativeStake": 0.00328127279226669, + "relays": [ + { + "domain": "pp-relays.digitalfortress.online", + "port": 6001 + } + ] + }, + { + "accumulatedStake": 0.8579673377359958, + "relativeStake": 0.003278328766608168, + "relays": [ + { + "domain": "pprelay.adaocean.com", + "port": 6001 + } + ] + }, + { + "accumulatedStake": 0.8612437397132818, + "relativeStake": 0.0032764019772861517, + "relays": [ + { + "domain": "preprod.leadstakepool.com", + "port": 3001 + }, + { + "domain": "preprod.leadstakepool.com", + "port": 3002 + } + ] + }, + { + "accumulatedStake": 0.8644928939604167, + "relativeStake": 0.003249154247134843, + "relays": [ + { + "domain": "031e6928.cardano-relay.bison.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.8676778978009698, + "relativeStake": 0.0031850038405531675, + "relays": [ + { + "domain": "cntr-1.services.evolute.software", + "port": 25437 + } + ] + }, + { + "accumulatedStake": 0.8708266431927602, + "relativeStake": 0.0031487453917902926, + "relays": [ + { + "address": "18.130.49.180", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8739584089680624, + "relativeStake": 0.003131765775302288, + "relays": [ + { + "domain": "dear-colt-ada-lb-7b5456ef061920ec.elb.eu-west-2.amazonaws.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.877077865929541, + "relativeStake": 0.0031194569614784707, + "relays": [ + { + "domain": "r1.pp.cpoker.io", + "port": 4001 + } + ] + }, + { + "accumulatedStake": 0.8801881975418616, + "relativeStake": 0.003110331612320714, + "relays": [ + { + "domain": "adar-monitor.freeddns.org", + "port": 3011 + } + ] + }, + { + "accumulatedStake": 0.8832979726393192, + "relativeStake": 0.0031097750974575337, + "relays": [ + { + "address": "149.102.137.115", + "port": 6006 + } + ] + }, + { + "accumulatedStake": 0.8863937335223262, + "relativeStake": 0.0030957608830070667, + "relays": [ + { + "domain": "relay.preprod.crimsonpool.com", + "port": 3100 + } + ] + }, + { + "accumulatedStake": 0.8894642625559919, + "relativeStake": 0.0030705290336656035, + "relays": [ + { + "domain": "preprod.junglestakepool.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8924781019332957, + "relativeStake": 0.003013839377303793, + "relays": [ + { + "address": "130.61.98.58", + "port": 3002 + }, + { + "address": "138.2.174.95", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.8954496451108208, + "relativeStake": 0.0029715431775251544, + "relays": [ + { + "address": "0.0.0.0", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8984169347684745, + "relativeStake": 0.002967289657653701, + "relays": [ + { + "domain": "preprod.vampyre.fund", + "port": 3101 + } + ] + }, + { + "accumulatedStake": 0.9013836030256982, + "relativeStake": 0.002966668257223746, + "relays": [ + { + "domain": "preprod1-node.play.dev.cardano.org", + "port": 3001 + } + ] + } + ], + "slotNo": 94142925, + "version": 1 +} diff --git a/config/node/preprod/topology.json b/config/node/preprod/topology.json index fc0fe0305..988cfe8d6 100644 --- a/config/node/preprod/topology.json +++ b/config/node/preprod/topology.json @@ -13,11 +13,12 @@ "valency": 1 } ], + "peerSnapshotFile": "peer-snapshot.json", "publicRoots": [ { "accessPoints": [], "advertise": false } ], - "useLedgerAfterSlot": 83894000 + "useLedgerAfterSlot": 93830456 } diff --git a/config/node/preview/config.json b/config/node/preview/config.json index 1d5445c0a..f36647886 100644 --- a/config/node/preview/config.json +++ b/config/node/preview/config.json @@ -3,7 +3,7 @@ "AlonzoGenesisHash": "7e94a15f55d1e82d10f09203fa1d40f8eede58fd8066542cf6566008068ed874", "ByronGenesisFile": "byron-genesis.json", "ByronGenesisHash": "83de1d7302569ad56cf9139a41e2e11346d4cb4a31c00142557b6ab3fa550761", - "ConsensusMode": "PraosMode", + "ConsensusMode": "GenesisMode", "ConwayGenesisFile": "conway-genesis.json", "ConwayGenesisHash": "9cc5084f02e27210eacba47af0872e3dba8946ad9460b6072d793e1d2f3987ef", "EnableP2P": true, @@ -18,21 +18,12 @@ "QueryBatchSize": 100000, "SnapshotInterval": 864 }, - "MinBigLedgerPeersForTrustedState": 5, - "MinNodeVersion": "10.4.0", + "MinNodeVersion": "10.5.0", "PeerSharing": true, "Protocol": "Cardano", "RequiresNetworkMagic": "RequiresMagic", "ShelleyGenesisFile": "shelley-genesis.json", "ShelleyGenesisHash": "363498d1024f84bb39d3fa9593ce391483cb40d479b87233f868d6e57c3a400d", - "SyncTargetNumberOfActiveBigLedgerPeers": 30, - "SyncTargetNumberOfActivePeers": 0, - "SyncTargetNumberOfEstablishedBigLedgerPeers": 50, - "SyncTargetNumberOfKnownBigLedgerPeers": 100, - "TargetNumberOfActivePeers": 20, - "TargetNumberOfEstablishedPeers": 40, - "TargetNumberOfKnownPeers": 150, - "TargetNumberOfRootPeers": 60, "TestAllegraHardForkAtEpoch": 0, "TestAlonzoHardForkAtEpoch": 0, "TestMaryHardForkAtEpoch": 0, diff --git a/config/node/preview/peer-snapshot.json b/config/node/preview/peer-snapshot.json new file mode 100644 index 000000000..135e4a5f9 --- /dev/null +++ b/config/node/preview/peer-snapshot.json @@ -0,0 +1,1094 @@ +{ + "bigLedgerPools": [ + { + "accumulatedStake": 0.09289816883655608, + "relativeStake": 0.09289816883655608, + "relays": [ + { + "domain": "preview1-node.play.dev.cardano.org", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.15825812723246388, + "relativeStake": 0.06535995839590779, + "relays": [ + { + "domain": "node1.cardano.gratis", + "port": 6501 + }, + { + "domain": "node2.cardano.gratis", + "port": 6502 + }, + { + "domain": "mbb3.cardano.gratis", + "port": 6503 + } + ] + }, + { + "accumulatedStake": 0.20030783777588748, + "relativeStake": 0.042049710543423616, + "relays": [ + { + "domain": "tn-preview.psilobyte.io", + "port": 4201 + }, + { + "domain": "tn-preview2.psilobyte.io", + "port": 4202 + } + ] + }, + { + "accumulatedStake": 0.23201378167685865, + "relativeStake": 0.03170594390097117, + "relays": [ + { + "address": "132.145.71.219", + "port": 6001 + } + ] + }, + { + "accumulatedStake": 0.25962748913148215, + "relativeStake": 0.027613707454623476, + "relays": [ + { + "domain": "adaboy-preview-1c.gleeze.com", + "port": 5000 + }, + { + "domain": "adaboy-preview-2c.gleeze.com", + "port": 5000 + } + ] + }, + { + "accumulatedStake": 0.2820089887688403, + "relativeStake": 0.022381499637358162, + "relays": [ + { + "domain": "preview.world.bbhmm.net", + "port": 6200 + } + ] + }, + { + "accumulatedStake": 0.3038506492126152, + "relativeStake": 0.021841660443774873, + "relays": [ + { + "address": "73.222.122.247", + "port": 23001 + } + ] + }, + { + "accumulatedStake": 0.32424062170461865, + "relativeStake": 0.02038997249200346, + "relays": [ + { + "domain": "preview1.volcyada.com", + "port": 6004 + }, + { + "domain": "preview2.volcyada.com", + "port": 6005 + }, + { + "domain": "preview3.volcyada.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.3426308546832982, + "relativeStake": 0.01839023297867954, + "relays": [ + { + "domain": "relay-m.fluxpool.cc", + "port": 5001 + } + ] + }, + { + "accumulatedStake": 0.3604847256618092, + "relativeStake": 0.017853870978511075, + "relays": [ + { + "domain": "sully.crabdance.com", + "port": 6004 + } + ] + }, + { + "accumulatedStake": 0.3775565518717764, + "relativeStake": 0.017071826209967153, + "relays": [ + { + "address": "204.216.214.226", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.39353980492124574, + "relativeStake": 0.015983253049469362, + "relays": [ + { + "address": "75.119.130.108", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.40812303109651177, + "relativeStake": 0.014583226175265992, + "relays": [ + { + "address": "161.97.167.41", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.42202766457345364, + "relativeStake": 0.013904633476941902, + "relays": [ + { + "domain": "preview.leadstakepool.com", + "port": 3001 + }, + { + "domain": "preview.leadstakepool.com", + "port": 3002 + } + ] + }, + { + "accumulatedStake": 0.43479144124854924, + "relativeStake": 0.012763776675095581, + "relays": [ + { + "domain": "8.tcp.eu.ngrok.io", + "port": 28964 + } + ] + }, + { + "accumulatedStake": 0.44723248319706654, + "relativeStake": 0.012441041948517301, + "relays": [ + { + "domain": "129.213.55.211", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.4587498622455541, + "relativeStake": 0.011517379048487559, + "relays": [ + { + "domain": "relay1.preview.stakepool.quebec", + "port": 4000 + } + ] + }, + { + "accumulatedStake": 0.47019750430362395, + "relativeStake": 0.011447642058069835, + "relays": [ + { + "domain": "1.tcp.au.ngrok.io", + "port": 25432 + } + ] + }, + { + "accumulatedStake": 0.4812048145097918, + "relativeStake": 0.011007310206167877, + "relays": [ + { + "domain": "relay.test.lidonation.com", + "port": 3010 + } + ] + }, + { + "accumulatedStake": 0.49201589672213086, + "relativeStake": 0.010811082212339071, + "relays": [ + { + "address": "82.208.22.91", + "port": 6003 + } + ] + }, + { + "accumulatedStake": 0.5027718804155512, + "relativeStake": 0.010755983693420346, + "relays": [ + { + "domain": "previewrelay.stakepoolcentral.com", + "port": 15654 + } + ] + }, + { + "accumulatedStake": 0.5134202660107918, + "relativeStake": 0.010648385595240572, + "relays": [ + { + "address": "90.251.253.249", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.5240654653281376, + "relativeStake": 0.010645199317345807, + "relays": [ + { + "domain": "preview-r1.panl.org", + "port": 3015 + } + ] + }, + { + "accumulatedStake": 0.534465782906997, + "relativeStake": 0.010400317578859319, + "relays": [ + { + "domain": "preview.frcan.com", + "port": 6010 + } + ] + }, + { + "accumulatedStake": 0.5446299672465801, + "relativeStake": 0.01016418433958317, + "relays": [ + { + "address": "73.54.73.48", + "port": 6000 + }, + { + "address": "144.126.157.225", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.5547507039453439, + "relativeStake": 0.010120736698763755, + "relays": [ + { + "domain": "adar-monitor.freeddns.org", + "port": 3010 + } + ] + }, + { + "accumulatedStake": 0.5648100954194579, + "relativeStake": 0.0100593914741141, + "relays": [ + { + "domain": "relay01.preview.junglestakepool.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.574587146600445, + "relativeStake": 0.009777051180987028, + "relays": [ + { + "domain": "test.smaug.pool.pm", + "port": 3003 + } + ] + }, + { + "accumulatedStake": 0.5842350095335263, + "relativeStake": 0.009647862933081282, + "relays": [ + { + "address": "207.180.211.199", + "port": 6007 + } + ] + }, + { + "accumulatedStake": 0.593615650185432, + "relativeStake": 0.009380640651905785, + "relays": [ + { + "address": "142.132.229.15", + "port": 6001 + } + ] + }, + { + "accumulatedStake": 0.6028646982759558, + "relativeStake": 0.009249048090523728, + "relays": [ + { + "domain": "144.126.157.40", + "port": 3005 + }, + { + "domain": "144.126.157.40", + "port": 3006 + } + ] + }, + { + "accumulatedStake": 0.6121135255681222, + "relativeStake": 0.009248827292166367, + "relays": [ + { + "domain": "testnet.valhallapool.net", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.6212707746610211, + "relativeStake": 0.009157249092898917, + "relays": [ + { + "domain": "preview-testnet-relay.cardanistas.io", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.630272721661647, + "relativeStake": 0.009001947000626034, + "relays": [ + { + "address": "88.198.86.62", + "port": 4444 + } + ] + }, + { + "accumulatedStake": 0.6392383575737198, + "relativeStake": 0.008965635912072754, + "relays": [ + { + "domain": "beta.stake-cardano-pool.com", + "port": 7002 + } + ] + }, + { + "accumulatedStake": 0.6479390316594733, + "relativeStake": 0.008700674085753477, + "relays": [ + { + "domain": "preview-node.world.dev.cardano.org", + "port": 30002 + } + ] + }, + { + "accumulatedStake": 0.6566104509122048, + "relativeStake": 0.008671419252731509, + "relays": [ + { + "domain": "relay1.afica.io", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.665269272893583, + "relativeStake": 0.008658821981378087, + "relays": [ + { + "domain": "beadapool.ddns.net", + "port": 6001 + } + ] + }, + { + "accumulatedStake": 0.6737911699841745, + "relativeStake": 0.008521897090591618, + "relays": [ + { + "address": "52.166.113.150", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.682253505135175, + "relativeStake": 0.00846233515100051, + "relays": [ + { + "domain": "bbotest.duckdns.org", + "port": 6000 + }, + { + "domain": "bbotest01.duckdns.org", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.6906452123227652, + "relativeStake": 0.008391707187590126, + "relays": [ + { + "domain": "preview.testnet.cryptobounty.org", + "port": 6161 + } + ] + }, + { + "accumulatedStake": 0.6989781435200817, + "relativeStake": 0.008332931197316557, + "relays": [ + { + "domain": "adrelay.hawak.cloud", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.707305567569283, + "relativeStake": 0.008327424049201277, + "relays": [ + { + "domain": "preview-testnet-relay.junostakepool.com", + "port": 4521 + }, + { + "domain": "passive-preview-testnet-relay.junostakepool.com", + "port": 4531 + } + ] + }, + { + "accumulatedStake": 0.7155572671999648, + "relativeStake": 0.008251699630681853, + "relays": [ + { + "domain": "preview.adastack.net", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.723798497409419, + "relativeStake": 0.008241230209454135, + "relays": [ + { + "address": "194.163.149.210", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.731920407473913, + "relativeStake": 0.008121910064493943, + "relays": [ + { + "address": "128.140.96.209", + "port": 8000 + } + ] + }, + { + "accumulatedStake": 0.7400389412675705, + "relativeStake": 0.008118533793657623, + "relays": [ + { + "domain": "esq.ddns.net", + "port": 6010 + }, + { + "domain": "esq.ddns.net", + "port": 6011 + } + ] + }, + { + "accumulatedStake": 0.7481332909135958, + "relativeStake": 0.008094349646025298, + "relays": [ + { + "domain": "scarborough1.ddns.net", + "port": 6000 + }, + { + "domain": "scarborough1.ddns.net", + "port": 6001 + }, + { + "domain": "scarborough1.ddns.net", + "port": 6002 + } + ] + }, + { + "accumulatedStake": 0.7562121463708954, + "relativeStake": 0.008078855457299574, + "relays": [ + { + "domain": "alpha.relays.preview.mochipool.com", + "port": 7777 + } + ] + }, + { + "accumulatedStake": 0.764286122583907, + "relativeStake": 0.008073976213011655, + "relays": [ + { + "address": "5.161.75.212", + "port": 5003 + }, + { + "address": "100.100.100.100", + "port": 100 + }, + { + "address": "200.200.200.200", + "port": 200 + } + ] + }, + { + "accumulatedStake": 0.7723313765445476, + "relativeStake": 0.008045253960640564, + "relays": [ + { + "address": "184.174.32.106", + "port": 6002 + } + ] + }, + { + "accumulatedStake": 0.7803439956626369, + "relativeStake": 0.008012619118089252, + "relays": [ + { + "address": "194.60.201.143", + "port": 6001 + } + ] + }, + { + "accumulatedStake": 0.7874607517888133, + "relativeStake": 0.007116756126176332, + "relays": [ + { + "domain": "r1.pv.mrbee.io", + "port": 3101 + } + ] + }, + { + "accumulatedStake": 0.7939609484022502, + "relativeStake": 0.0065001966134369685, + "relays": [ + { + "address": "130.162.231.122", + "port": 6001 + } + ] + }, + { + "accumulatedStake": 0.7991755159472423, + "relativeStake": 0.005214567544992157, + "relays": [ + { + "domain": "prv-relay1.apexpool.info", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8042778691127376, + "relativeStake": 0.0051023531654952, + "relays": [ + { + "domain": "relay.preview.cardanostakehouse.com", + "port": 11000 + } + ] + }, + { + "accumulatedStake": 0.8091072983805395, + "relativeStake": 0.004829429267802015, + "relays": [ + { + "address": "198.13.63.94", + "port": 4002 + }, + { + "address": "108.61.201.198", + "port": 4002 + } + ] + }, + { + "accumulatedStake": 0.8137374823668805, + "relativeStake": 0.004630183986340929, + "relays": [ + { + "domain": "preview.canadastakes.ca", + "port": 5002 + } + ] + }, + { + "accumulatedStake": 0.8182572546066514, + "relativeStake": 0.004519772239770917, + "relays": [ + { + "address": "194.60.201.143", + "port": 6001 + } + ] + }, + { + "accumulatedStake": 0.821629789781986, + "relativeStake": 0.00337253517533459, + "relays": [ + { + "domain": "preview-relays.onyxstakepool.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8246087768234774, + "relativeStake": 0.002978987041491462, + "relays": [ + { + "address": "18.219.254.123", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8274398819713624, + "relativeStake": 0.0028311051478849074, + "relays": [ + { + "domain": "testnet-relay.xstakepool.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8302594868482059, + "relativeStake": 0.002819604876843548, + "relays": [ + { + "address": "0.0.0.0", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8330242981297461, + "relativeStake": 0.0027648112815401972, + "relays": [ + { + "domain": "topo-test.topopool.com", + "port": 3010 + } + ] + }, + { + "accumulatedStake": 0.8356006121849499, + "relativeStake": 0.0025763140552037844, + "relays": [ + { + "domain": "ava1.sytes.net", + "port": 6010 + } + ] + }, + { + "accumulatedStake": 0.8380939733891081, + "relativeStake": 0.002493361204158133, + "relays": [ + { + "domain": "test.stakepool.at", + "port": 9001 + } + ] + }, + { + "accumulatedStake": 0.8405812456223296, + "relativeStake": 0.002487272233221543, + "relays": [ + { + "domain": "preview.bladepool.com", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8430623185682086, + "relativeStake": 0.0024810729458789992, + "relays": [ + { + "domain": "preview.relays.liqwid.finance", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8454727401833807, + "relativeStake": 0.0024104216151721288, + "relays": [ + { + "address": "69.128.162.203", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.8477213171831962, + "relativeStake": 0.002248576999815546, + "relays": [ + { + "domain": "pn1.powerfulpools.com", + "port": 6030 + } + ] + }, + { + "accumulatedStake": 0.8499018461835024, + "relativeStake": 0.0021805290003061558, + "relays": [ + { + "domain": "d8bdbfbe.cardano-relay.bison.run", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.8520178004291812, + "relativeStake": 0.002115954245678825, + "relays": [ + { + "domain": "157.173.103.26", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8541310297073298, + "relativeStake": 0.0021132292781485596, + "relays": [ + { + "domain": "preview-test.ahlnet.nu", + "port": 2102 + } + ] + }, + { + "accumulatedStake": 0.8560945382513954, + "relativeStake": 0.0019635085440655644, + "relays": [ + { + "domain": "midnight-testnet.digitalfortress.online", + "port": 8001 + } + ] + }, + { + "accumulatedStake": 0.8580474263586461, + "relativeStake": 0.0019528881072507103, + "relays": [ + { + "domain": "previewrelay1.intertreecryptoconsultants.com", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8599902281843963, + "relativeStake": 0.0019428018257502818, + "relays": [ + { + "domain": "pv-relays.digitalfortress.online", + "port": 8001 + } + ] + }, + { + "accumulatedStake": 0.8619001928287053, + "relativeStake": 0.0019099646443090162, + "relays": [ + { + "domain": "relay0-testnet.zeropercentstaking.com", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8637795461955349, + "relativeStake": 0.0018793533668294892, + "relays": [ + { + "domain": "1.tcp.ap.ngrok.io", + "port": 25317 + } + ] + }, + { + "accumulatedStake": 0.8656491140653676, + "relativeStake": 0.001869567869832719, + "relays": [ + { + "address": "2001:861:4000:2b80:216:3eff:fe05:9009", + "port": 6006 + } + ] + }, + { + "accumulatedStake": 0.8673837021057317, + "relativeStake": 0.001734588040364049, + "relays": [ + { + "address": "2001:861:4000:2b80:216:3eff:feb6:d700", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8690756655925269, + "relativeStake": 0.0016919634867952496, + "relays": [ + { + "domain": "spec2-staging.spirestaking2.com", + "port": 3006 + } + ] + }, + { + "accumulatedStake": 0.8707306579985138, + "relativeStake": 0.0016549924059869364, + "relays": [ + { + "address": "95.216.173.194", + "port": 16000 + } + ] + }, + { + "accumulatedStake": 0.8723282374585594, + "relativeStake": 0.0015975794600455175, + "relays": [ + { + "address": "88.198.86.61", + "port": 8888 + } + ] + }, + { + "accumulatedStake": 0.8739173439440143, + "relativeStake": 0.0015891064854550304, + "relays": [ + { + "address": "192.167.57.23", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8754901102706356, + "relativeStake": 0.00157276632662124, + "relays": [ + { + "address": "168.138.37.117", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8770294064755557, + "relativeStake": 0.001539296204920071, + "relays": [ + { + "address": "65.21.198.152", + "port": 3003 + } + ] + }, + { + "accumulatedStake": 0.8785630468488305, + "relativeStake": 0.0015336403732747702, + "relays": [ + { + "domain": "spec1-staging.spirestaking2.com", + "port": 3005 + } + ] + }, + { + "accumulatedStake": 0.8800937304909449, + "relativeStake": 0.0015306836421144626, + "relays": [ + { + "domain": "preview.ada.chicando.net", + "port": 3002 + } + ] + }, + { + "accumulatedStake": 0.8816227072073652, + "relativeStake": 0.0015289767164203068, + "relays": [ + { + "domain": "f7ca89d1.cardano-relay.stagebison.net", + "port": 1338 + } + ] + }, + { + "accumulatedStake": 0.8831490943093807, + "relativeStake": 0.0015263871020154737, + "relays": [ + { + "domain": "eu-central-1.relay-preview.easy1staking.com", + "port": 30100 + } + ] + }, + { + "accumulatedStake": 0.8846610901725336, + "relativeStake": 0.0015119958631529347, + "relays": [ + { + "domain": "relay.preview.crimsonpool.com", + "port": 3000 + } + ] + }, + { + "accumulatedStake": 0.88614223803845, + "relativeStake": 0.0014811478659164047, + "relays": [ + { + "domain": "testicles.kiwipool.org", + "port": 9720 + } + ] + }, + { + "accumulatedStake": 0.8876111281216277, + "relativeStake": 0.001468890083177691, + "relays": [ + { + "address": "152.53.108.208", + "port": 8081 + } + ] + }, + { + "accumulatedStake": 0.8890711672937353, + "relativeStake": 0.0014600391721075877, + "relays": [ + { + "address": "51.77.24.220", + "port": 4003 + } + ] + }, + { + "accumulatedStake": 0.8905258968635419, + "relativeStake": 0.001454729569806531, + "relays": [ + { + "domain": "pv-relays.digitalfortress.online", + "port": 8001 + } + ] + }, + { + "accumulatedStake": 0.8919793656210733, + "relativeStake": 0.0014534687575314014, + "relays": [ + { + "domain": "preview.happystaking.io", + "port": 3003 + } + ] + }, + { + "accumulatedStake": 0.8934283328407039, + "relativeStake": 0.001448967219630703, + "relays": [ + { + "address": "185.43.205.110", + "port": 3003 + } + ] + }, + { + "accumulatedStake": 0.8948748263924357, + "relativeStake": 0.0014464935517317487, + "relays": [ + { + "domain": "pv-relays.digitalfortress.online", + "port": 8001 + } + ] + }, + { + "accumulatedStake": 0.8963068083957848, + "relativeStake": 0.001431982003349146, + "relays": [ + { + "address": "152.53.38.172", + "port": 6000 + } + ] + }, + { + "accumulatedStake": 0.8977363776641413, + "relativeStake": 0.0014295692683563947, + "relays": [ + { + "domain": "preview2-node.play.dev.cardano.org", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.8991606889421604, + "relativeStake": 0.0014243112780191788, + "relays": [ + { + "domain": "preview3-node.play.dev.cardano.org", + "port": 3001 + } + ] + }, + { + "accumulatedStake": 0.9005451392542357, + "relativeStake": 0.0013844503120753662, + "relays": [ + { + "address": "217.180.194.220", + "port": 6000 + } + ] + } + ], + "slotNo": 83170148, + "version": 1 +} diff --git a/config/node/preview/topology.json b/config/node/preview/topology.json index e261f53df..8afbe6323 100644 --- a/config/node/preview/topology.json +++ b/config/node/preview/topology.json @@ -13,11 +13,12 @@ "valency": 1 } ], + "peerSnapshotFile": "peer-snapshot.json", "publicRoots": [ { "accessPoints": [], "advertise": false } ], - "useLedgerAfterSlot": 73267000 + "useLedgerAfterSlot": 83116868 } diff --git a/docker/.env.dockerfile b/docker/.env.dockerfile index 89ee016b3..64d6c805c 100644 --- a/docker/.env.dockerfile +++ b/docker/.env.dockerfile @@ -35,7 +35,7 @@ DB_PORT=5432 ## Cardano node variables CARDANO_NODE_HOST=localhost CARDANO_NODE_PORT=3001 -CARDANO_NODE_VERSION=10.4.1 +CARDANO_NODE_VERSION=10.5.1 CARDANO_NODE_SUBMIT_HOST=localhost NODE_SUBMIT_API_PORT=8090 CARDANO_NODE_SOCKET_PATH=/node/node.socket diff --git a/docker/Dockerfile b/docker/Dockerfile index 6cb0b103a..e64f21c72 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -28,14 +28,14 @@ ARG CABAL_VERSION=${CABAL_VERSION:-3.12.1.0} ARG GHC_VERSION=${GHC_VERSION:-9.6.7} # Cardano node version -ARG CARDANO_NODE_VERSION=${CARDANO_NODE_VERSION:-10.4.1} +ARG CARDANO_NODE_VERSION=${CARDANO_NODE_VERSION:-10.5.1} # Clone config fork reposotory ARG CONFIG_FORK_REPO="VladislavKudrin/gnu-config-fork" ARG CONFIG_FORK_BRANCH="master" # Mithril version -ARG MITHRIL_VERSION=${MITHRIL_VERSION:-2524.0} +ARG MITHRIL_VERSION=${MITHRIL_VERSION:-2537.0} RUN bash -c "ghcup install cabal ${CABAL_VERSION}" RUN bash -c "ghcup set cabal ${CABAL_VERSION}" diff --git a/docker/dockerfiles/mithril/Dockerfile b/docker/dockerfiles/mithril/Dockerfile index 1d4a52863..a4f7ee51a 100644 --- a/docker/dockerfiles/mithril/Dockerfile +++ b/docker/dockerfiles/mithril/Dockerfile @@ -9,7 +9,7 @@ RUN apt update --fix-missing \ && apt-get clean # Mithril setup -ARG MITHRIL_VERSION=2524.0 +ARG MITHRIL_VERSION=2537.0 # Install dependencies RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | bash -s -- -y \ diff --git a/docker/dockerfiles/node/Dockerfile b/docker/dockerfiles/node/Dockerfile index df3d1315c..3378876b1 100644 --- a/docker/dockerfiles/node/Dockerfile +++ b/docker/dockerfiles/node/Dockerfile @@ -23,7 +23,7 @@ ARG LMDB_VERSION="ce20108" ARG CABAL_VERSION=${CABAL_VERSION:-3.12.1.0} ARG GHC_VERSION=${GHC_VERSION:-9.6.7} -ARG CARDANO_NODE_VERSION=${CARDANO_NODE_VERSION:-10.4.1} +ARG CARDANO_NODE_VERSION=${CARDANO_NODE_VERSION:-10.5.1} RUN bash -c "ghcup install cabal ${CABAL_VERSION}" RUN bash -c "ghcup set cabal ${CABAL_VERSION}" diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 11f5fa3ab..4947a4936 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -173,7 +173,7 @@ start_postgres() { } create_database_and_user() { - export DB_SCHEMA="$NETWORK" + export DB_SCHEMA=public flag=true while [ $(sudo -u postgres "$PG_BIN/psql" -U postgres -Atc "SELECT pg_is_in_recovery()";) == "t" ]; do diff --git a/docker/readme.md b/docker/readme.md index a02fdac2a..be83732d3 100644 --- a/docker/readme.md +++ b/docker/readme.md @@ -48,7 +48,7 @@ CABAL_VERSION=3.12.1.0 GHC_VERSION=9.6.7 `` `` -CARDANO_NODE_VERSION=10.4.1 +CARDANO_NODE_VERSION=10.5.1 `` `` PG_VERSION=14 diff --git a/docs/docs/core-concepts/architecture.md b/docs/docs/core-concepts/architecture.md index 7b84c5c66..b11bd9d69 100644 --- a/docs/docs/core-concepts/architecture.md +++ b/docs/docs/core-concepts/architecture.md @@ -53,7 +53,7 @@ _Figure 2: Component Diagram showing internal architecture_ The Cardano Node is a full implementation of the Cardano blockchain protocol that connects to the Cardano network, validates transactions and blocks, and maintains the blockchain state. :::info -**Version**: 10.4.1 (configurable via build args) +**Version**: 10.5.1 (configurable via build args) **Built with**: GHC 9.6.7 and Cabal 3.12.1.0 **Runtime socket path**: `/node/node.socket` **Data directory**: `/node/db` diff --git a/docs/docs/install-and-deploy/env-vars.md b/docs/docs/install-and-deploy/env-vars.md index 41b5f4ff7..aca2e744a 100644 --- a/docs/docs/install-and-deploy/env-vars.md +++ b/docs/docs/install-and-deploy/env-vars.md @@ -46,7 +46,7 @@ The root folder contains several example `.env` files for different deployment s | `DB_PATH` | Database path | data | added in release 1.0.0 | | `CARDANO_NODE_HOST` | Cardano node host | cardano-node | added in release 1.0.0 | | `CARDANO_NODE_PORT` | Cardano node port | 3001 | added in release 1.0.0 | -| `CARDANO_NODE_VERSION` | Cardano node version | 10.4.1 | added in release 1.0.0 | +| `CARDANO_NODE_VERSION` | Cardano node version | 10.5.1 | added in release 1.0.0 | | `CARDANO_NODE_SUBMIT_HOST` | Cardano node submit API host | cardano-submit-api | added in release 1.0.0 | | `NODE_SUBMIT_API_PORT` | Cardano node submit API port | 8090 | added in release 1.0.0 | | `CARDANO_NODE_DIR` | Cardano node base directory | /node | added in release 1.0.0 | diff --git a/pom.xml b/pom.xml index a90c58665..1efe775a7 100644 --- a/pom.xml +++ b/pom.xml @@ -26,8 +26,7 @@ - full - 1.4.0 + 2.0.0-beta 24 UTF-8 3.5.0 @@ -41,8 +40,8 @@ 1.18.38 2.2.8 2.20.0 - 0.6.6 - 0.3.8 + 0.7.0 + 0.4.0-beta5 2.14.0 2.0.1.Final 1.13.0 diff --git a/test-data-generator/pom.xml b/test-data-generator/pom.xml index 80f2c0670..8fd71da5d 100644 --- a/test-data-generator/pom.xml +++ b/test-data-generator/pom.xml @@ -28,12 +28,12 @@ com.bloxbean.cardano cardano-client-lib - 0.6.4 + 0.7.0 com.bloxbean.cardano cardano-client-backend-blockfrost - 0.6.4 + 0.7.0 org.projectlombok diff --git a/yaci-indexer/pom.xml b/yaci-indexer/pom.xml index 2a37aa3b6..390f2b069 100644 --- a/yaci-indexer/pom.xml +++ b/yaci-indexer/pom.xml @@ -18,8 +18,7 @@ 24 - full - 0.1.5 + 2.0.0-beta4 src/main/java/org/cardanofoundation/rosetta/yaciindexer/stores/txsize/model/* @@ -99,12 +98,12 @@ yaci-store-admin-spring-boot-starter ${yaci-store.version} - - - - - - + + + com.bloxbean.cardano + yaci-store-governance-spring-boot-starter + ${yaci-store.version} + com.bloxbean.cardano diff --git a/yaci-indexer/src/main/java/org/cardanofoundation/rosetta/yaciindexer/job/PeerDiscoveryJob.java b/yaci-indexer/src/main/java/org/cardanofoundation/rosetta/yaciindexer/job/PeerDiscoveryJob.java index 7f05beda4..2eb8ca080 100644 --- a/yaci-indexer/src/main/java/org/cardanofoundation/rosetta/yaciindexer/job/PeerDiscoveryJob.java +++ b/yaci-indexer/src/main/java/org/cardanofoundation/rosetta/yaciindexer/job/PeerDiscoveryJob.java @@ -9,7 +9,8 @@ import org.springframework.stereotype.Service; import java.util.Optional; -import java.util.concurrent.TimeUnit; + +import static java.util.concurrent.TimeUnit.MINUTES; @Service @Slf4j @@ -26,7 +27,7 @@ public void init() { } // Initial refresh after 1 minute, then every hour - @Scheduled(initialDelay = 1, fixedDelay = 60, timeUnit = TimeUnit.MINUTES) + @Scheduled(initialDelay = 5, fixedDelay = 60, timeUnit = MINUTES) public void refreshPeers() { log.info("Starting a periodic / scheduled peer discovery refresh..."); diff --git a/yaci-indexer/src/main/resources/application-postgres.properties b/yaci-indexer/src/main/resources/application-postgres.properties index 839fdc4e7..e8b56332c 100644 --- a/yaci-indexer/src/main/resources/application-postgres.properties +++ b/yaci-indexer/src/main/resources/application-postgres.properties @@ -4,7 +4,7 @@ #################################################### ##################### Postgres DB ####################### -spring.datasource.url=jdbc:postgresql://${DB_HOST:localhost}:${DB_PORT:5433}/${DB_NAME:rosetta-java}?currentSchema=${DB_SCHEMA:preprod} +spring.datasource.url=jdbc:postgresql://${DB_HOST:localhost}:${DB_PORT:5433}/${DB_NAME:rosetta-java}?currentSchema=${DB_SCHEMA:public} spring.datasource.username=${DB_USER:rosetta_db_admin} spring.datasource.password=${DB_SECRET:weakpwd#123_d} diff --git a/yaci-indexer/src/main/resources/db/store/postgresql/V1.0_900_0__rosetta_app_addres_utxo.sql b/yaci-indexer/src/main/resources/db/store/postgresql/V1.0_900_0__rosetta_app_addres_utxo.sql index 05bfb309f..8ffd8c463 100644 --- a/yaci-indexer/src/main/resources/db/store/postgresql/V1.0_900_0__rosetta_app_addres_utxo.sql +++ b/yaci-indexer/src/main/resources/db/store/postgresql/V1.0_900_0__rosetta_app_addres_utxo.sql @@ -1,11 +1 @@ -DO $$ -BEGIN - IF NOT EXISTS ( - SELECT 1 FROM pg_indexes - WHERE indexname = 'idx_address_utxo_tx_hash' - AND tablename = 'address_utxo' - AND schemaname = current_schema() - ) THEN - CREATE INDEX idx_address_utxo_tx_hash ON address_utxo USING btree (tx_hash); - END IF; -END $$; \ No newline at end of file +CREATE INDEX idx_address_utxo_tx_hash ON address_utxo USING btree (tx_hash); \ No newline at end of file