From 9c78403b0b74b1a017e37374b438347df2632aff Mon Sep 17 00:00:00 2001 From: Leister Francisco Alvarado Campos Date: Wed, 1 Nov 2023 19:29:46 -0600 Subject: [PATCH 01/75] perf(hapi-evm): adapt apply function to listen for outgoing native token transfers --- .env.jungle | 24 ++++- .env.local | 2 +- .env.telostestnet | 4 +- .env.ultratestnet | 2 +- docker-compose.yaml | 1 + hapi-evm/src/config/network.config.ts | 4 + hapi-evm/src/models/default.model.ts | 13 +++ hapi-evm/src/services/block.service.ts | 24 ----- hapi-evm/src/services/hyperion/index.ts | 43 +++++---- .../updaters/eosio-evm-transfer.updater.ts | 92 ++++++++++++++----- 10 files changed, 136 insertions(+), 73 deletions(-) diff --git a/.env.jungle b/.env.jungle index fa2f4b9e1..0249458bc 100644 --- a/.env.jungle +++ b/.env.jungle @@ -1,6 +1,6 @@ # global STAGE=dev -APP_NAME=eosio-dashboard +APP_NAME=antelope-tools # wallet WALLET_DATA=./wallet_data @@ -56,7 +56,27 @@ HAPI_RE_CAPTCHA_PROJECT_ID= HAPI_PUBLIC_RE_CAPTCHA_KEY= HAPI_CREATE_ACCOUNT_ACTION_NAME= -#webapp +# hapi-evm +HAPI_EVM_SERVER_PORT=9090 +HAPI_EVM_SERVER_ADDRESS=hapi-evm +HAPI_EVM_HASURA_URL=http://hasura:8080/v1/graphql +HAPI_EVM_HASURA_ADMIN_SECRET=myadminsecretkey +HAPI_EVM_DATABASE_URL=postgres://eoscr:password@postgres:5432/localdb +HAPI_EVM_ENDPOINT=https://api.testnet.evm.eosnetwork.com +HAPI_EVM_API_ENDPOINTS=["https://jungle.edenia.cloud","https://jungle4.eosphere.io","https://jungle4.api.eosnation.io","https://jungle4.eossweden.org"] +HAPI_EVM_NETWORK=EOSIO# EOSIO, TELOS +HAPI_EVM_NETWORK_CHAIN_ID=73e4385a2708e6d7048834fbc1079f2fabb17b3c125b146af438971e90716c4d +HAPI_EVM_EOS_EVM_ACCOUNT=eosio.evm +HAPI_EVM_BLOCK_INTERVAL_SEC=1 +HAPI_EVM_OLD_BLOCK_INTERVAL_SEC=0.1 +HAPI_EVM_ATH_INTERVAL_SEC=60 +HAPI_EVM_CLEAN_OLD_BLOCK_INTERVAL_SEC=86400 +HAPI_EVM_CLEAN_OLD_TRANSFER_INTERVAL_SEC=86400 +HAPI_EVM_KEEP_HISTORY_FOR_YEARS=1 +HAPI_EVM_HYPERION_API=https://jungle.eosusa.io +HAPI_EVM_HYPERION_START_AT=2023-10-25T00:00:00.000+00:00 + +# webapp PORT=3000 REACT_APP_VERSION=dev REACT_APP_NAME=$npm_package_name diff --git a/.env.local b/.env.local index e76763335..55b1d3e0b 100644 --- a/.env.local +++ b/.env.local @@ -1,6 +1,6 @@ # global STAGE=dev -APP_NAME=eosio-dashboard +APP_NAME=antelope-tools # wallet WALLET_DATA=./wallet_data diff --git a/.env.telostestnet b/.env.telostestnet index 99b01ce59..7e272d30d 100644 --- a/.env.telostestnet +++ b/.env.telostestnet @@ -1,6 +1,6 @@ # global STAGE=dev -APP_NAME=eosio-dashboard +APP_NAME=antelope-tools # wallet WALLET_DATA=./wallet_data @@ -76,7 +76,7 @@ HAPI_EVM_KEEP_HISTORY_FOR_YEARS=1 HAPI_EVM_HYPERION_API=https://test.telos.eosusa.io HAPI_EVM_HYPERION_START_AT=2021-06-02T00:00:00.000+00:00 -#webapp +# webapp PORT=3000 REACT_APP_VERSION=dev REACT_APP_NAME=$npm_package_name diff --git a/.env.ultratestnet b/.env.ultratestnet index 413339815..b4afef4c6 100644 --- a/.env.ultratestnet +++ b/.env.ultratestnet @@ -1,6 +1,6 @@ # global STAGE=dev -APP_NAME=eosio-dashboard +APP_NAME=antelope-tools # wallet WALLET_DATA=./wallet_data diff --git a/docker-compose.yaml b/docker-compose.yaml index 805e5ffdc..520cda6b9 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -91,6 +91,7 @@ services: HAPI_EVM_DATABASE_URL: '${HAPI_EVM_DATABASE_URL}' HAPI_EVM_ENDPOINT: '${HAPI_EVM_ENDPOINT}' HAPI_EVM_API_ENDPOINTS: '${HAPI_EVM_API_ENDPOINTS}' + HAPI_EVM_NETWORK: '${HAPI_EVM_NETWORK}' HAPI_EVM_NETWORK_CHAIN_ID: '${HAPI_EVM_NETWORK_CHAIN_ID}' HAPI_EVM_EOS_EVM_ACCOUNT: '${HAPI_EVM_EOS_EVM_ACCOUNT}' HAPI_EVM_BLOCK_INTERVAL_SEC: '${HAPI_EVM_BLOCK_INTERVAL_SEC}' diff --git a/hapi-evm/src/config/network.config.ts b/hapi-evm/src/config/network.config.ts index e97f6b724..ba1e56a97 100644 --- a/hapi-evm/src/config/network.config.ts +++ b/hapi-evm/src/config/network.config.ts @@ -1,5 +1,9 @@ +import { AllowedNetworkType } from '../models/default.model' + export const evmEndpoint = process.env.HAPI_EVM_ENDPOINT || 'http://localhost/evm' +export const network: AllowedNetworkType = + (process.env.HAPI_EVM_NETWORK as AllowedNetworkType) || 'EOSIO' export const chainId = process.env.HAPI_EVM_NETWORK_CHAIN_ID || 'chainid1' export const evmAccount = process.env.HAPI_EVM_EOS_EVM_ACCOUNT || 'eosio.evm' export const eosEndpoints = diff --git a/hapi-evm/src/models/default.model.ts b/hapi-evm/src/models/default.model.ts index 4e2cf9279..6c4f377d7 100644 --- a/hapi-evm/src/models/default.model.ts +++ b/hapi-evm/src/models/default.model.ts @@ -18,3 +18,16 @@ export interface Worker { intervalSec?: number action: () => Promise } + +export const AllowedNetwork = { + EOSIO: 'EOSIO', + TELOS: 'TELOS' +} as const + +export type AllowedNetworkType = keyof typeof AllowedNetwork + +export interface BuilderListener { + type: string + notified_account: string + apply: (action: any) => Promise +} diff --git a/hapi-evm/src/services/block.service.ts b/hapi-evm/src/services/block.service.ts index e8b6fa812..22a6a65f0 100644 --- a/hapi-evm/src/services/block.service.ts +++ b/hapi-evm/src/services/block.service.ts @@ -15,20 +15,6 @@ import moment from 'moment' const httpProvider = new Web3.providers.HttpProvider(networkConfig.evmEndpoint) const web3 = new Web3(httpProvider) -// const test = async () => { -// const tempBlock: Block = await web3.eth.getBlock(0) -// console.log('🚀 ~ tempBlock:', tempBlock) - -// const trx: TransactionInfo = await web3.eth.getTransaction( -// '0x4b00d79018d46210b31829285541ae72653e03229a9cff67f362416e5a1c274c' -// ) -// console.log('🚀 ~ trx:', trx) -// console.log('🚀 ~ gas:', Number(trx.gas)) -// } - -// test() - -// TODO: syncronize passed blocks const syncFullBlock = async (blockNumber: number | bigint) => { const block: Block = await web3.eth.getBlock(blockNumber) @@ -80,8 +66,6 @@ const syncFullBlock = async (blockNumber: number | bigint) => { await incrementTotalTransactions(block.transactions?.length) - // TODO: review this logic - const transactionsPromises = [ cappedBlock.transactions.reduce( async ( @@ -143,27 +127,21 @@ const getBlock = async () => { const syncOldBlocks = async (): Promise => { const paramStats = await paramModel.queries.getState() - if (paramStats.isSynced) return - const nextBlock = paramStats.nextBlock const isUpToDate = await blockModel.queries.default.get({ number: { _eq: nextBlock } }) - if (!isUpToDate) { const nextBlockTo = await blockModel.queries.default.getNextBlock(nextBlock) const nextBlockToNumber = nextBlockTo[0]?.number || 0 - if (nextBlockToNumber > nextBlock) { console.log( `🚦 Syncing blocks behind, pending ${nextBlockToNumber - nextBlock} ` ) } - await syncFullBlock(nextBlock) } - await paramModel.queries.saveOrUpdate( nextBlock + 1 * Number(!isUpToDate), !!isUpToDate @@ -181,9 +159,7 @@ const cleanOldBlocks = async () => { const syncATH = async () => { const currentState = await historicalStatsModel.queries.getState() const partialATH = await StatsModel.queries.getPartialATH() - if (!partialATH) return - if ( currentState.tps_all_time_high.transactions_count || 0 < partialATH.ath_transactions_count diff --git a/hapi-evm/src/services/hyperion/index.ts b/hapi-evm/src/services/hyperion/index.ts index 59c180925..230233edd 100644 --- a/hapi-evm/src/services/hyperion/index.ts +++ b/hapi-evm/src/services/hyperion/index.ts @@ -2,7 +2,7 @@ import moment, { DurationInputArg2 } from 'moment' import { hyperionConfig } from '../../config' import { coreUtil, timeUtil } from '../../utils' -import { hyperionStateModel } from '../../models' +import { hyperionStateModel, defaultModel } from '../../models' import updaters from './updaters' @@ -10,6 +10,7 @@ interface GetActionsParams { after: string before: string skip: number + updater: Omit } interface GetActionsResponse { @@ -81,9 +82,9 @@ const getActions = async ( { params: { ...params, - account: 'eosio.evm', // TODO: get it from updater using the notified_account field + account: params.updater.notified_account, limit, - filter: updaters.map(updater => updater.type).join(','), + filter: params.updater.type, sort: 'asc', simple: true, checkLib: true @@ -107,17 +108,11 @@ const getActions = async ( } } -const runUpdaters = async (actions: any[]) => { - for (let index = 0; index < actions.length; index++) { - const action = actions[index] - const updater = updaters.find(item => - item.type.startsWith(`${action.contract}:${action.action}`) - ) - - if (!updater) { - continue - } - +const runUpdater = async ( + updater: Omit, + actions: any[] +) => { + for (const action of actions) { await updater.apply(action) } } @@ -143,10 +138,22 @@ const sync = async (): Promise => { } try { - while (hasMore) { - ;({ hasMore, actions } = await getActions({ after, before, skip })) - skip += actions.length - await runUpdaters(actions) + for (const updater of updaters) { + while (hasMore) { + ;({ hasMore, actions } = await getActions({ + after, + before, + skip, + updater + })) + skip += actions.length + + await runUpdater(updater, actions) + } + + skip = 0 + hasMore = true + actions = [] } } catch (error: any) { console.error('hyperion error', error.message) diff --git a/hapi-evm/src/services/hyperion/updaters/eosio-evm-transfer.updater.ts b/hapi-evm/src/services/hyperion/updaters/eosio-evm-transfer.updater.ts index 2cfe96f24..c7cb103dc 100644 --- a/hapi-evm/src/services/hyperion/updaters/eosio-evm-transfer.updater.ts +++ b/hapi-evm/src/services/hyperion/updaters/eosio-evm-transfer.updater.ts @@ -1,32 +1,74 @@ -import { transferModel } from '../../../models' - -// TODO: handle this as a network function, for example, base on the -// network config, the action type and logic will be different +import { networkConfig } from '../../../config' +import { transferModel, defaultModel } from '../../../models' // TODO: move this to env const defaultMemo = 'Withdraw balance for' -export default { - type: `eosio.evm:withdraw`, - notified_account: `eosio.evm`, - apply: async (action: any) => { - const [amount, symbol] = action.data.quantity.split(' ') - - try { - await transferModel.queries.save({ - block: action.block, - transaction_id: action.transaction_id, - timestamp: action.timestamp, - from: 'eosio.evm', - to: action.data.to, - amount: amount, - symbol: symbol, - memo: `${defaultMemo}: ${action.data.to}`, - quantity: action.data.quantity, - type: transferModel.interfaces.Type.outgoing - }) - } catch (error: any) { - console.error(`error to sync ${action.action}: ${error.message}`) +const applyEosio = async (action: any) => { + if (action.data.from !== 'eosio.evm') return + + try { + await transferModel.queries.save({ + block: action.block, + transaction_id: action.transaction_id, + timestamp: action.timestamp, + from: action.data.from, + to: action.data.to, + amount: action.data.amount, + symbol: action.data.symbol, + memo: action.data.memo, + quantity: action.data.quantity, + type: transferModel.interfaces.Type.outgoing + }) + } catch (error: any) { + console.error(`error to sync ${action.action}: ${error.message}`) + } +} + +const applyTelos = async (action: any) => { + const [amount, symbol] = action.data.quantity.split(' ') + + try { + await transferModel.queries.save({ + block: action.block, + transaction_id: action.transaction_id, + timestamp: action.timestamp, + from: 'eosio.evm', + to: action.data.to, + amount: amount, + symbol: symbol, + memo: `${defaultMemo}: ${action.data.to}`, + quantity: action.data.quantity, + type: transferModel.interfaces.Type.outgoing + }) + } catch (error: any) { + console.error(`error to sync ${action.action}: ${error.message}`) + } +} + +const build = ( + network: defaultModel.AllowedNetworkType = defaultModel.AllowedNetwork.EOSIO +): defaultModel.BuilderListener => { + const listener = { + [defaultModel.AllowedNetwork.EOSIO]: { + type: `eosio.token:transfer,act.data.from=eosio.evm`, + notified_account: `eosio.evm`, + apply: applyEosio + }, + [defaultModel.AllowedNetwork.TELOS]: { + type: `eosio.evm:withdraw`, + notified_account: `eosio.evm`, + apply: applyTelos } } + + const selectedNetworkListener = listener[network] + + if (!selectedNetworkListener) { + throw new Error(`network ${network} not supported`) + } + + return selectedNetworkListener } + +export default build(networkConfig.network) From 084f91c44d5dd2d7b5f5ba6f96dccadd31f125cf Mon Sep 17 00:00:00 2001 From: Leister Francisco Alvarado Campos Date: Wed, 1 Nov 2023 21:22:46 -0600 Subject: [PATCH 02/75] perf(evm): set evm deployment for eosio --- .github/workflows/deploy-jungle-testnet.yaml | 22 ++++++++++++++++++- .github/workflows/deploy-mainnet.yaml | 23 ++++++++++++++++++-- .github/workflows/deploy-telos-testnet.yaml | 1 + .github/workflows/deploy-telos.yaml | 1 + kubernetes/configmap-dashboard.yaml | 1 + 5 files changed, 45 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy-jungle-testnet.yaml b/.github/workflows/deploy-jungle-testnet.yaml index 4ba3ba694..bb720ff5e 100644 --- a/.github/workflows/deploy-jungle-testnet.yaml +++ b/.github/workflows/deploy-jungle-testnet.yaml @@ -63,7 +63,8 @@ jobs: id: build_kubernetes_files run: | make \ - build-kubernetes + build-kubernetes \ + build-kubernetes-evm env: # general NAMESPACE: jungle-dashboard @@ -106,6 +107,25 @@ jobs: HAPI_EOSRATE_GET_STATS_URL: ${{ secrets.HAPI_EOSRATE_GET_STATS_URL }} HAPI_EOSRATE_GET_STATS_USER: ${{ secrets.HAPI_EOSRATE_GET_STATS_USER }} HAPI_EOSRATE_GET_STATS_PASSWORD: ${{ secrets.HAPI_EOSRATE_GET_STATS_PASSWORD }} + # hapi-evm + HAPI_EVM_SERVER_PORT: '9090' + HAPI_EVM_SERVER_ADDRESS: '0.0.0.0' + HAPI_EVM_HASURA_URL: 'http://dashboard-hasura:8080/v1/graphql' + HAPI_EVM_HASURA_ADMIN_SECRET: ${{ secrets.HAPI_EVM_HASURA_ADMIN_SECRET }} + HAPI_EVM_DATABASE_URL: ${{ secrets.HAPI_EVM_DATABASE_URL }} + HAPI_EVM_ENDPOINT: 'https://api.testnet.evm.eosnetwork.com' + HAPI_EVM_API_ENDPOINTS: '["https://jungle.edenia.cloud","https://jungle4.eosphere.io","https://jungle4.api.eosnation.io","https://jungle4.eossweden.org"]' + HAPI_EVM_NETWORK: EOSIO + HAPI_EVM_NETWORK_CHAIN_ID: 73e4385a2708e6d7048834fbc1079f2fabb17b3c125b146af438971e90716c4d + HAPI_EVM_EOS_EVM_ACCOUNT: eosio.evm + HAPI_EVM_BLOCK_INTERVAL_SEC: 1 + HAPI_EVM_OLD_BLOCK_INTERVAL_SEC: 0.1 + HAPI_EVM_ATH_INTERVAL_SEC: 60 + HAPI_EVM_CLEAN_OLD_BLOCK_INTERVAL_SEC: 86400 + HAPI_EVM_CLEAN_OLD_TRANSFER_INTERVAL_SEC: 86400 + HAPI_EVM_KEEP_HISTORY_FOR_YEARS: 1 + HAPI_EVM_HYPERION_API: https://jungle.eosusa.io + HAPI_EVM_HYPERION_START_AT: 2022-01-01T00:00:00.000+00:00 # hasura HASURA_GRAPHQL_ENABLE_CONSOLE: true HASURA_GRAPHQL_DATABASE_URL: ${{ secrets.HASURA_GRAPHQL_DATABASE_URL }} diff --git a/.github/workflows/deploy-mainnet.yaml b/.github/workflows/deploy-mainnet.yaml index 46381a8d8..6c3ae74bb 100644 --- a/.github/workflows/deploy-mainnet.yaml +++ b/.github/workflows/deploy-mainnet.yaml @@ -64,7 +64,8 @@ jobs: id: build_kubernetes_files run: | make \ - build-kubernetes + build-kubernetes \ + build-kubernetes-evm env: # general NAMESPACE: mainnet-dashboard @@ -104,7 +105,25 @@ jobs: HAPI_EOSRATE_GET_STATS_URL: ${{ secrets.HAPI_EOSRATE_GET_STATS_URL }} HAPI_EOSRATE_GET_STATS_USER: ${{ secrets.HAPI_EOSRATE_GET_STATS_USER }} HAPI_EOSRATE_GET_STATS_PASSWORD: ${{ secrets.HAPI_EOSRATE_GET_STATS_PASSWORD }} - + # hapi-evm + HAPI_EVM_SERVER_PORT: '9090' + HAPI_EVM_SERVER_ADDRESS: '0.0.0.0' + HAPI_EVM_HASURA_URL: 'http://dashboard-hasura:8080/v1/graphql' + HAPI_EVM_HASURA_ADMIN_SECRET: ${{ secrets.HAPI_EVM_HASURA_ADMIN_SECRET }} + HAPI_EVM_DATABASE_URL: ${{ secrets.HAPI_EVM_DATABASE_URL }} + HAPI_EVM_ENDPOINT: 'https://api.evm.eosnetwork.com' + HAPI_EVM_API_ENDPOINTS: '["https://eos.edenia.cloud","https://api.main.alohaeos.com","https://eos.api.eosnation.io","https://eos.greymass.com","https://eos.eosphere.io","https://api.eosrio.io"]' + HAPI_EVM_NETWORK: EOSIO + HAPI_EVM_NETWORK_CHAIN_ID: aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906 + HAPI_EVM_EOS_EVM_ACCOUNT: eosio.evm + HAPI_EVM_BLOCK_INTERVAL_SEC: 1 + HAPI_EVM_OLD_BLOCK_INTERVAL_SEC: 0.1 + HAPI_EVM_ATH_INTERVAL_SEC: 60 + HAPI_EVM_CLEAN_OLD_BLOCK_INTERVAL_SEC: 86400 + HAPI_EVM_CLEAN_OLD_TRANSFER_INTERVAL_SEC: 86400 + HAPI_EVM_KEEP_HISTORY_FOR_YEARS: 1 + HAPI_EVM_HYPERION_API: https://api.eossweden.org + HAPI_EVM_HYPERION_START_AT: 2022-01-01T00:00:00.000+00:00 # hasura HASURA_GRAPHQL_ENABLE_CONSOLE: 'true' HASURA_GRAPHQL_DATABASE_URL: ${{ secrets.HASURA_GRAPHQL_DATABASE_URL }} diff --git a/.github/workflows/deploy-telos-testnet.yaml b/.github/workflows/deploy-telos-testnet.yaml index b45b26f29..0d63bbd6f 100644 --- a/.github/workflows/deploy-telos-testnet.yaml +++ b/.github/workflows/deploy-telos-testnet.yaml @@ -116,6 +116,7 @@ jobs: HAPI_EVM_DATABASE_URL: ${{ secrets.HAPI_EVM_DATABASE_URL }} HAPI_EVM_ENDPOINT: 'https://testnet.telos.net/evm' HAPI_EVM_API_ENDPOINTS: '["https://telos-testnet.edenia.cloud","https://telos-testnet.cryptolions.io","https://testnet.telos.eosrio.io","https://test.telos.eosusa.io"]' + HAPI_EVM_NETWORK: TELOS HAPI_EVM_NETWORK_CHAIN_ID: 1eaa0824707c8c16bd25145493bf062aecddfeb56c736f6ba6397f3195f33c9f HAPI_EVM_EOS_EVM_ACCOUNT: eosio.evm HAPI_EVM_BLOCK_INTERVAL_SEC: 0.5 diff --git a/.github/workflows/deploy-telos.yaml b/.github/workflows/deploy-telos.yaml index 62ed8ccd8..80b9ced48 100644 --- a/.github/workflows/deploy-telos.yaml +++ b/.github/workflows/deploy-telos.yaml @@ -116,6 +116,7 @@ jobs: HAPI_EVM_DATABASE_URL: ${{ secrets.HAPI_EVM_DATABASE_URL }} HAPI_EVM_ENDPOINT: 'https://mainnet.telos.net/evm' HAPI_EVM_API_ENDPOINTS: '["https://telos.greymass.com","https://telos.eosphere.io","telos.caleos.io","mainnet.telosusa.io"]' + HAPI_EVM_NETWORK: TELOS HAPI_EVM_NETWORK_CHAIN_ID: 4667b205c6838ef70ff7988f6e8257e8be0e1284a2f59699054a018f743b1d11 HAPI_EVM_EOS_EVM_ACCOUNT: eosio.evm HAPI_EVM_BLOCK_INTERVAL_SEC: 0.5 diff --git a/kubernetes/configmap-dashboard.yaml b/kubernetes/configmap-dashboard.yaml index 639c4e07b..0d7ed42da 100644 --- a/kubernetes/configmap-dashboard.yaml +++ b/kubernetes/configmap-dashboard.yaml @@ -116,6 +116,7 @@ data: HAPI_EVM_HASURA_ADMIN_SECRET: '${HAPI_EVM_HASURA_ADMIN_SECRET}' HAPI_EVM_DATABASE_URL: '${HAPI_EVM_DATABASE_URL}' HAPI_EVM_ENDPOINT: '${HAPI_EVM_ENDPOINT}' + HAPI_EVM_NETWORK: '${HAPI_EVM_NETWORK}' HAPI_EVM_API_ENDPOINTS: '${HAPI_EVM_API_ENDPOINTS}' HAPI_EVM_NETWORK_CHAIN_ID: '${HAPI_EVM_NETWORK_CHAIN_ID}' HAPI_EVM_EOS_EVM_ACCOUNT: '${HAPI_EVM_EOS_EVM_ACCOUNT}' From 911e1cfa07f210c5392a3b9b88cb0a93f877e13b Mon Sep 17 00:00:00 2001 From: Leister Francisco Alvarado Campos Date: Wed, 1 Nov 2023 21:40:19 -0600 Subject: [PATCH 03/75] perf(evm): update .env.local --- .env.local | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/.env.local b/.env.local index 55b1d3e0b..5b63e2e7c 100644 --- a/.env.local +++ b/.env.local @@ -56,7 +56,27 @@ HAPI_PUBLIC_RE_CAPTCHA_KEY= HAPI_CREATE_ACCOUNT_ACTION_NAME= HAPI_EOS_GET_FAUCET_ACCOUNT= -#webapp +# hapi-evm +HAPI_EVM_SERVER_PORT=9090 +HAPI_EVM_SERVER_ADDRESS=hapi-evm +HAPI_EVM_HASURA_URL=http://hasura:8080/v1/graphql +HAPI_EVM_HASURA_ADMIN_SECRET=myadminsecretkey +HAPI_EVM_DATABASE_URL=postgres://eoscr:password@postgres:5432/localdb +HAPI_EVM_ENDPOINT=https://api.evm.eosnetwork.com +HAPI_EVM_API_ENDPOINTS=["https://eos.edenia.cloud","https://api.main.alohaeos.com","https://eos.api.eosnation.io","https://eos.greymass.com","https://eos.eosphere.io","https://api.eosrio.io"] +HAPI_EVM_NETWORK=EOSIO# EOSIO, TELOS +HAPI_EVM_NETWORK_CHAIN_ID=aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906 +HAPI_EVM_EOS_EVM_ACCOUNT=eosio.evm +HAPI_EVM_BLOCK_INTERVAL_SEC=1 +HAPI_EVM_OLD_BLOCK_INTERVAL_SEC=0.1 +HAPI_EVM_ATH_INTERVAL_SEC=60 +HAPI_EVM_CLEAN_OLD_BLOCK_INTERVAL_SEC=86400 +HAPI_EVM_CLEAN_OLD_TRANSFER_INTERVAL_SEC=86400 +HAPI_EVM_KEEP_HISTORY_FOR_YEARS=1 +HAPI_EVM_HYPERION_API=https://api.eossweden.org +HAPI_EVM_HYPERION_START_AT=2022-01-01T00:00:00.000+00:00 + +# webapp PORT=3000 REACT_APP_VERSION=dev REACT_APP_NAME=$npm_package_name From da4d952406d68556ba3eaaa266d1c41b307378b9 Mon Sep 17 00:00:00 2001 From: Leister Francisco Alvarado Campos Date: Thu, 2 Nov 2023 13:51:09 -0600 Subject: [PATCH 04/75] perf(evm): update hyperion endpoint --- .env.local | 2 +- .github/workflows/deploy-mainnet.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.env.local b/.env.local index 5b63e2e7c..ce26642bf 100644 --- a/.env.local +++ b/.env.local @@ -73,7 +73,7 @@ HAPI_EVM_ATH_INTERVAL_SEC=60 HAPI_EVM_CLEAN_OLD_BLOCK_INTERVAL_SEC=86400 HAPI_EVM_CLEAN_OLD_TRANSFER_INTERVAL_SEC=86400 HAPI_EVM_KEEP_HISTORY_FOR_YEARS=1 -HAPI_EVM_HYPERION_API=https://api.eossweden.org +HAPI_EVM_HYPERION_API=https://eos.eosusa.io HAPI_EVM_HYPERION_START_AT=2022-01-01T00:00:00.000+00:00 # webapp diff --git a/.github/workflows/deploy-mainnet.yaml b/.github/workflows/deploy-mainnet.yaml index 6c3ae74bb..52c229fcd 100644 --- a/.github/workflows/deploy-mainnet.yaml +++ b/.github/workflows/deploy-mainnet.yaml @@ -122,7 +122,7 @@ jobs: HAPI_EVM_CLEAN_OLD_BLOCK_INTERVAL_SEC: 86400 HAPI_EVM_CLEAN_OLD_TRANSFER_INTERVAL_SEC: 86400 HAPI_EVM_KEEP_HISTORY_FOR_YEARS: 1 - HAPI_EVM_HYPERION_API: https://api.eossweden.org + HAPI_EVM_HYPERION_API: https://eos.eosusa.io HAPI_EVM_HYPERION_START_AT: 2022-01-01T00:00:00.000+00:00 # hasura HASURA_GRAPHQL_ENABLE_CONSOLE: 'true' From b5a8b1a2a41584e6aa7772db75637eef19e1c72d Mon Sep 17 00:00:00 2001 From: Leister Francisco Alvarado Campos Date: Thu, 2 Nov 2023 13:55:37 -0600 Subject: [PATCH 05/75] perf(evm): add HASURA_GRAPHQL_ACTION_EVM_URL missing variable --- .env.jungle | 1 + .env.local | 1 + .env.mainnet | 23 +++++++++++++++++++- .github/workflows/deploy-jungle-testnet.yaml | 1 + .github/workflows/deploy-mainnet.yaml | 1 + 5 files changed, 26 insertions(+), 1 deletion(-) diff --git a/.env.jungle b/.env.jungle index 0249458bc..1b71e9908 100644 --- a/.env.jungle +++ b/.env.jungle @@ -17,6 +17,7 @@ HASURA_GRAPHQL_DATABASE_URL=postgres://eoscr:password@postgres:5432/localdb HASURA_GRAPHQL_ADMIN_SECRET=myadminsecretkey HASURA_GRAPHQL_UNAUTHORIZED_ROLE=guest HASURA_GRAPHQL_ACTION_BASE_URL=http://hapi:9090 +HASURA_GRAPHQL_ACTION_EVM_URL=http://hapi-evm:9090 # hapi HAPI_EOS_API_NETWORK_NAME=jungle diff --git a/.env.local b/.env.local index ce26642bf..b9070e6a6 100644 --- a/.env.local +++ b/.env.local @@ -17,6 +17,7 @@ HASURA_GRAPHQL_DATABASE_URL=postgres://eoscr:password@postgres:5432/localdb HASURA_GRAPHQL_ADMIN_SECRET=myadminsecretkey HASURA_GRAPHQL_UNAUTHORIZED_ROLE=guest HASURA_GRAPHQL_ACTION_BASE_URL= +HASURA_GRAPHQL_ACTION_EVM_URL= # hapi HAPI_EOS_API_NETWORK_NAME=lacchain diff --git a/.env.mainnet b/.env.mainnet index 52c7685a1..5d7113908 100644 --- a/.env.mainnet +++ b/.env.mainnet @@ -17,6 +17,7 @@ HASURA_GRAPHQL_DATABASE_URL=postgres://eoscr:password@postgres:5432/localdb HASURA_GRAPHQL_ADMIN_SECRET=myadminsecretkey HASURA_GRAPHQL_UNAUTHORIZED_ROLE=guest HASURA_GRAPHQL_ACTION_BASE_URL=http://hapi:9090 +HASURA_GRAPHQL_ACTION_EVM_URL=http://hapi-evm:9090 # hapi HAPI_EOS_API_NETWORK_NAME=mainnet @@ -56,7 +57,27 @@ HAPI_RE_CAPTCHA_PROJECT_ID= HAPI_PUBLIC_RE_CAPTCHA_KEY= HAPI_CREATE_ACCOUNT_ACTION_NAME= -#webapp +# hapi-evm +HAPI_EVM_SERVER_PORT=9090 +HAPI_EVM_SERVER_ADDRESS=hapi-evm +HAPI_EVM_HASURA_URL=http://hasura:8080/v1/graphql +HAPI_EVM_HASURA_ADMIN_SECRET=myadminsecretkey +HAPI_EVM_DATABASE_URL=postgres://eoscr:password@postgres:5432/localdb +HAPI_EVM_ENDPOINT=https://api.evm.eosnetwork.com +HAPI_EVM_API_ENDPOINTS=["https://eos.edenia.cloud","https://api.main.alohaeos.com","https://eos.api.eosnation.io","https://eos.greymass.com","https://eos.eosphere.io","https://api.eosrio.io"] +HAPI_EVM_NETWORK=EOSIO# EOSIO, TELOS +HAPI_EVM_NETWORK_CHAIN_ID=aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906 +HAPI_EVM_EOS_EVM_ACCOUNT=eosio.evm +HAPI_EVM_BLOCK_INTERVAL_SEC=1 +HAPI_EVM_OLD_BLOCK_INTERVAL_SEC=0.1 +HAPI_EVM_ATH_INTERVAL_SEC=60 +HAPI_EVM_CLEAN_OLD_BLOCK_INTERVAL_SEC=86400 +HAPI_EVM_CLEAN_OLD_TRANSFER_INTERVAL_SEC=86400 +HAPI_EVM_KEEP_HISTORY_FOR_YEARS=1 +HAPI_EVM_HYPERION_API=https://eos.eosusa.io +HAPI_EVM_HYPERION_START_AT=2022-01-01T00:00:00.000+00:00 + +# webapp PORT=3000 REACT_APP_VERSION=dev REACT_APP_NAME=$npm_package_name diff --git a/.github/workflows/deploy-jungle-testnet.yaml b/.github/workflows/deploy-jungle-testnet.yaml index bb720ff5e..000160609 100644 --- a/.github/workflows/deploy-jungle-testnet.yaml +++ b/.github/workflows/deploy-jungle-testnet.yaml @@ -132,6 +132,7 @@ jobs: HASURA_GRAPHQL_ADMIN_SECRET: ${{ secrets.HASURA_GRAPHQL_ADMIN_SECRET }} HASURA_GRAPHQL_UNAUTHORIZED_ROLE: guest HASURA_GRAPHQL_ACTION_BASE_URL: http://dashboard-hapi:9090 + HASURA_GRAPHQL_ACTION_EVM_URL: http://dashboard-hapi-evm:9091 - name: Setup and deploy kubernetes environment uses: steebchen/kubectl@v1.1.0 diff --git a/.github/workflows/deploy-mainnet.yaml b/.github/workflows/deploy-mainnet.yaml index 52c229fcd..086a17af7 100644 --- a/.github/workflows/deploy-mainnet.yaml +++ b/.github/workflows/deploy-mainnet.yaml @@ -130,6 +130,7 @@ jobs: HASURA_GRAPHQL_ADMIN_SECRET: ${{ secrets.HASURA_GRAPHQL_ADMIN_SECRET }} HASURA_GRAPHQL_UNAUTHORIZED_ROLE: guest HASURA_GRAPHQL_ACTION_BASE_URL: http://dashboard-hapi:9090 + HASURA_GRAPHQL_ACTION_EVM_URL: http://dashboard-hapi-evm:9091 - name: Setup and deploy kubernetes environment uses: steebchen/kubectl@v1.1.0 From c493f6110a7dd1deeb09ab9c9b37fb23b705120a Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Fri, 3 Nov 2023 11:56:32 -0600 Subject: [PATCH 06/75] chore: update .env files to enable evm dashboard in eos --- .env.jungle | 2 ++ .env.libre | 2 +- .env.libretestnet | 2 +- .env.mainnet | 2 ++ .env.wax | 2 +- .env.waxtestnet | 2 +- .env.xpr | 2 +- .env.xprtestnet | 2 +- 8 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.env.jungle b/.env.jungle index 1b71e9908..eb117d263 100644 --- a/.env.jungle +++ b/.env.jungle @@ -110,3 +110,5 @@ REACT_APP_GOOGLE_ANALITIC_PAGE_ID=G-E6Y0EC9FT8 REACT_APP_PUBLIC_RE_CAPTCHA_KEY=key REACT_APP_EOS_INCLUDE_TRANSACTION= REACT_APP_EVM_ENDPOINT=https://api.testnet.evm.eosnetwork.com +REACT_APP_EVM_BLOCK_EXPLORER_URL=https://explorer.testnet.evm.eosnetwork.com/(block)/transactions +REACT_APP_EVM_ENDPOINTS=["https://api.testnet.evm.eosnetwork.com"] diff --git a/.env.libre b/.env.libre index 7f577ba26..04eaf3898 100644 --- a/.env.libre +++ b/.env.libre @@ -82,7 +82,7 @@ REACT_APP_EOS_BP_JSON_ON_CHAIN_SCOPE=producerjson REACT_APP_SYNC_TOLERANCE_INTERVAL=180000 REACT_APP_TOKEN_SYMBOL=LIBRE REACT_APP_NETWORK_URL=[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Network Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"pair":"ultra","icon":"ultra","order":6}] -REACT_APP_DISABLED_MENU_ITEMS=["/missed-blocks", "/cpu-benchmark","/block-distribution"] +REACT_APP_DISABLED_MENU_ITEMS=["/missed-blocks", "/cpu-benchmark","/block-distribution","/evm","/evm-rpc-endpoints"] REACT_APP_BLOCK_EXPLORER_URL=https://www.libreblocks.io/tx/(transaction) REACT_APP_STATE_HISTORY_ENABLED=false REACT_APP_GOOGLE_ANALITIC_PAGE_ID=G-E6Y0EC9FT8 diff --git a/.env.libretestnet b/.env.libretestnet index 44b7d5dd2..c0e3827a8 100644 --- a/.env.libretestnet +++ b/.env.libretestnet @@ -82,7 +82,7 @@ REACT_APP_EOS_BP_JSON_ON_CHAIN_SCOPE=producerjson REACT_APP_SYNC_TOLERANCE_INTERVAL=180000 REACT_APP_TOKEN_SYMBOL=LIBRE REACT_APP_NETWORK_URL=[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Network Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"pair":"ultra","icon":"ultra","order":6}] -REACT_APP_DISABLED_MENU_ITEMS=["/missed-blocks","/block-distribution"] +REACT_APP_DISABLED_MENU_ITEMS=["/missed-blocks","/block-distribution","/evm","/evm-rpc-endpoints"] REACT_APP_BLOCK_EXPLORER_URL=https://libre-testnet-explorer.edenia.cloud/transaction/(transaction) REACT_APP_STATE_HISTORY_ENABLED=false REACT_APP_GOOGLE_ANALITIC_PAGE_ID=G-E6Y0EC9FT8 diff --git a/.env.mainnet b/.env.mainnet index 5d7113908..18f9ea3c4 100644 --- a/.env.mainnet +++ b/.env.mainnet @@ -110,3 +110,5 @@ REACT_APP_GOOGLE_ANALITIC_PAGE_ID=G-E6Y0EC9FT8 REACT_APP_PUBLIC_RE_CAPTCHA_KEY=key REACT_APP_EOS_INCLUDE_TRANSACTION= REACT_APP_EVM_ENDPOINT='https://api.evm.eosnetwork.com' +REACT_APP_EVM_BLOCK_EXPLORER_URL=https://explorer.evm.eosnetwork.com/block/(block)/transactions +REACT_APP_EVM_ENDPOINTS=["https://api.evm.eosnetwork.com"] diff --git a/.env.wax b/.env.wax index db4893115..2b484d458 100644 --- a/.env.wax +++ b/.env.wax @@ -85,7 +85,7 @@ REACT_APP_EOS_BP_JSON_ON_CHAIN_SCOPE=producerjson REACT_APP_SYNC_TOLERANCE_INTERVAL=180000 REACT_APP_TOKEN_SYMBOL=WAX REACT_APP_NETWORK_URL=[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Network Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"pair":"ultra","icon":"ultra","order":6}] -REACT_APP_DISABLED_MENU_ITEMS=["/missed-blocks", "/cpu-benchmark","/block-distribution"] +REACT_APP_DISABLED_MENU_ITEMS=["/missed-blocks", "/cpu-benchmark","/block-distribution","/evm","/evm-rpc-endpoints"] REACT_APP_BLOCK_EXPLORER_URL=https://wax.bloks.io/transaction/(transaction) REACT_APP_STATE_HISTORY_ENABLED=false REACT_APP_GOOGLE_ANALITIC_PAGE_ID=G-E6Y0EC9FT8 diff --git a/.env.waxtestnet b/.env.waxtestnet index 1671657d8..4d65d2bb2 100644 --- a/.env.waxtestnet +++ b/.env.waxtestnet @@ -82,7 +82,7 @@ REACT_APP_EOS_BP_JSON_ON_CHAIN_SCOPE=producerjson REACT_APP_SYNC_TOLERANCE_INTERVAL=180000 REACT_APP_TOKEN_SYMBOL=WAX REACT_APP_NETWORK_URL=[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Network Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"pair":"ultra","icon":"ultra","order":6}] -REACT_APP_DISABLED_MENU_ITEMS=["/missed-blocks", "/cpu-benchmark","/block-distribution"] +REACT_APP_DISABLED_MENU_ITEMS=["/missed-blocks", "/cpu-benchmark","/block-distribution","/evm","/evm-rpc-endpoints"] REACT_APP_BLOCK_EXPLORER_URL=https://wax-test.bloks.io/transaction/(transaction) REACT_APP_STATE_HISTORY_ENABLED=false REACT_APP_GOOGLE_ANALITIC_PAGE_ID=G-E6Y0EC9FT8 diff --git a/.env.xpr b/.env.xpr index cf35e6293..97f5cd4f9 100644 --- a/.env.xpr +++ b/.env.xpr @@ -82,7 +82,7 @@ REACT_APP_EOS_BP_JSON_ON_CHAIN_SCOPE=producerjson REACT_APP_SYNC_TOLERANCE_INTERVAL=180000 REACT_APP_TOKEN_SYMBOL=XPR REACT_APP_NETWORK_URL=[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Network Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"pair":"ultra","icon":"ultra","order":6}] -REACT_APP_DISABLED_MENU_ITEMS=["/missed-blocks","/block-distribution","/cpu-benchmark"] +REACT_APP_DISABLED_MENU_ITEMS=["/missed-blocks","/block-distribution","/cpu-benchmark","/evm","/evm-rpc-endpoints"] REACT_APP_BLOCK_EXPLORER_URL=https://www.protonscan.io/transaction/(transaction) REACT_APP_STATE_HISTORY_ENABLED=false REACT_APP_GOOGLE_ANALITIC_PAGE_ID=G-E6Y0EC9FT8 diff --git a/.env.xprtestnet b/.env.xprtestnet index f06c40fca..451d4d939 100644 --- a/.env.xprtestnet +++ b/.env.xprtestnet @@ -81,7 +81,7 @@ REACT_APP_EOS_BP_JSON_ON_CHAIN_SCOPE=producerjson REACT_APP_SYNC_TOLERANCE_INTERVAL=180000 REACT_APP_TOKEN_SYMBOL=XPR REACT_APP_NETWORK_URL=[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Network Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"pair":"ultra","icon":"ultra","order":6}] -REACT_APP_DISABLED_MENU_ITEMS=["/missed-blocks","/block-distribution","/cpu-benchmark"] +REACT_APP_DISABLED_MENU_ITEMS=["/missed-blocks","/block-distribution","/cpu-benchmark","/evm","/evm-rpc-endpoints"] REACT_APP_BLOCK_EXPLORER_URL=https://testnet.protonscan.io/transaction/(transaction) REACT_APP_STATE_HISTORY_ENABLED=false REACT_APP_GOOGLE_ANALITIC_PAGE_ID=G-E6Y0EC9FT8 From 8cea2eb3caccf2066ca1d4ec046cb8f3579cd778 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Fri, 3 Nov 2023 11:59:29 -0600 Subject: [PATCH 07/75] feat(workflows): enable evm dashboard routes for eos --- .github/workflows/deploy-jungle-testnet.yaml | 4 +++- .github/workflows/deploy-mainnet.yaml | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy-jungle-testnet.yaml b/.github/workflows/deploy-jungle-testnet.yaml index 000160609..cdc2e781b 100644 --- a/.github/workflows/deploy-jungle-testnet.yaml +++ b/.github/workflows/deploy-jungle-testnet.yaml @@ -52,12 +52,14 @@ jobs: REACT_APP_SYNC_TOLERANCE_INTERVAL: 180000 REACT_APP_TOKEN_SYMBOL: 'EOS' REACT_APP_NETWORK_URL: '[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"icon":"ultra","order":6}]' - REACT_APP_DISABLED_MENU_ITEMS: '["/missed-blocks","/block-distribution","/stress-test","/evm","/evm-rpc-endpoints"]' + REACT_APP_DISABLED_MENU_ITEMS: '["/missed-blocks","/block-distribution","/stress-test"]' REACT_APP_BLOCK_EXPLORER_URL: 'https://jungle4.eosq.eosnation.io/tx/(transaction)' REACT_APP_STATE_HISTORY_ENABLED: 'false' REACT_APP_GOOGLE_ANALITIC_PAGE_ID: 'G-E6Y0EC9FT8' REACT_APP_PUBLIC_RE_CAPTCHA_KEY: ${{ secrets.REACT_APP_PUBLIC_RE_CAPTCHA_KEY }} REACT_APP_EVM_ENDPOINT: 'https://api.testnet.evm.eosnetwork.com' + REACT_APP_EVM_BLOCK_EXPLORER_URL: 'https://explorer.testnet.evm.eosnetwork.com/(block)/transactions' + REACT_APP_EVM_ENDPOINTS: '["https://api.testnet.evm.eosnetwork.com"]' - name: Build kubernetes files id: build_kubernetes_files diff --git a/.github/workflows/deploy-mainnet.yaml b/.github/workflows/deploy-mainnet.yaml index 086a17af7..04af36a29 100644 --- a/.github/workflows/deploy-mainnet.yaml +++ b/.github/workflows/deploy-mainnet.yaml @@ -53,12 +53,14 @@ jobs: REACT_APP_EOS_API_NETWORK_LOGO: 'https://antelope.tools/images/eos.png' REACT_APP_TOKEN_SYMBOL: 'EOS' REACT_APP_NETWORK_URL: '[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"icon":"ultra","order":6}]' - REACT_APP_DISABLED_MENU_ITEMS: '["/missed-blocks", "/cpu-benchmark","/block-distribution","/stress-test","/evm","/evm-rpc-endpoints"]' + REACT_APP_DISABLED_MENU_ITEMS: '["/missed-blocks", "/cpu-benchmark","/block-distribution","/stress-test"]' REACT_APP_BLOCK_EXPLORER_URL: 'https://bloks.io/transaction/(transaction)' REACT_APP_STATE_HISTORY_ENABLED: 'false' REACT_APP_GOOGLE_ANALITIC_PAGE_ID: 'G-E6Y0EC9FT8' REACT_APP_PUBLIC_RE_CAPTCHA_KEY: ${{ secrets.REACT_APP_PUBLIC_RE_CAPTCHA_KEY }} REACT_APP_EVM_ENDPOINT: 'https://api.evm.eosnetwork.com' + REACT_APP_EVM_BLOCK_EXPLORER_URL: 'https://explorer.evm.eosnetwork.com/block/(block)/transactions' + REACT_APP_EVM_ENDPOINTS: '["https://api.evm.eosnetwork.com"]' - name: Build and deploy kubernetes files id: build_kubernetes_files From cc14eb4d87550d81fa58f6e2d7a771459f1cacc0 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Fri, 3 Nov 2023 12:00:47 -0600 Subject: [PATCH 08/75] feat(webapp): add evm routes for eos in the sitemaps --- webapp/public/sitemap.jungle.xml | 8 ++++++++ webapp/public/sitemap.mainnet.xml | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/webapp/public/sitemap.jungle.xml b/webapp/public/sitemap.jungle.xml index 18682c272..92bddbe2c 100644 --- a/webapp/public/sitemap.jungle.xml +++ b/webapp/public/sitemap.jungle.xml @@ -39,6 +39,14 @@ https://jungle.antelope.tools/ricardian-contract 2023-09-30 + + https://jungle.antelope.tools/evm + 2023-11-04 + + + https://jungle.antelope.tools/evm-rpc-endpoints + 2023-11-04 + https://jungle.antelope.tools/accounts 2023-09-30 diff --git a/webapp/public/sitemap.mainnet.xml b/webapp/public/sitemap.mainnet.xml index ded98a18f..5ed326b62 100644 --- a/webapp/public/sitemap.mainnet.xml +++ b/webapp/public/sitemap.mainnet.xml @@ -35,6 +35,14 @@ https://eos.antelope.tools/ricardian-contract 2023-09-30 + + https://eos.antelope.tools/evm + 2023-11-06 + + + https://eos.antelope.tools/evm-rpc-endpoints + 2023-11-06 + https://eos.antelope.tools/accounts 2023-09-30 From 87d29cd135f897ac0a9349ae78c56c8d4327d9dc Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Fri, 3 Nov 2023 12:03:19 -0600 Subject: [PATCH 09/75] chore(webapp): update evm last block card with every request --- webapp/src/routes/EVMDashboard/useEVMstate.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/webapp/src/routes/EVMDashboard/useEVMstate.js b/webapp/src/routes/EVMDashboard/useEVMstate.js index f048d9410..5bdc1d745 100644 --- a/webapp/src/routes/EVMDashboard/useEVMstate.js +++ b/webapp/src/routes/EVMDashboard/useEVMstate.js @@ -85,11 +85,8 @@ const useEVMState = t => { useEffect(() => { const updateStats = async () => { - const lastBlock = await ethApi.getLastBlock() - setEVMStats(prev => ({ ...prev, - last_block: lastBlock, ...(historicalStats && historicalStats.evm_historical_stats[0]), ...(stats && stats.evm_stats[0]), })) @@ -190,6 +187,11 @@ const useEVMState = t => { blockNum = await ethApi.getLastBlock() } + setEVMStats(prev => ({ + ...prev, + last_block: blockNum, + })) + if (!pauseRef.current) { ethApi.getBlock(blockNum).then(block => { setBlockList(prev => { From 3f6bbc8634a72298035f1503034e3c614245f897 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Fri, 3 Nov 2023 13:48:38 -0600 Subject: [PATCH 10/75] chore(webapp): add HAPI_EVM_NETWORK to env files --- .env.telos | 1 + .env.telostestnet | 1 + .env.ultratestnet | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.env.telos b/.env.telos index 665074c8e..952df2ffb 100644 --- a/.env.telos +++ b/.env.telos @@ -65,6 +65,7 @@ HAPI_EVM_DATABASE_URL=postgres://eoscr:password@postgres:5432/localdb HAPI_EVM_ENDPOINT=https://mainnet.telos.net/evm HAPI_EVM_API_ENDPOINTS=["https://telos.greymass.com","https://telos.eosphere.io","telos.caleos.io","mainnet.telosusa.io"] HAPI_EVM_NETWORK_CHAIN_ID=4667b205c6838ef70ff7988f6e8257e8be0e1284a2f59699054a018f743b1d11 +HAPI_EVM_NETWORK=TELOS HAPI_EVM_EOS_EVM_ACCOUNT=eosio.evm HAPI_EVM_BLOCK_INTERVAL_SEC=0.5 HAPI_EVM_OLD_BLOCK_INTERVAL_SEC=0.1 diff --git a/.env.telostestnet b/.env.telostestnet index 7e272d30d..16db4c07d 100644 --- a/.env.telostestnet +++ b/.env.telostestnet @@ -66,6 +66,7 @@ HAPI_EVM_DATABASE_URL=postgres://eoscr:password@postgres:5432/localdb HAPI_EVM_ENDPOINT=https://testnet.telos.net/evm HAPI_EVM_API_ENDPOINTS=["https://telos-testnet.edenia.cloud","https://telos-testnet.cryptolions.io","https://testnet.telos.eosrio.io","https://test.telos.eosusa.io"] HAPI_EVM_NETWORK_CHAIN_ID=1eaa0824707c8c16bd25145493bf062aecddfeb56c736f6ba6397f3195f33c9f +HAPI_EVM_NETWORK=TELOS HAPI_EVM_EOS_EVM_ACCOUNT=eosio.evm HAPI_EVM_BLOCK_INTERVAL_SEC=0.5 HAPI_EVM_OLD_BLOCK_INTERVAL_SEC=0.1 diff --git a/.env.ultratestnet b/.env.ultratestnet index b4afef4c6..7b15f1eaf 100644 --- a/.env.ultratestnet +++ b/.env.ultratestnet @@ -83,7 +83,7 @@ REACT_APP_EOS_BP_JSON_ON_CHAIN_SCOPE=producerjson REACT_APP_SYNC_TOLERANCE_INTERVAL=180000 REACT_APP_TOKEN_SYMBOL=UOS REACT_APP_NETWORK_URL=[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"pair":"ultra","icon":"ultra","order":6}] -REACT_APP_DISABLED_MENU_ITEMS=["/block-producers","/nodes","/missed-blocks","/endpoints","/bpjson","/ricardian-contract","/block-distribution","/nodes-distribution","/cpu-benchmark","/rewards-distribution","/endpoints-stats"] +REACT_APP_DISABLED_MENU_ITEMS=["/block-producers","/nodes","/missed-blocks","/endpoints","/bpjson","/ricardian-contract","/block-distribution","/nodes-distribution","/cpu-benchmark","/rewards-distribution","/endpoints-stats","/evm","/evm-rpc-endpoints"] REACT_APP_BLOCK_EXPLORER_URL=https://explorer.testnet.ultra.io/tx/(transaction) REACT_APP_STATE_HISTORY_ENABLED=false REACT_APP_GOOGLE_ANALITIC_PAGE_ID=G-E6Y0EC9FT8 From 431bc737b97e52c80a06146a62db63eec51a1d30 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Mon, 6 Nov 2023 10:57:43 -0600 Subject: [PATCH 11/75] fix(workflows): fix jungle evm explorer url --- .github/workflows/deploy-jungle-testnet.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-jungle-testnet.yaml b/.github/workflows/deploy-jungle-testnet.yaml index cdc2e781b..eeacfa597 100644 --- a/.github/workflows/deploy-jungle-testnet.yaml +++ b/.github/workflows/deploy-jungle-testnet.yaml @@ -58,7 +58,7 @@ jobs: REACT_APP_GOOGLE_ANALITIC_PAGE_ID: 'G-E6Y0EC9FT8' REACT_APP_PUBLIC_RE_CAPTCHA_KEY: ${{ secrets.REACT_APP_PUBLIC_RE_CAPTCHA_KEY }} REACT_APP_EVM_ENDPOINT: 'https://api.testnet.evm.eosnetwork.com' - REACT_APP_EVM_BLOCK_EXPLORER_URL: 'https://explorer.testnet.evm.eosnetwork.com/(block)/transactions' + REACT_APP_EVM_BLOCK_EXPLORER_URL: 'https://explorer.testnet.evm.eosnetwork.com/block/(block)/transactions' REACT_APP_EVM_ENDPOINTS: '["https://api.testnet.evm.eosnetwork.com"]' - name: Build kubernetes files From 03e7d242115ed8f752c1ac0f07d4e3c22ab4ba6c Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Mon, 6 Nov 2023 10:59:12 -0600 Subject: [PATCH 12/75] feat(webapp): add eos evm total wallets created --- webapp/src/language/en.json | 1 + webapp/src/language/es.json | 1 + webapp/src/routes/EVMDashboard/index.js | 3 +++ webapp/src/routes/EVMDashboard/useEVMstate.js | 2 +- 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/webapp/src/language/en.json b/webapp/src/language/en.json index 075b3e3cf..2532b982c 100644 --- a/webapp/src/language/en.json +++ b/webapp/src/language/en.json @@ -522,6 +522,7 @@ "transactions": "EVM transactions", "gasUsed": "Gas Used", "tooltip": { + "totalWallets": "EVM active addresses of the account table from {{accountName}} contract", "gasPrice": "The cost of computational work in EVM, measured in Gas", "avgGasUsage": "Average Gas Consumed Over the Last 100 Blocks", "totalIncoming": "Total Transfers Received by {{accountName}}", diff --git a/webapp/src/language/es.json b/webapp/src/language/es.json index 7df2b3ce1..cf104da37 100644 --- a/webapp/src/language/es.json +++ b/webapp/src/language/es.json @@ -540,6 +540,7 @@ "transactions": "Transacciones EVM", "gasUsed": "Gas Usado", "tooltip": { + "totalWallets": "Direcciones del EVM activas de la tabla account del contrato {{accountName}}", "gasPrice": "Combustible virtual usado para ejecutar contratos inteligentes en EVM", "avgGasUsage": "Gas promedio utilizado en los últimos 100 bloques", "totalIncoming": "Cantidad de transacciones transfer hacia {{accountName}}", diff --git a/webapp/src/routes/EVMDashboard/index.js b/webapp/src/routes/EVMDashboard/index.js index 1352461d8..54de327ab 100644 --- a/webapp/src/routes/EVMDashboard/index.js +++ b/webapp/src/routes/EVMDashboard/index.js @@ -183,6 +183,9 @@ const EVMDashboard = () => { /> { lower_bound: null, }) - return rows[0]?.index + 1 + return rows[0]?.index + 1 || rows[0]?.id + 1 } catch (error) {} } From 92134c49a48ffbb9d9c819544e2d32b464f86cb0 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Mon, 6 Nov 2023 11:37:40 -0600 Subject: [PATCH 13/75] fix(webapp): fix evm block url --- webapp/src/utils/get-evmblocknum-url.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/src/utils/get-evmblocknum-url.js b/webapp/src/utils/get-evmblocknum-url.js index 282e0bbe1..ae780ebf0 100644 --- a/webapp/src/utils/get-evmblocknum-url.js +++ b/webapp/src/utils/get-evmblocknum-url.js @@ -5,7 +5,7 @@ export const getEVMBlockNumUrl = blockNum => { return } - return evmConfig.blockExplorerUrl.replace('(block)', blockNum) + return evmConfig.blockExplorerUrl.replace('(block)', parseInt(blockNum)) } export default getEVMBlockNumUrl From 6def8e3f8bf091c4bf4c0c11b65e8d2df865c288 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 7 Nov 2023 09:30:45 -0600 Subject: [PATCH 14/75] fix(workflows): fix xpr block explorer url --- .github/workflows/deploy-xpr.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-xpr.yaml b/.github/workflows/deploy-xpr.yaml index 46a876d15..08e186d8b 100644 --- a/.github/workflows/deploy-xpr.yaml +++ b/.github/workflows/deploy-xpr.yaml @@ -57,7 +57,7 @@ jobs: REACT_APP_TOKEN_SYMBOL: 'XPR' REACT_APP_NETWORK_URL: '[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"icon":"ultra","order":6}]' REACT_APP_DISABLED_MENU_ITEMS: '["/missed-blocks","/block-distribution","/stress-test","/evm","/evm-rpc-endpoints"]' - REACT_APP_BLOCK_EXPLORER_URL: 'https://explorer.xprnetwork.org//transaction/(transaction)' + REACT_APP_BLOCK_EXPLORER_URL: 'https://explorer.xprnetwork.org/transaction/(transaction)' REACT_APP_STATE_HISTORY_ENABLED: 'false' REACT_APP_GOOGLE_ANALITIC_PAGE_ID: 'G-E6Y0EC9FT8' REACT_APP_PUBLIC_RE_CAPTCHA_KEY: ${{ secrets.REACT_APP_PUBLIC_RE_CAPTCHA_KEY }} From 8abe72d4b15aaac121c34179ee02b0263bcbf098 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 7 Nov 2023 09:31:36 -0600 Subject: [PATCH 15/75] chore(webapp): remove wrong colors from dark theme --- webapp/src/theme/variants.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/webapp/src/theme/variants.js b/webapp/src/theme/variants.js index dd50c3dcb..b1a7f6331 100644 --- a/webapp/src/theme/variants.js +++ b/webapp/src/theme/variants.js @@ -122,8 +122,6 @@ const darkVariant = { }, secondary: { main: '#00C853', - light: '#F3E5F5', - dark: '#AB47BC', contrastText: 'rgba(0, 0, 0, 0.87)', }, text: { From 7881383cc95f7afe13e3823f5b0c0cbe27b8d7e3 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 7 Nov 2023 09:32:25 -0600 Subject: [PATCH 16/75] fix(webapp): fix load more when reverse table is active --- webapp/src/components/ContractTables/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webapp/src/components/ContractTables/index.js b/webapp/src/components/ContractTables/index.js index 38a28e81f..10c0a0b10 100644 --- a/webapp/src/components/ContractTables/index.js +++ b/webapp/src/components/ContractTables/index.js @@ -96,8 +96,8 @@ const ContractTables = ({ key_type: filters.keyType, index_position: filters.index, reverse: filters.reverse, - lower_bound: nextKey || filters.lowerBound, - upper_bound: filters.upperBound, + lower_bound: !filters.reverse ? nextKey : filters.lowerBound, + upper_bound: filters.reverse ? nextKey : filters.upperBound, loadMore: !!nextKey, }) }, From f775152b4162deb5114629f01cfd5190605c12f8 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 7 Nov 2023 16:29:27 -0600 Subject: [PATCH 17/75] feat(workflows): use an object to set block explorer urls --- .github/workflows/deploy-jungle-testnet.yaml | 2 +- .github/workflows/deploy-lacchain.yaml | 2 +- .github/workflows/deploy-libre-testnet.yaml | 2 +- .github/workflows/deploy-libre.yaml | 4 ++-- .github/workflows/deploy-mainnet.yaml | 2 +- .github/workflows/deploy-telos-testnet.yaml | 2 +- .github/workflows/deploy-telos.yaml | 2 +- .github/workflows/deploy-ultra-testnet.yaml | 2 +- .github/workflows/deploy-wax-testnet.yaml | 2 +- .github/workflows/deploy-wax.yaml | 2 +- .github/workflows/deploy-xpr-testnet.yaml | 2 +- .github/workflows/deploy-xpr.yaml | 2 +- 12 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/deploy-jungle-testnet.yaml b/.github/workflows/deploy-jungle-testnet.yaml index eeacfa597..c7119ad1a 100644 --- a/.github/workflows/deploy-jungle-testnet.yaml +++ b/.github/workflows/deploy-jungle-testnet.yaml @@ -53,7 +53,7 @@ jobs: REACT_APP_TOKEN_SYMBOL: 'EOS' REACT_APP_NETWORK_URL: '[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"icon":"ultra","order":6}]' REACT_APP_DISABLED_MENU_ITEMS: '["/missed-blocks","/block-distribution","/stress-test"]' - REACT_APP_BLOCK_EXPLORER_URL: 'https://jungle4.eosq.eosnation.io/tx/(transaction)' + REACT_APP_BLOCK_EXPLORER_URL: '{"url": "https://jungle4.eosq.eosnation.io", "tx": "/tx/(transaction)", "account": {"url":"/account/","abi":"/abi","actions":""}}' REACT_APP_STATE_HISTORY_ENABLED: 'false' REACT_APP_GOOGLE_ANALITIC_PAGE_ID: 'G-E6Y0EC9FT8' REACT_APP_PUBLIC_RE_CAPTCHA_KEY: ${{ secrets.REACT_APP_PUBLIC_RE_CAPTCHA_KEY }} diff --git a/.github/workflows/deploy-lacchain.yaml b/.github/workflows/deploy-lacchain.yaml index 54e5d7c7b..b3a652b11 100644 --- a/.github/workflows/deploy-lacchain.yaml +++ b/.github/workflows/deploy-lacchain.yaml @@ -55,7 +55,7 @@ jobs: REACT_APP_TOKEN_SYMBOL: '' REACT_APP_NETWORK_URL: '[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"icon":"ultra","order":6}]' REACT_APP_DISABLED_MENU_ITEMS: '["/undiscoverable-bps","/stress-test","/evm","/evm-rpc-endpoints"]' - REACT_APP_BLOCK_EXPLORER_URL: 'https://eosio-explorer.lacchain.net/transaction/(transaction)' + REACT_APP_BLOCK_EXPLORER_URL: '{"url": "https://eosio-explorer.lacchain.net", "tx": "/transaction/(transaction)", "account": {"url":"/account/","abi":"","actions":""}}' REACT_APP_STATE_HISTORY_ENABLED: 'true' REACT_APP_GOOGLE_ANALITIC_PAGE_ID: 'G-E6Y0EC9FT8' REACT_APP_PUBLIC_RE_CAPTCHA_KEY: ${{ secrets.REACT_APP_PUBLIC_RE_CAPTCHA_KEY }} diff --git a/.github/workflows/deploy-libre-testnet.yaml b/.github/workflows/deploy-libre-testnet.yaml index 26247ed86..f0e810349 100644 --- a/.github/workflows/deploy-libre-testnet.yaml +++ b/.github/workflows/deploy-libre-testnet.yaml @@ -57,7 +57,7 @@ jobs: REACT_APP_TOKEN_SYMBOL: 'LIBRE' REACT_APP_NETWORK_URL: '[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"icon":"ultra","order":6}]' REACT_APP_DISABLED_MENU_ITEMS: '["/evm","/evm-rpc-endpoints"]' - REACT_APP_BLOCK_EXPLORER_URL: 'https://testnet.libre.org/v2/explore/transaction/(transaction)' + REACT_APP_BLOCK_EXPLORER_URL: '{"url": "https://testnet.libre.org/v2/explore", "tx": "/transaction/(transaction)", "account": {"url":"/account/","abi":"","actions":""}}' REACT_APP_STATE_HISTORY_ENABLED: 'true' REACT_APP_GOOGLE_ANALITIC_PAGE_ID: 'G-E6Y0EC9FT8' REACT_APP_PUBLIC_RE_CAPTCHA_KEY: ${{ secrets.REACT_APP_PUBLIC_RE_CAPTCHA_KEY }} diff --git a/.github/workflows/deploy-libre.yaml b/.github/workflows/deploy-libre.yaml index 1824a52aa..58958bed1 100644 --- a/.github/workflows/deploy-libre.yaml +++ b/.github/workflows/deploy-libre.yaml @@ -37,7 +37,7 @@ jobs: REACT_APP_TITLE: 'Libre Network Dashboard' REACT_APP_VERSION: ${{github.ref}} REACT_APP_DEFAULT_PRODUCER_LOGO: 'https://antelope.tools/images/libre.png' - REACT_APP_FOOTER_LINKS: '[{ "text": "Libre Website", "src": "https://libre.org/" },{ "text": "Libre Block Explorer", "src": "https://www.libreblocks.io/" },{"text": "Documentation","src": "https://libre-chain.gitbook.io/"},{"text": "Libre Network Monitor","src": "https://libre.antelope.tools"}]' + REACT_APP_FOOTER_LINKS: '[{ "text": "Libre Website", "src": "https://libre.org/" },{ "text": "Libre Block Explorer", "src": "https://libre-explorer.edenia.cloud/" },{"text": "Documentation","src": "https://libre-chain.gitbook.io/"},{"text": "Libre Network Monitor","src": "https://libre.antelope.tools"}]' REACT_APP_EOS_RATE_LINK: '' REACT_APP_USE_REWARDS: 'true' REACT_APP_USE_VOTES: 'true' @@ -57,7 +57,7 @@ jobs: REACT_APP_TOKEN_SYMBOL: 'LIBRE' REACT_APP_NETWORK_URL: '[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"icon":"ultra","order":6}]' REACT_APP_DISABLED_MENU_ITEMS: '["/stress-test","/evm","/evm-rpc-endpoints"]' - REACT_APP_BLOCK_EXPLORER_URL: 'https://www.libreblocks.io/tx/(transaction)' + REACT_APP_BLOCK_EXPLORER_URL: '{"url": "https://libre-explorer.edenia.cloud", "tx": "/tx/(transaction)", "account": {"url":"/address/","abi":"","actions":""}}' REACT_APP_STATE_HISTORY_ENABLED: 'true' REACT_APP_GOOGLE_ANALITIC_PAGE_ID: 'G-E6Y0EC9FT8' REACT_APP_PUBLIC_RE_CAPTCHA_KEY: ${{ secrets.REACT_APP_PUBLIC_RE_CAPTCHA_KEY }} diff --git a/.github/workflows/deploy-mainnet.yaml b/.github/workflows/deploy-mainnet.yaml index 04af36a29..ab0291349 100644 --- a/.github/workflows/deploy-mainnet.yaml +++ b/.github/workflows/deploy-mainnet.yaml @@ -54,7 +54,7 @@ jobs: REACT_APP_TOKEN_SYMBOL: 'EOS' REACT_APP_NETWORK_URL: '[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"icon":"ultra","order":6}]' REACT_APP_DISABLED_MENU_ITEMS: '["/missed-blocks", "/cpu-benchmark","/block-distribution","/stress-test"]' - REACT_APP_BLOCK_EXPLORER_URL: 'https://bloks.io/transaction/(transaction)' + REACT_APP_BLOCK_EXPLORER_URL: '{"url": "https://bloks.io", "tx": "/transaction/(transaction)", "account": {"url":"/account/","abi":"?loadContract=true&tab=ABI","actions":"?loadContract=true&tab=Actions"}}' REACT_APP_STATE_HISTORY_ENABLED: 'false' REACT_APP_GOOGLE_ANALITIC_PAGE_ID: 'G-E6Y0EC9FT8' REACT_APP_PUBLIC_RE_CAPTCHA_KEY: ${{ secrets.REACT_APP_PUBLIC_RE_CAPTCHA_KEY }} diff --git a/.github/workflows/deploy-telos-testnet.yaml b/.github/workflows/deploy-telos-testnet.yaml index 0d63bbd6f..798875e3c 100644 --- a/.github/workflows/deploy-telos-testnet.yaml +++ b/.github/workflows/deploy-telos-testnet.yaml @@ -57,7 +57,7 @@ jobs: REACT_APP_TOKEN_SYMBOL: 'TLOS' REACT_APP_NETWORK_URL: '[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"icon":"ultra","order":6}]' REACT_APP_DISABLED_MENU_ITEMS: '["/missed-blocks", "/cpu-benchmark","/block-distribution","/stress-test"]' - REACT_APP_BLOCK_EXPLORER_URL: 'https://explorer-test.telos.net/transaction/(transaction)' + REACT_APP_BLOCK_EXPLORER_URL: '{"url": "https://explorer-test.telos.net", "tx": "/transaction/(transaction)", "account": {"url":"/account/","abi":"?tab=contract&tab1=abi","actions":"?tab=contract&tab1=actions"}}' REACT_APP_STATE_HISTORY_ENABLED=: 'false' REACT_APP_GOOGLE_ANALITIC_PAGE_ID: 'G-E6Y0EC9FT8' REACT_APP_PUBLIC_RE_CAPTCHA_KEY: ${{ secrets.REACT_APP_PUBLIC_RE_CAPTCHA_KEY }} diff --git a/.github/workflows/deploy-telos.yaml b/.github/workflows/deploy-telos.yaml index 80b9ced48..94f644ff0 100644 --- a/.github/workflows/deploy-telos.yaml +++ b/.github/workflows/deploy-telos.yaml @@ -57,7 +57,7 @@ jobs: REACT_APP_TOKEN_SYMBOL: 'TLOS' REACT_APP_NETWORK_URL: '[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"icon":"ultra","order":6}]' REACT_APP_DISABLED_MENU_ITEMS: '["/missed-blocks", "/cpu-benchmark","/block-distribution","/stress-test"]' - REACT_APP_BLOCK_EXPLORER_URL: 'https://explorer.telos.net/transaction/(transaction)' + REACT_APP_BLOCK_EXPLORER_URL: '{"url": "https://explorer.telos.net", "tx": "/transaction/(transaction)", "account": {"url":"/account/","abi":"?tab=contract&tab1=abi","actions":"?tab=contract&tab1=actions"}}' REACT_APP_STATE_HISTORY_ENABLED=: 'false' REACT_APP_GOOGLE_ANALITIC_PAGE_ID: 'G-E6Y0EC9FT8' REACT_APP_PUBLIC_RE_CAPTCHA_KEY: ${{ secrets.REACT_APP_PUBLIC_RE_CAPTCHA_KEY }} diff --git a/.github/workflows/deploy-ultra-testnet.yaml b/.github/workflows/deploy-ultra-testnet.yaml index 116f040c8..4d7a40c0a 100644 --- a/.github/workflows/deploy-ultra-testnet.yaml +++ b/.github/workflows/deploy-ultra-testnet.yaml @@ -57,7 +57,7 @@ jobs: REACT_APP_TOKEN_SYMBOL: 'UOS' REACT_APP_NETWORK_URL: '[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"icon":"ultra","order":6}]' REACT_APP_DISABLED_MENU_ITEMS: '["/block-producers","/nodes","/missed-blocks","/endpoints","/bpjson","/ricardian-contract","/block-distribution","/nodes-distribution","/cpu-benchmark","/rewards-distribution","/undiscoverable-bps","/endpoints-stats","/stress-test","/evm","/evm-rpc-endpoints"]' - REACT_APP_BLOCK_EXPLORER_URL: 'https://explorer.testnet.ultra.io/tx/(transaction)' + REACT_APP_BLOCK_EXPLORER_URL: '{"url": "https://explorer.testnet.ultra.io", "tx": "/tx/(transaction)"}' REACT_APP_STATE_HISTORY_ENABLED: 'false' REACT_APP_GOOGLE_ANALITIC_PAGE_ID: 'G-E6Y0EC9FT8' REACT_APP_PUBLIC_RE_CAPTCHA_KEY: ${{ secrets.REACT_APP_PUBLIC_RE_CAPTCHA_KEY }} diff --git a/.github/workflows/deploy-wax-testnet.yaml b/.github/workflows/deploy-wax-testnet.yaml index 1db7a60ae..1f3b1d37b 100644 --- a/.github/workflows/deploy-wax-testnet.yaml +++ b/.github/workflows/deploy-wax-testnet.yaml @@ -57,7 +57,7 @@ jobs: REACT_APP_TOKEN_SYMBOL: 'WAX' REACT_APP_NETWORK_URL: '[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"icon":"ultra","order":6}]' REACT_APP_DISABLED_MENU_ITEMS: '["/missed-blocks", "/cpu-benchmark","/block-distribution","/stress-test","/evm","/evm-rpc-endpoints"]' - REACT_APP_BLOCK_EXPLORER_URL: 'https://wax-test.bloks.io/transaction/(transaction)' + REACT_APP_BLOCK_EXPLORER_URL: '{"url": "https://wax-test.bloks.io", "tx": "/transaction/(transaction)", "account": {"url":"/account/","abi":"?loadContract=true&tab=ABI","actions":"?loadContract=true&tab=Actions"}}' REACT_APP_STATE_HISTORY_ENABLED=: 'false' REACT_APP_GOOGLE_ANALITIC_PAGE_ID: 'G-E6Y0EC9FT8' REACT_APP_PUBLIC_RE_CAPTCHA_KEY: ${{ secrets.REACT_APP_PUBLIC_RE_CAPTCHA_KEY }} diff --git a/.github/workflows/deploy-wax.yaml b/.github/workflows/deploy-wax.yaml index d5491ec50..8a32273aa 100644 --- a/.github/workflows/deploy-wax.yaml +++ b/.github/workflows/deploy-wax.yaml @@ -57,7 +57,7 @@ jobs: REACT_APP_TOKEN_SYMBOL: 'WAX' REACT_APP_NETWORK_URL: '[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"icon":"ultra","order":6}]' REACT_APP_DISABLED_MENU_ITEMS: '["/missed-blocks", "/cpu-benchmark","/block-distribution","/stress-test","/evm","/evm-rpc-endpoints"]' - REACT_APP_BLOCK_EXPLORER_URL: 'https://wax.bloks.io/transaction/(transaction)' + REACT_APP_BLOCK_EXPLORER_URL: '{"url": "https://wax.bloks.io", "tx": "/transaction/(transaction)", "account": {"url":"/account/","abi":"?loadContract=true&tab=ABI","actions":"?loadContract=true&tab=Actions"}}' REACT_APP_STATE_HISTORY_ENABLED=: 'false' REACT_APP_GOOGLE_ANALITIC_PAGE_ID: 'G-E6Y0EC9FT8' REACT_APP_PUBLIC_RE_CAPTCHA_KEY: ${{ secrets.REACT_APP_PUBLIC_RE_CAPTCHA_KEY }} diff --git a/.github/workflows/deploy-xpr-testnet.yaml b/.github/workflows/deploy-xpr-testnet.yaml index 4e54d893b..3c6dfb100 100644 --- a/.github/workflows/deploy-xpr-testnet.yaml +++ b/.github/workflows/deploy-xpr-testnet.yaml @@ -57,7 +57,7 @@ jobs: REACT_APP_TOKEN_SYMBOL: 'XPR' REACT_APP_NETWORK_URL: '[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"icon":"ultra","order":6}]' REACT_APP_DISABLED_MENU_ITEMS: '["/missed-blocks","/block-distribution","/stress-test","/evm","/evm-rpc-endpoints"]' - REACT_APP_BLOCK_EXPLORER_URL: 'https://testnet.explorer.xprnetwork.org/transaction/(transaction)' + REACT_APP_BLOCK_EXPLORER_URL: '{"url": "https://testnet.explorer.xprnetwork.org", "tx": "/transaction/(transaction)", "account": {"url":"/account/","abi":"?loadContract=true&tab=ABI","actions":"?loadContract=true&tab=Actions"}}' REACT_APP_STATE_HISTORY_ENABLED: 'false' REACT_APP_GOOGLE_ANALITIC_PAGE_ID: 'G-E6Y0EC9FT8' REACT_APP_PUBLIC_RE_CAPTCHA_KEY: ${{ secrets.REACT_APP_PUBLIC_RE_CAPTCHA_KEY }} diff --git a/.github/workflows/deploy-xpr.yaml b/.github/workflows/deploy-xpr.yaml index 08e186d8b..eabe354ee 100644 --- a/.github/workflows/deploy-xpr.yaml +++ b/.github/workflows/deploy-xpr.yaml @@ -57,7 +57,7 @@ jobs: REACT_APP_TOKEN_SYMBOL: 'XPR' REACT_APP_NETWORK_URL: '[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"icon":"ultra","order":6}]' REACT_APP_DISABLED_MENU_ITEMS: '["/missed-blocks","/block-distribution","/stress-test","/evm","/evm-rpc-endpoints"]' - REACT_APP_BLOCK_EXPLORER_URL: 'https://explorer.xprnetwork.org/transaction/(transaction)' + REACT_APP_BLOCK_EXPLORER_URL: '{"url": "https://explorer.xprnetwork.org", "tx": "/transaction/(transaction)", "account": {"url":"/account/","abi":"?loadContract=true&tab=ABI","actions":"?loadContract=true&tab=Actions"}}' REACT_APP_STATE_HISTORY_ENABLED: 'false' REACT_APP_GOOGLE_ANALITIC_PAGE_ID: 'G-E6Y0EC9FT8' REACT_APP_PUBLIC_RE_CAPTCHA_KEY: ${{ secrets.REACT_APP_PUBLIC_RE_CAPTCHA_KEY }} From 185d5c7b409919eccbf46618b0a481d2b94e99d2 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 7 Nov 2023 16:29:53 -0600 Subject: [PATCH 18/75] feat(envs): use an object to set block explorer urls --- .env.jungle | 2 +- .env.lacchain | 2 +- .env.libre | 2 +- .env.libretestnet | 2 +- .env.mainnet | 2 +- .env.telos | 2 +- .env.telostestnet | 2 +- .env.ultratestnet | 2 +- .env.wax | 2 +- .env.waxtestnet | 2 +- .env.xpr | 2 +- .env.xprtestnet | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.env.jungle b/.env.jungle index eb117d263..ab3100322 100644 --- a/.env.jungle +++ b/.env.jungle @@ -104,7 +104,7 @@ REACT_APP_SYNC_TOLERANCE_INTERVAL=180000 REACT_APP_TOKEN_SYMBOL=EOS REACT_APP_NETWORK_URL=[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Network Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"pair":"ultra","icon":"ultra","order":6}] REACT_APP_DISABLED_MENU_ITEMS=["/missed-blocks","/block-distribution"] -REACT_APP_BLOCK_EXPLORER_URL=https://jungle4.eosq.eosnation.io/tx/(transaction) +REACT_APP_BLOCK_EXPLORER_URL={"url": "https://jungle4.eosq.eosnation.io", "tx": "/tx/(transaction)", "account": {"url":"/account/","abi":"/abi","actions":""}} REACT_APP_STATE_HISTORY_ENABLED=false REACT_APP_GOOGLE_ANALITIC_PAGE_ID=G-E6Y0EC9FT8 REACT_APP_PUBLIC_RE_CAPTCHA_KEY=key diff --git a/.env.lacchain b/.env.lacchain index 843519e22..c7aadaddd 100644 --- a/.env.lacchain +++ b/.env.lacchain @@ -84,7 +84,7 @@ REACT_APP_SYNC_TOLERANCE_INTERVAL=180000 REACT_APP_TOKEN_SYMBOL= REACT_APP_NETWORK_URL=[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Network Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"pair":"ultra","icon":"ultra","order":6}] REACT_APP_DISABLED_MENU_ITEMS=["/non-compliant-bps"] -REACT_APP_BLOCK_EXPLORER_URL=https://explorer.latamlink.io/transaction/(transaction) +REACT_APP_BLOCK_EXPLORER_URL={"url": "https://eosio-explorer.lacchain.net", "tx": "/transaction/(transaction)", "account": {"url":"/account/","abi":"","actions":""}} REACT_APP_STATE_HISTORY_ENABLED=true REACT_APP_GOOGLE_ANALITIC_PAGE_ID=G-E6Y0EC9FT8 REACT_APP_PUBLIC_RE_CAPTCHA_KEY=key diff --git a/.env.libre b/.env.libre index 04eaf3898..85a5fbba2 100644 --- a/.env.libre +++ b/.env.libre @@ -83,7 +83,7 @@ REACT_APP_SYNC_TOLERANCE_INTERVAL=180000 REACT_APP_TOKEN_SYMBOL=LIBRE REACT_APP_NETWORK_URL=[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Network Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"pair":"ultra","icon":"ultra","order":6}] REACT_APP_DISABLED_MENU_ITEMS=["/missed-blocks", "/cpu-benchmark","/block-distribution","/evm","/evm-rpc-endpoints"] -REACT_APP_BLOCK_EXPLORER_URL=https://www.libreblocks.io/tx/(transaction) +REACT_APP_BLOCK_EXPLORER_URL={"url": "https://libre-explorer.edenia.cloud", "tx": "/tx/(transaction)", "account": {"url":"/address/","abi":"","actions":""}} REACT_APP_STATE_HISTORY_ENABLED=false REACT_APP_GOOGLE_ANALITIC_PAGE_ID=G-E6Y0EC9FT8 REACT_APP_PUBLIC_RE_CAPTCHA_KEY=key diff --git a/.env.libretestnet b/.env.libretestnet index c0e3827a8..ec291d85a 100644 --- a/.env.libretestnet +++ b/.env.libretestnet @@ -83,7 +83,7 @@ REACT_APP_SYNC_TOLERANCE_INTERVAL=180000 REACT_APP_TOKEN_SYMBOL=LIBRE REACT_APP_NETWORK_URL=[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Network Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"pair":"ultra","icon":"ultra","order":6}] REACT_APP_DISABLED_MENU_ITEMS=["/missed-blocks","/block-distribution","/evm","/evm-rpc-endpoints"] -REACT_APP_BLOCK_EXPLORER_URL=https://libre-testnet-explorer.edenia.cloud/transaction/(transaction) +REACT_APP_BLOCK_EXPLORER_URL={"url": "https://testnet.libre.org/v2/explore", "tx": "/transaction/(transaction)", "account": {"url":"/account/","abi":"","actions":""}} REACT_APP_STATE_HISTORY_ENABLED=false REACT_APP_GOOGLE_ANALITIC_PAGE_ID=G-E6Y0EC9FT8 REACT_APP_PUBLIC_RE_CAPTCHA_KEY=key diff --git a/.env.mainnet b/.env.mainnet index 18f9ea3c4..c5c3f6345 100644 --- a/.env.mainnet +++ b/.env.mainnet @@ -104,7 +104,7 @@ REACT_APP_SYNC_TOLERANCE_INTERVAL=180000 REACT_APP_TOKEN_SYMBOL=EOS REACT_APP_NETWORK_URL=[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Network Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"pair":"ultra","icon":"ultra","order":6}] REACT_APP_DISABLED_MENU_ITEMS=["/missed-blocks", "/cpu-benchmark","/block-distribution"] -REACT_APP_BLOCK_EXPLORER_URL=https://bloks.io/transaction/(transaction) +REACT_APP_BLOCK_EXPLORER_URL={"url": "https://bloks.io", "tx": "/transaction/(transaction)", "account": {"url":"/account/","abi":"?loadContract=true&tab=ABI","actions":"?loadContract=true&tab=Actions"}} REACT_APP_STATE_HISTORY_ENABLED=false REACT_APP_GOOGLE_ANALITIC_PAGE_ID=G-E6Y0EC9FT8 REACT_APP_PUBLIC_RE_CAPTCHA_KEY=key diff --git a/.env.telos b/.env.telos index 952df2ffb..be587f459 100644 --- a/.env.telos +++ b/.env.telos @@ -103,7 +103,7 @@ REACT_APP_SYNC_TOLERANCE_INTERVAL=180000 REACT_APP_TOKEN_SYMBOL=TLOS REACT_APP_NETWORK_URL=[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Network Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"pair":"ultra","icon":"ultra","order":6}] REACT_APP_DISABLED_MENU_ITEMS=["/missed-blocks", "/cpu-benchmark","/block-distribution","stress-test"] -REACT_APP_BLOCK_EXPLORER_URL=https://explorer.telos.net/transaction/(transaction) +REACT_APP_BLOCK_EXPLORER_URL={"url": "https://explorer.telos.net", "tx": "/transaction/(transaction)", "account": {"url":"/account/","abi":"?tab=contract&tab1=abi","actions":"?tab=contract&tab1=actions"}} REACT_APP_STATE_HISTORY_ENABLED=false REACT_APP_GOOGLE_ANALITIC_PAGE_ID=G-E6Y0EC9FT8 REACT_APP_PUBLIC_RE_CAPTCHA_KEY=key diff --git a/.env.telostestnet b/.env.telostestnet index 16db4c07d..d208d97c6 100644 --- a/.env.telostestnet +++ b/.env.telostestnet @@ -104,7 +104,7 @@ REACT_APP_SYNC_TOLERANCE_INTERVAL=180000 REACT_APP_TOKEN_SYMBOL=TLOS REACT_APP_NETWORK_URL=[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"pair":"ultra","icon":"ultra","order":6}] REACT_APP_DISABLED_MENU_ITEMS=["/missed-blocks", "/cpu-benchmark","/block-distribution","/stress-test"] -REACT_APP_BLOCK_EXPLORER_URL=https://explorer-test.telos.net/transaction/(transaction) +REACT_APP_BLOCK_EXPLORER_URL={"url": "https://explorer-test.telos.net", "tx": "/transaction/(transaction)", "account": {"url":"/account/","abi":"?tab=contract&tab1=abi","actions":"?tab=contract&tab1=actions"}} REACT_APP_STATE_HISTORY_ENABLED=false REACT_APP_GOOGLE_ANALITIC_PAGE_ID=G-E6Y0EC9FT8 REACT_APP_PUBLIC_RE_CAPTCHA_KEY=key diff --git a/.env.ultratestnet b/.env.ultratestnet index 7b15f1eaf..f6dba8fbb 100644 --- a/.env.ultratestnet +++ b/.env.ultratestnet @@ -84,7 +84,7 @@ REACT_APP_SYNC_TOLERANCE_INTERVAL=180000 REACT_APP_TOKEN_SYMBOL=UOS REACT_APP_NETWORK_URL=[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"pair":"ultra","icon":"ultra","order":6}] REACT_APP_DISABLED_MENU_ITEMS=["/block-producers","/nodes","/missed-blocks","/endpoints","/bpjson","/ricardian-contract","/block-distribution","/nodes-distribution","/cpu-benchmark","/rewards-distribution","/endpoints-stats","/evm","/evm-rpc-endpoints"] -REACT_APP_BLOCK_EXPLORER_URL=https://explorer.testnet.ultra.io/tx/(transaction) +REACT_APP_BLOCK_EXPLORER_URL={"url": "https://explorer.testnet.ultra.io", "tx": "/tx/(transaction)"} REACT_APP_STATE_HISTORY_ENABLED=false REACT_APP_GOOGLE_ANALITIC_PAGE_ID=G-E6Y0EC9FT8 REACT_APP_PUBLIC_RE_CAPTCHA_KEY=key \ No newline at end of file diff --git a/.env.wax b/.env.wax index 2b484d458..2f313169e 100644 --- a/.env.wax +++ b/.env.wax @@ -86,7 +86,7 @@ REACT_APP_SYNC_TOLERANCE_INTERVAL=180000 REACT_APP_TOKEN_SYMBOL=WAX REACT_APP_NETWORK_URL=[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Network Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"pair":"ultra","icon":"ultra","order":6}] REACT_APP_DISABLED_MENU_ITEMS=["/missed-blocks", "/cpu-benchmark","/block-distribution","/evm","/evm-rpc-endpoints"] -REACT_APP_BLOCK_EXPLORER_URL=https://wax.bloks.io/transaction/(transaction) +REACT_APP_BLOCK_EXPLORER_URL={"url": "https://wax.bloks.io", "tx": "/transaction/(transaction)", "account": {"url":"/account/","abi":"?loadContract=true&tab=ABI","actions":"?loadContract=true&tab=Actions"}} REACT_APP_STATE_HISTORY_ENABLED=false REACT_APP_GOOGLE_ANALITIC_PAGE_ID=G-E6Y0EC9FT8 REACT_APP_PUBLIC_RE_CAPTCHA_KEY=key diff --git a/.env.waxtestnet b/.env.waxtestnet index 4d65d2bb2..2d44a4d03 100644 --- a/.env.waxtestnet +++ b/.env.waxtestnet @@ -83,7 +83,7 @@ REACT_APP_SYNC_TOLERANCE_INTERVAL=180000 REACT_APP_TOKEN_SYMBOL=WAX REACT_APP_NETWORK_URL=[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Network Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"pair":"ultra","icon":"ultra","order":6}] REACT_APP_DISABLED_MENU_ITEMS=["/missed-blocks", "/cpu-benchmark","/block-distribution","/evm","/evm-rpc-endpoints"] -REACT_APP_BLOCK_EXPLORER_URL=https://wax-test.bloks.io/transaction/(transaction) +REACT_APP_BLOCK_EXPLORER_URL={"url": "https://wax-test.bloks.io", "tx": "/transaction/(transaction)", "account": {"url":"/account/","abi":"?loadContract=true&tab=ABI","actions":"?loadContract=true&tab=Actions"}} REACT_APP_STATE_HISTORY_ENABLED=false REACT_APP_GOOGLE_ANALITIC_PAGE_ID=G-E6Y0EC9FT8 REACT_APP_PUBLIC_RE_CAPTCHA_KEY=key diff --git a/.env.xpr b/.env.xpr index 97f5cd4f9..ec6fd8995 100644 --- a/.env.xpr +++ b/.env.xpr @@ -83,7 +83,7 @@ REACT_APP_SYNC_TOLERANCE_INTERVAL=180000 REACT_APP_TOKEN_SYMBOL=XPR REACT_APP_NETWORK_URL=[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Network Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"pair":"ultra","icon":"ultra","order":6}] REACT_APP_DISABLED_MENU_ITEMS=["/missed-blocks","/block-distribution","/cpu-benchmark","/evm","/evm-rpc-endpoints"] -REACT_APP_BLOCK_EXPLORER_URL=https://www.protonscan.io/transaction/(transaction) +REACT_APP_BLOCK_EXPLORER_URL={"url": "https://explorer.xprnetwork.org", "tx": "/transaction/(transaction)", "account": {"url":"/account/","abi":"?loadContract=true&tab=ABI","actions":"?loadContract=true&tab=Actions"}} REACT_APP_STATE_HISTORY_ENABLED=false REACT_APP_GOOGLE_ANALITIC_PAGE_ID=G-E6Y0EC9FT8 REACT_APP_PUBLIC_RE_CAPTCHA_KEY=key diff --git a/.env.xprtestnet b/.env.xprtestnet index 451d4d939..5a47689ca 100644 --- a/.env.xprtestnet +++ b/.env.xprtestnet @@ -82,7 +82,7 @@ REACT_APP_SYNC_TOLERANCE_INTERVAL=180000 REACT_APP_TOKEN_SYMBOL=XPR REACT_APP_NETWORK_URL=[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Network Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"pair":"ultra","icon":"ultra","order":6}] REACT_APP_DISABLED_MENU_ITEMS=["/missed-blocks","/block-distribution","/cpu-benchmark","/evm","/evm-rpc-endpoints"] -REACT_APP_BLOCK_EXPLORER_URL=https://testnet.protonscan.io/transaction/(transaction) +REACT_APP_BLOCK_EXPLORER_URL={"url": "https://testnet.explorer.xprnetwork.org", "tx": "/transaction/(transaction)", "account": {"url":"/account/","abi":"?loadContract=true&tab=ABI","actions":"?loadContract=true&tab=Actions"}} REACT_APP_STATE_HISTORY_ENABLED=false REACT_APP_GOOGLE_ANALITIC_PAGE_ID=G-E6Y0EC9FT8 REACT_APP_PUBLIC_RE_CAPTCHA_KEY=key From bed884baabc01a7b783d3adeb532f15e583d0038 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 7 Nov 2023 16:32:42 -0600 Subject: [PATCH 19/75] fix(webapp): pass correct block explorer url --- webapp/src/config/eos.config.js | 9 ++++++++- webapp/src/routes/Faucet/index.js | 4 ++-- webapp/src/routes/RicardianContract/index.js | 3 +++ webapp/src/utils/get-blocknum-url.js | 4 ++-- webapp/src/utils/get-transaction-url.js | 4 ++-- 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/webapp/src/config/eos.config.js b/webapp/src/config/eos.config.js index 1ff232a2c..64a6e9221 100644 --- a/webapp/src/config/eos.config.js +++ b/webapp/src/config/eos.config.js @@ -80,6 +80,8 @@ export const endpoints = (JSON.parse( ), ) +const blockExplorerLinks = JSON.parse(process.env.REACT_APP_BLOCK_EXPLORER_URL || '{}') + export const nodeTypes = _nodeTypes export const nodeChips = _nodeChips || _nodeTypes export const producerTypes = _producerTypes @@ -87,7 +89,12 @@ export const includeDefaultTransaction = process.env .REACT_APP_EOS_INCLUDE_TRANSACTION ? JSON.parse(process.env.REACT_APP_EOS_INCLUDE_TRANSACTION) : null -export const blockExplorerUrl = process.env.REACT_APP_BLOCK_EXPLORER_URL +export const blockExplorerUrl = blockExplorerLinks?.url +export const blockExplorerTxUrl = blockExplorerLinks?.url + blockExplorerLinks?.tx +export const blockExplorerAccount = { + ...blockExplorerLinks?.account, + url: blockExplorerLinks?.url + blockExplorerLinks?.account?.url, +} export const syncToleranceInterval = process.env.REACT_APP_SYNC_TOLERANCE_INTERVAL || 180000 export const producerColumns = [ diff --git a/webapp/src/routes/Faucet/index.js b/webapp/src/routes/Faucet/index.js index 15b0a2dd1..217e6eb38 100644 --- a/webapp/src/routes/Faucet/index.js +++ b/webapp/src/routes/Faucet/index.js @@ -131,7 +131,7 @@ const Faucet = () => { type: 'success', content: ( @@ -258,7 +258,7 @@ const Faucet = () => { {t('transferTokensTransaction')} { httpEndpoint={eosConfig.endpoint} LinearProgressColor="primary" title={t('title')} + url={eosConfig.blockExplorerAccount?.url} + abiParams={eosConfig.blockExplorerAccount?.abi || ''} + actionsParams={eosConfig.blockExplorerAccount?.actions || ''} /> ) diff --git a/webapp/src/utils/get-blocknum-url.js b/webapp/src/utils/get-blocknum-url.js index 3c7f80628..87b82e732 100644 --- a/webapp/src/utils/get-blocknum-url.js +++ b/webapp/src/utils/get-blocknum-url.js @@ -1,12 +1,12 @@ import { eosConfig } from '../config' export const getBlockNumUrl = (blockNum) => { - if (!blockNum || !eosConfig.blockExplorerUrl) { + if (!blockNum || !eosConfig.blockExplorerTxUrl) { return } return ( - eosConfig.blockExplorerUrl + eosConfig.blockExplorerTxUrl .replace('(transaction)', blockNum) .replace('tx', 'block') .replace('transaction', 'block') diff --git a/webapp/src/utils/get-transaction-url.js b/webapp/src/utils/get-transaction-url.js index e8874c982..e4e1ce3a5 100644 --- a/webapp/src/utils/get-transaction-url.js +++ b/webapp/src/utils/get-transaction-url.js @@ -1,14 +1,14 @@ import { eosConfig } from '../config' export const getTransactionUrl = (trx) => { - if (!trx || !eosConfig.blockExplorerUrl) { + if (!trx || !eosConfig.blockExplorerTxUrl) { return } return { trxId: trx.substr(trx.length - 6, trx.length), // eslint-disable-next-line - explorerUrl: eosConfig.blockExplorerUrl.replace('(transaction)', trx) + explorerUrl: eosConfig.blockExplorerTxUrl.replace('(transaction)', trx) } } From c976036d8e13746cdef6a3de457df33a34026cdc Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Wed, 8 Nov 2023 10:30:25 -0600 Subject: [PATCH 20/75] chore(webapp): set text color for producer names except the one producing --- webapp/src/components/ChartHeader/styles.js | 1 + webapp/src/components/ProducersChart/index.js | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/webapp/src/components/ChartHeader/styles.js b/webapp/src/components/ChartHeader/styles.js index 9be1ca032..37ce53682 100644 --- a/webapp/src/components/ChartHeader/styles.js +++ b/webapp/src/components/ChartHeader/styles.js @@ -4,6 +4,7 @@ export default (theme) => ({ justifyContent: 'space-between', flexDirection: 'column', alignItems: 'baseline', + minHeight: '60px', padding: theme.spacing(1), [theme.breakpoints.up('md')]: { justifyContent: 'space-between', diff --git a/webapp/src/components/ProducersChart/index.js b/webapp/src/components/ProducersChart/index.js index f07e44fd9..4650bd78f 100644 --- a/webapp/src/components/ProducersChart/index.js +++ b/webapp/src/components/ProducersChart/index.js @@ -93,15 +93,17 @@ const CustomBarLabel = memo( } const ProducerName = () => { + const isProducing = fill === theme.palette.primary.main + const Content = () => ( {payload.owner} @@ -258,6 +260,7 @@ const ProducersChart = ({ producers, info }) => { ? theme.palette.primary.main : theme.palette.primary.light } + stroke={theme.palette.background.default} /> ) })} From e1a770754894a0b096f511239d0f1463aa8a0509 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Thu, 9 Nov 2023 10:08:31 -0600 Subject: [PATCH 21/75] chore(hasura): add complete_at to evm param table --- .../down.sql | 4 ++++ .../up.sql | 2 ++ 2 files changed, 6 insertions(+) create mode 100644 hasura/migrations/default/1699546042430_alter_table_evm_param_add_column_complete_at/down.sql create mode 100644 hasura/migrations/default/1699546042430_alter_table_evm_param_add_column_complete_at/up.sql diff --git a/hasura/migrations/default/1699546042430_alter_table_evm_param_add_column_complete_at/down.sql b/hasura/migrations/default/1699546042430_alter_table_evm_param_add_column_complete_at/down.sql new file mode 100644 index 000000000..fcd26b842 --- /dev/null +++ b/hasura/migrations/default/1699546042430_alter_table_evm_param_add_column_complete_at/down.sql @@ -0,0 +1,4 @@ +-- Could not auto-generate a down migration. +-- Please write an appropriate down migration for the SQL below: +-- alter table "evm"."param" add column "complete_at" numeric +-- null; diff --git a/hasura/migrations/default/1699546042430_alter_table_evm_param_add_column_complete_at/up.sql b/hasura/migrations/default/1699546042430_alter_table_evm_param_add_column_complete_at/up.sql new file mode 100644 index 000000000..cc87b8fc7 --- /dev/null +++ b/hasura/migrations/default/1699546042430_alter_table_evm_param_add_column_complete_at/up.sql @@ -0,0 +1,2 @@ +alter table "evm"."param" add column "complete_at" numeric + null; From 9adaccad0e090b6a2b636776e55deda627460a78 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Thu, 9 Nov 2023 10:55:52 -0600 Subject: [PATCH 22/75] fix(hapi-evm): check if the sync is complete using the first block inserted in the DB --- hapi-evm/src/models/param/interfaces.ts | 1 + hapi-evm/src/models/param/queries.ts | 29 +++++++++++++++++-------- hapi-evm/src/services/block.service.ts | 23 ++++++++++---------- 3 files changed, 33 insertions(+), 20 deletions(-) diff --git a/hapi-evm/src/models/param/interfaces.ts b/hapi-evm/src/models/param/interfaces.ts index 08e89a86f..647944dc4 100644 --- a/hapi-evm/src/models/param/interfaces.ts +++ b/hapi-evm/src/models/param/interfaces.ts @@ -2,4 +2,5 @@ export interface Param { id: string next_block: number is_synced: boolean + complete_at: number } diff --git a/hapi-evm/src/models/param/queries.ts b/hapi-evm/src/models/param/queries.ts index 4f7eb709f..88cc01964 100644 --- a/hapi-evm/src/models/param/queries.ts +++ b/hapi-evm/src/models/param/queries.ts @@ -16,10 +16,15 @@ interface ParamOneResponse { const defaultParam = { id: '00000000-0000-0000-0000-000000000000', nextBlock: 0, - isSynced: false + isSynced: false, + completeAt: null } -export const save = async (nextBlock: number, isSynced: boolean = false) => { +export const save = async ( + nextBlock: number, + isSynced: boolean = false, + completeAt: number +) => { const mutation = gql` mutation ($payload: evm_param_insert_input!) { insert_evm_param_one(object: $payload) { @@ -33,7 +38,8 @@ export const save = async (nextBlock: number, isSynced: boolean = false) => { { payload: { next_block: nextBlock, - is_synced: isSynced + is_synced: isSynced, + complete_at: completeAt } } ) @@ -44,7 +50,8 @@ export const save = async (nextBlock: number, isSynced: boolean = false) => { export const update = async ( id: string, nextBlock: number, - isSynced: boolean = false + isSynced: boolean = false, + completeAt: number ) => { const mutation = gql` mutation ($id: uuid!, $payload: evm_param_set_input) { @@ -60,7 +67,8 @@ export const update = async ( id, payload: { next_block: nextBlock, - is_synced: isSynced + is_synced: isSynced, + complete_at: completeAt } }) } @@ -75,6 +83,7 @@ export const getState = async () => { id next_block is_synced + complete_at } } ` @@ -89,21 +98,23 @@ export const getState = async () => { return { id: state.id, nextBlock: state.next_block, - isSynced: state.is_synced + isSynced: state.is_synced, + completeAt: state.complete_at } } export const saveOrUpdate = async ( nextBlock: number, - isSynced: boolean + isSynced: boolean, + completeAt: number ): Promise => { const currentState = await getState() if (currentState === defaultParam) { - await save(nextBlock, isSynced) + await save(nextBlock, isSynced, completeAt) return } - await update(currentState.id, nextBlock, isSynced) + await update(currentState.id, nextBlock, isSynced, completeAt) } diff --git a/hapi-evm/src/services/block.service.ts b/hapi-evm/src/services/block.service.ts index 22a6a65f0..880cabb16 100644 --- a/hapi-evm/src/services/block.service.ts +++ b/hapi-evm/src/services/block.service.ts @@ -129,22 +129,23 @@ const syncOldBlocks = async (): Promise => { const paramStats = await paramModel.queries.getState() if (paramStats.isSynced) return const nextBlock = paramStats.nextBlock - const isUpToDate = await blockModel.queries.default.get({ - number: { _eq: nextBlock } - }) + const nextBlockToNumber = + paramStats.completeAt || + (await blockModel.queries.default.getNextBlock(nextBlock))[0]?.number + if (!nextBlockToNumber) return + const isUpToDate = nextBlock >= nextBlockToNumber if (!isUpToDate) { - const nextBlockTo = await blockModel.queries.default.getNextBlock(nextBlock) - const nextBlockToNumber = nextBlockTo[0]?.number || 0 - if (nextBlockToNumber > nextBlock) { - console.log( - `🚦 Syncing blocks behind, pending ${nextBlockToNumber - nextBlock} ` - ) - } + console.log( + `🚦 Syncing blocks behind, pending ${nextBlockToNumber - nextBlock} ` + ) await syncFullBlock(nextBlock) + } else { + console.log(`Syncing old blocks complete at ${moment().format()}`) } await paramModel.queries.saveOrUpdate( nextBlock + 1 * Number(!isUpToDate), - !!isUpToDate + !!isUpToDate, + nextBlockToNumber ) } From 1971f50caf1ba9d6bb6ffde4340ad27f6c8598ff Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Thu, 9 Nov 2023 13:16:40 -0600 Subject: [PATCH 23/75] fix(hapi-evm): limit get result --- hapi-evm/src/models/block/queries.ts | 12 ++++++++---- hapi-evm/src/models/transaction/queries.ts | 16 +++++++++++----- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/hapi-evm/src/models/block/queries.ts b/hapi-evm/src/models/block/queries.ts index 5fbfcbfba..cca53e91d 100644 --- a/hapi-evm/src/models/block/queries.ts +++ b/hapi-evm/src/models/block/queries.ts @@ -38,6 +38,7 @@ const internal_get = async ( // such as limit, order, etc where: object, order: object | null, + limit: number | null, attributes: string, operation?: string ): Promise => { @@ -45,7 +46,7 @@ const internal_get = async ( ${type} (${parameters}) { ${table}${ operation ? `_${operation}` : '' - }(where: $where, order_by: $order) { + }(where: $where, order_by: $order, limit: $limit) { ${attributes} } } @@ -53,7 +54,8 @@ const internal_get = async ( return await coreUtil.hasura.default.request(query, { where, - order + order, + limit }) } @@ -61,13 +63,14 @@ export const exist = async (hashOrNumber: string | number) => { const result = await internal_get( 'query', 'evm_block', - '$where: evm_block_bool_exp!, $order: [evm_block_order_by!]', + '$where: evm_block_bool_exp!, $order: [evm_block_order_by!], $limit: Int', { [typeof hashOrNumber === 'string' ? 'hash' : 'number']: { _eq: hashOrNumber } }, null, + null, 'aggregate { count }', 'aggregate' ) @@ -83,9 +86,10 @@ const get = async ( const result = await internal_get( 'query', 'evm_block', - '$where: evm_block_bool_exp!, $order: [evm_block_order_by!]', + '$where: evm_block_bool_exp!, $order: [evm_block_order_by!], $limit: Int', where, order, + !many ? 1 : null, 'hash, gas_used, transactions, number, timestamp' ) diff --git a/hapi-evm/src/models/transaction/queries.ts b/hapi-evm/src/models/transaction/queries.ts index a5ba86866..560541960 100644 --- a/hapi-evm/src/models/transaction/queries.ts +++ b/hapi-evm/src/models/transaction/queries.ts @@ -30,19 +30,23 @@ const internal_get = async ( // TODO: not only accept where but also additional content // such as limit, order, etc where: object, + limit: number | null, attributes: string, operation?: string ): Promise => { const gqlObj = gql` ${type} (${parameters}) { - ${table}${operation ? `_${operation}` : ''}(where: $where) { + ${table}${ + operation ? `_${operation}` : '' + }(where: $where, limit: $limit) { ${attributes} } } ` return await coreUtil.hasura.default.request(gqlObj, { - where + where, + limit }) } @@ -50,8 +54,9 @@ export const exist = async (hash: string) => { const result = await internal_get( Operation.query, 'evm_transaction', - '$where: evm_transaction_bool_exp!', + '$where: evm_transaction_bool_exp!, $limit: Int', { hash: { _eq: hash } }, + null, 'aggregate { count }', 'aggregate' ) @@ -63,9 +68,10 @@ const get = async (where: object, many = false) => { const result = await internal_get( 'query', 'evm_transaction', - '$where: evm_transaction_bool_exp!', + '$where: evm_transaction_bool_exp!, $limit: Int', where, - 'hash, gas_used, transactions, number, timestamp' + !many ? 1 : null, + 'hash, block_hash, block_number, gas, gas_price' ) return many ? result.evm_transaction : result.evm_transaction[0] From ad79e2b92c5fdb73de2862a45c9cefa1d9c57295 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Thu, 9 Nov 2023 16:41:25 -0600 Subject: [PATCH 24/75] feat(hapi-evm): use an array of promises to sync old blocks --- hapi-evm/src/models/historical-stats/queries.ts | 5 ++--- hapi-evm/src/services/block.service.ts | 10 ++++++++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/hapi-evm/src/models/historical-stats/queries.ts b/hapi-evm/src/models/historical-stats/queries.ts index 875c02209..6445f2d9a 100644 --- a/hapi-evm/src/models/historical-stats/queries.ts +++ b/hapi-evm/src/models/historical-stats/queries.ts @@ -88,9 +88,8 @@ export const getState = async () => { } } ` - const data = await coreUtil.hasura.default.request( - query - ) + const data = + await coreUtil.hasura.default.request(query) if (!data.evm_historical_stats.length) { return defaultHistoricalStats diff --git a/hapi-evm/src/services/block.service.ts b/hapi-evm/src/services/block.service.ts index 880cabb16..5309552c7 100644 --- a/hapi-evm/src/services/block.service.ts +++ b/hapi-evm/src/services/block.service.ts @@ -126,6 +126,7 @@ const getBlock = async () => { } const syncOldBlocks = async (): Promise => { + let blocksInserted = 1 const paramStats = await paramModel.queries.getState() if (paramStats.isSynced) return const nextBlock = paramStats.nextBlock @@ -138,12 +139,17 @@ const syncOldBlocks = async (): Promise => { console.log( `🚦 Syncing blocks behind, pending ${nextBlockToNumber - nextBlock} ` ) - await syncFullBlock(nextBlock) + blocksInserted = Math.min(100, nextBlockToNumber - nextBlock) + const blockPromises = [] + for (let index = 0; index < blocksInserted; index++) { + blockPromises.push(syncFullBlock(nextBlock + index)) + } + await Promise.allSettled(blockPromises) } else { console.log(`Syncing old blocks complete at ${moment().format()}`) } await paramModel.queries.saveOrUpdate( - nextBlock + 1 * Number(!isUpToDate), + nextBlock + blocksInserted * Number(!isUpToDate), !!isUpToDate, nextBlockToNumber ) From 5e7184a41b9568bfa96c4405783ee1be6de29526 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Mon, 13 Nov 2023 15:26:24 -0600 Subject: [PATCH 25/75] feat(webapp): add route localization --- webapp/src/App.js | 3 +- webapp/src/components/EmptyState/index.js | 5 ++- webapp/src/components/EndpointsTable/index.js | 6 +-- webapp/src/components/Header/index.js | 41 ++++++++--------- webapp/src/components/LocaleLink/index.js | 13 ++++++ .../src/components/NetworkSelector/index.js | 7 ++- .../src/components/NonCompliantRow/index.js | 4 +- webapp/src/components/ProducersChart/index.js | 6 +-- webapp/src/components/Sidebar/NavLink.js | 7 ++- webapp/src/components/ViewBPProfile/index.js | 5 ++- webapp/src/config/general.js | 2 + webapp/src/i18n.js | 5 ++- webapp/src/layouts/Dashboard.js | 27 ++++++++++- webapp/src/routes/BlockProducers/index.js | 6 +-- webapp/src/routes/Faucet/index.js | 6 +-- webapp/src/routes/Help/index.js | 10 ++--- .../routes/NonCompliantBPs/RewardsStats.js | 4 +- webapp/src/routes/Page404/index.js | 5 ++- .../RewardsDistributionStats.js | 4 +- webapp/src/utils/url-localization.js | 45 +++++++++++++++++++ 20 files changed, 153 insertions(+), 58 deletions(-) create mode 100644 webapp/src/components/LocaleLink/index.js create mode 100644 webapp/src/utils/url-localization.js diff --git a/webapp/src/App.js b/webapp/src/App.js index 3bff6fe3d..01e01ba25 100644 --- a/webapp/src/App.js +++ b/webapp/src/App.js @@ -9,6 +9,7 @@ import Loader from './components/Loader' import DashboardLayout from './layouts/Dashboard' import { recaptchaConfig } from './config' +import { localizeRoutes } from 'utils/url-localization' const App = () => { const renderRoutes = ({ children, component, ...props }, index) => { @@ -47,7 +48,7 @@ const App = () => { }> - {routes + {localizeRoutes(routes) .filter((route) => !route?.path?.includes('http')) .map(renderRoutes)} diff --git a/webapp/src/components/EmptyState/index.js b/webapp/src/components/EmptyState/index.js index 0f22a4304..62073218a 100644 --- a/webapp/src/components/EmptyState/index.js +++ b/webapp/src/components/EmptyState/index.js @@ -1,9 +1,10 @@ import React from 'react' -import { Link } from 'react-router-dom' import { makeStyles } from '@mui/styles' import { useTranslation } from 'react-i18next' import Button from '@mui/material/Button' +import LocaleLink from 'components/LocaleLink' + import styles from './styles' const useStyles = makeStyles(styles) @@ -23,7 +24,7 @@ const EmptyState = ({ isNonCompliant }) => { {t('emptyState')} {isNonCompliant && ( { closeMenu(language.value)} + component={LocaleLink} + to={location.pathname + location.search} + locale={language.value} > {language.label} diff --git a/webapp/src/components/LocaleLink/index.js b/webapp/src/components/LocaleLink/index.js new file mode 100644 index 000000000..9ac6ca3a9 --- /dev/null +++ b/webapp/src/components/LocaleLink/index.js @@ -0,0 +1,13 @@ +import React from 'react' +import { useTranslation } from 'react-i18next' +import { Link } from 'react-router-dom' + +import { getLocaleUrl } from '../../utils/url-localization' + +const LocaleLink = props => { + const { i18n } = useTranslation() + + return +} + +export default LocaleLink diff --git a/webapp/src/components/NetworkSelector/index.js b/webapp/src/components/NetworkSelector/index.js index 2256a59ef..265c307c9 100644 --- a/webapp/src/components/NetworkSelector/index.js +++ b/webapp/src/components/NetworkSelector/index.js @@ -5,6 +5,7 @@ import ExpandMoreIcon from '@mui/icons-material/ExpandMore' import ExpandLessIcon from '@mui/icons-material/ExpandLess' import Typography from '@mui/material/Typography' import { makeStyles } from '@mui/styles' +import { useTranslation } from 'react-i18next' import jungleImg from '../../assets/jungle.webp' import waxImg from '../../assets/wax.webp' @@ -15,6 +16,7 @@ import eosImg from '../../assets/eos.webp' import airwireImg from '../../assets/airwire.png' import ultraImg from '../../assets/ultra.webp' import libreImg from '../../assets/libre.webp' +import { getLocaleUrl } from 'utils/url-localization' import styles from './styles' @@ -70,6 +72,7 @@ const NetworkSelector = ({ title, options, networkLogo }) => { const [selected] = useState(-1) const [open, setOpen] = useState(false) const [networks, setNetworks] = useState({ testnet: [], mainnet: [] }) + const { i18n } = useTranslation('translations') const toggleDropdown = () => { setOpen(!open) @@ -126,7 +129,7 @@ const NetworkSelector = ({ title, options, networkLogo }) => { [classes.listItemActive]: i === selected, })} > - + {option.label} @@ -143,7 +146,7 @@ const NetworkSelector = ({ title, options, networkLogo }) => { [classes.listItemActive]: i === selected, })} > - + {option.label} diff --git a/webapp/src/components/NonCompliantRow/index.js b/webapp/src/components/NonCompliantRow/index.js index 7c9cc2e03..70709de56 100644 --- a/webapp/src/components/NonCompliantRow/index.js +++ b/webapp/src/components/NonCompliantRow/index.js @@ -1,6 +1,5 @@ /* eslint camelcase: 0 */ import React, { memo } from 'react' -import { Link as RouterLink } from 'react-router-dom' import { makeStyles } from '@mui/styles' import { useTranslation } from 'react-i18next' import LanguageIcon from '@mui/icons-material/Language' @@ -15,6 +14,7 @@ import HealthCheck from '../HealthCheck' import HealthCheckInfo from 'components/HealthCheck/HealthCheckInfo' import isValidUrl from '../../utils/validate-url' import VisitSite from 'components/VisitSite' +import LocaleLink from 'components/LocaleLink' import styles from './styles' @@ -37,7 +37,7 @@ const NonCompliantRow = ({ producer, tokenPrice }) => { { if (x + 30 >= cx && x < cx) { @@ -84,7 +84,7 @@ const CustomBarLabel = memo( diff --git a/webapp/src/components/Sidebar/NavLink.js b/webapp/src/components/Sidebar/NavLink.js index 2334a1940..f7ba5d7cc 100644 --- a/webapp/src/components/Sidebar/NavLink.js +++ b/webapp/src/components/Sidebar/NavLink.js @@ -1,8 +1,13 @@ import React, { forwardRef } from 'react' +import { useTranslation } from 'react-i18next' import { NavLink as RouterNavLink } from 'react-router-dom' +import { getLocaleUrl } from '../../utils/url-localization' + const NavLink = forwardRef(function NavLink(props, ref) { - return + const { i18n } = useTranslation() + + return }) export default NavLink diff --git a/webapp/src/components/ViewBPProfile/index.js b/webapp/src/components/ViewBPProfile/index.js index 1f43fafda..edd5faf2b 100644 --- a/webapp/src/components/ViewBPProfile/index.js +++ b/webapp/src/components/ViewBPProfile/index.js @@ -1,10 +1,11 @@ import React from 'react' -import { Link } from 'react-router-dom' import { makeStyles } from '@mui/styles' import Button from '@mui/material/Button' import { eosConfig } from '../../config' +import LocaleLink from 'components/LocaleLink' + import styles from './styles' const useStyles = makeStyles(styles) @@ -16,7 +17,7 @@ const ViewBPProfile = ({ producer, text }) => { - + ) } diff --git a/webapp/src/components/Header/styles.js b/webapp/src/components/Header/styles.js index 8c8396c69..ba5286b81 100644 --- a/webapp/src/components/Header/styles.js +++ b/webapp/src/components/Header/styles.js @@ -47,7 +47,6 @@ export default (theme) => ({ }, [theme.breakpoints.down('sm')]: { maxWidth: '250px', - gap: 0, justifyContent: 'end', }, }, diff --git a/webapp/src/components/Sidebar/index.js b/webapp/src/components/Sidebar/index.js index 693f1dd20..d22db236d 100644 --- a/webapp/src/components/Sidebar/index.js +++ b/webapp/src/components/Sidebar/index.js @@ -3,7 +3,6 @@ import PropTypes from 'prop-types' import { Collapse, Drawer as MuiDrawer, - Hidden, List as MuiList, ListItem as MuiListItem, Typography, @@ -11,13 +10,11 @@ import { Tooltip, } from '@mui/material' import MenuIcon from '@mui/icons-material/Menu' -import LanguageIcon from '@mui/icons-material/Language' import { makeStyles } from '@mui/styles' import { useLocation } from 'react-router-dom' import { useTranslation } from 'react-i18next' import PerfectScrollbar from 'react-perfect-scrollbar' import 'react-perfect-scrollbar/dist/css/styles.css' -import moment from 'moment' import routes from '../../routes' @@ -53,7 +50,6 @@ const Sidebar = ({ classes, staticContext, onDrawerToggle, ...rest }) => { } const [openRoutes, setOpenRoutes] = useState(() => initOpenRoutes()) - const { i18n } = useTranslation('translations') const toggle = (index) => { // Collapse all elements @@ -71,30 +67,6 @@ const Sidebar = ({ classes, staticContext, onDrawerToggle, ...rest }) => { ) } - const LanguageSelector = () => { - return ( - - - {t('options')} - - sidebar')} - icon={} - activeclassname="active" - showOnlyIcons={!rest.open} - classes={classesStyle} - onClick={() => { - moment.locale(i18n.language === 'es' ? 'en' : 'es') - i18n.changeLanguage(i18n.language === 'es' ? 'en' : 'es') - }} - /> - - ) - } - return ( { ))} - - - diff --git a/webapp/src/language/en.json b/webapp/src/language/en.json index 2532b982c..88b686995 100644 --- a/webapp/src/language/en.json +++ b/webapp/src/language/en.json @@ -44,7 +44,6 @@ "moreInfo": "More Info", "openLink": "Visit Site", "table": "Table", - "options": "Options", "noOptions": "No matches", "updatedAt": "Updated at", "nextUpdateAt": "Next update at", @@ -128,7 +127,6 @@ "readMore": "Read more", "readLess": "Read less", "moreDescription": "This is a read more text component for users that either need a bit of help or are new to the system. A clear but not too extensive set of terms and instructions can help users get going without having to over write titles or labels like the one on the search card below. Take a look! A third line is also possible and probably more than enough.", - "setLanguage>sidebar": "Change to Spanish - ES", "/rewards-distribution>moreDescription": "A geographic visualization of daily block producer rewards and a list of undiscoverable paid block producers.", "/undiscoverable-bps>moreDescription": "A list of the paid block producers on the network which do not provide information in their BP.json files.", "/bpjson>moreDescription": "A tool for block producers to provide details of their organizations and nodes to comply with the BP information standard.", diff --git a/webapp/src/language/es.json b/webapp/src/language/es.json index cf104da37..c019848cd 100644 --- a/webapp/src/language/es.json +++ b/webapp/src/language/es.json @@ -55,7 +55,6 @@ "moreInfo": "Más Información", "openLink": "Visitar Sitio", "table": "Tabla", - "options": "Opciones", "noOptions": "Sin coincidencias", "updatedAt": "Última actualización", "nextUpdateAt": "Próxima actualización", @@ -132,7 +131,6 @@ "readMore": "Ver más", "readLess": "Ver menos", "moreDescription": "Este es un componente de lectura de texto para los usuarios que necesitan un poco de ayuda o son nuevos en el sistema. Un conjunto claro pero no demasiado extenso de términos e instrucciones puede ayudar a los usuarios a comenzar sin tener que escribir demasiado sobre títulos o etiquetas como la que se encuentra en la tarjeta de búsqueda a continuación. ¡Echar un vistazo! Una tercera línea también es posible y probablemente más que suficiente.", - "setLanguage>sidebar": "Cambiar a Inglés - EN", "/rewards-distribution>moreDescription": "Distribución diaria de recompensas de BP por ubicación geográfica de los productores de bloques pagados.", "/undiscoverable-bps>moreDescription": "Una lista de los productores de bloques en la red que son pagados y no proveen información en sus archivos bp.json.", "/bpjson>moreDescription": "Una representación visual de los nodos actuales de la red.", From 3100f26c1fafd41b0c16aab9512ecbfba3ee5155 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 14 Nov 2023 09:49:48 -0600 Subject: [PATCH 27/75] chore(hapi-evm): reduce the number of old blocks sync per round --- hapi-evm/src/services/block.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hapi-evm/src/services/block.service.ts b/hapi-evm/src/services/block.service.ts index 5309552c7..7766009af 100644 --- a/hapi-evm/src/services/block.service.ts +++ b/hapi-evm/src/services/block.service.ts @@ -139,7 +139,7 @@ const syncOldBlocks = async (): Promise => { console.log( `🚦 Syncing blocks behind, pending ${nextBlockToNumber - nextBlock} ` ) - blocksInserted = Math.min(100, nextBlockToNumber - nextBlock) + blocksInserted = Math.min(25, nextBlockToNumber - nextBlock) const blockPromises = [] for (let index = 0; index < blocksInserted; index++) { blockPromises.push(syncFullBlock(nextBlock + index)) From db013fab0481184e7236e3c4c2c75dc72f898c89 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 14 Nov 2023 11:54:37 -0600 Subject: [PATCH 28/75] feat(webapp): change language selector to allow get the links and change language in html --- webapp/src/components/Header/index.js | 34 ++++++++++++++-------- webapp/src/components/Header/styles.js | 36 ++++++++++++++++++++++++ webapp/src/components/PageTitle/index.js | 5 +++- webapp/src/layouts/Dashboard.js | 1 + 4 files changed, 63 insertions(+), 13 deletions(-) diff --git a/webapp/src/components/Header/index.js b/webapp/src/components/Header/index.js index a37cbf55f..2f5171561 100644 --- a/webapp/src/components/Header/index.js +++ b/webapp/src/components/Header/index.js @@ -1,10 +1,10 @@ import React, { useState, lazy, Suspense } from 'react' import { useLocation } from 'react-router-dom' import PropTypes from 'prop-types' +import clsx from 'clsx' import { makeStyles } from '@mui/styles' +import Card from '@mui/material/Card' import Hidden from '@mui/material/Hidden' -import Menu from '@mui/material/Menu' -import MenuItem from '@mui/material/MenuItem' import AppBar from '@mui/material/AppBar' import IconButton from '@mui/material/IconButton' import Skeleton from '@mui/material/Skeleton' @@ -25,7 +25,7 @@ const AuthButton = lazy(() => import('./AuthButton')) const useStyles = makeStyles(styles) -const languages = generalConfig.languages.map(language => ({ +const languages = generalConfig.languages.map((language) => ({ value: language, label: language.toUpperCase(), })) @@ -67,28 +67,38 @@ const LanguageMenu = () => { - + - {languages.map((language) => ( - ( + ))} - + ) } diff --git a/webapp/src/components/Header/styles.js b/webapp/src/components/Header/styles.js index ba5286b81..6679d704b 100644 --- a/webapp/src/components/Header/styles.js +++ b/webapp/src/components/Header/styles.js @@ -149,4 +149,40 @@ export default (theme) => ({ color: theme.palette.primary.contrastText, }, }, + hideMenu: { + maxHeight: 0, + margin: 0, + zIndex: 2, + width: 50, + position: 'absolute', + padding: '0 !important', + transition: 'none !important', + overflow: 'hidden !important', + boxShadow: 'none !important', + }, + languageMenu: { + maxHeight: 1000, + maxWidth: 50, + opacity: 1, + boxShadow: `${theme.palette.shadows.card} !important`, + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + top: 60, + left: 'calc(100% - 70px)' + }, + hideElement: { + height: 0, + width: 0, + display: 'none', + }, + popOverBackground: { + display: 'initial', + width: '100%', + height: '100vh', + position: 'absolute', + top: 0, + left: 0, + zIndex: 1 + }, }) diff --git a/webapp/src/components/PageTitle/index.js b/webapp/src/components/PageTitle/index.js index 7c05bdcc0..650f3863b 100644 --- a/webapp/src/components/PageTitle/index.js +++ b/webapp/src/components/PageTitle/index.js @@ -4,8 +4,9 @@ import PropTypes from 'prop-types' import { generalConfig } from '../../config' -const PageTitle = ({ title, metaTitle, metaDescription, ldJson }) => ( +const PageTitle = ({ title, metaTitle, metaDescription, ldJson, language }) => ( + {language && } {title} @@ -19,6 +20,7 @@ PageTitle.propTypes = { title: PropTypes.string, metaTitle: PropTypes.string, metaDescription: PropTypes.string, + language: PropTypes.string, } PageTitle.defaultProps = { @@ -26,6 +28,7 @@ PageTitle.defaultProps = { metaTitle: '', metaDescription: '', ldJson: null, + language: '' } export default PageTitle diff --git a/webapp/src/layouts/Dashboard.js b/webapp/src/layouts/Dashboard.js index 0b89b3360..831c47ceb 100644 --- a/webapp/src/layouts/Dashboard.js +++ b/webapp/src/layouts/Dashboard.js @@ -115,6 +115,7 @@ const Dashboard = ({ children }) => { Date: Tue, 14 Nov 2023 13:44:32 -0600 Subject: [PATCH 29/75] chore(webapp): add remove language from url --- webapp/src/layouts/Dashboard.js | 4 ++-- webapp/src/utils/url-localization.js | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/webapp/src/layouts/Dashboard.js b/webapp/src/layouts/Dashboard.js index 831c47ceb..298db9272 100644 --- a/webapp/src/layouts/Dashboard.js +++ b/webapp/src/layouts/Dashboard.js @@ -21,7 +21,7 @@ import { useSharedState } from '../context/state.context' import routes from '../routes' import styles from './styles' -import { getLanguageFromURL, getLocaleUrl } from 'utils/url-localization' +import { getLocaleUrl, getLanguageFromURL, removeLanguageFromURL } from 'utils/url-localization' const drawerWidth = 70 const openDrawerWidth = drawerWidth * (24 / 7) @@ -65,7 +65,7 @@ const Dashboard = ({ children }) => { const selectedLanguage = getLanguageFromURL(path) if (selectedLanguage) { - path = path.substring(0, path.length - 3) || '/' + path = removeLanguageFromURL(path) if (selectedLanguage !== i18n.language) { moment.locale(selectedLanguage) diff --git a/webapp/src/utils/url-localization.js b/webapp/src/utils/url-localization.js index 69871fd48..0badd877f 100644 --- a/webapp/src/utils/url-localization.js +++ b/webapp/src/utils/url-localization.js @@ -26,6 +26,12 @@ export const getLanguageFromURL = path => { return generalConfig.languages.find(lang => lang === language) } +export const removeLanguageFromURL = path => { + const language = getLanguageFromURL(path) + + return language ? path.substring(0, path.length - 3) || '/' : path +} + export const localizeRoutes = routes => { const languages = generalConfig.languages.filter( language => language !== generalConfig.defaultLanguage, From ee44d9d408f239374cbde22990622ad0ebade7e9 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 14 Nov 2023 13:53:25 -0600 Subject: [PATCH 30/75] chore(webapp): improve spanish translation --- webapp/src/language/es.json | 36 ++++++++++++------------- webapp/src/language/es.lacchain.json | 8 +++--- webapp/src/language/es.xpr-testnet.json | 26 +++++++++--------- webapp/src/language/es.xpr.json | 26 +++++++++--------- 4 files changed, 48 insertions(+), 48 deletions(-) diff --git a/webapp/src/language/es.json b/webapp/src/language/es.json index c019848cd..849cbe49e 100644 --- a/webapp/src/language/es.json +++ b/webapp/src/language/es.json @@ -66,59 +66,59 @@ "/>title": "Monitor de infraestructura y panel de control de la red {{networkName}}", "/>heading": "Bienvenido a {{networkName}}", "/cpu-benchmark>sidebar": "Benchmark de CPU", - "/cpu-benchmark>title": "Benchmark de CPU - Panel de red de {{networkName}}", + "/cpu-benchmark>title": "Benchmark de CPU - Monitor de red de {{networkName}}", "/cpu-benchmark>heading": "Benchmark de CPU en {{networkName}}", "/block-producers>sidebar": "Productores de Bloques", - "/block-producers>title": "Productores de Bloques - Panel de red de {{networkName}}", + "/block-producers>title": "Productores de Bloques - Monitor de red de {{networkName}}", "/block-producers>heading": "Productores de Bloques en {{networkName}}", "/block-producers/bpName>heading": "Perfil de Block Producer", "/entities/bpName>heading": "Perfil de Entidad", "/undiscoverable-bps>sidebar": "Productores Indetectables", - "/undiscoverable-bps>title": "Productores de Bloques Indetectables - Panel de red de {{networkName}}", + "/undiscoverable-bps>title": "Productores de Bloques Indetectables - Monitor de red de {{networkName}}", "/undiscoverable-bps>heading": "Productores de Bloques Pagados e Indetectables en {{networkName}}", "/rewards-distribution>sidebar": "Distribución de recompensas", - "/rewards-distribution>title": "Distribución de recompensas - Panel de red de {{networkName}}", + "/rewards-distribution>title": "Distribución de recompensas - Monitor de red de {{networkName}}", "/rewards-distribution>heading": "Distribución de recompensas de {{networkName}}", "/nodes>sidebar": "Nodos", - "/nodes>title": "Nodos - Panel de red de {{networkName}}", + "/nodes>title": "Nodos - Monitor de red de {{networkName}}", "/nodes>heading": "Nodos en {{networkName}}", "/nodes-distribution>sidebar": "Geo Distribución", - "/nodes-distribution>title": "Distribución Geográfica de Nodos - Panel de red de {{networkName}}", + "/nodes-distribution>title": "Distribución Geográfica de Nodos - Monitor de red de {{networkName}}", "/nodes-distribution>heading": "Distribución Geográfica de los nodos de {{networkName}}", - "/stress-test>title": "Panel de Prueba de Estrés - Panel de red de {{networkName}}", + "/stress-test>title": "Panel de Prueba de Estrés - Monitor de red de {{networkName}}", "/stress-test>sidebar": "Prueba de Estrés", "/stress-test>heading": "Prueba de Estrés en {{networkName}}", "/accounts>sidebar": "Cuentas y Contratos", - "/accounts>title": "Cuentas y Contratos - Panel de red de {{networkName}}", + "/accounts>title": "Cuentas y Contratos - Monitor de red de {{networkName}}", "/accounts>heading": "Cuentas y Contratos de {{networkName}}", "/bpjson>sidebar": "BP JSON", - "/bpjson>title": "BP JSON - Panel de red de {{networkName}}", + "/bpjson>title": "BP JSON - Monitor de red de {{networkName}}", "/bpjson>heading": "BP JSON", "/faucet>sidebar": "Crear Cuenta y Faucet", - "/faucet>title": "Crear una Cuenta y Grifo de Tokens - Panel de red de {{networkName}}", + "/faucet>title": "Crear una Cuenta y Grifo de Tokens - Monitor de red de {{networkName}}", "/faucet>heading": "Crear una Cuenta de {{networkName}} y Obtenga Tokens", "/ricardian-contract>sidebar": "Acuerdo de Productor de Bloques", - "/ricardian-contract>title": "Acuerdo de Productor de Bloques - Panel de red de {{networkName}}", + "/ricardian-contract>title": "Acuerdo de Productor de Bloques - Monitor de red de {{networkName}}", "/ricardian-contract>heading": "Acuerdo de Productor de Bloques en {{networkName}}", "/block-distribution>sidebar": "Distribución de bloques", - "/block-distribution>title": "Distribución de bloques - Panel de red de {{networkName}}", + "/block-distribution>title": "Distribución de bloques - Monitor de red de {{networkName}}", "/block-distribution>heading": "Distribución de bloques en {{networkName}}", - "/missed-blocks>title": "$t(missedBlocks) - Panel de red de {{networkName}}", + "/missed-blocks>title": "$t(missedBlocks) - Monitor de red de {{networkName}}", "/missed-blocks>heading": "$t(missedBlocks) en {{networkName}}", "/endpoints>sidebar": "URL's", - "/endpoints>title": "URL's - Panel de red de {{networkName}}", + "/endpoints>title": "URL's - Monitor de red de {{networkName}}", "/endpoints>heading": "URL's de {{networkName}}", "/endpoints-stats>sidebar": "Estadísticas de URL's", - "/endpoints-stats>title": "Estadísticas de URL's - Panel de red de {{networkName}}", + "/endpoints-stats>title": "Estadísticas de URL's - Monitor de red de {{networkName}}", "/endpoints-stats>heading": "Estadísticas de puntos finales de {{networkName}}", - "/evm>title": "EVM Dashboard - Panel de red de {{networkName}}", - "/evm-rpc-endpoints>title": "EVM RPC Endpoints - Panel de red de {{networkName}}", + "/evm>title": "EVM Dashboard - Monitor de red de {{networkName}}", + "/evm-rpc-endpoints>title": "EVM RPC Endpoints - Monitor de red de {{networkName}}", "/about>sidebar": "Acerca de", "/about>title": "Acerca de - Monitor de Infraestructura Blockchain de {{networkName}}", "/about>heading": "Acerca de Antelope Tools", "/about>moreDescription": "Conozca más sobre Edenia y Antelope Tools su importancia y como puede involucrarse", "/help>sidebar": "Ayuda", - "/help>title": "Ayuda - Panel de red de {{networkName}}", + "/help>title": "Ayuda - Monitor de red de {{networkName}}", "/help>heading": "Bienvenidos al Centro de Ayuda de Antelope Tools", "/help>moreDescription": "Revise como se usa el estándar bp.json, resuelva la ausencia de datos de BP y contáctenos si tiene alguna sugerencia", "networkInformation": "Información de la red", diff --git a/webapp/src/language/es.lacchain.json b/webapp/src/language/es.lacchain.json index 620d46d49..57b3ca07b 100644 --- a/webapp/src/language/es.lacchain.json +++ b/webapp/src/language/es.lacchain.json @@ -1,16 +1,16 @@ { "routes": { "/entities>sidebar": "Entidades", - "/entities>title": "Entities - Panel de red de {{networkName}}", + "/entities>title": "Entities - Monitor de red de {{networkName}}", "/entities>heading": "Entities", "/lacchain/network>sidebar": "Topología de red", - "/lacchain/network>title": "Topología de red - Panel de red de {{networkName}}", + "/lacchain/network>title": "Topología de red - Monitor de red de {{networkName}}", "/lacchain/network>heading": "Topología de red", "/management>sidebar": "Administración", - "/management>title": "Administración - Panel de red de {{networkName}}", + "/management>title": "Administración - Monitor de red de {{networkName}}", "/management>heading": "Administración", "/node-config>sidebar": "Configuración de nodo", - "/node-config>title": "Configuración de nodo - Panel de red de {{networkName}}", + "/node-config>title": "Configuración de nodo - Monitor de red de {{networkName}}", "/node-config>heading": "Configurar un nuevo nodo", "/ricardian-contract>sidebar": "Acuerdo de Nodos Validadores", "/ricardian-contract>heading": "", diff --git a/webapp/src/language/es.xpr-testnet.json b/webapp/src/language/es.xpr-testnet.json index 0003f7df4..c6659aa13 100644 --- a/webapp/src/language/es.xpr-testnet.json +++ b/webapp/src/language/es.xpr-testnet.json @@ -1,18 +1,18 @@ { "routes": { "/>title": "Monitor de infraestructura y panel de control de {{networkName}}", - "/cpu-benchmark>title": "Benchmark de CPU - Panel de {{networkName}}", - "/block-producers>title": "Productores de Bloques - Panel de {{networkName}}", - "/rewards-distribution>title": "Distribución de recompensas - Panel de {{networkName}}", - "/nodes>title": "Nodos - Panel de {{networkName}}", - "/nodes-distribution>title": "Distribución Geográfica de Nodos - Panel de {{networkName}}", - "/accounts>title": "Cuentas y Contratos - Panel de {{networkName}}", - "/bpjson>title": "BP JSON - Panel de {{networkName}}", - "/ricardian-contract>title": "Acuerdo de Productor de Bloques - Panel de {{networkName}}", - "/block-distribution>title": "Distribución de bloques - Panel de {{networkName}}", - "/endpoints>title": "URL's - Panel de {{networkName}}", - "/endpoints-stats>title": "Estadísticas de URL's - Panel de {{networkName}}", - "/about>title": "Acerca de - Panel de {{networkName}}", - "/help>title": "Ayuda - Panel de {{networkName}}" + "/cpu-benchmark>title": "Benchmark de CPU - Monitor de {{networkName}}", + "/block-producers>title": "Productores de Bloques - Monitor de {{networkName}}", + "/rewards-distribution>title": "Distribución de recompensas - Monitor de {{networkName}}", + "/nodes>title": "Nodos - Monitor de {{networkName}}", + "/nodes-distribution>title": "Distribución Geográfica de Nodos - Monitor de {{networkName}}", + "/accounts>title": "Cuentas y Contratos - Monitor de {{networkName}}", + "/bpjson>title": "BP JSON - Monitor de {{networkName}}", + "/ricardian-contract>title": "Acuerdo de Productor de Bloques - Monitor de {{networkName}}", + "/block-distribution>title": "Distribución de bloques - Monitor de {{networkName}}", + "/endpoints>title": "URL's - Monitor de {{networkName}}", + "/endpoints-stats>title": "Estadísticas de URL's - Monitor de {{networkName}}", + "/about>title": "Acerca de - Monitor de {{networkName}}", + "/help>title": "Ayuda - Monitor de {{networkName}}" } } diff --git a/webapp/src/language/es.xpr.json b/webapp/src/language/es.xpr.json index 8e6ba2649..40e9615ac 100644 --- a/webapp/src/language/es.xpr.json +++ b/webapp/src/language/es.xpr.json @@ -1,18 +1,18 @@ { "routes": { "/>title": "Monitor de infraestructura y panel de control de red {{networkName}}", - "/cpu-benchmark>title": "Benchmark de CPU - Panel de {{networkName}}", - "/block-producers>title": "Productores de Bloques - Panel de {{networkName}}", - "/rewards-distribution>title": "Distribución de recompensas - Panel de {{networkName}}", - "/nodes>title": "Nodos - Panel de {{networkName}}", - "/nodes-distribution>title": "Distribución Geográfica de Nodos - Panel de {{networkName}}", - "/accounts>title": "Cuentas y Contratos - Panel de {{networkName}}", - "/bpjson>title": "BP JSON - Panel de {{networkName}}", - "/ricardian-contract>title": "Acuerdo de Productor de Bloques - Panel de {{networkName}}", - "/block-distribution>title": "Distribución de bloques - Panel de {{networkName}}", - "/endpoints>title": "URL's - Panel de {{networkName}}", - "/endpoints-stats>title": "Estadísticas de URL's - Panel de {{networkName}}", - "/about>title": "Acerca de - Panel de {{networkName}}", - "/help>title": "Ayuda - Panel de {{networkName}}" + "/cpu-benchmark>title": "Benchmark de CPU - Monitor de {{networkName}}", + "/block-producers>title": "Productores de Bloques - Monitor de {{networkName}}", + "/rewards-distribution>title": "Distribución de recompensas - Monitor de {{networkName}}", + "/nodes>title": "Nodos - Monitor de {{networkName}}", + "/nodes-distribution>title": "Distribución Geográfica de Nodos - Monitor de {{networkName}}", + "/accounts>title": "Cuentas y Contratos - Monitor de {{networkName}}", + "/bpjson>title": "BP JSON - Monitor de {{networkName}}", + "/ricardian-contract>title": "Acuerdo de Productor de Bloques - Monitor de {{networkName}}", + "/block-distribution>title": "Distribución de bloques - Monitor de {{networkName}}", + "/endpoints>title": "URL's - Monitor de {{networkName}}", + "/endpoints-stats>title": "Estadísticas de URL's - Monitor de {{networkName}}", + "/about>title": "Acerca de - Monitor de {{networkName}}", + "/help>title": "Ayuda - Monitor de {{networkName}}" } } From 1eb388e112ba2bbd931df3d2408a91189e8a889d Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 14 Nov 2023 14:25:48 -0600 Subject: [PATCH 31/75] fix(webapp): fix language selector alignment --- webapp/src/components/Header/index.js | 36 +++++++++++---------- webapp/src/components/Header/styles.js | 45 +++++++++++++++----------- 2 files changed, 45 insertions(+), 36 deletions(-) diff --git a/webapp/src/components/Header/index.js b/webapp/src/components/Header/index.js index 2f5171561..a9211208b 100644 --- a/webapp/src/components/Header/index.js +++ b/webapp/src/components/Header/index.js @@ -79,26 +79,28 @@ const LanguageMenu = () => { })} onClick={closeMenu} > - - {languages.map(language => ( - - ))} - + + {languages.map(language => ( + + ))} + + ) } diff --git a/webapp/src/components/Header/styles.js b/webapp/src/components/Header/styles.js index 6679d704b..f05a9dd55 100644 --- a/webapp/src/components/Header/styles.js +++ b/webapp/src/components/Header/styles.js @@ -149,27 +149,34 @@ export default (theme) => ({ color: theme.palette.primary.contrastText, }, }, - hideMenu: { - maxHeight: 0, - margin: 0, - zIndex: 2, - width: 50, - position: 'absolute', - padding: '0 !important', - transition: 'none !important', - overflow: 'hidden !important', - boxShadow: 'none !important', + hiddenlanguageMenu: { + width: 0, + height: 0, + '& > div': { + maxHeight: 0, + margin: 0, + zIndex: 2, + width: 0, + position: 'relative', + padding: '0 !important', + transition: 'none !important', + overflow: 'hidden !important', + boxShadow: 'none !important', + } }, languageMenu: { - maxHeight: 1000, - maxWidth: 50, - opacity: 1, - boxShadow: `${theme.palette.shadows.card} !important`, - display: 'flex', - flexDirection: 'column', - alignItems: 'center', - top: 60, - left: 'calc(100% - 70px)' + '& > div': { + maxWidth: 50, + width: 50, + maxHeight: 1000, + opacity: 1, + top: 25, + left: 'calc(100% - 65px)', + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + boxShadow: `${theme.palette.shadows.card} !important` + } }, hideElement: { height: 0, From 38560244c9520ad3a871e6eea012b22e578c531f Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 14 Nov 2023 15:56:00 -0600 Subject: [PATCH 32/75] fix(webapp): add the language before the path --- webapp/src/components/LocaleLink/index.js | 4 +-- .../src/components/NetworkSelector/index.js | 6 ++-- webapp/src/components/Sidebar/NavLink.js | 4 +-- webapp/src/layouts/Dashboard.js | 16 +++++++---- webapp/src/utils/url-localization.js | 28 +++++++++---------- 5 files changed, 31 insertions(+), 27 deletions(-) diff --git a/webapp/src/components/LocaleLink/index.js b/webapp/src/components/LocaleLink/index.js index 9ac6ca3a9..e4a35bccc 100644 --- a/webapp/src/components/LocaleLink/index.js +++ b/webapp/src/components/LocaleLink/index.js @@ -2,12 +2,12 @@ import React from 'react' import { useTranslation } from 'react-i18next' import { Link } from 'react-router-dom' -import { getLocaleUrl } from '../../utils/url-localization' +import { getLocalePath } from '../../utils/url-localization' const LocaleLink = props => { const { i18n } = useTranslation() - return + return } export default LocaleLink diff --git a/webapp/src/components/NetworkSelector/index.js b/webapp/src/components/NetworkSelector/index.js index 265c307c9..695395e21 100644 --- a/webapp/src/components/NetworkSelector/index.js +++ b/webapp/src/components/NetworkSelector/index.js @@ -16,7 +16,7 @@ import eosImg from '../../assets/eos.webp' import airwireImg from '../../assets/airwire.png' import ultraImg from '../../assets/ultra.webp' import libreImg from '../../assets/libre.webp' -import { getLocaleUrl } from 'utils/url-localization' +import { getLocalePath } from 'utils/url-localization' import styles from './styles' @@ -129,7 +129,7 @@ const NetworkSelector = ({ title, options, networkLogo }) => { [classes.listItemActive]: i === selected, })} > - + {option.label} @@ -146,7 +146,7 @@ const NetworkSelector = ({ title, options, networkLogo }) => { [classes.listItemActive]: i === selected, })} > - + {option.label} diff --git a/webapp/src/components/Sidebar/NavLink.js b/webapp/src/components/Sidebar/NavLink.js index f7ba5d7cc..7749d9f0e 100644 --- a/webapp/src/components/Sidebar/NavLink.js +++ b/webapp/src/components/Sidebar/NavLink.js @@ -2,12 +2,12 @@ import React, { forwardRef } from 'react' import { useTranslation } from 'react-i18next' import { NavLink as RouterNavLink } from 'react-router-dom' -import { getLocaleUrl } from '../../utils/url-localization' +import { getLocalePath } from '../../utils/url-localization' const NavLink = forwardRef(function NavLink(props, ref) { const { i18n } = useTranslation() - return + return }) export default NavLink diff --git a/webapp/src/layouts/Dashboard.js b/webapp/src/layouts/Dashboard.js index 298db9272..2a565cc18 100644 --- a/webapp/src/layouts/Dashboard.js +++ b/webapp/src/layouts/Dashboard.js @@ -21,7 +21,7 @@ import { useSharedState } from '../context/state.context' import routes from '../routes' import styles from './styles' -import { getLocaleUrl, getLanguageFromURL, removeLanguageFromURL } from 'utils/url-localization' +import { getLocalePath, getLanguageFromPath, removeLanguageFromPath } from 'utils/url-localization' const drawerWidth = 70 const openDrawerWidth = drawerWidth * (24 / 7) @@ -61,11 +61,17 @@ const Dashboard = ({ children }) => { const removeParam = route => route.substring(0, route.lastIndexOf('/')) useEffect(() => { - let path = location.pathname.replace(/\/$/, '') || '/' - const selectedLanguage = getLanguageFromURL(path) + const trailingSlashRegex = /\/$/ + let path = location.pathname + + if (path !== '/' && trailingSlashRegex.test(path)){ + navigate(path.replace(trailingSlashRegex, '')) + } + + const selectedLanguage = getLanguageFromPath(path) if (selectedLanguage) { - path = removeLanguageFromURL(path) + path = removeLanguageFromPath(path) if (selectedLanguage !== i18n.language) { moment.locale(selectedLanguage) @@ -77,7 +83,7 @@ const Dashboard = ({ children }) => { } } else { if (generalConfig.defaultLanguage !== i18n.language) { - navigate(getLocaleUrl(path + location.search, i18n.language)) + navigate(getLocalePath(path + location.search, i18n.language)) } } diff --git a/webapp/src/utils/url-localization.js b/webapp/src/utils/url-localization.js index 0badd877f..f17b367de 100644 --- a/webapp/src/utils/url-localization.js +++ b/webapp/src/utils/url-localization.js @@ -1,35 +1,34 @@ import { generalConfig } from '../config' -export const getLocaleUrl = (url, newLocale) => { +export const getLocalePath = (url, newLocale) => { let { 0: path, 1: search } = url.split('?') - const pathLanguage = getLanguageFromURL(path) + const pathLanguage = getLanguageFromPath(path) + const isDefaultLanguage = generalConfig.defaultLanguage === newLocale - if (generalConfig.defaultLanguage !== newLocale && pathLanguage === newLocale) - return url + if (!isDefaultLanguage && pathLanguage === newLocale) return url if (pathLanguage) { - path = path.substring(0, path.length - 3) + path = path.substring(3) } return ( + (!isDefaultLanguage ? `/${newLocale}` : '') + path + - (/\/$/.test(path) ? '' : '/') + - (generalConfig.defaultLanguage !== newLocale ? newLocale : '') + (search ? `?${search}` : '') ) } -export const getLanguageFromURL = path => { +export const getLanguageFromPath = path => { const { 0: pathname } = path.split('?') - const language = pathname.substring(pathname.length - 3).replace('/', '') + const language = pathname.substring(1, 4).replace(/\/$/, '') return generalConfig.languages.find(lang => lang === language) } -export const removeLanguageFromURL = path => { - const language = getLanguageFromURL(path) +export const removeLanguageFromPath = path => { + const language = getLanguageFromPath(path) - return language ? path.substring(0, path.length - 3) || '/' : path + return language ? path.substring(3) || '/' : path } export const localizeRoutes = routes => { @@ -41,10 +40,9 @@ export const localizeRoutes = routes => { routes.flatMap(route => route.path === '*' ? [] - : languages.map(language => ({ + : languages.map(lang => ({ ...route, - path: - route.path === '/' ? '/' + language : route.path + '/' + language, + path: getLocalePath(route.path, lang), })), ), ) From 2ce159bb89251415f47adbcf3b748e472c98c81e Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 14 Nov 2023 16:09:18 -0600 Subject: [PATCH 33/75] fix(webapp): fix hold ref in LocaleLink component --- webapp/src/components/LocaleLink/index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/webapp/src/components/LocaleLink/index.js b/webapp/src/components/LocaleLink/index.js index e4a35bccc..374acfabc 100644 --- a/webapp/src/components/LocaleLink/index.js +++ b/webapp/src/components/LocaleLink/index.js @@ -1,13 +1,13 @@ -import React from 'react' +import React, { forwardRef } from 'react' import { useTranslation } from 'react-i18next' import { Link } from 'react-router-dom' import { getLocalePath } from '../../utils/url-localization' -const LocaleLink = props => { +const LocaleLink = forwardRef((props, ref) => { const { i18n } = useTranslation() - return -} + return +}) export default LocaleLink From cb9e4748d1eb2934588beccebe3d1b682cc646b6 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 14 Nov 2023 17:10:40 -0600 Subject: [PATCH 34/75] refactor(webapp): split language files into separate folders --- .../src/components/NetworkSelector/index.js | 12 ++++ .../language/{ => en}/en.airwire-testnet.json | 0 webapp/src/language/{ => en}/en.airwire.json | 0 webapp/src/language/{ => en}/en.json | 0 webapp/src/language/{ => en}/en.jungle.json | 0 webapp/src/language/{ => en}/en.lacchain.json | 0 .../language/{ => en}/en.libre-testnet.json | 0 webapp/src/language/{ => en}/en.libre.json | 0 webapp/src/language/{ => en}/en.mainnet.json | 0 .../language/{ => en}/en.telos-testnet.json | 0 webapp/src/language/{ => en}/en.telos.json | 0 .../language/{ => en}/en.ultra-testnet.json | 0 .../src/language/{ => en}/en.wax-testnet.json | 0 webapp/src/language/{ => en}/en.wax.json | 0 .../src/language/{ => en}/en.xpr-testnet.json | 0 webapp/src/language/{ => en}/en.xpr.json | 0 webapp/src/language/en/index.js | 33 +++++++++ .../language/{ => es}/es.airwire-testnet.json | 0 webapp/src/language/{ => es}/es.airwire.json | 0 webapp/src/language/{ => es}/es.json | 0 webapp/src/language/{ => es}/es.jungle.json | 0 webapp/src/language/{ => es}/es.lacchain.json | 0 .../language/{ => es}/es.libre-testnet.json | 0 webapp/src/language/{ => es}/es.libre.json | 0 webapp/src/language/{ => es}/es.mainnet.json | 0 .../language/{ => es}/es.telos-testnet.json | 0 webapp/src/language/{ => es}/es.telos.json | 0 .../language/{ => es}/es.ultra-testnet.json | 0 .../src/language/{ => es}/es.wax-testnet.json | 0 webapp/src/language/{ => es}/es.wax.json | 0 .../src/language/{ => es}/es.xpr-testnet.json | 0 webapp/src/language/{ => es}/es.xpr.json | 0 webapp/src/language/es/index.js | 33 +++++++++ webapp/src/language/index.js | 68 ++----------------- 34 files changed, 84 insertions(+), 62 deletions(-) rename webapp/src/language/{ => en}/en.airwire-testnet.json (100%) rename webapp/src/language/{ => en}/en.airwire.json (100%) rename webapp/src/language/{ => en}/en.json (100%) rename webapp/src/language/{ => en}/en.jungle.json (100%) rename webapp/src/language/{ => en}/en.lacchain.json (100%) rename webapp/src/language/{ => en}/en.libre-testnet.json (100%) rename webapp/src/language/{ => en}/en.libre.json (100%) rename webapp/src/language/{ => en}/en.mainnet.json (100%) rename webapp/src/language/{ => en}/en.telos-testnet.json (100%) rename webapp/src/language/{ => en}/en.telos.json (100%) rename webapp/src/language/{ => en}/en.ultra-testnet.json (100%) rename webapp/src/language/{ => en}/en.wax-testnet.json (100%) rename webapp/src/language/{ => en}/en.wax.json (100%) rename webapp/src/language/{ => en}/en.xpr-testnet.json (100%) rename webapp/src/language/{ => en}/en.xpr.json (100%) create mode 100644 webapp/src/language/en/index.js rename webapp/src/language/{ => es}/es.airwire-testnet.json (100%) rename webapp/src/language/{ => es}/es.airwire.json (100%) rename webapp/src/language/{ => es}/es.json (100%) rename webapp/src/language/{ => es}/es.jungle.json (100%) rename webapp/src/language/{ => es}/es.lacchain.json (100%) rename webapp/src/language/{ => es}/es.libre-testnet.json (100%) rename webapp/src/language/{ => es}/es.libre.json (100%) rename webapp/src/language/{ => es}/es.mainnet.json (100%) rename webapp/src/language/{ => es}/es.telos-testnet.json (100%) rename webapp/src/language/{ => es}/es.telos.json (100%) rename webapp/src/language/{ => es}/es.ultra-testnet.json (100%) rename webapp/src/language/{ => es}/es.wax-testnet.json (100%) rename webapp/src/language/{ => es}/es.wax.json (100%) rename webapp/src/language/{ => es}/es.xpr-testnet.json (100%) rename webapp/src/language/{ => es}/es.xpr.json (100%) create mode 100644 webapp/src/language/es/index.js diff --git a/webapp/src/components/NetworkSelector/index.js b/webapp/src/components/NetworkSelector/index.js index 695395e21..1d31130da 100644 --- a/webapp/src/components/NetworkSelector/index.js +++ b/webapp/src/components/NetworkSelector/index.js @@ -74,6 +74,14 @@ const NetworkSelector = ({ title, options, networkLogo }) => { const [networks, setNetworks] = useState({ testnet: [], mainnet: [] }) const { i18n } = useTranslation('translations') + const openDropdown = () => { + setOpen(true) + } + + const closeDropdown = () => { + setOpen(false) + } + const toggleDropdown = () => { setOpen(!open) } @@ -125,6 +133,8 @@ const NetworkSelector = ({ title, options, networkLogo }) => { {networks.mainnet.map((option, i) => (
  • { {networks.testnet.map((option, i) => (
  • { if (languajes[`${languaje}.${eosConfig.networkName}`]) { return deepMerge( languajes[languaje], - languajes[`${languaje}.${eosConfig.networkName}`] + languajes[`${languaje}.${eosConfig.networkName}`], ) } @@ -78,5 +22,5 @@ const getLanguaje = (languaje) => { export default { en: getLanguaje('en'), - es: getLanguaje('es') + es: getLanguaje('es'), } From 1d121e54f8c5ad9a0dfc3513fa7245ae445d8c86 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Wed, 15 Nov 2023 10:20:12 -0600 Subject: [PATCH 35/75] chore(webapp): get the list of languages from the resources --- webapp/src/config/general.js | 5 ++++- webapp/src/i18n.js | 3 +-- webapp/src/language/es/es.json | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/webapp/src/config/general.js b/webapp/src/config/general.js index e068412b7..cb6f445ff 100644 --- a/webapp/src/config/general.js +++ b/webapp/src/config/general.js @@ -1,3 +1,5 @@ +import resources from '../language' + export const useRewards = process.env.REACT_APP_USE_REWARDS === 'true' export const useVotes = process.env.REACT_APP_USE_VOTES === 'true' export const title = process.env.REACT_APP_TITLE @@ -28,5 +30,6 @@ export const healthLights = Object.freeze({ yellowLight: 'yellowLight', redLight: 'redLight', }) -export const languages = ['en','es'] export const defaultLanguage = 'en' +export const languageResources = resources +export const languages = Object.keys(resources) diff --git a/webapp/src/i18n.js b/webapp/src/i18n.js index 31269a480..540bf063b 100644 --- a/webapp/src/i18n.js +++ b/webapp/src/i18n.js @@ -3,14 +3,13 @@ import LanguageDetector from 'i18next-browser-languagedetector' import { initReactI18next } from 'react-i18next' import { generalConfig } from './config' -import resources from './language' i18n .use(LanguageDetector) .use(initReactI18next) .init({ load: 'unspecific', - resources, + resources: generalConfig.languageResources, fallbackNS: 'common', fallbackLng: generalConfig.defaultLanguage, supportedLngs: generalConfig.languages, diff --git a/webapp/src/language/es/es.json b/webapp/src/language/es/es.json index 849cbe49e..8d7698dd5 100644 --- a/webapp/src/language/es/es.json +++ b/webapp/src/language/es/es.json @@ -62,7 +62,7 @@ "goBack": "Regresar" }, "routes": { - "/>sidebar": "Panel", + "/>sidebar": "Monitor", "/>title": "Monitor de infraestructura y panel de control de la red {{networkName}}", "/>heading": "Bienvenido a {{networkName}}", "/cpu-benchmark>sidebar": "Benchmark de CPU", @@ -85,7 +85,7 @@ "/nodes-distribution>sidebar": "Geo Distribución", "/nodes-distribution>title": "Distribución Geográfica de Nodos - Monitor de red de {{networkName}}", "/nodes-distribution>heading": "Distribución Geográfica de los nodos de {{networkName}}", - "/stress-test>title": "Panel de Prueba de Estrés - Monitor de red de {{networkName}}", + "/stress-test>title": "Monitor de Prueba de Estrés - Monitor de red de {{networkName}}", "/stress-test>sidebar": "Prueba de Estrés", "/stress-test>heading": "Prueba de Estrés en {{networkName}}", "/accounts>sidebar": "Cuentas y Contratos", From 46dd433c2a7584065bc3de04730ad863b8749738 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Thu, 16 Nov 2023 10:45:23 -0600 Subject: [PATCH 36/75] chore(webapp): add xhtml namespace to sitemaps --- webapp/public/sitemap.airwire-testnet.xml | 6 ++++-- webapp/public/sitemap.airwire.xml | 6 ++++-- webapp/public/sitemap.jungle.xml | 7 +++++-- webapp/public/sitemap.lacchain.xml | 7 +++++-- webapp/public/sitemap.libre-testnet.xml | 7 +++++-- webapp/public/sitemap.libre.xml | 7 +++++-- webapp/public/sitemap.mainnet.xml | 7 +++++-- webapp/public/sitemap.telos-testnet.xml | 6 ++++-- webapp/public/sitemap.telos.xml | 6 ++++-- webapp/public/sitemap.ultra-testnet.xml | 6 ++++-- webapp/public/sitemap.wax-testnet.xml | 6 ++++-- webapp/public/sitemap.wax.xml | 6 ++++-- webapp/public/sitemap.xpr-testnet.xml | 6 ++++-- webapp/public/sitemap.xpr.xml | 6 ++++-- 14 files changed, 61 insertions(+), 28 deletions(-) diff --git a/webapp/public/sitemap.airwire-testnet.xml b/webapp/public/sitemap.airwire-testnet.xml index 61e87734e..5196a3875 100644 --- a/webapp/public/sitemap.airwire-testnet.xml +++ b/webapp/public/sitemap.airwire-testnet.xml @@ -1,7 +1,9 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" + xmlns:xhtml="http://www.w3.org/1999/xhtml"> - https://dashboard.airwire-testnet.io/ + https://dashboard.airwire-testnet.io 2023-09-30 diff --git a/webapp/public/sitemap.airwire.xml b/webapp/public/sitemap.airwire.xml index eb70c29ce..e69811426 100644 --- a/webapp/public/sitemap.airwire.xml +++ b/webapp/public/sitemap.airwire.xml @@ -1,7 +1,9 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" + xmlns:xhtml="http://www.w3.org/1999/xhtml"> - https://dashboard.airwire.io/ + https://dashboard.airwire.io 2023-09-30 diff --git a/webapp/public/sitemap.jungle.xml b/webapp/public/sitemap.jungle.xml index 92bddbe2c..3c57041dd 100644 --- a/webapp/public/sitemap.jungle.xml +++ b/webapp/public/sitemap.jungle.xml @@ -1,6 +1,9 @@ - + - https://jungle.antelope.tools/ + https://jungle.antelope.tools 2023-09-30 diff --git a/webapp/public/sitemap.lacchain.xml b/webapp/public/sitemap.lacchain.xml index 2c0e60060..fe6061694 100644 --- a/webapp/public/sitemap.lacchain.xml +++ b/webapp/public/sitemap.lacchain.xml @@ -1,6 +1,9 @@ - + - https://lacchain.antelope.tools/ + https://lacchain.antelope.tools 2023-09-30 diff --git a/webapp/public/sitemap.libre-testnet.xml b/webapp/public/sitemap.libre-testnet.xml index 6b779f08f..7bf901100 100644 --- a/webapp/public/sitemap.libre-testnet.xml +++ b/webapp/public/sitemap.libre-testnet.xml @@ -1,6 +1,9 @@ - + - https://libre-testnet.antelope.tools/ + https://libre-testnet.antelope.tools 2023-09-30 diff --git a/webapp/public/sitemap.libre.xml b/webapp/public/sitemap.libre.xml index c51aa60fe..1512b4578 100644 --- a/webapp/public/sitemap.libre.xml +++ b/webapp/public/sitemap.libre.xml @@ -1,6 +1,9 @@ - + - https://libre.antelope.tools/ + https://libre.antelope.tools 2023-09-30 diff --git a/webapp/public/sitemap.mainnet.xml b/webapp/public/sitemap.mainnet.xml index 5ed326b62..5d5b60ddc 100644 --- a/webapp/public/sitemap.mainnet.xml +++ b/webapp/public/sitemap.mainnet.xml @@ -1,6 +1,9 @@ - + - https://eos.antelope.tools/ + https://eos.antelope.tools 2023-09-30 diff --git a/webapp/public/sitemap.telos-testnet.xml b/webapp/public/sitemap.telos-testnet.xml index c413b3a92..d26c0aea9 100644 --- a/webapp/public/sitemap.telos-testnet.xml +++ b/webapp/public/sitemap.telos-testnet.xml @@ -1,7 +1,9 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" + xmlns:xhtml="http://www.w3.org/1999/xhtml"> - https://telos-testnet.antelope.tools/ + https://telos-testnet.antelope.tools 2023-09-30 diff --git a/webapp/public/sitemap.telos.xml b/webapp/public/sitemap.telos.xml index 1025a02de..3b7dc69e8 100644 --- a/webapp/public/sitemap.telos.xml +++ b/webapp/public/sitemap.telos.xml @@ -1,7 +1,9 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" + xmlns:xhtml="http://www.w3.org/1999/xhtml"> - https://telos.antelope.tools/ + https://telos.antelope.tools 2023-09-30 diff --git a/webapp/public/sitemap.ultra-testnet.xml b/webapp/public/sitemap.ultra-testnet.xml index fc45481f1..37cf7b7ab 100644 --- a/webapp/public/sitemap.ultra-testnet.xml +++ b/webapp/public/sitemap.ultra-testnet.xml @@ -1,7 +1,9 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" + xmlns:xhtml="http://www.w3.org/1999/xhtml"> - https://ultra-testnet.antelope.tools/ + https://ultra-testnet.antelope.tools 2023-09-30 diff --git a/webapp/public/sitemap.wax-testnet.xml b/webapp/public/sitemap.wax-testnet.xml index d9e77f61e..afbe39ef8 100644 --- a/webapp/public/sitemap.wax-testnet.xml +++ b/webapp/public/sitemap.wax-testnet.xml @@ -1,7 +1,9 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" + xmlns:xhtml="http://www.w3.org/1999/xhtml"> - https://wax-testnet.antelope.tools/ + https://wax-testnet.antelope.tools 2023-09-30 diff --git a/webapp/public/sitemap.wax.xml b/webapp/public/sitemap.wax.xml index ddde62c3f..b338648ae 100644 --- a/webapp/public/sitemap.wax.xml +++ b/webapp/public/sitemap.wax.xml @@ -1,7 +1,9 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" + xmlns:xhtml="http://www.w3.org/1999/xhtml"> - https://wax.antelope.tools/ + https://wax.antelope.tools 2023-09-30 diff --git a/webapp/public/sitemap.xpr-testnet.xml b/webapp/public/sitemap.xpr-testnet.xml index 7d800d067..22282d6d3 100644 --- a/webapp/public/sitemap.xpr-testnet.xml +++ b/webapp/public/sitemap.xpr-testnet.xml @@ -1,7 +1,9 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" + xmlns:xhtml="http://www.w3.org/1999/xhtml"> - https://xpr-testnet.antelope.tools/ + https://xpr-testnet.antelope.tools 2023-09-30 diff --git a/webapp/public/sitemap.xpr.xml b/webapp/public/sitemap.xpr.xml index b912edb62..4eb612459 100644 --- a/webapp/public/sitemap.xpr.xml +++ b/webapp/public/sitemap.xpr.xml @@ -1,7 +1,9 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" + xmlns:xhtml="http://www.w3.org/1999/xhtml"> - https://xpr.antelope.tools/ + https://xpr.antelope.tools 2023-09-30 From 7d7fd5261216774db51fdc25d32ebc8e42a25aca Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Thu, 16 Nov 2023 11:20:48 -0600 Subject: [PATCH 37/75] chore(webapp): add priority to sitemaps --- webapp/public/sitemap.jungle.xml | 1 + webapp/public/sitemap.lacchain.xml | 1 + webapp/public/sitemap.libre-testnet.xml | 1 + webapp/public/sitemap.libre.xml | 1 + webapp/public/sitemap.mainnet.xml | 1 + webapp/public/sitemap.telos-testnet.xml | 1 + webapp/public/sitemap.telos.xml | 1 + webapp/public/sitemap.ultra-testnet.xml | 1 + webapp/public/sitemap.wax-testnet.xml | 1 + webapp/public/sitemap.wax.xml | 1 + webapp/public/sitemap.xpr-testnet.xml | 1 + webapp/public/sitemap.xpr.xml | 1 + 12 files changed, 12 insertions(+) diff --git a/webapp/public/sitemap.jungle.xml b/webapp/public/sitemap.jungle.xml index 3c57041dd..892dadbfe 100644 --- a/webapp/public/sitemap.jungle.xml +++ b/webapp/public/sitemap.jungle.xml @@ -4,6 +4,7 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> https://jungle.antelope.tools + 1.0 2023-09-30 diff --git a/webapp/public/sitemap.lacchain.xml b/webapp/public/sitemap.lacchain.xml index fe6061694..723777f45 100644 --- a/webapp/public/sitemap.lacchain.xml +++ b/webapp/public/sitemap.lacchain.xml @@ -4,6 +4,7 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> https://lacchain.antelope.tools + 1.0 2023-09-30 diff --git a/webapp/public/sitemap.libre-testnet.xml b/webapp/public/sitemap.libre-testnet.xml index 7bf901100..61cfbea69 100644 --- a/webapp/public/sitemap.libre-testnet.xml +++ b/webapp/public/sitemap.libre-testnet.xml @@ -4,6 +4,7 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> https://libre-testnet.antelope.tools + 1.0 2023-09-30 diff --git a/webapp/public/sitemap.libre.xml b/webapp/public/sitemap.libre.xml index 1512b4578..3a3549c3b 100644 --- a/webapp/public/sitemap.libre.xml +++ b/webapp/public/sitemap.libre.xml @@ -4,6 +4,7 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> https://libre.antelope.tools + 1.0 2023-09-30 diff --git a/webapp/public/sitemap.mainnet.xml b/webapp/public/sitemap.mainnet.xml index 5d5b60ddc..a4ad223c1 100644 --- a/webapp/public/sitemap.mainnet.xml +++ b/webapp/public/sitemap.mainnet.xml @@ -4,6 +4,7 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> https://eos.antelope.tools + 1.0 2023-09-30 diff --git a/webapp/public/sitemap.telos-testnet.xml b/webapp/public/sitemap.telos-testnet.xml index d26c0aea9..d97424e75 100644 --- a/webapp/public/sitemap.telos-testnet.xml +++ b/webapp/public/sitemap.telos-testnet.xml @@ -4,6 +4,7 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> https://telos-testnet.antelope.tools + 1.0 2023-09-30 diff --git a/webapp/public/sitemap.telos.xml b/webapp/public/sitemap.telos.xml index 3b7dc69e8..55aa0b05c 100644 --- a/webapp/public/sitemap.telos.xml +++ b/webapp/public/sitemap.telos.xml @@ -4,6 +4,7 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> https://telos.antelope.tools + 1.0 2023-09-30 diff --git a/webapp/public/sitemap.ultra-testnet.xml b/webapp/public/sitemap.ultra-testnet.xml index 37cf7b7ab..0f83ef42f 100644 --- a/webapp/public/sitemap.ultra-testnet.xml +++ b/webapp/public/sitemap.ultra-testnet.xml @@ -4,6 +4,7 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> https://ultra-testnet.antelope.tools + 1.0 2023-09-30 diff --git a/webapp/public/sitemap.wax-testnet.xml b/webapp/public/sitemap.wax-testnet.xml index afbe39ef8..46c740de0 100644 --- a/webapp/public/sitemap.wax-testnet.xml +++ b/webapp/public/sitemap.wax-testnet.xml @@ -4,6 +4,7 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> https://wax-testnet.antelope.tools + 1.0 2023-09-30 diff --git a/webapp/public/sitemap.wax.xml b/webapp/public/sitemap.wax.xml index b338648ae..fa8496732 100644 --- a/webapp/public/sitemap.wax.xml +++ b/webapp/public/sitemap.wax.xml @@ -4,6 +4,7 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> https://wax.antelope.tools + 1.0 2023-09-30 diff --git a/webapp/public/sitemap.xpr-testnet.xml b/webapp/public/sitemap.xpr-testnet.xml index 22282d6d3..19abf1095 100644 --- a/webapp/public/sitemap.xpr-testnet.xml +++ b/webapp/public/sitemap.xpr-testnet.xml @@ -4,6 +4,7 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> https://xpr-testnet.antelope.tools + 1.0 2023-09-30 diff --git a/webapp/public/sitemap.xpr.xml b/webapp/public/sitemap.xpr.xml index 4eb612459..288ab032f 100644 --- a/webapp/public/sitemap.xpr.xml +++ b/webapp/public/sitemap.xpr.xml @@ -4,6 +4,7 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> https://xpr.antelope.tools + 1.0 2023-09-30 From 1cb399616b8eaff75d931ee0d85d202cc9545bfa Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Fri, 17 Nov 2023 17:23:48 -0600 Subject: [PATCH 38/75] feat(hapi-evm): insert many txs and fix gas used by block --- hapi-evm/src/models/transaction/queries.ts | 28 ++++++++- hapi-evm/src/services/block.service.ts | 72 ++++++++++++---------- 2 files changed, 67 insertions(+), 33 deletions(-) diff --git a/hapi-evm/src/models/transaction/queries.ts b/hapi-evm/src/models/transaction/queries.ts index 560541960..c451cb252 100644 --- a/hapi-evm/src/models/transaction/queries.ts +++ b/hapi-evm/src/models/transaction/queries.ts @@ -96,8 +96,34 @@ export const add_or_modify = async (transaction: CappedTransaction) => { return data } +export const add_or_modify_many = async (transactions: CappedTransaction[]) => { + const mutation = gql` + mutation ($evm_transactions: [evm_transaction_insert_input!]!) { + insert_evm_transaction( + objects: $evm_transactions + on_conflict: { + constraint: transaction_pkey + update_columns: [block_hash, block_number, gas, gas_price, hash] + } + ) { + affected_rows + } + } + ` + const { insert_evm_transaction_one: data } = + await coreUtil.hasura.default.request( + mutation, + { + evm_transactions: transactions + } + ) + + return data +} + export default { exist, get, - add_or_modify + add_or_modify, + add_or_modify_many } diff --git a/hapi-evm/src/services/block.service.ts b/hapi-evm/src/services/block.service.ts index 7766009af..137a20070 100644 --- a/hapi-evm/src/services/block.service.ts +++ b/hapi-evm/src/services/block.service.ts @@ -1,5 +1,10 @@ import { Web3 } from 'web3' -import { Block, TransactionInfo, TransactionHash } from 'web3-types' +import { + Block, + TransactionInfo, + TransactionHash, + TransactionReceipt +} from 'web3-types' import { defaultModel, @@ -45,6 +50,21 @@ const syncFullBlock = async (blockNumber: number | bigint) => { timestamp: blockTimestamp } + if (block.transactions?.length && cappedBlock.gas_used <= 0) { + cappedBlock.gas_used = await cappedBlock.transactions.reduce( + async ( + total: Promise, + trxHash: TransactionHash + ): Promise => { + const transactionReceipt: TransactionReceipt = + await web3.eth.getTransactionReceipt(trxHash.toString()) + + return (await total) + Number(transactionReceipt?.gasUsed) + }, + Promise.resolve(0) + ) + } + try { await blockModel.queries.add_or_modify(cappedBlock) } catch (error: any) { @@ -64,41 +84,29 @@ const syncFullBlock = async (blockNumber: number | bigint) => { return } - await incrementTotalTransactions(block.transactions?.length) - - const transactionsPromises = [ - cappedBlock.transactions.reduce( - async ( - acc: Promise, - trxHash: TransactionHash - ): Promise => { - const transactionExist = await transactionModel.queries.exist(trxHash) - - if (transactionExist) { - return acc - } + if (!block.transactions?.length) return - const trx: TransactionInfo = await web3.eth.getTransaction( - trxHash.toString() - ) - - const customTrx: transactionModel.interfaces.CappedTransaction = { - block_hash: trx.blockHash!.toString(), - block_number: Number(trx.blockNumber), - gas: Number(trx.gas), - gas_price: Number(trx.gasPrice), - hash: trx.hash.toString() - } + await incrementTotalTransactions(block.transactions?.length) - await transactionModel.queries.add_or_modify(customTrx) + const cappedTransactions = await Promise.all( + cappedBlock.transactions.map(async (trxHash: TransactionHash) => { + const trx: TransactionInfo = await web3.eth.getTransaction( + trxHash.toString() + ) + + const customTrx: transactionModel.interfaces.CappedTransaction = { + block_hash: trx.blockHash!.toString(), + block_number: Number(trx.blockNumber), + gas: Number(trx.gas), + gas_price: Number(trx.gasPrice), + hash: trx.hash.toString() + } - return [...(await acc), customTrx] - }, - Promise.resolve([]) - ) - ] + return customTrx + }) + ) - await Promise.all(transactionsPromises) + await transactionModel.queries.add_or_modify_many(cappedTransactions) } const incrementTotalTransactions = async (transactionsCount: number) => { From fe635ecc8e6ef91afada9999d1615a34682ceff2 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Mon, 20 Nov 2023 09:45:12 -0600 Subject: [PATCH 39/75] chore(hapi-evm): update total of transactions after save them --- hapi-evm/src/services/block.service.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hapi-evm/src/services/block.service.ts b/hapi-evm/src/services/block.service.ts index 137a20070..0bdd129bd 100644 --- a/hapi-evm/src/services/block.service.ts +++ b/hapi-evm/src/services/block.service.ts @@ -86,8 +86,6 @@ const syncFullBlock = async (blockNumber: number | bigint) => { if (!block.transactions?.length) return - await incrementTotalTransactions(block.transactions?.length) - const cappedTransactions = await Promise.all( cappedBlock.transactions.map(async (trxHash: TransactionHash) => { const trx: TransactionInfo = await web3.eth.getTransaction( @@ -107,6 +105,7 @@ const syncFullBlock = async (blockNumber: number | bigint) => { ) await transactionModel.queries.add_or_modify_many(cappedTransactions) + await incrementTotalTransactions(block.transactions?.length) } const incrementTotalTransactions = async (transactionsCount: number) => { From 44d54878bf62b29aac991ad35c53c435cd180e27 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Mon, 20 Nov 2023 10:27:23 -0600 Subject: [PATCH 40/75] chore(webapp): format code --- webapp/src/components/Header/styles.js | 10 +++++----- webapp/src/components/LocaleLink/index.js | 8 +++++++- webapp/src/components/NetworkSelector/index.js | 10 ++++++++-- webapp/src/components/PageTitle/index.js | 2 +- webapp/src/components/Sidebar/NavLink.js | 8 +++++++- webapp/src/language/en/index.js | 2 +- webapp/src/language/es/index.js | 2 +- webapp/src/layouts/Dashboard.js | 8 ++++++-- 8 files changed, 36 insertions(+), 14 deletions(-) diff --git a/webapp/src/components/Header/styles.js b/webapp/src/components/Header/styles.js index f05a9dd55..fde124440 100644 --- a/webapp/src/components/Header/styles.js +++ b/webapp/src/components/Header/styles.js @@ -26,7 +26,7 @@ export default (theme) => ({ width: '70%', marginLeft: theme.spacing(2.5), }, - } + }, }, appBar: { height: '100%', @@ -162,7 +162,7 @@ export default (theme) => ({ transition: 'none !important', overflow: 'hidden !important', boxShadow: 'none !important', - } + }, }, languageMenu: { '& > div': { @@ -175,8 +175,8 @@ export default (theme) => ({ display: 'flex', flexDirection: 'column', alignItems: 'center', - boxShadow: `${theme.palette.shadows.card} !important` - } + boxShadow: `${theme.palette.shadows.card} !important`, + }, }, hideElement: { height: 0, @@ -190,6 +190,6 @@ export default (theme) => ({ position: 'absolute', top: 0, left: 0, - zIndex: 1 + zIndex: 1, }, }) diff --git a/webapp/src/components/LocaleLink/index.js b/webapp/src/components/LocaleLink/index.js index 374acfabc..c55f3e4b8 100644 --- a/webapp/src/components/LocaleLink/index.js +++ b/webapp/src/components/LocaleLink/index.js @@ -7,7 +7,13 @@ import { getLocalePath } from '../../utils/url-localization' const LocaleLink = forwardRef((props, ref) => { const { i18n } = useTranslation() - return + return ( + + ) }) export default LocaleLink diff --git a/webapp/src/components/NetworkSelector/index.js b/webapp/src/components/NetworkSelector/index.js index 1d31130da..6f5905c21 100644 --- a/webapp/src/components/NetworkSelector/index.js +++ b/webapp/src/components/NetworkSelector/index.js @@ -139,7 +139,10 @@ const NetworkSelector = ({ title, options, networkLogo }) => { [classes.listItemActive]: i === selected, })} > - + {option.label} @@ -158,7 +161,10 @@ const NetworkSelector = ({ title, options, networkLogo }) => { [classes.listItemActive]: i === selected, })} > - + {option.label} diff --git a/webapp/src/components/PageTitle/index.js b/webapp/src/components/PageTitle/index.js index 650f3863b..3beda7152 100644 --- a/webapp/src/components/PageTitle/index.js +++ b/webapp/src/components/PageTitle/index.js @@ -28,7 +28,7 @@ PageTitle.defaultProps = { metaTitle: '', metaDescription: '', ldJson: null, - language: '' + language: '', } export default PageTitle diff --git a/webapp/src/components/Sidebar/NavLink.js b/webapp/src/components/Sidebar/NavLink.js index 7749d9f0e..df7980078 100644 --- a/webapp/src/components/Sidebar/NavLink.js +++ b/webapp/src/components/Sidebar/NavLink.js @@ -7,7 +7,13 @@ import { getLocalePath } from '../../utils/url-localization' const NavLink = forwardRef(function NavLink(props, ref) { const { i18n } = useTranslation() - return + return ( + + ) }) export default NavLink diff --git a/webapp/src/language/en/index.js b/webapp/src/language/en/index.js index 3572955de..14ebdc343 100644 --- a/webapp/src/language/en/index.js +++ b/webapp/src/language/en/index.js @@ -29,5 +29,5 @@ export default { 'en.wax-testnet': enWaxTestnet, 'en.airwire': enAirwire, 'en.airwire-testnet': enAirwireTestnet, - 'en.ultra-testnet': enUltraTestnet + 'en.ultra-testnet': enUltraTestnet, } diff --git a/webapp/src/language/es/index.js b/webapp/src/language/es/index.js index f139c97f9..930169aa7 100644 --- a/webapp/src/language/es/index.js +++ b/webapp/src/language/es/index.js @@ -30,4 +30,4 @@ export default { 'es.airwire': esAirwire, 'es.airwire-testnet': esAirwireTestnet, 'es.ultra-testnet': esUltraTestnet, -} \ No newline at end of file +} diff --git a/webapp/src/layouts/Dashboard.js b/webapp/src/layouts/Dashboard.js index 2a565cc18..875e2a58c 100644 --- a/webapp/src/layouts/Dashboard.js +++ b/webapp/src/layouts/Dashboard.js @@ -19,9 +19,13 @@ import SnackbarMessage from '../components/SnackbarMessage' import { eosConfig, generalConfig } from '../config' import { useSharedState } from '../context/state.context' import routes from '../routes' +import { + getLocalePath, + getLanguageFromPath, + removeLanguageFromPath, +} from 'utils/url-localization' import styles from './styles' -import { getLocalePath, getLanguageFromPath, removeLanguageFromPath } from 'utils/url-localization' const drawerWidth = 70 const openDrawerWidth = drawerWidth * (24 / 7) @@ -64,7 +68,7 @@ const Dashboard = ({ children }) => { const trailingSlashRegex = /\/$/ let path = location.pathname - if (path !== '/' && trailingSlashRegex.test(path)){ + if (path !== '/' && trailingSlashRegex.test(path)) { navigate(path.replace(trailingSlashRegex, '')) } From a2e71e90ac4ec390dc09ac95564f22cf92541089 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Mon, 20 Nov 2023 10:38:15 -0600 Subject: [PATCH 41/75] chore: copy english languages files to make easier the translation --- makefile | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/makefile b/makefile index 7beaf43b6..d350328d9 100644 --- a/makefile +++ b/makefile @@ -102,7 +102,7 @@ start: make start-postgres make start-wallet make start-hapi - #make start-hapi-evm +# make start-hapi-evm make start-hasura make -j 3 start-hasura-cli start-logs start-webapp @@ -128,7 +128,7 @@ start-hasura: curl http://localhost:9090/healthz; \ do echo "$(BLUE)$(STAGE)-$(APP_NAME)-hasura |$(RESET) waiting for hapi service"; \ sleep 5; done; - @until \ +# @until \ curl http://localhost:9091/healthz; \ do echo "$(BLUE)$(STAGE)-$(APP_NAME)-hasura |$(RESET) waiting for hapi-evm service"; \ sleep 5; done; @@ -154,6 +154,24 @@ start-webapp: @cd webapp && yarn && yarn start:local | cat @echo "done webapp" +add-language-webapp: ##copy en files in a new folder based on lang= + @mkdir ./webapp/src/language/$(lang) + @cp ./webapp/src/language/en/en.* ./webapp/src/language/$(lang)/ +# rename every file + @file_names=$$(find ./webapp/src/language/$(lang)/ -name "en.*"); \ + for file in $$file_names; do \ + mv "$${file}" "$${file//en./$(lang).}"; \ + done +# update import from /$(lang)/index.js + @cp ./webapp/src/language/en/index.js ./webapp/src/language/$(lang)/index.js + @file="./webapp/src/language/$(lang)/index.js"; \ + while IFS= read -r line; do \ + new_file="$${new_file}$${line//en/$(lang)}\n"; \ + done <"$${file}"; \ + echo -e "$${new_file}" > "$${file}" + @echo "$${lang} added successfully" + @echo "Now it can be important where it is needed" + start-logs: @docker-compose logs -f hapi hapi-evm webapp From 605a4dda30b475c4f6d86b73830d99764758963b Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Mon, 20 Nov 2023 10:49:33 -0600 Subject: [PATCH 42/75] chore(webapp): add comments to import new translations --- webapp/src/language/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/webapp/src/language/index.js b/webapp/src/language/index.js index a6d87b72a..6f7f413c8 100644 --- a/webapp/src/language/index.js +++ b/webapp/src/language/index.js @@ -3,10 +3,14 @@ import { deepMerge } from '../utils/deep-merge' import en from './en' import es from './es' +//import ko from './ko' +//import zh from './zh' const languajes = { ...es, ...en, +// ...ko, +// ...zh, } const getLanguaje = (languaje) => { @@ -23,4 +27,6 @@ const getLanguaje = (languaje) => { export default { en: getLanguaje('en'), es: getLanguaje('es'), +// ko: getLanguaje('ko'), +// zh: getLanguaje('zh'), } From cd90403a0992c3e391062ec4a46930fc5b3dc580 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Mon, 20 Nov 2023 10:51:43 -0600 Subject: [PATCH 43/75] feat(webapp): add alternate link in sitemaps to spanish version --- webapp/public/sitemap.jungle.xml | 152 +++++++++++++++++++++++ webapp/public/sitemap.lacchain.xml | 68 +++++++++++ webapp/public/sitemap.libre-testnet.xml | 156 ++++++++++++++++++++++++ webapp/public/sitemap.libre.xml | 148 ++++++++++++++++++++++ webapp/public/sitemap.mainnet.xml | 156 ++++++++++++++++++++++++ webapp/public/sitemap.telos-testnet.xml | 152 +++++++++++++++++++++++ webapp/public/sitemap.telos.xml | 152 +++++++++++++++++++++++ webapp/public/sitemap.ultra-testnet.xml | 20 +++ webapp/public/sitemap.wax-testnet.xml | 144 ++++++++++++++++++++++ webapp/public/sitemap.wax.xml | 144 ++++++++++++++++++++++ webapp/public/sitemap.xpr-testnet.xml | 140 +++++++++++++++++++++ webapp/public/sitemap.xpr.xml | 144 ++++++++++++++++++++++ 12 files changed, 1576 insertions(+) diff --git a/webapp/public/sitemap.jungle.xml b/webapp/public/sitemap.jungle.xml index 892dadbfe..486ce1e94 100644 --- a/webapp/public/sitemap.jungle.xml +++ b/webapp/public/sitemap.jungle.xml @@ -4,155 +4,307 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> https://jungle.antelope.tools + 1.0 2023-09-30 https://jungle.antelope.tools/block-producers + 2023-10-17 https://jungle.antelope.tools/nodes + 2023-10-17 https://jungle.antelope.tools/endpoints + 2023-10-17 https://jungle.antelope.tools/nodes-distribution + 2023-10-17 https://jungle.antelope.tools/rewards-distribution + 2023-09-30 https://jungle.antelope.tools/endpoints-stats + 2023-09-30 https://jungle.antelope.tools/undiscoverable-bps + 2023-11-02 https://jungle.antelope.tools/cpu-benchmark + 2023-09-10 https://jungle.antelope.tools/ricardian-contract + 2023-09-30 https://jungle.antelope.tools/evm + 2023-11-04 https://jungle.antelope.tools/evm-rpc-endpoints + 2023-11-04 https://jungle.antelope.tools/accounts + 2023-09-30 https://jungle.antelope.tools/bpjson + 2023-09-30 https://jungle.antelope.tools/about + 2023-11-02 https://jungle.antelope.tools/help + 2023-11-02 https://jungle.antelope.tools/block-producers/lioninjungle + 2023-10-17 https://jungle.antelope.tools/block-producers/ohtigertiger + 2023-10-17 https://jungle.antelope.tools/block-producers/eosriobrazil + 2023-10-17 https://jungle.antelope.tools/block-producers/alohaeostest + 2023-10-17 https://jungle.antelope.tools/block-producers/eosamsterdam + 2023-10-17 https://jungle.antelope.tools/block-producers/eosphereiobp + 2023-10-17 https://jungle.antelope.tools/block-producers/junglesweden + 2023-10-17 https://jungle.antelope.tools/block-producers/atticlabeosb + 2023-10-17 https://jungle.antelope.tools/block-producers/aus1genereos + 2023-10-17 https://jungle.antelope.tools/block-producers/eosarabianet + 2023-10-17 https://jungle.antelope.tools/block-producers/eoscostarica + 2023-10-17 https://jungle.antelope.tools/block-producers/eosdacserval + 2023-10-17 https://jungle.antelope.tools/block-producers/eoseouldotio + 2023-10-17 https://jungle.antelope.tools/block-producers/eosnationftw + 2023-10-17 https://jungle.antelope.tools/block-producers/ivote4eosusa + 2023-10-17 https://jungle.antelope.tools/block-producers/gorillapower + 2023-10-17 https://jungle.antelope.tools/block-producers/thebluewhale + 2023-10-17 https://jungle.antelope.tools/block-producers/funnyhamster + 2023-10-17 https://jungle.antelope.tools/block-producers/hippopotamus + 2023-10-17 https://jungle.antelope.tools/block-producers/jumpingfrogs + 2023-10-17 https://jungle.antelope.tools/block-producers/batinthedark + 2023-10-17 https://jungle.antelope.tools/block-producers/sentnlagents + 2023-10-17 \ No newline at end of file diff --git a/webapp/public/sitemap.lacchain.xml b/webapp/public/sitemap.lacchain.xml index 723777f45..5542aeb24 100644 --- a/webapp/public/sitemap.lacchain.xml +++ b/webapp/public/sitemap.lacchain.xml @@ -4,71 +4,139 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> https://lacchain.antelope.tools + 1.0 2023-09-30 https://lacchain.antelope.tools/entities + 2023-10-17 https://lacchain.antelope.tools/nodes + 2023-10-17 https://lacchain.antelope.tools/endpoints + 2023-10-17 https://lacchain.antelope.tools/endpoints-stats + 2023-04-25 https://lacchain.antelope.tools/lacchain/network + 2023-09-30 https://lacchain.antelope.tools/nodes-distribution + 2023-10-17 https://lacchain.antelope.tools/block-distribution + 2023-09-30 https://lacchain.antelope.tools/missed-blocks + 2023-09-30 https://lacchain.antelope.tools/cpu-benchmark + 2023-09-30 https://lacchain.antelope.tools/ricardian-contract + 2023-09-30 https://lacchain.antelope.tools/accounts + 2023-09-30 https://lacchain.antelope.tools/management + 2023-09-30 https://lacchain.antelope.tools/node-config + 2023-09-30 https://lacchain.antelope.tools/about + 2023-09-30 https://lacchain.antelope.tools/help + 2023-09-30 https://lacchain.antelope.tools/entities/costarica + 2023-10-17 \ No newline at end of file diff --git a/webapp/public/sitemap.libre-testnet.xml b/webapp/public/sitemap.libre-testnet.xml index 61cfbea69..e5ee64b2d 100644 --- a/webapp/public/sitemap.libre-testnet.xml +++ b/webapp/public/sitemap.libre-testnet.xml @@ -4,159 +4,315 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> https://libre-testnet.antelope.tools + 1.0 2023-09-30 https://libre-testnet.antelope.tools/block-producers + 2023-10-17 https://libre-testnet.antelope.tools/nodes + 2023-10-17 https://libre-testnet.antelope.tools/endpoints + 2023-10-17 https://libre-testnet.antelope.tools/nodes-distribution + 2023-10-17 https://libre-testnet.antelope.tools/rewards-distribution + 2023-09-30 https://libre-testnet.antelope.tools/endpoints-stats + 2023-09-30 https://libre-testnet.antelope.tools/undiscoverable-bps + 2023-11-02 https://libre-testnet.antelope.tools/block-distribution + 2023-09-30 https://libre-testnet.antelope.tools/missed-blocks + 2023-09-30 https://libre-testnet.antelope.tools/stress-test + 2023-09-30 https://libre-testnet.antelope.tools/cpu-benchmark + 2023-09-30 https://libre-testnet.antelope.tools/ricardian-contract + 2023-09-30 https://libre-testnet.antelope.tools/accounts + 2023-09-30 https://libre-testnet.antelope.tools/bpjson + 2023-09-30 https://libre-testnet.antelope.tools/faucet + 2023-09-30 https://libre-testnet.antelope.tools/about + 2023-11-02 https://libre-testnet.antelope.tools/help + 2023-11-02 https://libre-testnet.antelope.tools/block-producers/rioblocks + 2023-10-17 https://libre-testnet.antelope.tools/block-producers/goodblock + 2023-10-17 https://libre-testnet.antelope.tools/block-producers/sweden + 2023-10-17 https://libre-testnet.antelope.tools/block-producers/interchainbp + 2023-10-17 https://libre-testnet.antelope.tools/block-producers/uberleapnode + 2023-10-17 https://libre-testnet.antelope.tools/block-producers/eosarabianet + 2023-10-17 https://libre-testnet.antelope.tools/block-producers/cryptobloks + 2023-10-17 https://libre-testnet.antelope.tools/block-producers/blocktime + 2023-10-17 https://libre-testnet.antelope.tools/block-producers/draperx + 2023-10-17 https://libre-testnet.antelope.tools/block-producers/libremt + 2023-10-17 https://libre-testnet.antelope.tools/block-producers/blokcrafters + 2023-10-17 https://libre-testnet.antelope.tools/block-producers/heliosblocks + 2023-10-17 https://libre-testnet.antelope.tools/block-producers/amsterdam + 2023-10-17 https://libre-testnet.antelope.tools/block-producers/cultureblock + 2023-10-17 https://libre-testnet.antelope.tools/block-producers/teamgreymass + 2023-10-17 https://libre-testnet.antelope.tools/block-producers/libreindiabp + 2023-10-17 https://libre-testnet.antelope.tools/block-producers/eosphere + 2023-10-17 https://libre-testnet.antelope.tools/block-producers/detroit + 2023-10-17 https://libre-testnet.antelope.tools/block-producers/librenodeone + 2023-10-17 https://libre-testnet.antelope.tools/block-producers/edeniaedenia + 2023-10-17 https://libre-testnet.antelope.tools/block-producers/echobasefour + 2023-10-17 \ No newline at end of file diff --git a/webapp/public/sitemap.libre.xml b/webapp/public/sitemap.libre.xml index 3a3549c3b..144789a23 100644 --- a/webapp/public/sitemap.libre.xml +++ b/webapp/public/sitemap.libre.xml @@ -4,151 +4,299 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> https://libre.antelope.tools + 1.0 2023-09-30 https://libre.antelope.tools/block-producers + 2023-10-17 https://libre.antelope.tools/nodes + 2023-10-17 https://libre.antelope.tools/endpoints + 2023-10-17 https://libre.antelope.tools/nodes-distribution + 2023-10-17 https://libre.antelope.tools/rewards-distribution + 2023-09-30 https://libre.antelope.tools/block-distribution + 2023-09-30 https://libre.antelope.tools/missed-blocks + 2023-09-30 https://libre.antelope.tools/cpu-benchmark + 2023-09-30 https://libre.antelope.tools/endpoints-stats + 2023-09-30 https://libre.antelope.tools/undiscoverable-bps + 2023-11-02 https://libre.antelope.tools/ricardian-contract + 2023-09-30 https://libre.antelope.tools/accounts + 2023-09-30 https://libre.antelope.tools/bpjson + 2023-09-30 https://libre.antelope.tools/about + 2023-11-02 https://libre.antelope.tools/help + 2023-11-02 https://libre.antelope.tools/block-producers/libretech + 2023-10-17 https://libre.antelope.tools/block-producers/xennetwork + 2023-10-17 https://libre.antelope.tools/block-producers/sweden + 2023-10-17 https://libre.antelope.tools/block-producers/cryptobloks + 2023-10-17 https://libre.antelope.tools/block-producers/hotstart + 2023-10-17 https://libre.antelope.tools/block-producers/teamgreymass + 2023-10-17 https://libre.antelope.tools/block-producers/eosphere + 2023-10-17 https://libre.antelope.tools/block-producers/goodblock + 2023-10-17 https://libre.antelope.tools/block-producers/quantum + 2023-10-17 https://libre.antelope.tools/block-producers/heliosblocks + 2023-10-17 https://libre.antelope.tools/block-producers/blocktime + 2023-10-17 https://libre.antelope.tools/block-producers/edeniaedenia + 2023-10-17 https://libre.antelope.tools/block-producers/draperx + 2023-10-17 https://libre.antelope.tools/block-producers/interchainbp + 2023-10-17 https://libre.antelope.tools/block-producers/rioblocks + 2023-10-17 https://libre.antelope.tools/block-producers/libremt + 2023-10-17 https://libre.antelope.tools/block-producers/cryptolions + 2023-10-17 https://libre.antelope.tools/block-producers/genereos + 2023-10-17 https://libre.antelope.tools/block-producers/eosusa + 2023-10-17 https://libre.antelope.tools/block-producers/cultureblock + 2023-10-17 https://libre.antelope.tools/block-producers/uberleap + 2023-10-17 \ No newline at end of file diff --git a/webapp/public/sitemap.mainnet.xml b/webapp/public/sitemap.mainnet.xml index a4ad223c1..8fee8d295 100644 --- a/webapp/public/sitemap.mainnet.xml +++ b/webapp/public/sitemap.mainnet.xml @@ -4,159 +4,315 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> https://eos.antelope.tools + 1.0 2023-09-30 https://eos.antelope.tools/block-producers + 2023-10-17 https://eos.antelope.tools/nodes + 2023-10-17 https://eos.antelope.tools/endpoints + 2023-10-17 https://eos.antelope.tools/nodes-distribution + 2023-10-17 https://eos.antelope.tools/endpoints-stats + 2023-09-30 https://eos.antelope.tools/rewards-distribution + 2023-09-30 https://eos.antelope.tools/undiscoverable-bps + 2023-11-02 https://eos.antelope.tools/ricardian-contract + 2023-09-30 https://eos.antelope.tools/evm + 2023-11-06 https://eos.antelope.tools/evm-rpc-endpoints + 2023-11-06 https://eos.antelope.tools/accounts + 2023-09-30 https://eos.antelope.tools/bpjson + 2023-09-30 https://eos.antelope.tools/about + 2023-11-02 https://eos.antelope.tools/help + 2023-11-02 https://eos.antelope.tools/block-producers/aus1genereos + 2023-10-17 https://eos.antelope.tools/block-producers/newdex.bp + 2023-10-17 https://eos.antelope.tools/block-producers/big.one + 2023-10-17 https://eos.antelope.tools/block-producers/eoseouldotio + 2023-10-17 https://eos.antelope.tools/block-producers/binancestake + 2023-10-17 https://eos.antelope.tools/block-producers/atticlabeosb + 2023-10-17 https://eos.antelope.tools/block-producers/ivote4eosusa + 2023-10-17 https://eos.antelope.tools/block-producers/starteosiobp + 2023-10-17 https://eos.antelope.tools/block-producers/eosnationftw + 2023-10-17 https://eos.antelope.tools/block-producers/eosflytomars + 2023-10-17 https://eos.antelope.tools/block-producers/eosiosg11111 + 2023-10-17 https://eos.antelope.tools/block-producers/blockpooleos + 2023-10-17 https://eos.antelope.tools/block-producers/eosphereiobp + 2023-10-17 https://eos.antelope.tools/block-producers/bp.defi + 2023-10-17 https://eos.antelope.tools/block-producers/eoslaomaocom + 2023-10-17 https://eos.antelope.tools/block-producers/hashfineosio + 2023-10-17 https://eos.antelope.tools/block-producers/eosasia11111 + 2023-10-17 https://eos.antelope.tools/block-producers/eoscannonchn + 2023-10-17 https://eos.antelope.tools/block-producers/eosinfstones + 2023-10-17 https://eos.antelope.tools/block-producers/whaleex.com + 2023-10-17 https://eos.antelope.tools/block-producers/bitfinexeos1 + 2023-10-17 https://eos.antelope.tools/block-producers/costaricaeos + 2023-10-17 https://eos.antelope.tools/block-producers?page=2 + 2023-10-17 https://eos.antelope.tools/block-producers?page=3 + 2023-10-17 \ No newline at end of file diff --git a/webapp/public/sitemap.telos-testnet.xml b/webapp/public/sitemap.telos-testnet.xml index d97424e75..eaa3320be 100644 --- a/webapp/public/sitemap.telos-testnet.xml +++ b/webapp/public/sitemap.telos-testnet.xml @@ -4,155 +4,307 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> https://telos-testnet.antelope.tools + 1.0 2023-09-30 https://telos-testnet.antelope.tools/block-producers + 2023-10-17 https://telos-testnet.antelope.tools/nodes + 2023-10-17 https://telos-testnet.antelope.tools/endpoints + 2023-10-17 https://telos-testnet.antelope.tools/nodes-distribution + 2023-10-17 https://telos-testnet.antelope.tools/rewards-distribution + 2023-09-30 https://telos-testnet.antelope.tools/endpoints-stats + 2023-09-30 https://telos-testnet.antelope.tools/undiscoverable-bps + 2023-11-02 https://telos-testnet.antelope.tools/ricardian-contract + 2023-09-30 https://telos-testnet.antelope.tools/evm + 2023-09-30 https://telos-testnet.antelope.tools/evm-rpc-endpoints + 2023-09-30 https://telos-testnet.antelope.tools/accounts + 2023-09-30 https://telos-testnet.antelope.tools/bpjson + 2023-09-30 https://telos-testnet.antelope.tools/about + 2023-11-02 https://telos-testnet.antelope.tools/help + 2023-11-02 https://telos-testnet.antelope.tools/block-producers/southafrica1 + 2023-10-17 https://telos-testnet.antelope.tools/block-producers/eosbarcelona + 2023-10-17 https://telos-testnet.antelope.tools/block-producers/goodblocktls + 2023-10-17 https://telos-testnet.antelope.tools/block-producers/swedencornet + 2023-10-17 https://telos-testnet.antelope.tools/block-producers/cryptolions1 + 2023-10-17 https://telos-testnet.antelope.tools/block-producers/telosunlimit + 2023-10-17 https://telos-testnet.antelope.tools/block-producers/eosriobrazil + 2023-10-17 https://telos-testnet.antelope.tools/block-producers/telosmadrid1 + 2023-10-17 https://telos-testnet.antelope.tools/block-producers/votedutcheos + 2023-10-17 https://telos-testnet.antelope.tools/block-producers/eosdublinwow + 2023-10-17 https://telos-testnet.antelope.tools/block-producers/eosphereiobp + 2023-10-17 https://telos-testnet.antelope.tools/block-producers/caleosblocks + 2023-10-17 https://telos-testnet.antelope.tools/block-producers/telosgermany + 2023-10-17 https://telos-testnet.antelope.tools/block-producers/eosiodetroit + 2023-10-17 https://telos-testnet.antelope.tools/block-producers/teamgreymass + 2023-10-17 https://telos-testnet.antelope.tools/block-producers/eostribeprod + 2023-10-17 https://telos-testnet.antelope.tools/block-producers/infinitybloc + 2023-10-17 https://telos-testnet.antelope.tools/block-producers/telosarabia1 + 2023-10-17 https://telos-testnet.antelope.tools/block-producers/theteloscope + 2023-10-17 https://telos-testnet.antelope.tools/block-producers/teloskiwinzz + 2023-10-17 https://telos-testnet.antelope.tools/block-producers/hyperspacebp + 2023-10-17 https://telos-testnet.antelope.tools/block-producers/edeniaedenia + 2023-10-17 https://telos-testnet.antelope.tools/block-producers?page=2 + 2023-10-17 \ No newline at end of file diff --git a/webapp/public/sitemap.telos.xml b/webapp/public/sitemap.telos.xml index 55aa0b05c..65d09e135 100644 --- a/webapp/public/sitemap.telos.xml +++ b/webapp/public/sitemap.telos.xml @@ -4,155 +4,307 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> https://telos.antelope.tools + 1.0 2023-09-30 https://telos.antelope.tools/block-producers + 2023-10-17 https://telos.antelope.tools/nodes + 2023-10-17 https://telos.antelope.tools/endpoints + 2023-10-17 https://telos.antelope.tools/nodes-distribution + 2023-10-17 https://telos.antelope.tools/rewards-distribution + 2023-09-30 https://telos.antelope.tools/endpoints-stats + 2023-09-30 https://telos.antelope.tools/undiscoverable-bps + 2023-11-02 https://telos.antelope.tools/ricardian-contract + 2023-09-30 https://telos.antelope.tools/evm + 2023-09-30 https://telos.antelope.tools/evm-rpc-endpoints + 2023-09-30 https://telos.antelope.tools/accounts + 2023-09-30 https://telos.antelope.tools/bpjson + 2023-09-30 https://telos.antelope.tools/about + 2023-11-02 https://telos.antelope.tools/help + 2023-11-02 https://telos.antelope.tools/block-producers/caleosblocks + 2023-10-17 https://telos.antelope.tools/block-producers/infinitybloc + 2023-10-17 https://telos.antelope.tools/block-producers/teamgreymass + 2023-10-17 https://telos.antelope.tools/block-producers/telosgreenbp + 2023-10-17 https://telos.antelope.tools/block-producers/eosphereiobp + 2023-10-17 https://telos.antelope.tools/block-producers/telosunlimit + 2023-10-17 https://telos.antelope.tools/block-producers/kainosblkpro + 2023-10-17 https://telos.antelope.tools/block-producers/votetelosusa + 2023-10-17 https://telos.antelope.tools/block-producers/telosmadrid1 + 2023-10-17 https://telos.antelope.tools/block-producers/persiantelos + 2023-10-17 https://telos.antelope.tools/block-producers/telosarabia1 + 2023-10-17 https://telos.antelope.tools/block-producers/telosglobal1 + 2023-10-17 https://telos.antelope.tools/block-producers/teleologytls + 2023-10-17 https://telos.antelope.tools/block-producers/teloskitchen + 2023-10-17 https://telos.antelope.tools/block-producers/telosgermany + 2023-10-17 https://telos.antelope.tools/block-producers/bp.boid + 2023-10-17 https://telos.antelope.tools/block-producers/eosriobrazil + 2023-10-17 https://telos.antelope.tools/block-producers/southafrica1 + 2023-10-17 https://telos.antelope.tools/block-producers/argentinatls + 2023-10-17 https://telos.antelope.tools/block-producers/amsterdam + 2023-10-17 https://telos.antelope.tools/block-producers/creativblock + 2023-10-17 https://telos.antelope.tools/block-producers/edeniaedenia + 2023-10-17 https://telos.antelope.tools/block-producers?page=2 + 2023-10-17 \ No newline at end of file diff --git a/webapp/public/sitemap.ultra-testnet.xml b/webapp/public/sitemap.ultra-testnet.xml index 0f83ef42f..b16280964 100644 --- a/webapp/public/sitemap.ultra-testnet.xml +++ b/webapp/public/sitemap.ultra-testnet.xml @@ -4,23 +4,43 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> https://ultra-testnet.antelope.tools + 1.0 2023-09-30 https://ultra-testnet.antelope.tools/accounts + 2023-09-30 https://ultra-testnet.antelope.tools/faucet + 2023-09-30 https://ultra-testnet.antelope.tools/about + 2023-09-30 https://ultra-testnet.antelope.tools/help + 2023-09-30 \ No newline at end of file diff --git a/webapp/public/sitemap.wax-testnet.xml b/webapp/public/sitemap.wax-testnet.xml index 46c740de0..8d46c92f9 100644 --- a/webapp/public/sitemap.wax-testnet.xml +++ b/webapp/public/sitemap.wax-testnet.xml @@ -4,147 +4,291 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> https://wax-testnet.antelope.tools + 1.0 2023-09-30 https://wax-testnet.antelope.tools/block-producers + 2023-10-17 https://wax-testnet.antelope.tools/nodes + 2023-10-17 https://wax-testnet.antelope.tools/endpoints + 2023-10-17 https://wax-testnet.antelope.tools/nodes-distribution + 2023-10-17 https://wax-testnet.antelope.tools/rewards-distribution + 2023-09-30 https://wax-testnet.antelope.tools/endpoints-stats + 2023-04-25 https://wax-testnet.antelope.tools/undiscoverable-bps + 2023-11-02 https://wax-testnet.antelope.tools/ricardian-contract + 2023-09-30 https://wax-testnet.antelope.tools/accounts + 2023-09-30 https://wax-testnet.antelope.tools/bpjson + 2023-09-30 https://wax-testnet.antelope.tools/about + 2023-11-02 https://wax-testnet.antelope.tools/help + 2023-11-02 https://wax-testnet.antelope.tools/block-producers/blokcrafters + 2023-10-17 https://wax-testnet.antelope.tools/block-producers/greeneosiobp + 2023-10-17 https://wax-testnet.antelope.tools/block-producers/wizardsguild + 2023-10-17 https://wax-testnet.antelope.tools/block-producers/eosarabianet + 2023-10-17 https://wax-testnet.antelope.tools/block-producers/liquidgaming + 2023-10-17 https://wax-testnet.antelope.tools/block-producers/waxmadrid111 + 2023-10-17 https://wax-testnet.antelope.tools/block-producers/3dkrenderwax + 2023-10-17 https://wax-testnet.antelope.tools/block-producers/wecan + 2023-10-17 https://wax-testnet.antelope.tools/block-producers/eosiodetroit + 2023-10-17 https://wax-testnet.antelope.tools/block-producers/wax.eastern + 2023-10-17 https://wax-testnet.antelope.tools/block-producers/sentnlagents + 2023-10-17 https://wax-testnet.antelope.tools/block-producers/oneinacilian + 2023-10-17 https://wax-testnet.antelope.tools/block-producers/bp.box + 2023-10-17 https://wax-testnet.antelope.tools/block-producers/dapplicawaxt + 2023-10-17 https://wax-testnet.antelope.tools/block-producers/bp.alcor + 2023-10-17 https://wax-testnet.antelope.tools/block-producers/waxdaoguild1 + 2023-10-17 https://wax-testnet.antelope.tools/block-producers/cryptolions1 + 2023-10-17 https://wax-testnet.antelope.tools/block-producers/eosdublinwow + 2023-10-17 https://wax-testnet.antelope.tools/block-producers/bp.adex + 2023-10-17 https://wax-testnet.antelope.tools/block-producers/wombatblockx + 2023-10-17 https://wax-testnet.antelope.tools/block-producers/ledgerwiseio + 2023-10-17 https://wax-testnet.antelope.tools/block-producers/edeniaedenia + 2023-10-17 https://wax-testnet.antelope.tools/block-producers?page=2 + 2023-10-17 \ No newline at end of file diff --git a/webapp/public/sitemap.wax.xml b/webapp/public/sitemap.wax.xml index fa8496732..d07c3565a 100644 --- a/webapp/public/sitemap.wax.xml +++ b/webapp/public/sitemap.wax.xml @@ -4,147 +4,291 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> https://wax.antelope.tools + 1.0 2023-09-30 https://wax.antelope.tools/block-producers + 2023-10-17 https://wax.antelope.tools/nodes + 2023-10-17 https://wax.antelope.tools/endpoints + 2023-10-17 https://wax.antelope.tools/nodes-distribution + 2023-10-17 https://wax.antelope.tools/rewards-distribution + 2023-09-30 https://wax.antelope.tools/endpoints-stats + 2023-09-30 https://wax.antelope.tools/undiscoverable-bps + 2023-11-02 https://wax.antelope.tools/ricardian-contract + 2023-09-30 https://wax.antelope.tools/accounts + 2023-09-30 https://wax.antelope.tools/bpjson + 2023-09-30 https://wax.antelope.tools/about + 2023-11-02 https://wax.antelope.tools/help + 2023-11-02 https://wax.antelope.tools/block-producers/nation.wax + 2023-10-17 https://wax.antelope.tools/block-producers/waxswedenorg + 2023-10-17 https://wax.antelope.tools/block-producers/eosriobrazil + 2023-10-17 https://wax.antelope.tools/block-producers/bountyblokbp + 2023-10-17 https://wax.antelope.tools/block-producers/amsterdamwax + 2023-10-17 https://wax.antelope.tools/block-producers/ivote4waxusa + 2023-10-17 https://wax.antelope.tools/block-producers/alohaeosprod + 2023-10-17 https://wax.antelope.tools/block-producers/ledgerwiseio + 2023-10-17 https://wax.antelope.tools/block-producers/eosiodetroit + 2023-10-17 https://wax.antelope.tools/block-producers/cryptolions1 + 2023-10-17 https://wax.antelope.tools/block-producers/eosphereiobp + 2023-10-17 https://wax.antelope.tools/block-producers/teamgreymass + 2023-10-17 https://wax.antelope.tools/block-producers/guild.nefty + 2023-10-17 https://wax.antelope.tools/block-producers/eosauthority + 2023-10-17 https://wax.antelope.tools/block-producers/blacklusionx + 2023-10-17 https://wax.antelope.tools/block-producers/3dkrenderwax + 2023-10-17 https://wax.antelope.tools/block-producers/bp.wecan + 2023-10-17 https://wax.antelope.tools/block-producers/waxhiveguild + 2023-10-17 https://wax.antelope.tools/block-producers/guild.taco + 2023-10-17 https://wax.antelope.tools/block-producers/liquidstudio + 2023-10-17 https://wax.antelope.tools/block-producers/guild.waxdao + 2023-10-17 https://wax.antelope.tools/block-producers/edeniaedenia + 2023-10-17 https://wax.antelope.tools/block-producers?page=2 + 2023-10-17 \ No newline at end of file diff --git a/webapp/public/sitemap.xpr-testnet.xml b/webapp/public/sitemap.xpr-testnet.xml index 19abf1095..e0e634562 100644 --- a/webapp/public/sitemap.xpr-testnet.xml +++ b/webapp/public/sitemap.xpr-testnet.xml @@ -4,143 +4,283 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> https://xpr-testnet.antelope.tools + 1.0 2023-09-30 https://xpr-testnet.antelope.tools/block-producers + 2023-10-17 https://xpr-testnet.antelope.tools/nodes + 2023-10-17 https://xpr-testnet.antelope.tools/endpoints + 2023-10-17 https://xpr-testnet.antelope.tools/rewards-distribution + 2023-09-30 https://xpr-testnet.antelope.tools/endpoints-stats + 2023-09-30 https://xpr-testnet.antelope.tools/undiscoverable-bps + 2023-11-02 https://xpr-testnet.antelope.tools/nodes-distribution + 2023-10-17 https://xpr-testnet.antelope.tools/cpu-benchmark + 2023-09-30 https://xpr-testnet.antelope.tools/ricardian-contract + 2023-09-30 https://xpr-testnet.antelope.tools/accounts + 2023-09-30 https://xpr-testnet.antelope.tools/bpjson + 2023-09-30 https://xpr-testnet.antelope.tools/about + 2023-11-02 https://xpr-testnet.antelope.tools/help + 2023-11-02 https://xpr-testnet.antelope.tools/block-producers/saltant + 2023-10-17 https://xpr-testnet.antelope.tools/block-producers/testalvosec + 2023-10-17 https://xpr-testnet.antelope.tools/block-producers/protonmadrid + 2023-10-17 https://xpr-testnet.antelope.tools/block-producers/totalproton + 2023-10-17 https://xpr-testnet.antelope.tools/block-producers/protonnz + 2023-10-17 https://xpr-testnet.antelope.tools/block-producers/eosusa + 2023-10-17 https://xpr-testnet.antelope.tools/block-producers/xprnodeonebp + 2023-10-17 https://xpr-testnet.antelope.tools/block-producers/protonkiwi + 2023-10-17 https://xpr-testnet.antelope.tools/block-producers/eosrio + 2023-10-17 https://xpr-testnet.antelope.tools/block-producers/eosiodetroit + 2023-10-17 https://xpr-testnet.antelope.tools/block-producers/protonuk + 2023-10-17 https://xpr-testnet.antelope.tools/block-producers/genereos + 2023-10-17 https://xpr-testnet.antelope.tools/block-producers/edenia + 2023-10-17 https://xpr-testnet.antelope.tools/block-producers/pinknetwork + 2023-10-17 https://xpr-testnet.antelope.tools/block-producers/eosamsterdam + 2023-10-17 https://xpr-testnet.antelope.tools/block-producers/metalnz + 2023-10-17 https://xpr-testnet.antelope.tools/block-producers/eosarabianet + 2023-10-17 https://xpr-testnet.antelope.tools/block-producers/ledgerwiseio + 2023-10-17 https://xpr-testnet.antelope.tools/block-producers/dankbp + 2023-10-17 https://xpr-testnet.antelope.tools/block-producers/gametest + 2023-10-17 https://xpr-testnet.antelope.tools/block-producers/brotonbp + 2023-10-17 \ No newline at end of file diff --git a/webapp/public/sitemap.xpr.xml b/webapp/public/sitemap.xpr.xml index 288ab032f..2ab29bf43 100644 --- a/webapp/public/sitemap.xpr.xml +++ b/webapp/public/sitemap.xpr.xml @@ -4,147 +4,291 @@ xmlns:xhtml="http://www.w3.org/1999/xhtml"> https://xpr.antelope.tools + 1.0 2023-09-30 https://xpr.antelope.tools/block-producers + 2023-10-17 https://xpr.antelope.tools/nodes + 2023-10-17 https://xpr.antelope.tools/endpoints + 2023-10-17 https://xpr.antelope.tools/rewards-distribution + 2023-09-30 https://xpr.antelope.tools/endpoints-stats + 2023-09-30 https://xpr.antelope.tools/undiscoverable-bps + 2023-11-02 https://xpr.antelope.tools/nodes-distribution + 2023-10-17 https://xpr.antelope.tools/cpu-benchmark + 2023-09-30 https://xpr.antelope.tools/ricardian-contract + 2023-09-30 https://xpr.antelope.tools/accounts + 2023-09-30 https://xpr.antelope.tools/bpjson + 2023-09-30 https://xpr.antelope.tools/about + 2023-11-02 https://xpr.antelope.tools/help + 2023-11-02 https://xpr.antelope.tools/block-producers/protonnz + 2023-10-17 https://xpr.antelope.tools/block-producers/eosusa + 2023-10-17 https://xpr.antelope.tools/block-producers/protonuk + 2023-10-17 https://xpr.antelope.tools/block-producers/protonkiwi + 2023-10-17 https://xpr.antelope.tools/block-producers/alvosec + 2023-10-17 https://xpr.antelope.tools/block-producers/cryptolions + 2023-10-17 https://xpr.antelope.tools/block-producers/quantumblok + 2023-10-17 https://xpr.antelope.tools/block-producers/cafe + 2023-10-17 https://xpr.antelope.tools/block-producers/protonmt + 2023-10-17 https://xpr.antelope.tools/block-producers/protonlondon + 2023-10-17 https://xpr.antelope.tools/block-producers/totalproton + 2023-10-17 https://xpr.antelope.tools/block-producers/brotonbp + 2023-10-17 https://xpr.antelope.tools/block-producers/protonind + 2023-10-17 https://xpr.antelope.tools/block-producers/eosamsterdam + 2023-10-17 https://xpr.antelope.tools/block-producers/saltant + 2023-10-17 https://xpr.antelope.tools/block-producers/protonmadrid + 2023-10-17 https://xpr.antelope.tools/block-producers/xprnodeonebp + 2023-10-17 https://xpr.antelope.tools/block-producers/eosiodetroit + 2023-10-17 https://xpr.antelope.tools/block-producers/protonpoland + 2023-10-17 https://xpr.antelope.tools/block-producers/eosdublinwow + 2023-10-17 https://xpr.antelope.tools/block-producers/ledgerwiseio + 2023-10-17 https://xpr.antelope.tools/block-producers/edenia + 2023-10-17 \ No newline at end of file From 539dca92bd205de75b366594d8b453f6a289cf30 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Mon, 20 Nov 2023 13:36:50 -0600 Subject: [PATCH 44/75] chore(webapp): change the sitemaps folder structure --- .../sitemap-en.xml} | 0 webapp/public/{sitemap.airwire.xml => airwire/sitemap-en.xml} | 0 webapp/public/{sitemap.mainnet.xml => eos/sitemap-en.xml} | 0 webapp/public/{sitemap.jungle.xml => jungle/sitemap-en.xml} | 0 webapp/public/{sitemap.lacchain.xml => lacchain/sitemap-en.xml} | 0 .../{sitemap.libre-testnet.xml => libre-testnet/sitemap-en.xml} | 0 webapp/public/{sitemap.libre.xml => libre/sitemap-en.xml} | 0 .../{sitemap.telos-testnet.xml => telos-testnet/sitemap-en.xml} | 0 webapp/public/{sitemap.telos.xml => telos/sitemap-en.xml} | 0 .../{sitemap.ultra-testnet.xml => ultra-testnet/sitemap-en.xml} | 0 .../{sitemap.wax-testnet.xml => wax-testnet/sitemap-en.xml} | 0 webapp/public/{sitemap.wax.xml => wax/sitemap-en.xml} | 0 .../{sitemap.xpr-testnet.xml => xpr-testnet/sitemap-en.xml} | 0 webapp/public/{sitemap.xpr.xml => xpr/sitemap-en.xml} | 0 14 files changed, 0 insertions(+), 0 deletions(-) rename webapp/public/{sitemap.airwire-testnet.xml => airwire-testnet/sitemap-en.xml} (100%) rename webapp/public/{sitemap.airwire.xml => airwire/sitemap-en.xml} (100%) rename webapp/public/{sitemap.mainnet.xml => eos/sitemap-en.xml} (100%) rename webapp/public/{sitemap.jungle.xml => jungle/sitemap-en.xml} (100%) rename webapp/public/{sitemap.lacchain.xml => lacchain/sitemap-en.xml} (100%) rename webapp/public/{sitemap.libre-testnet.xml => libre-testnet/sitemap-en.xml} (100%) rename webapp/public/{sitemap.libre.xml => libre/sitemap-en.xml} (100%) rename webapp/public/{sitemap.telos-testnet.xml => telos-testnet/sitemap-en.xml} (100%) rename webapp/public/{sitemap.telos.xml => telos/sitemap-en.xml} (100%) rename webapp/public/{sitemap.ultra-testnet.xml => ultra-testnet/sitemap-en.xml} (100%) rename webapp/public/{sitemap.wax-testnet.xml => wax-testnet/sitemap-en.xml} (100%) rename webapp/public/{sitemap.wax.xml => wax/sitemap-en.xml} (100%) rename webapp/public/{sitemap.xpr-testnet.xml => xpr-testnet/sitemap-en.xml} (100%) rename webapp/public/{sitemap.xpr.xml => xpr/sitemap-en.xml} (100%) diff --git a/webapp/public/sitemap.airwire-testnet.xml b/webapp/public/airwire-testnet/sitemap-en.xml similarity index 100% rename from webapp/public/sitemap.airwire-testnet.xml rename to webapp/public/airwire-testnet/sitemap-en.xml diff --git a/webapp/public/sitemap.airwire.xml b/webapp/public/airwire/sitemap-en.xml similarity index 100% rename from webapp/public/sitemap.airwire.xml rename to webapp/public/airwire/sitemap-en.xml diff --git a/webapp/public/sitemap.mainnet.xml b/webapp/public/eos/sitemap-en.xml similarity index 100% rename from webapp/public/sitemap.mainnet.xml rename to webapp/public/eos/sitemap-en.xml diff --git a/webapp/public/sitemap.jungle.xml b/webapp/public/jungle/sitemap-en.xml similarity index 100% rename from webapp/public/sitemap.jungle.xml rename to webapp/public/jungle/sitemap-en.xml diff --git a/webapp/public/sitemap.lacchain.xml b/webapp/public/lacchain/sitemap-en.xml similarity index 100% rename from webapp/public/sitemap.lacchain.xml rename to webapp/public/lacchain/sitemap-en.xml diff --git a/webapp/public/sitemap.libre-testnet.xml b/webapp/public/libre-testnet/sitemap-en.xml similarity index 100% rename from webapp/public/sitemap.libre-testnet.xml rename to webapp/public/libre-testnet/sitemap-en.xml diff --git a/webapp/public/sitemap.libre.xml b/webapp/public/libre/sitemap-en.xml similarity index 100% rename from webapp/public/sitemap.libre.xml rename to webapp/public/libre/sitemap-en.xml diff --git a/webapp/public/sitemap.telos-testnet.xml b/webapp/public/telos-testnet/sitemap-en.xml similarity index 100% rename from webapp/public/sitemap.telos-testnet.xml rename to webapp/public/telos-testnet/sitemap-en.xml diff --git a/webapp/public/sitemap.telos.xml b/webapp/public/telos/sitemap-en.xml similarity index 100% rename from webapp/public/sitemap.telos.xml rename to webapp/public/telos/sitemap-en.xml diff --git a/webapp/public/sitemap.ultra-testnet.xml b/webapp/public/ultra-testnet/sitemap-en.xml similarity index 100% rename from webapp/public/sitemap.ultra-testnet.xml rename to webapp/public/ultra-testnet/sitemap-en.xml diff --git a/webapp/public/sitemap.wax-testnet.xml b/webapp/public/wax-testnet/sitemap-en.xml similarity index 100% rename from webapp/public/sitemap.wax-testnet.xml rename to webapp/public/wax-testnet/sitemap-en.xml diff --git a/webapp/public/sitemap.wax.xml b/webapp/public/wax/sitemap-en.xml similarity index 100% rename from webapp/public/sitemap.wax.xml rename to webapp/public/wax/sitemap-en.xml diff --git a/webapp/public/sitemap.xpr-testnet.xml b/webapp/public/xpr-testnet/sitemap-en.xml similarity index 100% rename from webapp/public/sitemap.xpr-testnet.xml rename to webapp/public/xpr-testnet/sitemap-en.xml diff --git a/webapp/public/sitemap.xpr.xml b/webapp/public/xpr/sitemap-en.xml similarity index 100% rename from webapp/public/sitemap.xpr.xml rename to webapp/public/xpr/sitemap-en.xml From 6556c9285d2c9d8b1943a0ed2c6d6dc95910e602 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 21 Nov 2023 14:25:37 -0600 Subject: [PATCH 45/75] chore(webapp): remove airwire --- makefile | 10 ---- webapp/public/airwire-testnet/sitemap-en.xml | 49 ------------------- webapp/public/airwire/sitemap-en.xml | 49 ------------------- .../src/components/NetworkSelector/index.js | 6 --- .../src/components/NetworkSelector/styles.js | 5 -- .../src/language/en/en.airwire-testnet.json | 31 ------------ webapp/src/language/en/en.airwire.json | 31 ------------ webapp/src/language/en/index.js | 4 -- .../src/language/es/es.airwire-testnet.json | 30 ------------ webapp/src/language/es/es.airwire.json | 30 ------------ webapp/src/language/es/index.js | 4 -- 11 files changed, 249 deletions(-) delete mode 100644 webapp/public/airwire-testnet/sitemap-en.xml delete mode 100644 webapp/public/airwire/sitemap-en.xml delete mode 100644 webapp/src/language/en/en.airwire-testnet.json delete mode 100644 webapp/src/language/en/en.airwire.json delete mode 100644 webapp/src/language/es/es.airwire-testnet.json delete mode 100644 webapp/src/language/es/es.airwire.json diff --git a/makefile b/makefile index d350328d9..08ebbbedc 100644 --- a/makefile +++ b/makefile @@ -60,16 +60,6 @@ waxtestnet: make stop make start -airwire: - @cat ".env.airwire" | sed -e 's/REACT_APP_VERSION=dev/REACT_APP_VERSION=$(shell git describe --tags `git rev-list --tags --max-count=1`)/g' > ".env" - make stop - make start - -airwiretestnet: - @cat ".env.airwiretestnet" | sed -e 's/REACT_APP_VERSION=dev/REACT_APP_VERSION=$(shell git describe --tags `git rev-list --tags --max-count=1`)/g' > ".env" - make stop - make start - libre: @cat ".env.libre" | sed -e 's/REACT_APP_VERSION=dev/REACT_APP_VERSION=$(shell git describe --tags `git rev-list --tags --max-count=1`)/g' > ".env" make stop diff --git a/webapp/public/airwire-testnet/sitemap-en.xml b/webapp/public/airwire-testnet/sitemap-en.xml deleted file mode 100644 index 5196a3875..000000000 --- a/webapp/public/airwire-testnet/sitemap-en.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - https://dashboard.airwire-testnet.io - 2023-09-30 - - - https://dashboard.airwire-testnet.io/block-producers - 2023-09-30 - - - https://dashboard.airwire-testnet.io/nodes - 2023-09-30 - - - https://dashboard.airwire-testnet.io/endpoints - 2023-09-30 - - - https://dashboard.airwire-testnet.io/nodes-distribution - 2023-09-30 - - - https://dashboard.airwire-testnet.io/rewards-distribution - 2023-09-30 - - - https://dashboard.airwire-testnet.io/ricardian-contract - 2023-09-30 - - - https://dashboard.airwire-testnet.io/accounts - 2023-09-30 - - - https://dashboard.airwire-testnet.io/bpjson - 2023-09-30 - - - https://dashboard.airwire-testnet.io/about - 2023-09-30 - - - https://dashboard.airwire-testnet.io/help - 2023-09-30 - - \ No newline at end of file diff --git a/webapp/public/airwire/sitemap-en.xml b/webapp/public/airwire/sitemap-en.xml deleted file mode 100644 index e69811426..000000000 --- a/webapp/public/airwire/sitemap-en.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - https://dashboard.airwire.io - 2023-09-30 - - - https://dashboard.airwire.io/block-producers - 2023-09-30 - - - https://dashboard.airwire.io/nodes - 2023-09-30 - - - https://dashboard.airwire.io/endpoints - 2023-09-30 - - - https://dashboard.airwire.io/nodes-distribution - 2023-09-30 - - - https://dashboard.airwire.io/rewards-distribution - 2023-09-30 - - - https://dashboard.airwire.io/ricardian-contract - 2023-09-30 - - - https://dashboard.airwire.io/accounts - 2023-09-30 - - - https://dashboard.airwire.io/bpjson - 2023-09-30 - - - https://dashboard.airwire.io/about - 2023-09-30 - - - https://dashboard.airwire.io/help - 2023-09-30 - - \ No newline at end of file diff --git a/webapp/src/components/NetworkSelector/index.js b/webapp/src/components/NetworkSelector/index.js index 6f5905c21..da3d5cbcf 100644 --- a/webapp/src/components/NetworkSelector/index.js +++ b/webapp/src/components/NetworkSelector/index.js @@ -13,7 +13,6 @@ import lacchainImg from '../../assets/lacchain.webp' import telosImg from '../../assets/telos.webp' import xprNetworkImg from '../../assets/xpr.webp' import eosImg from '../../assets/eos.webp' -import airwireImg from '../../assets/airwire.png' import ultraImg from '../../assets/ultra.webp' import libreImg from '../../assets/libre.webp' import { getLocalePath } from 'utils/url-localization' @@ -43,11 +42,6 @@ const LogoSvg = ({ name }) => { case 'xpr': return xpr network logo - case 'airwire': - return ( - airwire logo - ) - case 'ultra': return ultra logo diff --git a/webapp/src/components/NetworkSelector/styles.js b/webapp/src/components/NetworkSelector/styles.js index ea3300823..e9c5693e5 100644 --- a/webapp/src/components/NetworkSelector/styles.js +++ b/webapp/src/components/NetworkSelector/styles.js @@ -180,11 +180,6 @@ export default (theme) => ({ marginRight: theme.spacing(1), marginLeft: -3, }, - airwireImg: { - width: '24px !important', - height: '24px !important', - marginRight: theme.spacing(2), - }, libreImg: { width: '24px !important', height: '24px !important', diff --git a/webapp/src/language/en/en.airwire-testnet.json b/webapp/src/language/en/en.airwire-testnet.json deleted file mode 100644 index 7d13fab99..000000000 --- a/webapp/src/language/en/en.airwire-testnet.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "routes": { - "/>title": "Airwire Network Monitor and Infrastructure Dashboard", - "/cpu-benchmark>title": "CPU Benchmarks - Airwire Network Dashboard", - "/block-producers>title": "Block Producers - Airwire Network Dashboard", - "/rewards-distribution>title": "Rewards Distribution - Airwire Network Dashboard", - "/nodes>title": "Airwire Nodes Status Monitor", - "/nodes-distribution>title": "Geographic Distribution of Nodes - Airwire Network Dashboard", - "/accounts>title": "Accounts and Contracts - Airwire Network Dashboard", - "/bpjson>title": "BP JSON - Airwire Network Dashboard", - "/ricardian-contract>title": "BP Agreement - Airwire Network Dashboard", - "/block-distribution>title": "Block Production Distribution - Airwire Network Dashboard", - "/missed-blocks>title": "Missed Blocks - Airwire Network Dashboard", - "/endpoints>title": "API Endpoints - Airwire Network Dashboard", - "/about>title": "About - Airwire Network Dashboard", - "/help>title": "Help - Airwire Network Dashboard", - "/rewards-distribution>moreDescription": "A geographic visualization of daily block producer rewards and a list of undiscoverable paid block producers.", - "/bpjson>moreDescription": "A tool for block producers to provide details of their organizations and nodes to comply with the BP information standard.", - "/node-config>moreDescription": "Use this tool to obtain example config files to help configure a new node on the network.", - "/ricardian-contract>moreDescription": "The on-chain ricardian contract that describes the validator node agreement of this network.", - "/>moreDescription": "Find information on the Airwire Test Network and its current status.", - "/cpu-benchmark>moreDescription": "A visualization of CPU usage in microseconds by block producer nodes accounts, with lowest, highest, and average usage data.", - "/block-producers>moreDescription": "A list of the block producers in the network – blockchain accounts registered to run nodes on the network. It includes information from chain tables and their bp.json files.", - "/nodes>moreDescription": "A list of all the nodes run by block producers comprising the network with specific information such as endpoints and location.", - "/endpoints>moreDescription": "An updated list of public API endpoints provided by node operators and their health status.", - "/nodes-distribution>moreDescription": "A visualization of the geographic distribution of the nodes in this network.", - "/accounts>moreDescription": "This tool helps find information about accounts and interact with contracts on the network. Enter an account name and obtain account information, smart contract actions, and table data.", - "/block-distribution>moreDescription": "A visualization of the distribution of blocks produced by the nodes in the network.", - "/missed-blocks>moreDescription": "A list of scheduled, produced, and missed blocks by each account in the network." - } -} diff --git a/webapp/src/language/en/en.airwire.json b/webapp/src/language/en/en.airwire.json deleted file mode 100644 index fddd756b8..000000000 --- a/webapp/src/language/en/en.airwire.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "routes": { - "/>title": "Airwire Network Monitor and Infrastructure Dashboard", - "/cpu-benchmark>title": "CPU Benchmarks - Airwire Network Dashboard", - "/block-producers>title": "Block Producers - Airwire Network Dashboard", - "/rewards-distribution>title": "Rewards Distribution - Airwire Network Dashboard", - "/nodes>title": "Airwire Nodes Status Monitor", - "/nodes-distribution>title": "Geographic Distribution of Nodes - Airwire Network Dashboard", - "/accounts>title": "Accounts and Contracts - Airwire Network Dashboard", - "/bpjson>title": "BP JSON - Airwire Network Dashboard", - "/ricardian-contract>title": "BP Agreement - Airwire Network Dashboard", - "/block-distribution>title": "Block Production Distribution - Airwire Network Dashboard", - "/missed-blocks>title": "Missed Blocks - Airwire Network Dashboard", - "/endpoints>title": "API Endpoints - Airwire Network Dashboard", - "/about>title": "About - Airwire Network Dashboard", - "/help>title": "Help - Airwire Network Dashboard", - "/rewards-distribution>moreDescription": "A geographic visualization of daily block producer rewards and a list of undiscoverable paid block producers.", - "/bpjson>moreDescription": "A tool for block producers to provide details of their organizations and nodes to comply with the BP information standard.", - "/node-config>moreDescription": "Use this tool to obtain example config files to help configure a new node on the network.", - "/ricardian-contract>moreDescription": "The on-chain ricardian contract that describes the validator node agreement of this network.", - "/>moreDescription": "Find information on the Airwire Mainnet and its current status.", - "/cpu-benchmark>moreDescription": "A visualization of CPU usage in microseconds by block producer nodes accounts, with lowest, highest, and average usage data.", - "/block-producers>moreDescription": "A list of the block producers in the network – blockchain accounts registered to run nodes on the network. It includes information from chain tables and their bp.json files.", - "/nodes>moreDescription": "A list of all the nodes run by block producers comprising the network with specific information such as endpoints and location.", - "/endpoints>moreDescription": "An updated list of public API endpoints provided by node operators and their health status.", - "/nodes-distribution>moreDescription": "A visualization of the geographic distribution of the nodes in this network.", - "/accounts>moreDescription": "This tool helps find information about accounts and interact with contracts on the network. Enter an account name and obtain account information, smart contract actions, and table data.", - "/block-distribution>moreDescription": "A visualization of the distribution of blocks produced by the nodes in the network.", - "/missed-blocks>moreDescription": "A list of scheduled, produced, and missed blocks by each account in the network." - } -} diff --git a/webapp/src/language/en/index.js b/webapp/src/language/en/index.js index 14ebdc343..68371c42e 100644 --- a/webapp/src/language/en/index.js +++ b/webapp/src/language/en/index.js @@ -10,8 +10,6 @@ import enXPRTestnet from './en.xpr-testnet.json' import enXPR from './en.xpr.json' import enWaxTestnet from './en.wax-testnet.json' import enWax from './en.wax.json' -import enAirwire from './en.airwire.json' -import enAirwireTestnet from './en.airwire-testnet.json' import enUltraTestnet from './en.ultra-testnet.json' export default { @@ -27,7 +25,5 @@ export default { 'en.libre': enLibre, 'en.xpr-testnet': enXPRTestnet, 'en.wax-testnet': enWaxTestnet, - 'en.airwire': enAirwire, - 'en.airwire-testnet': enAirwireTestnet, 'en.ultra-testnet': enUltraTestnet, } diff --git a/webapp/src/language/es/es.airwire-testnet.json b/webapp/src/language/es/es.airwire-testnet.json deleted file mode 100644 index d1c9b4867..000000000 --- a/webapp/src/language/es/es.airwire-testnet.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "routes": { - "/>title": "Monitor de infraestructura y panel de control de red Airwire", - "/cpu-benchmark>title": "Benchmark de CPU - Panel", - "/block-producers>title": "Productores de Bloques - Panel", - "/rewards-distribution>title": "Distribución de recompensas - Panel", - "/nodes>title": "Nodos - Panel", - "/nodes-distribution>title": "Distribución Geográfica de Nodos", - "/accounts>title": "Cuentas y Contratos - Panel", - "/bpjson>title": "BP JSON - Panel", - "/ricardian-contract>title": "Acuerdo de Productor de Bloques - Airwire", - "/block-distribution>title": "Distribución de bloques - Airwire", - "/endpoints>title": "URL's - Airwire", - "/about>title": "Acerca de - Panel", - "/help>title": "Ayuda - Panel", - "/rewards-distribution>moreDescription": "Distribución diaria de recompensas de BP por ubicación geográfica de los productores de bloques pagados.", - "/bpjson>moreDescription": "Una representación visual de los nodos actuales de la red.", - "/node-config>moreDescription": "Utilice esta herramienta para obtener archivos de configuración de ejemplo para ayudar a configurar un nuevo nodo en la red.", - "/ricardian-contract>moreDescription": "Lea más sobre el Acuerdo de nodo de validación de esta red. Contáctenos si tiene alguna consulta.", - "/>moreDescription": "Encuentre datos de redes blockchain utilizando la tecnología EOSIO. Vea más redes aquí: https://antelope.tools/.", - "/cpu-benchmark>moreDescription": "Una visualización del uso de CPU en microsegundos por cuentas de nodos productores de bloques, con datos de uso más bajos, más altos y promedio.", - "/block-producers>moreDescription": "Una lista de los productores de bloques en la red: cuentas de blockchain registradas para ejecutar nodos en la red. Incluye información de tablas en cadena y sus archivos bp.json.", - "/nodes>moreDescription": "Una lista de todos los nodos ejecutados por entidades que componen la red con información específica como puntos finales y ubicación.", - "/endpoints>moreDescription": "Una lista actualizada de los puntos finales de la API pública proporcionada por los operadores de nodos en la red.", - "/nodes-distribution>moreDescription": "Una visualización de la distribución geográfica de los nodos de esta red.", - "/accounts>moreDescription": "Esta herramienta le ayuda a buscar información sobre cuentas y contratos de la red. Escriba el nombre de un contrato o cuenta en el espacio provisto para comenzar a buscar. Obtendrá los datos de las acciones del contrato, tablas de contrato, alcance, límites superior e inferior y límites.", - "/block-distribution>moreDescription": "Una visualización de la distribución de bloques producida por los nodos de la red.", - "/missed-blocks>moreDescription": "Una lista de bloques programados, producidos y perdidos por cada cuenta en la red." - } -} diff --git a/webapp/src/language/es/es.airwire.json b/webapp/src/language/es/es.airwire.json deleted file mode 100644 index d1c9b4867..000000000 --- a/webapp/src/language/es/es.airwire.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "routes": { - "/>title": "Monitor de infraestructura y panel de control de red Airwire", - "/cpu-benchmark>title": "Benchmark de CPU - Panel", - "/block-producers>title": "Productores de Bloques - Panel", - "/rewards-distribution>title": "Distribución de recompensas - Panel", - "/nodes>title": "Nodos - Panel", - "/nodes-distribution>title": "Distribución Geográfica de Nodos", - "/accounts>title": "Cuentas y Contratos - Panel", - "/bpjson>title": "BP JSON - Panel", - "/ricardian-contract>title": "Acuerdo de Productor de Bloques - Airwire", - "/block-distribution>title": "Distribución de bloques - Airwire", - "/endpoints>title": "URL's - Airwire", - "/about>title": "Acerca de - Panel", - "/help>title": "Ayuda - Panel", - "/rewards-distribution>moreDescription": "Distribución diaria de recompensas de BP por ubicación geográfica de los productores de bloques pagados.", - "/bpjson>moreDescription": "Una representación visual de los nodos actuales de la red.", - "/node-config>moreDescription": "Utilice esta herramienta para obtener archivos de configuración de ejemplo para ayudar a configurar un nuevo nodo en la red.", - "/ricardian-contract>moreDescription": "Lea más sobre el Acuerdo de nodo de validación de esta red. Contáctenos si tiene alguna consulta.", - "/>moreDescription": "Encuentre datos de redes blockchain utilizando la tecnología EOSIO. Vea más redes aquí: https://antelope.tools/.", - "/cpu-benchmark>moreDescription": "Una visualización del uso de CPU en microsegundos por cuentas de nodos productores de bloques, con datos de uso más bajos, más altos y promedio.", - "/block-producers>moreDescription": "Una lista de los productores de bloques en la red: cuentas de blockchain registradas para ejecutar nodos en la red. Incluye información de tablas en cadena y sus archivos bp.json.", - "/nodes>moreDescription": "Una lista de todos los nodos ejecutados por entidades que componen la red con información específica como puntos finales y ubicación.", - "/endpoints>moreDescription": "Una lista actualizada de los puntos finales de la API pública proporcionada por los operadores de nodos en la red.", - "/nodes-distribution>moreDescription": "Una visualización de la distribución geográfica de los nodos de esta red.", - "/accounts>moreDescription": "Esta herramienta le ayuda a buscar información sobre cuentas y contratos de la red. Escriba el nombre de un contrato o cuenta en el espacio provisto para comenzar a buscar. Obtendrá los datos de las acciones del contrato, tablas de contrato, alcance, límites superior e inferior y límites.", - "/block-distribution>moreDescription": "Una visualización de la distribución de bloques producida por los nodos de la red.", - "/missed-blocks>moreDescription": "Una lista de bloques programados, producidos y perdidos por cada cuenta en la red." - } -} diff --git a/webapp/src/language/es/index.js b/webapp/src/language/es/index.js index 930169aa7..aabe7518d 100644 --- a/webapp/src/language/es/index.js +++ b/webapp/src/language/es/index.js @@ -10,8 +10,6 @@ import esXPRTestnet from './es.xpr-testnet.json' import esXPR from './es.xpr.json' import esWaxTestnet from './es.wax-testnet.json' import esWax from './es.wax.json' -import esAirwire from './es.airwire.json' -import esAirwireTestnet from './es.airwire-testnet.json' import esUltraTestnet from './es.ultra-testnet.json' export default { @@ -27,7 +25,5 @@ export default { 'es.libre': esLibre, 'es.xpr-testnet': esXPRTestnet, 'es.wax-testnet': esWaxTestnet, - 'es.airwire': esAirwire, - 'es.airwire-testnet': esAirwireTestnet, 'es.ultra-testnet': esUltraTestnet, } From 7d1c1114946f46e1ad0d1461b44a64c57b3cf566 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 21 Nov 2023 14:31:22 -0600 Subject: [PATCH 46/75] chore(webapp): add a script to generate the sitemaps for differents languages --- makefile | 3 + scripts/updateSitemaps.py | 138 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 141 insertions(+) create mode 100644 scripts/updateSitemaps.py diff --git a/makefile b/makefile index 08ebbbedc..dac1d2bbf 100644 --- a/makefile +++ b/makefile @@ -144,6 +144,9 @@ start-webapp: @cd webapp && yarn && yarn start:local | cat @echo "done webapp" +update-sitemaps: + python3 ./scripts/updateSitemaps.py --path ./webapp/public/ + add-language-webapp: ##copy en files in a new folder based on lang= @mkdir ./webapp/src/language/$(lang) @cp ./webapp/src/language/en/en.* ./webapp/src/language/$(lang)/ diff --git a/scripts/updateSitemaps.py b/scripts/updateSitemaps.py new file mode 100644 index 000000000..5f01adcc4 --- /dev/null +++ b/scripts/updateSitemaps.py @@ -0,0 +1,138 @@ +import os +import argparse + +NETWORKS = [ + 'telos', + 'telos-testnet', + 'libre', + 'libre-testnet', + 'xpr', + 'xpr-testnet', + 'wax', + 'wax-testnet', + 'eos', + 'jungle', + 'lacchain', + 'ultra-testnet', +] +DEFAULT_LANGUAGE = 'en' +LANGUAGES = ['en', 'es', 'ko', 'zh'] + +parser = argparse.ArgumentParser(prog='Simple Sitemap Updater',description='Update the sitemaps alternate links and generate language versions using the sitemap-en.xml as source.') +parser.add_argument('--path', type=str, default='./', + help='path where the sitemaps are searched') +parser.add_argument('--networks', nargs="*", + type=str,default=[],metavar='Network name', + help='the list of networks to update') + +args = parser.parse_args() + +# Language Handling + +def remove_language(url): + index = url.find('/', 8) + if index < 0: return url + language = url[index:index+4] + return url if language[-1] != '/' or language[0] != '/' else url[:index] + url[index+3:] + +def add_language(url, language): + new_url = remove_language(url) + if language == DEFAULT_LANGUAGE: + return new_url + index = new_url.find('/', 8) + if index < 0: + return new_url + '/' + language + return new_url[:index] + '/' + language + new_url[index:] + +# HTML Handling + +def generate_alternate_link(url, language): + link = ' ' + return link + +def remove_tags(element): + string = '' + include = True + for char in element: + if char in ['<', ' ', '\t', '\n']: + include = False + if char == '>': + include = True + continue + if include: + string += char + return string + +# Directory Handling + +def write_file(path, content): + file = open(path, "wt") + file.write(content) + file.close() + +def create_sub_folders(path, sub_folders): + for sub_folder in sub_folders: + if not os.path.exists(path+sub_folder): + os.makedirs(path+sub_folder) + +def get_sitemap_filename(path, language): + return path+'sitemap-'+language+'.xml' + +def add_trailing_slash(path): + return path + '/' if path[-1] != '/' else path + +def get_success_message(file, existed): + return file + (' updated ' if existed else ' created ') + 'successfully' + +# main + +path = add_trailing_slash(args.path) + +if len(args.networks) > 0: + networks = [network for network in NETWORKS if network in args.networks] +else: + networks = NETWORKS + +create_sub_folders(path, NETWORKS) + +for network in networks: + + network_path = path + network + '/' + default_sitemap = get_sitemap_filename(network_path, DEFAULT_LANGUAGE) + + if not os.path.exists(default_sitemap): + print('The '+default_sitemap+' file is missing') + continue + + for language in LANGUAGES: + new_file = '' + include = True + new_path = get_sitemap_filename(network_path, language) + try: + with open(default_sitemap, "rt") as file: + for item in file: + if '' in item: + include = True + continue + if '' in item: + url = remove_tags(item) + new_file += ' ' + \ + add_language(url, language)+'\n' + for lang in LANGUAGES: + if lang == language: + continue + new_file += generate_alternate_link(url, lang) + '\n' + else: + new_file += item + file.close() + existed = os.path.isfile(new_path) + write_file(new_path, new_file) + print(get_success_message(new_path, existed)) + except Exception as error: + print('An error occurred during '+new_path+' processing:\n'+error) From 53415e03c6f2c531a473f40960a18a8e7a17ebc6 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 21 Nov 2023 14:40:41 -0600 Subject: [PATCH 47/75] feat(webapp): add files to korean and chinese translations --- webapp/src/language/index.js | 12 +- webapp/src/language/ko/index.js | 30 ++ webapp/src/language/ko/ko.json | 539 +++++++++++++++++++ webapp/src/language/ko/ko.jungle.json | 5 + webapp/src/language/ko/ko.lacchain.json | 157 ++++++ webapp/src/language/ko/ko.libre-testnet.json | 5 + webapp/src/language/ko/ko.libre.json | 3 + webapp/src/language/ko/ko.mainnet.json | 20 + webapp/src/language/ko/ko.telos-testnet.json | 6 + webapp/src/language/ko/ko.telos.json | 6 + webapp/src/language/ko/ko.ultra-testnet.json | 6 + webapp/src/language/ko/ko.wax-testnet.json | 3 + webapp/src/language/ko/ko.wax.json | 3 + webapp/src/language/ko/ko.xpr-testnet.json | 20 + webapp/src/language/ko/ko.xpr.json | 20 + webapp/src/language/zh/index.js | 30 ++ webapp/src/language/zh/zh.json | 539 +++++++++++++++++++ webapp/src/language/zh/zh.jungle.json | 5 + webapp/src/language/zh/zh.lacchain.json | 157 ++++++ webapp/src/language/zh/zh.libre-testnet.json | 5 + webapp/src/language/zh/zh.libre.json | 3 + webapp/src/language/zh/zh.mainnet.json | 20 + webapp/src/language/zh/zh.telos-testnet.json | 6 + webapp/src/language/zh/zh.telos.json | 6 + webapp/src/language/zh/zh.ultra-testnet.json | 6 + webapp/src/language/zh/zh.wax-testnet.json | 3 + webapp/src/language/zh/zh.wax.json | 3 + webapp/src/language/zh/zh.xpr-testnet.json | 20 + webapp/src/language/zh/zh.xpr.json | 20 + 29 files changed, 1652 insertions(+), 6 deletions(-) create mode 100644 webapp/src/language/ko/index.js create mode 100644 webapp/src/language/ko/ko.json create mode 100644 webapp/src/language/ko/ko.jungle.json create mode 100644 webapp/src/language/ko/ko.lacchain.json create mode 100644 webapp/src/language/ko/ko.libre-testnet.json create mode 100644 webapp/src/language/ko/ko.libre.json create mode 100644 webapp/src/language/ko/ko.mainnet.json create mode 100644 webapp/src/language/ko/ko.telos-testnet.json create mode 100644 webapp/src/language/ko/ko.telos.json create mode 100644 webapp/src/language/ko/ko.ultra-testnet.json create mode 100644 webapp/src/language/ko/ko.wax-testnet.json create mode 100644 webapp/src/language/ko/ko.wax.json create mode 100644 webapp/src/language/ko/ko.xpr-testnet.json create mode 100644 webapp/src/language/ko/ko.xpr.json create mode 100644 webapp/src/language/zh/index.js create mode 100644 webapp/src/language/zh/zh.json create mode 100644 webapp/src/language/zh/zh.jungle.json create mode 100644 webapp/src/language/zh/zh.lacchain.json create mode 100644 webapp/src/language/zh/zh.libre-testnet.json create mode 100644 webapp/src/language/zh/zh.libre.json create mode 100644 webapp/src/language/zh/zh.mainnet.json create mode 100644 webapp/src/language/zh/zh.telos-testnet.json create mode 100644 webapp/src/language/zh/zh.telos.json create mode 100644 webapp/src/language/zh/zh.ultra-testnet.json create mode 100644 webapp/src/language/zh/zh.wax-testnet.json create mode 100644 webapp/src/language/zh/zh.wax.json create mode 100644 webapp/src/language/zh/zh.xpr-testnet.json create mode 100644 webapp/src/language/zh/zh.xpr.json diff --git a/webapp/src/language/index.js b/webapp/src/language/index.js index 6f7f413c8..3e4ed77b9 100644 --- a/webapp/src/language/index.js +++ b/webapp/src/language/index.js @@ -3,14 +3,14 @@ import { deepMerge } from '../utils/deep-merge' import en from './en' import es from './es' -//import ko from './ko' -//import zh from './zh' +import ko from './ko' +import zh from './zh' const languajes = { ...es, ...en, -// ...ko, -// ...zh, + ...ko, + ...zh, } const getLanguaje = (languaje) => { @@ -27,6 +27,6 @@ const getLanguaje = (languaje) => { export default { en: getLanguaje('en'), es: getLanguaje('es'), -// ko: getLanguaje('ko'), -// zh: getLanguaje('zh'), + ko: getLanguaje('ko'), + zh: getLanguaje('zh'), } diff --git a/webapp/src/language/ko/index.js b/webapp/src/language/ko/index.js new file mode 100644 index 000000000..bdbc58a77 --- /dev/null +++ b/webapp/src/language/ko/index.js @@ -0,0 +1,30 @@ +import ko from './ko.json' +import koLacchain from './ko.lacchain.json' +import koTelosTestnet from './ko.telos-testnet.json' +import koLibreTestnet from './ko.libre-testnet.json' +import koLibre from './ko.libre.json' +import koTelos from './ko.telos.json' +import koJungle from './ko.jungle.json' +import koMainnet from './ko.mainnet.json' +import koXPRTestnet from './ko.xpr-testnet.json' +import koXPR from './ko.xpr.json' +import koWaxTestnet from './ko.wax-testnet.json' +import koWax from './ko.wax.json' +import koUltraTestnet from './ko.ultra-testnet.json' + +export default { + ko, + 'ko.lacchain': koLacchain, + 'ko.telos': koTelos, + 'ko.xpr': koXPR, + 'ko.wax': koWax, + 'ko.jungle': koJungle, + 'ko.mainnet': koMainnet, + 'ko.telos-testnet': koTelosTestnet, + 'ko.libre-testnet': koLibreTestnet, + 'ko.libre': koLibre, + 'ko.xpr-testnet': koXPRTestnet, + 'ko.wax-testnet': koWaxTestnet, + 'ko.ultra-testnet': koUltraTestnet, +} + diff --git a/webapp/src/language/ko/ko.json b/webapp/src/language/ko/ko.json new file mode 100644 index 000000000..fa99dca2c --- /dev/null +++ b/webapp/src/language/ko/ko.json @@ -0,0 +1,539 @@ +{ + "common": { + "all": "All", + "account": "Account", + "name": "Name", + "rewards": "Rewards", + "votes": "Votes", + "block": "Block", + "blocks": "Blocks", + "transactions": "Transactions", + "producerName": "Producer name", + "nodeName": "Node name", + "nodeType": "Node type", + "description": "Description", + "color": "Color", + "producers": "Producers", + "producer": "Producer", + "connectWallet": "Connect Wallet", + "keys": "Keys", + "download": "Download", + "healthStatus": "Health Status", + "help": "Help", + "node": "Node", + "lastHour": "Last Hour", + "lastDay": "Last Day", + "lastWeek": "Last Week", + "dailyAverage": "Daily Average", + "lastYear": "Last Year", + "itemsPerPage": "Items per page", + "api": "HTTP", + "ssl": "HTTPS", + "p2p": "P2P", + "payer": "Payer", + "nodes": "Nodes", + "total": "Total", + "missedBlocks": "Missed Blocks", + "timeFrame": "Time frame", + "net": "NET", + "cpu": "CPU", + "footer1": "This App is a Community Public Good", + "footer2": "Proudly Engineered by Edenia", + "executeTransaction": "Execute Transaction", + "bugRequest": "Report a bug / Request a feature", + "moreInfo": "More Info", + "openLink": "Visit Site", + "table": "Table", + "noOptions": "No matches", + "updatedAt": "Updated at", + "nextUpdateAt": "Next update at", + "secondsAgo": "Seconds Ago", + "metaTitle": "Antelope Tools network monitors real-time infrastructure data for multiple Antelope and EOSIO chains.", + "metaDescription": "Antelope Tools Dashboard is a network monitor featuring real-time data on block producer nodes and blockchain infrastructure for multiple Antelope and EOSIO chains.", + "goBack": "Go Back" + }, + "routes": { + "/>sidebar": "Dashboard", + "/>title": "{{networkName}} Network Monitor and Infrastructure Dashboard", + "/>heading": "Welcome to {{networkName}}", + "/cpu-benchmark>sidebar": "CPU Benchmarks", + "/cpu-benchmark>title": "CPU Benchmarks - {{networkName}} Network Dashboard", + "/cpu-benchmark>heading": "Block Producer Nodes CPU Benchmarks on {{networkName}}", + "/block-producers>sidebar": "Block Producers", + "/block-producers>title": "Block Producers - {{networkName}} Network Dashboard", + "/block-producers>heading": "Block Producers on {{networkName}}", + "/block-producers/bpName>heading": "Block Producer Profile", + "/entities/bpName>heading": "Entity Profile", + "/undiscoverable-bps>sidebar": "Undiscoverable BPs", + "/undiscoverable-bps>title": "Paid undiscoverable Block Producers - {{networkName}} Network Dashboard", + "/undiscoverable-bps>heading": "Undiscoverable Paid Block Producers on {{networkName}}", + "/rewards-distribution>sidebar": "Rewards Distribution", + "/rewards-distribution>title": "Rewards Distribution - {{networkName}} Network Dashboard", + "/rewards-distribution>heading": "Rewards Distribution of {{networkName}}", + "/nodes>sidebar": "Nodes", + "/nodes>title": "Nodes - {{networkName}} Nodes Status Monitor", + "/nodes>heading": "Nodes on {{networkName}}", + "/nodes-distribution>sidebar": "Geo Distribution", + "/nodes-distribution>title": "Geographic Distribution of Nodes - {{networkName}} Network Dashboard", + "/nodes-distribution>heading": "Geographic Distribution of {{networkName}} Nodes", + "/accounts>sidebar": "Accounts & Contracts", + "/accounts>title": "Accounts and Contracts - {{networkName}} Network Dashboard", + "/accounts>heading": "Accounts and Contracts of {{networkName}}", + "/bpjson>sidebar": "BP.json Generator", + "/bpjson>title": "BP JSON Generator - {{networkName}} Network Dashboard", + "/bpjson>heading": "BP.json Generator", + "/faucet>sidebar": "Create Account & Faucet", + "/faucet>title": "Faucet and Account Creator - {{networkName}} Network Dashboard", + "/faucet>heading": "{{networkName}} Account Creator and Token Faucet", + "/ricardian-contract>sidebar": "BP Agreement", + "/ricardian-contract>title": "BP Agreement - {{networkName}} Network Dashboard", + "/ricardian-contract>heading": "Block Producer Agreement on {{networkName}}", + "/block-distribution>sidebar": "Block Distribution", + "/block-distribution>title": "Block Production Distribution - {{networkName}} Network Dashboard", + "/block-distribution>heading": "Block Production Distribution on {{networkName}}", + "/missed-blocks>sidebar": "Missed Blocks", + "/missed-blocks>title": "Missed Blocks - {{networkName}} Network Dashboard", + "/missed-blocks>heading": "Missed Blocks on {{networkName}}", + "/stress-test>title": "Stress Test Dashboard - {{networkName}} Network Dashboard", + "/stress-test>sidebar": "Stress Test", + "/stress-test>heading": "{{networkName}} Stress Test", + "/evm>title": "EVM Dashboard - {{networkName}} Network Dashboard", + "/evm>sidebar": "EVM Dashboard", + "/evm>heading": "{{networkName}} EVM Dashboard", + "/evm-rpc-endpoints>title": "EVM RPC Endpoints - {{networkName}} Network Dashboard", + "/evm-rpc-endpoints>sidebar": "EVM RPC Endpoints", + "/evm-rpc-endpoints>heading": "{{networkName}} EVM RPC Endpoints", + "/endpoints>sidebar": "API Endpoints", + "/endpoints>title": "API Endpoints - {{networkName}} Network Dashboard", + "/endpoints>heading": "{{networkName}} API Endpoints", + "/endpoints-stats>sidebar": "API Endpoints Stats", + "/endpoints-stats>title": "API Endpoints Stats- {{networkName}} Network Dashboard", + "/endpoints-stats>heading": "{{networkName}} API Endpoints Stats", + "/about>sidebar": "About", + "/about>title": "About - {{networkName}} Network Monitor and Infrastructure Dashboard", + "/about>heading": "About Antelope Tools", + "/about>moreDescription": "Learn more about Edenia and the Antelope Tools project, its importance and how you can get involved", + "/help>sidebar": "Help", + "/help>title": "Help - {{networkName}} Network Dashboard", + "/help>heading": "Welcome to the Antelope Tools Help Center", + "/help>moreDescription": "Check how the bp.json Standard is used, troubleshoot if BP data is missing and contact us if you have suggestions", + "networkInformation": "Network Information", + "tools": "Tools", + "docs": "Docs", + "community": "Community", + "changelog": "Changelog", + "github": "Github Repository", + "telegram": "Telegram Channel", + "readMore": "Read more", + "readLess": "Read less", + "moreDescription": "This is a read more text component for users that either need a bit of help or are new to the system. A clear but not too extensive set of terms and instructions can help users get going without having to over write titles or labels like the one on the search card below. Take a look! A third line is also possible and probably more than enough.", + "/rewards-distribution>moreDescription": "A geographic visualization of daily block producer rewards and a list of undiscoverable paid block producers.", + "/undiscoverable-bps>moreDescription": "A list of the paid block producers on the network which do not provide information in their BP.json files.", + "/bpjson>moreDescription": "A tool for block producers to provide details of their organizations and nodes to comply with the BP information standard.", + "/node-config>moreDescription": "Use this tool to obtain example config files to help configure a new node on the network.", + "/ricardian-contract>moreDescription": "The on-chain ricardian contract that describes the validator node agreement of {{networkName}}.", + "/>moreDescription": "Monitor the infrastructure of blockchain networks using Antelope + EOSIO blockchain technology.", + "/cpu-benchmark>moreDescription": "A visualization of CPU usage in microseconds by block producer nodes accounts, with lowest, highest, and average usage data.", + "/block-producers>moreDescription": "A list of the block producers in the network – blockchain accounts registered to run nodes on the network. It includes information from chain tables and their bp.json files.", + "/block-producers/bpName>moreDescription": "View block producer general information such as rank, rewards and compliance", + "/nodes>moreDescription": "A list of all the nodes run by block producers comprising the network with specific information such as endpoints and location.", + "/endpoints>moreDescription": "An updated list of public API endpoints provided by node operators and their health status.", + "/endpoints-stats>moreDescription": "Response time statistics from Costa Rica and the availability of a producer's endpoints.", + "/nodes-distribution>moreDescription": "A visualization of the geographic distribution of the nodes in this network.", + "/accounts>moreDescription": "This tool helps find information about accounts and interact with contracts on the network. Enter an account name and obtain account information, smart contract actions, and table data.", + "/block-distribution>moreDescription": "A visualization of the distribution of blocks produced by the nodes in the network.", + "/missed-blocks>moreDescription": "A list of scheduled, produced, and missed blocks by each account in the network.", + "/stress-test>moreDescription": "Monitor current and historical data about transactions, such as resource utilization and all-time high TPS." + }, + "homeRoute": { + "currentProducer": "Current Producer", + "headBlock": "Head Block", + "lastBlock": "Last Irreversible Block", + "bpSchedule": "Block Producer Schedule", + "transPerSecond": "Transactions Per Second", + "transPerBlock": "Transactions Per Block", + "transactions": "Transactions", + "transactionsHistory": "Transactions History", + "timeFrame": "Time frame", + "pause": "Pause", + "play": "Play", + "Last Hour": "Last Hour", + "Last Day": "Last Day", + "Last Week": "Last Week", + "Last Year": "Last Year", + "scheduleVersion": "Schedule Version", + "tpsAllTimeHigh": "TPS All Time High", + "cpuUtilizationAllTimeHigh": "CPU Usage in TPS All Time High", + "networkUtilizationAllTimeHigh": "NET Usage in TPS All Time High", + "transactionsPerSecond": "Transactions per Second", + "transactionsPerBlock": "Transactions per Block", + "nodes": "Nodes", + "undefined": "Undefined", + "unknown": "Unknown", + "uniqueLocations": "Unique Locations", + "cpuLimitPerBlock": "CPU Limit Per Block", + "netLimitPerBlock": "Net Limit Per Block", + "chainCpuLimit": "Chain CPU Limit", + "chainNetLimit": "Chain Net Limit", + "timeToFinality": "Time to Finality", + "cpuUsage": "CPU Usage", + "netUsage": "NET Usage", + "average": "Average", + "nodeType": "{{nodeType}} $t(nodes)", + "tooltip": { + "lastBlock": "The most recently verified block in the blockchain", + "bpSchedule": "The current roster of top 21 block producers", + "scheduleVersion": "The active version number for the list of top 21 block producers", + "tpsAllTimeHigh": "Peak Transactions Per Second (TPS) ever recorded", + "cpuUtilizationAllTimeHigh": "CPU utilization at the time of peak TPS", + "networkUtilizationAllTimeHigh": "Network (NET) utilization at the time of peak TPS", + "full": "Node that archives data back to the genesis block", + "seed": "Node offering public P2P connectivity endpoints", + "query": "Node offering public HTTP(S) API access points", + "producer": "Node responsible for generating new blocks", + "nodes": "Total number of nodes among the top 150 block producers", + "uniqueLocations": "Count of distinct countries hosting block producers, derived from bp.json files", + "timeToFinality": "Duration required for a transaction to gain full blockchain confirmation", + "cpuUsage": "Percentage of CPU resources consumed in the most recent second", + "netUsage": "Percentage of Network (NET) resources consumed in the most recent second", + "totalProducers": "Total number of registered Block Producers, as per the eosio smart contract" + } + }, + "rewardsDistributionRoute": { + "dailyRewards": "Total Daily Rewards", + "yearlyRewards": "Total Yearly Rewards", + "topCountryDailyRewards": "Top Country By Daily Rewards", + "notAvailable": "Not available", + "paidProducers": "Paid BPs Not Located", + "lowestRewards": "Lowest Rewards", + "highestRewards": "Highest Rewards", + "exchangeRate": "Exchange Rate", + "country": "Country", + "rewards": "Rewards", + "rewardsPercentage": "Percentage of rewards", + "viewList": "View full list", + "paidProducersText": "Daily Rewards", + "publishBPDetails": "Publish BP Details", + "generateBPjson": "Generate a BP.json", + "tooltip": { + "generateBPjson": "BPs can easily create and update their bp.json for transparency." + } + }, + "accountsRoute": { + "loginBeforeUseAction": "Please connect your wallet in order to execute an action", + "unknownError": "An unexpected error occurred while processing your action.", + "notFound": "not found", + "successMessage": "Transaction completed successfully.", + "placeholder": "Account or Contract Name", + "title": "Explore account details, view contract tables, and execute actions seamlessly.", + "endpointFailure": "Endpoint issue. Please try again later." + }, + "bpJsonRoute": { + "loadText": "Fetching node details...", + "notLogin": "Connect your wallet to access this feature.", + "notRegisterNode": "An active node account is required to utilize this tool.", + "bpjsonInconsistency": "Mismatch detected between on-chain and off-chain bp.json. Please review and update accordingly." + }, + "faucetRoute": { + "createAccount": "Create Your Account", + "newCreatedAccount": "Congratulations! Your new account has been created:", + "transferTokensTransaction": "Tokens have been successfully transferred. View the transaction on the explorer:", + "createButton": "Create Your Account", + "issueTokens": "Distribute Tokens", + "getTokens": "Receive Tokens", + "publicKey": "Enter Public Key (Active/Owner)", + "accountName": "Choose an Account Name", + "invalidAccount": "Enter a valid account name, please.", + "emptyFields": "Complete all fields to proceed with account creation.", + "accountFormat": "Account name should be 12 characters or fewer. Use lowercase letters (a-z) and numbers (1-5) only.", + "keyFormat": "Enter a valid ECC key. You can generate one using cleos or any compatible wallet." + }, + "ricardianContractRoute": { + "title": "Ricardian Contract" + }, + "aboutRoute": { + "body": { + "paragraph1": "Welcome to Antelope Tools, your one-stop solution for real-time visualization and monitoring of Antelope and EOSIO blockchains. Designed to be the ultimate blockchain network monitoring tool, we provide real-time data analytics, Block Producer insights, and much more." + }, + "subtitle1": "About Edenia", + "body1": { + "edenia": "Edenia", + "paragraph1": "is the dedicated team of blockchain experts behind Antelope Tools. With years of experience in blockchain technology and a passion for transparency and reliability, we aim to make the Web3 ecosystem more accessible and user-friendly. Our team is committed to continuous innovation, ensuring that Antelope Tools remains the leading Antelope blockchain network monitoring tool." + }, + "subtitle2": "Why Choose Antelope Tools?", + "body2": { + "paragraph1": "Antelope Tools is a community-centric, open-source platform developed by blockchain enthusiasts committed to transparency and reliability. Our mission is to offer a user-friendly interface to access critical information about Block Producers, thereby fostering network transparency. Experience the difference by trying Antelope Tools today!" + }, + "subtitle3": "The Importance of Network Monitoring", + "body3": { + "paragraph1": "Whether you're on the {{networkName}}, or any other EOSIO-based DPoS network, token holders rely on available data to vote for Block Producers. In permissioned networks like LACChain, node operators must ensure seamless network functionality. Antelope Tools is your reliable source for objective data and node performance metrics." + }, + "subtitle4": "Data Source", + "body4": { + "paragraph1": "We offer rich, graphical insights into entities operating nodes and blockchain infrastructures. Our data is sourced directly from the public table of producers in the system contracts and is updated in real-time to focus only on active entities. We then use the bp.json standard to retrieve additional data from the Block Producers' URLs." + }, + "subtitle5": "Funding and Support", + "body5": { + "paragraph1": "Antelope Tools is generously funded through", + "pomelo": "Pomelo Grants", + "paragraph2": ", a community-driven funding platform. This financial support enables us to maintain, improve, and expand our services. If you find value in what we do, consider supporting us in the next Pomelo Grant round to help us continue making blockchain networks more transparent and efficient." + }, + "subtitle6": "Get Involved", + "body6": { + "paragraph1": "For more insights into Antelope Tools, check out our ", + "github": "GitHub Repository", + "paragraph2": "or join the conversation in our ", + "telegram": "Telegram Channel", + "paragraph3": "Become a part of our community and let's make blockchain networks more transparent and user-friendly together!" + } + }, + "helpRoute": { + "title": "Thank You for Choosing Antelope Tools", + "paragraph": "We're thrilled you've chosen Antelope Tools for your blockchain network monitoring needs.", + "title2": "Configuring bp.json and chains.json Files: A Guide for Node Operators", + "body3": { + "paragraph1Text1": "Antelope Tools offers detailed, real-time visualization and analytics for entities running nodes and blockchain infrastructure. Our data is sourced directly on-chain from the public ", + "eosioAccount": "producers table in the eosio system account.", + "paragraph1Text2": "We then query the URLs of all active Block Producers to retrieve essential information" + }, + "subtitle3": "Leveraging the bp.json Standard for Block Producer and Node Details", + "standard": "using the bp.json standard", + "paragraph2": "If you're a node operator and your data isn't displaying as it should on our dashboard, you'll need to configure your bp.json and chains.json files. Here's a step-by-step guide:", + "bullet1Title": "Setting Up Your bp.json File:", + "bullet1": "Publish a /bp.json file on the website you used when registering via the 'regproducer' action on the eosio system contract. This file should include all pertinent information about your organization and the nodes you operate.", + "bullet2Title": "Managing Multiple Networks:", + "bullet2": "If you're operating nodes on multiple EOSIO-based blockchains, you'll need a chains.json file. This file maps each network's chain ID to the appropriate bp.json file.", + "subBullet2Title": "Example:", + "subBullet2": "If your registered URL is ", + "subBullet2b": ", the system first tries to access ", + "subBullet2c": ". If this file is not available, it defaults to ", + "bullet3Title": "Chain ID Importance:", + "bullet3": "Ensure your chains.json file contains the chain ID for proper network identification. If the chain ID is missing, only your organizational details will be displayed, omitting nodes and endpoints.", + "title3": "Utilize Our BP JSON Generator Tool", + "paragraph3": "We offer a BP JSON generator tool to simplify the creation and updating of your bp.json file. This tool gathers your Block Producer information and generates a bp.json file in the correct format. It also enables on-chain publishing to the `producerjson` smart contract.", + "bpjsonGenerator": "Check out our BP.JSON Generator", + "title4": "Contact Us", + "paragraph4": "Your feedback is crucial as we aim to continually enhance our platform. Feel free to suggest improvements, report issues, or contribute to our codebase.", + "githubEOSCR": "Visit our Edenia GitHub Repo", + "telegramChannel": "Join the Conversation in Our Telegram Channel", + "websiteEOSCR": "Discover Web3 Development Services by Edenia" + }, + "producerCardComponent": { + "bpProfile>title": "{{bpName}} Block Producer - {{networkName}} Dashboard", + "bpProfile>metaTitle": "{{bpName}} Block Producer on {{networkName}}", + "bpProfile>metaDescription": "Data of the Block Producer {{bpName}} on {{networkName}}, such as its rank, nodes and endpoints", + "rank": "Rank", + "account": "Account", + "website": "Website", + "votes": "Votes", + "rewards": "Rewards", + "country": "Country", + "eosRate": "EOS RATE", + "missedBlocks": "Missed Blocks", + "social": "Social", + "ownershipDisclosure": "Ownership Disclosure", + "codeofconduct": "Code of Conduct", + "chainResources": "Chain Resources", + "otherResources": "Other Resources", + "email": "Email", + "features": "Features", + "endpoints": "Endpoints", + "nodeVersion": "Version", + "cpuBenchmark": "CPU Benchmark Average", + "health": "Compliance", + "moreInfo": "More Info", + "version": "Version", + "info": "Info", + "keys": "Keys", + "location": "Location", + "stats": "Stats", + "peer_keys": "Peer Key", + "emptyState": "This block producer does not provide any information.", + "average": "average rating", + "ratings": "ratings", + "lastClaimTime": "Last Claimed Time", + "dailyRewards": "Daily Rewards", + "yearlyRewards": "Yearly Rewards", + "invalidUrl": "Invalid URL", + "viewList": "View undiscoverable BPs list", + "bpJson": "BP.json", + "viewProfile": "View BP Profile", + "BPonNetwork": "{{position}} Block Producer on {{networkName}}", + "generalInformation": "General Information", + "logo_256": "Logo", + "organization_name": "Name", + "viewNodes": "View {{totalNodes}} nodes", + "bpNodes": "{{bpName}} Nodes", + "viewNodesProfile": "See Full Nodes Info" + }, + "nodeCardComponent": { + "features": "Features", + "endpoints": "Endpoints", + "nodeVersion": "Version", + "cpuBenchmark": "CPU Benchmark Average", + "isFull": "Is full", + "supportedApis": "Supported APIs", + "allWorking": "All endpoints are responding", + "noneWorking": "No endpoints are responding", + "endpointPlural": "Endpoints not responding are the", + "endpointSingular": "Endpoint not responding is the" + }, + "producerHealthIndicatorsComponent": { + "hs_organization_name": "Name", + "hs_email": "Email", + "hs_website": "Website", + "hs_logo_256": "Logo (256px)", + "hs_country": "Country", + "hs_peer_keys": "Peer Keys", + "hs_endpoint": "Endpoint", + "missing": "Missing", + "found": "Found", + "hs_bpJson": "BP Json" + }, + "accountInfoComponent": { + "resources": "Resources", + "contractActions": "Contract Actions", + "contractTables": "Contract Tables", + "ricardianContract": "Ricardian Contract" + }, + "contractTablesComponent": { + "table": "Table", + "scope": "Scope", + "lowerBound": "Lower Bound", + "upperBound": "Upper Bound", + "limit": "Limit", + "refreshData": "Refresh Data", + "index": "Index Position", + "keyType": "Index Type", + "loadMore": "Load More", + "emptyTable": "Empty Table" + }, + "contractActionsComponent": { + "action": "Action" + }, + "contractActionFormComponent": { + "executeTransaction": "Execute Transaction", + "owner": "Owner" + }, + "undiscoverableBPsRoute": { + "noResultsFound": "Well Done! All Block Producers are Operating Transparently." + }, + "blockDistributionRoute": { + "title": "Blocks generated by producer", + "blocksProduced": "Blocks Produced", + "percent": "Percent" + }, + "missedBlocksRoute": { + "title": "Missed Blocks by producer", + "producedBlocks": "Produced Blocks", + "scheduledBlocks": "Scheduled Blocks", + "availability": "Availability" + }, + "endpointsListRoute": { + "title": "Endpoints available by", + "endpointsResponding": "Only endpoints responding", + "linkToStats": "Go to stats", + "filterEndpoints": "Filter responding endpoints", + "copyToClipboard": "Click to Copy responding endpoints from the column to the clipboard" + }, + "cpuBenchmarkRoute": { + "title": "CPU Usage in Microseconds", + "lowest": "Lowest", + "highest": "Highest", + "average": "Average", + "hideAll": "Hide All", + "showAll": "Show All", + "selectTo": "Select an account to toggle or", + "zoomTo": "Drag or Pinch to Zoom In/Out on the Chart" + }, + "producerSearchComponent": { + "partner": "Partner", + "nonPartner": "Non-Partner", + "all": "All", + "allBPs": "All Block Producers", + "top21": "Top 21", + "paidStandby": "Paid Standby", + "nonPaidStandby": "Non-Paid Standby", + "title": "Search Producer", + "producer": "Producer", + "placeholder": "Producer Name" + }, + "endpointInfoComponent": { + "status": "Status", + "response": "Response", + "headBlockTime": "Head Block Time", + "updatedAt": "Last check", + "error": "Error", + "noResponse": "No response" + }, + "nodeSearchComponent": { + "title": "Search Node", + "producer": "Producer", + "placeholder": "Node Name" + }, + "noResultsComponent": { + "noResultsFound": "No results found" + }, + "healthCheckComponent": { + "updated": "Endpoint is fully operational", + "outdated": "Endpoint is functional but lagging behind the latest block", + "error": "An error occurred while accessing the endpoint", + "not working": "Endpoint is currently unresponsive", + "helpText": "Hover over or click the icons to reveal the current health status of each endpoint" + }, + "copyToClipboardComponent": { + "copy": "Click to Copy", + "copyToClipboard": "Copy to Clipboard", + "copied": "Successfully Copied!" + }, + "noFound": { + "subTitle": "Oops! Page Not Found.", + "message": "The page you're searching for has either been moved or doesn't exist.", + "return": "Go Back to Home Page" + }, + "mainMapComponent": { + "numberOfNodes": "Number of Nodes" + }, + "EndpointsStatsRoute": { + "fastest": "Top 5 fastest endpoints by querying from Costa Rica", + "byProducer": "Endpoints stats by producer", + "avgAvailability": "Average Availability", + "avgTime": "Average Response Time", + "charTitle": "Average Response Time from Costa Rica", + "list": "List of endpoints", + "timeInSecs": "Time in seconds" + }, + "evmDashboardRoute": { + "totalWallets": "Total wallets created", + "avgBlockTime": "Average block time", + "gasPrice": "Gas price", + "avgGasUsage": "Average gas usage", + "totalIncoming": "Total {{token}} incoming", + "totalOutgoing": "Total {{token}} outgoing", + "incoming": "Incoming", + "outgoing": "Outgoing", + "ATH": "TPS All Time High", + "lastBlock": "Last block", + "totalTxs": "Total EVM transactions", + "transactions": "EVM transactions", + "gasUsed": "Gas Used", + "tooltip": { + "totalWallets": "EVM active addresses of the account table from {{accountName}} contract", + "gasPrice": "The cost of computational work in EVM, measured in Gas", + "avgGasUsage": "Average Gas Consumed Over the Last 100 Blocks", + "totalIncoming": "Total Transfers Received by {{accountName}}", + "totalOutgoing": "Total Transfers Sent by {{accountName}}", + "ATH": "Peak Transactions Per Second (TPS) Recorded", + "lastBlock": "Latest Confirmed Ethereum Block", + "totalTxs": "Total Transactions Since Genesis Block" + } + }, + "evmEndpointsRoute": { + "title": "List of EVM Endpoints", + "rpcEndpoint": "RPC Endpoint", + "latency": "Network Latency", + "lastBlock": "Last block", + "rerun": "Re-run health checks", + "filterEndpoints": "Filter Active Endpoints" + } +} diff --git a/webapp/src/language/ko/ko.jungle.json b/webapp/src/language/ko/ko.jungle.json new file mode 100644 index 000000000..2e8608422 --- /dev/null +++ b/webapp/src/language/ko/ko.jungle.json @@ -0,0 +1,5 @@ +{ + "routes": { + "/evm>moreDescription": "Monitor EVM statistics, such as transaction amount history, gas price and total wallets created." + } +} diff --git a/webapp/src/language/ko/ko.lacchain.json b/webapp/src/language/ko/ko.lacchain.json new file mode 100644 index 000000000..22c143aa1 --- /dev/null +++ b/webapp/src/language/ko/ko.lacchain.json @@ -0,0 +1,157 @@ +{ + "routes": { + "/entities>sidebar": "Entities", + "/entities>title": "Entities - {{networkName}} + Antelope Network Dashboard", + "/entities>heading": "Entities", + "/entities>moreDescription": "A list of entities that are part the network. They can be partner or non-partner entities.", + "/lacchain/network>sidebar": "Network Topology", + "/lacchain/network>title": "Network Topology - {{networkName}} + Antelope Network Dashboard", + "/lacchain/network>heading": "Network Topology", + "/lacchain/network>moreDescription": "A visual representation of the network’s current nodes.", + "/management>sidebar": "Management", + "/management>title": "Management - {{networkName}} + Antelope Network Dashboard", + "/management>heading": "Management", + "/management>moreDescription": "Log in to manage your LACChain account.", + "/node-config>sidebar": "Node config", + "/node-config>title": "Node config - {{networkName}} + Antelope Network Dashboard", + "/node-config>heading": "Configure a new node", + "/ricardian-contract>sidebar": "Validator Agreement", + "/ricardian-contract>heading": "", + "/cpu-benchmark>title": "CPU Benchmarks - {{networkName}} + Antelope Network Dashboard", + "/block-producers>title": "Block Producers - {{networkName}} + Antelope Network Dashboard", + "/rewards-distribution>title": "Rewards Distribution - {{networkName}} + Antelope Network Dashboard", + "/nodes>title": "{{networkName}} Nodes Status Monitor", + "/nodes-distribution>title": "Geographic Distribution of Nodes - {{networkName}} + Antelope Network Dashboard", + "/accounts>title": "Accounts and Contracts - {{networkName}} + Antelope Network Dashboard", + "/bpjson>title": "BP JSON - {{networkName}} + Antelope Network Dashboard", + "/ricardian-contract>title": "BP Agreement - {{networkName}} + Antelope Network Dashboard", + "/block-distribution>title": "Block Production Distribution - {{networkName}} + Antelope Network Dashboard", + "/missed-blocks>title": "Missed Blocks - {{networkName}} + Antelope Network Dashboard", + "/endpoints>title": "API Endpoints - {{networkName}} + Antelope Network Dashboard", + "/endpoints-stats>title": "API Endpoints Stats- {{networkName}} + Antelope Network Dashboard", + "/about>title": "About - {{networkName}} + Antelope Network Dashboard", + "/help>title": "Help - {{networkName}} + Antelope Network Dashboard" + }, + "common": { + "producerName": "Entity name", + "producers": "Entities", + "producer": "Entity", + "boot": "Boot", + "writer": "Writer", + "observer": "Observer", + "validator": "Validator", + "partner": "Partner", + "nonPartner": "Non-Partner" + }, + "producerCardComponent": { + "entityType": "Entity type", + "entityType1": "Partner", + "entityType2": "Non-Partner", + "viewProfile": "View Entity Profile", + "BPonNetwork": "Entity on {{networkName}}" + }, + "lacchainAddEntityActionEntityTypeFieldComponent": { + "entityType1": "Partner", + "entityType2": "Non-Partner" + }, + "lacchainManagement": { + "loginWarning": "Please log in with your LACChain account to use this feature.", + "noneActionWarning": "There is no actions available for your account.", + "setentinfoTitle": "Set Entity Info", + "setentinfoTooltip": "Set on-chain information for your LACChain entity.", + "setnodeinfoTitle": "Set Node Info", + "setnodeinfoTooltip": "Set onchain information for a node you manage.", + "newaccountTitle": "New Account", + "newaccountTooltip": "Create a new account", + "addentityTitle": "Add Entity", + "addentityTooltip": "Register a new entity on the network.", + "addbootTitle": "Add Boot Node", + "addbootTooltip": "Register a new boot node on the network.", + "addobserverTitle": "Add Observer Node", + "addobserverTooltip": "Register a new observer node on the network.", + "setscheduleTitle": "Set Validator Schedule", + "setscheduleTooltip": "Set the group of blockproducing validator nodes.", + "addvalidatorTitle": "Add Validator Node", + "addvalidatorTooltip": "Register a new validator node on the network.", + "addwriterTitle": "Add Writer Node", + "addwriterTooltip": "Register a new writer node on the network.", + "setalimitsTitle": "Set Account Limits", + "setalimitsTooltip": "Set account CPU and NET resource limits.", + "netrmgroupTitle": "Remove Net Group", + "netrmgroupTooltip": "Remove a Group.", + "netsetgroupTitle": "Set Net Group", + "netsetgroupTooltip": "Set Net Group.", + "netaddgroupTitle": "Add Net Group", + "netaddgroupTooltip": "Add Net Group.", + "setramTitle": "Set RAM", + "setramTooltip": "Set RAM for an account.", + "setentxinfoTitle": "Set extended entity info", + "setentxinfoTooltip": "Set extended entity info.", + "setnodexinfoTitle": "Set extended node info", + "setnodexinfoTooltip": "Set extended node info.", + "rmnodeTitle": "Remove Node", + "rmnodeTooltip": "Allow remove a Validator Node from the network.", + "rmentityTitle": "Remove Entity", + "rmentityTooltip": "Allow remove an entity from the network.", + "entity": "Entity", + "organization_name": "Organization Name", + "organization_id": "Organization ID", + "technical_contact": "Technical Contact", + "business_contact": "Business Contact", + "email": "E-mail", + "website": "Website", + "code_of_conduct": "Code of Conduct", + "ownership_disclosure": "Ownership Disclosure", + "github_user": "GitHub user", + "chain_resources": "Chain Resources", + "other_resources": "Other Resources", + "logo_256": "Logo 256", + "logo_1024": "Logo 1024", + "logo_svg": "Logo SVG", + "location_name": "Location Name", + "country": "Country", + "latitude": "Latitude", + "longitude": "Longitude", + "hive": "Hive", + "twitter": "Twitter", + "youtube": "Youtube", + "facebook": "Facebook", + "github": "Github", + "reddit": "Reddit", + "keybase": "Keybase", + "telegram": "Telegram", + "webchat": "Webchat", + "name": "Name", + "node_name": "Node Name", + "node": "Node", + "peer_keys": "Peer keys", + "location_country": "Location Country", + "location_latitude": "Location Latitude", + "location_longitude": "Location Longitude", + "observer": "Observer", + "owner": "Owner", + "active": "Active", + "public_key": "Public key", + "writer_authority": "Writer Authority", + "validator_authority": "Validator Authority", + "ram_bytes": "RAM bytes", + "account": "Account", + "executeTransaction": "Execute Transaction", + "creator": "Creator", + "comiteeAccount": "Permissioning Comitee Account Management", + "partnerAccount": "Partner Entity Management", + "nonPartnerAccount": "Non-Partner Entity Management" + }, + "blockDistributionRoute": { + "title": "Blocks Generated by Node" + }, + "missedBlocksRoute": { + "title": "Missed Blocks by Node" + }, + "ricardianContractRoute": { + "title": "LACChain Validator Node Agreement" + }, + "producerSearchComponent": { + "title": "Search Entity" + } +} diff --git a/webapp/src/language/ko/ko.libre-testnet.json b/webapp/src/language/ko/ko.libre-testnet.json new file mode 100644 index 000000000..572596da5 --- /dev/null +++ b/webapp/src/language/ko/ko.libre-testnet.json @@ -0,0 +1,5 @@ +{ + "routes": { + "/faucet>moreDescription": "This tool allows you to create an account and get LIBRE testnet tokens." + } +} diff --git a/webapp/src/language/ko/ko.libre.json b/webapp/src/language/ko/ko.libre.json new file mode 100644 index 000000000..db082a9e0 --- /dev/null +++ b/webapp/src/language/ko/ko.libre.json @@ -0,0 +1,3 @@ +{ + "routes": {} +} diff --git a/webapp/src/language/ko/ko.mainnet.json b/webapp/src/language/ko/ko.mainnet.json new file mode 100644 index 000000000..63761a65a --- /dev/null +++ b/webapp/src/language/ko/ko.mainnet.json @@ -0,0 +1,20 @@ +{ + "routes": { + "/>title": "EOS Network Monitor and Infrastructure Dashboard", + "/cpu-benchmark>title": "CPU Benchmarks - EOS Network Monitor", + "/block-producers>title": "Block Producers - EOS Network Monitor", + "/rewards-distribution>title": "Rewards Distribution - EOS Network Monitor", + "/nodes-distribution>title": "Geographic Distribution of Nodes - EOS Network Monitor", + "/accounts>title": "Accounts and Contracts - EOS Network Monitor", + "/bpjson>title": "BP JSON - EOS Network Monitor", + "/ricardian-contract>title": "BP Agreement - EOS Network Monitor", + "/block-distribution>title": "Block Production Distribution - EOS Network Monitor", + "/missed-blocks>title": "Missed Blocks - EOS Network Monitor", + "/endpoints>title": "API Endpoints - EOS Network Monitor", + "/endpoints-stats>title": "API Endpoints Stats- EOS Network Monitor", + "/about>title": "About - EOS Network Monitor", + "/help>title": "Help - EOS Network Monitor", + "/undiscoverable-bps>title": "Undiscoverable Block Producers or Sock Puppet BPs - EOS Network Monitor", + "/evm>moreDescription": "Monitor EVM statistics, such as transaction amount history, gas price and total wallets created." + } +} diff --git a/webapp/src/language/ko/ko.telos-testnet.json b/webapp/src/language/ko/ko.telos-testnet.json new file mode 100644 index 000000000..618f5ec62 --- /dev/null +++ b/webapp/src/language/ko/ko.telos-testnet.json @@ -0,0 +1,6 @@ +{ + "routes": { + "/evm>moreDescription": "Monitor Telos EVM statistics (tEVM), such as transaction amount history, gas price and total wallets created.", + "/evm-rpc-endpoints>moreDescription": "A list of Telos EVM (tEVM) endpoints, with their health status and latency in milliseconds." + } +} diff --git a/webapp/src/language/ko/ko.telos.json b/webapp/src/language/ko/ko.telos.json new file mode 100644 index 000000000..618f5ec62 --- /dev/null +++ b/webapp/src/language/ko/ko.telos.json @@ -0,0 +1,6 @@ +{ + "routes": { + "/evm>moreDescription": "Monitor Telos EVM statistics (tEVM), such as transaction amount history, gas price and total wallets created.", + "/evm-rpc-endpoints>moreDescription": "A list of Telos EVM (tEVM) endpoints, with their health status and latency in milliseconds." + } +} diff --git a/webapp/src/language/ko/ko.ultra-testnet.json b/webapp/src/language/ko/ko.ultra-testnet.json new file mode 100644 index 000000000..565b9cbca --- /dev/null +++ b/webapp/src/language/ko/ko.ultra-testnet.json @@ -0,0 +1,6 @@ +{ + "routes": { + "/faucet>moreDescription": "This tool allows you to create an account and get UOS testnet tokens.", + "/>moreDescription": "Find information on the {{networkName}} Network and its current status." + } +} diff --git a/webapp/src/language/ko/ko.wax-testnet.json b/webapp/src/language/ko/ko.wax-testnet.json new file mode 100644 index 000000000..db082a9e0 --- /dev/null +++ b/webapp/src/language/ko/ko.wax-testnet.json @@ -0,0 +1,3 @@ +{ + "routes": {} +} diff --git a/webapp/src/language/ko/ko.wax.json b/webapp/src/language/ko/ko.wax.json new file mode 100644 index 000000000..db082a9e0 --- /dev/null +++ b/webapp/src/language/ko/ko.wax.json @@ -0,0 +1,3 @@ +{ + "routes": {} +} diff --git a/webapp/src/language/ko/ko.xpr-testnet.json b/webapp/src/language/ko/ko.xpr-testnet.json new file mode 100644 index 000000000..182db6a59 --- /dev/null +++ b/webapp/src/language/ko/ko.xpr-testnet.json @@ -0,0 +1,20 @@ +{ + "routes": { + "/>title": "{{networkName}} Monitor and Infrastructure Dashboard", + "/cpu-benchmark>title": "CPU Benchmarks - {{networkName}} Dashboard", + "/block-producers>title": "Block Producers - {{networkName}} Dashboard", + "/rewards-distribution>title": "Rewards Distribution - {{networkName}} Dashboard", + "/undiscoverable-bps>title": "Paid undiscoverable Block Producers - {{networkName}} Dashboard", + "/nodes>title": "{{networkName}} Nodes Status Monitor", + "/nodes-distribution>title": "Geographic Distribution of Nodes - {{networkName}} Dashboard", + "/accounts>title": "Accounts and Contracts - {{networkName}} Dashboard", + "/bpjson>title": "BP JSON - {{networkName}} Dashboard", + "/ricardian-contract>title": "BP Agreement - {{networkName}} Dashboard", + "/block-distribution>title": "Block Production Distribution - {{networkName}} Dashboard", + "/missed-blocks>title": "Missed Blocks - {{networkName}} Dashboard", + "/endpoints>title": "API Endpoints - {{networkName}} Dashboard", + "/endpoints-stats>title": "API Endpoints Stats- {{networkName}} Dashboard", + "/about>title": "About - {{networkName}} Dashboard", + "/help>title": "Help - {{networkName}} Dashboard" + } +} diff --git a/webapp/src/language/ko/ko.xpr.json b/webapp/src/language/ko/ko.xpr.json new file mode 100644 index 000000000..182db6a59 --- /dev/null +++ b/webapp/src/language/ko/ko.xpr.json @@ -0,0 +1,20 @@ +{ + "routes": { + "/>title": "{{networkName}} Monitor and Infrastructure Dashboard", + "/cpu-benchmark>title": "CPU Benchmarks - {{networkName}} Dashboard", + "/block-producers>title": "Block Producers - {{networkName}} Dashboard", + "/rewards-distribution>title": "Rewards Distribution - {{networkName}} Dashboard", + "/undiscoverable-bps>title": "Paid undiscoverable Block Producers - {{networkName}} Dashboard", + "/nodes>title": "{{networkName}} Nodes Status Monitor", + "/nodes-distribution>title": "Geographic Distribution of Nodes - {{networkName}} Dashboard", + "/accounts>title": "Accounts and Contracts - {{networkName}} Dashboard", + "/bpjson>title": "BP JSON - {{networkName}} Dashboard", + "/ricardian-contract>title": "BP Agreement - {{networkName}} Dashboard", + "/block-distribution>title": "Block Production Distribution - {{networkName}} Dashboard", + "/missed-blocks>title": "Missed Blocks - {{networkName}} Dashboard", + "/endpoints>title": "API Endpoints - {{networkName}} Dashboard", + "/endpoints-stats>title": "API Endpoints Stats- {{networkName}} Dashboard", + "/about>title": "About - {{networkName}} Dashboard", + "/help>title": "Help - {{networkName}} Dashboard" + } +} diff --git a/webapp/src/language/zh/index.js b/webapp/src/language/zh/index.js new file mode 100644 index 000000000..997466c38 --- /dev/null +++ b/webapp/src/language/zh/index.js @@ -0,0 +1,30 @@ +import zh from './zh.json' +import zhLacchain from './zh.lacchain.json' +import zhTelosTestnet from './zh.telos-testnet.json' +import zhLibreTestnet from './zh.libre-testnet.json' +import zhLibre from './zh.libre.json' +import zhTelos from './zh.telos.json' +import zhJungle from './zh.jungle.json' +import zhMainnet from './zh.mainnet.json' +import zhXPRTestnet from './zh.xpr-testnet.json' +import zhXPR from './zh.xpr.json' +import zhWaxTestnet from './zh.wax-testnet.json' +import zhWax from './zh.wax.json' +import zhUltraTestnet from './zh.ultra-testnet.json' + +export default { + zh, + 'zh.lacchain': zhLacchain, + 'zh.telos': zhTelos, + 'zh.xpr': zhXPR, + 'zh.wax': zhWax, + 'zh.jungle': zhJungle, + 'zh.mainnet': zhMainnet, + 'zh.telos-testnet': zhTelosTestnet, + 'zh.libre-testnet': zhLibreTestnet, + 'zh.libre': zhLibre, + 'zh.xpr-testnet': zhXPRTestnet, + 'zh.wax-testnet': zhWaxTestnet, + 'zh.ultra-testnet': zhUltraTestnet, +} + diff --git a/webapp/src/language/zh/zh.json b/webapp/src/language/zh/zh.json new file mode 100644 index 000000000..fa99dca2c --- /dev/null +++ b/webapp/src/language/zh/zh.json @@ -0,0 +1,539 @@ +{ + "common": { + "all": "All", + "account": "Account", + "name": "Name", + "rewards": "Rewards", + "votes": "Votes", + "block": "Block", + "blocks": "Blocks", + "transactions": "Transactions", + "producerName": "Producer name", + "nodeName": "Node name", + "nodeType": "Node type", + "description": "Description", + "color": "Color", + "producers": "Producers", + "producer": "Producer", + "connectWallet": "Connect Wallet", + "keys": "Keys", + "download": "Download", + "healthStatus": "Health Status", + "help": "Help", + "node": "Node", + "lastHour": "Last Hour", + "lastDay": "Last Day", + "lastWeek": "Last Week", + "dailyAverage": "Daily Average", + "lastYear": "Last Year", + "itemsPerPage": "Items per page", + "api": "HTTP", + "ssl": "HTTPS", + "p2p": "P2P", + "payer": "Payer", + "nodes": "Nodes", + "total": "Total", + "missedBlocks": "Missed Blocks", + "timeFrame": "Time frame", + "net": "NET", + "cpu": "CPU", + "footer1": "This App is a Community Public Good", + "footer2": "Proudly Engineered by Edenia", + "executeTransaction": "Execute Transaction", + "bugRequest": "Report a bug / Request a feature", + "moreInfo": "More Info", + "openLink": "Visit Site", + "table": "Table", + "noOptions": "No matches", + "updatedAt": "Updated at", + "nextUpdateAt": "Next update at", + "secondsAgo": "Seconds Ago", + "metaTitle": "Antelope Tools network monitors real-time infrastructure data for multiple Antelope and EOSIO chains.", + "metaDescription": "Antelope Tools Dashboard is a network monitor featuring real-time data on block producer nodes and blockchain infrastructure for multiple Antelope and EOSIO chains.", + "goBack": "Go Back" + }, + "routes": { + "/>sidebar": "Dashboard", + "/>title": "{{networkName}} Network Monitor and Infrastructure Dashboard", + "/>heading": "Welcome to {{networkName}}", + "/cpu-benchmark>sidebar": "CPU Benchmarks", + "/cpu-benchmark>title": "CPU Benchmarks - {{networkName}} Network Dashboard", + "/cpu-benchmark>heading": "Block Producer Nodes CPU Benchmarks on {{networkName}}", + "/block-producers>sidebar": "Block Producers", + "/block-producers>title": "Block Producers - {{networkName}} Network Dashboard", + "/block-producers>heading": "Block Producers on {{networkName}}", + "/block-producers/bpName>heading": "Block Producer Profile", + "/entities/bpName>heading": "Entity Profile", + "/undiscoverable-bps>sidebar": "Undiscoverable BPs", + "/undiscoverable-bps>title": "Paid undiscoverable Block Producers - {{networkName}} Network Dashboard", + "/undiscoverable-bps>heading": "Undiscoverable Paid Block Producers on {{networkName}}", + "/rewards-distribution>sidebar": "Rewards Distribution", + "/rewards-distribution>title": "Rewards Distribution - {{networkName}} Network Dashboard", + "/rewards-distribution>heading": "Rewards Distribution of {{networkName}}", + "/nodes>sidebar": "Nodes", + "/nodes>title": "Nodes - {{networkName}} Nodes Status Monitor", + "/nodes>heading": "Nodes on {{networkName}}", + "/nodes-distribution>sidebar": "Geo Distribution", + "/nodes-distribution>title": "Geographic Distribution of Nodes - {{networkName}} Network Dashboard", + "/nodes-distribution>heading": "Geographic Distribution of {{networkName}} Nodes", + "/accounts>sidebar": "Accounts & Contracts", + "/accounts>title": "Accounts and Contracts - {{networkName}} Network Dashboard", + "/accounts>heading": "Accounts and Contracts of {{networkName}}", + "/bpjson>sidebar": "BP.json Generator", + "/bpjson>title": "BP JSON Generator - {{networkName}} Network Dashboard", + "/bpjson>heading": "BP.json Generator", + "/faucet>sidebar": "Create Account & Faucet", + "/faucet>title": "Faucet and Account Creator - {{networkName}} Network Dashboard", + "/faucet>heading": "{{networkName}} Account Creator and Token Faucet", + "/ricardian-contract>sidebar": "BP Agreement", + "/ricardian-contract>title": "BP Agreement - {{networkName}} Network Dashboard", + "/ricardian-contract>heading": "Block Producer Agreement on {{networkName}}", + "/block-distribution>sidebar": "Block Distribution", + "/block-distribution>title": "Block Production Distribution - {{networkName}} Network Dashboard", + "/block-distribution>heading": "Block Production Distribution on {{networkName}}", + "/missed-blocks>sidebar": "Missed Blocks", + "/missed-blocks>title": "Missed Blocks - {{networkName}} Network Dashboard", + "/missed-blocks>heading": "Missed Blocks on {{networkName}}", + "/stress-test>title": "Stress Test Dashboard - {{networkName}} Network Dashboard", + "/stress-test>sidebar": "Stress Test", + "/stress-test>heading": "{{networkName}} Stress Test", + "/evm>title": "EVM Dashboard - {{networkName}} Network Dashboard", + "/evm>sidebar": "EVM Dashboard", + "/evm>heading": "{{networkName}} EVM Dashboard", + "/evm-rpc-endpoints>title": "EVM RPC Endpoints - {{networkName}} Network Dashboard", + "/evm-rpc-endpoints>sidebar": "EVM RPC Endpoints", + "/evm-rpc-endpoints>heading": "{{networkName}} EVM RPC Endpoints", + "/endpoints>sidebar": "API Endpoints", + "/endpoints>title": "API Endpoints - {{networkName}} Network Dashboard", + "/endpoints>heading": "{{networkName}} API Endpoints", + "/endpoints-stats>sidebar": "API Endpoints Stats", + "/endpoints-stats>title": "API Endpoints Stats- {{networkName}} Network Dashboard", + "/endpoints-stats>heading": "{{networkName}} API Endpoints Stats", + "/about>sidebar": "About", + "/about>title": "About - {{networkName}} Network Monitor and Infrastructure Dashboard", + "/about>heading": "About Antelope Tools", + "/about>moreDescription": "Learn more about Edenia and the Antelope Tools project, its importance and how you can get involved", + "/help>sidebar": "Help", + "/help>title": "Help - {{networkName}} Network Dashboard", + "/help>heading": "Welcome to the Antelope Tools Help Center", + "/help>moreDescription": "Check how the bp.json Standard is used, troubleshoot if BP data is missing and contact us if you have suggestions", + "networkInformation": "Network Information", + "tools": "Tools", + "docs": "Docs", + "community": "Community", + "changelog": "Changelog", + "github": "Github Repository", + "telegram": "Telegram Channel", + "readMore": "Read more", + "readLess": "Read less", + "moreDescription": "This is a read more text component for users that either need a bit of help or are new to the system. A clear but not too extensive set of terms and instructions can help users get going without having to over write titles or labels like the one on the search card below. Take a look! A third line is also possible and probably more than enough.", + "/rewards-distribution>moreDescription": "A geographic visualization of daily block producer rewards and a list of undiscoverable paid block producers.", + "/undiscoverable-bps>moreDescription": "A list of the paid block producers on the network which do not provide information in their BP.json files.", + "/bpjson>moreDescription": "A tool for block producers to provide details of their organizations and nodes to comply with the BP information standard.", + "/node-config>moreDescription": "Use this tool to obtain example config files to help configure a new node on the network.", + "/ricardian-contract>moreDescription": "The on-chain ricardian contract that describes the validator node agreement of {{networkName}}.", + "/>moreDescription": "Monitor the infrastructure of blockchain networks using Antelope + EOSIO blockchain technology.", + "/cpu-benchmark>moreDescription": "A visualization of CPU usage in microseconds by block producer nodes accounts, with lowest, highest, and average usage data.", + "/block-producers>moreDescription": "A list of the block producers in the network – blockchain accounts registered to run nodes on the network. It includes information from chain tables and their bp.json files.", + "/block-producers/bpName>moreDescription": "View block producer general information such as rank, rewards and compliance", + "/nodes>moreDescription": "A list of all the nodes run by block producers comprising the network with specific information such as endpoints and location.", + "/endpoints>moreDescription": "An updated list of public API endpoints provided by node operators and their health status.", + "/endpoints-stats>moreDescription": "Response time statistics from Costa Rica and the availability of a producer's endpoints.", + "/nodes-distribution>moreDescription": "A visualization of the geographic distribution of the nodes in this network.", + "/accounts>moreDescription": "This tool helps find information about accounts and interact with contracts on the network. Enter an account name and obtain account information, smart contract actions, and table data.", + "/block-distribution>moreDescription": "A visualization of the distribution of blocks produced by the nodes in the network.", + "/missed-blocks>moreDescription": "A list of scheduled, produced, and missed blocks by each account in the network.", + "/stress-test>moreDescription": "Monitor current and historical data about transactions, such as resource utilization and all-time high TPS." + }, + "homeRoute": { + "currentProducer": "Current Producer", + "headBlock": "Head Block", + "lastBlock": "Last Irreversible Block", + "bpSchedule": "Block Producer Schedule", + "transPerSecond": "Transactions Per Second", + "transPerBlock": "Transactions Per Block", + "transactions": "Transactions", + "transactionsHistory": "Transactions History", + "timeFrame": "Time frame", + "pause": "Pause", + "play": "Play", + "Last Hour": "Last Hour", + "Last Day": "Last Day", + "Last Week": "Last Week", + "Last Year": "Last Year", + "scheduleVersion": "Schedule Version", + "tpsAllTimeHigh": "TPS All Time High", + "cpuUtilizationAllTimeHigh": "CPU Usage in TPS All Time High", + "networkUtilizationAllTimeHigh": "NET Usage in TPS All Time High", + "transactionsPerSecond": "Transactions per Second", + "transactionsPerBlock": "Transactions per Block", + "nodes": "Nodes", + "undefined": "Undefined", + "unknown": "Unknown", + "uniqueLocations": "Unique Locations", + "cpuLimitPerBlock": "CPU Limit Per Block", + "netLimitPerBlock": "Net Limit Per Block", + "chainCpuLimit": "Chain CPU Limit", + "chainNetLimit": "Chain Net Limit", + "timeToFinality": "Time to Finality", + "cpuUsage": "CPU Usage", + "netUsage": "NET Usage", + "average": "Average", + "nodeType": "{{nodeType}} $t(nodes)", + "tooltip": { + "lastBlock": "The most recently verified block in the blockchain", + "bpSchedule": "The current roster of top 21 block producers", + "scheduleVersion": "The active version number for the list of top 21 block producers", + "tpsAllTimeHigh": "Peak Transactions Per Second (TPS) ever recorded", + "cpuUtilizationAllTimeHigh": "CPU utilization at the time of peak TPS", + "networkUtilizationAllTimeHigh": "Network (NET) utilization at the time of peak TPS", + "full": "Node that archives data back to the genesis block", + "seed": "Node offering public P2P connectivity endpoints", + "query": "Node offering public HTTP(S) API access points", + "producer": "Node responsible for generating new blocks", + "nodes": "Total number of nodes among the top 150 block producers", + "uniqueLocations": "Count of distinct countries hosting block producers, derived from bp.json files", + "timeToFinality": "Duration required for a transaction to gain full blockchain confirmation", + "cpuUsage": "Percentage of CPU resources consumed in the most recent second", + "netUsage": "Percentage of Network (NET) resources consumed in the most recent second", + "totalProducers": "Total number of registered Block Producers, as per the eosio smart contract" + } + }, + "rewardsDistributionRoute": { + "dailyRewards": "Total Daily Rewards", + "yearlyRewards": "Total Yearly Rewards", + "topCountryDailyRewards": "Top Country By Daily Rewards", + "notAvailable": "Not available", + "paidProducers": "Paid BPs Not Located", + "lowestRewards": "Lowest Rewards", + "highestRewards": "Highest Rewards", + "exchangeRate": "Exchange Rate", + "country": "Country", + "rewards": "Rewards", + "rewardsPercentage": "Percentage of rewards", + "viewList": "View full list", + "paidProducersText": "Daily Rewards", + "publishBPDetails": "Publish BP Details", + "generateBPjson": "Generate a BP.json", + "tooltip": { + "generateBPjson": "BPs can easily create and update their bp.json for transparency." + } + }, + "accountsRoute": { + "loginBeforeUseAction": "Please connect your wallet in order to execute an action", + "unknownError": "An unexpected error occurred while processing your action.", + "notFound": "not found", + "successMessage": "Transaction completed successfully.", + "placeholder": "Account or Contract Name", + "title": "Explore account details, view contract tables, and execute actions seamlessly.", + "endpointFailure": "Endpoint issue. Please try again later." + }, + "bpJsonRoute": { + "loadText": "Fetching node details...", + "notLogin": "Connect your wallet to access this feature.", + "notRegisterNode": "An active node account is required to utilize this tool.", + "bpjsonInconsistency": "Mismatch detected between on-chain and off-chain bp.json. Please review and update accordingly." + }, + "faucetRoute": { + "createAccount": "Create Your Account", + "newCreatedAccount": "Congratulations! Your new account has been created:", + "transferTokensTransaction": "Tokens have been successfully transferred. View the transaction on the explorer:", + "createButton": "Create Your Account", + "issueTokens": "Distribute Tokens", + "getTokens": "Receive Tokens", + "publicKey": "Enter Public Key (Active/Owner)", + "accountName": "Choose an Account Name", + "invalidAccount": "Enter a valid account name, please.", + "emptyFields": "Complete all fields to proceed with account creation.", + "accountFormat": "Account name should be 12 characters or fewer. Use lowercase letters (a-z) and numbers (1-5) only.", + "keyFormat": "Enter a valid ECC key. You can generate one using cleos or any compatible wallet." + }, + "ricardianContractRoute": { + "title": "Ricardian Contract" + }, + "aboutRoute": { + "body": { + "paragraph1": "Welcome to Antelope Tools, your one-stop solution for real-time visualization and monitoring of Antelope and EOSIO blockchains. Designed to be the ultimate blockchain network monitoring tool, we provide real-time data analytics, Block Producer insights, and much more." + }, + "subtitle1": "About Edenia", + "body1": { + "edenia": "Edenia", + "paragraph1": "is the dedicated team of blockchain experts behind Antelope Tools. With years of experience in blockchain technology and a passion for transparency and reliability, we aim to make the Web3 ecosystem more accessible and user-friendly. Our team is committed to continuous innovation, ensuring that Antelope Tools remains the leading Antelope blockchain network monitoring tool." + }, + "subtitle2": "Why Choose Antelope Tools?", + "body2": { + "paragraph1": "Antelope Tools is a community-centric, open-source platform developed by blockchain enthusiasts committed to transparency and reliability. Our mission is to offer a user-friendly interface to access critical information about Block Producers, thereby fostering network transparency. Experience the difference by trying Antelope Tools today!" + }, + "subtitle3": "The Importance of Network Monitoring", + "body3": { + "paragraph1": "Whether you're on the {{networkName}}, or any other EOSIO-based DPoS network, token holders rely on available data to vote for Block Producers. In permissioned networks like LACChain, node operators must ensure seamless network functionality. Antelope Tools is your reliable source for objective data and node performance metrics." + }, + "subtitle4": "Data Source", + "body4": { + "paragraph1": "We offer rich, graphical insights into entities operating nodes and blockchain infrastructures. Our data is sourced directly from the public table of producers in the system contracts and is updated in real-time to focus only on active entities. We then use the bp.json standard to retrieve additional data from the Block Producers' URLs." + }, + "subtitle5": "Funding and Support", + "body5": { + "paragraph1": "Antelope Tools is generously funded through", + "pomelo": "Pomelo Grants", + "paragraph2": ", a community-driven funding platform. This financial support enables us to maintain, improve, and expand our services. If you find value in what we do, consider supporting us in the next Pomelo Grant round to help us continue making blockchain networks more transparent and efficient." + }, + "subtitle6": "Get Involved", + "body6": { + "paragraph1": "For more insights into Antelope Tools, check out our ", + "github": "GitHub Repository", + "paragraph2": "or join the conversation in our ", + "telegram": "Telegram Channel", + "paragraph3": "Become a part of our community and let's make blockchain networks more transparent and user-friendly together!" + } + }, + "helpRoute": { + "title": "Thank You for Choosing Antelope Tools", + "paragraph": "We're thrilled you've chosen Antelope Tools for your blockchain network monitoring needs.", + "title2": "Configuring bp.json and chains.json Files: A Guide for Node Operators", + "body3": { + "paragraph1Text1": "Antelope Tools offers detailed, real-time visualization and analytics for entities running nodes and blockchain infrastructure. Our data is sourced directly on-chain from the public ", + "eosioAccount": "producers table in the eosio system account.", + "paragraph1Text2": "We then query the URLs of all active Block Producers to retrieve essential information" + }, + "subtitle3": "Leveraging the bp.json Standard for Block Producer and Node Details", + "standard": "using the bp.json standard", + "paragraph2": "If you're a node operator and your data isn't displaying as it should on our dashboard, you'll need to configure your bp.json and chains.json files. Here's a step-by-step guide:", + "bullet1Title": "Setting Up Your bp.json File:", + "bullet1": "Publish a /bp.json file on the website you used when registering via the 'regproducer' action on the eosio system contract. This file should include all pertinent information about your organization and the nodes you operate.", + "bullet2Title": "Managing Multiple Networks:", + "bullet2": "If you're operating nodes on multiple EOSIO-based blockchains, you'll need a chains.json file. This file maps each network's chain ID to the appropriate bp.json file.", + "subBullet2Title": "Example:", + "subBullet2": "If your registered URL is ", + "subBullet2b": ", the system first tries to access ", + "subBullet2c": ". If this file is not available, it defaults to ", + "bullet3Title": "Chain ID Importance:", + "bullet3": "Ensure your chains.json file contains the chain ID for proper network identification. If the chain ID is missing, only your organizational details will be displayed, omitting nodes and endpoints.", + "title3": "Utilize Our BP JSON Generator Tool", + "paragraph3": "We offer a BP JSON generator tool to simplify the creation and updating of your bp.json file. This tool gathers your Block Producer information and generates a bp.json file in the correct format. It also enables on-chain publishing to the `producerjson` smart contract.", + "bpjsonGenerator": "Check out our BP.JSON Generator", + "title4": "Contact Us", + "paragraph4": "Your feedback is crucial as we aim to continually enhance our platform. Feel free to suggest improvements, report issues, or contribute to our codebase.", + "githubEOSCR": "Visit our Edenia GitHub Repo", + "telegramChannel": "Join the Conversation in Our Telegram Channel", + "websiteEOSCR": "Discover Web3 Development Services by Edenia" + }, + "producerCardComponent": { + "bpProfile>title": "{{bpName}} Block Producer - {{networkName}} Dashboard", + "bpProfile>metaTitle": "{{bpName}} Block Producer on {{networkName}}", + "bpProfile>metaDescription": "Data of the Block Producer {{bpName}} on {{networkName}}, such as its rank, nodes and endpoints", + "rank": "Rank", + "account": "Account", + "website": "Website", + "votes": "Votes", + "rewards": "Rewards", + "country": "Country", + "eosRate": "EOS RATE", + "missedBlocks": "Missed Blocks", + "social": "Social", + "ownershipDisclosure": "Ownership Disclosure", + "codeofconduct": "Code of Conduct", + "chainResources": "Chain Resources", + "otherResources": "Other Resources", + "email": "Email", + "features": "Features", + "endpoints": "Endpoints", + "nodeVersion": "Version", + "cpuBenchmark": "CPU Benchmark Average", + "health": "Compliance", + "moreInfo": "More Info", + "version": "Version", + "info": "Info", + "keys": "Keys", + "location": "Location", + "stats": "Stats", + "peer_keys": "Peer Key", + "emptyState": "This block producer does not provide any information.", + "average": "average rating", + "ratings": "ratings", + "lastClaimTime": "Last Claimed Time", + "dailyRewards": "Daily Rewards", + "yearlyRewards": "Yearly Rewards", + "invalidUrl": "Invalid URL", + "viewList": "View undiscoverable BPs list", + "bpJson": "BP.json", + "viewProfile": "View BP Profile", + "BPonNetwork": "{{position}} Block Producer on {{networkName}}", + "generalInformation": "General Information", + "logo_256": "Logo", + "organization_name": "Name", + "viewNodes": "View {{totalNodes}} nodes", + "bpNodes": "{{bpName}} Nodes", + "viewNodesProfile": "See Full Nodes Info" + }, + "nodeCardComponent": { + "features": "Features", + "endpoints": "Endpoints", + "nodeVersion": "Version", + "cpuBenchmark": "CPU Benchmark Average", + "isFull": "Is full", + "supportedApis": "Supported APIs", + "allWorking": "All endpoints are responding", + "noneWorking": "No endpoints are responding", + "endpointPlural": "Endpoints not responding are the", + "endpointSingular": "Endpoint not responding is the" + }, + "producerHealthIndicatorsComponent": { + "hs_organization_name": "Name", + "hs_email": "Email", + "hs_website": "Website", + "hs_logo_256": "Logo (256px)", + "hs_country": "Country", + "hs_peer_keys": "Peer Keys", + "hs_endpoint": "Endpoint", + "missing": "Missing", + "found": "Found", + "hs_bpJson": "BP Json" + }, + "accountInfoComponent": { + "resources": "Resources", + "contractActions": "Contract Actions", + "contractTables": "Contract Tables", + "ricardianContract": "Ricardian Contract" + }, + "contractTablesComponent": { + "table": "Table", + "scope": "Scope", + "lowerBound": "Lower Bound", + "upperBound": "Upper Bound", + "limit": "Limit", + "refreshData": "Refresh Data", + "index": "Index Position", + "keyType": "Index Type", + "loadMore": "Load More", + "emptyTable": "Empty Table" + }, + "contractActionsComponent": { + "action": "Action" + }, + "contractActionFormComponent": { + "executeTransaction": "Execute Transaction", + "owner": "Owner" + }, + "undiscoverableBPsRoute": { + "noResultsFound": "Well Done! All Block Producers are Operating Transparently." + }, + "blockDistributionRoute": { + "title": "Blocks generated by producer", + "blocksProduced": "Blocks Produced", + "percent": "Percent" + }, + "missedBlocksRoute": { + "title": "Missed Blocks by producer", + "producedBlocks": "Produced Blocks", + "scheduledBlocks": "Scheduled Blocks", + "availability": "Availability" + }, + "endpointsListRoute": { + "title": "Endpoints available by", + "endpointsResponding": "Only endpoints responding", + "linkToStats": "Go to stats", + "filterEndpoints": "Filter responding endpoints", + "copyToClipboard": "Click to Copy responding endpoints from the column to the clipboard" + }, + "cpuBenchmarkRoute": { + "title": "CPU Usage in Microseconds", + "lowest": "Lowest", + "highest": "Highest", + "average": "Average", + "hideAll": "Hide All", + "showAll": "Show All", + "selectTo": "Select an account to toggle or", + "zoomTo": "Drag or Pinch to Zoom In/Out on the Chart" + }, + "producerSearchComponent": { + "partner": "Partner", + "nonPartner": "Non-Partner", + "all": "All", + "allBPs": "All Block Producers", + "top21": "Top 21", + "paidStandby": "Paid Standby", + "nonPaidStandby": "Non-Paid Standby", + "title": "Search Producer", + "producer": "Producer", + "placeholder": "Producer Name" + }, + "endpointInfoComponent": { + "status": "Status", + "response": "Response", + "headBlockTime": "Head Block Time", + "updatedAt": "Last check", + "error": "Error", + "noResponse": "No response" + }, + "nodeSearchComponent": { + "title": "Search Node", + "producer": "Producer", + "placeholder": "Node Name" + }, + "noResultsComponent": { + "noResultsFound": "No results found" + }, + "healthCheckComponent": { + "updated": "Endpoint is fully operational", + "outdated": "Endpoint is functional but lagging behind the latest block", + "error": "An error occurred while accessing the endpoint", + "not working": "Endpoint is currently unresponsive", + "helpText": "Hover over or click the icons to reveal the current health status of each endpoint" + }, + "copyToClipboardComponent": { + "copy": "Click to Copy", + "copyToClipboard": "Copy to Clipboard", + "copied": "Successfully Copied!" + }, + "noFound": { + "subTitle": "Oops! Page Not Found.", + "message": "The page you're searching for has either been moved or doesn't exist.", + "return": "Go Back to Home Page" + }, + "mainMapComponent": { + "numberOfNodes": "Number of Nodes" + }, + "EndpointsStatsRoute": { + "fastest": "Top 5 fastest endpoints by querying from Costa Rica", + "byProducer": "Endpoints stats by producer", + "avgAvailability": "Average Availability", + "avgTime": "Average Response Time", + "charTitle": "Average Response Time from Costa Rica", + "list": "List of endpoints", + "timeInSecs": "Time in seconds" + }, + "evmDashboardRoute": { + "totalWallets": "Total wallets created", + "avgBlockTime": "Average block time", + "gasPrice": "Gas price", + "avgGasUsage": "Average gas usage", + "totalIncoming": "Total {{token}} incoming", + "totalOutgoing": "Total {{token}} outgoing", + "incoming": "Incoming", + "outgoing": "Outgoing", + "ATH": "TPS All Time High", + "lastBlock": "Last block", + "totalTxs": "Total EVM transactions", + "transactions": "EVM transactions", + "gasUsed": "Gas Used", + "tooltip": { + "totalWallets": "EVM active addresses of the account table from {{accountName}} contract", + "gasPrice": "The cost of computational work in EVM, measured in Gas", + "avgGasUsage": "Average Gas Consumed Over the Last 100 Blocks", + "totalIncoming": "Total Transfers Received by {{accountName}}", + "totalOutgoing": "Total Transfers Sent by {{accountName}}", + "ATH": "Peak Transactions Per Second (TPS) Recorded", + "lastBlock": "Latest Confirmed Ethereum Block", + "totalTxs": "Total Transactions Since Genesis Block" + } + }, + "evmEndpointsRoute": { + "title": "List of EVM Endpoints", + "rpcEndpoint": "RPC Endpoint", + "latency": "Network Latency", + "lastBlock": "Last block", + "rerun": "Re-run health checks", + "filterEndpoints": "Filter Active Endpoints" + } +} diff --git a/webapp/src/language/zh/zh.jungle.json b/webapp/src/language/zh/zh.jungle.json new file mode 100644 index 000000000..2e8608422 --- /dev/null +++ b/webapp/src/language/zh/zh.jungle.json @@ -0,0 +1,5 @@ +{ + "routes": { + "/evm>moreDescription": "Monitor EVM statistics, such as transaction amount history, gas price and total wallets created." + } +} diff --git a/webapp/src/language/zh/zh.lacchain.json b/webapp/src/language/zh/zh.lacchain.json new file mode 100644 index 000000000..22c143aa1 --- /dev/null +++ b/webapp/src/language/zh/zh.lacchain.json @@ -0,0 +1,157 @@ +{ + "routes": { + "/entities>sidebar": "Entities", + "/entities>title": "Entities - {{networkName}} + Antelope Network Dashboard", + "/entities>heading": "Entities", + "/entities>moreDescription": "A list of entities that are part the network. They can be partner or non-partner entities.", + "/lacchain/network>sidebar": "Network Topology", + "/lacchain/network>title": "Network Topology - {{networkName}} + Antelope Network Dashboard", + "/lacchain/network>heading": "Network Topology", + "/lacchain/network>moreDescription": "A visual representation of the network’s current nodes.", + "/management>sidebar": "Management", + "/management>title": "Management - {{networkName}} + Antelope Network Dashboard", + "/management>heading": "Management", + "/management>moreDescription": "Log in to manage your LACChain account.", + "/node-config>sidebar": "Node config", + "/node-config>title": "Node config - {{networkName}} + Antelope Network Dashboard", + "/node-config>heading": "Configure a new node", + "/ricardian-contract>sidebar": "Validator Agreement", + "/ricardian-contract>heading": "", + "/cpu-benchmark>title": "CPU Benchmarks - {{networkName}} + Antelope Network Dashboard", + "/block-producers>title": "Block Producers - {{networkName}} + Antelope Network Dashboard", + "/rewards-distribution>title": "Rewards Distribution - {{networkName}} + Antelope Network Dashboard", + "/nodes>title": "{{networkName}} Nodes Status Monitor", + "/nodes-distribution>title": "Geographic Distribution of Nodes - {{networkName}} + Antelope Network Dashboard", + "/accounts>title": "Accounts and Contracts - {{networkName}} + Antelope Network Dashboard", + "/bpjson>title": "BP JSON - {{networkName}} + Antelope Network Dashboard", + "/ricardian-contract>title": "BP Agreement - {{networkName}} + Antelope Network Dashboard", + "/block-distribution>title": "Block Production Distribution - {{networkName}} + Antelope Network Dashboard", + "/missed-blocks>title": "Missed Blocks - {{networkName}} + Antelope Network Dashboard", + "/endpoints>title": "API Endpoints - {{networkName}} + Antelope Network Dashboard", + "/endpoints-stats>title": "API Endpoints Stats- {{networkName}} + Antelope Network Dashboard", + "/about>title": "About - {{networkName}} + Antelope Network Dashboard", + "/help>title": "Help - {{networkName}} + Antelope Network Dashboard" + }, + "common": { + "producerName": "Entity name", + "producers": "Entities", + "producer": "Entity", + "boot": "Boot", + "writer": "Writer", + "observer": "Observer", + "validator": "Validator", + "partner": "Partner", + "nonPartner": "Non-Partner" + }, + "producerCardComponent": { + "entityType": "Entity type", + "entityType1": "Partner", + "entityType2": "Non-Partner", + "viewProfile": "View Entity Profile", + "BPonNetwork": "Entity on {{networkName}}" + }, + "lacchainAddEntityActionEntityTypeFieldComponent": { + "entityType1": "Partner", + "entityType2": "Non-Partner" + }, + "lacchainManagement": { + "loginWarning": "Please log in with your LACChain account to use this feature.", + "noneActionWarning": "There is no actions available for your account.", + "setentinfoTitle": "Set Entity Info", + "setentinfoTooltip": "Set on-chain information for your LACChain entity.", + "setnodeinfoTitle": "Set Node Info", + "setnodeinfoTooltip": "Set onchain information for a node you manage.", + "newaccountTitle": "New Account", + "newaccountTooltip": "Create a new account", + "addentityTitle": "Add Entity", + "addentityTooltip": "Register a new entity on the network.", + "addbootTitle": "Add Boot Node", + "addbootTooltip": "Register a new boot node on the network.", + "addobserverTitle": "Add Observer Node", + "addobserverTooltip": "Register a new observer node on the network.", + "setscheduleTitle": "Set Validator Schedule", + "setscheduleTooltip": "Set the group of blockproducing validator nodes.", + "addvalidatorTitle": "Add Validator Node", + "addvalidatorTooltip": "Register a new validator node on the network.", + "addwriterTitle": "Add Writer Node", + "addwriterTooltip": "Register a new writer node on the network.", + "setalimitsTitle": "Set Account Limits", + "setalimitsTooltip": "Set account CPU and NET resource limits.", + "netrmgroupTitle": "Remove Net Group", + "netrmgroupTooltip": "Remove a Group.", + "netsetgroupTitle": "Set Net Group", + "netsetgroupTooltip": "Set Net Group.", + "netaddgroupTitle": "Add Net Group", + "netaddgroupTooltip": "Add Net Group.", + "setramTitle": "Set RAM", + "setramTooltip": "Set RAM for an account.", + "setentxinfoTitle": "Set extended entity info", + "setentxinfoTooltip": "Set extended entity info.", + "setnodexinfoTitle": "Set extended node info", + "setnodexinfoTooltip": "Set extended node info.", + "rmnodeTitle": "Remove Node", + "rmnodeTooltip": "Allow remove a Validator Node from the network.", + "rmentityTitle": "Remove Entity", + "rmentityTooltip": "Allow remove an entity from the network.", + "entity": "Entity", + "organization_name": "Organization Name", + "organization_id": "Organization ID", + "technical_contact": "Technical Contact", + "business_contact": "Business Contact", + "email": "E-mail", + "website": "Website", + "code_of_conduct": "Code of Conduct", + "ownership_disclosure": "Ownership Disclosure", + "github_user": "GitHub user", + "chain_resources": "Chain Resources", + "other_resources": "Other Resources", + "logo_256": "Logo 256", + "logo_1024": "Logo 1024", + "logo_svg": "Logo SVG", + "location_name": "Location Name", + "country": "Country", + "latitude": "Latitude", + "longitude": "Longitude", + "hive": "Hive", + "twitter": "Twitter", + "youtube": "Youtube", + "facebook": "Facebook", + "github": "Github", + "reddit": "Reddit", + "keybase": "Keybase", + "telegram": "Telegram", + "webchat": "Webchat", + "name": "Name", + "node_name": "Node Name", + "node": "Node", + "peer_keys": "Peer keys", + "location_country": "Location Country", + "location_latitude": "Location Latitude", + "location_longitude": "Location Longitude", + "observer": "Observer", + "owner": "Owner", + "active": "Active", + "public_key": "Public key", + "writer_authority": "Writer Authority", + "validator_authority": "Validator Authority", + "ram_bytes": "RAM bytes", + "account": "Account", + "executeTransaction": "Execute Transaction", + "creator": "Creator", + "comiteeAccount": "Permissioning Comitee Account Management", + "partnerAccount": "Partner Entity Management", + "nonPartnerAccount": "Non-Partner Entity Management" + }, + "blockDistributionRoute": { + "title": "Blocks Generated by Node" + }, + "missedBlocksRoute": { + "title": "Missed Blocks by Node" + }, + "ricardianContractRoute": { + "title": "LACChain Validator Node Agreement" + }, + "producerSearchComponent": { + "title": "Search Entity" + } +} diff --git a/webapp/src/language/zh/zh.libre-testnet.json b/webapp/src/language/zh/zh.libre-testnet.json new file mode 100644 index 000000000..572596da5 --- /dev/null +++ b/webapp/src/language/zh/zh.libre-testnet.json @@ -0,0 +1,5 @@ +{ + "routes": { + "/faucet>moreDescription": "This tool allows you to create an account and get LIBRE testnet tokens." + } +} diff --git a/webapp/src/language/zh/zh.libre.json b/webapp/src/language/zh/zh.libre.json new file mode 100644 index 000000000..db082a9e0 --- /dev/null +++ b/webapp/src/language/zh/zh.libre.json @@ -0,0 +1,3 @@ +{ + "routes": {} +} diff --git a/webapp/src/language/zh/zh.mainnet.json b/webapp/src/language/zh/zh.mainnet.json new file mode 100644 index 000000000..63761a65a --- /dev/null +++ b/webapp/src/language/zh/zh.mainnet.json @@ -0,0 +1,20 @@ +{ + "routes": { + "/>title": "EOS Network Monitor and Infrastructure Dashboard", + "/cpu-benchmark>title": "CPU Benchmarks - EOS Network Monitor", + "/block-producers>title": "Block Producers - EOS Network Monitor", + "/rewards-distribution>title": "Rewards Distribution - EOS Network Monitor", + "/nodes-distribution>title": "Geographic Distribution of Nodes - EOS Network Monitor", + "/accounts>title": "Accounts and Contracts - EOS Network Monitor", + "/bpjson>title": "BP JSON - EOS Network Monitor", + "/ricardian-contract>title": "BP Agreement - EOS Network Monitor", + "/block-distribution>title": "Block Production Distribution - EOS Network Monitor", + "/missed-blocks>title": "Missed Blocks - EOS Network Monitor", + "/endpoints>title": "API Endpoints - EOS Network Monitor", + "/endpoints-stats>title": "API Endpoints Stats- EOS Network Monitor", + "/about>title": "About - EOS Network Monitor", + "/help>title": "Help - EOS Network Monitor", + "/undiscoverable-bps>title": "Undiscoverable Block Producers or Sock Puppet BPs - EOS Network Monitor", + "/evm>moreDescription": "Monitor EVM statistics, such as transaction amount history, gas price and total wallets created." + } +} diff --git a/webapp/src/language/zh/zh.telos-testnet.json b/webapp/src/language/zh/zh.telos-testnet.json new file mode 100644 index 000000000..618f5ec62 --- /dev/null +++ b/webapp/src/language/zh/zh.telos-testnet.json @@ -0,0 +1,6 @@ +{ + "routes": { + "/evm>moreDescription": "Monitor Telos EVM statistics (tEVM), such as transaction amount history, gas price and total wallets created.", + "/evm-rpc-endpoints>moreDescription": "A list of Telos EVM (tEVM) endpoints, with their health status and latency in milliseconds." + } +} diff --git a/webapp/src/language/zh/zh.telos.json b/webapp/src/language/zh/zh.telos.json new file mode 100644 index 000000000..618f5ec62 --- /dev/null +++ b/webapp/src/language/zh/zh.telos.json @@ -0,0 +1,6 @@ +{ + "routes": { + "/evm>moreDescription": "Monitor Telos EVM statistics (tEVM), such as transaction amount history, gas price and total wallets created.", + "/evm-rpc-endpoints>moreDescription": "A list of Telos EVM (tEVM) endpoints, with their health status and latency in milliseconds." + } +} diff --git a/webapp/src/language/zh/zh.ultra-testnet.json b/webapp/src/language/zh/zh.ultra-testnet.json new file mode 100644 index 000000000..565b9cbca --- /dev/null +++ b/webapp/src/language/zh/zh.ultra-testnet.json @@ -0,0 +1,6 @@ +{ + "routes": { + "/faucet>moreDescription": "This tool allows you to create an account and get UOS testnet tokens.", + "/>moreDescription": "Find information on the {{networkName}} Network and its current status." + } +} diff --git a/webapp/src/language/zh/zh.wax-testnet.json b/webapp/src/language/zh/zh.wax-testnet.json new file mode 100644 index 000000000..db082a9e0 --- /dev/null +++ b/webapp/src/language/zh/zh.wax-testnet.json @@ -0,0 +1,3 @@ +{ + "routes": {} +} diff --git a/webapp/src/language/zh/zh.wax.json b/webapp/src/language/zh/zh.wax.json new file mode 100644 index 000000000..db082a9e0 --- /dev/null +++ b/webapp/src/language/zh/zh.wax.json @@ -0,0 +1,3 @@ +{ + "routes": {} +} diff --git a/webapp/src/language/zh/zh.xpr-testnet.json b/webapp/src/language/zh/zh.xpr-testnet.json new file mode 100644 index 000000000..182db6a59 --- /dev/null +++ b/webapp/src/language/zh/zh.xpr-testnet.json @@ -0,0 +1,20 @@ +{ + "routes": { + "/>title": "{{networkName}} Monitor and Infrastructure Dashboard", + "/cpu-benchmark>title": "CPU Benchmarks - {{networkName}} Dashboard", + "/block-producers>title": "Block Producers - {{networkName}} Dashboard", + "/rewards-distribution>title": "Rewards Distribution - {{networkName}} Dashboard", + "/undiscoverable-bps>title": "Paid undiscoverable Block Producers - {{networkName}} Dashboard", + "/nodes>title": "{{networkName}} Nodes Status Monitor", + "/nodes-distribution>title": "Geographic Distribution of Nodes - {{networkName}} Dashboard", + "/accounts>title": "Accounts and Contracts - {{networkName}} Dashboard", + "/bpjson>title": "BP JSON - {{networkName}} Dashboard", + "/ricardian-contract>title": "BP Agreement - {{networkName}} Dashboard", + "/block-distribution>title": "Block Production Distribution - {{networkName}} Dashboard", + "/missed-blocks>title": "Missed Blocks - {{networkName}} Dashboard", + "/endpoints>title": "API Endpoints - {{networkName}} Dashboard", + "/endpoints-stats>title": "API Endpoints Stats- {{networkName}} Dashboard", + "/about>title": "About - {{networkName}} Dashboard", + "/help>title": "Help - {{networkName}} Dashboard" + } +} diff --git a/webapp/src/language/zh/zh.xpr.json b/webapp/src/language/zh/zh.xpr.json new file mode 100644 index 000000000..182db6a59 --- /dev/null +++ b/webapp/src/language/zh/zh.xpr.json @@ -0,0 +1,20 @@ +{ + "routes": { + "/>title": "{{networkName}} Monitor and Infrastructure Dashboard", + "/cpu-benchmark>title": "CPU Benchmarks - {{networkName}} Dashboard", + "/block-producers>title": "Block Producers - {{networkName}} Dashboard", + "/rewards-distribution>title": "Rewards Distribution - {{networkName}} Dashboard", + "/undiscoverable-bps>title": "Paid undiscoverable Block Producers - {{networkName}} Dashboard", + "/nodes>title": "{{networkName}} Nodes Status Monitor", + "/nodes-distribution>title": "Geographic Distribution of Nodes - {{networkName}} Dashboard", + "/accounts>title": "Accounts and Contracts - {{networkName}} Dashboard", + "/bpjson>title": "BP JSON - {{networkName}} Dashboard", + "/ricardian-contract>title": "BP Agreement - {{networkName}} Dashboard", + "/block-distribution>title": "Block Production Distribution - {{networkName}} Dashboard", + "/missed-blocks>title": "Missed Blocks - {{networkName}} Dashboard", + "/endpoints>title": "API Endpoints - {{networkName}} Dashboard", + "/endpoints-stats>title": "API Endpoints Stats- {{networkName}} Dashboard", + "/about>title": "About - {{networkName}} Dashboard", + "/help>title": "Help - {{networkName}} Dashboard" + } +} From 50f4c79e4711b901cad1f26e0a85ab5fcac76632 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 21 Nov 2023 15:33:27 -0600 Subject: [PATCH 48/75] chore(webapp): add flag to update lastmod --- scripts/updateSitemaps.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/scripts/updateSitemaps.py b/scripts/updateSitemaps.py index 5f01adcc4..6e9481c57 100644 --- a/scripts/updateSitemaps.py +++ b/scripts/updateSitemaps.py @@ -1,5 +1,6 @@ import os import argparse +from datetime import datetime NETWORKS = [ 'telos', @@ -19,11 +20,13 @@ LANGUAGES = ['en', 'es', 'ko', 'zh'] parser = argparse.ArgumentParser(prog='Simple Sitemap Updater',description='Update the sitemaps alternate links and generate language versions using the sitemap-en.xml as source.') -parser.add_argument('--path', type=str, default='./', +parser.add_argument('-p', '--path', type=str, default='./', help='path where the sitemaps are searched') parser.add_argument('--networks', nargs="*", type=str,default=[],metavar='Network name', help='the list of networks to update') +parser.add_argument('--update_lastmod', action='store_true', + help='update all lastmod with the current time') args = parser.parse_args() @@ -120,7 +123,10 @@ def get_success_message(file, existed): if '/>' in item: include = True continue - if '' in item: + if args.update_lastmod and '' in item: + lastmod = datetime.utcnow().strftime('%Y-%m-%d') + new_file += ' '+lastmod+'\n' + elif '' in item: url = remove_tags(item) new_file += ' ' + \ add_language(url, language)+'\n' From 964e15c5bcff1a36a652641443f23fb87dcf2ca4 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 21 Nov 2023 15:37:37 -0600 Subject: [PATCH 49/75] feat(webapp): add a sitemap per language --- webapp/public/eos/sitemap-en.xml | 312 ++++++++++ webapp/public/eos/sitemap-es.xml | 630 +++++++++++++++++++++ webapp/public/eos/sitemap-ko.xml | 630 +++++++++++++++++++++ webapp/public/eos/sitemap-zh.xml | 630 +++++++++++++++++++++ webapp/public/jungle/sitemap-en.xml | 304 ++++++++++ webapp/public/jungle/sitemap-es.xml | 614 ++++++++++++++++++++ webapp/public/jungle/sitemap-ko.xml | 614 ++++++++++++++++++++ webapp/public/jungle/sitemap-zh.xml | 614 ++++++++++++++++++++ webapp/public/lacchain/sitemap-en.xml | 136 +++++ webapp/public/lacchain/sitemap-es.xml | 278 +++++++++ webapp/public/lacchain/sitemap-ko.xml | 278 +++++++++ webapp/public/lacchain/sitemap-zh.xml | 278 +++++++++ webapp/public/libre-testnet/sitemap-en.xml | 312 ++++++++++ webapp/public/libre-testnet/sitemap-es.xml | 630 +++++++++++++++++++++ webapp/public/libre-testnet/sitemap-ko.xml | 630 +++++++++++++++++++++ webapp/public/libre-testnet/sitemap-zh.xml | 630 +++++++++++++++++++++ webapp/public/libre/sitemap-en.xml | 296 ++++++++++ webapp/public/libre/sitemap-es.xml | 598 +++++++++++++++++++ webapp/public/libre/sitemap-ko.xml | 598 +++++++++++++++++++ webapp/public/libre/sitemap-zh.xml | 598 +++++++++++++++++++ webapp/public/telos-testnet/sitemap-en.xml | 304 ++++++++++ webapp/public/telos-testnet/sitemap-es.xml | 614 ++++++++++++++++++++ webapp/public/telos-testnet/sitemap-ko.xml | 614 ++++++++++++++++++++ webapp/public/telos-testnet/sitemap-zh.xml | 614 ++++++++++++++++++++ webapp/public/telos/sitemap-en.xml | 304 ++++++++++ webapp/public/telos/sitemap-es.xml | 614 ++++++++++++++++++++ webapp/public/telos/sitemap-ko.xml | 614 ++++++++++++++++++++ webapp/public/telos/sitemap-zh.xml | 614 ++++++++++++++++++++ webapp/public/ultra-testnet/sitemap-en.xml | 40 ++ webapp/public/ultra-testnet/sitemap-es.xml | 86 +++ webapp/public/ultra-testnet/sitemap-ko.xml | 86 +++ webapp/public/ultra-testnet/sitemap-zh.xml | 86 +++ webapp/public/wax-testnet/sitemap-en.xml | 288 ++++++++++ webapp/public/wax-testnet/sitemap-es.xml | 582 +++++++++++++++++++ webapp/public/wax-testnet/sitemap-ko.xml | 582 +++++++++++++++++++ webapp/public/wax-testnet/sitemap-zh.xml | 582 +++++++++++++++++++ webapp/public/wax/sitemap-en.xml | 288 ++++++++++ webapp/public/wax/sitemap-es.xml | 582 +++++++++++++++++++ webapp/public/wax/sitemap-ko.xml | 582 +++++++++++++++++++ webapp/public/wax/sitemap-zh.xml | 582 +++++++++++++++++++ webapp/public/xpr-testnet/sitemap-en.xml | 280 +++++++++ webapp/public/xpr-testnet/sitemap-es.xml | 566 ++++++++++++++++++ webapp/public/xpr-testnet/sitemap-ko.xml | 566 ++++++++++++++++++ webapp/public/xpr-testnet/sitemap-zh.xml | 566 ++++++++++++++++++ webapp/public/xpr/sitemap-en.xml | 288 ++++++++++ webapp/public/xpr/sitemap-es.xml | 582 +++++++++++++++++++ webapp/public/xpr/sitemap-ko.xml | 582 +++++++++++++++++++ webapp/public/xpr/sitemap-zh.xml | 582 +++++++++++++++++++ 48 files changed, 22280 insertions(+) create mode 100644 webapp/public/eos/sitemap-es.xml create mode 100644 webapp/public/eos/sitemap-ko.xml create mode 100644 webapp/public/eos/sitemap-zh.xml create mode 100644 webapp/public/jungle/sitemap-es.xml create mode 100644 webapp/public/jungle/sitemap-ko.xml create mode 100644 webapp/public/jungle/sitemap-zh.xml create mode 100644 webapp/public/lacchain/sitemap-es.xml create mode 100644 webapp/public/lacchain/sitemap-ko.xml create mode 100644 webapp/public/lacchain/sitemap-zh.xml create mode 100644 webapp/public/libre-testnet/sitemap-es.xml create mode 100644 webapp/public/libre-testnet/sitemap-ko.xml create mode 100644 webapp/public/libre-testnet/sitemap-zh.xml create mode 100644 webapp/public/libre/sitemap-es.xml create mode 100644 webapp/public/libre/sitemap-ko.xml create mode 100644 webapp/public/libre/sitemap-zh.xml create mode 100644 webapp/public/telos-testnet/sitemap-es.xml create mode 100644 webapp/public/telos-testnet/sitemap-ko.xml create mode 100644 webapp/public/telos-testnet/sitemap-zh.xml create mode 100644 webapp/public/telos/sitemap-es.xml create mode 100644 webapp/public/telos/sitemap-ko.xml create mode 100644 webapp/public/telos/sitemap-zh.xml create mode 100644 webapp/public/ultra-testnet/sitemap-es.xml create mode 100644 webapp/public/ultra-testnet/sitemap-ko.xml create mode 100644 webapp/public/ultra-testnet/sitemap-zh.xml create mode 100644 webapp/public/wax-testnet/sitemap-es.xml create mode 100644 webapp/public/wax-testnet/sitemap-ko.xml create mode 100644 webapp/public/wax-testnet/sitemap-zh.xml create mode 100644 webapp/public/wax/sitemap-es.xml create mode 100644 webapp/public/wax/sitemap-ko.xml create mode 100644 webapp/public/wax/sitemap-zh.xml create mode 100644 webapp/public/xpr-testnet/sitemap-es.xml create mode 100644 webapp/public/xpr-testnet/sitemap-ko.xml create mode 100644 webapp/public/xpr-testnet/sitemap-zh.xml create mode 100644 webapp/public/xpr/sitemap-es.xml create mode 100644 webapp/public/xpr/sitemap-ko.xml create mode 100644 webapp/public/xpr/sitemap-zh.xml diff --git a/webapp/public/eos/sitemap-en.xml b/webapp/public/eos/sitemap-en.xml index 8fee8d295..9eb8486f4 100644 --- a/webapp/public/eos/sitemap-en.xml +++ b/webapp/public/eos/sitemap-en.xml @@ -8,6 +8,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es"/> + + 1.0 2023-09-30 @@ -17,6 +25,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers"/> + + 2023-10-17 @@ -25,6 +41,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/nodes"/> + + 2023-10-17 @@ -33,6 +57,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/endpoints"/> + + 2023-10-17 @@ -41,6 +73,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/nodes-distribution"/> + + 2023-10-17 @@ -49,6 +89,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/endpoints-stats"/> + + 2023-09-30 @@ -57,6 +105,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/rewards-distribution"/> + + 2023-09-30 @@ -65,6 +121,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/undiscoverable-bps"/> + + 2023-11-02 @@ -73,6 +137,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/ricardian-contract"/> + + 2023-09-30 @@ -81,6 +153,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/evm"/> + + 2023-11-06 @@ -89,6 +169,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/evm-rpc-endpoints"/> + + 2023-11-06 @@ -97,6 +185,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/accounts"/> + + 2023-09-30 @@ -105,6 +201,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/bpjson"/> + + 2023-09-30 @@ -113,6 +217,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/about"/> + + 2023-11-02 @@ -121,6 +233,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/help"/> + + 2023-11-02 @@ -129,6 +249,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers/aus1genereos"/> + + 2023-10-17 @@ -137,6 +265,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers/newdex.bp"/> + + 2023-10-17 @@ -145,6 +281,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers/big.one"/> + + 2023-10-17 @@ -153,6 +297,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers/eoseouldotio"/> + + 2023-10-17 @@ -161,6 +313,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers/binancestake"/> + + 2023-10-17 @@ -169,6 +329,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers/atticlabeosb"/> + + 2023-10-17 @@ -177,6 +345,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers/ivote4eosusa"/> + + 2023-10-17 @@ -185,6 +361,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers/starteosiobp"/> + + 2023-10-17 @@ -193,6 +377,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers/eosnationftw"/> + + 2023-10-17 @@ -201,6 +393,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers/eosflytomars"/> + + 2023-10-17 @@ -209,6 +409,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers/eosiosg11111"/> + + 2023-10-17 @@ -217,6 +425,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers/blockpooleos"/> + + 2023-10-17 @@ -225,6 +441,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers/eosphereiobp"/> + + 2023-10-17 @@ -233,6 +457,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers/bp.defi"/> + + 2023-10-17 @@ -241,6 +473,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers/eoslaomaocom"/> + + 2023-10-17 @@ -249,6 +489,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers/hashfineosio"/> + + 2023-10-17 @@ -257,6 +505,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers/eosasia11111"/> + + 2023-10-17 @@ -265,6 +521,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers/eoscannonchn"/> + + 2023-10-17 @@ -273,6 +537,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers/eosinfstones"/> + + 2023-10-17 @@ -281,6 +553,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers/whaleex.com"/> + + 2023-10-17 @@ -289,6 +569,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers/bitfinexeos1"/> + + 2023-10-17 @@ -297,6 +585,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers/costaricaeos"/> + + 2023-10-17 @@ -305,6 +601,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers?page=2"/> + + 2023-10-17 @@ -313,6 +617,14 @@ rel="alternate" hreflang="es" href="https://eos.antelope.tools/es/block-producers?page=3"/> + + 2023-10-17 \ No newline at end of file diff --git a/webapp/public/eos/sitemap-es.xml b/webapp/public/eos/sitemap-es.xml new file mode 100644 index 000000000..25b3be2c4 --- /dev/null +++ b/webapp/public/eos/sitemap-es.xml @@ -0,0 +1,630 @@ + + + https://eos.antelope.tools/es + + + + 1.0 + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers + + + + 2023-11-21 + + + https://eos.antelope.tools/es/nodes + + + + 2023-11-21 + + + https://eos.antelope.tools/es/endpoints + + + + 2023-11-21 + + + https://eos.antelope.tools/es/nodes-distribution + + + + 2023-11-21 + + + https://eos.antelope.tools/es/endpoints-stats + + + + 2023-11-21 + + + https://eos.antelope.tools/es/rewards-distribution + + + + 2023-11-21 + + + https://eos.antelope.tools/es/undiscoverable-bps + + + + 2023-11-21 + + + https://eos.antelope.tools/es/ricardian-contract + + + + 2023-11-21 + + + https://eos.antelope.tools/es/evm + + + + 2023-11-21 + + + https://eos.antelope.tools/es/evm-rpc-endpoints + + + + 2023-11-21 + + + https://eos.antelope.tools/es/accounts + + + + 2023-11-21 + + + https://eos.antelope.tools/es/bpjson + + + + 2023-11-21 + + + https://eos.antelope.tools/es/about + + + + 2023-11-21 + + + https://eos.antelope.tools/es/help + + + + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers/aus1genereos + + + + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers/newdex.bp + + + + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers/big.one + + + + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers/eoseouldotio + + + + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers/binancestake + + + + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers/atticlabeosb + + + + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers/ivote4eosusa + + + + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers/starteosiobp + + + + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers/eosnationftw + + + + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers/eosflytomars + + + + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers/eosiosg11111 + + + + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers/blockpooleos + + + + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers/eosphereiobp + + + + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers/bp.defi + + + + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers/eoslaomaocom + + + + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers/hashfineosio + + + + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers/eosasia11111 + + + + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers/eoscannonchn + + + + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers/eosinfstones + + + + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers/whaleex.com + + + + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers/bitfinexeos1 + + + + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers/costaricaeos + + + + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers?page=2 + + + + 2023-11-21 + + + https://eos.antelope.tools/es/block-producers?page=3 + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/eos/sitemap-ko.xml b/webapp/public/eos/sitemap-ko.xml new file mode 100644 index 000000000..90a70f74e --- /dev/null +++ b/webapp/public/eos/sitemap-ko.xml @@ -0,0 +1,630 @@ + + + https://eos.antelope.tools/ko + + + + 1.0 + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/nodes + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/endpoints + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/nodes-distribution + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/endpoints-stats + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/rewards-distribution + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/undiscoverable-bps + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/ricardian-contract + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/evm + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/evm-rpc-endpoints + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/accounts + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/bpjson + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/about + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/help + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers/aus1genereos + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers/newdex.bp + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers/big.one + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers/eoseouldotio + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers/binancestake + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers/atticlabeosb + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers/ivote4eosusa + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers/starteosiobp + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers/eosnationftw + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers/eosflytomars + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers/eosiosg11111 + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers/blockpooleos + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers/eosphereiobp + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers/bp.defi + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers/eoslaomaocom + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers/hashfineosio + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers/eosasia11111 + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers/eoscannonchn + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers/eosinfstones + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers/whaleex.com + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers/bitfinexeos1 + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers/costaricaeos + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers?page=2 + + + + 2023-11-21 + + + https://eos.antelope.tools/ko/block-producers?page=3 + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/eos/sitemap-zh.xml b/webapp/public/eos/sitemap-zh.xml new file mode 100644 index 000000000..bcf2eaa9d --- /dev/null +++ b/webapp/public/eos/sitemap-zh.xml @@ -0,0 +1,630 @@ + + + https://eos.antelope.tools/zh + + + + 1.0 + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/nodes + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/endpoints + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/nodes-distribution + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/endpoints-stats + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/rewards-distribution + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/undiscoverable-bps + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/ricardian-contract + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/evm + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/evm-rpc-endpoints + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/accounts + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/bpjson + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/about + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/help + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers/aus1genereos + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers/newdex.bp + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers/big.one + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers/eoseouldotio + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers/binancestake + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers/atticlabeosb + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers/ivote4eosusa + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers/starteosiobp + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers/eosnationftw + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers/eosflytomars + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers/eosiosg11111 + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers/blockpooleos + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers/eosphereiobp + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers/bp.defi + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers/eoslaomaocom + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers/hashfineosio + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers/eosasia11111 + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers/eoscannonchn + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers/eosinfstones + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers/whaleex.com + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers/bitfinexeos1 + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers/costaricaeos + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers?page=2 + + + + 2023-11-21 + + + https://eos.antelope.tools/zh/block-producers?page=3 + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/jungle/sitemap-en.xml b/webapp/public/jungle/sitemap-en.xml index 486ce1e94..5ba70e91a 100644 --- a/webapp/public/jungle/sitemap-en.xml +++ b/webapp/public/jungle/sitemap-en.xml @@ -8,6 +8,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es"/> + + 1.0 2023-09-30 @@ -17,6 +25,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/block-producers"/> + + 2023-10-17 @@ -25,6 +41,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/nodes"/> + + 2023-10-17 @@ -33,6 +57,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/endpoints"/> + + 2023-10-17 @@ -41,6 +73,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/nodes-distribution"/> + + 2023-10-17 @@ -49,6 +89,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/rewards-distribution"/> + + 2023-09-30 @@ -57,6 +105,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/endpoints-stats"/> + + 2023-09-30 @@ -65,6 +121,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/undiscoverable-bps"/> + + 2023-11-02 @@ -73,6 +137,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/cpu-benchmark"/> + + 2023-09-10 @@ -81,6 +153,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/ricardian-contract"/> + + 2023-09-30 @@ -89,6 +169,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/evm"/> + + 2023-11-04 @@ -97,6 +185,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/evm-rpc-endpoints"/> + + 2023-11-04 @@ -105,6 +201,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/accounts"/> + + 2023-09-30 @@ -113,6 +217,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/bpjson"/> + + 2023-09-30 @@ -121,6 +233,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/about"/> + + 2023-11-02 @@ -129,6 +249,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/help"/> + + 2023-11-02 @@ -137,6 +265,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/block-producers/lioninjungle"/> + + 2023-10-17 @@ -145,6 +281,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/block-producers/ohtigertiger"/> + + 2023-10-17 @@ -153,6 +297,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/block-producers/eosriobrazil"/> + + 2023-10-17 @@ -161,6 +313,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/block-producers/alohaeostest"/> + + 2023-10-17 @@ -169,6 +329,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/block-producers/eosamsterdam"/> + + 2023-10-17 @@ -177,6 +345,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/block-producers/eosphereiobp"/> + + 2023-10-17 @@ -185,6 +361,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/block-producers/junglesweden"/> + + 2023-10-17 @@ -193,6 +377,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/block-producers/atticlabeosb"/> + + 2023-10-17 @@ -201,6 +393,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/block-producers/aus1genereos"/> + + 2023-10-17 @@ -209,6 +409,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/block-producers/eosarabianet"/> + + 2023-10-17 @@ -217,6 +425,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/block-producers/eoscostarica"/> + + 2023-10-17 @@ -225,6 +441,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/block-producers/eosdacserval"/> + + 2023-10-17 @@ -233,6 +457,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/block-producers/eoseouldotio"/> + + 2023-10-17 @@ -241,6 +473,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/block-producers/eosnationftw"/> + + 2023-10-17 @@ -249,6 +489,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/block-producers/ivote4eosusa"/> + + 2023-10-17 @@ -257,6 +505,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/block-producers/gorillapower"/> + + 2023-10-17 @@ -265,6 +521,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/block-producers/thebluewhale"/> + + 2023-10-17 @@ -273,6 +537,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/block-producers/funnyhamster"/> + + 2023-10-17 @@ -281,6 +553,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/block-producers/hippopotamus"/> + + 2023-10-17 @@ -289,6 +569,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/block-producers/jumpingfrogs"/> + + 2023-10-17 @@ -297,6 +585,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/block-producers/batinthedark"/> + + 2023-10-17 @@ -305,6 +601,14 @@ rel="alternate" hreflang="es" href="https://jungle.antelope.tools/es/block-producers/sentnlagents"/> + + 2023-10-17 \ No newline at end of file diff --git a/webapp/public/jungle/sitemap-es.xml b/webapp/public/jungle/sitemap-es.xml new file mode 100644 index 000000000..b984e9060 --- /dev/null +++ b/webapp/public/jungle/sitemap-es.xml @@ -0,0 +1,614 @@ + + + https://jungle.antelope.tools/es + + + + 1.0 + 2023-11-21 + + + https://jungle.antelope.tools/es/block-producers + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/nodes + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/endpoints + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/nodes-distribution + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/rewards-distribution + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/endpoints-stats + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/undiscoverable-bps + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/cpu-benchmark + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/ricardian-contract + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/evm + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/evm-rpc-endpoints + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/accounts + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/bpjson + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/about + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/help + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/block-producers/lioninjungle + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/block-producers/ohtigertiger + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/block-producers/eosriobrazil + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/block-producers/alohaeostest + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/block-producers/eosamsterdam + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/block-producers/eosphereiobp + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/block-producers/junglesweden + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/block-producers/atticlabeosb + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/block-producers/aus1genereos + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/block-producers/eosarabianet + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/block-producers/eoscostarica + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/block-producers/eosdacserval + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/block-producers/eoseouldotio + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/block-producers/eosnationftw + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/block-producers/ivote4eosusa + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/block-producers/gorillapower + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/block-producers/thebluewhale + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/block-producers/funnyhamster + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/block-producers/hippopotamus + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/block-producers/jumpingfrogs + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/block-producers/batinthedark + + + + 2023-11-21 + + + https://jungle.antelope.tools/es/block-producers/sentnlagents + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/jungle/sitemap-ko.xml b/webapp/public/jungle/sitemap-ko.xml new file mode 100644 index 000000000..b0da47138 --- /dev/null +++ b/webapp/public/jungle/sitemap-ko.xml @@ -0,0 +1,614 @@ + + + https://jungle.antelope.tools/ko + + + + 1.0 + 2023-11-21 + + + https://jungle.antelope.tools/ko/block-producers + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/nodes + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/endpoints + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/nodes-distribution + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/rewards-distribution + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/endpoints-stats + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/undiscoverable-bps + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/cpu-benchmark + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/ricardian-contract + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/evm + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/evm-rpc-endpoints + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/accounts + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/bpjson + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/about + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/help + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/block-producers/lioninjungle + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/block-producers/ohtigertiger + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/block-producers/eosriobrazil + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/block-producers/alohaeostest + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/block-producers/eosamsterdam + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/block-producers/eosphereiobp + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/block-producers/junglesweden + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/block-producers/atticlabeosb + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/block-producers/aus1genereos + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/block-producers/eosarabianet + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/block-producers/eoscostarica + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/block-producers/eosdacserval + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/block-producers/eoseouldotio + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/block-producers/eosnationftw + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/block-producers/ivote4eosusa + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/block-producers/gorillapower + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/block-producers/thebluewhale + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/block-producers/funnyhamster + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/block-producers/hippopotamus + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/block-producers/jumpingfrogs + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/block-producers/batinthedark + + + + 2023-11-21 + + + https://jungle.antelope.tools/ko/block-producers/sentnlagents + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/jungle/sitemap-zh.xml b/webapp/public/jungle/sitemap-zh.xml new file mode 100644 index 000000000..bb742bce8 --- /dev/null +++ b/webapp/public/jungle/sitemap-zh.xml @@ -0,0 +1,614 @@ + + + https://jungle.antelope.tools/zh + + + + 1.0 + 2023-11-21 + + + https://jungle.antelope.tools/zh/block-producers + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/nodes + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/endpoints + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/nodes-distribution + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/rewards-distribution + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/endpoints-stats + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/undiscoverable-bps + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/cpu-benchmark + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/ricardian-contract + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/evm + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/evm-rpc-endpoints + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/accounts + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/bpjson + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/about + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/help + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/block-producers/lioninjungle + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/block-producers/ohtigertiger + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/block-producers/eosriobrazil + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/block-producers/alohaeostest + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/block-producers/eosamsterdam + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/block-producers/eosphereiobp + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/block-producers/junglesweden + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/block-producers/atticlabeosb + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/block-producers/aus1genereos + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/block-producers/eosarabianet + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/block-producers/eoscostarica + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/block-producers/eosdacserval + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/block-producers/eoseouldotio + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/block-producers/eosnationftw + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/block-producers/ivote4eosusa + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/block-producers/gorillapower + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/block-producers/thebluewhale + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/block-producers/funnyhamster + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/block-producers/hippopotamus + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/block-producers/jumpingfrogs + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/block-producers/batinthedark + + + + 2023-11-21 + + + https://jungle.antelope.tools/zh/block-producers/sentnlagents + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/lacchain/sitemap-en.xml b/webapp/public/lacchain/sitemap-en.xml index 5542aeb24..770860626 100644 --- a/webapp/public/lacchain/sitemap-en.xml +++ b/webapp/public/lacchain/sitemap-en.xml @@ -8,6 +8,14 @@ rel="alternate" hreflang="es" href="https://lacchain.antelope.tools/es"/> + + 1.0 2023-09-30 @@ -17,6 +25,14 @@ rel="alternate" hreflang="es" href="https://lacchain.antelope.tools/es/entities"/> + + 2023-10-17 @@ -25,6 +41,14 @@ rel="alternate" hreflang="es" href="https://lacchain.antelope.tools/es/nodes"/> + + 2023-10-17 @@ -33,6 +57,14 @@ rel="alternate" hreflang="es" href="https://lacchain.antelope.tools/es/endpoints"/> + + 2023-10-17 @@ -41,6 +73,14 @@ rel="alternate" hreflang="es" href="https://lacchain.antelope.tools/es/endpoints-stats"/> + + 2023-04-25 @@ -49,6 +89,14 @@ rel="alternate" hreflang="es" href="https://lacchain.antelope.tools/es/lacchain/network"/> + + 2023-09-30 @@ -57,6 +105,14 @@ rel="alternate" hreflang="es" href="https://lacchain.antelope.tools/es/nodes-distribution"/> + + 2023-10-17 @@ -65,6 +121,14 @@ rel="alternate" hreflang="es" href="https://lacchain.antelope.tools/es/block-distribution"/> + + 2023-09-30 @@ -73,6 +137,14 @@ rel="alternate" hreflang="es" href="https://lacchain.antelope.tools/es/missed-blocks"/> + + 2023-09-30 @@ -81,6 +153,14 @@ rel="alternate" hreflang="es" href="https://lacchain.antelope.tools/es/cpu-benchmark"/> + + 2023-09-30 @@ -89,6 +169,14 @@ rel="alternate" hreflang="es" href="https://lacchain.antelope.tools/es/ricardian-contract"/> + + 2023-09-30 @@ -97,6 +185,14 @@ rel="alternate" hreflang="es" href="https://lacchain.antelope.tools/es/accounts"/> + + 2023-09-30 @@ -105,6 +201,14 @@ rel="alternate" hreflang="es" href="https://lacchain.antelope.tools/es/management"/> + + 2023-09-30 @@ -113,6 +217,14 @@ rel="alternate" hreflang="es" href="https://lacchain.antelope.tools/es/node-config"/> + + 2023-09-30 @@ -121,6 +233,14 @@ rel="alternate" hreflang="es" href="https://lacchain.antelope.tools/es/about"/> + + 2023-09-30 @@ -129,6 +249,14 @@ rel="alternate" hreflang="es" href="https://lacchain.antelope.tools/es/help"/> + + 2023-09-30 @@ -137,6 +265,14 @@ rel="alternate" hreflang="es" href="https://lacchain.antelope.tools/es/entities/costarica"/> + + 2023-10-17 \ No newline at end of file diff --git a/webapp/public/lacchain/sitemap-es.xml b/webapp/public/lacchain/sitemap-es.xml new file mode 100644 index 000000000..406957689 --- /dev/null +++ b/webapp/public/lacchain/sitemap-es.xml @@ -0,0 +1,278 @@ + + + https://lacchain.antelope.tools/es + + + + 1.0 + 2023-11-21 + + + https://lacchain.antelope.tools/es/entities + + + + 2023-11-21 + + + https://lacchain.antelope.tools/es/nodes + + + + 2023-11-21 + + + https://lacchain.antelope.tools/es/endpoints + + + + 2023-11-21 + + + https://lacchain.antelope.tools/es/endpoints-stats + + + + 2023-11-21 + + + https://lacchain.antelope.tools/es/lacchain/network + + + + 2023-11-21 + + + https://lacchain.antelope.tools/es/nodes-distribution + + + + 2023-11-21 + + + https://lacchain.antelope.tools/es/block-distribution + + + + 2023-11-21 + + + https://lacchain.antelope.tools/es/missed-blocks + + + + 2023-11-21 + + + https://lacchain.antelope.tools/es/cpu-benchmark + + + + 2023-11-21 + + + https://lacchain.antelope.tools/es/ricardian-contract + + + + 2023-11-21 + + + https://lacchain.antelope.tools/es/accounts + + + + 2023-11-21 + + + https://lacchain.antelope.tools/es/management + + + + 2023-11-21 + + + https://lacchain.antelope.tools/es/node-config + + + + 2023-11-21 + + + https://lacchain.antelope.tools/es/about + + + + 2023-11-21 + + + https://lacchain.antelope.tools/es/help + + + + 2023-11-21 + + + https://lacchain.antelope.tools/es/entities/costarica + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/lacchain/sitemap-ko.xml b/webapp/public/lacchain/sitemap-ko.xml new file mode 100644 index 000000000..7369c81ff --- /dev/null +++ b/webapp/public/lacchain/sitemap-ko.xml @@ -0,0 +1,278 @@ + + + https://lacchain.antelope.tools/ko + + + + 1.0 + 2023-11-21 + + + https://lacchain.antelope.tools/ko/entities + + + + 2023-11-21 + + + https://lacchain.antelope.tools/ko/nodes + + + + 2023-11-21 + + + https://lacchain.antelope.tools/ko/endpoints + + + + 2023-11-21 + + + https://lacchain.antelope.tools/ko/endpoints-stats + + + + 2023-11-21 + + + https://lacchain.antelope.tools/ko/lacchain/network + + + + 2023-11-21 + + + https://lacchain.antelope.tools/ko/nodes-distribution + + + + 2023-11-21 + + + https://lacchain.antelope.tools/ko/block-distribution + + + + 2023-11-21 + + + https://lacchain.antelope.tools/ko/missed-blocks + + + + 2023-11-21 + + + https://lacchain.antelope.tools/ko/cpu-benchmark + + + + 2023-11-21 + + + https://lacchain.antelope.tools/ko/ricardian-contract + + + + 2023-11-21 + + + https://lacchain.antelope.tools/ko/accounts + + + + 2023-11-21 + + + https://lacchain.antelope.tools/ko/management + + + + 2023-11-21 + + + https://lacchain.antelope.tools/ko/node-config + + + + 2023-11-21 + + + https://lacchain.antelope.tools/ko/about + + + + 2023-11-21 + + + https://lacchain.antelope.tools/ko/help + + + + 2023-11-21 + + + https://lacchain.antelope.tools/ko/entities/costarica + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/lacchain/sitemap-zh.xml b/webapp/public/lacchain/sitemap-zh.xml new file mode 100644 index 000000000..e5bb8eeea --- /dev/null +++ b/webapp/public/lacchain/sitemap-zh.xml @@ -0,0 +1,278 @@ + + + https://lacchain.antelope.tools/zh + + + + 1.0 + 2023-11-21 + + + https://lacchain.antelope.tools/zh/entities + + + + 2023-11-21 + + + https://lacchain.antelope.tools/zh/nodes + + + + 2023-11-21 + + + https://lacchain.antelope.tools/zh/endpoints + + + + 2023-11-21 + + + https://lacchain.antelope.tools/zh/endpoints-stats + + + + 2023-11-21 + + + https://lacchain.antelope.tools/zh/lacchain/network + + + + 2023-11-21 + + + https://lacchain.antelope.tools/zh/nodes-distribution + + + + 2023-11-21 + + + https://lacchain.antelope.tools/zh/block-distribution + + + + 2023-11-21 + + + https://lacchain.antelope.tools/zh/missed-blocks + + + + 2023-11-21 + + + https://lacchain.antelope.tools/zh/cpu-benchmark + + + + 2023-11-21 + + + https://lacchain.antelope.tools/zh/ricardian-contract + + + + 2023-11-21 + + + https://lacchain.antelope.tools/zh/accounts + + + + 2023-11-21 + + + https://lacchain.antelope.tools/zh/management + + + + 2023-11-21 + + + https://lacchain.antelope.tools/zh/node-config + + + + 2023-11-21 + + + https://lacchain.antelope.tools/zh/about + + + + 2023-11-21 + + + https://lacchain.antelope.tools/zh/help + + + + 2023-11-21 + + + https://lacchain.antelope.tools/zh/entities/costarica + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/libre-testnet/sitemap-en.xml b/webapp/public/libre-testnet/sitemap-en.xml index e5ee64b2d..8bce0ecea 100644 --- a/webapp/public/libre-testnet/sitemap-en.xml +++ b/webapp/public/libre-testnet/sitemap-en.xml @@ -8,6 +8,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es"/> + + 1.0 2023-09-30 @@ -17,6 +25,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/block-producers"/> + + 2023-10-17 @@ -25,6 +41,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/nodes"/> + + 2023-10-17 @@ -33,6 +57,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/endpoints"/> + + 2023-10-17 @@ -41,6 +73,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/nodes-distribution"/> + + 2023-10-17 @@ -49,6 +89,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/rewards-distribution"/> + + 2023-09-30 @@ -57,6 +105,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/endpoints-stats"/> + + 2023-09-30 @@ -65,6 +121,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/undiscoverable-bps"/> + + 2023-11-02 @@ -73,6 +137,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/block-distribution"/> + + 2023-09-30 @@ -81,6 +153,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/missed-blocks"/> + + 2023-09-30 @@ -89,6 +169,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/stress-test"/> + + 2023-09-30 @@ -97,6 +185,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/cpu-benchmark"/> + + 2023-09-30 @@ -105,6 +201,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/ricardian-contract"/> + + 2023-09-30 @@ -113,6 +217,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/accounts"/> + + 2023-09-30 @@ -121,6 +233,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/bpjson"/> + + 2023-09-30 @@ -129,6 +249,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/faucet"/> + + 2023-09-30 @@ -137,6 +265,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/about"/> + + 2023-11-02 @@ -145,6 +281,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/help"/> + + 2023-11-02 @@ -153,6 +297,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/block-producers/rioblocks"/> + + 2023-10-17 @@ -161,6 +313,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/block-producers/goodblock"/> + + 2023-10-17 @@ -169,6 +329,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/block-producers/sweden"/> + + 2023-10-17 @@ -177,6 +345,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/block-producers/interchainbp"/> + + 2023-10-17 @@ -185,6 +361,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/block-producers/uberleapnode"/> + + 2023-10-17 @@ -193,6 +377,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/block-producers/eosarabianet"/> + + 2023-10-17 @@ -201,6 +393,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/block-producers/cryptobloks"/> + + 2023-10-17 @@ -209,6 +409,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/block-producers/blocktime"/> + + 2023-10-17 @@ -217,6 +425,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/block-producers/draperx"/> + + 2023-10-17 @@ -225,6 +441,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/block-producers/libremt"/> + + 2023-10-17 @@ -233,6 +457,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/block-producers/blokcrafters"/> + + 2023-10-17 @@ -241,6 +473,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/block-producers/heliosblocks"/> + + 2023-10-17 @@ -249,6 +489,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/block-producers/amsterdam"/> + + 2023-10-17 @@ -257,6 +505,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/block-producers/cultureblock"/> + + 2023-10-17 @@ -265,6 +521,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/block-producers/teamgreymass"/> + + 2023-10-17 @@ -273,6 +537,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/block-producers/libreindiabp"/> + + 2023-10-17 @@ -281,6 +553,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/block-producers/eosphere"/> + + 2023-10-17 @@ -289,6 +569,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/block-producers/detroit"/> + + 2023-10-17 @@ -297,6 +585,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/block-producers/librenodeone"/> + + 2023-10-17 @@ -305,6 +601,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/block-producers/edeniaedenia"/> + + 2023-10-17 @@ -313,6 +617,14 @@ rel="alternate" hreflang="es" href="https://libre-testnet.antelope.tools/es/block-producers/echobasefour"/> + + 2023-10-17 \ No newline at end of file diff --git a/webapp/public/libre-testnet/sitemap-es.xml b/webapp/public/libre-testnet/sitemap-es.xml new file mode 100644 index 000000000..eb206d2cc --- /dev/null +++ b/webapp/public/libre-testnet/sitemap-es.xml @@ -0,0 +1,630 @@ + + + https://libre-testnet.antelope.tools/es + + + + 1.0 + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/block-producers + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/nodes + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/endpoints + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/nodes-distribution + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/rewards-distribution + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/endpoints-stats + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/undiscoverable-bps + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/block-distribution + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/missed-blocks + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/stress-test + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/cpu-benchmark + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/ricardian-contract + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/accounts + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/bpjson + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/faucet + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/about + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/help + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/block-producers/rioblocks + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/block-producers/goodblock + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/block-producers/sweden + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/block-producers/interchainbp + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/block-producers/uberleapnode + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/block-producers/eosarabianet + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/block-producers/cryptobloks + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/block-producers/blocktime + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/block-producers/draperx + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/block-producers/libremt + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/block-producers/blokcrafters + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/block-producers/heliosblocks + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/block-producers/amsterdam + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/block-producers/cultureblock + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/block-producers/teamgreymass + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/block-producers/libreindiabp + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/block-producers/eosphere + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/block-producers/detroit + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/block-producers/librenodeone + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/block-producers/edeniaedenia + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/es/block-producers/echobasefour + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/libre-testnet/sitemap-ko.xml b/webapp/public/libre-testnet/sitemap-ko.xml new file mode 100644 index 000000000..46c65bcc3 --- /dev/null +++ b/webapp/public/libre-testnet/sitemap-ko.xml @@ -0,0 +1,630 @@ + + + https://libre-testnet.antelope.tools/ko + + + + 1.0 + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/block-producers + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/nodes + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/endpoints + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/nodes-distribution + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/rewards-distribution + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/endpoints-stats + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/undiscoverable-bps + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/block-distribution + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/missed-blocks + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/stress-test + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/cpu-benchmark + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/ricardian-contract + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/accounts + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/bpjson + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/faucet + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/about + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/help + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/block-producers/rioblocks + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/block-producers/goodblock + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/block-producers/sweden + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/block-producers/interchainbp + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/block-producers/uberleapnode + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/block-producers/eosarabianet + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/block-producers/cryptobloks + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/block-producers/blocktime + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/block-producers/draperx + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/block-producers/libremt + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/block-producers/blokcrafters + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/block-producers/heliosblocks + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/block-producers/amsterdam + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/block-producers/cultureblock + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/block-producers/teamgreymass + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/block-producers/libreindiabp + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/block-producers/eosphere + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/block-producers/detroit + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/block-producers/librenodeone + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/block-producers/edeniaedenia + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/ko/block-producers/echobasefour + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/libre-testnet/sitemap-zh.xml b/webapp/public/libre-testnet/sitemap-zh.xml new file mode 100644 index 000000000..fa34ebfef --- /dev/null +++ b/webapp/public/libre-testnet/sitemap-zh.xml @@ -0,0 +1,630 @@ + + + https://libre-testnet.antelope.tools/zh + + + + 1.0 + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/block-producers + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/nodes + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/endpoints + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/nodes-distribution + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/rewards-distribution + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/endpoints-stats + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/undiscoverable-bps + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/block-distribution + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/missed-blocks + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/stress-test + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/cpu-benchmark + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/ricardian-contract + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/accounts + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/bpjson + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/faucet + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/about + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/help + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/block-producers/rioblocks + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/block-producers/goodblock + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/block-producers/sweden + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/block-producers/interchainbp + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/block-producers/uberleapnode + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/block-producers/eosarabianet + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/block-producers/cryptobloks + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/block-producers/blocktime + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/block-producers/draperx + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/block-producers/libremt + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/block-producers/blokcrafters + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/block-producers/heliosblocks + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/block-producers/amsterdam + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/block-producers/cultureblock + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/block-producers/teamgreymass + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/block-producers/libreindiabp + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/block-producers/eosphere + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/block-producers/detroit + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/block-producers/librenodeone + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/block-producers/edeniaedenia + + + + 2023-11-21 + + + https://libre-testnet.antelope.tools/zh/block-producers/echobasefour + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/libre/sitemap-en.xml b/webapp/public/libre/sitemap-en.xml index 144789a23..84d0a9fb1 100644 --- a/webapp/public/libre/sitemap-en.xml +++ b/webapp/public/libre/sitemap-en.xml @@ -8,6 +8,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es"/> + + 1.0 2023-09-30 @@ -17,6 +25,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/block-producers"/> + + 2023-10-17 @@ -25,6 +41,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/nodes"/> + + 2023-10-17 @@ -33,6 +57,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/endpoints"/> + + 2023-10-17 @@ -41,6 +73,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/nodes-distribution"/> + + 2023-10-17 @@ -49,6 +89,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/rewards-distribution"/> + + 2023-09-30 @@ -57,6 +105,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/block-distribution"/> + + 2023-09-30 @@ -65,6 +121,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/missed-blocks"/> + + 2023-09-30 @@ -73,6 +137,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/cpu-benchmark"/> + + 2023-09-30 @@ -81,6 +153,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/endpoints-stats"/> + + 2023-09-30 @@ -89,6 +169,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/undiscoverable-bps"/> + + 2023-11-02 @@ -97,6 +185,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/ricardian-contract"/> + + 2023-09-30 @@ -105,6 +201,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/accounts"/> + + 2023-09-30 @@ -113,6 +217,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/bpjson"/> + + 2023-09-30 @@ -121,6 +233,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/about"/> + + 2023-11-02 @@ -129,6 +249,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/help"/> + + 2023-11-02 @@ -137,6 +265,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/block-producers/libretech"/> + + 2023-10-17 @@ -145,6 +281,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/block-producers/xennetwork"/> + + 2023-10-17 @@ -153,6 +297,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/block-producers/sweden"/> + + 2023-10-17 @@ -161,6 +313,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/block-producers/cryptobloks"/> + + 2023-10-17 @@ -169,6 +329,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/block-producers/hotstart"/> + + 2023-10-17 @@ -177,6 +345,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/block-producers/teamgreymass"/> + + 2023-10-17 @@ -185,6 +361,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/block-producers/eosphere"/> + + 2023-10-17 @@ -193,6 +377,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/block-producers/goodblock"/> + + 2023-10-17 @@ -201,6 +393,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/block-producers/quantum"/> + + 2023-10-17 @@ -209,6 +409,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/block-producers/heliosblocks"/> + + 2023-10-17 @@ -217,6 +425,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/block-producers/blocktime"/> + + 2023-10-17 @@ -225,6 +441,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/block-producers/edeniaedenia"/> + + 2023-10-17 @@ -233,6 +457,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/block-producers/draperx"/> + + 2023-10-17 @@ -241,6 +473,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/block-producers/interchainbp"/> + + 2023-10-17 @@ -249,6 +489,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/block-producers/rioblocks"/> + + 2023-10-17 @@ -257,6 +505,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/block-producers/libremt"/> + + 2023-10-17 @@ -265,6 +521,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/block-producers/cryptolions"/> + + 2023-10-17 @@ -273,6 +537,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/block-producers/genereos"/> + + 2023-10-17 @@ -281,6 +553,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/block-producers/eosusa"/> + + 2023-10-17 @@ -289,6 +569,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/block-producers/cultureblock"/> + + 2023-10-17 @@ -297,6 +585,14 @@ rel="alternate" hreflang="es" href="https://libre.antelope.tools/es/block-producers/uberleap"/> + + 2023-10-17 \ No newline at end of file diff --git a/webapp/public/libre/sitemap-es.xml b/webapp/public/libre/sitemap-es.xml new file mode 100644 index 000000000..ae30fa385 --- /dev/null +++ b/webapp/public/libre/sitemap-es.xml @@ -0,0 +1,598 @@ + + + https://libre.antelope.tools/es + + + + 1.0 + 2023-11-21 + + + https://libre.antelope.tools/es/block-producers + + + + 2023-11-21 + + + https://libre.antelope.tools/es/nodes + + + + 2023-11-21 + + + https://libre.antelope.tools/es/endpoints + + + + 2023-11-21 + + + https://libre.antelope.tools/es/nodes-distribution + + + + 2023-11-21 + + + https://libre.antelope.tools/es/rewards-distribution + + + + 2023-11-21 + + + https://libre.antelope.tools/es/block-distribution + + + + 2023-11-21 + + + https://libre.antelope.tools/es/missed-blocks + + + + 2023-11-21 + + + https://libre.antelope.tools/es/cpu-benchmark + + + + 2023-11-21 + + + https://libre.antelope.tools/es/endpoints-stats + + + + 2023-11-21 + + + https://libre.antelope.tools/es/undiscoverable-bps + + + + 2023-11-21 + + + https://libre.antelope.tools/es/ricardian-contract + + + + 2023-11-21 + + + https://libre.antelope.tools/es/accounts + + + + 2023-11-21 + + + https://libre.antelope.tools/es/bpjson + + + + 2023-11-21 + + + https://libre.antelope.tools/es/about + + + + 2023-11-21 + + + https://libre.antelope.tools/es/help + + + + 2023-11-21 + + + https://libre.antelope.tools/es/block-producers/libretech + + + + 2023-11-21 + + + https://libre.antelope.tools/es/block-producers/xennetwork + + + + 2023-11-21 + + + https://libre.antelope.tools/es/block-producers/sweden + + + + 2023-11-21 + + + https://libre.antelope.tools/es/block-producers/cryptobloks + + + + 2023-11-21 + + + https://libre.antelope.tools/es/block-producers/hotstart + + + + 2023-11-21 + + + https://libre.antelope.tools/es/block-producers/teamgreymass + + + + 2023-11-21 + + + https://libre.antelope.tools/es/block-producers/eosphere + + + + 2023-11-21 + + + https://libre.antelope.tools/es/block-producers/goodblock + + + + 2023-11-21 + + + https://libre.antelope.tools/es/block-producers/quantum + + + + 2023-11-21 + + + https://libre.antelope.tools/es/block-producers/heliosblocks + + + + 2023-11-21 + + + https://libre.antelope.tools/es/block-producers/blocktime + + + + 2023-11-21 + + + https://libre.antelope.tools/es/block-producers/edeniaedenia + + + + 2023-11-21 + + + https://libre.antelope.tools/es/block-producers/draperx + + + + 2023-11-21 + + + https://libre.antelope.tools/es/block-producers/interchainbp + + + + 2023-11-21 + + + https://libre.antelope.tools/es/block-producers/rioblocks + + + + 2023-11-21 + + + https://libre.antelope.tools/es/block-producers/libremt + + + + 2023-11-21 + + + https://libre.antelope.tools/es/block-producers/cryptolions + + + + 2023-11-21 + + + https://libre.antelope.tools/es/block-producers/genereos + + + + 2023-11-21 + + + https://libre.antelope.tools/es/block-producers/eosusa + + + + 2023-11-21 + + + https://libre.antelope.tools/es/block-producers/cultureblock + + + + 2023-11-21 + + + https://libre.antelope.tools/es/block-producers/uberleap + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/libre/sitemap-ko.xml b/webapp/public/libre/sitemap-ko.xml new file mode 100644 index 000000000..94c01f102 --- /dev/null +++ b/webapp/public/libre/sitemap-ko.xml @@ -0,0 +1,598 @@ + + + https://libre.antelope.tools/ko + + + + 1.0 + 2023-11-21 + + + https://libre.antelope.tools/ko/block-producers + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/nodes + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/endpoints + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/nodes-distribution + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/rewards-distribution + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/block-distribution + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/missed-blocks + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/cpu-benchmark + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/endpoints-stats + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/undiscoverable-bps + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/ricardian-contract + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/accounts + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/bpjson + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/about + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/help + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/block-producers/libretech + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/block-producers/xennetwork + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/block-producers/sweden + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/block-producers/cryptobloks + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/block-producers/hotstart + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/block-producers/teamgreymass + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/block-producers/eosphere + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/block-producers/goodblock + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/block-producers/quantum + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/block-producers/heliosblocks + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/block-producers/blocktime + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/block-producers/edeniaedenia + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/block-producers/draperx + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/block-producers/interchainbp + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/block-producers/rioblocks + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/block-producers/libremt + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/block-producers/cryptolions + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/block-producers/genereos + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/block-producers/eosusa + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/block-producers/cultureblock + + + + 2023-11-21 + + + https://libre.antelope.tools/ko/block-producers/uberleap + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/libre/sitemap-zh.xml b/webapp/public/libre/sitemap-zh.xml new file mode 100644 index 000000000..a7fc20487 --- /dev/null +++ b/webapp/public/libre/sitemap-zh.xml @@ -0,0 +1,598 @@ + + + https://libre.antelope.tools/zh + + + + 1.0 + 2023-11-21 + + + https://libre.antelope.tools/zh/block-producers + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/nodes + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/endpoints + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/nodes-distribution + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/rewards-distribution + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/block-distribution + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/missed-blocks + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/cpu-benchmark + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/endpoints-stats + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/undiscoverable-bps + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/ricardian-contract + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/accounts + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/bpjson + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/about + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/help + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/block-producers/libretech + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/block-producers/xennetwork + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/block-producers/sweden + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/block-producers/cryptobloks + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/block-producers/hotstart + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/block-producers/teamgreymass + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/block-producers/eosphere + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/block-producers/goodblock + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/block-producers/quantum + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/block-producers/heliosblocks + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/block-producers/blocktime + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/block-producers/edeniaedenia + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/block-producers/draperx + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/block-producers/interchainbp + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/block-producers/rioblocks + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/block-producers/libremt + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/block-producers/cryptolions + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/block-producers/genereos + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/block-producers/eosusa + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/block-producers/cultureblock + + + + 2023-11-21 + + + https://libre.antelope.tools/zh/block-producers/uberleap + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/telos-testnet/sitemap-en.xml b/webapp/public/telos-testnet/sitemap-en.xml index eaa3320be..a91b6ce4f 100644 --- a/webapp/public/telos-testnet/sitemap-en.xml +++ b/webapp/public/telos-testnet/sitemap-en.xml @@ -8,6 +8,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es"/> + + 1.0 2023-09-30 @@ -17,6 +25,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/block-producers"/> + + 2023-10-17 @@ -25,6 +41,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/nodes"/> + + 2023-10-17 @@ -33,6 +57,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/endpoints"/> + + 2023-10-17 @@ -41,6 +73,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/nodes-distribution"/> + + 2023-10-17 @@ -49,6 +89,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/rewards-distribution"/> + + 2023-09-30 @@ -57,6 +105,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/endpoints-stats"/> + + 2023-09-30 @@ -65,6 +121,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/undiscoverable-bps"/> + + 2023-11-02 @@ -73,6 +137,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/ricardian-contract"/> + + 2023-09-30 @@ -81,6 +153,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/evm"/> + + 2023-09-30 @@ -89,6 +169,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/evm-rpc-endpoints"/> + + 2023-09-30 @@ -97,6 +185,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/accounts"/> + + 2023-09-30 @@ -105,6 +201,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/bpjson"/> + + 2023-09-30 @@ -113,6 +217,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/about"/> + + 2023-11-02 @@ -121,6 +233,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/help"/> + + 2023-11-02 @@ -129,6 +249,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/block-producers/southafrica1"/> + + 2023-10-17 @@ -137,6 +265,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/block-producers/eosbarcelona"/> + + 2023-10-17 @@ -145,6 +281,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/block-producers/goodblocktls"/> + + 2023-10-17 @@ -153,6 +297,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/block-producers/swedencornet"/> + + 2023-10-17 @@ -161,6 +313,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/block-producers/cryptolions1"/> + + 2023-10-17 @@ -169,6 +329,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/block-producers/telosunlimit"/> + + 2023-10-17 @@ -177,6 +345,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/block-producers/eosriobrazil"/> + + 2023-10-17 @@ -185,6 +361,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/block-producers/telosmadrid1"/> + + 2023-10-17 @@ -193,6 +377,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/block-producers/votedutcheos"/> + + 2023-10-17 @@ -201,6 +393,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/block-producers/eosdublinwow"/> + + 2023-10-17 @@ -209,6 +409,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/block-producers/eosphereiobp"/> + + 2023-10-17 @@ -217,6 +425,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/block-producers/caleosblocks"/> + + 2023-10-17 @@ -225,6 +441,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/block-producers/telosgermany"/> + + 2023-10-17 @@ -233,6 +457,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/block-producers/eosiodetroit"/> + + 2023-10-17 @@ -241,6 +473,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/block-producers/teamgreymass"/> + + 2023-10-17 @@ -249,6 +489,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/block-producers/eostribeprod"/> + + 2023-10-17 @@ -257,6 +505,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/block-producers/infinitybloc"/> + + 2023-10-17 @@ -265,6 +521,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/block-producers/telosarabia1"/> + + 2023-10-17 @@ -273,6 +537,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/block-producers/theteloscope"/> + + 2023-10-17 @@ -281,6 +553,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/block-producers/teloskiwinzz"/> + + 2023-10-17 @@ -289,6 +569,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/block-producers/hyperspacebp"/> + + 2023-10-17 @@ -297,6 +585,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/block-producers/edeniaedenia"/> + + 2023-10-17 @@ -305,6 +601,14 @@ rel="alternate" hreflang="es" href="https://telos-testnet.antelope.tools/es/block-producers?page=2"/> + + 2023-10-17 \ No newline at end of file diff --git a/webapp/public/telos-testnet/sitemap-es.xml b/webapp/public/telos-testnet/sitemap-es.xml new file mode 100644 index 000000000..f9bf9d81f --- /dev/null +++ b/webapp/public/telos-testnet/sitemap-es.xml @@ -0,0 +1,614 @@ + + + https://telos-testnet.antelope.tools/es + + + + 1.0 + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/block-producers + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/nodes + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/endpoints + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/nodes-distribution + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/rewards-distribution + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/endpoints-stats + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/undiscoverable-bps + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/ricardian-contract + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/evm + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/evm-rpc-endpoints + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/accounts + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/bpjson + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/about + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/help + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/block-producers/southafrica1 + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/block-producers/eosbarcelona + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/block-producers/goodblocktls + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/block-producers/swedencornet + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/block-producers/cryptolions1 + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/block-producers/telosunlimit + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/block-producers/eosriobrazil + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/block-producers/telosmadrid1 + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/block-producers/votedutcheos + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/block-producers/eosdublinwow + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/block-producers/eosphereiobp + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/block-producers/caleosblocks + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/block-producers/telosgermany + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/block-producers/eosiodetroit + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/block-producers/teamgreymass + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/block-producers/eostribeprod + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/block-producers/infinitybloc + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/block-producers/telosarabia1 + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/block-producers/theteloscope + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/block-producers/teloskiwinzz + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/block-producers/hyperspacebp + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/block-producers/edeniaedenia + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/es/block-producers?page=2 + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/telos-testnet/sitemap-ko.xml b/webapp/public/telos-testnet/sitemap-ko.xml new file mode 100644 index 000000000..4af0b424e --- /dev/null +++ b/webapp/public/telos-testnet/sitemap-ko.xml @@ -0,0 +1,614 @@ + + + https://telos-testnet.antelope.tools/ko + + + + 1.0 + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/block-producers + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/nodes + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/endpoints + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/nodes-distribution + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/rewards-distribution + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/endpoints-stats + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/undiscoverable-bps + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/ricardian-contract + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/evm + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/evm-rpc-endpoints + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/accounts + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/bpjson + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/about + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/help + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/block-producers/southafrica1 + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/block-producers/eosbarcelona + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/block-producers/goodblocktls + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/block-producers/swedencornet + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/block-producers/cryptolions1 + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/block-producers/telosunlimit + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/block-producers/eosriobrazil + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/block-producers/telosmadrid1 + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/block-producers/votedutcheos + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/block-producers/eosdublinwow + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/block-producers/eosphereiobp + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/block-producers/caleosblocks + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/block-producers/telosgermany + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/block-producers/eosiodetroit + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/block-producers/teamgreymass + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/block-producers/eostribeprod + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/block-producers/infinitybloc + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/block-producers/telosarabia1 + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/block-producers/theteloscope + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/block-producers/teloskiwinzz + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/block-producers/hyperspacebp + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/block-producers/edeniaedenia + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/ko/block-producers?page=2 + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/telos-testnet/sitemap-zh.xml b/webapp/public/telos-testnet/sitemap-zh.xml new file mode 100644 index 000000000..44428d535 --- /dev/null +++ b/webapp/public/telos-testnet/sitemap-zh.xml @@ -0,0 +1,614 @@ + + + https://telos-testnet.antelope.tools/zh + + + + 1.0 + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/block-producers + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/nodes + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/endpoints + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/nodes-distribution + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/rewards-distribution + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/endpoints-stats + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/undiscoverable-bps + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/ricardian-contract + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/evm + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/evm-rpc-endpoints + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/accounts + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/bpjson + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/about + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/help + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/block-producers/southafrica1 + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/block-producers/eosbarcelona + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/block-producers/goodblocktls + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/block-producers/swedencornet + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/block-producers/cryptolions1 + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/block-producers/telosunlimit + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/block-producers/eosriobrazil + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/block-producers/telosmadrid1 + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/block-producers/votedutcheos + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/block-producers/eosdublinwow + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/block-producers/eosphereiobp + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/block-producers/caleosblocks + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/block-producers/telosgermany + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/block-producers/eosiodetroit + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/block-producers/teamgreymass + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/block-producers/eostribeprod + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/block-producers/infinitybloc + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/block-producers/telosarabia1 + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/block-producers/theteloscope + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/block-producers/teloskiwinzz + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/block-producers/hyperspacebp + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/block-producers/edeniaedenia + + + + 2023-11-21 + + + https://telos-testnet.antelope.tools/zh/block-producers?page=2 + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/telos/sitemap-en.xml b/webapp/public/telos/sitemap-en.xml index 65d09e135..8f2ca6a49 100644 --- a/webapp/public/telos/sitemap-en.xml +++ b/webapp/public/telos/sitemap-en.xml @@ -8,6 +8,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es"/> + + 1.0 2023-09-30 @@ -17,6 +25,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/block-producers"/> + + 2023-10-17 @@ -25,6 +41,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/nodes"/> + + 2023-10-17 @@ -33,6 +57,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/endpoints"/> + + 2023-10-17 @@ -41,6 +73,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/nodes-distribution"/> + + 2023-10-17 @@ -49,6 +89,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/rewards-distribution"/> + + 2023-09-30 @@ -57,6 +105,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/endpoints-stats"/> + + 2023-09-30 @@ -65,6 +121,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/undiscoverable-bps"/> + + 2023-11-02 @@ -73,6 +137,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/ricardian-contract"/> + + 2023-09-30 @@ -81,6 +153,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/evm"/> + + 2023-09-30 @@ -89,6 +169,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/evm-rpc-endpoints"/> + + 2023-09-30 @@ -97,6 +185,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/accounts"/> + + 2023-09-30 @@ -105,6 +201,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/bpjson"/> + + 2023-09-30 @@ -113,6 +217,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/about"/> + + 2023-11-02 @@ -121,6 +233,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/help"/> + + 2023-11-02 @@ -129,6 +249,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/block-producers/caleosblocks"/> + + 2023-10-17 @@ -137,6 +265,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/block-producers/infinitybloc"/> + + 2023-10-17 @@ -145,6 +281,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/block-producers/teamgreymass"/> + + 2023-10-17 @@ -153,6 +297,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/block-producers/telosgreenbp"/> + + 2023-10-17 @@ -161,6 +313,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/block-producers/eosphereiobp"/> + + 2023-10-17 @@ -169,6 +329,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/block-producers/telosunlimit"/> + + 2023-10-17 @@ -177,6 +345,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/block-producers/kainosblkpro"/> + + 2023-10-17 @@ -185,6 +361,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/block-producers/votetelosusa"/> + + 2023-10-17 @@ -193,6 +377,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/block-producers/telosmadrid1"/> + + 2023-10-17 @@ -201,6 +393,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/block-producers/persiantelos"/> + + 2023-10-17 @@ -209,6 +409,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/block-producers/telosarabia1"/> + + 2023-10-17 @@ -217,6 +425,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/block-producers/telosglobal1"/> + + 2023-10-17 @@ -225,6 +441,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/block-producers/teleologytls"/> + + 2023-10-17 @@ -233,6 +457,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/block-producers/teloskitchen"/> + + 2023-10-17 @@ -241,6 +473,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/block-producers/telosgermany"/> + + 2023-10-17 @@ -249,6 +489,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/block-producers/bp.boid"/> + + 2023-10-17 @@ -257,6 +505,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/block-producers/eosriobrazil"/> + + 2023-10-17 @@ -265,6 +521,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/block-producers/southafrica1"/> + + 2023-10-17 @@ -273,6 +537,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/block-producers/argentinatls"/> + + 2023-10-17 @@ -281,6 +553,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/block-producers/amsterdam"/> + + 2023-10-17 @@ -289,6 +569,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/block-producers/creativblock"/> + + 2023-10-17 @@ -297,6 +585,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/block-producers/edeniaedenia"/> + + 2023-10-17 @@ -305,6 +601,14 @@ rel="alternate" hreflang="es" href="https://telos.antelope.tools/es/block-producers?page=2"/> + + 2023-10-17 \ No newline at end of file diff --git a/webapp/public/telos/sitemap-es.xml b/webapp/public/telos/sitemap-es.xml new file mode 100644 index 000000000..d39dcb6e1 --- /dev/null +++ b/webapp/public/telos/sitemap-es.xml @@ -0,0 +1,614 @@ + + + https://telos.antelope.tools/es + + + + 1.0 + 2023-11-21 + + + https://telos.antelope.tools/es/block-producers + + + + 2023-11-21 + + + https://telos.antelope.tools/es/nodes + + + + 2023-11-21 + + + https://telos.antelope.tools/es/endpoints + + + + 2023-11-21 + + + https://telos.antelope.tools/es/nodes-distribution + + + + 2023-11-21 + + + https://telos.antelope.tools/es/rewards-distribution + + + + 2023-11-21 + + + https://telos.antelope.tools/es/endpoints-stats + + + + 2023-11-21 + + + https://telos.antelope.tools/es/undiscoverable-bps + + + + 2023-11-21 + + + https://telos.antelope.tools/es/ricardian-contract + + + + 2023-11-21 + + + https://telos.antelope.tools/es/evm + + + + 2023-11-21 + + + https://telos.antelope.tools/es/evm-rpc-endpoints + + + + 2023-11-21 + + + https://telos.antelope.tools/es/accounts + + + + 2023-11-21 + + + https://telos.antelope.tools/es/bpjson + + + + 2023-11-21 + + + https://telos.antelope.tools/es/about + + + + 2023-11-21 + + + https://telos.antelope.tools/es/help + + + + 2023-11-21 + + + https://telos.antelope.tools/es/block-producers/caleosblocks + + + + 2023-11-21 + + + https://telos.antelope.tools/es/block-producers/infinitybloc + + + + 2023-11-21 + + + https://telos.antelope.tools/es/block-producers/teamgreymass + + + + 2023-11-21 + + + https://telos.antelope.tools/es/block-producers/telosgreenbp + + + + 2023-11-21 + + + https://telos.antelope.tools/es/block-producers/eosphereiobp + + + + 2023-11-21 + + + https://telos.antelope.tools/es/block-producers/telosunlimit + + + + 2023-11-21 + + + https://telos.antelope.tools/es/block-producers/kainosblkpro + + + + 2023-11-21 + + + https://telos.antelope.tools/es/block-producers/votetelosusa + + + + 2023-11-21 + + + https://telos.antelope.tools/es/block-producers/telosmadrid1 + + + + 2023-11-21 + + + https://telos.antelope.tools/es/block-producers/persiantelos + + + + 2023-11-21 + + + https://telos.antelope.tools/es/block-producers/telosarabia1 + + + + 2023-11-21 + + + https://telos.antelope.tools/es/block-producers/telosglobal1 + + + + 2023-11-21 + + + https://telos.antelope.tools/es/block-producers/teleologytls + + + + 2023-11-21 + + + https://telos.antelope.tools/es/block-producers/teloskitchen + + + + 2023-11-21 + + + https://telos.antelope.tools/es/block-producers/telosgermany + + + + 2023-11-21 + + + https://telos.antelope.tools/es/block-producers/bp.boid + + + + 2023-11-21 + + + https://telos.antelope.tools/es/block-producers/eosriobrazil + + + + 2023-11-21 + + + https://telos.antelope.tools/es/block-producers/southafrica1 + + + + 2023-11-21 + + + https://telos.antelope.tools/es/block-producers/argentinatls + + + + 2023-11-21 + + + https://telos.antelope.tools/es/block-producers/amsterdam + + + + 2023-11-21 + + + https://telos.antelope.tools/es/block-producers/creativblock + + + + 2023-11-21 + + + https://telos.antelope.tools/es/block-producers/edeniaedenia + + + + 2023-11-21 + + + https://telos.antelope.tools/es/block-producers?page=2 + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/telos/sitemap-ko.xml b/webapp/public/telos/sitemap-ko.xml new file mode 100644 index 000000000..71c8b431f --- /dev/null +++ b/webapp/public/telos/sitemap-ko.xml @@ -0,0 +1,614 @@ + + + https://telos.antelope.tools/ko + + + + 1.0 + 2023-11-21 + + + https://telos.antelope.tools/ko/block-producers + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/nodes + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/endpoints + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/nodes-distribution + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/rewards-distribution + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/endpoints-stats + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/undiscoverable-bps + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/ricardian-contract + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/evm + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/evm-rpc-endpoints + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/accounts + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/bpjson + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/about + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/help + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/block-producers/caleosblocks + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/block-producers/infinitybloc + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/block-producers/teamgreymass + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/block-producers/telosgreenbp + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/block-producers/eosphereiobp + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/block-producers/telosunlimit + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/block-producers/kainosblkpro + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/block-producers/votetelosusa + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/block-producers/telosmadrid1 + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/block-producers/persiantelos + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/block-producers/telosarabia1 + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/block-producers/telosglobal1 + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/block-producers/teleologytls + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/block-producers/teloskitchen + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/block-producers/telosgermany + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/block-producers/bp.boid + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/block-producers/eosriobrazil + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/block-producers/southafrica1 + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/block-producers/argentinatls + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/block-producers/amsterdam + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/block-producers/creativblock + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/block-producers/edeniaedenia + + + + 2023-11-21 + + + https://telos.antelope.tools/ko/block-producers?page=2 + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/telos/sitemap-zh.xml b/webapp/public/telos/sitemap-zh.xml new file mode 100644 index 000000000..74f5195e7 --- /dev/null +++ b/webapp/public/telos/sitemap-zh.xml @@ -0,0 +1,614 @@ + + + https://telos.antelope.tools/zh + + + + 1.0 + 2023-11-21 + + + https://telos.antelope.tools/zh/block-producers + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/nodes + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/endpoints + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/nodes-distribution + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/rewards-distribution + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/endpoints-stats + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/undiscoverable-bps + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/ricardian-contract + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/evm + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/evm-rpc-endpoints + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/accounts + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/bpjson + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/about + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/help + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/block-producers/caleosblocks + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/block-producers/infinitybloc + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/block-producers/teamgreymass + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/block-producers/telosgreenbp + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/block-producers/eosphereiobp + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/block-producers/telosunlimit + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/block-producers/kainosblkpro + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/block-producers/votetelosusa + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/block-producers/telosmadrid1 + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/block-producers/persiantelos + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/block-producers/telosarabia1 + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/block-producers/telosglobal1 + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/block-producers/teleologytls + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/block-producers/teloskitchen + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/block-producers/telosgermany + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/block-producers/bp.boid + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/block-producers/eosriobrazil + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/block-producers/southafrica1 + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/block-producers/argentinatls + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/block-producers/amsterdam + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/block-producers/creativblock + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/block-producers/edeniaedenia + + + + 2023-11-21 + + + https://telos.antelope.tools/zh/block-producers?page=2 + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/ultra-testnet/sitemap-en.xml b/webapp/public/ultra-testnet/sitemap-en.xml index b16280964..52435ebd9 100644 --- a/webapp/public/ultra-testnet/sitemap-en.xml +++ b/webapp/public/ultra-testnet/sitemap-en.xml @@ -8,6 +8,14 @@ rel="alternate" hreflang="es" href="https://ultra-testnet.antelope.tools/es"/> + + 1.0 2023-09-30 @@ -17,6 +25,14 @@ rel="alternate" hreflang="es" href="https://ultra-testnet.antelope.tools/es/accounts"/> + + 2023-09-30 @@ -25,6 +41,14 @@ rel="alternate" hreflang="es" href="https://ultra-testnet.antelope.tools/es/faucet"/> + + 2023-09-30 @@ -33,6 +57,14 @@ rel="alternate" hreflang="es" href="https://ultra-testnet.antelope.tools/es/about"/> + + 2023-09-30 @@ -41,6 +73,14 @@ rel="alternate" hreflang="es" href="https://ultra-testnet.antelope.tools/es/help"/> + + 2023-09-30 \ No newline at end of file diff --git a/webapp/public/ultra-testnet/sitemap-es.xml b/webapp/public/ultra-testnet/sitemap-es.xml new file mode 100644 index 000000000..2504544c1 --- /dev/null +++ b/webapp/public/ultra-testnet/sitemap-es.xml @@ -0,0 +1,86 @@ + + + https://ultra-testnet.antelope.tools/es + + + + 1.0 + 2023-11-21 + + + https://ultra-testnet.antelope.tools/es/accounts + + + + 2023-11-21 + + + https://ultra-testnet.antelope.tools/es/faucet + + + + 2023-11-21 + + + https://ultra-testnet.antelope.tools/es/about + + + + 2023-11-21 + + + https://ultra-testnet.antelope.tools/es/help + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/ultra-testnet/sitemap-ko.xml b/webapp/public/ultra-testnet/sitemap-ko.xml new file mode 100644 index 000000000..dd2f8f570 --- /dev/null +++ b/webapp/public/ultra-testnet/sitemap-ko.xml @@ -0,0 +1,86 @@ + + + https://ultra-testnet.antelope.tools/ko + + + + 1.0 + 2023-11-21 + + + https://ultra-testnet.antelope.tools/ko/accounts + + + + 2023-11-21 + + + https://ultra-testnet.antelope.tools/ko/faucet + + + + 2023-11-21 + + + https://ultra-testnet.antelope.tools/ko/about + + + + 2023-11-21 + + + https://ultra-testnet.antelope.tools/ko/help + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/ultra-testnet/sitemap-zh.xml b/webapp/public/ultra-testnet/sitemap-zh.xml new file mode 100644 index 000000000..c7108f450 --- /dev/null +++ b/webapp/public/ultra-testnet/sitemap-zh.xml @@ -0,0 +1,86 @@ + + + https://ultra-testnet.antelope.tools/zh + + + + 1.0 + 2023-11-21 + + + https://ultra-testnet.antelope.tools/zh/accounts + + + + 2023-11-21 + + + https://ultra-testnet.antelope.tools/zh/faucet + + + + 2023-11-21 + + + https://ultra-testnet.antelope.tools/zh/about + + + + 2023-11-21 + + + https://ultra-testnet.antelope.tools/zh/help + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/wax-testnet/sitemap-en.xml b/webapp/public/wax-testnet/sitemap-en.xml index 8d46c92f9..c80e48b84 100644 --- a/webapp/public/wax-testnet/sitemap-en.xml +++ b/webapp/public/wax-testnet/sitemap-en.xml @@ -8,6 +8,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es"/> + + 1.0 2023-09-30 @@ -17,6 +25,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/block-producers"/> + + 2023-10-17 @@ -25,6 +41,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/nodes"/> + + 2023-10-17 @@ -33,6 +57,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/endpoints"/> + + 2023-10-17 @@ -41,6 +73,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/nodes-distribution"/> + + 2023-10-17 @@ -49,6 +89,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/rewards-distribution"/> + + 2023-09-30 @@ -57,6 +105,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/endpoints-stats"/> + + 2023-04-25 @@ -65,6 +121,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/undiscoverable-bps"/> + + 2023-11-02 @@ -73,6 +137,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/ricardian-contract"/> + + 2023-09-30 @@ -81,6 +153,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/accounts"/> + + 2023-09-30 @@ -89,6 +169,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/bpjson"/> + + 2023-09-30 @@ -97,6 +185,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/about"/> + + 2023-11-02 @@ -105,6 +201,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/help"/> + + 2023-11-02 @@ -113,6 +217,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/block-producers/blokcrafters"/> + + 2023-10-17 @@ -121,6 +233,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/block-producers/greeneosiobp"/> + + 2023-10-17 @@ -129,6 +249,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/block-producers/wizardsguild"/> + + 2023-10-17 @@ -137,6 +265,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/block-producers/eosarabianet"/> + + 2023-10-17 @@ -145,6 +281,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/block-producers/liquidgaming"/> + + 2023-10-17 @@ -153,6 +297,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/block-producers/waxmadrid111"/> + + 2023-10-17 @@ -161,6 +313,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/block-producers/3dkrenderwax"/> + + 2023-10-17 @@ -169,6 +329,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/block-producers/wecan"/> + + 2023-10-17 @@ -177,6 +345,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/block-producers/eosiodetroit"/> + + 2023-10-17 @@ -185,6 +361,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/block-producers/wax.eastern"/> + + 2023-10-17 @@ -193,6 +377,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/block-producers/sentnlagents"/> + + 2023-10-17 @@ -201,6 +393,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/block-producers/oneinacilian"/> + + 2023-10-17 @@ -209,6 +409,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/block-producers/bp.box"/> + + 2023-10-17 @@ -217,6 +425,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/block-producers/dapplicawaxt"/> + + 2023-10-17 @@ -225,6 +441,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/block-producers/bp.alcor"/> + + 2023-10-17 @@ -233,6 +457,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/block-producers/waxdaoguild1"/> + + 2023-10-17 @@ -241,6 +473,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/block-producers/cryptolions1"/> + + 2023-10-17 @@ -249,6 +489,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/block-producers/eosdublinwow"/> + + 2023-10-17 @@ -257,6 +505,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/block-producers/bp.adex"/> + + 2023-10-17 @@ -265,6 +521,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/block-producers/wombatblockx"/> + + 2023-10-17 @@ -273,6 +537,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/block-producers/ledgerwiseio"/> + + 2023-10-17 @@ -281,6 +553,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/block-producers/edeniaedenia"/> + + 2023-10-17 @@ -289,6 +569,14 @@ rel="alternate" hreflang="es" href="https://wax-testnet.antelope.tools/es/block-producers?page=2"/> + + 2023-10-17 \ No newline at end of file diff --git a/webapp/public/wax-testnet/sitemap-es.xml b/webapp/public/wax-testnet/sitemap-es.xml new file mode 100644 index 000000000..fb6a96a6f --- /dev/null +++ b/webapp/public/wax-testnet/sitemap-es.xml @@ -0,0 +1,582 @@ + + + https://wax-testnet.antelope.tools/es + + + + 1.0 + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/block-producers + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/nodes + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/endpoints + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/nodes-distribution + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/rewards-distribution + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/endpoints-stats + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/undiscoverable-bps + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/ricardian-contract + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/accounts + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/bpjson + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/about + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/help + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/block-producers/blokcrafters + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/block-producers/greeneosiobp + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/block-producers/wizardsguild + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/block-producers/eosarabianet + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/block-producers/liquidgaming + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/block-producers/waxmadrid111 + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/block-producers/3dkrenderwax + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/block-producers/wecan + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/block-producers/eosiodetroit + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/block-producers/wax.eastern + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/block-producers/sentnlagents + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/block-producers/oneinacilian + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/block-producers/bp.box + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/block-producers/dapplicawaxt + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/block-producers/bp.alcor + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/block-producers/waxdaoguild1 + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/block-producers/cryptolions1 + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/block-producers/eosdublinwow + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/block-producers/bp.adex + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/block-producers/wombatblockx + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/block-producers/ledgerwiseio + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/block-producers/edeniaedenia + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/es/block-producers?page=2 + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/wax-testnet/sitemap-ko.xml b/webapp/public/wax-testnet/sitemap-ko.xml new file mode 100644 index 000000000..5fd74b259 --- /dev/null +++ b/webapp/public/wax-testnet/sitemap-ko.xml @@ -0,0 +1,582 @@ + + + https://wax-testnet.antelope.tools/ko + + + + 1.0 + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/block-producers + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/nodes + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/endpoints + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/nodes-distribution + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/rewards-distribution + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/endpoints-stats + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/undiscoverable-bps + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/ricardian-contract + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/accounts + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/bpjson + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/about + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/help + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/block-producers/blokcrafters + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/block-producers/greeneosiobp + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/block-producers/wizardsguild + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/block-producers/eosarabianet + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/block-producers/liquidgaming + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/block-producers/waxmadrid111 + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/block-producers/3dkrenderwax + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/block-producers/wecan + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/block-producers/eosiodetroit + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/block-producers/wax.eastern + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/block-producers/sentnlagents + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/block-producers/oneinacilian + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/block-producers/bp.box + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/block-producers/dapplicawaxt + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/block-producers/bp.alcor + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/block-producers/waxdaoguild1 + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/block-producers/cryptolions1 + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/block-producers/eosdublinwow + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/block-producers/bp.adex + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/block-producers/wombatblockx + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/block-producers/ledgerwiseio + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/block-producers/edeniaedenia + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/ko/block-producers?page=2 + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/wax-testnet/sitemap-zh.xml b/webapp/public/wax-testnet/sitemap-zh.xml new file mode 100644 index 000000000..4a80f99dc --- /dev/null +++ b/webapp/public/wax-testnet/sitemap-zh.xml @@ -0,0 +1,582 @@ + + + https://wax-testnet.antelope.tools/zh + + + + 1.0 + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/block-producers + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/nodes + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/endpoints + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/nodes-distribution + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/rewards-distribution + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/endpoints-stats + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/undiscoverable-bps + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/ricardian-contract + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/accounts + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/bpjson + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/about + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/help + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/block-producers/blokcrafters + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/block-producers/greeneosiobp + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/block-producers/wizardsguild + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/block-producers/eosarabianet + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/block-producers/liquidgaming + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/block-producers/waxmadrid111 + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/block-producers/3dkrenderwax + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/block-producers/wecan + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/block-producers/eosiodetroit + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/block-producers/wax.eastern + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/block-producers/sentnlagents + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/block-producers/oneinacilian + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/block-producers/bp.box + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/block-producers/dapplicawaxt + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/block-producers/bp.alcor + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/block-producers/waxdaoguild1 + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/block-producers/cryptolions1 + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/block-producers/eosdublinwow + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/block-producers/bp.adex + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/block-producers/wombatblockx + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/block-producers/ledgerwiseio + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/block-producers/edeniaedenia + + + + 2023-11-21 + + + https://wax-testnet.antelope.tools/zh/block-producers?page=2 + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/wax/sitemap-en.xml b/webapp/public/wax/sitemap-en.xml index d07c3565a..764ad8482 100644 --- a/webapp/public/wax/sitemap-en.xml +++ b/webapp/public/wax/sitemap-en.xml @@ -8,6 +8,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es"/> + + 1.0 2023-09-30 @@ -17,6 +25,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/block-producers"/> + + 2023-10-17 @@ -25,6 +41,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/nodes"/> + + 2023-10-17 @@ -33,6 +57,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/endpoints"/> + + 2023-10-17 @@ -41,6 +73,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/nodes-distribution"/> + + 2023-10-17 @@ -49,6 +89,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/rewards-distribution"/> + + 2023-09-30 @@ -57,6 +105,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/endpoints-stats"/> + + 2023-09-30 @@ -65,6 +121,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/undiscoverable-bps"/> + + 2023-11-02 @@ -73,6 +137,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/ricardian-contract"/> + + 2023-09-30 @@ -81,6 +153,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/accounts"/> + + 2023-09-30 @@ -89,6 +169,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/bpjson"/> + + 2023-09-30 @@ -97,6 +185,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/about"/> + + 2023-11-02 @@ -105,6 +201,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/help"/> + + 2023-11-02 @@ -113,6 +217,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/block-producers/nation.wax"/> + + 2023-10-17 @@ -121,6 +233,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/block-producers/waxswedenorg"/> + + 2023-10-17 @@ -129,6 +249,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/block-producers/eosriobrazil"/> + + 2023-10-17 @@ -137,6 +265,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/block-producers/bountyblokbp"/> + + 2023-10-17 @@ -145,6 +281,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/block-producers/amsterdamwax"/> + + 2023-10-17 @@ -153,6 +297,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/block-producers/ivote4waxusa"/> + + 2023-10-17 @@ -161,6 +313,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/block-producers/alohaeosprod"/> + + 2023-10-17 @@ -169,6 +329,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/block-producers/ledgerwiseio"/> + + 2023-10-17 @@ -177,6 +345,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/block-producers/eosiodetroit"/> + + 2023-10-17 @@ -185,6 +361,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/block-producers/cryptolions1"/> + + 2023-10-17 @@ -193,6 +377,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/block-producers/eosphereiobp"/> + + 2023-10-17 @@ -201,6 +393,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/block-producers/teamgreymass"/> + + 2023-10-17 @@ -209,6 +409,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/block-producers/guild.nefty"/> + + 2023-10-17 @@ -217,6 +425,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/block-producers/eosauthority"/> + + 2023-10-17 @@ -225,6 +441,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/block-producers/blacklusionx"/> + + 2023-10-17 @@ -233,6 +457,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/block-producers/3dkrenderwax"/> + + 2023-10-17 @@ -241,6 +473,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/block-producers/bp.wecan"/> + + 2023-10-17 @@ -249,6 +489,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/block-producers/waxhiveguild"/> + + 2023-10-17 @@ -257,6 +505,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/block-producers/guild.taco"/> + + 2023-10-17 @@ -265,6 +521,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/block-producers/liquidstudio"/> + + 2023-10-17 @@ -273,6 +537,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/block-producers/guild.waxdao"/> + + 2023-10-17 @@ -281,6 +553,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/block-producers/edeniaedenia"/> + + 2023-10-17 @@ -289,6 +569,14 @@ rel="alternate" hreflang="es" href="https://wax.antelope.tools/es/block-producers?page=2"/> + + 2023-10-17 \ No newline at end of file diff --git a/webapp/public/wax/sitemap-es.xml b/webapp/public/wax/sitemap-es.xml new file mode 100644 index 000000000..ab3d87725 --- /dev/null +++ b/webapp/public/wax/sitemap-es.xml @@ -0,0 +1,582 @@ + + + https://wax.antelope.tools/es + + + + 1.0 + 2023-11-21 + + + https://wax.antelope.tools/es/block-producers + + + + 2023-11-21 + + + https://wax.antelope.tools/es/nodes + + + + 2023-11-21 + + + https://wax.antelope.tools/es/endpoints + + + + 2023-11-21 + + + https://wax.antelope.tools/es/nodes-distribution + + + + 2023-11-21 + + + https://wax.antelope.tools/es/rewards-distribution + + + + 2023-11-21 + + + https://wax.antelope.tools/es/endpoints-stats + + + + 2023-11-21 + + + https://wax.antelope.tools/es/undiscoverable-bps + + + + 2023-11-21 + + + https://wax.antelope.tools/es/ricardian-contract + + + + 2023-11-21 + + + https://wax.antelope.tools/es/accounts + + + + 2023-11-21 + + + https://wax.antelope.tools/es/bpjson + + + + 2023-11-21 + + + https://wax.antelope.tools/es/about + + + + 2023-11-21 + + + https://wax.antelope.tools/es/help + + + + 2023-11-21 + + + https://wax.antelope.tools/es/block-producers/nation.wax + + + + 2023-11-21 + + + https://wax.antelope.tools/es/block-producers/waxswedenorg + + + + 2023-11-21 + + + https://wax.antelope.tools/es/block-producers/eosriobrazil + + + + 2023-11-21 + + + https://wax.antelope.tools/es/block-producers/bountyblokbp + + + + 2023-11-21 + + + https://wax.antelope.tools/es/block-producers/amsterdamwax + + + + 2023-11-21 + + + https://wax.antelope.tools/es/block-producers/ivote4waxusa + + + + 2023-11-21 + + + https://wax.antelope.tools/es/block-producers/alohaeosprod + + + + 2023-11-21 + + + https://wax.antelope.tools/es/block-producers/ledgerwiseio + + + + 2023-11-21 + + + https://wax.antelope.tools/es/block-producers/eosiodetroit + + + + 2023-11-21 + + + https://wax.antelope.tools/es/block-producers/cryptolions1 + + + + 2023-11-21 + + + https://wax.antelope.tools/es/block-producers/eosphereiobp + + + + 2023-11-21 + + + https://wax.antelope.tools/es/block-producers/teamgreymass + + + + 2023-11-21 + + + https://wax.antelope.tools/es/block-producers/guild.nefty + + + + 2023-11-21 + + + https://wax.antelope.tools/es/block-producers/eosauthority + + + + 2023-11-21 + + + https://wax.antelope.tools/es/block-producers/blacklusionx + + + + 2023-11-21 + + + https://wax.antelope.tools/es/block-producers/3dkrenderwax + + + + 2023-11-21 + + + https://wax.antelope.tools/es/block-producers/bp.wecan + + + + 2023-11-21 + + + https://wax.antelope.tools/es/block-producers/waxhiveguild + + + + 2023-11-21 + + + https://wax.antelope.tools/es/block-producers/guild.taco + + + + 2023-11-21 + + + https://wax.antelope.tools/es/block-producers/liquidstudio + + + + 2023-11-21 + + + https://wax.antelope.tools/es/block-producers/guild.waxdao + + + + 2023-11-21 + + + https://wax.antelope.tools/es/block-producers/edeniaedenia + + + + 2023-11-21 + + + https://wax.antelope.tools/es/block-producers?page=2 + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/wax/sitemap-ko.xml b/webapp/public/wax/sitemap-ko.xml new file mode 100644 index 000000000..e5abe69ca --- /dev/null +++ b/webapp/public/wax/sitemap-ko.xml @@ -0,0 +1,582 @@ + + + https://wax.antelope.tools/ko + + + + 1.0 + 2023-11-21 + + + https://wax.antelope.tools/ko/block-producers + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/nodes + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/endpoints + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/nodes-distribution + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/rewards-distribution + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/endpoints-stats + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/undiscoverable-bps + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/ricardian-contract + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/accounts + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/bpjson + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/about + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/help + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/block-producers/nation.wax + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/block-producers/waxswedenorg + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/block-producers/eosriobrazil + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/block-producers/bountyblokbp + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/block-producers/amsterdamwax + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/block-producers/ivote4waxusa + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/block-producers/alohaeosprod + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/block-producers/ledgerwiseio + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/block-producers/eosiodetroit + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/block-producers/cryptolions1 + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/block-producers/eosphereiobp + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/block-producers/teamgreymass + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/block-producers/guild.nefty + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/block-producers/eosauthority + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/block-producers/blacklusionx + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/block-producers/3dkrenderwax + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/block-producers/bp.wecan + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/block-producers/waxhiveguild + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/block-producers/guild.taco + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/block-producers/liquidstudio + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/block-producers/guild.waxdao + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/block-producers/edeniaedenia + + + + 2023-11-21 + + + https://wax.antelope.tools/ko/block-producers?page=2 + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/wax/sitemap-zh.xml b/webapp/public/wax/sitemap-zh.xml new file mode 100644 index 000000000..629cbaef9 --- /dev/null +++ b/webapp/public/wax/sitemap-zh.xml @@ -0,0 +1,582 @@ + + + https://wax.antelope.tools/zh + + + + 1.0 + 2023-11-21 + + + https://wax.antelope.tools/zh/block-producers + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/nodes + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/endpoints + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/nodes-distribution + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/rewards-distribution + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/endpoints-stats + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/undiscoverable-bps + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/ricardian-contract + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/accounts + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/bpjson + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/about + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/help + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/block-producers/nation.wax + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/block-producers/waxswedenorg + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/block-producers/eosriobrazil + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/block-producers/bountyblokbp + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/block-producers/amsterdamwax + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/block-producers/ivote4waxusa + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/block-producers/alohaeosprod + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/block-producers/ledgerwiseio + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/block-producers/eosiodetroit + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/block-producers/cryptolions1 + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/block-producers/eosphereiobp + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/block-producers/teamgreymass + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/block-producers/guild.nefty + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/block-producers/eosauthority + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/block-producers/blacklusionx + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/block-producers/3dkrenderwax + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/block-producers/bp.wecan + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/block-producers/waxhiveguild + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/block-producers/guild.taco + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/block-producers/liquidstudio + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/block-producers/guild.waxdao + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/block-producers/edeniaedenia + + + + 2023-11-21 + + + https://wax.antelope.tools/zh/block-producers?page=2 + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/xpr-testnet/sitemap-en.xml b/webapp/public/xpr-testnet/sitemap-en.xml index e0e634562..7e5fdcd4b 100644 --- a/webapp/public/xpr-testnet/sitemap-en.xml +++ b/webapp/public/xpr-testnet/sitemap-en.xml @@ -8,6 +8,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es"/> + + 1.0 2023-09-30 @@ -17,6 +25,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/block-producers"/> + + 2023-10-17 @@ -25,6 +41,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/nodes"/> + + 2023-10-17 @@ -33,6 +57,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/endpoints"/> + + 2023-10-17 @@ -41,6 +73,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/rewards-distribution"/> + + 2023-09-30 @@ -49,6 +89,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/endpoints-stats"/> + + 2023-09-30 @@ -57,6 +105,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/undiscoverable-bps"/> + + 2023-11-02 @@ -65,6 +121,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/nodes-distribution"/> + + 2023-10-17 @@ -73,6 +137,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/cpu-benchmark"/> + + 2023-09-30 @@ -81,6 +153,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/ricardian-contract"/> + + 2023-09-30 @@ -89,6 +169,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/accounts"/> + + 2023-09-30 @@ -97,6 +185,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/bpjson"/> + + 2023-09-30 @@ -105,6 +201,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/about"/> + + 2023-11-02 @@ -113,6 +217,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/help"/> + + 2023-11-02 @@ -121,6 +233,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/block-producers/saltant"/> + + 2023-10-17 @@ -129,6 +249,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/block-producers/testalvosec"/> + + 2023-10-17 @@ -137,6 +265,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/block-producers/protonmadrid"/> + + 2023-10-17 @@ -145,6 +281,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/block-producers/totalproton"/> + + 2023-10-17 @@ -153,6 +297,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/block-producers/protonnz"/> + + 2023-10-17 @@ -161,6 +313,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/block-producers/eosusa"/> + + 2023-10-17 @@ -169,6 +329,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/block-producers/xprnodeonebp"/> + + 2023-10-17 @@ -177,6 +345,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/block-producers/protonkiwi"/> + + 2023-10-17 @@ -185,6 +361,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/block-producers/eosrio"/> + + 2023-10-17 @@ -193,6 +377,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/block-producers/eosiodetroit"/> + + 2023-10-17 @@ -201,6 +393,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/block-producers/protonuk"/> + + 2023-10-17 @@ -209,6 +409,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/block-producers/genereos"/> + + 2023-10-17 @@ -217,6 +425,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/block-producers/edenia"/> + + 2023-10-17 @@ -225,6 +441,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/block-producers/pinknetwork"/> + + 2023-10-17 @@ -233,6 +457,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/block-producers/eosamsterdam"/> + + 2023-10-17 @@ -241,6 +473,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/block-producers/metalnz"/> + + 2023-10-17 @@ -249,6 +489,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/block-producers/eosarabianet"/> + + 2023-10-17 @@ -257,6 +505,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/block-producers/ledgerwiseio"/> + + 2023-10-17 @@ -265,6 +521,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/block-producers/dankbp"/> + + 2023-10-17 @@ -273,6 +537,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/block-producers/gametest"/> + + 2023-10-17 @@ -281,6 +553,14 @@ rel="alternate" hreflang="es" href="https://xpr-testnet.antelope.tools/es/block-producers/brotonbp"/> + + 2023-10-17 \ No newline at end of file diff --git a/webapp/public/xpr-testnet/sitemap-es.xml b/webapp/public/xpr-testnet/sitemap-es.xml new file mode 100644 index 000000000..7588fc140 --- /dev/null +++ b/webapp/public/xpr-testnet/sitemap-es.xml @@ -0,0 +1,566 @@ + + + https://xpr-testnet.antelope.tools/es + + + + 1.0 + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/block-producers + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/nodes + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/endpoints + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/rewards-distribution + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/endpoints-stats + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/undiscoverable-bps + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/nodes-distribution + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/cpu-benchmark + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/ricardian-contract + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/accounts + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/bpjson + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/about + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/help + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/block-producers/saltant + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/block-producers/testalvosec + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/block-producers/protonmadrid + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/block-producers/totalproton + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/block-producers/protonnz + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/block-producers/eosusa + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/block-producers/xprnodeonebp + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/block-producers/protonkiwi + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/block-producers/eosrio + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/block-producers/eosiodetroit + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/block-producers/protonuk + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/block-producers/genereos + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/block-producers/edenia + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/block-producers/pinknetwork + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/block-producers/eosamsterdam + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/block-producers/metalnz + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/block-producers/eosarabianet + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/block-producers/ledgerwiseio + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/block-producers/dankbp + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/block-producers/gametest + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/es/block-producers/brotonbp + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/xpr-testnet/sitemap-ko.xml b/webapp/public/xpr-testnet/sitemap-ko.xml new file mode 100644 index 000000000..61023e7e5 --- /dev/null +++ b/webapp/public/xpr-testnet/sitemap-ko.xml @@ -0,0 +1,566 @@ + + + https://xpr-testnet.antelope.tools/ko + + + + 1.0 + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/block-producers + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/nodes + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/endpoints + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/rewards-distribution + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/endpoints-stats + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/undiscoverable-bps + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/nodes-distribution + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/cpu-benchmark + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/ricardian-contract + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/accounts + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/bpjson + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/about + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/help + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/block-producers/saltant + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/block-producers/testalvosec + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/block-producers/protonmadrid + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/block-producers/totalproton + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/block-producers/protonnz + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/block-producers/eosusa + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/block-producers/xprnodeonebp + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/block-producers/protonkiwi + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/block-producers/eosrio + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/block-producers/eosiodetroit + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/block-producers/protonuk + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/block-producers/genereos + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/block-producers/edenia + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/block-producers/pinknetwork + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/block-producers/eosamsterdam + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/block-producers/metalnz + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/block-producers/eosarabianet + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/block-producers/ledgerwiseio + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/block-producers/dankbp + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/block-producers/gametest + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/ko/block-producers/brotonbp + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/xpr-testnet/sitemap-zh.xml b/webapp/public/xpr-testnet/sitemap-zh.xml new file mode 100644 index 000000000..60a7876db --- /dev/null +++ b/webapp/public/xpr-testnet/sitemap-zh.xml @@ -0,0 +1,566 @@ + + + https://xpr-testnet.antelope.tools/zh + + + + 1.0 + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/block-producers + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/nodes + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/endpoints + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/rewards-distribution + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/endpoints-stats + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/undiscoverable-bps + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/nodes-distribution + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/cpu-benchmark + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/ricardian-contract + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/accounts + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/bpjson + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/about + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/help + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/block-producers/saltant + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/block-producers/testalvosec + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/block-producers/protonmadrid + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/block-producers/totalproton + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/block-producers/protonnz + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/block-producers/eosusa + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/block-producers/xprnodeonebp + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/block-producers/protonkiwi + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/block-producers/eosrio + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/block-producers/eosiodetroit + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/block-producers/protonuk + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/block-producers/genereos + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/block-producers/edenia + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/block-producers/pinknetwork + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/block-producers/eosamsterdam + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/block-producers/metalnz + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/block-producers/eosarabianet + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/block-producers/ledgerwiseio + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/block-producers/dankbp + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/block-producers/gametest + + + + 2023-11-21 + + + https://xpr-testnet.antelope.tools/zh/block-producers/brotonbp + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/xpr/sitemap-en.xml b/webapp/public/xpr/sitemap-en.xml index 2ab29bf43..46bb2ce32 100644 --- a/webapp/public/xpr/sitemap-en.xml +++ b/webapp/public/xpr/sitemap-en.xml @@ -8,6 +8,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es"/> + + 1.0 2023-09-30 @@ -17,6 +25,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/block-producers"/> + + 2023-10-17 @@ -25,6 +41,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/nodes"/> + + 2023-10-17 @@ -33,6 +57,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/endpoints"/> + + 2023-10-17 @@ -41,6 +73,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/rewards-distribution"/> + + 2023-09-30 @@ -49,6 +89,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/endpoints-stats"/> + + 2023-09-30 @@ -57,6 +105,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/undiscoverable-bps"/> + + 2023-11-02 @@ -65,6 +121,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/nodes-distribution"/> + + 2023-10-17 @@ -73,6 +137,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/cpu-benchmark"/> + + 2023-09-30 @@ -81,6 +153,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/ricardian-contract"/> + + 2023-09-30 @@ -89,6 +169,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/accounts"/> + + 2023-09-30 @@ -97,6 +185,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/bpjson"/> + + 2023-09-30 @@ -105,6 +201,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/about"/> + + 2023-11-02 @@ -113,6 +217,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/help"/> + + 2023-11-02 @@ -121,6 +233,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/block-producers/protonnz"/> + + 2023-10-17 @@ -129,6 +249,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/block-producers/eosusa"/> + + 2023-10-17 @@ -137,6 +265,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/block-producers/protonuk"/> + + 2023-10-17 @@ -145,6 +281,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/block-producers/protonkiwi"/> + + 2023-10-17 @@ -153,6 +297,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/block-producers/alvosec"/> + + 2023-10-17 @@ -161,6 +313,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/block-producers/cryptolions"/> + + 2023-10-17 @@ -169,6 +329,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/block-producers/quantumblok"/> + + 2023-10-17 @@ -177,6 +345,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/block-producers/cafe"/> + + 2023-10-17 @@ -185,6 +361,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/block-producers/protonmt"/> + + 2023-10-17 @@ -193,6 +377,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/block-producers/protonlondon"/> + + 2023-10-17 @@ -201,6 +393,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/block-producers/totalproton"/> + + 2023-10-17 @@ -209,6 +409,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/block-producers/brotonbp"/> + + 2023-10-17 @@ -217,6 +425,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/block-producers/protonind"/> + + 2023-10-17 @@ -225,6 +441,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/block-producers/eosamsterdam"/> + + 2023-10-17 @@ -233,6 +457,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/block-producers/saltant"/> + + 2023-10-17 @@ -241,6 +473,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/block-producers/protonmadrid"/> + + 2023-10-17 @@ -249,6 +489,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/block-producers/xprnodeonebp"/> + + 2023-10-17 @@ -257,6 +505,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/block-producers/eosiodetroit"/> + + 2023-10-17 @@ -265,6 +521,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/block-producers/protonpoland"/> + + 2023-10-17 @@ -273,6 +537,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/block-producers/eosdublinwow"/> + + 2023-10-17 @@ -281,6 +553,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/block-producers/ledgerwiseio"/> + + 2023-10-17 @@ -289,6 +569,14 @@ rel="alternate" hreflang="es" href="https://xpr.antelope.tools/es/block-producers/edenia"/> + + 2023-10-17 \ No newline at end of file diff --git a/webapp/public/xpr/sitemap-es.xml b/webapp/public/xpr/sitemap-es.xml new file mode 100644 index 000000000..7fd8f6e1b --- /dev/null +++ b/webapp/public/xpr/sitemap-es.xml @@ -0,0 +1,582 @@ + + + https://xpr.antelope.tools/es + + + + 1.0 + 2023-11-21 + + + https://xpr.antelope.tools/es/block-producers + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/nodes + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/endpoints + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/rewards-distribution + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/endpoints-stats + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/undiscoverable-bps + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/nodes-distribution + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/cpu-benchmark + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/ricardian-contract + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/accounts + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/bpjson + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/about + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/help + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/block-producers/protonnz + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/block-producers/eosusa + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/block-producers/protonuk + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/block-producers/protonkiwi + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/block-producers/alvosec + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/block-producers/cryptolions + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/block-producers/quantumblok + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/block-producers/cafe + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/block-producers/protonmt + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/block-producers/protonlondon + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/block-producers/totalproton + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/block-producers/brotonbp + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/block-producers/protonind + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/block-producers/eosamsterdam + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/block-producers/saltant + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/block-producers/protonmadrid + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/block-producers/xprnodeonebp + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/block-producers/eosiodetroit + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/block-producers/protonpoland + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/block-producers/eosdublinwow + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/block-producers/ledgerwiseio + + + + 2023-11-21 + + + https://xpr.antelope.tools/es/block-producers/edenia + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/xpr/sitemap-ko.xml b/webapp/public/xpr/sitemap-ko.xml new file mode 100644 index 000000000..f44208f4a --- /dev/null +++ b/webapp/public/xpr/sitemap-ko.xml @@ -0,0 +1,582 @@ + + + https://xpr.antelope.tools/ko + + + + 1.0 + 2023-11-21 + + + https://xpr.antelope.tools/ko/block-producers + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/nodes + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/endpoints + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/rewards-distribution + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/endpoints-stats + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/undiscoverable-bps + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/nodes-distribution + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/cpu-benchmark + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/ricardian-contract + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/accounts + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/bpjson + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/about + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/help + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/block-producers/protonnz + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/block-producers/eosusa + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/block-producers/protonuk + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/block-producers/protonkiwi + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/block-producers/alvosec + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/block-producers/cryptolions + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/block-producers/quantumblok + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/block-producers/cafe + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/block-producers/protonmt + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/block-producers/protonlondon + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/block-producers/totalproton + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/block-producers/brotonbp + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/block-producers/protonind + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/block-producers/eosamsterdam + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/block-producers/saltant + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/block-producers/protonmadrid + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/block-producers/xprnodeonebp + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/block-producers/eosiodetroit + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/block-producers/protonpoland + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/block-producers/eosdublinwow + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/block-producers/ledgerwiseio + + + + 2023-11-21 + + + https://xpr.antelope.tools/ko/block-producers/edenia + + + + 2023-11-21 + + \ No newline at end of file diff --git a/webapp/public/xpr/sitemap-zh.xml b/webapp/public/xpr/sitemap-zh.xml new file mode 100644 index 000000000..f795b44a3 --- /dev/null +++ b/webapp/public/xpr/sitemap-zh.xml @@ -0,0 +1,582 @@ + + + https://xpr.antelope.tools/zh + + + + 1.0 + 2023-11-21 + + + https://xpr.antelope.tools/zh/block-producers + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/nodes + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/endpoints + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/rewards-distribution + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/endpoints-stats + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/undiscoverable-bps + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/nodes-distribution + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/cpu-benchmark + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/ricardian-contract + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/accounts + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/bpjson + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/about + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/help + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/block-producers/protonnz + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/block-producers/eosusa + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/block-producers/protonuk + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/block-producers/protonkiwi + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/block-producers/alvosec + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/block-producers/cryptolions + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/block-producers/quantumblok + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/block-producers/cafe + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/block-producers/protonmt + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/block-producers/protonlondon + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/block-producers/totalproton + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/block-producers/brotonbp + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/block-producers/protonind + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/block-producers/eosamsterdam + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/block-producers/saltant + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/block-producers/protonmadrid + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/block-producers/xprnodeonebp + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/block-producers/eosiodetroit + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/block-producers/protonpoland + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/block-producers/eosdublinwow + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/block-producers/ledgerwiseio + + + + 2023-11-21 + + + https://xpr.antelope.tools/zh/block-producers/edenia + + + + 2023-11-21 + + \ No newline at end of file From bf864b1af3a39f7511fb3b3d9bcf5f8cb559526c Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 21 Nov 2023 15:46:57 -0600 Subject: [PATCH 50/75] chore(webapp): remove airware logo --- webapp/public/airware.webp | Bin 30926 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 webapp/public/airware.webp diff --git a/webapp/public/airware.webp b/webapp/public/airware.webp deleted file mode 100644 index 4a4c65aee87f45c67623aa5971c362a5854e2a58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30926 zcma%iW0YjwvTfP6ZC7=%%eHOXwr$(CZM&<>w%ujxRe$H)bI*If-mjfwja(~tM$9>5 z#?D9uaS@RbHvj-tVF5W6Id+1M@7Hx1K-qv)GvGi#Jl3qKVkE>w`DD!P1b(pLhBoge z)2C^8(wDxcJ8AJfqE+XL@90n4Yqi^7Eaxw)y|rKAUy2{gPuPd1K`%#_txLTlUrC?i zZ^<`LpRNzOm_J27o*wA0dh52~csO5G-?lGv4|&aa?7woqEI*bvWN+yozwW=b zeGxw8zf|9z-r?7CBd=EJ?Z3Ko?|5Z=0DYsrINwyi!1sFJbwBB!@J@O=zotJ@z65XK zKd|3>ziMB$-#LSQf4v6z%6%n&eSMa;m|k9el*_zHiietmu9e)amn ze|@g&_VIo_1is=w)js3zcL#YbKheMVZhzT$yWZ2@^qTg_+r^suPVka{nch(!qQ7XL zf7mV%-^R}8jN2+cg93WHeZ)L=y!Wzwg+2i7lzxJL((Cb3^xnTO_)LDm7%sd%yFqt+ z7?Z$KWXLlYmP~AAcQudAG41<^58#$t%9yb~lrq1+WS(q2dP#_#OS5x&p&p zh1Qs#plO%QYqBYQVa1&U4Ra?9L|$690?zyPR4RlR+^b^)wnXAmAyX`EaoPiz1Ke7@ z81FnHP>9TrV zvn6Z*?t|==oh$Y}?7`Lg79*I&?$r?aF*@xxKHU@4qPrg`h4k}0)R;Z084SZJh38#@ z$2})|M8P3>l@B+p6Q24(Sn+y>57)Bp2PtFNwMR1X1(Q5?HMVTq##*ktJ^47ocvaoI zGf=}s06$%2HGAOF*DbbG@>(%#Jm0_LK0*IBN2NX{rh;On81+UQhlGqXYoX*ytHR|M zC&#EuiaMTv`F}?|=gB_P3<^7KUK)4FMZO=LkiAg22!+u!_r&s{RH>f^)}Z%K!8)_F zl$&!9#1xkMjZ6ftI_JPu`EA@dxT(Nk&-=&@jK?AnA_`p^Rzw)?jNnp6GN~t8LtdPE zmElQ@Wgn4w^JmlU-(%5)tI9~wGEelmSn{IKBH15Z2%mlI?D5ybfvm({y z#Aw-NC}zz;<1G~&D467>*q5ur;vH%NBU~kTZvY6L6s@n7kf3FdBbYV#jno`8r!(6H z#0poc@f^G`zrSCwmS)MBqc?Uz__6bs&G1aQbG`@9PxJ-v>4t_0P?OAo8tI>_%e%K2 zPv)k)V+Ehdu35iEwX^j%yMiGQ3=8WZ9{!2O1?mb+KTuV4c2gfpG+Lbc-^l%gwb{oo z@nFLOLN(7k>Ni>d(XIA_AJ;}2-^u?buZZkrfQ-Y+QiWAMp(yBIlHf^IgL3dq4=e(9 zSEP;IPX@*R!A^Bbmqtxii&KXVs&%NfcGWMeu8)~~47fY%CNMVBy8?+gaP&C*=R?8o ze^0f55FHRDbmoYEhlC39pHpcG8qoZP-5s_Waxh6Z%TCPvu%1{~{*%t)5O)(qWypqS z2JK*y@AQ_w+_!zA0QckKVx$C$QFlEAXn1|ev(L?gbR%TR=eH3&k*A#J<}s`;>qO+B zgDo3*`HXi(#46byjx|*NjWfTLQQ~Nz#v~hGAkbg3{ci#^vIyeOR(y_O2Sc3(!A{E$ z2#-_8(Xz-<{tX!hiVn-uoo>v-$%DT*Bh>QNSrVUIV`e6JR$$-%1|R0nbwRG!;qe10 z=8r@3vy%P_l7DR%KA>+u#Edc+%y;?^NdI-N6E@|J+NqBd5!flZX}g-AYy!4LE17@P z@&87LhLcm@E49^KeU5M8FId77!qm7I_>(>1?EV7T6EDp+V9fWTlm*axVW^~0Ywl70VU=|V4hBIF0kyVaI1Y0QAZ zb+Wo|P2~Y&rSKqERCxL;55k&LoJqJwc60@JDc3hoDK9q9WIenIUql(w+@oE#Y{x)x z$!#}}Wq1DXh3i%LqiyGP_%GPg-Y9zcvSc3j55r~Qg753iV=vzKN25K25-oQzmkYw# zz;IycD7c-2>M=MEXG3>vWA>Op35JurJC<#!vv}LTlugfdm8Zaf^S}JAeSo!1e@I)R zm4YKriO|$|+NKJqcdWTk?BgNi3wVUTVjnPmpR%-LO;hakv^#i}IXROgS+vEcWTHtN zBSPl$97zN&{OY2lKmE~RlMul3F!K-5S*u$eAAtVqRpGq83*qeY; zcELqj}8)PL4jdnETx9KbJW4%)s%%p?{DR zTfPK2vbfm1Ftxa1{9XRo3n_tJnz6(s`nLg)#|au}4Vx1PynUBkhEia(h*d9HK@a`$ z`{OMMd?njLLi$(~_;|j77R<%1`vXTnYnx9D=(1uj%2&9ZI+JwH{=uSg8t5duIwk@n z{HXX321Pt^>+zwc<Z?pyR>c?S`ar8n%_r4S=k4u0LJw5Xvs!Vk64KB0(Vk z@*bJ@@w9J(1UP^_&dy(*`4W0o)q7Mn1B#T970U`7AM3&9i@EA z;O2}eAG0ga*o9v%{8c^&jW;T@0kWwR>t7KzsYaM@tK6KKBg|Ok*||dRSKKWC+nC#b2zzM^n5C zshhD{?rP%fnZbvbP1kzFBHUbtJl?Ecw+2Pm>920aau_VDgPEV$XgRXxDaPV2heEZZ z@_a!=K$gyOM4g-6zwO3n$reFWUXVE#KjvTi$nNi4)S7Vs!VBJ>(wR)+ps`?S_Ukw$ z`TL!nrvgj=wl@E+MtaO5SSD;_=EP2u3mIYqR^^CFbrNNHP-N7M#mw&>cbSXeeD`o9 z`KEcTGipuPA7oO2?joHZz}7fh`T+WI2Gi+<+$%N<(WplbOmUYj;qq}Dj82+z7gi#E z=iQ`39s zV9bE~X{{q1#pq6p1W*nxPL_$!wcXCJ5NfQ19PZ?b(rj?vaks`j(qY_*EG~}s*aow8Nhc_ zgDgSSZQpN~l@EP5T;HDaUGjo=W zsGQ>fzj;q7d0HCpr(o(KPo{P8L_1%bk_w}-ds38m>DD=?dM#rQLA{FS?<@+)~YUTe&P1&Kqdy-2=&rN)HM`zSoWKwx`t@BQa8 zC7o2n-$l(&34Y>QO|%U7h_>eHk2`sn=bbnWd&5k^pu~6~Quv>oqDRC{*_<5z7;Udi z8jsSB+8m^bg+vdGGB?aMe1KnD&pz8yst-IhfM*#{PZT@<_PQ)BV1Jk-NfEfFgJ`G5 zd-F^6;*p;muK5=hIg`LRoYB(Zx_{`T*GesySkAMYX53GCnEXErqATT${oNt|rC;Ap z2NwK0_S&fbbVz?q8{!nU>u(B`NAZ8#$i}$L!Ts5SIpYM&h+oU)LOPm7`t+3jSJRl@ zH2+QTe-#gtpnvsRe^2_C|NbA}8!1Nfe_8kcbz=YO^Zxc37@GfX)&BpsLrl5$p;!Yx zp{9B0j>l$0DmwGd4VNI6Wl%EiN?7t%YQXP|)y}#?gnF2ygLyPtH96@dIuge17%SL!-8eacx_^Q^31{PWadabKr6Uzu4v_>lpXNOVl&?rFZ zlSt?b=BYi%(2yDxNu?oWR?;{Q_X&P5UaC{S3cfZ-8dG%(0SJ|BbrpX_4J4}C3rLPb zahG6YeX-~Pix%7IZ>m?7hk;tN_w70d{jbw|!f}Jtr83y(kcgIeDDzW*FLP6bY#YQ) zf%&D`U;c9Nf08Ak>D`3z@v!WQZdHa+rF{yg$ah5M3G(F1as!`UE(&D4};K|=b z$1i@)=hg;E(^4oLRw@(TCYB+0a1CKGxB!io;Bkq^^X{3|q}piP43&>)VJB_Z9ks@K zY(-!km5Px(u^sHluSn~R6OTPf#QB@ZMU0Fds~^Rzjwy(rf=O+*Q}_|_dLgxpSlB<+ ziG+ctNw?C{Yxuu$!&~0Q!DTKMJr_bzN8%WU8_F@HLOLghD+y3<(oKAU5PKB5@n{; zX9bb%DW&;2jTxQ6eZ0hF#A!qmaR;^<1yrB*C{KkWN_ykCUa0^LA98miKXY|Lpw5T_ zP4(?4#&Q~~0T5##Dj3zLLkdu*5Xy|=yCr7-K5N(EV4V+2LdZ)- zSsP!ArF{%zJlTO7HR-Bs4&b*Ih6b=q9xS^k?9yW2L_MP&BpSZ0)UFyq$36p%l(-!| z^U|P5oZ%<00Izwxw-*UPQD1^S>D+~#A0W%X#?thOOVy9pZwK!mNi)PUW$takTy7yt zjNJ>(f&Y7lb$HTD$;8N%YF!!^Bmv&i4OoJ5KCRrmPC^7LGIalGZ@*;&pS7DjF35%! ze-sBb2Mt!VP&mJ79U7}7j7%If{LgwHm?Wa~HD3^Qa`YC>Si~25q3GAz$YZ&5aT0y8 z8-F(!^J+T%B$^pdtpYn;ZqkZxp3hw!*~gY`MRhUbSK zZcz_>@{@eRlq`l%(53`>d_D(TXpLyQvgMv^Ge?Zp60K z4T5_uaTy^s)eJL02KtWx(c+>cMSgSi^)I;y3zGp|jB+rZ2zx)51*TpvM>ik+DTQ8-g2P}(CuE0)!vPz2b9n7$PS=x zc)Jgh%kEqYqnj;hPbiRnF3F#7Tya*6RsLwH_o}!IR5@%Dh}IUSRAv#knN~@-x6zT) zva6&`o9KvA@*Rjaptw2+70S*tCfrf=0aC{rx+rH3tx2G+LwMdVz??V@nd0`t58d~N zTd)~Z#MfCBNrB-;v#GG2^HSS0H`A~g0e|B13+xF6UISCU^qy;f>y{+E^Q4&&0cojX zz-F#$tv<((^+RL@i5&#Y^zT-M?=P%9 zh2JJ;i_PPzPFX=cm*4Q_fQ+Hl@IacMFIQwI+>39w@`|~n#M?spR|Hg_Wa5mmEJ{kKr z7Q{x=?nAjAAZMv05Lx+-}Nc)R6($#st>Bkm%fCJJtmijD@`H{;hvbSgtQ_wHeK|*3ckA!Hh62LHy`qA9=oYd&pvnx zTbX;5_Zcxd;3e*>#qO7!tW<-)*;Cg4hwD&Q zvB_amC_M8>!Fy7xD_8_Ra<4nD8N!f4QN5DR0}Gpnj1)awsS32gEr3Qd@R*a3gZ!fF zRa`+wFL<;hx}64HuHmB*P}O6HHMsa%^?CuVmsnZ34hsbmTDz)ss^VoPfU|u`HH|2O z`knHFtq#ZK!1Hd^XW_n2P);IN#WrDWFPL)u>C4WqQ$D@Jh~YvR##q}%T6Ya);7OvZ zC8DyLWAP$F+d>wLTg`ifqtl`gMRWfpR%>;3T+cvEXxx>s-%TpKQUe`S^rz~W% z6d5PvQrwElID*8g${0w&>PyqRxF(6Ucpj898(m_HIh2ieQcLAJyu3}%p-Z}q;E2?1 zY5|fUfR0x-4CxiS-rz;G0F-wQ#Ce+(y+(CUHwaqSH<8I$I*r;p6y-4o>u)>g8{UC+ zXa|B-cH}Dy+R?_AFua#jNn?Unx$2fg;-+z{py5L*d414hy>wtq0s~p)0QKw9KJi1q z=io`Sopc@!$uY@^NyZ7U&S9WZ0>My{*;ULtRYZIse{_Bca`uPgno13XIB?%#Tl6&x zkk=zo`2ig17R&8&u&%U=_$9QXrv!#|W>p=ubUL54@4Ok8s89V7CoeTuyUX1L!QxpC zZEIeq0C(z{t&9=(fy}d!ik+8wzQJ|;Cb5-349ZS)6Fh^zRFChO z^n_EuW8r7`m$<(_)yB21+k)ofaIP~uM5uq3eI4*$af~K9OhD*{Os_rLLiAu~yP-Mc zW^c?FSCA~4RtF;BeD?Qn=!{Am0|2+>foY!(ffp2}gGEh5SZHPqH^Ddmp+Kb*;>}G& z658VTj3oNO+0o>v023t^?r%q>xT{*6DYLjcHt}BL&v?xYdkhkTZJ1Wt7W)%lqj0Zc z1cr+N@!-VaIZqBg>C5;eve5%8=CSmT^;hyA6rDcq7$|x^emu^Wkui7cnau$h0y_TX znVQDiS3N4pP2%@(viK+lnL^WjA(X7c-&#rgt+Cp=Y0Q}>C|lUTznzWpXnD%pR{$5Q zM=@206v(j*uNyPx;yO9e%hTouyvg|bOAn%IgtUcpYM4#FrsFs&nt)bK*8DY?b@Xg_ z;PzCS3Xct;f=10Nc@;XgK4kQtm%3fQPzK6X!2vy1N~LQMh8YN!B#tTQOLTv+8+tBi zxUHR0X*j|xnnvQd)h&^rSdWB1pm=wa$!UC!<mhrkkNlEOG6;{?ylDKb0hWSSRKJ zilpuNtB|MTCD(*Xx$TICsTxt~I;y}RptE>w0z1D<9`KDrEK$qlQjsW;7)}rYFNpIH zMq~Ho^%E}dkD{OJm_#4#kSr!KW9k!Z-ZWhg3_ln&OUOwCj_IGQfI>lQ=153x_)Feg z!up35&e3=#l%yGNx?I>d`UPDrxJQJ%qHgB69y^6C#-XaXKh6y(E zByCi|mNu9~-uj}DO$?k{27U$_*i0fN#k~3fT$Gr1`aEDwDz$jEWrsjIM;4ut37qwt zzOv>_i7Twgd3a@83OGZ)AhYWrmRaRBT^%NmJ3zK)Sd;vMKVy9!3LuGFq`vB5!7^|M zbw1uOpe_NYechZ3Aq3k=9ba;)D-z=1b8cy<`iUO_|DF*FGvZ)Fp>z4zJW6{+kP%F- ze%CgiroteP1=v3%|FTwMEcyGP9La38@c08u*$muS3%683;w<3xv`_^F$Jt}_hWea% z8d!ai9w98VHz*inHGy@rhk#vXhoNKO%-+irs>?rFnqjV|sN!@6X6ZUF_|gTvPg2x9 zu(#Iqq!~51wHB=mqS>(qlv>m~v@_NpV@dxVN-6&VeLx?gY zqA~VMD~VNb7P8_OEA&;wul8ttVOFtO#=ZUXllrnJ&JAU6Tve$Jz!X2D+yWY*Ib-SyEYj7WxyC-|f@f6|m+C zy_^_9*&U;sbQS3((WMw{N)g}m1Ec38ETPfRvq5{dqWGyQ)M;4MD@8mALra~1<3HKV z?ZBne!7#iCLAd)GrNzR;_bc8YNw>wyvTSxnvZiE}1Y}&|^=(v)A!}BI*0C`N57Hg! z#1ezDFrZ}V`+<>NlXz;om~F&R=u^a8}>facIUq>0w5A16x>QwQ$Pma=VO9Cm;jeEUtS@*;C2_3M5923o3m(BQ4T#5Eu4pt#C`@m{2B zWhs!Ox7N{mDzfp^BIeUj-{#3K4sinrYn?7X#S&A1b#__h}4#*QkkDlvQ)jg&Y11$iZC5(YYZXgOPy0U z6Q9>tz$^h0n|4zbklJeb4;=ReGFFuRP*Ux}fc!w~m-L<@l~#QjZ#ArXlrC*vkmBIP zhnsn7&QImWyw9nebe{~1blyyJ?5I~it$W-D*K+LL1n>xrxgJD?$xXT(Qj$5OX!^Sy z1YreU^0MBlTtQztSz-XGGX#VY@Eon%-hNx5BJ*d1ch5qzoI%It^&g zk^O4(&&r%olkAO+iU5q|J0X(sN2fwxs*h?%ngRi4c$Ub?2`yKvx$Le~+d>{kkDmxf z&kP&Y z!K~Y+rVmLKU}hKscf#CBTz(XLVROUz}Mi!iwBtmn)wl!ABi^) z#&gpjUC0c>f96(|gjPyfmh)`TB(f}S!)X+ALechr{QNlD0W;ZcoC@^&hB;8}z)djY z1v#asJh!F^ubu0@Th%q9VPrgj*WpLjrVzC5VEDIf^%6FH8-j>{GeBk+sDgXQr?Xb* z35vHdiUQO@h1Ser$n^XqoDS#8fX4*n)5<49*hP6w!%x3Y%lUPw28LNWSM{Vh`lHMM zA(WU8vbkVmoBpFn&=OxP-{H>31GAYQp^HKdH^98-DN2!Dg7Pq4CViEWdZZpjBE;^DT| ztx2tVbT6w(Y$?%4vKgUc`66P3A6pZpr-zuhoW&N1BP4v|aTqDQr7xd(YNJX!s_e!m@Z<8Hk~Pg{YQ<*Mjt&*5bdUwLf_DJRgNpJkr>xxIDG=nu9Z>|*fKCEeV? zP4S=n0YOaL^1eJ^Q6RVcoUFH*_x%(jgovZ=4%1Am{~Rn!%(btsNn?!zTPOTn;(WM* zNQg#hCfeK{5{alrV>xHk^{LNBT&2U#<&7Tydcj848o>Fw18g}0A0~nj*Vi&8$W;`| z7-&5@Q4v7=fVH4mSF~2&K$&q|6E2>u9kW}YhKFikV(!kz$l+i&Ky9Jr}@Ox$^&c;6Q1VA$b85@g(n0{j#f^d+5*BY9*IhTU$F2sq@x@&Nt zj_I@-??=|CYb4`f#X0bFrReva6Bv}u^xWhEnjidpU{jfsH&uv?f(&@0<~{E7UrJBi z=4b^W1=GasTu_~?m2?O;q=qh1Mu!XUO{ik(rjd(_ZVnu$4+>tsl8*St35l!{H)Vc>_MPSHx3P>xxB z^Py8tJ+Md@{PX4wGY_+ENy@tbJ9yG{>dp&kE?vJFK{lbnE>yd6n{Y%0u3nt$zXyV{ zpqZLDXfyI)nz?lNlz5Q+zMarsZN&&9evO4Fi#hlkWO4S_*>*#*vymXB5>tqYxbPDK z+QAZcM>Q+NWvh(!9Y#}h8E>4XPfV1A*UuE9l^u@=O1{Ocm`jX1a6v(D@83l1TBLt~ zu%$Y%+?sG5xdR;+`m_#702$=RRwrWw9M`jmo&@M5FtsSJP*rCLb!c|a;-E}WBDD`g zxq?xL!7a)S%cY@2%}~ zUl5;YfmwMm@=#HrHIw2rg!E%3G9rv{+c)Bc2@@}iC{2Yv6ug2Oi|4#!2@0H~r>k|A z-e+1S5UBR(Y^%D~ZXH8wyB*+`A<`i;_ydGl1h>@7DeATntQU|Fb`mSPL{|a4D=Vrj zVj4?D5?B*8_<*5+QQ8Fn5pI&&nRjxTe2j>Dsa;umBsT#?3%0N+j*Um611|M%?B~$A zU}k3mqQ%sH3N{Hn4AD3&AdHwyu7i|=KDObFt*g7v)-(D@+Dsrxf`pzWg;Y6bvR_0vl|73jeS#HgE3JKj`K;^a` ztv&2OMRDq5s7fczjhWe5Hf-=9Fb;?Bm9g>I^@D8RvDiuxzjH9gj{BHw{Uu+{S`K}H z`4NzaEwFlqXh5=lhL+?SHx-}bSBvO5^J_U%PFl8FNW}#IhIL?dzk#A{yLX0B%j&RF z)yvz7T7CD}cepssb>a>jL4Bet&Io={fAP*OzeBu?T~weEzyTyiF@paYe^{g*9YV zl@Byr0#T54jd#+P>mBbA2}tSSYxWRt8ao^>lj=S4S6SuqI)&l6wzzcNvheN<|9%)>g@$9LqKTAAs_Y9@SXUL%fwGauGzk8>ZsF*18DG_?n)m*Dr*gIlU7B_ zm~RmUI>-aoVgr)np(2Rs*2oacCX8VX+cmuL1&KkDmTxDnm> zH9h`_!8jN@0RWswH6ZT?%62ZcaXZZf@-r?nyHFxL(G5wBX&y-he@~yq726=$(Ff{v z=8+8TQRYO-{7`W(%T%N4pYhxW02H^x)fh$-E>aQRD6qgV0@R`I ziY29=iAl(^$lcY)2WOk~EOJ&)q&$~*Z|x!psW&0YE9AwOrsaTmJ8fVjzYi+OqwB3u zdqa?6jYG}dB=nVHqekVk6Cihp*9d@UU-h=;&hBJyUvj_gqLI2 zUgCu9zX|B}CAPAv93hiHO)-XJH=&?jV>_Fu)=b7xg(Ly<%>3>$mUBroo<;3vVBi>Y zkL(xzNIj5bjurFO3(O@#a9S^#ZW+WkAhmM8iwPc;v*$o6^!i{vv2{E;k`}0zO921? zN853!b!nYVqv=LvY_M@KS=mpkUDg7Pl;T*|Fk|GNlT=#Z(d-l6!Z7_I3(Vg8V?-Ot zl>VS>SV&AJ{+zAe#+UBGPxp%6afgKEds}tmuK3Nur|UCc#8-`ZMEwOM6aU(_wi_GnMWXS&OcOh-9~jcv=X@_axCX?%sTxl~rZ2z!EnAKleUE(%uTD@LZi_1RySB~TjbGja zo&5b3RL`#wGoOiC6tC1Bj;|+C)7DZS@8uT$iY+w`@9G5nG<4$1HC+QQ6T0ireaijd_jW3mX3P8(0uOU| zImTMOiqq2KBwSWUf(kq>^{ERPxypP2ifi`Gkdwa+cZuU6XC5ei(#&v^1}7;j!SlV( zAKGv;Tb3~M-s1G1k4p4z>a)KwRJ!_}@W{~$j;Mh@GSYKcQ*!?TAkc}WQ37T}JdVt7 z?7*SIZn@1vfbWvHFX^pALYp+OH_1JN=XTP!gRaJDGml>8pWv|6m-B3qywX7?l_s9k z1F185szEm%4ieSAo7G(cNBw5QTs1@{b5n7O6ZiRnTaP{g|7R;cy!P>mXQ`fD)JZ4; z%&p0<75=xy;f(GmNRuwpr;e-Jz;oB5Nlf+6JRvu4lL|ZvDEBMp{ombQ0~&8nU+bYN z6n_%elNN<%>SP6+QZIXpzSt784lIt0e4xy!rd*J9$^2ap1cRReDNgxeS=MbH%@syGx(*r# z&f5O2L!$8)4#Dw5a=L3wsd^vSUxw{%H2Jd;N-~zNyWZmx2z-dA zrJt+!hi0oLSVC-vmHm!3wNQVe%=lCkn~N^id8Hf$A*aj-EMwc}ab4(WHTF0Jxne`d ziK<2qo~tEAL=~sT`;TwkylWwlpZJlE$&$8Ej}Hpqv<`^Yl>I%UA2FLSii^KBSaqLd z>uI4b10WVL_(h-&*6~8$8+A(9&lX!SbV&C7R0gQF@t*XrLO&z}u?V>!`vN0OoT<8! zmJvxKQ}%)DCB;1Qyr)_?oD6r%Cq*ja=ex_}LSd>8-mVk4aJBm2EQhtEo0?;0WB*K5 zsWI8OCqSSiO0`uPS&ce|Nz>UwwD+$dNhE=>(9>Miqf;PaFLnI@NG*;2qX8~4y=E<- z_r8T(Ws}ysVpF&BA}1L&1)WI_SVESRc^1lH-sIMU{gm=q%>)^VUW$^B(B{UEI*)Ve z-;pA=RvhPZ*2ESWj!MW*+!F-7kpqnF+F=d2-i`+z?sq2}>!kJEpAPCVO$<}2z4H^n z007L9alrr;L^#;Gg3k8uu){!Q1hdp&#J#TKLJwY^)jJG%dnqS(R}llQ`x5eOmH9X$ zgQJW5j&mWWD+$~B_4Ru58d)=t(M~%w)O6Dpj!_MP86ZmsgV!!Pp`?JNRp)s)RSbWC zL9cPB+dG!gw^K=jAv%mtNiU zmeojsi2I$QwP~ijrtbDSsmze(gauOc!8MZ#zA!d)&6t})t2OmVQN+UOsW9s?aFj@d zj_scSL}zTYAlXPXDDzvt?=kxJwhIYRnvZ*+F^FDPt;&Uz4Df)K?1~TfeRBQ zGzx)UvrAw!be2{XsnZJ?7R}Fe-rJAPoE=h{b^uUO?i_LqHr}wmt4jmWPOx0m15M)+ zj!lAvMeW_flE$h*$3$UGFz-`5K>OXW4B3*rj83+6i7GSCA1a1#qYQ!S{aUw%He+bd zhK^y5>tvs7A)Zud`?~V@F*H{XJd*xe+RW69i4VyceSamtTd zX4!XX#8%;~L1RG^2rN;!QaO+iy(&d*)FY#LppU%ktD1amSc2KK9r#Kwz^IBzraVPL zZTrl8Dq=IhL$>N6F_OYqPtTK#2&cv0k8z;X_iDG-W2XQ$ei)>ihFTOtYThD}8mk3D z%3BUl9+R7>47a4Q*A#OF1Q+3?5hvkzo75;8+Kz&4Z|(dc-1{_zEVV_H-7b-EBG(?j zvD%@vxb|Y2KpV<<@gJgYp*Gjm7x?lA4kP8phjd(!tyVVIT0LC|iQ1q*T1^wIsQW1i z!1^N7*cLG41ejDp!-yGex=@{&iHiK^Qa~7r&&|>5Zks1p_7I{*IPXX?%$S#22)4WY zB#{~S><&AZ8W)WC{t!dPYDpH%b)V7Ga-{{UGb*S}3UMb1v1RO&Xx+UF{?Z0AAfS+pgK=kK{K$ z|0Qr^O(>+Y@;X{Tt@(W0OAaelF_UblyiztH8}W7%CxhmvfMw%zCBQ0Ln0s_8ks&&7 z06M!Ykg(%UEQ9prh;qy4z1d;*_+ses;Fer?Oc}?=%S&`ts|z{v3ONOX{u^P$?xuQ? zS#*kVqyH8t?>VjL{y0c_V$Fzs$YhVek|8szW_cH_Bg;^!5CCYLCVlQ(0G zyR|&XCr0#-mVo_Bw~Qkgs^$42V`wW$Z-q(y9VpyPMWr$DuK}YheR>VKjQ)P$uGBb2 zjt*TfDT<30>4NaXZeqWnVp@(r+pTCa@dpFos#xV>(uSAmPf*nPH2o_m9+h$yNJPL1 zw9wQF0V*^Uwqm|aJ(*WBi|uxN(xwIktO!rxZ3B(fPaFD?tyKMIRr_S2AJd|lz%uB& zBBUx4$z!&fdfMm)2%3^21{1B~x6eR&RviEu;l}J!oe;|n)AX(QZ%?_}yTf5JsS_vy zN8Jx@4WJ78D$FLBumW@Y8ZVbD6ZJA1my?J9F!EHE0rmQ7RS8tCTu7eQGEtG}8K>FH zd_-7}zL6CeKdc~owt$#x9$byCe}J0Avy)wLOg33%`Jv`<2haV&_R)F$rPkDmK^nJn zjmG4EJf3$>GhV3?SI6?Ulj?@|!;C1ZSu%oZ`&LAik+rkBNEW>|u1`3kmt{LIyG$*? ztiucmZ$a=jVXzipJa5m-S&Ng&Y`=bTvF;?(*cdZ~`;S$Q1`Gp__wXNvB{aaHHSz#X zO51V2QyAzloK9+qZ7TGIDXVO3WALW@jRAkilMSi3wW(^+8lO}q5KOtz_5@h-S1>i* zd3+kF2Bu@@Cbj6Wp0Sh^bMV#T)^v_gRJ;10>f37?(oR4lzv7Y@`a@7F5|DoTMnNOO z8lg>alKXtH&-G^1%fW=#p6k$L`WF&SiM#{K@p&LZvaM7%kF#8!wJ`xeMZ|4(VpYpE zP2x{rLw57~dpAp=R4;vx;Dmr@xq%8I$y-7e$alTztZUZl{|4&uFS6S*^bOvLCwPsA zLGLT9F5@uLb}78$mw)_0pILoAbj^PykiwNDFIu5ASw^k{Z2A!S%eXZE@V@ABz~>YN zuzPPDK&mA3xbY%kBkQCfBu}?b9w7$zJ?)Qm2L2GbjSesB1NQuQj^C;#|STCV8nAxl2Pt<=q?_C!AVhNwQJPge=h74 z@RHqu@$4788RY-O7-c7lYdpV*xbqMQL$%sVQ+&z}zPA2}$SVu8uyC;eiVRLCb7%>3 zXJh2cUAQ^2(AzQPE{wtM`tWu~DHxa_SXv0=3&23rYjKqeR>8=iQ@~oIgB>ypZVY+N zbBV?9`5m)LWllXhVw?flevkh~D0-z600Mw$jXnN@jX9Bg%2%L7a7dBxx02fTj|9Y$ z8r;#$yF5GO-mp}p+Uc|pQuyJYcr|Qj{$sX$x<8H@Q0(>Ta8%?54(wE8%k(X+NS?M5MCpKUE z87geqpyqB{MLJfR!O_AlCKFj8Z$?vv-%yo{;imt%*}8})Ms63zDFt$f3r|cw8iwk! zIS4i0P-w!ugw~OWG6?k3g20FctlB|c*_AFha$gji0r<$ODv_RC812cY8Y_j;d*w@G zWjhS+-ZKoOEv8?TRk?!aq=2$Mp@{|7>AEDY#9Z02>fz#u=_PL-*R$AZEtfj@-L;0& z35MsrV-Zb}WGoEAUt`5T4;Jp=dgK95KAunCfnCicoU6|Ok2S_9uF3s_6k{r8j`)!Z z)Jq!UZkP|gd??RhsfX8_9tl32Lg@GZS4bsuZJT$~F z@I{h|0?iy}uXLRuxhB0ClgpgJON(c=o^UgPpG!s^7>wX;^!m?O)qdLQIDpCFh9K9e zcVn-sy?&WPQ9B7MA4eID>RKnz)T-)!s<~Pi?i=7^Lp@Gfmw34&$=X~tDOCJOH;a%Y zmv~U*BAhX40ua^ z0A!Ij<+0g-0hYGl9SLt!5<*J4l;Qm2G{^?x@k%Kz)(HS&pKSzBdB}kq>zARmhGuGYf~F&&fVy;g!>>6 zZ0+Xx^sj#n{e;D*3&upuwSZkDRh7gIm^t8N{wzMo9{J&lrGD~jc=+_>f<*KgW44WM z`#g>~_hemgMsFYw{8&!cd}6SBsA;NZuUup*wjVbnker;opA&&VUr?Vn~4-ubv{w>WT7S?FYa z_%r7fQG6pvN_nm_W5hK7^kRwpx1~J|E9R?xKqx|Zs&-ZeS2{K1 z10j@+8F}<>_6i69ue-!nT2NVYud&W^AuYpY8+r)Jk1r>;Np4X*zp=Ye)^~ z0aqY2ZG%P(FDfS%>8Rczejqw*LkgM1p-Q$-qOd}HTGC-l^-erDYa%fAg&+3F9b)V4 zehEX}T?#Fu>?-jZO}Jh_;DcLH)1-zUzL-E4VAG*=Fl2i-c6|4J;#Knevf{m{nfDap zrdeDc9tA5ULhX8whO57G)o#mL)syq%yZ^KxC>}TUis>7Ai^1)}D}%taY}rTF;sno< z3>mXhjbqq;jVF3o?YuH5sI23Rf$qV-1qDOj-zm^a~J4kNGrsdm2_ zw36Ai+Ur%s<-Y<6_&sZ|>(ZkYY{aMD!ngXMvcMy;+z;l}9W78ctAXjsUqqTu?mDNuxB*Uc zf;{1qsEo74B`FxxQKfENE5VBLA|!S|5j%;@afLwQwRsR=34UjHYQ zHfzbRcmmTSKVRR%v!K@VbG&+I-L%1#UwtvlUv`RV2F8%wjFchP5N9Rrs;J@Y!^{BX zzAubpA& znFs@7kCSmc+naZb@`{GRlEb>V6_}xl{dM2>&aM4LV^ZK6wc+|URd>^K1oXinqhDLT$<{cdreZXEy3QI{C9ie9m_UttSSTkV-YI{%M zOv4kI0*T4Si~77=-X<@bZbP2m4-Zmk9{L4dM^N?sJ_|aP)qE?<46)UW_;o#MDevN#(97Sneexz^qL+g@9LRNv|xMFCtcT^_4*JV3Mh zXJFcGvwEYL6M;}?_Wh(pfVL)b1i}XAhXW1@dbjRTtnpo)E`XT;Nailb64*@ zuJPB5PVd|)EXdUVs{uCBFn;7{J0hK9a!~;J?a{X{fKPxrpPjebgr>g4mTpenW%Lr- zw^1UPKWk?F=qhOVv{ABoAPGCEL&wJIrjh|koa*Z7XnY{}vqhYocgRlsYfIJ=*`K|> ze2R@SYOd%;(uzwoj$2z~Lb||pP&IAulwJ3+OVCC^L4)(YuF)AP&mH#- zfY@-MRA3gm1(s5AbF|*rbw?cDz2pEX8zwTouHDUv@agw>aOi+Y-@b|OQCuWx zyRrn10Ea0*cc`l}?c3yUNtcL!$Q$JO>gffCJc#*&{hAy&@)w<7r{>o#W>JY<-W?*cu@2N|bD!cooJjGu^X{Da-?WeHZgG{^(ThxF z=T_ss*~)G0<`2>AqEcc;0*I2#+~fFnQN<|oPRP=yH=WIQp1jhW{(C> z;BBO3!aNK4Ha=!n7;{YEDo_|HZO35B}OU7y0MrEHi*e6hB)_Z9ZWwU5mb$mv9? zJg9qSn~-d&+|=c==f3oaI? zwO0E>lOE|SSm*~sCNrDSKaHRqL$KcXUjs=z^L(#sN zWIZMuPOe)H(z~|p&Df54&@?;|p0gMT4H}<`-D!vZ`11TOTw@A(gZbP`Z$C`1aF*7A zpUJ2)RctAo$S88mEcIEjlWdkA0KWv3I&H8-^dVaoUk3D-1Uu}QU;%2~rE+a5jX zeI|{T(J=->at6Sc<-}!zR84wM-0IAgZ{<-t^?;cQk2qD{q`q3xe_4qrL@uHUBAR>1 zTtNN0Tbx)>hYW~bkmUE9f9V<-rb>5_Oyz$){_$`>3uB!gKo4c> zbfh5^aQu20p$s{B3Epx>yq1u=p_Cr`KbZyjlUcWaQ*_wA7=Z*}YPu)Rry@e$VCrnM zPNnDQ0v}uHi;B(5WyU6Ow5~;!1_+GAjzV3(+Hs)DV(VP_`>!cAxnlW}P$F__jWB}N z+k{q{fm$H!&-z=h>ZPTaSzkd|3W^kIwcct3t4DW3(`RMe^8Gl(_5$^+HAz70w z7MjgRX?3q6L)niO;@^RwFbntJG29(AeKAdujtZfI=~9@l$XVXE;#`Dhw1clu3QFhN z&)(HhDahmvg~}_nGM}A@lsq+tRT8Vq?Y_<>A`B%`>TV?ldf@dVNJtptwwv+W1EbFC zylOTAR_mODQ{TL*G{F%oY9xx7*a4znd7q>{yRJK&4jDnL?^G5bt7!Up?RaN!$sPBs z8y`JK6_Cv*%E{88PF)GZIc`t}<0e9Yr$XfqExSpTZK{xB^J~Au+fS$I8c6PU8wH;f zvd%66X|t8eu|=hJUpJr0yHFc>>W_!HXo$zJDuAfnD@TRF^}a#$*~SK z>ft-=)>RX5N!R$WU45aU@3Qus5KM%zV^-*J(@Vi>(!BWI!b5pqh>a1e{<-w0C|EDD z+DS+0y9z#mVU&T)<5;BSq4%}Zmwim1ZvKZh;yp$Q8VdyD#xzy1SE4p0eK`Na*;GdU^;GYSvVO{<$ z-;}4Z#lSTo=(QDYyc$(G5s-bHrIWPXTnkt92-b78Jzdl%7OPi_*W#!>GN+#)+! z&=|&7k#|6!i>pHCW{?G7jmEO_;wK`w%i0QHdJT>hNeolZ*dzI0nqsGs4nF~`_9qb! z+R_8xD{yoRN=USh& ziwdhVpN|{S$TJLfoLbSjdO4!EbujgVdbhuews@Dc67Tl0N+ z!e)%|w|yCC^H<`6))K=DzmoqMB#;NJ!DRfC*??k4L`~oV39f44NTqxvGF4;2ITDF7QUCRk~KUdq@ zg`DTILOm||MNi)X7Rrjkbjin%`AAk zB{AklBQd+7Hi`KGmM;U2tf-#qQ`(s?CV&h0{KvuzP)=E)S=bz~wK?ED>TG#j3=yoV zk}g0l9)86+m*=a!FpV#mx0;d8Gb?EJ1DHS$@v_=iZi69S3rAk*D_Tz9lvB-e>EbYD2S~YsSOxo5B*9N#Y`BGX`Ivt84sZFv?-bCdq28GhEa^V? zXOz?V@<9fg+QlSCUrE@L;ePfktW%>+))(^A3ZFP;DNFIqoBdIH20a0G;A^Y`_DT&H zZ}(~@DJeP_)|KYVS#8?61e^4?Fxj{GVrxcjU0bFW;8b*s?*9AoF-(qtIBvo3=F-<3 zT(Gl5K;Yez%}0E)`nZUrRYak%vRLu1x(gUq!96<9L%{f^%IyewU5*B;3wPVrr5m@zQLCU!S5|d+ z(wTi;w)f^`HtwWJgZLCcs1nS|ZL106x1cC#*L76Z8|84GNwU%&h@Vs)TXB$x?9#o{ z<+$&!LI8&vyy7f0wylhOgI!so)5Gp*PEk@bN8$bbO_8Jq%lR1~8>0dzFzkyr}8N#Urq#X?)OTS0(c9J%FM zzcC<2(<9$kagdflicxRqOZqXwv{*P|^kF{`#+dpBHAueH^_+}H7-;EfU%SJ(r5UdG@>cRtFIw;Q9&%X>~-t{ z&UxnD44-!pG9#mU#Z!346x5Q6O;1ypxI(N7@iKp{)~|a znu0e|TM2*!4x(|pxRwz?fz2U)=D6j_Q~fuZ8v z(!~LIqO$sTX$8uC;^n8FU`R#TzJ28#GjGvl1o$m4hY-o-6q&+31xY%QcOvcEqWoMk zGexju*aX$YS@sSeY$D7Lt@)XoEZ&S^DfIbKBy}n=(9UVN(g6Pq&X$O zZ&f%Yn3+}TWp)A)nL|T}$#MIZayJ02YjxnLGbSY5{G6N6r{sN5vUA)tH4hGIpC1*E zX&GFaYjAmS#gd-2e4-}kp#=AVK!s0lbLUUe0B|ld8>*BlxGLo!>q4+fB~*yNsNnxJ z8~Drq^vF)}*?zmOD6TSHr0~m;BB_}_!8cBE>~0mRGs{lKDPCIIboZah`Mx6-zNMkG zmQoHQLZ+epCdbiOd(~Sfk53{O=6$AJI^hgi<=li<_Zc~Oj^`4l7b<2G2lExG?YHgb zM{QL?ya(Hov~r%6#qG8PxO89s6}qoBMN7(NcN8;+WR0N#;+%orECmfhMQ|ICC)2Mw z^gV9u+!HfHXG!TS6PQp=*+}L6@iE$`cG@fO+>&X8gH2@zsbu%l$|#%v#aqpiM86WFM}gWv(>ZZS`@WWF*l=wD#**%Zpi#ytWp$JQ9I*_IbWmec(4X6?i* z@B)i43nkI_d-iTs$*%FFG*j-VI+ZH4+VLh))p&R$r3a=Ih)yAYR0nH!CVEN>Vfrhqdg^h5OngcHVL}fUnLaPdc)4N&i7$N1yfB z=Eb>G;p&8i$KT3B&q6k>%>WT}6ZEE>vJ4Iq8Y{pIKkQRlvK-DszF6w@;i_GshG|wk zk~){}Ac=*qR@`&z$#rWe+JZ(3?*l zog(VY+0R^_b@{^e3Vfhs3e*&T){o=m(kA;L_68`4QcdG~f=!MS!H)TsS; zIgWCX8~GExniU6rLARRxx7H^tz|ElWJt2g2LqrlfLcImo4!D^bfzr)tCUvL$^q}qF zI4mZ>=HYXd`~EKo&^BP(B3;*2TXWX#5dN?$xeKTwa>5ejI0LmO0t!En%^K?CIZLxI zVhH{V^{>!Rqo>k`fPM^zE>_`UINme5YKfIhk;?3^8!Y{t7C)9_C<6^lYhe=asYgDp zIxkVf{&p7k;UC_ZjS;EIN3rgdl8aX8{#VN+fGBek%KvZ7yEI{_+eR!QMs0~ zR-+7cI}1=%w3GV8f~$lBx{vcST6MPz-$n!BmGRt=2`uZ#(svRYuE2T(4?U=tN5@tt zsB6ZPt`t_x${LPgzqKRkK&pnQt{ll51k%eiKwvE9m8piqfqb0z_Be9!;ypeEO8$F& zBNdCenz9-WdPR5gAHm6kI25c#QJ$g(|CIG0`<%NxNL`mr(ScZ1a1n+J%a^;4>rpZq zCOS3nH1Lgk#Q522VWcc+HW0CBBV^)2~)A4Psw|J0gy!r-{tgXpr7S6+>VeNk42JS- ztSq`8H6rVuUI6CuNMN8XN2^0sxEY5>AL$@Ou*6e~zqlhNJp!TPIdfAM0SW|fQzTQp zW~>?Ak7DzD3Qd-$t;UI#iaBj<$8+!ye+XeCgpXyzhg!2B&M~phLPrdl}nLSD>71_&BMR7onsB|KaU!P zpH&Jntx(90&gzr%llimht1K}H^(EFiRRxt?v33J!7ue`@beO68XClgSNqU`QcVY9Q z<;EtHnDmc3d)@r3tcFd-Q#vUv?Uo+@Z<=XGi9a@^JXQHuKngAION8kL3pKw#!;#BF z04yXwe6~JgaLDZ^r%c=(gT!ON5$-YuDnYUTCe@9E)>4LEA?6eT+(xB3{LdYv9e80l zE?)y0LR}%lb4$U=62op@=3=M2iQEJF>{S?)PXq^0=p8YT9?&;ZZhbp=kdjkG_Z8^p z0U}rOhx*BP&OA63^1F8UrdM!N@snXK)aDZ;pTRqJN99+(QsqgVN?_TNyY_ zAubs0`bI+3nc`XW4npS@)A`>D6Z37q<{rLV?C*7YZ#*aQyicoC_>#r)B zsQ!QiQ(}`d-7o!z)APZD{>Q_Z72|6=I99bHtd(f0#1IgjhjZ_6hioiYBKX%**5D7b+nV1x+PI9;D4(L|7Al|7B)?G_#WvEtS zDp*bGeU3H20U~>x^n$zHnC>svd?y(B>1jPgk+TQm@sU4~b(wlb7Qu2pK|L#~Y3E5@ z*uuZ)K4JTR;wD@8FNJD`CF+-%r?qW!+8K|1A3jwz54>`+9ScEuBX~ijrO;8<#Qs>` ziyrhd@pq#vD4CG;{Iu;~Um#yZ!o*tIc}({TkuQ%od5MM%Jj+L8tSWZAUG}Q&tvThR zEM0@gO*U*U0M&XrkMawWv9f3g{c(cyZTe3HqIrQ2Hf995KQI6Q000000u-tWj)tC7 z;`*%p2_}fa_X`Lc$SNj*Bv52RGU8cOr##~7B#l&%Jc3XT02e?^000000lEMH3V473 z0000000000000001AfDQC@SynwJwwQ&3UT>qhFME)=)6hg2 z5kR+1P7bLLm<5iWLF(sZzyM{)>LtL7!QZ2Wr5R<)wjbq!3}RLE$-wkGkf$wcDqQ8o z%4(mwUa}lxEB?WbL5*lGVH6==7M&(*0j(;P)vkjlXKg2cl^&HscmPLIXE@6?Mtp$4 zo!3B?;1O5E(6QDaZ7a&(WHF#+KG=0_E@Km1?BWCH92}{MOj{y$tj~z$O@_SX)N<5+ z{?#fqToStk#_ZfwCE7q3Y1rdKAD}nQemqZ1%1+qw%YO3>8N1)-fgW<#+NJQF7isaY z_08J zPvQMuQFRRMTlD)yKFI`sd&frzp==q=o$p?Z8uWbPc_wlLPMN7_ zgFNS6*8F|K(~BK+=fg#X@7|%C;%4`Lm zw}GA`G{W3FQC0WZYvt5F{=;3x$eUs5a{Q3;lNCPJgvSbq14nF11dN#Gax*V1X2{P< z?)0>VCZSXR9WR-TW$Ze#+X-K@0}(ymZBTpH*-Sgn+c8Uuqx;YLp~@asj{b4L8FTEQ z<`isNA{iw)#SJPlZw!RfX!`w-)W(KeZNmiG5KW=Ukk574DLxa-e#Xl|Rs^sJ%kG<7 zHSTo}%zlMRQDs7e?|<&u*2G|I_Z$?B1=U*Nk{~j^ZK|*EU;$NXVLTh=@p=5?IQM7V z&@=r95B~Yg+T^ULnbEA|W1>;g^(?4!w7R*i)1=vZJ;SdF*%`V5b_J?&cHWPU18cG* zA?DW4>48ZOGUjf`Oh~T!AQmkI#gl@9>-4eOj3mu->~RhNiGTY}H%W~*)ssOk3%HxQ zQIMBeEU3ME`xy1qEvDXnMd_qT+geCy*F{8J{@mVgw>5DLL9ZqZoO5>_0L$n8p6-2t zsqs=;zTxhxGJ#7Y{;#J3xWfK-kH11HpU@H;ESn36GHRK|bNA=RS#KbMt_b|rg!xh7~NCDhD)AOKL z^*AYCNPE(Nr2dR8J0HmrZMrW%DeOM6bb@f|AfJiiqo(d{+y2Wx7vS&1>U)U9LFWz_ zn;omEY}ePr>mma6JYXd&<}(ecRpsR>%i?o(o=T7~b3XDP%(0>i+>HS~;syKw;C&sG zM}3NsuYF_RnO&R@xuqozBI9eQ!hcgO(uLLH;7lSuq=1yWLE_CbWjSwcHVy7pzVbol zh^4vg_zX<9I!W0-LG2{{P6jA&94wW*r3v0~i&HzFWo$nlli&^y&1p^3Hs;Tl z;m5m)EJ{BOqeGYZE`w-)tY#^(t`XO_;=JDJW8kNGo3>Fd?V3RW>W&-? z%Csg0n4+VlU-{Ad;v4}}0@xyQ0RRWo3L_fHeinEp7frs#Vb$XvKYi-Ha$8Cz$7`AJ zb9mtHGr+>UN|d+?X&xEyzg+l12<{C!}ude{uB8T5h zY#1f!Uj_6{)kNG-SW#n0;sv)g@B`N$IG&KZ&pno+iyzNHi{X0BC^w1=ql#3Y?TcV( z;FY3IrAg+}Txq8&0}Z`@riStxg?{DeMGR%v<}!1V5-YcmI2Jv|mx3T+lLG}&^~mjV zR=G13#w{n%QcfldGxcH$CttMpcRO~K0ahB>cL*1hIGhzUV5(z5Kv2m88C944WdqA&mi-Q%gL91l*qPi)MB{zJA$tET*RCUh8Oi;ba+%nt_0 zbahj+*&X>=9y96s=4uWlp)SO>N)gBfJLUa;Lt7S2b+_-F2aXKq2cI26JaVThC)o$q+fGY&DDJSo!POt zZ{5F<8`pURR{!6a`hNh8+t0~^Y?U5uhSvxV*ulpj6>RxONR5=@aYyhTHu~;|O+X1~ zI4`$qVlw%)8cyY%l_1XHS0J5r2_eVUSDAZhc;*y7ap_dl$zCpV)>GbZCjHZ01Yk)a zjPb5arC`W?f2ycoNmIK(026s1VCW?>aAIl+e>A0m76zah2=T<3 zAPVVo^Wh}lrT*Tt0V12Eu_G2v?9FO%gZ3*ZHre?W# zwGK8h2O*g@FF5g-(B<{;>dd@y(^f{81?W!7E2V-ecWn!2JYVu#3T&bS1(p z#h^o~GD!jGY?i_{W)4~4lndxzmDOLTEr``M4GH<=E7|m(LU}%ZdRtbVA)wn;ckqVo zrkLJ(y|2A-EVl1> zX>iQHoZs*iX`^+Djs9?KhM(9%FkLIApkcYo-iBFeY~)FqeH!Tk^dHpMf2M! zm5S1B$a(c9Afa=h%D=t)c!eRcrvb^Ta*^^^Y6(2uxU(Uz5;#TC@)JK9^wqFdN`B!iT+U@58-`B_tG?l}R!QwSqP2Yg(dm`3Us-TFQ-SDe-qD4uQqOupK^_ zmTX$Vnn%vmsVeV4pr3$QKJVUA-w#B9ME@TC(@3pm;m^6Qe>96~lxg*MiM}gA?X%h_ zd4WdXcq%WAA*zBt2rS=988xJ;IIv_u@Sg< z=g~e49bUGFk-X;gJdh=ix_+_vH=NW-?#j>5a+d_zf>8KL0h;G6@{|iKDeS$>UmSbw=rFu zJuTFyuz-{7uG9SDb1La7lU=Yioid zqK#(n^_ORBZ zQ9PCdQ{m@3sic|)#`>8)C}k)7YtPRmtaw0Aqc&u)%xMbJ-bKN#ye7=hqm0>>6_QKn zR++&H=6OgN<^v5twQWezUhIh+co@|V zO-G9L0ssY;;Lw|fvz^g2<=yLsb15QuH5^i$h0za6o1&+D356$M+m5Jg10+<@?%AaF z_MWhp4cw5p0!_!F%(YsO^Ov_dn@U?Ik9)bb2s(ZfL7rf$1^1wLlsI^Se%AI_L>nX` zSpL#sk`ZZ^#la=ydAfW)Rx6k+Z;P4yUqKG04xxEQ*!~e0Qp~_AL(^nq-pt6aO%R^X zjwToJo9Pwd-r=YSa=Vrf6#30|WHq-wV$`CsP!#yz{3-3!_)HhQ#;JiA<5+?hl+Rg> z29ziz;{N~|?2Fm{470i*uB(?$=bn|{8MX%1XnCuRvt+{XaYQ>yT*vobFQ$}q1uT`> z>KV!om?eU?lj~GoVR1ua@hAHgau*}V(>rhQ-U(mz7$PdZo?oucVFVPb^UqZ2ppE?< zcO3|UzOAWh0yv9t!~SQR8mIY7>XowJn|$VO8fjf79lq^uv$#IGqA}Rqp36dCLmFmZ zqvS#)xJ^2nl4{OA!P{Pfjn8QJCI~J>H;Ca{LbZEgn|RK@uk)Xe(yMO=u8D$Os-r?F zH$FX8X+Xr$6)jdPl$>?-S@kg$Yi1VEdS94D-!O;{)mOWW7zTtXwZ>ROTvC2C9ITuq z5#ub&jIYQV5CJl-xqc2)$R&@Zu$Dd6E9k9e3i6S*!>Uw5@b~aqkQ6f84a%7bG9Nm3 zowS%P#5$+CZDbltEe;IG$)wA05i~u|!HriRoJ$WU?jmrt*5y0qJ-CJi1>p>7ZGmi4FhhR*=EicP`mwO+CfK+3oRN!U(~yJ zfmIND_Ghm_+O*gp?zqXSXObIR*ZwK%021p>jQbnu32oQC>o-_KMtOD~`PJaMwg$(i zEnF_B+K)qlG6oQ|N>1hn!nSP^u`^5i6$qx5#cPNaoG}`MWSh^RDg!esY`=#B&BtFU zHoOc982gA-Rj%A#V+=Ce>aWj_f~x7J={S=NCO_0fub*feF-2b%Z778n@pb@L z0Hi_xwA`7P84;DWt()uT2)+(YnUz%C^IIrxElL+6fe3Pu zU^&B!SNn>ovkZi$qnO5UIRV6Ygo#rD?-Nj&6x+*rX`!GxjRX7;l$d~GIx*Ify~zdX zJ`Kt|Pon>waa4XPgoswP4*W_mwxI2Rn2ej71B=-B!NKM!6~6$duir&xuRUMYq$u0q zXK3dW4$xp;W4CFVfBj>Rsd}KiXD*Ux%HF97(Z) z*53uNS3dAaZ*aHdF~<^S<4DWoi8^v%&@S>8M!@^NOweN_7FbECWj!w7R079{nK{3I z98J_#yD~ft-lA!so6l=KjB1|p>-~flu%c&vh2=>`a!H&}lWh6+irtuJ`TPI@*lV7{_Ls4#;u< zR_#~1{B`T(9?|TYnMU zI*BnRozOV+;LY>o%!+5i=N+zQu}`DQG_G2+MN$s?R*Ao3udaf458S}rAIFtY=96yc z!U23g#ek@JCJDJb!IOyuh`H*3>HA}xEe&}p%}NLna6gw)pE#%&_;6z8*4R~wF5|Te znFq(vWJvEm-E=BK8hP%47iO4Tn@Crk8sJs3mv$ejH@B#Hf>sF(>)7@{Vml=dQY*=Z z3+{TR45=F4!7p>x}-C&#Q z$k$H;NIv4RfkQmi`w2k64sF{Hog%U3RTn9mEkkP|cHWTxO#DvvK#Vr@98@oTtIb2M*A)s!25YN+r6KZ2(d_E?LVQhKR}Q= z?TH#$YVI`Dn;}2SqDkUM&-KwdAk;!qGK5dZaH==ogTuY?XGsW^8mjlIo7V~;^YMBM@B4>8nAJfzx3g{33zbZvG(v;0KL4gi)3@m`f zFp74R0cmWt!n?r2ltwmDR0v|@3@I~Y5BB4e(gmJKQeP2tfE~kGC^b{V-A7~5Fq&P+ z>#+w8spOWISVhRb;%^kHH;SRCwMnz?s}U^fV^7B`g!OOUex^d8GdJTV2++m= zX-X!7I!-ul4ia^JGY;&>cx+(>gNI>}cV*K*FS)~3N^r-_xc#KoVcPn<5WxwnOA07JGFSkZ zB|`dVxWoCNkdm1aN300&dv6T`r0@o)v9HBhQ*F3bMrG8i*VU#n<{a@G*uiS~*`d`h z=}Dm;A?MV}k`tn36_z}|&(Qx%QtqsEElSBv1vn@h&w%Y|A!vR@lEe3iyse>ELToRm zUrMsVdJpR`amN%GpQ#dT^EE2yw6AsjQZwdxV>aP!o>x1G4Z# zpk#-(d$OJ+U)&jb<&?()Bs~HnjHKax*$C?m3RU4;4g#tyAILexdl9thU>4c*c2XOl zBT5LY?tpG;fC%`LoE}R8@EiceEx5z(E$>wed>8m7Gapl5e_ihfrkrb{zgF;=FRGVn zV#HA7S`0knxs{IQlH(yuf03(gLd|`bZvy zsslOLSDer+kFf9q1lt&n?nW;-O%BJqeE)Ho zebf!7=sP8}N{0IwMk6#|fdHUohIIMzGSY+_WprELj)(-{ZY&0VfVYLY7UQ4>rlbrm zd=F+*t~b6c!R8Zzs+YY*kBQ)vh?wi8=tA+vW&alVeoC()4Il!9+Z%ho#B{yY>@w)3 zne+I7f>N5L3jv`eU?V#B`R!YRoEhhdvSV<0)2;pYZcJyu zi)un0OwF&9uO8>SsIW-T75z1MoPVYLAyDWI1Tm=NYtIen9Dk82_a_4RT<#!nXW3{E zvFK@()y_5dkytmBZ8{kuM`!NUWWsZpZ#LTQVy{)1 z2$^y=>6A5#By~BtADb<19Uk<(6%7#sy}LA9AUO_jkGeA!tDpb?WERx|B_&cfGSq;< zGhm$=TPl4cGOic2G`Yh23W`|gfHz&vO*-+t3J9TiO5HBK(l%?Y{DQ5WtV^ig7;!z9 zn(IC_|AA03<`2~zmlg8!Zz&# From c7e79d325b5cfaa49e17f06394b9be09589e0367 Mon Sep 17 00:00:00 2001 From: codefactor-io Date: Tue, 21 Nov 2023 22:02:46 +0000 Subject: [PATCH 51/75] [CodeFactor] Apply fixes --- webapp/src/language/ko/index.js | 1 - webapp/src/language/zh/index.js | 1 - 2 files changed, 2 deletions(-) diff --git a/webapp/src/language/ko/index.js b/webapp/src/language/ko/index.js index bdbc58a77..1020eb079 100644 --- a/webapp/src/language/ko/index.js +++ b/webapp/src/language/ko/index.js @@ -27,4 +27,3 @@ export default { 'ko.wax-testnet': koWaxTestnet, 'ko.ultra-testnet': koUltraTestnet, } - diff --git a/webapp/src/language/zh/index.js b/webapp/src/language/zh/index.js index 997466c38..9f6d52243 100644 --- a/webapp/src/language/zh/index.js +++ b/webapp/src/language/zh/index.js @@ -27,4 +27,3 @@ export default { 'zh.wax-testnet': zhWaxTestnet, 'zh.ultra-testnet': zhUltraTestnet, } - From ae8a8f873844ccb64c380894f979bb51fb59f1a6 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Wed, 22 Nov 2023 14:48:07 -0600 Subject: [PATCH 52/75] feat(webapp): add libre api, dashboard and explorer node types --- webapp/src/config/eos.config.js | 20 ++++++++++++++++++++ webapp/src/routes/BPJson/index.js | 7 +++++++ 2 files changed, 27 insertions(+) diff --git a/webapp/src/config/eos.config.js b/webapp/src/config/eos.config.js index 64a6e9221..3f4ed18c8 100644 --- a/webapp/src/config/eos.config.js +++ b/webapp/src/config/eos.config.js @@ -12,6 +12,7 @@ export const networkLabel = process.env.REACT_APP_EOS_API_NETWORK_LABEL export const networkLogo = process.env.REACT_APP_EOS_API_NETWORK_LOGO export const tokenSymbol = process.env.REACT_APP_TOKEN_SYMBOL +let _additionalNodesTypes = null let _nodeTypes = null let _nodeChips = null let _producerTypes = null @@ -48,6 +49,24 @@ switch (networkName) { description: 'Node that provides P2P and/or BNET to the public', }, ] + + if (networkName === 'libre' || networkName === 'libre-testnet') { + const libreNodeTypes = [ + { + name: 'libre-api', + }, + { + name: 'libre-dashboard', + }, + { + name: 'libre-explorer', + }, + ] + + _nodeTypes = _nodeTypes.concat(libreNodeTypes) + _additionalNodesTypes = libreNodeTypes + } + _producerTypes = ['top21', 'paidStandby', 'nonPaidStandby'] _nodeChips = [ ..._nodeTypes, @@ -84,6 +103,7 @@ const blockExplorerLinks = JSON.parse(process.env.REACT_APP_BLOCK_EXPLORER_URL | export const nodeTypes = _nodeTypes export const nodeChips = _nodeChips || _nodeTypes +export const additionalNodesTypes = _additionalNodesTypes export const producerTypes = _producerTypes export const includeDefaultTransaction = process.env .REACT_APP_EOS_INCLUDE_TRANSACTION diff --git a/webapp/src/routes/BPJson/index.js b/webapp/src/routes/BPJson/index.js index ae724f661..61ecea141 100644 --- a/webapp/src/routes/BPJson/index.js +++ b/webapp/src/routes/BPJson/index.js @@ -38,6 +38,13 @@ const BPJson = () => { accountName={ual.activeUser?.accountName || initData.account_name} bpJson={producer?.bpJson || initData} onSubmit={eosConfig.bpJsonOnChainContract ? handleOnSubmit : null} + additionalNodesTypes={eosConfig.additionalNodesTypes.reduce( + (result, type) => ({ + ...result, + [type.name]: ['api_endpoint', 'ssl_endpoint', 'features'], + }), + {}, + )} /> ) From 2e874e1c8498d6a54ce090d8fb5180fac8e21342 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Thu, 23 Nov 2023 10:58:41 -0600 Subject: [PATCH 53/75] feat(webapp): add the language name in the selector --- webapp/src/components/Header/index.js | 4 ++-- webapp/src/components/Header/styles.js | 9 +++++---- webapp/src/config/general.js | 6 ++++++ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/webapp/src/components/Header/index.js b/webapp/src/components/Header/index.js index a9211208b..0bd583af6 100644 --- a/webapp/src/components/Header/index.js +++ b/webapp/src/components/Header/index.js @@ -27,7 +27,7 @@ const useStyles = makeStyles(styles) const languages = generalConfig.languages.map((language) => ({ value: language, - label: language.toUpperCase(), + label: generalConfig.languagesLabels[language] || language.toUpperCase(), })) const HeaderLogo = () => { @@ -71,7 +71,7 @@ const LanguageMenu = () => { onBlur={closeMenu} className={classes.btnLanguage} > - {i18n.language.substring(0, 2).toUpperCase()} + {generalConfig.languagesLabels[i18n.language.substring(0, 2)]}
    ({ }, btnLanguage: { fontWeight: '600 !important', + wordBreak: 'keep-all', [theme.breakpoints.down('sm')]: { minWidth: 'auto !important', - width: '36px', + width: '50px', '& .MuiButton-startIcon': { margin: '0 !important', }, @@ -166,12 +167,12 @@ export default (theme) => ({ }, languageMenu: { '& > div': { - maxWidth: 50, - width: 50, + maxWidth: 80, + width: 80, maxHeight: 1000, opacity: 1, top: 25, - left: 'calc(100% - 65px)', + left: 'calc(100% - 80px)', display: 'flex', flexDirection: 'column', alignItems: 'center', diff --git a/webapp/src/config/general.js b/webapp/src/config/general.js index cb6f445ff..786802b5d 100644 --- a/webapp/src/config/general.js +++ b/webapp/src/config/general.js @@ -33,3 +33,9 @@ export const healthLights = Object.freeze({ export const defaultLanguage = 'en' export const languageResources = resources export const languages = Object.keys(resources) +export const languagesLabels = { + 'es': 'Español', + 'en': 'English', + 'ko': '한국인', + 'zh': '中文', +} From 527349688f812a23c6b811d18e4d4e83460283c0 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Fri, 24 Nov 2023 11:56:44 -0600 Subject: [PATCH 54/75] feat(webapp): show a message when select a language with an incomplete translation --- webapp/src/components/Header/index.js | 5 ++- webapp/src/config/general.js | 1 + webapp/src/context/state.context.js | 24 ++++++++++++++ .../customHooks/useAlertTranslationState.js | 31 +++++++++++++++++++ webapp/src/language/ko/ko.json | 3 +- webapp/src/language/zh/zh.json | 3 +- webapp/src/layouts/Dashboard.js | 6 ++++ 7 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 webapp/src/hooks/customHooks/useAlertTranslationState.js diff --git a/webapp/src/components/Header/index.js b/webapp/src/components/Header/index.js index 0bd583af6..92ef2ea9e 100644 --- a/webapp/src/components/Header/index.js +++ b/webapp/src/components/Header/index.js @@ -17,6 +17,7 @@ import { useTranslation } from 'react-i18next' import LocaleLink from 'components/LocaleLink' import ToggleColorMode from 'components/ToggleColorMode' import { generalConfig } from '../../config' +import useAlertTranslationState from '../../hooks/customHooks/useAlertTranslationState' import AntelopeLogoSvg from './AntelopeLogo' import styles from './styles' @@ -49,6 +50,7 @@ const LanguageMenu = () => { const [anchorMenu, setAnchorMenu] = useState(null) const { i18n } = useTranslation('translations') const location = useLocation() + const [,{ showAlertMessage }] = useAlertTranslationState() const toggleMenu = (event) => { setAnchorMenu(event.currentTarget) @@ -57,8 +59,9 @@ const LanguageMenu = () => { const closeMenu = (language) => { setAnchorMenu(null) - if (typeof language === 'string') { + if (typeof language === 'string' && language !== i18n.language) { i18n.changeLanguage(language) + showAlertMessage(language, true) } } diff --git a/webapp/src/config/general.js b/webapp/src/config/general.js index 786802b5d..95cb700f7 100644 --- a/webapp/src/config/general.js +++ b/webapp/src/config/general.js @@ -33,6 +33,7 @@ export const healthLights = Object.freeze({ export const defaultLanguage = 'en' export const languageResources = resources export const languages = Object.keys(resources) +export const languagesInProgress = ['ko','zh'] export const languagesLabels = { 'es': 'Español', 'en': 'English', diff --git a/webapp/src/context/state.context.js b/webapp/src/context/state.context.js index 226e4268f..6895dfc8b 100644 --- a/webapp/src/context/state.context.js +++ b/webapp/src/context/state.context.js @@ -99,6 +99,19 @@ const sharedStateReducer = (state, action) => { } } + case 'updateTranslationAlertsState': { + return { + ...state, + translationinProgress: { + ...state.translationinProgress, + isAlertShown: { + ...state.translationinProgress.isAlertShown, + [action.payload]: true + } + }, + } + } + default: { throw new Error(`Unsupported action type: ${action.type}`) } @@ -122,6 +135,9 @@ const initialValue = { tps: new Array(30).fill({ blocks: [], transactions: 0 }), tpb: new Array(60).fill({ blocks: [], transactions: 0 }), tpsWaitingBlock: null, + translationinProgress: { + isAlertShown: {} + } } export const SharedStateProvider = ({ ...props }) => { @@ -315,6 +331,13 @@ export const useSharedState = () => { scheduleInterval = null } + const updateTranslationAlertsState = language => { + dispatch({ + type: 'updateTranslationAlertsState', + payload: language, + }) + } + return [ state, { @@ -327,6 +350,7 @@ export const useSharedState = () => { stopTrackingInfo, startTrackingInfo, startTrackingProducerSchedule, + updateTranslationAlertsState }, ] } diff --git a/webapp/src/hooks/customHooks/useAlertTranslationState.js b/webapp/src/hooks/customHooks/useAlertTranslationState.js new file mode 100644 index 000000000..8fb48d8a8 --- /dev/null +++ b/webapp/src/hooks/customHooks/useAlertTranslationState.js @@ -0,0 +1,31 @@ +import { useTranslation } from 'react-i18next' + +import { useSharedState } from '../../context/state.context' +import { useSnackbarMessageState } from '../../context/snackbar-message.context' +import { generalConfig } from '../../config' + +const useAlertTranslationState = () => { + const [{ translationinProgress }, { updateTranslationAlertsState }] = + useSharedState() + const [, { showMessage }] = useSnackbarMessageState() + const { t } = useTranslation('') + + const showAlertMessage = (language, ignoreStatus = false) => { + if (!generalConfig.languagesInProgress.includes(language)) return + if (!ignoreStatus && translationinProgress?.isAlertShown[language]) return + + showMessage({ + type: 'info', + content: t('translationInProgress'), + anchorOrigin: { + vertical: 'top', + horizontal: 'center', + } + }) + updateTranslationAlertsState(language) + } + + return [{}, { showAlertMessage }] +} + +export default useAlertTranslationState diff --git a/webapp/src/language/ko/ko.json b/webapp/src/language/ko/ko.json index fa99dca2c..478ae87b8 100644 --- a/webapp/src/language/ko/ko.json +++ b/webapp/src/language/ko/ko.json @@ -50,7 +50,8 @@ "secondsAgo": "Seconds Ago", "metaTitle": "Antelope Tools network monitors real-time infrastructure data for multiple Antelope and EOSIO chains.", "metaDescription": "Antelope Tools Dashboard is a network monitor featuring real-time data on block producer nodes and blockchain infrastructure for multiple Antelope and EOSIO chains.", - "goBack": "Go Back" + "goBack": "Go Back", + "translationInProgress": "This translation is in progress, if you find an error please let us know." }, "routes": { "/>sidebar": "Dashboard", diff --git a/webapp/src/language/zh/zh.json b/webapp/src/language/zh/zh.json index fa99dca2c..478ae87b8 100644 --- a/webapp/src/language/zh/zh.json +++ b/webapp/src/language/zh/zh.json @@ -50,7 +50,8 @@ "secondsAgo": "Seconds Ago", "metaTitle": "Antelope Tools network monitors real-time infrastructure data for multiple Antelope and EOSIO chains.", "metaDescription": "Antelope Tools Dashboard is a network monitor featuring real-time data on block producer nodes and blockchain infrastructure for multiple Antelope and EOSIO chains.", - "goBack": "Go Back" + "goBack": "Go Back", + "translationInProgress": "This translation is in progress, if you find an error please let us know." }, "routes": { "/>sidebar": "Dashboard", diff --git a/webapp/src/layouts/Dashboard.js b/webapp/src/layouts/Dashboard.js index 875e2a58c..631e785cc 100644 --- a/webapp/src/layouts/Dashboard.js +++ b/webapp/src/layouts/Dashboard.js @@ -24,6 +24,7 @@ import { getLanguageFromPath, removeLanguageFromPath, } from 'utils/url-localization' +import useAlertTranslationState from '../hooks/customHooks/useAlertTranslationState' import styles from './styles' @@ -55,6 +56,7 @@ const Dashboard = ({ children }) => { const location = useLocation() const [lacchain] = useSharedState() const [routeName, setRouteName] = useState(INIT_VALUES) + const [,{ showAlertMessage }] = useAlertTranslationState() const navigate = useNavigate() @@ -91,6 +93,10 @@ const Dashboard = ({ children }) => { } } + if(generalConfig.languagesInProgress.includes(selectedLanguage)) { + showAlertMessage(selectedLanguage) + } + const route = routes.find(route => route.useParams ? removeParam(route.path) === removeParam(path) From 170b9820eb023b956e813187900c457dc7348dfc Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Fri, 24 Nov 2023 12:01:32 -0600 Subject: [PATCH 55/75] chore(webapp): fix code format --- webapp/src/config/general.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/src/config/general.js b/webapp/src/config/general.js index 95cb700f7..ad7168a29 100644 --- a/webapp/src/config/general.js +++ b/webapp/src/config/general.js @@ -33,7 +33,7 @@ export const healthLights = Object.freeze({ export const defaultLanguage = 'en' export const languageResources = resources export const languages = Object.keys(resources) -export const languagesInProgress = ['ko','zh'] +export const languagesInProgress = ['ko', 'zh'] export const languagesLabels = { 'es': 'Español', 'en': 'English', From 1199e29dbf1e7ecc9d01659c2f4a72ec69fed73b Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Fri, 24 Nov 2023 16:08:48 -0600 Subject: [PATCH 56/75] fix(webapp): query in the first load and use it if subscription is not available --- webapp/src/gql/producer.gql.js | 14 +++-- .../hooks/customHooks/useEndpointsState.js | 56 +++++++++++++------ webapp/src/hooks/customHooks/useNodeState.js | 31 ++++++---- .../src/hooks/customHooks/useSearchState.js | 24 ++++++-- webapp/src/utils/is-same-object.js | 14 +++++ 5 files changed, 102 insertions(+), 37 deletions(-) create mode 100644 webapp/src/utils/is-same-object.js diff --git a/webapp/src/gql/producer.gql.js b/webapp/src/gql/producer.gql.js index 91c28893c..cd0344a11 100644 --- a/webapp/src/gql/producer.gql.js +++ b/webapp/src/gql/producer.gql.js @@ -135,8 +135,8 @@ export const NODES_BY_PRODUCER_SUBSCRIPTION = gql` } ` -export const NODES_SUBSCRIPTION = gql` - subscription ($offset: Int = 0, $limit: Int = 21, $where: producer_bool_exp) { +const NODES_OPERATION = type => gql` + ${type} ($offset: Int = 0, $limit: Int = 21, $where: producer_bool_exp) { producers: producer( where: $where limit: $limit @@ -171,8 +171,11 @@ export const NODES_SUBSCRIPTION = gql` } ` -export const ENDPOINTS_SUBSCRIPTION = gql` - subscription ( +export const NODES_SUBSCRIPTION = NODES_OPERATION('subscription') +export const NODES_QUERY = NODES_OPERATION('query') + +const ENDPOINTS_OPERATION = type => gql` + ${type} ( $offset: Int = 0 $limit: Int = 21 $where: producer_bool_exp @@ -198,6 +201,9 @@ export const ENDPOINTS_SUBSCRIPTION = gql` } ` +export const ENDPOINTS_SUBSCRIPTION = ENDPOINTS_OPERATION('subscription') +export const ENDPOINTS_QUERY = ENDPOINTS_OPERATION('query') + export const NODE_CPU_BENCHMARK = gql` query ($account: String) { cpu( diff --git a/webapp/src/hooks/customHooks/useEndpointsState.js b/webapp/src/hooks/customHooks/useEndpointsState.js index 2bf0a7e2e..b7e2f4fba 100644 --- a/webapp/src/hooks/customHooks/useEndpointsState.js +++ b/webapp/src/hooks/customHooks/useEndpointsState.js @@ -1,7 +1,11 @@ -import { useState, useEffect, useCallback } from 'react' +import { useState, useEffect, useCallback, useRef } from 'react' import { useSubscription, useLazyQuery } from '@apollo/client' -import { ENDPOINTS_SUBSCRIPTION, PRODUCERS_COUNT_QUERY } from '../../gql' +import { + ENDPOINTS_SUBSCRIPTION, + ENDPOINTS_QUERY, + PRODUCERS_COUNT_QUERY, +} from '../../gql' import useSearchState from './useSearchState' @@ -15,23 +19,11 @@ const useEndpointsState = () => { nodes: { endpoints: { value: { _gt: '' } } }, }, } - const [variables, setVariables] = useState(defaultVariables) - const [loadProducers, { data: { info } = {} }] = useLazyQuery(PRODUCERS_COUNT_QUERY) - const { data, loading } = useSubscription(ENDPOINTS_SUBSCRIPTION, { variables }) + const [items, setItems] = useState() const [textLists, setTextLists] = useState() - const [ - { filters, pagination }, - { handleOnSearch, handleOnPageChange, setPagination }, - ] = useSearchState({ - loadProducers, - info, - variables, - setVariables, - }) - - useEffect(() => { + const handleSubscriptionData = data => { if (!data) return const { newItems, workingEndpoints } = data.producers.reduce( @@ -93,7 +85,37 @@ const useEndpointsState = () => { return { ...state, [type]: endpointsList } }, {}), ) - }, [data, info]) + } + + const isQueryExecuted = useRef(false) + const [loadProducers, { data: { info } = {} }] = useLazyQuery(PRODUCERS_COUNT_QUERY) + const [ + { filters, pagination, variables }, + { handleOnSearch, handleOnPageChange, setPagination }, + ] = useSearchState({ + loadProducers, + info, + defaultVariables, + }) + const { loading } = useSubscription(ENDPOINTS_SUBSCRIPTION, { + variables, + onSubscriptionData: ({ subscriptionData }) => { + handleSubscriptionData(subscriptionData.data) + }, + }) + + const [loadEndpoints] = useLazyQuery(ENDPOINTS_QUERY, { + onCompleted: (data) => { + handleSubscriptionData(data) + }, + }) + + useEffect(() => { + if (!variables || isQueryExecuted.current) return + + loadEndpoints({ variables }) + isQueryExecuted.current = true + }, [variables, loadEndpoints]) const handleFilter = useCallback(value => { const filter = value diff --git a/webapp/src/hooks/customHooks/useNodeState.js b/webapp/src/hooks/customHooks/useNodeState.js index 37b7f3893..41be4620a 100644 --- a/webapp/src/hooks/customHooks/useNodeState.js +++ b/webapp/src/hooks/customHooks/useNodeState.js @@ -1,7 +1,11 @@ -import { useState, useEffect } from 'react' +import { useState, useEffect, useRef } from 'react' import { useSubscription, useLazyQuery } from '@apollo/client' -import { NODES_SUBSCRIPTION, PRODUCERS_COUNT_QUERY } from '../../gql' +import { + NODES_SUBSCRIPTION, + NODES_QUERY, + PRODUCERS_COUNT_QUERY, +} from '../../gql' import { eosConfig } from '../../config' import sortNodes from 'utils/sort-nodes' @@ -17,21 +21,28 @@ const useNodeState = () => { nodes: { type: { _neq: [] } }, }, } - const [variables, setVariables] = useState(defaultVariables) const [loadProducers, { data: { info } = {} }] = useLazyQuery( PRODUCERS_COUNT_QUERY, ) - const { data, loading } = useSubscription(NODES_SUBSCRIPTION, { variables }) + const isQueryExecuted = useRef(false) const [items, setItems] = useState([]) const [ - { filters, pagination }, + { filters, pagination, variables }, { handleOnSearch, handleOnPageChange, setPagination }, ] = useSearchState({ loadProducers, info, - variables, - setVariables, + defaultVariables, }) + const { data, loading } = useSubscription(NODES_SUBSCRIPTION, { variables }) + const [loadNodes, { data: queryData }] = useLazyQuery(NODES_QUERY) + + useEffect(() => { + if (!variables || isQueryExecuted.current) return + + loadNodes({ variables }) + isQueryExecuted.current = true + }, [variables, loadNodes]) const chips = [{ name: 'all' }, ...eosConfig.nodeChips] @@ -65,9 +76,9 @@ const useNodeState = () => { }, [filters.name, setPagination]) useEffect(() => { - if (!data) return + if (!data && !queryData) return - const { producers } = data + const { producers } = data || queryData const isFilterByFeature = isFeature(filters.name) const list = producers.flatMap((producer) => { @@ -92,7 +103,7 @@ const useNodeState = () => { }) setItems(list) - }, [filters.name, data]) + }, [filters.name, data, queryData]) return [ { filters, chips, loading, items, pagination }, diff --git a/webapp/src/hooks/customHooks/useSearchState.js b/webapp/src/hooks/customHooks/useSearchState.js index 7ccd7ede8..e7d7e91eb 100644 --- a/webapp/src/hooks/customHooks/useSearchState.js +++ b/webapp/src/hooks/customHooks/useSearchState.js @@ -2,12 +2,14 @@ import { useState, useEffect, useCallback } from 'react' import { useLocation } from 'react-router-dom' import queryString from 'query-string' -const useSearchState = ({ loadProducers, info, variables, setVariables }) => { +import isTheSameObject from 'utils/is-same-object' + +const useSearchState = ({ loadProducers, info, defaultVariables }) => { + const [variables, setVariables] = useState() const location = useLocation() const [pagination, setPagination] = useState({ page: 1, pages: 1, - ...variables, }) const [filters, setFilters] = useState({ name: 'all', owner: '' }) @@ -33,6 +35,8 @@ const useSearchState = ({ loadProducers, info, variables, setVariables }) => { } useEffect(() => { + if (!pagination.where || !pagination.limit) return + const variables = { limit: pagination.limit, offset: (pagination.page - 1) * pagination.limit, @@ -40,9 +44,12 @@ const useSearchState = ({ loadProducers, info, variables, setVariables }) => { where: pagination.where, } - loadProducers({ variables: { where: pagination.where } }) + setVariables(prev => { + if (isTheSameObject(prev, variables)) return prev - setVariables(variables) + loadProducers({ variables: { where: pagination.where } }) + return variables + }) }, [ pagination.where, pagination.page, @@ -56,9 +63,14 @@ const useSearchState = ({ loadProducers, info, variables, setVariables }) => { useEffect(() => { const params = queryString.parse(location.search) - if (!params.owner) return + if (!params.owner) { + setPagination(prev => ({ ...prev, ...defaultVariables })) + + return + } setPagination(prev => ({ + ...defaultVariables, ...prev, page: 1, where: { owner: { _like: `%${params.owner}%` } }, @@ -78,7 +90,7 @@ const useSearchState = ({ loadProducers, info, variables, setVariables }) => { }, [info, pagination.limit]) return [ - { filters, pagination }, + { filters, pagination, variables, setVariables }, { handleOnSearch, handleOnPageChange, diff --git a/webapp/src/utils/is-same-object.js b/webapp/src/utils/is-same-object.js new file mode 100644 index 000000000..6f190fd51 --- /dev/null +++ b/webapp/src/utils/is-same-object.js @@ -0,0 +1,14 @@ +export const isTheSameObject = (obj1, obj2) => { + if (typeof obj1 === 'object' && typeof obj2 === 'object') { + if (Object.keys(obj1 || {}).length !== Object.keys(obj2 || {}).length) + return false + + return Object.keys(obj1 || {}).every((key) => { + return isTheSameObject(obj1[key], obj2[key]) + }) + } + + return obj1 === obj2 +} + +export default isTheSameObject From cdfd2e237ec45fc7651395d210fb2098c255472a Mon Sep 17 00:00:00 2001 From: Xavier Fernandez Date: Sun, 26 Nov 2023 22:23:42 -0600 Subject: [PATCH 57/75] feat(webapp): add korean and chinese translations --- webapp/src/language/ko/ko.json | 886 +++++++++---------- webapp/src/language/ko/ko.jungle.json | 4 +- webapp/src/language/ko/ko.lacchain.json | 274 +++--- webapp/src/language/ko/ko.libre-testnet.json | 4 +- webapp/src/language/ko/ko.mainnet.json | 34 +- webapp/src/language/ko/ko.telos-testnet.json | 6 +- webapp/src/language/ko/ko.telos.json | 6 +- webapp/src/language/ko/ko.ultra-testnet.json | 6 +- webapp/src/language/ko/ko.xpr-testnet.json | 34 +- webapp/src/language/ko/ko.xpr.json | 34 +- webapp/src/language/zh/zh.json | 870 +++++++++--------- webapp/src/language/zh/zh.jungle.json | 4 +- webapp/src/language/zh/zh.lacchain.json | 262 +++--- webapp/src/language/zh/zh.libre-testnet.json | 4 +- webapp/src/language/zh/zh.mainnet.json | 34 +- webapp/src/language/zh/zh.telos-testnet.json | 6 +- webapp/src/language/zh/zh.telos.json | 6 +- webapp/src/language/zh/zh.ultra-testnet.json | 6 +- webapp/src/language/zh/zh.xpr-testnet.json | 34 +- webapp/src/language/zh/zh.xpr.json | 34 +- 20 files changed, 1274 insertions(+), 1274 deletions(-) diff --git a/webapp/src/language/ko/ko.json b/webapp/src/language/ko/ko.json index 478ae87b8..1b81142db 100644 --- a/webapp/src/language/ko/ko.json +++ b/webapp/src/language/ko/ko.json @@ -1,540 +1,540 @@ { "common": { - "all": "All", - "account": "Account", - "name": "Name", - "rewards": "Rewards", - "votes": "Votes", - "block": "Block", - "blocks": "Blocks", - "transactions": "Transactions", - "producerName": "Producer name", - "nodeName": "Node name", - "nodeType": "Node type", - "description": "Description", - "color": "Color", - "producers": "Producers", - "producer": "Producer", - "connectWallet": "Connect Wallet", - "keys": "Keys", - "download": "Download", - "healthStatus": "Health Status", - "help": "Help", - "node": "Node", - "lastHour": "Last Hour", - "lastDay": "Last Day", - "lastWeek": "Last Week", - "dailyAverage": "Daily Average", - "lastYear": "Last Year", - "itemsPerPage": "Items per page", + "all": "모두", + "account": "계정", + "name": "이름", + "rewards": "보상", + "votes": "투표", + "block": "블록", + "blocks": "블록들", + "transactions": "트랜잭션", + "producerName": "생산자 이름", + "nodeName": "노드 이름", + "nodeType": "노드 유형", + "description": "설명", + "color": "색상", + "producers": "생산자들", + "producer": "생산자", + "connectWallet": "지갑 연결", + "keys": "키", + "download": "다운로드", + "healthStatus": "건강 상태", + "help": "도움말", + "node": "노드", + "lastHour": "지난 시간", + "lastDay": "지난 일", + "lastWeek": "지난 주", + "dailyAverage": "일일 평균", + "lastYear": "지난 해", + "itemsPerPage": "페이지당 항목", "api": "HTTP", "ssl": "HTTPS", "p2p": "P2P", - "payer": "Payer", - "nodes": "Nodes", - "total": "Total", - "missedBlocks": "Missed Blocks", - "timeFrame": "Time frame", + "payer": "지불자", + "nodes": "노드들", + "total": "총계", + "missedBlocks": "누락된 블록", + "timeFrame": "시간 범위", "net": "NET", "cpu": "CPU", - "footer1": "This App is a Community Public Good", - "footer2": "Proudly Engineered by Edenia", - "executeTransaction": "Execute Transaction", - "bugRequest": "Report a bug / Request a feature", - "moreInfo": "More Info", - "openLink": "Visit Site", - "table": "Table", - "noOptions": "No matches", - "updatedAt": "Updated at", - "nextUpdateAt": "Next update at", - "secondsAgo": "Seconds Ago", - "metaTitle": "Antelope Tools network monitors real-time infrastructure data for multiple Antelope and EOSIO chains.", - "metaDescription": "Antelope Tools Dashboard is a network monitor featuring real-time data on block producer nodes and blockchain infrastructure for multiple Antelope and EOSIO chains.", - "goBack": "Go Back", - "translationInProgress": "This translation is in progress, if you find an error please let us know." + "footer1": "이 앱은 커뮤니티 공공재입니다", + "footer2": "Edenia가 자랑스럽게 개발함", + "executeTransaction": "트랜잭션 실행", + "bugRequest": "버그 신고 / 기능 요청", + "moreInfo": "더 많은 정보", + "openLink": "사이트 방문", + "table": "테이블", + "noOptions": "일치하는 항목 없음", + "updatedAt": "업데이트 시간", + "nextUpdateAt": "다음 업데이트 시간", + "secondsAgo": "몇 초 전", + "metaTitle": "안텔로프 툴스 네트워크 모니터는 다양한 안텔로프 및 EOSIO 체인의 실시간 인프라 데이터를 모니터링합니다.", + "metaDescription": "안텔로프 툴스 대시보드는 다양한 안텔로프 및 EOSIO 체인의 블록 생산자 노드 및 블록체인 인프라에 대한 실시간 데이터를 제공하는 네트워크 모니터입니다.", + "goBack": "돌아가기", + "translationInProgress": "이 번역은 진행 중입니다. 오류를 발견하시면 알려주십시오." }, "routes": { - "/>sidebar": "Dashboard", - "/>title": "{{networkName}} Network Monitor and Infrastructure Dashboard", - "/>heading": "Welcome to {{networkName}}", - "/cpu-benchmark>sidebar": "CPU Benchmarks", - "/cpu-benchmark>title": "CPU Benchmarks - {{networkName}} Network Dashboard", - "/cpu-benchmark>heading": "Block Producer Nodes CPU Benchmarks on {{networkName}}", - "/block-producers>sidebar": "Block Producers", - "/block-producers>title": "Block Producers - {{networkName}} Network Dashboard", - "/block-producers>heading": "Block Producers on {{networkName}}", - "/block-producers/bpName>heading": "Block Producer Profile", - "/entities/bpName>heading": "Entity Profile", - "/undiscoverable-bps>sidebar": "Undiscoverable BPs", - "/undiscoverable-bps>title": "Paid undiscoverable Block Producers - {{networkName}} Network Dashboard", - "/undiscoverable-bps>heading": "Undiscoverable Paid Block Producers on {{networkName}}", - "/rewards-distribution>sidebar": "Rewards Distribution", - "/rewards-distribution>title": "Rewards Distribution - {{networkName}} Network Dashboard", - "/rewards-distribution>heading": "Rewards Distribution of {{networkName}}", - "/nodes>sidebar": "Nodes", - "/nodes>title": "Nodes - {{networkName}} Nodes Status Monitor", - "/nodes>heading": "Nodes on {{networkName}}", - "/nodes-distribution>sidebar": "Geo Distribution", - "/nodes-distribution>title": "Geographic Distribution of Nodes - {{networkName}} Network Dashboard", - "/nodes-distribution>heading": "Geographic Distribution of {{networkName}} Nodes", - "/accounts>sidebar": "Accounts & Contracts", - "/accounts>title": "Accounts and Contracts - {{networkName}} Network Dashboard", - "/accounts>heading": "Accounts and Contracts of {{networkName}}", - "/bpjson>sidebar": "BP.json Generator", - "/bpjson>title": "BP JSON Generator - {{networkName}} Network Dashboard", - "/bpjson>heading": "BP.json Generator", - "/faucet>sidebar": "Create Account & Faucet", - "/faucet>title": "Faucet and Account Creator - {{networkName}} Network Dashboard", - "/faucet>heading": "{{networkName}} Account Creator and Token Faucet", - "/ricardian-contract>sidebar": "BP Agreement", - "/ricardian-contract>title": "BP Agreement - {{networkName}} Network Dashboard", - "/ricardian-contract>heading": "Block Producer Agreement on {{networkName}}", - "/block-distribution>sidebar": "Block Distribution", - "/block-distribution>title": "Block Production Distribution - {{networkName}} Network Dashboard", - "/block-distribution>heading": "Block Production Distribution on {{networkName}}", - "/missed-blocks>sidebar": "Missed Blocks", - "/missed-blocks>title": "Missed Blocks - {{networkName}} Network Dashboard", - "/missed-blocks>heading": "Missed Blocks on {{networkName}}", - "/stress-test>title": "Stress Test Dashboard - {{networkName}} Network Dashboard", - "/stress-test>sidebar": "Stress Test", - "/stress-test>heading": "{{networkName}} Stress Test", - "/evm>title": "EVM Dashboard - {{networkName}} Network Dashboard", - "/evm>sidebar": "EVM Dashboard", - "/evm>heading": "{{networkName}} EVM Dashboard", - "/evm-rpc-endpoints>title": "EVM RPC Endpoints - {{networkName}} Network Dashboard", - "/evm-rpc-endpoints>sidebar": "EVM RPC Endpoints", - "/evm-rpc-endpoints>heading": "{{networkName}} EVM RPC Endpoints", - "/endpoints>sidebar": "API Endpoints", - "/endpoints>title": "API Endpoints - {{networkName}} Network Dashboard", - "/endpoints>heading": "{{networkName}} API Endpoints", - "/endpoints-stats>sidebar": "API Endpoints Stats", - "/endpoints-stats>title": "API Endpoints Stats- {{networkName}} Network Dashboard", - "/endpoints-stats>heading": "{{networkName}} API Endpoints Stats", - "/about>sidebar": "About", - "/about>title": "About - {{networkName}} Network Monitor and Infrastructure Dashboard", - "/about>heading": "About Antelope Tools", - "/about>moreDescription": "Learn more about Edenia and the Antelope Tools project, its importance and how you can get involved", - "/help>sidebar": "Help", - "/help>title": "Help - {{networkName}} Network Dashboard", - "/help>heading": "Welcome to the Antelope Tools Help Center", - "/help>moreDescription": "Check how the bp.json Standard is used, troubleshoot if BP data is missing and contact us if you have suggestions", - "networkInformation": "Network Information", - "tools": "Tools", - "docs": "Docs", - "community": "Community", - "changelog": "Changelog", - "github": "Github Repository", - "telegram": "Telegram Channel", - "readMore": "Read more", - "readLess": "Read less", - "moreDescription": "This is a read more text component for users that either need a bit of help or are new to the system. A clear but not too extensive set of terms and instructions can help users get going without having to over write titles or labels like the one on the search card below. Take a look! A third line is also possible and probably more than enough.", - "/rewards-distribution>moreDescription": "A geographic visualization of daily block producer rewards and a list of undiscoverable paid block producers.", - "/undiscoverable-bps>moreDescription": "A list of the paid block producers on the network which do not provide information in their BP.json files.", - "/bpjson>moreDescription": "A tool for block producers to provide details of their organizations and nodes to comply with the BP information standard.", - "/node-config>moreDescription": "Use this tool to obtain example config files to help configure a new node on the network.", - "/ricardian-contract>moreDescription": "The on-chain ricardian contract that describes the validator node agreement of {{networkName}}.", - "/>moreDescription": "Monitor the infrastructure of blockchain networks using Antelope + EOSIO blockchain technology.", - "/cpu-benchmark>moreDescription": "A visualization of CPU usage in microseconds by block producer nodes accounts, with lowest, highest, and average usage data.", - "/block-producers>moreDescription": "A list of the block producers in the network – blockchain accounts registered to run nodes on the network. It includes information from chain tables and their bp.json files.", - "/block-producers/bpName>moreDescription": "View block producer general information such as rank, rewards and compliance", - "/nodes>moreDescription": "A list of all the nodes run by block producers comprising the network with specific information such as endpoints and location.", - "/endpoints>moreDescription": "An updated list of public API endpoints provided by node operators and their health status.", - "/endpoints-stats>moreDescription": "Response time statistics from Costa Rica and the availability of a producer's endpoints.", - "/nodes-distribution>moreDescription": "A visualization of the geographic distribution of the nodes in this network.", - "/accounts>moreDescription": "This tool helps find information about accounts and interact with contracts on the network. Enter an account name and obtain account information, smart contract actions, and table data.", - "/block-distribution>moreDescription": "A visualization of the distribution of blocks produced by the nodes in the network.", - "/missed-blocks>moreDescription": "A list of scheduled, produced, and missed blocks by each account in the network.", - "/stress-test>moreDescription": "Monitor current and historical data about transactions, such as resource utilization and all-time high TPS." + "/>sidebar": "대시보드", + "/>title": "{{networkName}} 네트워크 모니터 및 인프라 대시보드", + "/>heading": "{{networkName}}에 오신 것을 환영합니다", + "/cpu-benchmark>sidebar": "CPU 벤치마크", + "/cpu-benchmark>title": "CPU 벤치마크 - {{networkName}} 네트워크 대시보드", + "/cpu-benchmark>heading": "{{networkName}}의 블록 생산자 노드 CPU 벤치마크", + "/block-producers>sidebar": "블록 생산자", + "/block-producers>title": "블록 생산자 - {{networkName}} 네트워크 대시보드", + "/block-producers>heading": "{{networkName}}의 블록 생산자", + "/block-producers/bpName>heading": "블록 생산자 프로필", + "/entities/bpName>heading": "엔티티 프로필", + "/undiscoverable-bps>sidebar": "탐지 불가능한 BPs", + "/undiscoverable-bps>title": "유료 탐지 불가능한 블록 생산자 - {{networkName}} 네트워크 대시보드", + "/undiscoverable-bps>heading": "{{networkName}}의 유료 탐지 불가능한 블록 생산자", + "/rewards-distribution>sidebar": "보상 분배", + "/rewards-distribution>title": "보상 분배 - {{networkName}} 네트워크 대시보드", + "/rewards-distribution>heading": "{{networkName}}의 보상 분배", + "/nodes>sidebar": "노드", + "/nodes>title": "노드 - {{networkName}} 노드 상태 모니터", + "/nodes>heading": "{{networkName}}의 노드", + "/nodes-distribution>sidebar": "지리적 분포", + "/nodes-distribution>title": "노드의 지리적 분포 - {{networkName}} 네트워크 대시보드", + "/nodes-distribution>heading": "{{networkName}} 노드의 지리적 분포", + "/accounts>sidebar": "계정 및 계약", + "/accounts>title": "계정 및 계약 - {{networkName}} 네트워크 대시보드", + "/accounts>heading": "{{networkName}}의 계정 및 계약", + "/bpjson>sidebar": "BP.json 생성기", + "/bpjson>title": "BP JSON 생성기 - {{networkName}} 네트워크 대시보드", + "/bpjson>heading": "BP.json 생성기", + "/faucet>sidebar": "계정 생성 및 파우셋", + "/faucet>title": "파우셋 및 계정 생성기 - {{networkName}} 네트워크 대시보드", + "/faucet>heading": "{{networkName}} 계정 생성기 및 토큰 파우셋", + "/ricardian-contract>sidebar": "BP 계약", + "/ricardian-contract>title": "BP 계약 - {{networkName}} 네트워크 대시보드", + "/ricardian-contract>heading": "{{networkName}}의 블록 생산자 계약", + "/block-distribution>sidebar": "블록 분배", + "/block-distribution>title": "블록 생산 분배 - {{networkName}} 네트워크 대시보드", + "/block-distribution>heading": "{{networkName}}의 블록 생산 분배", + "/missed-blocks>sidebar": "누락된 블록", + "/missed-blocks>title": "누락된 블록 - {{networkName}} 네트워크 대시보드", + "/missed-blocks>heading": "{{networkName}}의 누락된 블록", + "/stress-test>title": "스트레스 테스트 대시보드 - {{networkName}} 네트워크 대시보드", + "/stress-test>sidebar": "스트레스 테스트", + "/stress-test>heading": "{{networkName}} 스트레스 테스트", + "/evm>title": "EVM 대시보드 - {{networkName}} 네트워크 대시보드", + "/evm>sidebar": "EVM 대시보드", + "/evm>heading": "{{networkName}} EVM 대시보드", + "/evm-rpc-endpoints>title": "EVM RPC 엔드포인트 - {{networkName}} 네트워크 대시보드", + "/evm-rpc-endpoints>sidebar": "EVM RPC 엔드포인트", + "/evm-rpc-endpoints>heading": "{{networkName}} EVM RPC 엔드포인트", + "/endpoints>sidebar": "API 엔드포인트", + "/endpoints>title": "API 엔드포인트 - {{networkName}} 네트워크 대시보드", + "/endpoints>heading": "{{networkName}} API 엔드포인트", + "/endpoints-stats>sidebar": "API 엔드포인트 통계", + "/endpoints-stats>title": "API 엔드포인트 통계- {{networkName}} 네트워크 대시보드", + "/endpoints-stats>heading": "{{networkName}} API 엔드포인트 통계", + "/about>sidebar": "소개", + "/about>title": "소개 - {{networkName}} 네트워크 모니터 및 인프라 대시보드", + "/about>heading": "안텔로프 도구 소개", + "/about>moreDescription": "Edenia와 안텔로프 도구 프로젝트에 대해 자세히 알아보고, 그 중요성과 참여 방법", + "/help>sidebar": "도움말", + "/help>title": "도움말 - {{networkName}} 네트워크 대시보드", + "/help>heading": "안텔로프 도구 도움말 센터에 오신 것을 환영합니다", + "/help>moreDescription": "bp.json 표준 사용 방법을 확인하고, BP 데이터가 누락된 경우 문제 해결 방법을 알아보고, 제안이 있으면 연락주세요", + "networkInformation": "네트워크 정보", + "tools": "도구", + "docs": "문서", + "community": "커뮤니티", + "changelog": "변경 로그", + "github": "깃허브 저장소", + "telegram": "텔레그램 채널", + "readMore": "더 읽기", + "readLess": "덜 읽기", + "moreDescription": "시스템에 대해 조금 도움이 필요하거나 새로 오신 사용자를 위한 '더 읽기' 텍스트 구성 요소입니다. 너무 많지 않으면서도 명확한 용어 및 지침 세트가 사용자가 검색 카드 아래와 같은 제목이나 라벨을 과도하게 쓰지 않고도 시작할 수 있도록 도와줍니다. 살펴보세요! 세 번째 줄도 가능하고 아마도 충분할 것입니다.", + "/rewards-distribution>moreDescription": "일일 블록 생산자 보상과 탐지되지 않는 유료 블록 생산자의 지리적 시각화.", + "/undiscoverable-bps>moreDescription": "BP.json 파일에서 정보를 제공하지 않는 네트워크의 유료 블록 생산자 목록.", + "/bpjson>moreDescription": "블록 생산자가 BP 정보 표준을 준수하기 위해 조직과 노드의 세부 정보를 제공하는 도구.", + "/node-config>moreDescription": "네트워크에서 새 노드를 구성하는 데 도움이 되는 예제 구성 파일을 얻기 위해 이 도구를 사용하십시오.", + "/ricardian-contract>moreDescription": "{{networkName}}의 검증 노드 계약을 설명하는 온체인 리카디안 계약.", + "/>moreDescription": "안텔로프 + EOSIO 블록체인 기술을 사용한 블록체인 네트워크의 인프라 모니터링.", + "/cpu-benchmark>moreDescription": "블록 생산자 노드 계정의 CPU 사용량(마이크로초 단위)을 시각화하고, 최저, 최고 및 평균 사용량 데이터를 제공합니다.", + "/block-producers>moreDescription": "네트워크의 블록 생산자 목록 – 네트워크에서 노드를 운영하도록 등록된 블록체인 계정. 체인 테이블과 bp.json 파일의 정보를 포함합니다.", + "/block-producers/bpName>moreDescription": "순위, 보상 및 준수 여부와 같은 블록 생산자의 일반 정보를 확인하십시오.", + "/nodes>moreDescription": "네트워크를 구성하는 블록 생산자가 운영하는 모든 노드의 목록으로, 엔드포인트 및 위치와 같은 구체적인 정보를 제공합니다.", + "/endpoints>moreDescription": "노드 운영자가 제공하는 공개 API 엔드포인트 목록과 그 건강 상태를 업데이트합니다.", + "/endpoints-stats>moreDescription": "코스타리카의 응답 시간 통계 및 생산자 엔드포인트의 가용성.", + "/nodes-distribution>moreDescription": "이 네트워크의 노드 지리적 분포를 시각화합니다.", + "/accounts>moreDescription": "이 도구를 사용하여 네트워크에서 계정에 대한 정보를 찾고 계약과 상호 작용할 수 있습니다. 계정 이름을 입력하고 계정 정보, 스마트 계약 조치 및 테이블 데이터를 얻으십시오.", + "/block-distribution>moreDescription": "네트워크에서 노드가 생산하는 블록의 분포를 시각화합니다.", + "/missed-blocks>moreDescription": "네트워크의 각 계정이 예정된, 생성된, 누락된 블록 목록.", + "/stress-test>moreDescription": "리소스 사용량과 역대 최고 TPS와 같은 거래에 대한 현재 및 역사적 데이터를 모니터링합니다." }, "homeRoute": { - "currentProducer": "Current Producer", - "headBlock": "Head Block", - "lastBlock": "Last Irreversible Block", - "bpSchedule": "Block Producer Schedule", - "transPerSecond": "Transactions Per Second", - "transPerBlock": "Transactions Per Block", - "transactions": "Transactions", - "transactionsHistory": "Transactions History", - "timeFrame": "Time frame", - "pause": "Pause", - "play": "Play", - "Last Hour": "Last Hour", - "Last Day": "Last Day", - "Last Week": "Last Week", - "Last Year": "Last Year", - "scheduleVersion": "Schedule Version", - "tpsAllTimeHigh": "TPS All Time High", - "cpuUtilizationAllTimeHigh": "CPU Usage in TPS All Time High", - "networkUtilizationAllTimeHigh": "NET Usage in TPS All Time High", - "transactionsPerSecond": "Transactions per Second", - "transactionsPerBlock": "Transactions per Block", - "nodes": "Nodes", - "undefined": "Undefined", - "unknown": "Unknown", - "uniqueLocations": "Unique Locations", - "cpuLimitPerBlock": "CPU Limit Per Block", - "netLimitPerBlock": "Net Limit Per Block", - "chainCpuLimit": "Chain CPU Limit", - "chainNetLimit": "Chain Net Limit", - "timeToFinality": "Time to Finality", - "cpuUsage": "CPU Usage", - "netUsage": "NET Usage", - "average": "Average", - "nodeType": "{{nodeType}} $t(nodes)", + "currentProducer": "현재 생산자", + "headBlock": "헤드 블록", + "lastBlock": "마지막 불가역 블록", + "bpSchedule": "블록 생산자 일정", + "transPerSecond": "초당 트랜잭션", + "transPerBlock": "블록당 트랜잭션", + "transactions": "트랜잭션", + "transactionsHistory": "트랜잭션 기록", + "timeFrame": "시간 범위", + "pause": "일시정지", + "play": "재생", + "Last Hour": "지난 시간", + "Last Day": "지난 일", + "Last Week": "지난 주", + "Last Year": "지난 해", + "scheduleVersion": "일정 버전", + "tpsAllTimeHigh": "역대 최고 TPS", + "cpuUtilizationAllTimeHigh": "역대 최고 TPS시 CPU 사용", + "networkUtilizationAllTimeHigh": "역대 최고 TPS시 NET 사용", + "transactionsPerSecond": "초당 트랜잭션", + "transactionsPerBlock": "블록당 트랜잭션", + "nodes": "노드", + "undefined": "정의되지 않음", + "unknown": "알 수 없음", + "uniqueLocations": "독특한 위치", + "cpuLimitPerBlock": "블록당 CPU 제한", + "netLimitPerBlock": "블록당 NET 제한", + "chainCpuLimit": "체인 CPU 제한", + "chainNetLimit": "체인 NET 제한", + "timeToFinality": "최종 확정까지의 시간", + "cpuUsage": "CPU 사용", + "netUsage": "NET 사용", + "average": "평균", + "nodeType": "{{nodeType}} $t(노드)", "tooltip": { - "lastBlock": "The most recently verified block in the blockchain", - "bpSchedule": "The current roster of top 21 block producers", - "scheduleVersion": "The active version number for the list of top 21 block producers", - "tpsAllTimeHigh": "Peak Transactions Per Second (TPS) ever recorded", - "cpuUtilizationAllTimeHigh": "CPU utilization at the time of peak TPS", - "networkUtilizationAllTimeHigh": "Network (NET) utilization at the time of peak TPS", - "full": "Node that archives data back to the genesis block", - "seed": "Node offering public P2P connectivity endpoints", - "query": "Node offering public HTTP(S) API access points", - "producer": "Node responsible for generating new blocks", - "nodes": "Total number of nodes among the top 150 block producers", - "uniqueLocations": "Count of distinct countries hosting block producers, derived from bp.json files", - "timeToFinality": "Duration required for a transaction to gain full blockchain confirmation", - "cpuUsage": "Percentage of CPU resources consumed in the most recent second", - "netUsage": "Percentage of Network (NET) resources consumed in the most recent second", - "totalProducers": "Total number of registered Block Producers, as per the eosio smart contract" + "lastBlock": "블록체인에서 가장 최근에 검증된 블록", + "bpSchedule": "상위 21개 블록 생산자의 현재 명단", + "scheduleVersion": "상위 21개 블록 생산자 목록의 활성 버전 번호", + "tpsAllTimeHigh": "기록된 최고 초당 트랜잭션(TPS)", + "cpuUtilizationAllTimeHigh": "최고 TPS 시의 CPU 사용률", + "networkUtilizationAllTimeHigh": "최고 TPS 시의 네트워크(NET) 사용률", + "full": "제네시스 블록부터 데이터를 보관하는 노드", + "seed": "공개 P2P 연결 엔드포인트를 제공하는 노드", + "query": "공개 HTTP(S) API 접근 지점을 제공하는 노드", + "producer": "새로운 블록을 생성하는 노드", + "nodes": "상위 150개 블록 생산자 중 총 노드 수", + "uniqueLocations": "블록 생산자가 호스팅되는 서로 다른 국가 수, bp.json 파일에서 파생됨", + "timeToFinality": "거래가 블록체인에서 완전한 확인을 얻는 데 필요한 기간", + "cpuUsage": "최근 1초 동안 소비된 CPU 리소스의 백분율", + "netUsage": "최근 1초 동안 소비된 네트워크(NET) 리소스의 백분율", + "totalProducers": "eosio 스마트 계약에 따른 등록된 블록 생산자 총 수" } }, "rewardsDistributionRoute": { - "dailyRewards": "Total Daily Rewards", - "yearlyRewards": "Total Yearly Rewards", - "topCountryDailyRewards": "Top Country By Daily Rewards", - "notAvailable": "Not available", - "paidProducers": "Paid BPs Not Located", - "lowestRewards": "Lowest Rewards", - "highestRewards": "Highest Rewards", - "exchangeRate": "Exchange Rate", - "country": "Country", - "rewards": "Rewards", - "rewardsPercentage": "Percentage of rewards", - "viewList": "View full list", - "paidProducersText": "Daily Rewards", - "publishBPDetails": "Publish BP Details", - "generateBPjson": "Generate a BP.json", + "dailyRewards": "총 일일 보상", + "yearlyRewards": "총 연간 보상", + "topCountryDailyRewards": "일일 보상이 가장 높은 국가", + "notAvailable": "사용 불가", + "paidProducers": "위치를 찾을 수 없는 유료 BPs", + "lowestRewards": "가장 낮은 보상", + "highestRewards": "가장 높은 보상", + "exchangeRate": "환율", + "country": "국가", + "rewards": "보상", + "rewardsPercentage": "보상의 비율", + "viewList": "전체 목록 보기", + "paidProducersText": "일일 보상", + "publishBPDetails": "BP 세부 정보 게시", + "generateBPjson": "BP.json 생성", "tooltip": { - "generateBPjson": "BPs can easily create and update their bp.json for transparency." + "generateBPjson": "BP는 투명성을 위해 자신의 bp.json을 쉽게 생성하고 업데이트할 수 있습니다." } }, "accountsRoute": { - "loginBeforeUseAction": "Please connect your wallet in order to execute an action", - "unknownError": "An unexpected error occurred while processing your action.", - "notFound": "not found", - "successMessage": "Transaction completed successfully.", - "placeholder": "Account or Contract Name", - "title": "Explore account details, view contract tables, and execute actions seamlessly.", - "endpointFailure": "Endpoint issue. Please try again later." + "loginBeforeUseAction": "작업을 실행하려면 지갑을 연결해 주세요", + "unknownError": "작업 처리 중 예기치 않은 오류가 발생했습니다.", + "notFound": "찾을 수 없음", + "successMessage": "트랜잭션이 성공적으로 완료되었습니다.", + "placeholder": "계정 또는 계약 이름", + "title": "계정 세부 사항 탐색, 계약 테이블 보기, 그리고 작업을 원활하게 실행합니다.", + "endpointFailure": "엔드포인트 문제. 나중에 다시 시도해 주세요." }, "bpJsonRoute": { - "loadText": "Fetching node details...", - "notLogin": "Connect your wallet to access this feature.", - "notRegisterNode": "An active node account is required to utilize this tool.", - "bpjsonInconsistency": "Mismatch detected between on-chain and off-chain bp.json. Please review and update accordingly." + "loadText": "노드 세부 정보를 가져오는 중...", + "notLogin": "이 기능에 접근하려면 지갑을 연결하세요.", + "notRegisterNode": "이 도구를 사용하려면 활성 노드 계정이 필요합니다.", + "bpjsonInconsistency": "체인 내외의 bp.json 간 불일치가 감지되었습니다. 검토하고 그에 따라 업데이트하세요." }, "faucetRoute": { - "createAccount": "Create Your Account", - "newCreatedAccount": "Congratulations! Your new account has been created:", - "transferTokensTransaction": "Tokens have been successfully transferred. View the transaction on the explorer:", - "createButton": "Create Your Account", - "issueTokens": "Distribute Tokens", - "getTokens": "Receive Tokens", - "publicKey": "Enter Public Key (Active/Owner)", - "accountName": "Choose an Account Name", - "invalidAccount": "Enter a valid account name, please.", - "emptyFields": "Complete all fields to proceed with account creation.", - "accountFormat": "Account name should be 12 characters or fewer. Use lowercase letters (a-z) and numbers (1-5) only.", - "keyFormat": "Enter a valid ECC key. You can generate one using cleos or any compatible wallet." + "createAccount": "계정 생성하기", + "newCreatedAccount": "축하합니다! 새 계정이 생성되었습니다:", + "transferTokensTransaction": "토큰이 성공적으로 전송되었습니다. 탐색기에서 거래를 확인하세요:", + "createButton": "계정 생성하기", + "issueTokens": "토큰 분배하기", + "getTokens": "토큰 받기", + "publicKey": "공개 키 입력하기 (활성/소유자)", + "accountName": "계정 이름 선택하기", + "invalidAccount": "유효한 계정 이름을 입력해 주세요.", + "emptyFields": "계정 생성을 진행하려면 모든 필드를 완성하세요.", + "accountFormat": "계정 이름은 12자 이하로 해야 합니다. 소문자(a-z)와 숫자(1-5)만 사용하세요.", + "keyFormat": "유효한 ECC 키를 입력하세요. cleos 또는 호환 가능한 지갑을 사용하여 하나를 생성할 수 있습니다." }, "ricardianContractRoute": { - "title": "Ricardian Contract" + "title": "리카디안 계약" }, "aboutRoute": { "body": { - "paragraph1": "Welcome to Antelope Tools, your one-stop solution for real-time visualization and monitoring of Antelope and EOSIO blockchains. Designed to be the ultimate blockchain network monitoring tool, we provide real-time data analytics, Block Producer insights, and much more." + "paragraph1": "안텔로프 도구에 오신 것을 환영합니다. 안텔로프 및 EOSIO 블록체인의 실시간 시각화 및 모니터링을 위한 원스톱 솔루션입니다. 최고의 블록체인 네트워크 모니터링 도구로 설계되었으며, 실시간 데이터 분석, 블록 생산자 인사이트 등을 제공합니다." }, - "subtitle1": "About Edenia", + "subtitle1": "Edenia 소개", "body1": { "edenia": "Edenia", - "paragraph1": "is the dedicated team of blockchain experts behind Antelope Tools. With years of experience in blockchain technology and a passion for transparency and reliability, we aim to make the Web3 ecosystem more accessible and user-friendly. Our team is committed to continuous innovation, ensuring that Antelope Tools remains the leading Antelope blockchain network monitoring tool." + "paragraph1": "는 안텔로프 도구 뒤에 있는 블록체인 전문가 팀입니다. 블록체인 기술에 대한 수년간의 경험과 투명성 및 신뢰성에 대한 열정을 바탕으로, Web3 생태계를 더 접근하기 쉽고 사용자 친화적으로 만드는 것을 목표로 합니다. 저희 팀은 지속적인 혁신에 전념하여 안텔로프 도구가 안텔로프 블록체인 네트워크 모니터링 도구로서 선도적인 위치를 유지하도록 하고 있습니다." }, - "subtitle2": "Why Choose Antelope Tools?", + "subtitle2": "안텔로프 도구를 선택해야 하는 이유", "body2": { - "paragraph1": "Antelope Tools is a community-centric, open-source platform developed by blockchain enthusiasts committed to transparency and reliability. Our mission is to offer a user-friendly interface to access critical information about Block Producers, thereby fostering network transparency. Experience the difference by trying Antelope Tools today!" + "paragraph1": "안텔로프 도구는 커뮤니티 중심의 오픈 소스 플랫폼으로, 투명성과 신뢰성에 전념하는 블록체인 애호가들이 개발했습니다. 저희의 사명은 사용자 친화적인 인터페이스를 제공하여 블록 생산자에 대한 중요한 정보에 접근할 수 있도록 하여 네트워크 투명성을 증진시키는 것입니다. 오늘 안텔로프 도구를 사용해보고 차이를 경험하세요!" }, - "subtitle3": "The Importance of Network Monitoring", + "subtitle3": "네트워크 모니터링의 중요성", "body3": { - "paragraph1": "Whether you're on the {{networkName}}, or any other EOSIO-based DPoS network, token holders rely on available data to vote for Block Producers. In permissioned networks like LACChain, node operators must ensure seamless network functionality. Antelope Tools is your reliable source for objective data and node performance metrics." + "paragraph1": "{{networkName}}이나 다른 EOSIO 기반 DPoS 네트워크에 있든, 토큰 홀더들은 블록 생산자에 대한 투표를 위해 사용할 수 있는 데이터에 의존합니다. LACChain과 같은 허가된 네트워크에서는 노드 운영자들이 원활한 네트워크 기능을 보장해야 합니다. 안텔로프 도구는 객관적인 데이터와 노드 성능 지표를 위한 신뢰할 수 있는 출처입니다." }, - "subtitle4": "Data Source", + "subtitle4": "데이터 출처", "body4": { - "paragraph1": "We offer rich, graphical insights into entities operating nodes and blockchain infrastructures. Our data is sourced directly from the public table of producers in the system contracts and is updated in real-time to focus only on active entities. We then use the bp.json standard to retrieve additional data from the Block Producers' URLs." + "paragraph1": "저희는 노드 운영 엔티티와 블록체인 인프라에 대한 풍부하고 그래픽적인 통찰력을 제공합니다. 저희 데이터는 시스템 계약의 공개 프로듀서 테이블에서 직접 수집되며 실시간으로 업데이트되어 활성 엔티티에만 집중합니다. 그런 다음 bp.json 표준을 사용하여 블록 생산자의 URL에서 추가 데이터를 검색합니다." }, - "subtitle5": "Funding and Support", + "subtitle5": "자금 조달 및 지원", "body5": { - "paragraph1": "Antelope Tools is generously funded through", - "pomelo": "Pomelo Grants", - "paragraph2": ", a community-driven funding platform. This financial support enables us to maintain, improve, and expand our services. If you find value in what we do, consider supporting us in the next Pomelo Grant round to help us continue making blockchain networks more transparent and efficient." + "paragraph1": "안텔로프 도구는", + "pomelo": "포멜로 그랜트", + "paragraph2": "를 통해 관대하게 자금 지원을 받습니다. 이러한 재정 지원을 통해 서비스를 유지, 개선 및 확장할 수 있습니다. 저희가 하는 일에 가치를 느끼신다면 다음 포멜로 그랜트 라운드에서 저희를 지원하여 블록체인 네트워크를 더 투명하고 효율적으로 만드는 데 도움을 주세요." }, - "subtitle6": "Get Involved", + "subtitle6": "참여하기", "body6": { - "paragraph1": "For more insights into Antelope Tools, check out our ", - "github": "GitHub Repository", - "paragraph2": "or join the conversation in our ", - "telegram": "Telegram Channel", - "paragraph3": "Become a part of our community and let's make blockchain networks more transparent and user-friendly together!" + "paragraph1": "안텔로프 도구에 대한 더 많은 통찰력을 얻으려면 저희 ", + "github": "GitHub 저장소", + "paragraph2": "를 확인하거나 저희 ", + "telegram": "텔레그램 채널", + "paragraph3": "에서 대화에 참여하세요. 저희 커뮤니티의 일부가 되어 블록체인 네트워크를 더 투명하고 사용자 친화적으로 만들어봅시다!" } }, "helpRoute": { - "title": "Thank You for Choosing Antelope Tools", - "paragraph": "We're thrilled you've chosen Antelope Tools for your blockchain network monitoring needs.", - "title2": "Configuring bp.json and chains.json Files: A Guide for Node Operators", + "title": "안텔로프 도구를 선택해 주셔서 감사합니다", + "paragraph": "블록체인 네트워크 모니터링을 위해 안텔로프 도구를 선택해 주셔서 기쁩니다.", + "title2": "노드 운영자를 위한 bp.json 및 chains.json 파일 구성 안내", "body3": { - "paragraph1Text1": "Antelope Tools offers detailed, real-time visualization and analytics for entities running nodes and blockchain infrastructure. Our data is sourced directly on-chain from the public ", - "eosioAccount": "producers table in the eosio system account.", - "paragraph1Text2": "We then query the URLs of all active Block Producers to retrieve essential information" + "paragraph1Text1": "안텔로프 도구는 노드 및 블록체인 인프라를 운영하는 엔티티를 위한 자세하고 실시간 시각화 및 분석을 제공합니다. 저희 데이터는 eosio 시스템 계정의 공개 ", + "eosioAccount": "생산자 테이블에서 직접 체인별로 수집됩니다.", + "paragraph1Text2": "그런 다음 모든 활성 블록 생산자의 URL을 조회하여 필수 정보를 검색합니다" }, - "subtitle3": "Leveraging the bp.json Standard for Block Producer and Node Details", - "standard": "using the bp.json standard", - "paragraph2": "If you're a node operator and your data isn't displaying as it should on our dashboard, you'll need to configure your bp.json and chains.json files. Here's a step-by-step guide:", - "bullet1Title": "Setting Up Your bp.json File:", - "bullet1": "Publish a /bp.json file on the website you used when registering via the 'regproducer' action on the eosio system contract. This file should include all pertinent information about your organization and the nodes you operate.", - "bullet2Title": "Managing Multiple Networks:", - "bullet2": "If you're operating nodes on multiple EOSIO-based blockchains, you'll need a chains.json file. This file maps each network's chain ID to the appropriate bp.json file.", - "subBullet2Title": "Example:", - "subBullet2": "If your registered URL is ", - "subBullet2b": ", the system first tries to access ", - "subBullet2c": ". If this file is not available, it defaults to ", - "bullet3Title": "Chain ID Importance:", - "bullet3": "Ensure your chains.json file contains the chain ID for proper network identification. If the chain ID is missing, only your organizational details will be displayed, omitting nodes and endpoints.", - "title3": "Utilize Our BP JSON Generator Tool", - "paragraph3": "We offer a BP JSON generator tool to simplify the creation and updating of your bp.json file. This tool gathers your Block Producer information and generates a bp.json file in the correct format. It also enables on-chain publishing to the `producerjson` smart contract.", - "bpjsonGenerator": "Check out our BP.JSON Generator", - "title4": "Contact Us", - "paragraph4": "Your feedback is crucial as we aim to continually enhance our platform. Feel free to suggest improvements, report issues, or contribute to our codebase.", - "githubEOSCR": "Visit our Edenia GitHub Repo", - "telegramChannel": "Join the Conversation in Our Telegram Channel", - "websiteEOSCR": "Discover Web3 Development Services by Edenia" + "subtitle3": "블록 생산자 및 노드 세부 정보를 위한 bp.json 표준 활용", + "standard": "bp.json 표준을 사용하여", + "paragraph2": "노드 운영자이며 대시보드에 데이터가 제대로 표시되지 않는 경우 bp.json 및 chains.json 파일을 구성해야 합니다. 다음은 단계별 가이드입니다:", + "bullet1Title": "bp.json 파일 설정:", + "bullet1": "eosio 시스템 계약의 'regproducer' 작업을 통해 등록한 웹사이트에 /bp.json 파일을 게시합니다. 이 파일에는 조직 및 운영하는 노드에 대한 모든 관련 정보가 포함되어야 합니다.", + "bullet2Title": "여러 네트워크 관리:", + "bullet2": "여러 EOSIO 기반 블록체인에서 노드를 운영하는 경우 chains.json 파일이 필요합니다. 이 파일은 각 네트워크의 체인 ID를 적절한 bp.json 파일에 매핑합니다.", + "subBullet2Title": "예시:", + "subBullet2": "등록한 URL이 ", + "subBullet2b": "인 경우, 시스템은 먼저 ", + "subBullet2c": "에 액세스를 시도합니다. 이 파일이 없는 경우 기본값으로 ", + "bullet3Title": "체인 ID의 중요성:", + "bullet3": "chains.json 파일에 올바른 네트워크 식별을 위한 체인 ID가 포함되어 있는지 확인하세요. 체인 ID가 누락된 경우 조직 세부 정보만 표시되며 노드와 엔드포인트는 생략됩니다.", + "title3": "BP JSON 생성기 도구 사용", + "paragraph3": "bp.json 파일 생성 및 업데이트를 간소화하기 위해 BP JSON 생성기 도구를 제공합니다. 이 도구는 블록 생산자 정보를 수집하여 올바른 형식의 bp.json 파일을 생성합니다. 또한 `producerjson` 스마트 계약에 온체인 게시를 가능하게 합니다.", + "bpjsonGenerator": "BP.JSON 생성기 확인하기", + "title4": "연락하기", + "paragraph4": "저희 플랫폼을 지속적으로 개선하기 위해 여러분의 피드백이 중요합니다. 개선 사항을 제안하거나 문제를 보고하거나 저희 코드베이스에 기여해 주세요.", + "githubEOSCR": "Edenia GitHub 저장소 방문하기", + "telegramChannel": "텔레그램 채널에서 대화 참여하기", + "websiteEOSCR": "Edenia의 Web3 개발 서비스 알아보기" }, "producerCardComponent": { - "bpProfile>title": "{{bpName}} Block Producer - {{networkName}} Dashboard", - "bpProfile>metaTitle": "{{bpName}} Block Producer on {{networkName}}", - "bpProfile>metaDescription": "Data of the Block Producer {{bpName}} on {{networkName}}, such as its rank, nodes and endpoints", - "rank": "Rank", - "account": "Account", - "website": "Website", - "votes": "Votes", - "rewards": "Rewards", - "country": "Country", - "eosRate": "EOS RATE", - "missedBlocks": "Missed Blocks", - "social": "Social", - "ownershipDisclosure": "Ownership Disclosure", - "codeofconduct": "Code of Conduct", - "chainResources": "Chain Resources", - "otherResources": "Other Resources", - "email": "Email", - "features": "Features", - "endpoints": "Endpoints", - "nodeVersion": "Version", - "cpuBenchmark": "CPU Benchmark Average", - "health": "Compliance", - "moreInfo": "More Info", - "version": "Version", - "info": "Info", - "keys": "Keys", - "location": "Location", - "stats": "Stats", - "peer_keys": "Peer Key", - "emptyState": "This block producer does not provide any information.", - "average": "average rating", - "ratings": "ratings", - "lastClaimTime": "Last Claimed Time", - "dailyRewards": "Daily Rewards", - "yearlyRewards": "Yearly Rewards", - "invalidUrl": "Invalid URL", - "viewList": "View undiscoverable BPs list", + "bpProfile>title": "{{bpName}} 블록 생산자 - {{networkName}} 대시보드", + "bpProfile>metaTitle": "{{networkName}}의 {{bpName}} 블록 생산자", + "bpProfile>metaDescription": "{{networkName}}의 블록 생산자 {{bpName}}에 대한 데이터, 예를 들어 순위, 노드 및 엔드포인트 등", + "rank": "순위", + "account": "계정", + "website": "웹사이트", + "votes": "투표", + "rewards": "보상", + "country": "국가", + "eosRate": "EOS 비율", + "missedBlocks": "누락된 블록", + "social": "소셜", + "ownershipDisclosure": "소유권 공개", + "codeofconduct": "행동 규칙", + "chainResources": "체인 자원", + "otherResources": "기타 자원", + "email": "이메일", + "features": "기능", + "endpoints": "엔드포인트", + "nodeVersion": "버전", + "cpuBenchmark": "CPU 벤치마크 평균", + "health": "준수", + "moreInfo": "더 많은 정보", + "version": "버전", + "info": "정보", + "keys": "키", + "location": "위치", + "stats": "통계", + "peer_keys": "피어 키", + "emptyState": "이 블록 생산자는 어떠한 정보도 제공하지 않습니다.", + "average": "평균 평가", + "ratings": "평가", + "lastClaimTime": "마지막 청구 시간", + "dailyRewards": "일일 보상", + "yearlyRewards": "연간 보상", + "invalidUrl": "잘못된 URL", + "viewList": "탐지 불가능한 BPs 목록 보기", "bpJson": "BP.json", - "viewProfile": "View BP Profile", - "BPonNetwork": "{{position}} Block Producer on {{networkName}}", - "generalInformation": "General Information", - "logo_256": "Logo", - "organization_name": "Name", - "viewNodes": "View {{totalNodes}} nodes", - "bpNodes": "{{bpName}} Nodes", - "viewNodesProfile": "See Full Nodes Info" + "viewProfile": "BP 프로필 보기", + "BPonNetwork": "{{networkName}}의 {{position}} 블록 생산자", + "generalInformation": "일반 정보", + "logo_256": "로고", + "organization_name": "이름", + "viewNodes": "{{totalNodes}}개 노드 보기", + "bpNodes": "{{bpName}} 노드", + "viewNodesProfile": "전체 노드 정보 보기" }, "nodeCardComponent": { - "features": "Features", - "endpoints": "Endpoints", - "nodeVersion": "Version", - "cpuBenchmark": "CPU Benchmark Average", - "isFull": "Is full", - "supportedApis": "Supported APIs", - "allWorking": "All endpoints are responding", - "noneWorking": "No endpoints are responding", - "endpointPlural": "Endpoints not responding are the", - "endpointSingular": "Endpoint not responding is the" + "features": "기능", + "endpoints": "엔드포인트", + "nodeVersion": "버전", + "cpuBenchmark": "CPU 벤치마크 평균", + "isFull": "전체 여부", + "supportedApis": "지원되는 API", + "allWorking": "모든 엔드포인트가 응답 중", + "noneWorking": "엔드포인트가 응답하지 않음", + "endpointPlural": "응답하지 않는 엔드포인트는", + "endpointSingular": "응답하지 않는 엔드포인트는" }, "producerHealthIndicatorsComponent": { - "hs_organization_name": "Name", - "hs_email": "Email", - "hs_website": "Website", - "hs_logo_256": "Logo (256px)", - "hs_country": "Country", - "hs_peer_keys": "Peer Keys", - "hs_endpoint": "Endpoint", - "missing": "Missing", - "found": "Found", + "hs_organization_name": "이름", + "hs_email": "이메일", + "hs_website": "웹사이트", + "hs_logo_256": "로고 (256px)", + "hs_country": "국가", + "hs_peer_keys": "피어 키", + "hs_endpoint": "엔드포인트", + "missing": "누락됨", + "found": "발견됨", "hs_bpJson": "BP Json" }, "accountInfoComponent": { - "resources": "Resources", - "contractActions": "Contract Actions", - "contractTables": "Contract Tables", - "ricardianContract": "Ricardian Contract" + "resources": "자원", + "contractActions": "계약 작업", + "contractTables": "계약 테이블", + "ricardianContract": "리카디안 계약" }, "contractTablesComponent": { - "table": "Table", - "scope": "Scope", - "lowerBound": "Lower Bound", - "upperBound": "Upper Bound", - "limit": "Limit", - "refreshData": "Refresh Data", - "index": "Index Position", - "keyType": "Index Type", - "loadMore": "Load More", - "emptyTable": "Empty Table" + "table": "테이블", + "scope": "범위", + "lowerBound": "하한", + "upperBound": "상한", + "limit": "제한", + "refreshData": "데이터 새로 고침", + "index": "인덱스 위치", + "keyType": "인덱스 유형", + "loadMore": "더 불러오기", + "emptyTable": "빈 테이블" }, "contractActionsComponent": { - "action": "Action" + "action": "작업" }, "contractActionFormComponent": { - "executeTransaction": "Execute Transaction", - "owner": "Owner" + "executeTransaction": "트랜잭션 실행", + "owner": "소유자" }, "undiscoverableBPsRoute": { - "noResultsFound": "Well Done! All Block Producers are Operating Transparently." + "noResultsFound": "잘했습니다! 모든 블록 생산자가 투명하게 운영되고 있습니다." }, "blockDistributionRoute": { - "title": "Blocks generated by producer", - "blocksProduced": "Blocks Produced", - "percent": "Percent" + "title": "생산자별 생성된 블록", + "blocksProduced": "생성된 블록", + "percent": "퍼센트" }, "missedBlocksRoute": { - "title": "Missed Blocks by producer", - "producedBlocks": "Produced Blocks", - "scheduledBlocks": "Scheduled Blocks", - "availability": "Availability" + "title": "생산자별 누락된 블록", + "producedBlocks": "생산된 블록", + "scheduledBlocks": "예정된 블록", + "availability": "가용성" }, "endpointsListRoute": { - "title": "Endpoints available by", - "endpointsResponding": "Only endpoints responding", - "linkToStats": "Go to stats", - "filterEndpoints": "Filter responding endpoints", - "copyToClipboard": "Click to Copy responding endpoints from the column to the clipboard" + "title": "의 사용 가능한 엔드포인트", + "endpointsResponding": "응답하는 엔드포인트만", + "linkToStats": "통계로 이동", + "filterEndpoints": "응답하는 엔드포인트 필터링", + "copyToClipboard": "열에서 응답하는 엔드포인트를 클립보드로 복사하려면 클릭하세요" }, "cpuBenchmarkRoute": { - "title": "CPU Usage in Microseconds", - "lowest": "Lowest", - "highest": "Highest", - "average": "Average", - "hideAll": "Hide All", - "showAll": "Show All", - "selectTo": "Select an account to toggle or", - "zoomTo": "Drag or Pinch to Zoom In/Out on the Chart" + "title": "마이크로초 단위의 CPU 사용량", + "lowest": "최저", + "highest": "최고", + "average": "평균", + "hideAll": "모두 숨기기", + "showAll": "모두 표시", + "selectTo": "토글하려면 계정을 선택하거나", + "zoomTo": "차트에서 확대/축소하려면 드래그하거나 핀치하세요" }, "producerSearchComponent": { - "partner": "Partner", - "nonPartner": "Non-Partner", - "all": "All", - "allBPs": "All Block Producers", - "top21": "Top 21", - "paidStandby": "Paid Standby", - "nonPaidStandby": "Non-Paid Standby", - "title": "Search Producer", - "producer": "Producer", - "placeholder": "Producer Name" + "partner": "파트너", + "nonPartner": "비파트너", + "all": "전체", + "allBPs": "모든 블록 생산자", + "top21": "상위 21개", + "paidStandby": "유료 대기", + "nonPaidStandby": "비유료 대기", + "title": "생산자 검색", + "producer": "생산자", + "placeholder": "생산자 이름" }, "endpointInfoComponent": { - "status": "Status", - "response": "Response", - "headBlockTime": "Head Block Time", - "updatedAt": "Last check", - "error": "Error", - "noResponse": "No response" + "status": "상태", + "response": "응답", + "headBlockTime": "헤드 블록 시간", + "updatedAt": "마지막 확인", + "error": "오류", + "noResponse": "응답 없음" }, "nodeSearchComponent": { - "title": "Search Node", - "producer": "Producer", - "placeholder": "Node Name" + "title": "노드 검색", + "producer": "생산자", + "placeholder": "노드 이름" }, "noResultsComponent": { - "noResultsFound": "No results found" + "noResultsFound": "결과를 찾을 수 없음" }, "healthCheckComponent": { - "updated": "Endpoint is fully operational", - "outdated": "Endpoint is functional but lagging behind the latest block", - "error": "An error occurred while accessing the endpoint", - "not working": "Endpoint is currently unresponsive", - "helpText": "Hover over or click the icons to reveal the current health status of each endpoint" + "updated": "엔드포인트가 완전히 작동 중", + "outdated": "엔드포인트가 작동하지만 최신 블록보다 뒤처짐", + "error": "엔드포인트에 접근하는 동안 오류 발생", + "not working": "엔드포인트가 현재 응답하지 않음", + "helpText": "각 엔드포인트의 현재 건강 상태를 확인하려면 아이콘 위에 마우스를 올리거나 클릭하세요" }, "copyToClipboardComponent": { - "copy": "Click to Copy", - "copyToClipboard": "Copy to Clipboard", - "copied": "Successfully Copied!" + "copy": "복사하려면 클릭", + "copyToClipboard": "클립보드에 복사", + "copied": "성공적으로 복사됨!" }, "noFound": { - "subTitle": "Oops! Page Not Found.", - "message": "The page you're searching for has either been moved or doesn't exist.", - "return": "Go Back to Home Page" + "subTitle": "이런! 페이지를 찾을 수 없습니다.", + "message": "찾고 있는 페이지가 이동되었거나 존재하지 않습니다.", + "return": "홈페이지로 돌아가기" }, "mainMapComponent": { - "numberOfNodes": "Number of Nodes" + "numberOfNodes": "노드 수" }, "EndpointsStatsRoute": { - "fastest": "Top 5 fastest endpoints by querying from Costa Rica", - "byProducer": "Endpoints stats by producer", - "avgAvailability": "Average Availability", - "avgTime": "Average Response Time", - "charTitle": "Average Response Time from Costa Rica", - "list": "List of endpoints", - "timeInSecs": "Time in seconds" + "fastest": "코스타리카에서 쿼리한 가장 빠른 상위 5개 엔드포인트", + "byProducer": "생산자별 엔드포인트 통계", + "avgAvailability": "평균 가용성", + "avgTime": "평균 응답 시간", + "charTitle": "코스타리카에서 평균 응답 시간", + "list": "엔드포인트 목록", + "timeInSecs": "초 단위 시간" }, "evmDashboardRoute": { - "totalWallets": "Total wallets created", - "avgBlockTime": "Average block time", - "gasPrice": "Gas price", - "avgGasUsage": "Average gas usage", - "totalIncoming": "Total {{token}} incoming", - "totalOutgoing": "Total {{token}} outgoing", - "incoming": "Incoming", - "outgoing": "Outgoing", - "ATH": "TPS All Time High", - "lastBlock": "Last block", - "totalTxs": "Total EVM transactions", - "transactions": "EVM transactions", - "gasUsed": "Gas Used", + "totalWallets": "생성된 총 지갑 수", + "avgBlockTime": "평균 블록 시간", + "gasPrice": "가스 가격", + "avgGasUsage": "평균 가스 사용량", + "totalIncoming": "총 {{token}} 수신", + "totalOutgoing": "총 {{token}} 송신", + "incoming": "수신", + "outgoing": "송신", + "ATH": "역대 최고 TPS", + "lastBlock": "마지막 블록", + "totalTxs": "총 EVM 트랜잭션", + "transactions": "EVM 트랜잭션", + "gasUsed": "사용된 가스", "tooltip": { - "totalWallets": "EVM active addresses of the account table from {{accountName}} contract", - "gasPrice": "The cost of computational work in EVM, measured in Gas", - "avgGasUsage": "Average Gas Consumed Over the Last 100 Blocks", - "totalIncoming": "Total Transfers Received by {{accountName}}", - "totalOutgoing": "Total Transfers Sent by {{accountName}}", - "ATH": "Peak Transactions Per Second (TPS) Recorded", - "lastBlock": "Latest Confirmed Ethereum Block", - "totalTxs": "Total Transactions Since Genesis Block" + "totalWallets": "{{accountName}} 계약의 계정 테이블에서 EVM 활성 주소", + "gasPrice": "EVM에서의 컴퓨팅 작업 비용, 가스 단위로 측정", + "avgGasUsage": "최근 100 블록에서 평균 가스 소비량", + "totalIncoming": "{{accountName}}으로부터의 총 전송 수신", + "totalOutgoing": "{{accountName}}으로부터의 총 전송 송신", + "ATH": "기록된 최고 초당 트랜잭션(TPS)", + "lastBlock": "최신 확인된 이더리움 블록", + "totalTxs": "제네시스 블록 이후 총 트랜잭션 수" } }, "evmEndpointsRoute": { - "title": "List of EVM Endpoints", - "rpcEndpoint": "RPC Endpoint", - "latency": "Network Latency", - "lastBlock": "Last block", - "rerun": "Re-run health checks", - "filterEndpoints": "Filter Active Endpoints" + "title": "EVM 엔드포인트 목록", + "rpcEndpoint": "RPC 엔드포인트", + "latency": "네트워크 대기 시간", + "lastBlock": "마지막 블록", + "rerun": "건강 검사 다시 실행", + "filterEndpoints": "활성 엔드포인트 필터링" } -} +} \ No newline at end of file diff --git a/webapp/src/language/ko/ko.jungle.json b/webapp/src/language/ko/ko.jungle.json index 2e8608422..c2de6a8d6 100644 --- a/webapp/src/language/ko/ko.jungle.json +++ b/webapp/src/language/ko/ko.jungle.json @@ -1,5 +1,5 @@ { "routes": { - "/evm>moreDescription": "Monitor EVM statistics, such as transaction amount history, gas price and total wallets created." + "/evm>moreDescription": "거래량 기록, 가스 가격 및 생성된 총 지갑과 같은 EVM 통계를 모니터링합니다." } -} +} \ No newline at end of file diff --git a/webapp/src/language/ko/ko.lacchain.json b/webapp/src/language/ko/ko.lacchain.json index 22c143aa1..b956d6090 100644 --- a/webapp/src/language/ko/ko.lacchain.json +++ b/webapp/src/language/ko/ko.lacchain.json @@ -1,157 +1,157 @@ { "routes": { - "/entities>sidebar": "Entities", - "/entities>title": "Entities - {{networkName}} + Antelope Network Dashboard", - "/entities>heading": "Entities", - "/entities>moreDescription": "A list of entities that are part the network. They can be partner or non-partner entities.", - "/lacchain/network>sidebar": "Network Topology", - "/lacchain/network>title": "Network Topology - {{networkName}} + Antelope Network Dashboard", - "/lacchain/network>heading": "Network Topology", - "/lacchain/network>moreDescription": "A visual representation of the network’s current nodes.", - "/management>sidebar": "Management", - "/management>title": "Management - {{networkName}} + Antelope Network Dashboard", - "/management>heading": "Management", - "/management>moreDescription": "Log in to manage your LACChain account.", - "/node-config>sidebar": "Node config", - "/node-config>title": "Node config - {{networkName}} + Antelope Network Dashboard", - "/node-config>heading": "Configure a new node", - "/ricardian-contract>sidebar": "Validator Agreement", + "/entities>sidebar": "엔티티", + "/entities>title": "엔티티 - {{networkName}} + 안텔로프 네트워크 대시보드", + "/entities>heading": "엔티티", + "/entities>moreDescription": "네트워크의 일부인 엔티티 목록입니다. 파트너 또는 비파트너 엔티티일 수 있습니다.", + "/lacchain/network>sidebar": "네트워크 토폴로지", + "/lacchain/network>title": "네트워크 토폴로지 - {{networkName}} + 안텔로프 네트워크 대시보드", + "/lacchain/network>heading": "네트워크 토폴로지", + "/lacchain/network>moreDescription": "네트워크의 현재 노드들의 시각적 표현입니다.", + "/management>sidebar": "관리", + "/management>title": "관리 - {{networkName}} + 안텔로프 네트워크 대시보드", + "/management>heading": "관리", + "/management>moreDescription": "LACChain 계정으로 로그인하여 관리 기능을 사용하세요.", + "/node-config>sidebar": "노드 구성", + "/node-config>title": "노드 구성 - {{networkName}} + 안텔로프 네트워크 대시보드", + "/node-config>heading": "새 노드 구성", + "/ricardian-contract>sidebar": "검증자 계약", "/ricardian-contract>heading": "", - "/cpu-benchmark>title": "CPU Benchmarks - {{networkName}} + Antelope Network Dashboard", - "/block-producers>title": "Block Producers - {{networkName}} + Antelope Network Dashboard", - "/rewards-distribution>title": "Rewards Distribution - {{networkName}} + Antelope Network Dashboard", - "/nodes>title": "{{networkName}} Nodes Status Monitor", - "/nodes-distribution>title": "Geographic Distribution of Nodes - {{networkName}} + Antelope Network Dashboard", - "/accounts>title": "Accounts and Contracts - {{networkName}} + Antelope Network Dashboard", - "/bpjson>title": "BP JSON - {{networkName}} + Antelope Network Dashboard", - "/ricardian-contract>title": "BP Agreement - {{networkName}} + Antelope Network Dashboard", - "/block-distribution>title": "Block Production Distribution - {{networkName}} + Antelope Network Dashboard", - "/missed-blocks>title": "Missed Blocks - {{networkName}} + Antelope Network Dashboard", - "/endpoints>title": "API Endpoints - {{networkName}} + Antelope Network Dashboard", - "/endpoints-stats>title": "API Endpoints Stats- {{networkName}} + Antelope Network Dashboard", - "/about>title": "About - {{networkName}} + Antelope Network Dashboard", - "/help>title": "Help - {{networkName}} + Antelope Network Dashboard" + "/cpu-benchmark>title": "CPU 벤치마크 - {{networkName}} + 안텔로프 네트워크 대시보드", + "/block-producers>title": "블록 생산자 - {{networkName}} + 안텔로프 네트워크 대시보드", + "/rewards-distribution>title": "보상 분배 - {{networkName}} + 안텔로프 네트워크 대시보드", + "/nodes>title": "{{networkName}} 노드 상태 모니터", + "/nodes-distribution>title": "노드의 지리적 분포 - {{networkName}} + 안텔로프 네트워크 대시보드", + "/accounts>title": "계정 및 계약 - {{networkName}} + 안텔로프 네트워크 대시보드", + "/bpjson>title": "BP JSON - {{networkName}} + 안텔로프 네트워크 대시보드", + "/ricardian-contract>title": "BP 계약 - {{networkName}} + 안텔로프 네트워크 대시보드", + "/block-distribution>title": "블록 생산 분배 - {{networkName}} + 안텔로프 네트워크 대시보드", + "/missed-blocks>title": "누락된 블록 - {{networkName}} + 안텔로프 네트워크 대시보드", + "/endpoints>title": "API 엔드포인트 - {{networkName}} + 안텔로프 네트워크 대시보드", + "/endpoints-stats>title": "API 엔드포인트 통계 - {{networkName}} + 안텔로프 네트워크 대시보드", + "/about>title": "소개 - {{networkName}} + 안텔로프 네트워크 대시보드", + "/help>title": "도움말 - {{networkName}} + 안텔로프 네트워크 대시보드" }, "common": { - "producerName": "Entity name", - "producers": "Entities", - "producer": "Entity", - "boot": "Boot", - "writer": "Writer", - "observer": "Observer", - "validator": "Validator", - "partner": "Partner", - "nonPartner": "Non-Partner" + "producerName": "엔티티 이름", + "producers": "엔티티", + "producer": "엔티티", + "boot": "부트", + "writer": "작성자", + "observer": "관찰자", + "validator": "검증자", + "partner": "파트너", + "nonPartner": "비파트너" }, "producerCardComponent": { - "entityType": "Entity type", - "entityType1": "Partner", - "entityType2": "Non-Partner", - "viewProfile": "View Entity Profile", - "BPonNetwork": "Entity on {{networkName}}" + "entityType": "엔티티 유형", + "entityType1": "파트너", + "entityType2": "비파트너", + "viewProfile": "엔티티 프로필 보기", + "BPonNetwork": "{{networkName}}의 엔티티" }, "lacchainAddEntityActionEntityTypeFieldComponent": { - "entityType1": "Partner", - "entityType2": "Non-Partner" + "entityType1": "파트너", + "entityType2": "비파트너" }, "lacchainManagement": { - "loginWarning": "Please log in with your LACChain account to use this feature.", - "noneActionWarning": "There is no actions available for your account.", - "setentinfoTitle": "Set Entity Info", - "setentinfoTooltip": "Set on-chain information for your LACChain entity.", - "setnodeinfoTitle": "Set Node Info", - "setnodeinfoTooltip": "Set onchain information for a node you manage.", - "newaccountTitle": "New Account", - "newaccountTooltip": "Create a new account", - "addentityTitle": "Add Entity", - "addentityTooltip": "Register a new entity on the network.", - "addbootTitle": "Add Boot Node", - "addbootTooltip": "Register a new boot node on the network.", - "addobserverTitle": "Add Observer Node", - "addobserverTooltip": "Register a new observer node on the network.", - "setscheduleTitle": "Set Validator Schedule", - "setscheduleTooltip": "Set the group of blockproducing validator nodes.", - "addvalidatorTitle": "Add Validator Node", - "addvalidatorTooltip": "Register a new validator node on the network.", - "addwriterTitle": "Add Writer Node", - "addwriterTooltip": "Register a new writer node on the network.", - "setalimitsTitle": "Set Account Limits", - "setalimitsTooltip": "Set account CPU and NET resource limits.", - "netrmgroupTitle": "Remove Net Group", - "netrmgroupTooltip": "Remove a Group.", - "netsetgroupTitle": "Set Net Group", - "netsetgroupTooltip": "Set Net Group.", - "netaddgroupTitle": "Add Net Group", - "netaddgroupTooltip": "Add Net Group.", - "setramTitle": "Set RAM", - "setramTooltip": "Set RAM for an account.", - "setentxinfoTitle": "Set extended entity info", - "setentxinfoTooltip": "Set extended entity info.", - "setnodexinfoTitle": "Set extended node info", - "setnodexinfoTooltip": "Set extended node info.", - "rmnodeTitle": "Remove Node", - "rmnodeTooltip": "Allow remove a Validator Node from the network.", - "rmentityTitle": "Remove Entity", - "rmentityTooltip": "Allow remove an entity from the network.", - "entity": "Entity", - "organization_name": "Organization Name", - "organization_id": "Organization ID", - "technical_contact": "Technical Contact", - "business_contact": "Business Contact", - "email": "E-mail", - "website": "Website", - "code_of_conduct": "Code of Conduct", - "ownership_disclosure": "Ownership Disclosure", - "github_user": "GitHub user", - "chain_resources": "Chain Resources", - "other_resources": "Other Resources", - "logo_256": "Logo 256", - "logo_1024": "Logo 1024", - "logo_svg": "Logo SVG", - "location_name": "Location Name", - "country": "Country", - "latitude": "Latitude", - "longitude": "Longitude", - "hive": "Hive", - "twitter": "Twitter", - "youtube": "Youtube", - "facebook": "Facebook", - "github": "Github", - "reddit": "Reddit", - "keybase": "Keybase", - "telegram": "Telegram", - "webchat": "Webchat", - "name": "Name", - "node_name": "Node Name", - "node": "Node", - "peer_keys": "Peer keys", - "location_country": "Location Country", - "location_latitude": "Location Latitude", - "location_longitude": "Location Longitude", - "observer": "Observer", - "owner": "Owner", - "active": "Active", - "public_key": "Public key", - "writer_authority": "Writer Authority", - "validator_authority": "Validator Authority", - "ram_bytes": "RAM bytes", - "account": "Account", - "executeTransaction": "Execute Transaction", - "creator": "Creator", - "comiteeAccount": "Permissioning Comitee Account Management", - "partnerAccount": "Partner Entity Management", - "nonPartnerAccount": "Non-Partner Entity Management" + "loginWarning": "이 기능을 사용하려면 LACChain 계정으로 로그인하세요.", + "noneActionWarning": "계정에 사용할 수 있는 작업이 없습니다.", + "setentinfoTitle": "엔티티 정보 설정", + "setentinfoTooltip": "LACChain 엔티티에 대한 체인상의 정보를 설정합니다.", + "setnodeinfoTitle": "노드 정보 설정", + "setnodeinfoTooltip": "관리하는 노드에 대한 체인상의 정보를 설정합니다.", + "newaccountTitle": "새 계정", + "newaccountTooltip": "새 계정 생성", + "addentityTitle": "엔티티 추가", + "addentityTooltip": "네트워크에 새 엔티티 등록", + "addbootTitle": "부트 노드 추가", + "addbootTooltip": "네트워크에 새 부트 노드 등록", + "addobserverTitle": "관찰자 노드 추가", + "addobserverTooltip": "네트워크에 새 관찰자 노드 등록", + "setscheduleTitle": "검증자 일정 설정", + "setscheduleTooltip": "블록 생성 검증자 노드 그룹 설정", + "addvalidatorTitle": "검증자 노드 추가", + "addvalidatorTooltip": "네트워크에 새 검증자 노드 등록", + "addwriterTitle": "작성자 노드 추가", + "addwriterTooltip": "네트워크에 새 작성자 노드 등록", + "setalimitsTitle": "계정 한도 설정", + "setalimitsTooltip": "계정 CPU 및 NET 자원 한도 설정", + "netrmgroupTitle": "네트 그룹 제거", + "netrmgroupTooltip": "그룹 제거", + "netsetgroupTitle": "네트 그룹 설정", + "netsetgroupTooltip": "네트 그룹 설정", + "netaddgroupTitle": "네트 그룹 추가", + "netaddgroupTooltip": "네트 그룹 추가", + "setramTitle": "RAM 설정", + "setramTooltip": "계정에 대한 RAM 설정", + "setentxinfoTitle": "확장 엔티티 정보 설정", + "setentxinfoTooltip": "확장 엔티티 정보 설정", + "setnodexinfoTitle": "확장 노드 정보 설정", + "setnodexinfoTooltip": "확장 노드 정보 설정", + "rmnodeTitle": "노드 제거", + "rmnodeTooltip": "네트워크에서 검증자 노드 제거 가능", + "rmentityTitle": "엔티티 제거", + "rmentityTooltip": "네트워크에서 엔티티 제거 가능", + "entity": "엔티티", + "organization_name": "기관 이름", + "organization_id": "기관 ID", + "technical_contact": "기술 연락처", + "business_contact": "사업 연락처", + "email": "이메일", + "website": "웹사이트", + "code_of_conduct": "행동 규칙", + "ownership_disclosure": "소유권 공개", + "github_user": "깃허브 사용자", + "chain_resources": "체인 자원", + "other_resources": "기타 자원", + "logo_256": "로고 256", + "logo_1024": "로고 1024", + "logo_svg": "로고 SVG", + "location_name": "위치 이름", + "country": "국가", + "latitude": "위도", + "longitude": "경도", + "hive": "하이브", + "twitter": "트위터", + "youtube": "유튜브", + "facebook": "페이스북", + "github": "깃허브", + "reddit": "레딧", + "keybase": "키베이스", + "telegram": "텔레그램", + "webchat": "웹챗", + "name": "이름", + "node_name": "노드 이름", + "node": "노드", + "peer_keys": "피어 키", + "location_country": "위치 국가", + "location_latitude": "위치 위도", + "location_longitude": "위치 경도", + "observer": "관찰자", + "owner": "소유자", + "active": "활성", + "public_key": "공개 키", + "writer_authority": "작성자 권한", + "validator_authority": "검증자 권한", + "ram_bytes": "RAM 바이트", + "account": "계정", + "executeTransaction": "트랜잭션 실행", + "creator": "생성자", + "comiteeAccount": "권한 위원회 계정 관리", + "partnerAccount": "파트너 엔티티 관리", + "nonPartnerAccount": "비파트너 엔티티 관리" }, "blockDistributionRoute": { - "title": "Blocks Generated by Node" + "title": "노드별 생성된 블록" }, "missedBlocksRoute": { - "title": "Missed Blocks by Node" + "title": "노드별 누락된 블록" }, "ricardianContractRoute": { - "title": "LACChain Validator Node Agreement" + "title": "LACChain 검증자 노드 계약" }, "producerSearchComponent": { - "title": "Search Entity" + "title": "엔티티 검색" } -} +} \ No newline at end of file diff --git a/webapp/src/language/ko/ko.libre-testnet.json b/webapp/src/language/ko/ko.libre-testnet.json index 572596da5..0f60fb8f8 100644 --- a/webapp/src/language/ko/ko.libre-testnet.json +++ b/webapp/src/language/ko/ko.libre-testnet.json @@ -1,5 +1,5 @@ { "routes": { - "/faucet>moreDescription": "This tool allows you to create an account and get LIBRE testnet tokens." + "/faucet>moreDescription": "이 도구를 사용하여 계정을 생성하고 LIBRE 테스트넷 토큰을 받을 수 있습니다." } -} +} \ No newline at end of file diff --git a/webapp/src/language/ko/ko.mainnet.json b/webapp/src/language/ko/ko.mainnet.json index 63761a65a..a9c51c922 100644 --- a/webapp/src/language/ko/ko.mainnet.json +++ b/webapp/src/language/ko/ko.mainnet.json @@ -1,20 +1,20 @@ { "routes": { - "/>title": "EOS Network Monitor and Infrastructure Dashboard", - "/cpu-benchmark>title": "CPU Benchmarks - EOS Network Monitor", - "/block-producers>title": "Block Producers - EOS Network Monitor", - "/rewards-distribution>title": "Rewards Distribution - EOS Network Monitor", - "/nodes-distribution>title": "Geographic Distribution of Nodes - EOS Network Monitor", - "/accounts>title": "Accounts and Contracts - EOS Network Monitor", - "/bpjson>title": "BP JSON - EOS Network Monitor", - "/ricardian-contract>title": "BP Agreement - EOS Network Monitor", - "/block-distribution>title": "Block Production Distribution - EOS Network Monitor", - "/missed-blocks>title": "Missed Blocks - EOS Network Monitor", - "/endpoints>title": "API Endpoints - EOS Network Monitor", - "/endpoints-stats>title": "API Endpoints Stats- EOS Network Monitor", - "/about>title": "About - EOS Network Monitor", - "/help>title": "Help - EOS Network Monitor", - "/undiscoverable-bps>title": "Undiscoverable Block Producers or Sock Puppet BPs - EOS Network Monitor", - "/evm>moreDescription": "Monitor EVM statistics, such as transaction amount history, gas price and total wallets created." + "/>title": "EOS 네트워크 모니터 및 인프라 대시보드", + "/cpu-benchmark>title": "CPU 벤치마크 - EOS 네트워크 모니터", + "/block-producers>title": "블록 생산자 - EOS 네트워크 모니터", + "/rewards-distribution>title": "보상 분배 - EOS 네트워크 모니터", + "/nodes-distribution>title": "노드의 지리적 분포 - EOS 네트워크 모니터", + "/accounts>title": "계정 및 계약 - EOS 네트워크 모니터", + "/bpjson>title": "BP JSON - EOS 네트워크 모니터", + "/ricardian-contract>title": "BP 계약 - EOS 네트워크 모니터", + "/block-distribution>title": "블록 생산 분배 - EOS 네트워크 모니터", + "/missed-blocks>title": "누락된 블록 - EOS 네트워크 모니터", + "/endpoints>title": "API 엔드포인트 - EOS 네트워크 모니터", + "/endpoints-stats>title": "API 엔드포인트 통계 - EOS 네트워크 모니터", + "/about>title": "소개 - EOS 네트워크 모니터", + "/help>title": "도움말 - EOS 네트워크 모니터", + "/undiscoverable-bps>title": "탐지 불가능한 블록 생산자 또는 양면 인형 BPs - EOS 네트워크 모니터", + "/evm>moreDescription": "거래량 기록, 가스 가격 및 생성된 총 지갑과 같은 EVM 통계를 모니터링합니다." } -} +} \ No newline at end of file diff --git a/webapp/src/language/ko/ko.telos-testnet.json b/webapp/src/language/ko/ko.telos-testnet.json index 618f5ec62..c21554459 100644 --- a/webapp/src/language/ko/ko.telos-testnet.json +++ b/webapp/src/language/ko/ko.telos-testnet.json @@ -1,6 +1,6 @@ { "routes": { - "/evm>moreDescription": "Monitor Telos EVM statistics (tEVM), such as transaction amount history, gas price and total wallets created.", - "/evm-rpc-endpoints>moreDescription": "A list of Telos EVM (tEVM) endpoints, with their health status and latency in milliseconds." + "/evm>moreDescription": "Telos EVM(tEVM) 통계를 모니터링합니다. 예를 들어 거래량 기록, 가스 가격 및 생성된 총 지갑 등을 포함합니다.", + "/evm-rpc-endpoints>moreDescription": "Telos EVM(tEVM) 엔드포인트 목록으로, 그들의 건강 상태와 밀리초 단위의 지연 시간이 포함되어 있습니다." } -} +} \ No newline at end of file diff --git a/webapp/src/language/ko/ko.telos.json b/webapp/src/language/ko/ko.telos.json index 618f5ec62..c21554459 100644 --- a/webapp/src/language/ko/ko.telos.json +++ b/webapp/src/language/ko/ko.telos.json @@ -1,6 +1,6 @@ { "routes": { - "/evm>moreDescription": "Monitor Telos EVM statistics (tEVM), such as transaction amount history, gas price and total wallets created.", - "/evm-rpc-endpoints>moreDescription": "A list of Telos EVM (tEVM) endpoints, with their health status and latency in milliseconds." + "/evm>moreDescription": "Telos EVM(tEVM) 통계를 모니터링합니다. 예를 들어 거래량 기록, 가스 가격 및 생성된 총 지갑 등을 포함합니다.", + "/evm-rpc-endpoints>moreDescription": "Telos EVM(tEVM) 엔드포인트 목록으로, 그들의 건강 상태와 밀리초 단위의 지연 시간이 포함되어 있습니다." } -} +} \ No newline at end of file diff --git a/webapp/src/language/ko/ko.ultra-testnet.json b/webapp/src/language/ko/ko.ultra-testnet.json index 565b9cbca..9be018a23 100644 --- a/webapp/src/language/ko/ko.ultra-testnet.json +++ b/webapp/src/language/ko/ko.ultra-testnet.json @@ -1,6 +1,6 @@ { "routes": { - "/faucet>moreDescription": "This tool allows you to create an account and get UOS testnet tokens.", - "/>moreDescription": "Find information on the {{networkName}} Network and its current status." + "/faucet>moreDescription": "이 도구를 사용하여 계정을 생성하고 UOS 테스트넷 토큰을 받을 수 있습니다.", + "/>moreDescription": "{{networkName}} 네트워크 및 현재 상태에 대한 정보를 찾을 수 있습니다." } -} +} \ No newline at end of file diff --git a/webapp/src/language/ko/ko.xpr-testnet.json b/webapp/src/language/ko/ko.xpr-testnet.json index 182db6a59..68aaa9f84 100644 --- a/webapp/src/language/ko/ko.xpr-testnet.json +++ b/webapp/src/language/ko/ko.xpr-testnet.json @@ -1,20 +1,20 @@ { "routes": { - "/>title": "{{networkName}} Monitor and Infrastructure Dashboard", - "/cpu-benchmark>title": "CPU Benchmarks - {{networkName}} Dashboard", - "/block-producers>title": "Block Producers - {{networkName}} Dashboard", - "/rewards-distribution>title": "Rewards Distribution - {{networkName}} Dashboard", - "/undiscoverable-bps>title": "Paid undiscoverable Block Producers - {{networkName}} Dashboard", - "/nodes>title": "{{networkName}} Nodes Status Monitor", - "/nodes-distribution>title": "Geographic Distribution of Nodes - {{networkName}} Dashboard", - "/accounts>title": "Accounts and Contracts - {{networkName}} Dashboard", - "/bpjson>title": "BP JSON - {{networkName}} Dashboard", - "/ricardian-contract>title": "BP Agreement - {{networkName}} Dashboard", - "/block-distribution>title": "Block Production Distribution - {{networkName}} Dashboard", - "/missed-blocks>title": "Missed Blocks - {{networkName}} Dashboard", - "/endpoints>title": "API Endpoints - {{networkName}} Dashboard", - "/endpoints-stats>title": "API Endpoints Stats- {{networkName}} Dashboard", - "/about>title": "About - {{networkName}} Dashboard", - "/help>title": "Help - {{networkName}} Dashboard" + "/>title": "{{networkName}} 모니터 및 인프라 대시보드", + "/cpu-benchmark>title": "CPU 벤치마크 - {{networkName}} 대시보드", + "/block-producers>title": "블록 생산자 - {{networkName}} 대시보드", + "/rewards-distribution>title": "보상 분배 - {{networkName}} 대시보드", + "/undiscoverable-bps>title": "탐지 불가능한 유료 블록 생산자 - {{networkName}} 대시보드", + "/nodes>title": "{{networkName}} 노드 상태 모니터", + "/nodes-distribution>title": "노드의 지리적 분포 - {{networkName}} 대시보드", + "/accounts>title": "계정 및 계약 - {{networkName}} 대시보드", + "/bpjson>title": "BP JSON - {{networkName}} 대시보드", + "/ricardian-contract>title": "BP 계약 - {{networkName}} 대시보드", + "/block-distribution>title": "블록 생산 분배 - {{networkName}} 대시보드", + "/missed-blocks>title": "누락된 블록 - {{networkName}} 대시보드", + "/endpoints>title": "API 엔드포인트 - {{networkName}} 대시보드", + "/endpoints-stats>title": "API 엔드포인트 통계 - {{networkName}} 대시보드", + "/about>title": "소개 - {{networkName}} 대시보드", + "/help>title": "도움말 - {{networkName}} 대시보드" } -} +} \ No newline at end of file diff --git a/webapp/src/language/ko/ko.xpr.json b/webapp/src/language/ko/ko.xpr.json index 182db6a59..68aaa9f84 100644 --- a/webapp/src/language/ko/ko.xpr.json +++ b/webapp/src/language/ko/ko.xpr.json @@ -1,20 +1,20 @@ { "routes": { - "/>title": "{{networkName}} Monitor and Infrastructure Dashboard", - "/cpu-benchmark>title": "CPU Benchmarks - {{networkName}} Dashboard", - "/block-producers>title": "Block Producers - {{networkName}} Dashboard", - "/rewards-distribution>title": "Rewards Distribution - {{networkName}} Dashboard", - "/undiscoverable-bps>title": "Paid undiscoverable Block Producers - {{networkName}} Dashboard", - "/nodes>title": "{{networkName}} Nodes Status Monitor", - "/nodes-distribution>title": "Geographic Distribution of Nodes - {{networkName}} Dashboard", - "/accounts>title": "Accounts and Contracts - {{networkName}} Dashboard", - "/bpjson>title": "BP JSON - {{networkName}} Dashboard", - "/ricardian-contract>title": "BP Agreement - {{networkName}} Dashboard", - "/block-distribution>title": "Block Production Distribution - {{networkName}} Dashboard", - "/missed-blocks>title": "Missed Blocks - {{networkName}} Dashboard", - "/endpoints>title": "API Endpoints - {{networkName}} Dashboard", - "/endpoints-stats>title": "API Endpoints Stats- {{networkName}} Dashboard", - "/about>title": "About - {{networkName}} Dashboard", - "/help>title": "Help - {{networkName}} Dashboard" + "/>title": "{{networkName}} 모니터 및 인프라 대시보드", + "/cpu-benchmark>title": "CPU 벤치마크 - {{networkName}} 대시보드", + "/block-producers>title": "블록 생산자 - {{networkName}} 대시보드", + "/rewards-distribution>title": "보상 분배 - {{networkName}} 대시보드", + "/undiscoverable-bps>title": "탐지 불가능한 유료 블록 생산자 - {{networkName}} 대시보드", + "/nodes>title": "{{networkName}} 노드 상태 모니터", + "/nodes-distribution>title": "노드의 지리적 분포 - {{networkName}} 대시보드", + "/accounts>title": "계정 및 계약 - {{networkName}} 대시보드", + "/bpjson>title": "BP JSON - {{networkName}} 대시보드", + "/ricardian-contract>title": "BP 계약 - {{networkName}} 대시보드", + "/block-distribution>title": "블록 생산 분배 - {{networkName}} 대시보드", + "/missed-blocks>title": "누락된 블록 - {{networkName}} 대시보드", + "/endpoints>title": "API 엔드포인트 - {{networkName}} 대시보드", + "/endpoints-stats>title": "API 엔드포인트 통계 - {{networkName}} 대시보드", + "/about>title": "소개 - {{networkName}} 대시보드", + "/help>title": "도움말 - {{networkName}} 대시보드" } -} +} \ No newline at end of file diff --git a/webapp/src/language/zh/zh.json b/webapp/src/language/zh/zh.json index 478ae87b8..8861f609d 100644 --- a/webapp/src/language/zh/zh.json +++ b/webapp/src/language/zh/zh.json @@ -1,434 +1,434 @@ { "common": { - "all": "All", - "account": "Account", - "name": "Name", - "rewards": "Rewards", - "votes": "Votes", - "block": "Block", - "blocks": "Blocks", - "transactions": "Transactions", - "producerName": "Producer name", - "nodeName": "Node name", - "nodeType": "Node type", - "description": "Description", - "color": "Color", - "producers": "Producers", - "producer": "Producer", - "connectWallet": "Connect Wallet", - "keys": "Keys", - "download": "Download", - "healthStatus": "Health Status", - "help": "Help", - "node": "Node", - "lastHour": "Last Hour", - "lastDay": "Last Day", - "lastWeek": "Last Week", - "dailyAverage": "Daily Average", - "lastYear": "Last Year", - "itemsPerPage": "Items per page", + "all": "全部", + "account": "账户", + "name": "名称", + "rewards": "奖励", + "votes": "投票", + "block": "区块", + "blocks": "区块", + "transactions": "交易", + "producerName": "生产者名称", + "nodeName": "节点名称", + "nodeType": "节点类型", + "description": "描述", + "color": "颜色", + "producers": "生产者", + "producer": "生产者", + "connectWallet": "连接钱包", + "keys": "密钥", + "download": "下载", + "healthStatus": "健康状态", + "help": "帮助", + "node": "节点", + "lastHour": "最后一小时", + "lastDay": "最后一天", + "lastWeek": "最后一周", + "dailyAverage": "日均", + "lastYear": "去年", + "itemsPerPage": "每页项目数", "api": "HTTP", "ssl": "HTTPS", "p2p": "P2P", - "payer": "Payer", - "nodes": "Nodes", - "total": "Total", - "missedBlocks": "Missed Blocks", - "timeFrame": "Time frame", + "payer": "支付方", + "nodes": "节点", + "total": "总计", + "missedBlocks": "错过的区块", + "timeFrame": "时间框架", "net": "NET", "cpu": "CPU", - "footer1": "This App is a Community Public Good", - "footer2": "Proudly Engineered by Edenia", - "executeTransaction": "Execute Transaction", - "bugRequest": "Report a bug / Request a feature", - "moreInfo": "More Info", - "openLink": "Visit Site", - "table": "Table", - "noOptions": "No matches", - "updatedAt": "Updated at", - "nextUpdateAt": "Next update at", - "secondsAgo": "Seconds Ago", - "metaTitle": "Antelope Tools network monitors real-time infrastructure data for multiple Antelope and EOSIO chains.", - "metaDescription": "Antelope Tools Dashboard is a network monitor featuring real-time data on block producer nodes and blockchain infrastructure for multiple Antelope and EOSIO chains.", - "goBack": "Go Back", - "translationInProgress": "This translation is in progress, if you find an error please let us know." + "footer1": "此应用是社区公共产品", + "footer2": "由 Edenia 自豪地开发", + "executeTransaction": "执行交易", + "bugRequest": "报告错误 / 请求功能", + "moreInfo": "更多信息", + "openLink": "访问网站", + "table": "表格", + "noOptions": "没有匹配", + "updatedAt": "更新于", + "nextUpdateAt": "下次更新于", + "secondsAgo": "秒前", + "metaTitle": "Antelope Tools 网络监控多个 Antelope 和 EOSIO 链的实时基础设施数据。", + "metaDescription": "Antelope Tools 仪表板是一个网络监控器,显示多个 Antelope 和 EOSIO 链的区块生产者节点和区块链基础设施的实时数据。", + "goBack": "返回", + "translationInProgress": "翻译进行中,如发现错误请告知我们。" }, "routes": { - "/>sidebar": "Dashboard", - "/>title": "{{networkName}} Network Monitor and Infrastructure Dashboard", - "/>heading": "Welcome to {{networkName}}", - "/cpu-benchmark>sidebar": "CPU Benchmarks", - "/cpu-benchmark>title": "CPU Benchmarks - {{networkName}} Network Dashboard", - "/cpu-benchmark>heading": "Block Producer Nodes CPU Benchmarks on {{networkName}}", - "/block-producers>sidebar": "Block Producers", - "/block-producers>title": "Block Producers - {{networkName}} Network Dashboard", - "/block-producers>heading": "Block Producers on {{networkName}}", - "/block-producers/bpName>heading": "Block Producer Profile", - "/entities/bpName>heading": "Entity Profile", - "/undiscoverable-bps>sidebar": "Undiscoverable BPs", - "/undiscoverable-bps>title": "Paid undiscoverable Block Producers - {{networkName}} Network Dashboard", - "/undiscoverable-bps>heading": "Undiscoverable Paid Block Producers on {{networkName}}", - "/rewards-distribution>sidebar": "Rewards Distribution", - "/rewards-distribution>title": "Rewards Distribution - {{networkName}} Network Dashboard", - "/rewards-distribution>heading": "Rewards Distribution of {{networkName}}", - "/nodes>sidebar": "Nodes", - "/nodes>title": "Nodes - {{networkName}} Nodes Status Monitor", - "/nodes>heading": "Nodes on {{networkName}}", - "/nodes-distribution>sidebar": "Geo Distribution", - "/nodes-distribution>title": "Geographic Distribution of Nodes - {{networkName}} Network Dashboard", - "/nodes-distribution>heading": "Geographic Distribution of {{networkName}} Nodes", - "/accounts>sidebar": "Accounts & Contracts", - "/accounts>title": "Accounts and Contracts - {{networkName}} Network Dashboard", - "/accounts>heading": "Accounts and Contracts of {{networkName}}", - "/bpjson>sidebar": "BP.json Generator", - "/bpjson>title": "BP JSON Generator - {{networkName}} Network Dashboard", - "/bpjson>heading": "BP.json Generator", - "/faucet>sidebar": "Create Account & Faucet", - "/faucet>title": "Faucet and Account Creator - {{networkName}} Network Dashboard", - "/faucet>heading": "{{networkName}} Account Creator and Token Faucet", - "/ricardian-contract>sidebar": "BP Agreement", - "/ricardian-contract>title": "BP Agreement - {{networkName}} Network Dashboard", - "/ricardian-contract>heading": "Block Producer Agreement on {{networkName}}", - "/block-distribution>sidebar": "Block Distribution", - "/block-distribution>title": "Block Production Distribution - {{networkName}} Network Dashboard", - "/block-distribution>heading": "Block Production Distribution on {{networkName}}", - "/missed-blocks>sidebar": "Missed Blocks", - "/missed-blocks>title": "Missed Blocks - {{networkName}} Network Dashboard", - "/missed-blocks>heading": "Missed Blocks on {{networkName}}", - "/stress-test>title": "Stress Test Dashboard - {{networkName}} Network Dashboard", - "/stress-test>sidebar": "Stress Test", - "/stress-test>heading": "{{networkName}} Stress Test", - "/evm>title": "EVM Dashboard - {{networkName}} Network Dashboard", - "/evm>sidebar": "EVM Dashboard", - "/evm>heading": "{{networkName}} EVM Dashboard", - "/evm-rpc-endpoints>title": "EVM RPC Endpoints - {{networkName}} Network Dashboard", - "/evm-rpc-endpoints>sidebar": "EVM RPC Endpoints", - "/evm-rpc-endpoints>heading": "{{networkName}} EVM RPC Endpoints", - "/endpoints>sidebar": "API Endpoints", - "/endpoints>title": "API Endpoints - {{networkName}} Network Dashboard", - "/endpoints>heading": "{{networkName}} API Endpoints", - "/endpoints-stats>sidebar": "API Endpoints Stats", - "/endpoints-stats>title": "API Endpoints Stats- {{networkName}} Network Dashboard", - "/endpoints-stats>heading": "{{networkName}} API Endpoints Stats", - "/about>sidebar": "About", - "/about>title": "About - {{networkName}} Network Monitor and Infrastructure Dashboard", - "/about>heading": "About Antelope Tools", - "/about>moreDescription": "Learn more about Edenia and the Antelope Tools project, its importance and how you can get involved", - "/help>sidebar": "Help", - "/help>title": "Help - {{networkName}} Network Dashboard", - "/help>heading": "Welcome to the Antelope Tools Help Center", - "/help>moreDescription": "Check how the bp.json Standard is used, troubleshoot if BP data is missing and contact us if you have suggestions", - "networkInformation": "Network Information", - "tools": "Tools", - "docs": "Docs", - "community": "Community", - "changelog": "Changelog", - "github": "Github Repository", - "telegram": "Telegram Channel", - "readMore": "Read more", - "readLess": "Read less", - "moreDescription": "This is a read more text component for users that either need a bit of help or are new to the system. A clear but not too extensive set of terms and instructions can help users get going without having to over write titles or labels like the one on the search card below. Take a look! A third line is also possible and probably more than enough.", - "/rewards-distribution>moreDescription": "A geographic visualization of daily block producer rewards and a list of undiscoverable paid block producers.", - "/undiscoverable-bps>moreDescription": "A list of the paid block producers on the network which do not provide information in their BP.json files.", - "/bpjson>moreDescription": "A tool for block producers to provide details of their organizations and nodes to comply with the BP information standard.", - "/node-config>moreDescription": "Use this tool to obtain example config files to help configure a new node on the network.", - "/ricardian-contract>moreDescription": "The on-chain ricardian contract that describes the validator node agreement of {{networkName}}.", - "/>moreDescription": "Monitor the infrastructure of blockchain networks using Antelope + EOSIO blockchain technology.", - "/cpu-benchmark>moreDescription": "A visualization of CPU usage in microseconds by block producer nodes accounts, with lowest, highest, and average usage data.", - "/block-producers>moreDescription": "A list of the block producers in the network – blockchain accounts registered to run nodes on the network. It includes information from chain tables and their bp.json files.", - "/block-producers/bpName>moreDescription": "View block producer general information such as rank, rewards and compliance", - "/nodes>moreDescription": "A list of all the nodes run by block producers comprising the network with specific information such as endpoints and location.", - "/endpoints>moreDescription": "An updated list of public API endpoints provided by node operators and their health status.", - "/endpoints-stats>moreDescription": "Response time statistics from Costa Rica and the availability of a producer's endpoints.", - "/nodes-distribution>moreDescription": "A visualization of the geographic distribution of the nodes in this network.", - "/accounts>moreDescription": "This tool helps find information about accounts and interact with contracts on the network. Enter an account name and obtain account information, smart contract actions, and table data.", - "/block-distribution>moreDescription": "A visualization of the distribution of blocks produced by the nodes in the network.", - "/missed-blocks>moreDescription": "A list of scheduled, produced, and missed blocks by each account in the network.", - "/stress-test>moreDescription": "Monitor current and historical data about transactions, such as resource utilization and all-time high TPS." + "/>sidebar": "仪表板", + "/>title": "{{networkName}} 网络监控和基础设施仪表板", + "/>heading": "欢迎来到 {{networkName}}", + "/cpu-benchmark>sidebar": "CPU 基准测试", + "/cpu-benchmark>title": "CPU 基准测试 - {{networkName}} 网络仪表板", + "/cpu-benchmark>heading": "{{networkName}} 上的区块生产节点 CPU 基准测试", + "/block-producers>sidebar": "区块生产者", + "/block-producers>title": "区块生产者 - {{networkName}} 网络仪表板", + "/block-producers>heading": "{{networkName}} 上的区块生产者", + "/block-producers/bpName>heading": "区块生产者简介", + "/entities/bpName>heading": "实体简介", + "/undiscoverable-bps>sidebar": "无法发现的 BPs", + "/undiscoverable-bps>title": "付费无法发现的区块生产者 - {{networkName}} 网络仪表板", + "/undiscoverable-bps>heading": "{{networkName}} 上的付费无法发现的区块生产者", + "/rewards-distribution>sidebar": "奖励分配", + "/rewards-distribution>title": "奖励分配 - {{networkName}} 网络仪表板", + "/rewards-distribution>heading": "{{networkName}} 的奖励分配", + "/nodes>sidebar": "节点", + "/nodes>title": "节点 - {{networkName}} 节点状态监控", + "/nodes>heading": "{{networkName}} 上的节点", + "/nodes-distribution>sidebar": "地理分布", + "/nodes-distribution>title": "节点地理分布 - {{networkName}} 网络仪表板", + "/nodes-distribution>heading": "{{networkName}} 节点的地理分布", + "/accounts>sidebar": "账户和合约", + "/accounts>title": "账户和合约 - {{networkName}} 网络仪表板", + "/accounts>heading": "{{networkName}} 的账户和合约", + "/bpjson>sidebar": "BP.json 生成器", + "/bpjson>title": "BP JSON 生成器 - {{networkName}} 网络仪表板", + "/bpjson>heading": "BP.json 生成器", + "/faucet>sidebar": "创建账户和水龙头", + "/faucet>title": "水龙头和账户创建者 - {{networkName}} 网络仪表板", + "/faucet>heading": "{{networkName}} 账户创建者和代币水龙头", + "/ricardian-contract>sidebar": "BP 协议", + "/ricardian-contract>title": "BP 协议 - {{networkName}} 网络仪表板", + "/ricardian-contract>heading": "{{networkName}} 上的区块生产者协议", + "/block-distribution>sidebar": "区块分布", + "/block-distribution>title": "区块生产分布 - {{networkName}} 网络仪表板", + "/block-distribution>heading": "{{networkName}} 上的区块生产分布", + "/missed-blocks>sidebar": "错过的区块", + "/missed-blocks>title": "错过的区块 - {{networkName}} 网络仪表板", + "/missed-blocks>heading": "{{networkName}} 上的错过的区块", + "/stress-test>title": "压力测试仪表板 - {{networkName}} 网络仪表板", + "/stress-test>sidebar": "压力测试", + "/stress-test>heading": "{{networkName}} 压力测试", + "/evm>title": "EVM 仪表板 - {{networkName}} 网络仪表板", + "/evm>sidebar": "EVM 仪表板", + "/evm>heading": "{{networkName}} EVM 仪表板", + "/evm-rpc-endpoints>title": "EVM RPC 端点 - {{networkName}} 网络仪表板", + "/evm-rpc-endpoints>sidebar": "EVM RPC 端点", + "/evm-rpc-endpoints>heading": "{{networkName}} EVM RPC 端点", + "/endpoints>sidebar": "API 端点", + "/endpoints>title": "API 端点 - {{networkName}} 网络仪表板", + "/endpoints>heading": "{{networkName}} API 端点", + "/endpoints-stats>sidebar": "API 端点统计", + "/endpoints-stats>title": "API 端点统计 - {{networkName}} 网络仪表板", + "/endpoints-stats>heading": "{{networkName}} API 端点统计", + "/about>sidebar": "关于", + "/about>title": "关于 - {{networkName}} 网络监控和基础设施仪表板", + "/about>heading": "关于 Antelope 工具", + "/about>moreDescription": "了解更多关于 Edenia 和 Antelope 工具项目,其重要性以及如何参与", + "/help>sidebar": "帮助", + "/help>title": "帮助 - {{networkName}} 网络仪表板", + "/help>heading": "欢迎来到 Antelope 工具帮助中心", + "/help>moreDescription": "检查如何使用 bp.json 标准,如果缺少 BP 数据请进行故障排除,并且如果您有建议请联系我们", + "networkInformation": "网络信息", + "tools": "工具", + "docs": "文档", + "community": "社区", + "changelog": "更新日志", + "github": "Github 仓库", + "telegram": "Telegram 频道", + "readMore": "阅读更多", + "readLess": "阅读更少", + "moreDescription": "这是一个为需要一点帮助或新来的用户的阅读更多文本组件。一组清晰但不过于广泛的术语和指令可以帮助用户开始,而无需像下面的搜索卡上的标题或标签那样重写。看一看!第三行也是可能的,可能已经足够了。", + "/rewards-distribution>moreDescription": "每日区块生产者奖励的地理可视化和无法发现的付费区块生产者列表。", + "/undiscoverable-bps>moreDescription": "网络上不提供其 BP.json 文件中信息的付费区块生产者的列表。", + "/bpjson>moreDescription": "区块生产者提供其组织和节点的详细信息以符合 BP 信息标准的工具。", + "/node-config>moreDescription": "使用此工具获取示例配置文件,以帮助配置网络上的新节点。", + "/ricardian-contract>moreDescription": "描述 {{networkName}} 验证者节点协议的链上里卡迪安合约。", + "/>moreDescription": "使用 Antelope + EOSIO 区块链技术监控区块链网络的基础设施。", + "/cpu-benchmark>moreDescription": "区块生产者节点账户的 CPU 使用情况的可视化,包括最低、最高和平均使用数据。", + "/block-producers>moreDescription": "网络中区块生产者的列表 - 注册在网络上运行节点的区块链账户。它包括链表和它们的 bp.json 文件中的信息。", + "/block-producers/bpName>moreDescription": "查看区块生产者的一般信息,如排名、奖励和合规性", + "/nodes>moreDescription": "由区块生产者运行的网络组成的所有节点的列表,具体信息如端点和位置。", + "/endpoints>moreDescription": "节点运营商提供的公共 API 端点的更新列表及其健康状态。", + "/endpoints-stats>moreDescription": "来自哥斯达黎加的响应时间统计和生产者端点的可用性。", + "/nodes-distribution>moreDescription": "此网络中节点地理分布的可视化。", + "/accounts>moreDescription": "此工具帮助查找账户信息并与网络上的合约互动。输入一个账户名称并获取账户信息、智能合约操作和表数据。", + "/block-distribution>moreDescription": "网络中节点产生的区块分布的可视化。", + "/missed-blocks>moreDescription": "网络中每个账户计划的、产生的和错过的区块列表。", + "/stress-test>moreDescription": "监控有关交易的当前和历史数据,例如资源利用率和历史最高 TPS。" }, "homeRoute": { - "currentProducer": "Current Producer", - "headBlock": "Head Block", - "lastBlock": "Last Irreversible Block", - "bpSchedule": "Block Producer Schedule", - "transPerSecond": "Transactions Per Second", - "transPerBlock": "Transactions Per Block", - "transactions": "Transactions", - "transactionsHistory": "Transactions History", - "timeFrame": "Time frame", - "pause": "Pause", - "play": "Play", - "Last Hour": "Last Hour", - "Last Day": "Last Day", - "Last Week": "Last Week", - "Last Year": "Last Year", - "scheduleVersion": "Schedule Version", - "tpsAllTimeHigh": "TPS All Time High", - "cpuUtilizationAllTimeHigh": "CPU Usage in TPS All Time High", - "networkUtilizationAllTimeHigh": "NET Usage in TPS All Time High", - "transactionsPerSecond": "Transactions per Second", - "transactionsPerBlock": "Transactions per Block", - "nodes": "Nodes", - "undefined": "Undefined", - "unknown": "Unknown", - "uniqueLocations": "Unique Locations", - "cpuLimitPerBlock": "CPU Limit Per Block", - "netLimitPerBlock": "Net Limit Per Block", - "chainCpuLimit": "Chain CPU Limit", - "chainNetLimit": "Chain Net Limit", - "timeToFinality": "Time to Finality", - "cpuUsage": "CPU Usage", - "netUsage": "NET Usage", - "average": "Average", + "currentProducer": "当前生产者", + "headBlock": "最新区块", + "lastBlock": "最后不可逆区块", + "bpSchedule": "区块生产者计划", + "transPerSecond": "每秒交易数", + "transPerBlock": "每个区块的交易数", + "transactions": "交易", + "transactionsHistory": "交易历史", + "timeFrame": "时间范围", + "pause": "暂停", + "play": "播放", + "Last Hour": "最后一小时", + "Last Day": "最后一天", + "Last Week": "最后一周", + "Last Year": "去年", + "scheduleVersion": "计划版本", + "tpsAllTimeHigh": "历史最高每秒交易数(TPS)", + "cpuUtilizationAllTimeHigh": "历史最高 TPS 时的 CPU 利用率", + "networkUtilizationAllTimeHigh": "历史最高 TPS 时的网络(NET)利用率", + "transactionsPerSecond": "每秒交易数", + "transactionsPerBlock": "每个区块的交易数", + "nodes": "节点", + "undefined": "未定义", + "unknown": "未知", + "uniqueLocations": "独特位置", + "cpuLimitPerBlock": "每个区块的 CPU 限制", + "netLimitPerBlock": "每个区块的网络限制", + "chainCpuLimit": "链 CPU 限制", + "chainNetLimit": "链网络限制", + "timeToFinality": "交易最终确认所需时间", + "cpuUsage": "CPU 使用率", + "netUsage": "网络(NET)使用率", + "average": "平均", "nodeType": "{{nodeType}} $t(nodes)", "tooltip": { - "lastBlock": "The most recently verified block in the blockchain", - "bpSchedule": "The current roster of top 21 block producers", - "scheduleVersion": "The active version number for the list of top 21 block producers", - "tpsAllTimeHigh": "Peak Transactions Per Second (TPS) ever recorded", - "cpuUtilizationAllTimeHigh": "CPU utilization at the time of peak TPS", - "networkUtilizationAllTimeHigh": "Network (NET) utilization at the time of peak TPS", - "full": "Node that archives data back to the genesis block", - "seed": "Node offering public P2P connectivity endpoints", - "query": "Node offering public HTTP(S) API access points", - "producer": "Node responsible for generating new blocks", - "nodes": "Total number of nodes among the top 150 block producers", - "uniqueLocations": "Count of distinct countries hosting block producers, derived from bp.json files", - "timeToFinality": "Duration required for a transaction to gain full blockchain confirmation", - "cpuUsage": "Percentage of CPU resources consumed in the most recent second", - "netUsage": "Percentage of Network (NET) resources consumed in the most recent second", - "totalProducers": "Total number of registered Block Producers, as per the eosio smart contract" + "lastBlock": "区块链中最近验证的区块", + "bpSchedule": "当前前 21 个区块生产者名单", + "scheduleVersion": "前 21 个区块生产者名单的活动版本号", + "tpsAllTimeHigh": "有史以来记录的最高每秒交易数(TPS)", + "cpuUtilizationAllTimeHigh": "最高 TPS 时的 CPU 利用率", + "networkUtilizationAllTimeHigh": "最高 TPS 时的网络(NET)利用率", + "full": "将数据归档到创世区块的节点", + "seed": "提供公共 P2P 连接端点的节点", + "query": "提供公共 HTTP(S) API 访问点的节点", + "producer": "负责生成新区块的节点", + "nodes": "前 150 个区块生产者中的总节点数", + "uniqueLocations": "托管区块生产者的不同国家计数,源自 bp.json 文件", + "timeToFinality": "交易获得完全区块链确认所需的时间", + "cpuUsage": "最近一秒内消耗的 CPU 资源百分比", + "netUsage": "最近一秒内消耗的网络(NET)资源百分比", + "totalProducers": "根据 eosio 智能合约注册的区块生产者总数" } }, "rewardsDistributionRoute": { - "dailyRewards": "Total Daily Rewards", - "yearlyRewards": "Total Yearly Rewards", - "topCountryDailyRewards": "Top Country By Daily Rewards", - "notAvailable": "Not available", - "paidProducers": "Paid BPs Not Located", - "lowestRewards": "Lowest Rewards", - "highestRewards": "Highest Rewards", - "exchangeRate": "Exchange Rate", - "country": "Country", - "rewards": "Rewards", - "rewardsPercentage": "Percentage of rewards", - "viewList": "View full list", - "paidProducersText": "Daily Rewards", - "publishBPDetails": "Publish BP Details", - "generateBPjson": "Generate a BP.json", + "dailyRewards": "每日总奖励", + "yearlyRewards": "每年总奖励", + "topCountryDailyRewards": "每日奖励最高的国家", + "notAvailable": "不可用", + "paidProducers": "未定位的付费 BPs", + "lowestRewards": "最低奖励", + "highestRewards": "最高奖励", + "exchangeRate": "汇率", + "country": "国家", + "rewards": "奖励", + "rewardsPercentage": "奖励百分比", + "viewList": "查看完整列表", + "paidProducersText": "每日奖励", + "publishBPDetails": "发布 BP 详情", + "generateBPjson": "生成 BP.json", "tooltip": { - "generateBPjson": "BPs can easily create and update their bp.json for transparency." + "generateBPjson": "BPs 可以轻松创建和更新他们的 bp.json 以提高透明度。" } }, "accountsRoute": { - "loginBeforeUseAction": "Please connect your wallet in order to execute an action", - "unknownError": "An unexpected error occurred while processing your action.", - "notFound": "not found", - "successMessage": "Transaction completed successfully.", - "placeholder": "Account or Contract Name", - "title": "Explore account details, view contract tables, and execute actions seamlessly.", - "endpointFailure": "Endpoint issue. Please try again later." + "loginBeforeUseAction": "请连接您的钱包以执行操作", + "unknownError": "处理您的操作时发生意外错误。", + "notFound": "未找到", + "successMessage": "交易成功完成。", + "placeholder": "账户或合约名称", + "title": "无缝探索账户详情、查看合约表格并执行操作。", + "endpointFailure": "端点问题。请稍后再试。" }, "bpJsonRoute": { - "loadText": "Fetching node details...", - "notLogin": "Connect your wallet to access this feature.", - "notRegisterNode": "An active node account is required to utilize this tool.", - "bpjsonInconsistency": "Mismatch detected between on-chain and off-chain bp.json. Please review and update accordingly." + "loadText": "正在获取节点详情...", + "notLogin": "连接您的钱包以访问此功能。", + "notRegisterNode": "使用此工具需要一个活跃的节点账户。", + "bpjsonInconsistency": "检测到链上和链下 bp.json 之间的不匹配。请相应地审查和更新。" }, "faucetRoute": { - "createAccount": "Create Your Account", - "newCreatedAccount": "Congratulations! Your new account has been created:", - "transferTokensTransaction": "Tokens have been successfully transferred. View the transaction on the explorer:", - "createButton": "Create Your Account", - "issueTokens": "Distribute Tokens", - "getTokens": "Receive Tokens", - "publicKey": "Enter Public Key (Active/Owner)", - "accountName": "Choose an Account Name", - "invalidAccount": "Enter a valid account name, please.", - "emptyFields": "Complete all fields to proceed with account creation.", - "accountFormat": "Account name should be 12 characters or fewer. Use lowercase letters (a-z) and numbers (1-5) only.", - "keyFormat": "Enter a valid ECC key. You can generate one using cleos or any compatible wallet." + "createAccount": "创建您的账户", + "newCreatedAccount": "恭喜!您的新账户已创建:", + "transferTokensTransaction": "代币已成功转移。在浏览器上查看交易:", + "createButton": "创建您的账户", + "issueTokens": "分发代币", + "getTokens": "接收代币", + "publicKey": "输入公钥(活跃/拥有者)", + "accountName": "选择一个账户名称", + "invalidAccount": "请输入有效的账户名称。", + "emptyFields": "完成所有字段以继续创建账户。", + "accountFormat": "账户名称应为 12 个字符或更少。只能使用小写字母(a-z)和数字(1-5)。", + "keyFormat": "输入有效的 ECC 密钥。您可以使用 cleos 或任何兼容的钱包生成一个。" }, "ricardianContractRoute": { - "title": "Ricardian Contract" + "title": "瑞卡底安合同" }, "aboutRoute": { "body": { - "paragraph1": "Welcome to Antelope Tools, your one-stop solution for real-time visualization and monitoring of Antelope and EOSIO blockchains. Designed to be the ultimate blockchain network monitoring tool, we provide real-time data analytics, Block Producer insights, and much more." + "paragraph1": "欢迎使用 Antelope Tools,这是您实时可视化和监控 Antelope 和 EOSIO 区块链的一站式解决方案。作为最终的区块链网络监控工具,我们提供实时数据分析、出块生产者洞察力等等。" }, - "subtitle1": "About Edenia", + "subtitle1": "关于 Edenia", "body1": { "edenia": "Edenia", - "paragraph1": "is the dedicated team of blockchain experts behind Antelope Tools. With years of experience in blockchain technology and a passion for transparency and reliability, we aim to make the Web3 ecosystem more accessible and user-friendly. Our team is committed to continuous innovation, ensuring that Antelope Tools remains the leading Antelope blockchain network monitoring tool." + "paragraph1": "是 Antelope Tools 背后的区块链专家团队。拥有多年的区块链技术经验和对透明性和可靠性的热情,我们旨在使 Web3 生态系统更加可访问和用户友好。我们的团队致力于不断创新,确保 Antelope Tools 保持领先地位,成为 Antelope 区块链网络监控工具的佼佼者。" }, - "subtitle2": "Why Choose Antelope Tools?", + "subtitle2": "为什么选择 Antelope Tools?", "body2": { - "paragraph1": "Antelope Tools is a community-centric, open-source platform developed by blockchain enthusiasts committed to transparency and reliability. Our mission is to offer a user-friendly interface to access critical information about Block Producers, thereby fostering network transparency. Experience the difference by trying Antelope Tools today!" + "paragraph1": "Antelope Tools 是一个以社区为中心、开源的平台,由致力于透明性和可靠性的区块链爱好者开发。我们的使命是提供一个用户友好的界面,以获取有关出块生产者的重要信息,从而促进网络透明度。立刻体验 Antelope Tools 带来的不同吧!" }, - "subtitle3": "The Importance of Network Monitoring", + "subtitle3": "网络监控的重要性", "body3": { - "paragraph1": "Whether you're on the {{networkName}}, or any other EOSIO-based DPoS network, token holders rely on available data to vote for Block Producers. In permissioned networks like LACChain, node operators must ensure seamless network functionality. Antelope Tools is your reliable source for objective data and node performance metrics." + "paragraph1": "无论您是在 {{networkName}} 上,还是在任何其他基于 EOSIO 的 DPoS 网络上,令牌持有者都依赖可用数据来为出块生产者投票。在像 LACChain 这样的许可网络中,节点运营商必须确保网络功能的无缝性。Antelope Tools 是您可靠的数据和节点性能指标来源。" }, - "subtitle4": "Data Source", + "subtitle4": "数据来源", "body4": { - "paragraph1": "We offer rich, graphical insights into entities operating nodes and blockchain infrastructures. Our data is sourced directly from the public table of producers in the system contracts and is updated in real-time to focus only on active entities. We then use the bp.json standard to retrieve additional data from the Block Producers' URLs." + "paragraph1": "我们提供有关运营节点和区块链基础设施的丰富图形见解。我们的数据直接来自系统合同的公共生产者表,并实时更新,以仅关注活跃实体。然后,我们使用 bp.json 标准从出块生产者的 URL 中检索其他数据。" }, - "subtitle5": "Funding and Support", + "subtitle5": "资金支持", "body5": { - "paragraph1": "Antelope Tools is generously funded through", + "paragraph1": "Antelope Tools 受到慷慨的资助,通过", "pomelo": "Pomelo Grants", - "paragraph2": ", a community-driven funding platform. This financial support enables us to maintain, improve, and expand our services. If you find value in what we do, consider supporting us in the next Pomelo Grant round to help us continue making blockchain networks more transparent and efficient." + "paragraph2": ",这是一个社区驱动的资金平台。这种财政支持使我们能够维护、改进和扩展我们的服务。如果您认为我们所做的有价值,请考虑在下一轮 Pomelo Grants 中支持我们,帮助我们继续使区块链网络更加透明和高效。" }, - "subtitle6": "Get Involved", + "subtitle6": "参与其中", "body6": { - "paragraph1": "For more insights into Antelope Tools, check out our ", - "github": "GitHub Repository", - "paragraph2": "or join the conversation in our ", - "telegram": "Telegram Channel", - "paragraph3": "Become a part of our community and let's make blockchain networks more transparent and user-friendly together!" + "paragraph1": "要了解更多关于 Antelope Tools 的信息,请查看我们的 ", + "github": "GitHub 存储库", + "paragraph2": ",或加入我们的 ", + "telegram": "Telegram 频道", + "paragraph3": "成为我们社区的一部分,让我们一起使区块链网络更加透明和用户友好!" } }, "helpRoute": { - "title": "Thank You for Choosing Antelope Tools", - "paragraph": "We're thrilled you've chosen Antelope Tools for your blockchain network monitoring needs.", - "title2": "Configuring bp.json and chains.json Files: A Guide for Node Operators", + "title": "感谢选择 Antelope Tools", + "paragraph": "我们为您选择 Antelope Tools 作为区块链网络监控工具感到非常高兴。", + "title2": "配置 bp.json 和 chains.json 文件:节点运营商的指南", "body3": { - "paragraph1Text1": "Antelope Tools offers detailed, real-time visualization and analytics for entities running nodes and blockchain infrastructure. Our data is sourced directly on-chain from the public ", - "eosioAccount": "producers table in the eosio system account.", - "paragraph1Text2": "We then query the URLs of all active Block Producers to retrieve essential information" + "paragraph1Text1": "Antelope Tools 为运行节点和区块链基础设施的实体提供详细的实时可视化和分析。我们的数据直接来源于", + "eosioAccount": "eosio 系统账户中的生产者表。", + "paragraph1Text2": "然后,我们查询所有活跃的出块生产者的 URL,以检索关键信息。" }, - "subtitle3": "Leveraging the bp.json Standard for Block Producer and Node Details", - "standard": "using the bp.json standard", - "paragraph2": "If you're a node operator and your data isn't displaying as it should on our dashboard, you'll need to configure your bp.json and chains.json files. Here's a step-by-step guide:", - "bullet1Title": "Setting Up Your bp.json File:", - "bullet1": "Publish a /bp.json file on the website you used when registering via the 'regproducer' action on the eosio system contract. This file should include all pertinent information about your organization and the nodes you operate.", - "bullet2Title": "Managing Multiple Networks:", - "bullet2": "If you're operating nodes on multiple EOSIO-based blockchains, you'll need a chains.json file. This file maps each network's chain ID to the appropriate bp.json file.", - "subBullet2Title": "Example:", - "subBullet2": "If your registered URL is ", - "subBullet2b": ", the system first tries to access ", - "subBullet2c": ". If this file is not available, it defaults to ", - "bullet3Title": "Chain ID Importance:", - "bullet3": "Ensure your chains.json file contains the chain ID for proper network identification. If the chain ID is missing, only your organizational details will be displayed, omitting nodes and endpoints.", - "title3": "Utilize Our BP JSON Generator Tool", - "paragraph3": "We offer a BP JSON generator tool to simplify the creation and updating of your bp.json file. This tool gathers your Block Producer information and generates a bp.json file in the correct format. It also enables on-chain publishing to the `producerjson` smart contract.", - "bpjsonGenerator": "Check out our BP.JSON Generator", - "title4": "Contact Us", - "paragraph4": "Your feedback is crucial as we aim to continually enhance our platform. Feel free to suggest improvements, report issues, or contribute to our codebase.", - "githubEOSCR": "Visit our Edenia GitHub Repo", - "telegramChannel": "Join the Conversation in Our Telegram Channel", - "websiteEOSCR": "Discover Web3 Development Services by Edenia" + "subtitle3": "利用 bp.json 标准获取出块生产者和节点详细信息", + "standard": "使用 bp.json 标准", + "paragraph2": "如果您是节点运营商,并且我们的仪表板上没有显示您的数据,您需要配置您的 bp.json 和 chains.json 文件。以下是一步一步的指南:", + "bullet1Title": "设置您的 bp.json 文件:", + "bullet1": "在您在 eosio 系统合同上通过 'regproducer' 操作进行注册时使用的网站上发布一个 /bp.json 文件。该文件应包括有关您的组织和您运营的节点的所有相关信息。", + "bullet2Title": "管理多个网络:", + "bullet2": "如果您在多个基于 EOSIO 的区块链上运营节点,您将需要一个 chains.json 文件。该文件将每个网络的链 ID 映射到适当的 bp.json 文件。", + "subBullet2Title": "示例:", + "subBullet2": "如果您注册的 URL 是 ", + "subBullet2b": ",系统首先尝试访问 ", + "subBullet2c": "。如果找不到此文件,则默认使用 ", + "bullet3Title": "链 ID 的重要性:", + "bullet3": "确保您的 chains.json 文件包含链 ID,以进行正确的网络识别。如果缺少链 ID,则仅显示您的组织详细信息,而不包括节点和端点。", + "title3": "使用我们的 BP JSON 生成工具", + "paragraph3": "我们提供了一个 BP JSON 生成工具,可简化您的 bp.json 文件的创建和更新过程。此工具会收集您的出块生产者信息并生成正确格式的 bp.json 文件。它还支持向 'producerjson' 智能合同进行链上发布。", + "bpjsonGenerator": "查看我们的 BP.JSON 生成器", + "title4": "联系我们", + "paragraph4": "您的反馈对我们非常重要,因为我们的目标是不断提升我们的平台。请随时提出改进意见、报告问题或为我们的代码库做出贡献。", + "githubEOSCR": "访问我们的 Edenia GitHub 存储库", + "telegramChannel": "加入我们的 Telegram 频道进行讨论", + "websiteEOSCR": "了解 Edenia 的 Web3 开发服务" }, "producerCardComponent": { - "bpProfile>title": "{{bpName}} Block Producer - {{networkName}} Dashboard", - "bpProfile>metaTitle": "{{bpName}} Block Producer on {{networkName}}", - "bpProfile>metaDescription": "Data of the Block Producer {{bpName}} on {{networkName}}, such as its rank, nodes and endpoints", - "rank": "Rank", - "account": "Account", - "website": "Website", - "votes": "Votes", - "rewards": "Rewards", - "country": "Country", - "eosRate": "EOS RATE", - "missedBlocks": "Missed Blocks", - "social": "Social", - "ownershipDisclosure": "Ownership Disclosure", - "codeofconduct": "Code of Conduct", - "chainResources": "Chain Resources", - "otherResources": "Other Resources", - "email": "Email", - "features": "Features", - "endpoints": "Endpoints", - "nodeVersion": "Version", - "cpuBenchmark": "CPU Benchmark Average", - "health": "Compliance", - "moreInfo": "More Info", - "version": "Version", - "info": "Info", - "keys": "Keys", - "location": "Location", - "stats": "Stats", - "peer_keys": "Peer Key", - "emptyState": "This block producer does not provide any information.", - "average": "average rating", - "ratings": "ratings", - "lastClaimTime": "Last Claimed Time", - "dailyRewards": "Daily Rewards", - "yearlyRewards": "Yearly Rewards", - "invalidUrl": "Invalid URL", - "viewList": "View undiscoverable BPs list", + "bpProfile>title": "{{bpName}} 出块生产者 - {{networkName}} 仪表板", + "bpProfile>metaTitle": "{{bpName}} 出块生产者在 {{networkName}} 上", + "bpProfile>metaDescription": "{{bpName}} 出块生产者在 {{networkName}} 上的数据,如其排名、节点和端点", + "rank": "排名", + "account": "账户", + "website": "网站", + "votes": "投票", + "rewards": "奖励", + "country": "国家", + "eosRate": "EOS 汇率", + "missedBlocks": "漏块", + "social": "社交", + "ownershipDisclosure": "所有权披露", + "codeofconduct": "行为准则", + "chainResources": "链资源", + "otherResources": "其他资源", + "email": "电子邮件", + "features": "特性", + "endpoints": "端点", + "nodeVersion": "版本", + "cpuBenchmark": "CPU 基准平均值", + "health": "合规性", + "moreInfo": "更多信息", + "version": "版本", + "info": "信息", + "keys": "密钥", + "location": "位置", + "stats": "统计", + "peer_keys": "对等密钥", + "emptyState": "该出块生产者未提供任何信息。", + "average": "平均评分", + "ratings": "评分", + "lastClaimTime": "上次声明时间", + "dailyRewards": "每日奖励", + "yearlyRewards": "年度奖励", + "invalidUrl": "无效的网址", + "viewList": "查看不可发现的出块生产者列表", "bpJson": "BP.json", - "viewProfile": "View BP Profile", - "BPonNetwork": "{{position}} Block Producer on {{networkName}}", - "generalInformation": "General Information", - "logo_256": "Logo", - "organization_name": "Name", - "viewNodes": "View {{totalNodes}} nodes", - "bpNodes": "{{bpName}} Nodes", - "viewNodesProfile": "See Full Nodes Info" + "viewProfile": "查看出块生产者资料", + "BPonNetwork": "{{position}} 出块生产者在 {{networkName}} 上", + "generalInformation": "常规信息", + "logo_256": "徽标", + "organization_name": "名称", + "viewNodes": "查看 {{totalNodes}} 个节点", + "bpNodes": "{{bpName}} 节点", + "viewNodesProfile": "查看完整节点信息" }, "nodeCardComponent": { - "features": "Features", - "endpoints": "Endpoints", - "nodeVersion": "Version", - "cpuBenchmark": "CPU Benchmark Average", - "isFull": "Is full", - "supportedApis": "Supported APIs", - "allWorking": "All endpoints are responding", - "noneWorking": "No endpoints are responding", - "endpointPlural": "Endpoints not responding are the", - "endpointSingular": "Endpoint not responding is the" + "features": "特性", + "endpoints": "端点", + "nodeVersion": "版本", + "cpuBenchmark": "CPU 基准平均值", + "isFull": "已满", + "supportedApis": "支持的 API", + "allWorking": "所有端点都在响应", + "noneWorking": "没有端点在响应", + "endpointPlural": "不响应的端点是", + "endpointSingular": "不响应的端点是" }, "producerHealthIndicatorsComponent": { - "hs_organization_name": "Name", - "hs_email": "Email", - "hs_website": "Website", - "hs_logo_256": "Logo (256px)", - "hs_country": "Country", - "hs_peer_keys": "Peer Keys", - "hs_endpoint": "Endpoint", - "missing": "Missing", - "found": "Found", + "hs_organization_name": "名称", + "hs_email": "电子邮件", + "hs_website": "网站", + "hs_logo_256": "徽标(256像素)", + "hs_country": "国家", + "hs_peer_keys": "对等密钥", + "hs_endpoint": "端点", + "missing": "缺失", + "found": "已找到", "hs_bpJson": "BP Json" }, "accountInfoComponent": { - "resources": "Resources", - "contractActions": "Contract Actions", - "contractTables": "Contract Tables", - "ricardianContract": "Ricardian Contract" + "resources": "资源", + "contractActions": "合约操作", + "contractTables": "合约表格", + "ricardianContract": "合约" }, "contractTablesComponent": { - "table": "Table", - "scope": "Scope", - "lowerBound": "Lower Bound", - "upperBound": "Upper Bound", - "limit": "Limit", - "refreshData": "Refresh Data", - "index": "Index Position", - "keyType": "Index Type", - "loadMore": "Load More", - "emptyTable": "Empty Table" + "table": "表格", + "scope": "范围", + "lowerBound": "下界", + "upperBound": "上界", + "limit": "限制", + "refreshData": "刷新数据", + "index": "索引位置", + "keyType": "索引类型", + "loadMore": "加载更多", + "emptyTable": "空表" }, "contractActionsComponent": { - "action": "Action" + "action": "操作" }, "contractActionFormComponent": { - "executeTransaction": "Execute Transaction", - "owner": "Owner" + "executeTransaction": "执行交易", + "owner": "所有者" }, "undiscoverableBPsRoute": { - "noResultsFound": "Well Done! All Block Producers are Operating Transparently." + "noResultsFound": "太好了!所有区块生产者都在透明运营。" }, "blockDistributionRoute": { - "title": "Blocks generated by producer", - "blocksProduced": "Blocks Produced", - "percent": "Percent" + "title": "生产者生成的区块", + "blocksProduced": "生成的区块数", + "percent": "百分比" }, "missedBlocksRoute": { - "title": "Missed Blocks by producer", - "producedBlocks": "Produced Blocks", - "scheduledBlocks": "Scheduled Blocks", - "availability": "Availability" + "title": "生产者漏块情况", + "producedBlocks": "已生成的区块", + "scheduledBlocks": "计划生成的区块", + "availability": "可用性" }, "endpointsListRoute": { "title": "Endpoints available by", @@ -438,103 +438,103 @@ "copyToClipboard": "Click to Copy responding endpoints from the column to the clipboard" }, "cpuBenchmarkRoute": { - "title": "CPU Usage in Microseconds", - "lowest": "Lowest", - "highest": "Highest", - "average": "Average", - "hideAll": "Hide All", - "showAll": "Show All", - "selectTo": "Select an account to toggle or", - "zoomTo": "Drag or Pinch to Zoom In/Out on the Chart" + "title": "CPU使用(微秒)", + "lowest": "最低", + "highest": "最高", + "average": "平均", + "hideAll": "隐藏全部", + "showAll": "显示全部", + "selectTo": "选择一个账户以切换或", + "zoomTo": "拖动或捏合以放大/缩小图表" }, "producerSearchComponent": { - "partner": "Partner", - "nonPartner": "Non-Partner", - "all": "All", - "allBPs": "All Block Producers", - "top21": "Top 21", - "paidStandby": "Paid Standby", - "nonPaidStandby": "Non-Paid Standby", - "title": "Search Producer", - "producer": "Producer", - "placeholder": "Producer Name" + "partner": "合作伙伴", + "nonPartner": "非合作伙伴", + "all": "全部", + "allBPs": "所有出块节点", + "top21": "前21名", + "paidStandby": "有偿备用", + "nonPaidStandby": "无偿备用", + "title": "搜索节点", + "producer": "节点", + "placeholder": "节点名称" }, "endpointInfoComponent": { - "status": "Status", - "response": "Response", - "headBlockTime": "Head Block Time", - "updatedAt": "Last check", - "error": "Error", - "noResponse": "No response" + "status": "状态", + "response": "响应", + "headBlockTime": "最新区块时间", + "updatedAt": "最后检查时间", + "error": "错误", + "noResponse": "无响应" }, "nodeSearchComponent": { - "title": "Search Node", - "producer": "Producer", - "placeholder": "Node Name" + "title": "搜索节点", + "producer": "生产者", + "placeholder": "节点名称" }, "noResultsComponent": { - "noResultsFound": "No results found" + "noResultsFound": "未找到结果" }, "healthCheckComponent": { - "updated": "Endpoint is fully operational", - "outdated": "Endpoint is functional but lagging behind the latest block", - "error": "An error occurred while accessing the endpoint", - "not working": "Endpoint is currently unresponsive", - "helpText": "Hover over or click the icons to reveal the current health status of each endpoint" + "updated": "端点完全运作正常", + "outdated": "端点功能正常但落后于最新区块", + "error": "访问端点时发生错误", + "not working": "端点目前无响应", + "helpText": "将鼠标悬停在图标上或单击图标以查看每个端点的当前健康状态" }, "copyToClipboardComponent": { - "copy": "Click to Copy", - "copyToClipboard": "Copy to Clipboard", - "copied": "Successfully Copied!" + "copy": "点击复制", + "copyToClipboard": "复制到剪贴板", + "copied": "复制成功!" }, "noFound": { - "subTitle": "Oops! Page Not Found.", - "message": "The page you're searching for has either been moved or doesn't exist.", - "return": "Go Back to Home Page" + "subTitle": "哎呀!页面未找到。", + "message": "您正在查找的页面可能已经移动或不存在。", + "return": "返回首页" }, "mainMapComponent": { - "numberOfNodes": "Number of Nodes" + "numberOfNodes": "节点数量" }, "EndpointsStatsRoute": { - "fastest": "Top 5 fastest endpoints by querying from Costa Rica", - "byProducer": "Endpoints stats by producer", - "avgAvailability": "Average Availability", - "avgTime": "Average Response Time", - "charTitle": "Average Response Time from Costa Rica", - "list": "List of endpoints", - "timeInSecs": "Time in seconds" + "fastest": "查询哥斯达黎加前5名最快的端点", + "byProducer": "生产者的端点统计数据", + "avgAvailability": "平均可用性", + "avgTime": "平均响应时间", + "charTitle": "从哥斯达黎加的平均响应时间", + "list": "端点列表", + "timeInSecs": "时间(秒)" }, "evmDashboardRoute": { - "totalWallets": "Total wallets created", - "avgBlockTime": "Average block time", - "gasPrice": "Gas price", - "avgGasUsage": "Average gas usage", - "totalIncoming": "Total {{token}} incoming", - "totalOutgoing": "Total {{token}} outgoing", - "incoming": "Incoming", - "outgoing": "Outgoing", - "ATH": "TPS All Time High", - "lastBlock": "Last block", - "totalTxs": "Total EVM transactions", - "transactions": "EVM transactions", - "gasUsed": "Gas Used", + "totalWallets": "创建的总钱包数", + "avgBlockTime": "平均区块时间", + "gasPrice": "燃气价格", + "avgGasUsage": "平均燃气使用量", + "totalIncoming": "总{{token}}收款", + "totalOutgoing": "总{{token}}支出", + "incoming": "收款", + "outgoing": "支出", + "ATH": "历史最高 TPS", + "lastBlock": "最新区块", + "totalTxs": "总 EVM 交易数", + "transactions": "EVM 交易", + "gasUsed": "燃气已用", "tooltip": { - "totalWallets": "EVM active addresses of the account table from {{accountName}} contract", - "gasPrice": "The cost of computational work in EVM, measured in Gas", - "avgGasUsage": "Average Gas Consumed Over the Last 100 Blocks", - "totalIncoming": "Total Transfers Received by {{accountName}}", - "totalOutgoing": "Total Transfers Sent by {{accountName}}", - "ATH": "Peak Transactions Per Second (TPS) Recorded", - "lastBlock": "Latest Confirmed Ethereum Block", - "totalTxs": "Total Transactions Since Genesis Block" + "totalWallets": "{{accountName}} 合同的活跃地址数", + "gasPrice": "以燃气计量的计算工作成本", + "avgGasUsage": "过去100个区块的平均燃气消耗", + "totalIncoming": "{{accountName}} 收到的总转账数", + "totalOutgoing": "{{accountName}} 发出的总转账数", + "ATH": "记录的历史最高每秒交易数 (TPS)", + "lastBlock": "最新确认的以太坊区块", + "totalTxs": "自创世区块以来的总交易数" } }, "evmEndpointsRoute": { - "title": "List of EVM Endpoints", - "rpcEndpoint": "RPC Endpoint", - "latency": "Network Latency", - "lastBlock": "Last block", - "rerun": "Re-run health checks", - "filterEndpoints": "Filter Active Endpoints" + "title": "EVM 端点列表", + "rpcEndpoint": "RPC 端点", + "latency": "网络延迟", + "lastBlock": "最新区块", + "rerun": "重新运行健康检查", + "filterEndpoints": "筛选活跃端点" } } diff --git a/webapp/src/language/zh/zh.jungle.json b/webapp/src/language/zh/zh.jungle.json index 2e8608422..bc825c718 100644 --- a/webapp/src/language/zh/zh.jungle.json +++ b/webapp/src/language/zh/zh.jungle.json @@ -1,5 +1,5 @@ { "routes": { - "/evm>moreDescription": "Monitor EVM statistics, such as transaction amount history, gas price and total wallets created." + "/evm>moreDescription": "监控 EVM 统计数据,例如交易金额历史、天然气价格和创建的总钱包数。" } -} +} \ No newline at end of file diff --git a/webapp/src/language/zh/zh.lacchain.json b/webapp/src/language/zh/zh.lacchain.json index 22c143aa1..dbdc403e5 100644 --- a/webapp/src/language/zh/zh.lacchain.json +++ b/webapp/src/language/zh/zh.lacchain.json @@ -1,157 +1,157 @@ { "routes": { - "/entities>sidebar": "Entities", - "/entities>title": "Entities - {{networkName}} + Antelope Network Dashboard", - "/entities>heading": "Entities", - "/entities>moreDescription": "A list of entities that are part the network. They can be partner or non-partner entities.", - "/lacchain/network>sidebar": "Network Topology", - "/lacchain/network>title": "Network Topology - {{networkName}} + Antelope Network Dashboard", - "/lacchain/network>heading": "Network Topology", - "/lacchain/network>moreDescription": "A visual representation of the network’s current nodes.", - "/management>sidebar": "Management", - "/management>title": "Management - {{networkName}} + Antelope Network Dashboard", - "/management>heading": "Management", - "/management>moreDescription": "Log in to manage your LACChain account.", - "/node-config>sidebar": "Node config", - "/node-config>title": "Node config - {{networkName}} + Antelope Network Dashboard", - "/node-config>heading": "Configure a new node", - "/ricardian-contract>sidebar": "Validator Agreement", + "/entities>sidebar": "实体", + "/entities>title": "实体 - {{networkName}} + Antelope 网络仪表板", + "/entities>heading": "实体", + "/entities>moreDescription": "网络部分的实体列表。它们可以是合作伙伴或非合作伙伴实体。", + "/lacchain/network>sidebar": "网络拓扑", + "/lacchain/network>title": "网络拓扑 - {{networkName}} + Antelope 网络仪表板", + "/lacchain/network>heading": "网络拓扑", + "/lacchain/network>moreDescription": "网络当前节点的视觉表示。", + "/management>sidebar": "管理", + "/management>title": "管理 - {{networkName}} + Antelope 网络仪表板", + "/management>heading": "管理", + "/management>moreDescription": "登录以管理您的 LACChain 账户。", + "/node-config>sidebar": "节点配置", + "/node-config>title": "节点配置 - {{networkName}} + Antelope 网络仪表板", + "/node-config>heading": "配置新节点", + "/ricardian-contract>sidebar": "验证者协议", "/ricardian-contract>heading": "", - "/cpu-benchmark>title": "CPU Benchmarks - {{networkName}} + Antelope Network Dashboard", - "/block-producers>title": "Block Producers - {{networkName}} + Antelope Network Dashboard", - "/rewards-distribution>title": "Rewards Distribution - {{networkName}} + Antelope Network Dashboard", - "/nodes>title": "{{networkName}} Nodes Status Monitor", - "/nodes-distribution>title": "Geographic Distribution of Nodes - {{networkName}} + Antelope Network Dashboard", - "/accounts>title": "Accounts and Contracts - {{networkName}} + Antelope Network Dashboard", - "/bpjson>title": "BP JSON - {{networkName}} + Antelope Network Dashboard", - "/ricardian-contract>title": "BP Agreement - {{networkName}} + Antelope Network Dashboard", - "/block-distribution>title": "Block Production Distribution - {{networkName}} + Antelope Network Dashboard", - "/missed-blocks>title": "Missed Blocks - {{networkName}} + Antelope Network Dashboard", - "/endpoints>title": "API Endpoints - {{networkName}} + Antelope Network Dashboard", - "/endpoints-stats>title": "API Endpoints Stats- {{networkName}} + Antelope Network Dashboard", - "/about>title": "About - {{networkName}} + Antelope Network Dashboard", - "/help>title": "Help - {{networkName}} + Antelope Network Dashboard" + "/cpu-benchmark>title": "CPU 基准测试 - {{networkName}} + Antelope 网络仪表板", + "/block-producers>title": "区块生产者 - {{networkName}} + Antelope 网络仪表板", + "/rewards-distribution>title": "奖励分配 - {{networkName}} + Antelope 网络仪表板", + "/nodes>title": "{{networkName}} 节点状态监控", + "/nodes-distribution>title": "节点地理分布 - {{networkName}} + Antelope 网络仪表板", + "/accounts>title": "账户和合约 - {{networkName}} + Antelope 网络仪表板", + "/bpjson>title": "BP JSON - {{networkName}} + Antelope 网络仪表板", + "/ricardian-contract>title": "BP 协议 - {{networkName}} + Antelope 网络仪表板", + "/block-distribution>title": "区块生产分布 - {{networkName}} + Antelope 网络仪表板", + "/missed-blocks>title": "错过的区块 - {{networkName}} + Antelope 网络仪表板", + "/endpoints>title": "API 端点 - {{networkName}} + Antelope 网络仪表板", + "/endpoints-stats>title": "API 端点统计 - {{networkName}} + Antelope 网络仪表板", + "/about>title": "关于 - {{networkName}} + Antelope 网络仪表板", + "/help>title": "帮助 - {{networkName}} + Antelope 网络仪表板" }, "common": { - "producerName": "Entity name", - "producers": "Entities", - "producer": "Entity", - "boot": "Boot", - "writer": "Writer", - "observer": "Observer", - "validator": "Validator", - "partner": "Partner", - "nonPartner": "Non-Partner" + "producerName": "实体名称", + "producers": "实体", + "producer": "实体", + "boot": "启动", + "writer": "写入者", + "observer": "观察者", + "validator": "验证者", + "partner": "合作伙伴", + "nonPartner": "非合作伙伴" }, "producerCardComponent": { - "entityType": "Entity type", - "entityType1": "Partner", - "entityType2": "Non-Partner", - "viewProfile": "View Entity Profile", - "BPonNetwork": "Entity on {{networkName}}" + "entityType": "实体类型", + "entityType1": "合作伙伴", + "entityType2": "非合作伙伴", + "viewProfile": "查看实体资料", + "BPonNetwork": "{{networkName}}上的实体" }, "lacchainAddEntityActionEntityTypeFieldComponent": { - "entityType1": "Partner", - "entityType2": "Non-Partner" + "entityType1": "合作伙伴", + "entityType2": "非合作伙伴" }, "lacchainManagement": { - "loginWarning": "Please log in with your LACChain account to use this feature.", - "noneActionWarning": "There is no actions available for your account.", - "setentinfoTitle": "Set Entity Info", - "setentinfoTooltip": "Set on-chain information for your LACChain entity.", - "setnodeinfoTitle": "Set Node Info", - "setnodeinfoTooltip": "Set onchain information for a node you manage.", - "newaccountTitle": "New Account", - "newaccountTooltip": "Create a new account", - "addentityTitle": "Add Entity", - "addentityTooltip": "Register a new entity on the network.", - "addbootTitle": "Add Boot Node", - "addbootTooltip": "Register a new boot node on the network.", - "addobserverTitle": "Add Observer Node", - "addobserverTooltip": "Register a new observer node on the network.", - "setscheduleTitle": "Set Validator Schedule", - "setscheduleTooltip": "Set the group of blockproducing validator nodes.", - "addvalidatorTitle": "Add Validator Node", - "addvalidatorTooltip": "Register a new validator node on the network.", - "addwriterTitle": "Add Writer Node", - "addwriterTooltip": "Register a new writer node on the network.", - "setalimitsTitle": "Set Account Limits", - "setalimitsTooltip": "Set account CPU and NET resource limits.", - "netrmgroupTitle": "Remove Net Group", - "netrmgroupTooltip": "Remove a Group.", - "netsetgroupTitle": "Set Net Group", - "netsetgroupTooltip": "Set Net Group.", - "netaddgroupTitle": "Add Net Group", - "netaddgroupTooltip": "Add Net Group.", - "setramTitle": "Set RAM", - "setramTooltip": "Set RAM for an account.", - "setentxinfoTitle": "Set extended entity info", - "setentxinfoTooltip": "Set extended entity info.", - "setnodexinfoTitle": "Set extended node info", - "setnodexinfoTooltip": "Set extended node info.", - "rmnodeTitle": "Remove Node", - "rmnodeTooltip": "Allow remove a Validator Node from the network.", - "rmentityTitle": "Remove Entity", - "rmentityTooltip": "Allow remove an entity from the network.", - "entity": "Entity", - "organization_name": "Organization Name", - "organization_id": "Organization ID", - "technical_contact": "Technical Contact", - "business_contact": "Business Contact", - "email": "E-mail", - "website": "Website", - "code_of_conduct": "Code of Conduct", - "ownership_disclosure": "Ownership Disclosure", - "github_user": "GitHub user", - "chain_resources": "Chain Resources", - "other_resources": "Other Resources", + "loginWarning": "请使用您的 LACChain 账户登录以使用此功能。", + "noneActionWarning": "您的账户没有可用操作。", + "setentinfoTitle": "设置实体信息", + "setentinfoTooltip": "为您的 LACChain 实体设置链上信息。", + "setnodeinfoTitle": "设置节点信息", + "setnodeinfoTooltip": "为您管理的节点设置链上信息。", + "newaccountTitle": "新账户", + "newaccountTooltip": "创建新账户", + "addentityTitle": "添加实体", + "addentityTooltip": "在网络上注册新实体。", + "addbootTitle": "添加启动节点", + "addbootTooltip": "在网络上注册新的启动节点。", + "addobserverTitle": "添加观察者节点", + "addobserverTooltip": "在网络上注册新的观察者节点。", + "setscheduleTitle": "设置验证者计划", + "setscheduleTooltip": "设置区块生产验证者节点组。", + "addvalidatorTitle": "添加验证者节点", + "addvalidatorTooltip": "在网络上注册新的验证者节点。", + "addwriterTitle": "添加写入者节点", + "addwriterTooltip": "在网络上注册新的写入者节点。", + "setalimitsTitle": "设置账户限制", + "setalimitsTooltip": "设置账户 CPU 和 NET 资源限制。", + "netrmgroupTitle": "移除网络组", + "netrmgroupTooltip": "移除组。", + "netsetgroupTitle": "设置网络组", + "netsetgroupTooltip": "设置网络组。", + "netaddgroupTitle": "添加网络组", + "netaddgroupTooltip": "添加网络组。", + "setramTitle": "设置 RAM", + "setramTooltip": "为账户设置 RAM。", + "setentxinfoTitle": "设置扩展实体信息", + "setentxinfoTooltip": "设置扩展实体信息。", + "setnodexinfoTitle": "设置扩展节点信息", + "setnodexinfoTooltip": "设置扩展节点信息。", + "rmnodeTitle": "移除节点", + "rmnodeTooltip": "允许从网络中移除验证者节点。", + "rmentityTitle": "移除实体", + "rmentityTooltip": "允许从网络中移除实体。", + "entity": "实体", + "organization_name": "组织名称", + "organization_id": "组织 ID", + "technical_contact": "技术联系人", + "business_contact": "商务联系人", + "email": "电子邮件", + "website": "网站", + "code_of_conduct": "行为准则", + "ownership_disclosure": "所有权披露", + "github_user": "GitHub 用户", + "chain_resources": "链资源", + "other_resources": "其他资源", "logo_256": "Logo 256", "logo_1024": "Logo 1024", "logo_svg": "Logo SVG", - "location_name": "Location Name", - "country": "Country", - "latitude": "Latitude", - "longitude": "Longitude", + "location_name": "位置名称", + "country": "国家", + "latitude": "纬度", + "longitude": "经度", "hive": "Hive", - "twitter": "Twitter", - "youtube": "Youtube", - "facebook": "Facebook", - "github": "Github", + "twitter": "推特", + "youtube": "YouTube", + "facebook": "脸书", + "github": "GitHub", "reddit": "Reddit", "keybase": "Keybase", - "telegram": "Telegram", - "webchat": "Webchat", - "name": "Name", - "node_name": "Node Name", - "node": "Node", - "peer_keys": "Peer keys", - "location_country": "Location Country", - "location_latitude": "Location Latitude", - "location_longitude": "Location Longitude", - "observer": "Observer", - "owner": "Owner", - "active": "Active", - "public_key": "Public key", - "writer_authority": "Writer Authority", - "validator_authority": "Validator Authority", - "ram_bytes": "RAM bytes", - "account": "Account", - "executeTransaction": "Execute Transaction", - "creator": "Creator", - "comiteeAccount": "Permissioning Comitee Account Management", - "partnerAccount": "Partner Entity Management", - "nonPartnerAccount": "Non-Partner Entity Management" + "telegram": "电报", + "webchat": "网页聊天", + "name": "名称", + "node_name": "节点名称", + "node": "节点", + "peer_keys": "同行密钥", + "location_country": "位置国家", + "location_latitude": "位置纬度", + "location_longitude": "位置经度", + "observer": "观察者", + "owner": "所有者", + "active": "活跃", + "public_key": "公钥", + "writer_authority": "写入者权限", + "validator_authority": "验证者权限", + "ram_bytes": "RAM 字节", + "account": "账户", + "executeTransaction": "执行交易", + "creator": "创建者", + "comiteeAccount": "权限委员会账户管理", + "partnerAccount": "合作伙伴实体管理", + "nonPartnerAccount": "非合作伙伴实体管理" }, "blockDistributionRoute": { - "title": "Blocks Generated by Node" + "title": "节点产生的区块" }, "missedBlocksRoute": { - "title": "Missed Blocks by Node" + "title": "节点错过的区块" }, "ricardianContractRoute": { - "title": "LACChain Validator Node Agreement" + "title": "LACChain 验证者节点协议" }, "producerSearchComponent": { - "title": "Search Entity" + "title": "搜索实体" } -} +} \ No newline at end of file diff --git a/webapp/src/language/zh/zh.libre-testnet.json b/webapp/src/language/zh/zh.libre-testnet.json index 572596da5..7fa5410eb 100644 --- a/webapp/src/language/zh/zh.libre-testnet.json +++ b/webapp/src/language/zh/zh.libre-testnet.json @@ -1,5 +1,5 @@ { "routes": { - "/faucet>moreDescription": "This tool allows you to create an account and get LIBRE testnet tokens." + "/faucet>moreDescription": "此工具允许您创建账户并获取 LIBRE 测试网代币。" } -} +} \ No newline at end of file diff --git a/webapp/src/language/zh/zh.mainnet.json b/webapp/src/language/zh/zh.mainnet.json index 63761a65a..44a190729 100644 --- a/webapp/src/language/zh/zh.mainnet.json +++ b/webapp/src/language/zh/zh.mainnet.json @@ -1,20 +1,20 @@ { "routes": { - "/>title": "EOS Network Monitor and Infrastructure Dashboard", - "/cpu-benchmark>title": "CPU Benchmarks - EOS Network Monitor", - "/block-producers>title": "Block Producers - EOS Network Monitor", - "/rewards-distribution>title": "Rewards Distribution - EOS Network Monitor", - "/nodes-distribution>title": "Geographic Distribution of Nodes - EOS Network Monitor", - "/accounts>title": "Accounts and Contracts - EOS Network Monitor", - "/bpjson>title": "BP JSON - EOS Network Monitor", - "/ricardian-contract>title": "BP Agreement - EOS Network Monitor", - "/block-distribution>title": "Block Production Distribution - EOS Network Monitor", - "/missed-blocks>title": "Missed Blocks - EOS Network Monitor", - "/endpoints>title": "API Endpoints - EOS Network Monitor", - "/endpoints-stats>title": "API Endpoints Stats- EOS Network Monitor", - "/about>title": "About - EOS Network Monitor", - "/help>title": "Help - EOS Network Monitor", - "/undiscoverable-bps>title": "Undiscoverable Block Producers or Sock Puppet BPs - EOS Network Monitor", - "/evm>moreDescription": "Monitor EVM statistics, such as transaction amount history, gas price and total wallets created." + "/>title": "EOS 网络监控和基础设施仪表板", + "/cpu-benchmark>title": "CPU 基准测试 - EOS 网络监控", + "/block-producers>title": "区块生产者 - EOS 网络监控", + "/rewards-distribution>title": "奖励分配 - EOS 网络监控", + "/nodes-distribution>title": "节点地理分布 - EOS 网络监控", + "/accounts>title": "账户和合约 - EOS 网络监控", + "/bpjson>title": "BP JSON - EOS 网络监控", + "/ricardian-contract>title": "BP 协议 - EOS 网络监控", + "/block-distribution>title": "区块生产分布 - EOS 网络监控", + "/missed-blocks>title": "错过的区块 - EOS 网络监控", + "/endpoints>title": "API 端点 - EOS 网络监控", + "/endpoints-stats>title": "API 端点统计 - EOS 网络监控", + "/about>title": "关于 - EOS 网络监控", + "/help>title": "帮助 - EOS 网络监控", + "/undiscoverable-bps>title": "无法发现的区块生产者或傀儡 BPs - EOS 网络监控", + "/evm>moreDescription": "监控 EVM 统计数据,例如交易金额历史、天然气价格和创建的总钱包数。" } -} +} \ No newline at end of file diff --git a/webapp/src/language/zh/zh.telos-testnet.json b/webapp/src/language/zh/zh.telos-testnet.json index 618f5ec62..867fc4cc8 100644 --- a/webapp/src/language/zh/zh.telos-testnet.json +++ b/webapp/src/language/zh/zh.telos-testnet.json @@ -1,6 +1,6 @@ { "routes": { - "/evm>moreDescription": "Monitor Telos EVM statistics (tEVM), such as transaction amount history, gas price and total wallets created.", - "/evm-rpc-endpoints>moreDescription": "A list of Telos EVM (tEVM) endpoints, with their health status and latency in milliseconds." + "/evm>moreDescription": "监控 Telos EVM(tEVM)的统计数据,如交易金额历史、天然气价格和创建的钱包总数。", + "/evm-rpc-endpoints>moreDescription": "Telos EVM(tEVM)端点的列表,包括它们的健康状态和以毫秒计的延迟。" } -} +} \ No newline at end of file diff --git a/webapp/src/language/zh/zh.telos.json b/webapp/src/language/zh/zh.telos.json index 618f5ec62..57606aab8 100644 --- a/webapp/src/language/zh/zh.telos.json +++ b/webapp/src/language/zh/zh.telos.json @@ -1,6 +1,6 @@ { "routes": { - "/evm>moreDescription": "Monitor Telos EVM statistics (tEVM), such as transaction amount history, gas price and total wallets created.", - "/evm-rpc-endpoints>moreDescription": "A list of Telos EVM (tEVM) endpoints, with their health status and latency in milliseconds." + "/evm>moreDescription": "监控 Telos EVM(tEVM)统计数据,例如交易金额历史、天然气价格和创建的总钱包数量。", + "/evm-rpc-endpoints>moreDescription": "Telos EVM(tEVM)端点列表,包括它们的健康状态和以毫秒为单位的延迟。" } -} +} \ No newline at end of file diff --git a/webapp/src/language/zh/zh.ultra-testnet.json b/webapp/src/language/zh/zh.ultra-testnet.json index 565b9cbca..23473c72c 100644 --- a/webapp/src/language/zh/zh.ultra-testnet.json +++ b/webapp/src/language/zh/zh.ultra-testnet.json @@ -1,6 +1,6 @@ { "routes": { - "/faucet>moreDescription": "This tool allows you to create an account and get UOS testnet tokens.", - "/>moreDescription": "Find information on the {{networkName}} Network and its current status." + "/faucet>moreDescription": "此工具允许您创建账户并获取 UOS 测试网代币。", + "/>moreDescription": "查找有关{{networkName}}网络及其当前状态的信息。" } -} +} \ No newline at end of file diff --git a/webapp/src/language/zh/zh.xpr-testnet.json b/webapp/src/language/zh/zh.xpr-testnet.json index 182db6a59..56152d074 100644 --- a/webapp/src/language/zh/zh.xpr-testnet.json +++ b/webapp/src/language/zh/zh.xpr-testnet.json @@ -1,20 +1,20 @@ { "routes": { - "/>title": "{{networkName}} Monitor and Infrastructure Dashboard", - "/cpu-benchmark>title": "CPU Benchmarks - {{networkName}} Dashboard", - "/block-producers>title": "Block Producers - {{networkName}} Dashboard", - "/rewards-distribution>title": "Rewards Distribution - {{networkName}} Dashboard", - "/undiscoverable-bps>title": "Paid undiscoverable Block Producers - {{networkName}} Dashboard", - "/nodes>title": "{{networkName}} Nodes Status Monitor", - "/nodes-distribution>title": "Geographic Distribution of Nodes - {{networkName}} Dashboard", - "/accounts>title": "Accounts and Contracts - {{networkName}} Dashboard", - "/bpjson>title": "BP JSON - {{networkName}} Dashboard", - "/ricardian-contract>title": "BP Agreement - {{networkName}} Dashboard", - "/block-distribution>title": "Block Production Distribution - {{networkName}} Dashboard", - "/missed-blocks>title": "Missed Blocks - {{networkName}} Dashboard", - "/endpoints>title": "API Endpoints - {{networkName}} Dashboard", - "/endpoints-stats>title": "API Endpoints Stats- {{networkName}} Dashboard", - "/about>title": "About - {{networkName}} Dashboard", - "/help>title": "Help - {{networkName}} Dashboard" + "/>title": "{{networkName}} 监控和基础设施仪表板", + "/cpu-benchmark>title": "CPU 基准测试 - {{networkName}} 仪表板", + "/block-producers>title": "区块生产者 - {{networkName}} 仪表板", + "/rewards-distribution>title": "奖励分配 - {{networkName}} 仪表板", + "/undiscoverable-bps>title": "无法发现的付费区块生产者 - {{networkName}} 仪表板", + "/nodes>title": "{{networkName}} 节点状态监控", + "/nodes-distribution>title": "节点地理分布 - {{networkName}} 仪表板", + "/accounts>title": "账户和合约 - {{networkName}} 仪表板", + "/bpjson>title": "BP JSON - {{networkName}} 仪表板", + "/ricardian-contract>title": "BP 协议 - {{networkName}} 仪表板", + "/block-distribution>title": "区块生产分布 - {{networkName}} 仪表板", + "/missed-blocks>title": "错过的区块 - {{networkName}} 仪表板", + "/endpoints>title": "API 端点 - {{networkName}} 仪表板", + "/endpoints-stats>title": "API 端点统计 - {{networkName}} 仪表板", + "/about>title": "关于 - {{networkName}} 仪表板", + "/help>title": "帮助 - {{networkName}} 仪表板" } -} +} \ No newline at end of file diff --git a/webapp/src/language/zh/zh.xpr.json b/webapp/src/language/zh/zh.xpr.json index 182db6a59..56152d074 100644 --- a/webapp/src/language/zh/zh.xpr.json +++ b/webapp/src/language/zh/zh.xpr.json @@ -1,20 +1,20 @@ { "routes": { - "/>title": "{{networkName}} Monitor and Infrastructure Dashboard", - "/cpu-benchmark>title": "CPU Benchmarks - {{networkName}} Dashboard", - "/block-producers>title": "Block Producers - {{networkName}} Dashboard", - "/rewards-distribution>title": "Rewards Distribution - {{networkName}} Dashboard", - "/undiscoverable-bps>title": "Paid undiscoverable Block Producers - {{networkName}} Dashboard", - "/nodes>title": "{{networkName}} Nodes Status Monitor", - "/nodes-distribution>title": "Geographic Distribution of Nodes - {{networkName}} Dashboard", - "/accounts>title": "Accounts and Contracts - {{networkName}} Dashboard", - "/bpjson>title": "BP JSON - {{networkName}} Dashboard", - "/ricardian-contract>title": "BP Agreement - {{networkName}} Dashboard", - "/block-distribution>title": "Block Production Distribution - {{networkName}} Dashboard", - "/missed-blocks>title": "Missed Blocks - {{networkName}} Dashboard", - "/endpoints>title": "API Endpoints - {{networkName}} Dashboard", - "/endpoints-stats>title": "API Endpoints Stats- {{networkName}} Dashboard", - "/about>title": "About - {{networkName}} Dashboard", - "/help>title": "Help - {{networkName}} Dashboard" + "/>title": "{{networkName}} 监控和基础设施仪表板", + "/cpu-benchmark>title": "CPU 基准测试 - {{networkName}} 仪表板", + "/block-producers>title": "区块生产者 - {{networkName}} 仪表板", + "/rewards-distribution>title": "奖励分配 - {{networkName}} 仪表板", + "/undiscoverable-bps>title": "无法发现的付费区块生产者 - {{networkName}} 仪表板", + "/nodes>title": "{{networkName}} 节点状态监控", + "/nodes-distribution>title": "节点地理分布 - {{networkName}} 仪表板", + "/accounts>title": "账户和合约 - {{networkName}} 仪表板", + "/bpjson>title": "BP JSON - {{networkName}} 仪表板", + "/ricardian-contract>title": "BP 协议 - {{networkName}} 仪表板", + "/block-distribution>title": "区块生产分布 - {{networkName}} 仪表板", + "/missed-blocks>title": "错过的区块 - {{networkName}} 仪表板", + "/endpoints>title": "API 端点 - {{networkName}} 仪表板", + "/endpoints-stats>title": "API 端点统计 - {{networkName}} 仪表板", + "/about>title": "关于 - {{networkName}} 仪表板", + "/help>title": "帮助 - {{networkName}} 仪表板" } -} +} \ No newline at end of file From 7c021617e2b254af3f399ca8ab00a8a5356814a2 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 28 Nov 2023 13:41:27 -0600 Subject: [PATCH 58/75] perf(hapi-evm): get the partial ATH when the old blocks are synchronizing and when it ends increase the timeout --- hapi-evm/src/models/stats/queries.ts | 24 ++++++++ hapi-evm/src/services/block.service.ts | 30 +++++----- hapi-evm/src/services/partial-ath.service.ts | 59 ++++++++++++++++++++ 3 files changed, 97 insertions(+), 16 deletions(-) create mode 100644 hapi-evm/src/services/partial-ath.service.ts diff --git a/hapi-evm/src/models/stats/queries.ts b/hapi-evm/src/models/stats/queries.ts index 18ca49352..e0858d3fc 100644 --- a/hapi-evm/src/models/stats/queries.ts +++ b/hapi-evm/src/models/stats/queries.ts @@ -1,6 +1,8 @@ import { gql } from 'graphql-request' import { coreUtil } from '../../utils' +import { historicalStatsModel } from '..' + import { Stats } from './interfaces' interface StatsResponse { @@ -22,3 +24,25 @@ export const getPartialATH = async () => { return state } + +export const updateATH = async (partialATH: Stats) => { + if (!partialATH) return + const currentState = await historicalStatsModel.queries.getState() + if ( + currentState.tps_all_time_high.transactions_count > + partialATH.ath_transactions_count + ) + return + if ( + currentState.tps_all_time_high.transactions_count || + 0 < partialATH.ath_transactions_count + ) { + await historicalStatsModel.queries.saveOrUpdate({ + tps_all_time_high: { + blocks: partialATH.ath_blocks.split(','), + transactions_count: partialATH.ath_transactions_count, + gas_used: partialATH.ath_gas_used + } + }) + } +} diff --git a/hapi-evm/src/services/block.service.ts b/hapi-evm/src/services/block.service.ts index 0bdd129bd..72dcc2dee 100644 --- a/hapi-evm/src/services/block.service.ts +++ b/hapi-evm/src/services/block.service.ts @@ -5,6 +5,7 @@ import { TransactionHash, TransactionReceipt } from 'web3-types' +import moment from 'moment' import { defaultModel, @@ -15,7 +16,9 @@ import { StatsModel } from '../models' import { networkConfig } from '../config' -import moment from 'moment' +import { timeUtil } from '../utils' + +import { getATHInRange } from './partial-ath.service' const httpProvider = new Web3.providers.HttpProvider(networkConfig.evmEndpoint) const web3 = new Web3(httpProvider) @@ -135,7 +138,10 @@ const getBlock = async () => { const syncOldBlocks = async (): Promise => { let blocksInserted = 1 const paramStats = await paramModel.queries.getState() - if (paramStats.isSynced) return + if (paramStats.isSynced) { + await timeUtil.sleep(86400) + return + } const nextBlock = paramStats.nextBlock const nextBlockToNumber = paramStats.completeAt || @@ -160,6 +166,11 @@ const syncOldBlocks = async (): Promise => { !!isUpToDate, nextBlockToNumber ) + const partialATH = await getATHInRange( + nextBlock - 1, + nextBlock + blocksInserted - 1 + ) + await StatsModel.queries.updateATH(partialATH) } const blockWorker = async () => { @@ -171,21 +182,8 @@ const cleanOldBlocks = async () => { } const syncATH = async () => { - const currentState = await historicalStatsModel.queries.getState() const partialATH = await StatsModel.queries.getPartialATH() - if (!partialATH) return - if ( - currentState.tps_all_time_high.transactions_count || - 0 < partialATH.ath_transactions_count - ) { - await historicalStatsModel.queries.saveOrUpdate({ - tps_all_time_high: { - blocks: partialATH.ath_blocks.split(','), - transactions_count: partialATH.ath_transactions_count, - gas_used: partialATH.ath_gas_used - } - }) - } + await StatsModel.queries.updateATH(partialATH) } const syncBlockWorker = (): defaultModel.Worker => { diff --git a/hapi-evm/src/services/partial-ath.service.ts b/hapi-evm/src/services/partial-ath.service.ts new file mode 100644 index 000000000..eb9cbd337 --- /dev/null +++ b/hapi-evm/src/services/partial-ath.service.ts @@ -0,0 +1,59 @@ +import { Stats } from '../models/stats/interfaces' +import { sequelizeUtil } from '../utils' + +export const getATHInRange = async ( + lowerBlockNumber: number, + upperBlockNumber: number +) => { + const [rows] = await sequelizeUtil.sequelize.query(` + SELECT + ath_in_range.blocks AS ath_blocks, + COALESCE( + (ath_in_range.max_transaction_sum) :: numeric, + (0) :: numeric + ) AS ath_transactions_count, + COALESCE(ath_in_range.gas_used_sum, (0) :: numeric) AS ath_gas_used + FROM + ( + WITH subquery AS ( + SELECT + array_to_string(array_agg(block.number), ',' :: text) AS blocks, + sum(jsonb_array_length(block.transactions)) AS total_transaction_count, + sum(block.gas_used) AS gas_used_sum + FROM + evm.block + WHERE (block.number >= ${lowerBlockNumber} and block.number <= ${upperBlockNumber}) + GROUP BY + block."timestamp" + ) + SELECT + q2.blocks, + q1.max_transaction_sum, + q2.gas_used_sum + FROM + ( + ( + SELECT + max(subquery.total_transaction_count) AS max_transaction_sum + FROM + subquery + ) q1 + JOIN subquery q2 ON ( + ( + q1.max_transaction_sum = q2.total_transaction_count + ) + ) + ) + LIMIT + 1 + ) ath_in_range + `) + + const row = rows[0] as Stats + + return { + ath_blocks: row.ath_blocks, + ath_transactions_count: Number(row.ath_transactions_count) || 0, + ath_gas_used: Number(row.ath_gas_used) + } as Stats +} From b3e3dbdcd970ecf42e12ae8d7bd31f6bd73a6b11 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 28 Nov 2023 13:42:20 -0600 Subject: [PATCH 59/75] perf(hasura): get the ath from the last 30 minutes instead of all blocks --- .../down.sql | 32 +++++++++++++++++++ .../up.sql | 30 +++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 hasura/migrations/default/1701189064166_create_evm_stats_view_v5/down.sql create mode 100644 hasura/migrations/default/1701189064166_create_evm_stats_view_v5/up.sql diff --git a/hasura/migrations/default/1701189064166_create_evm_stats_view_v5/down.sql b/hasura/migrations/default/1701189064166_create_evm_stats_view_v5/down.sql new file mode 100644 index 000000000..01326624b --- /dev/null +++ b/hasura/migrations/default/1701189064166_create_evm_stats_view_v5/down.sql @@ -0,0 +1,32 @@ +-- Could not auto-generate a down migration. +-- Please write an appropriate down migration for the SQL below: +-- CREATE OR REPLACE VIEW "evm"."stats" AS +-- SELECT COALESCE(evm_block.avg_gas_used, (0)::numeric) AS block_gas_avg, +-- COALESCE(daily_transactions.total_transaction_count, (0)::bigint) AS daily_transaction_count, +-- partial_ath.blocks AS ath_blocks, +-- COALESCE((partial_ath.max_transaction_sum)::numeric, (0)::numeric) AS ath_transactions_count, +-- COALESCE(partial_ath.gas_used_sum, (0)::numeric) AS ath_gas_used +-- FROM ((( SELECT avg(subquery_alias.gas_used) AS avg_gas_used +-- FROM ( SELECT block.gas_used, +-- block."timestamp" +-- FROM evm.block +-- ORDER BY block."timestamp" DESC +-- LIMIT 100) subquery_alias) evm_block +-- CROSS JOIN LATERAL ( SELECT sum(jsonb_array_length(block.transactions)) AS total_transaction_count +-- FROM evm.block +-- WHERE (block."timestamp" >= (now() - '24:00:00'::interval))) daily_transactions) +-- CROSS JOIN LATERAL ( WITH subquery AS ( +-- SELECT array_to_string(array_agg(block.number), ','::text) AS blocks, +-- sum(jsonb_array_length(block.transactions)) AS total_transaction_count, +-- sum(block.gas_used) AS gas_used_sum +-- FROM evm.block +-- WHERE (block."timestamp" >= (now() - '00:30:00'::interval)) +-- GROUP BY block."timestamp" +-- ) +-- SELECT q2.blocks, +-- q1.max_transaction_sum, +-- q2.gas_used_sum +-- FROM (( SELECT max(subquery.total_transaction_count) AS max_transaction_sum +-- FROM subquery) q1 +-- JOIN subquery q2 ON ((q1.max_transaction_sum = q2.total_transaction_count))) +-- LIMIT 1) partial_ath); diff --git a/hasura/migrations/default/1701189064166_create_evm_stats_view_v5/up.sql b/hasura/migrations/default/1701189064166_create_evm_stats_view_v5/up.sql new file mode 100644 index 000000000..b597583a1 --- /dev/null +++ b/hasura/migrations/default/1701189064166_create_evm_stats_view_v5/up.sql @@ -0,0 +1,30 @@ +CREATE OR REPLACE VIEW "evm"."stats" AS + SELECT COALESCE(evm_block.avg_gas_used, (0)::numeric) AS block_gas_avg, + COALESCE(daily_transactions.total_transaction_count, (0)::bigint) AS daily_transaction_count, + partial_ath.blocks AS ath_blocks, + COALESCE((partial_ath.max_transaction_sum)::numeric, (0)::numeric) AS ath_transactions_count, + COALESCE(partial_ath.gas_used_sum, (0)::numeric) AS ath_gas_used + FROM ((( SELECT avg(subquery_alias.gas_used) AS avg_gas_used + FROM ( SELECT block.gas_used, + block."timestamp" + FROM evm.block + ORDER BY block."timestamp" DESC + LIMIT 100) subquery_alias) evm_block + CROSS JOIN LATERAL ( SELECT sum(jsonb_array_length(block.transactions)) AS total_transaction_count + FROM evm.block + WHERE (block."timestamp" >= (now() - '24:00:00'::interval))) daily_transactions) + CROSS JOIN LATERAL ( WITH subquery AS ( + SELECT array_to_string(array_agg(block.number), ','::text) AS blocks, + sum(jsonb_array_length(block.transactions)) AS total_transaction_count, + sum(block.gas_used) AS gas_used_sum + FROM evm.block + WHERE (block."timestamp" >= (now() - '00:30:00'::interval)) + GROUP BY block."timestamp" + ) + SELECT q2.blocks, + q1.max_transaction_sum, + q2.gas_used_sum + FROM (( SELECT max(subquery.total_transaction_count) AS max_transaction_sum + FROM subquery) q1 + JOIN subquery q2 ON ((q1.max_transaction_sum = q2.total_transaction_count))) + LIMIT 1) partial_ath); From 8e809ccf66ae0ef97ab69b64c1647a5236d6bb34 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 28 Nov 2023 13:45:26 -0600 Subject: [PATCH 60/75] chore(workflows): update the EVM ATH every 15 minutes instead of every minute --- .github/workflows/deploy-jungle-testnet.yaml | 2 +- .github/workflows/deploy-mainnet.yaml | 2 +- .github/workflows/deploy-telos-testnet.yaml | 2 +- .github/workflows/deploy-telos.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/deploy-jungle-testnet.yaml b/.github/workflows/deploy-jungle-testnet.yaml index eeacfa597..a49c1c605 100644 --- a/.github/workflows/deploy-jungle-testnet.yaml +++ b/.github/workflows/deploy-jungle-testnet.yaml @@ -122,7 +122,7 @@ jobs: HAPI_EVM_EOS_EVM_ACCOUNT: eosio.evm HAPI_EVM_BLOCK_INTERVAL_SEC: 1 HAPI_EVM_OLD_BLOCK_INTERVAL_SEC: 0.1 - HAPI_EVM_ATH_INTERVAL_SEC: 60 + HAPI_EVM_ATH_INTERVAL_SEC: 900 HAPI_EVM_CLEAN_OLD_BLOCK_INTERVAL_SEC: 86400 HAPI_EVM_CLEAN_OLD_TRANSFER_INTERVAL_SEC: 86400 HAPI_EVM_KEEP_HISTORY_FOR_YEARS: 1 diff --git a/.github/workflows/deploy-mainnet.yaml b/.github/workflows/deploy-mainnet.yaml index 04af36a29..0bdc87261 100644 --- a/.github/workflows/deploy-mainnet.yaml +++ b/.github/workflows/deploy-mainnet.yaml @@ -120,7 +120,7 @@ jobs: HAPI_EVM_EOS_EVM_ACCOUNT: eosio.evm HAPI_EVM_BLOCK_INTERVAL_SEC: 1 HAPI_EVM_OLD_BLOCK_INTERVAL_SEC: 0.1 - HAPI_EVM_ATH_INTERVAL_SEC: 60 + HAPI_EVM_ATH_INTERVAL_SEC: 900 HAPI_EVM_CLEAN_OLD_BLOCK_INTERVAL_SEC: 86400 HAPI_EVM_CLEAN_OLD_TRANSFER_INTERVAL_SEC: 86400 HAPI_EVM_KEEP_HISTORY_FOR_YEARS: 1 diff --git a/.github/workflows/deploy-telos-testnet.yaml b/.github/workflows/deploy-telos-testnet.yaml index 0d63bbd6f..b0ca2f181 100644 --- a/.github/workflows/deploy-telos-testnet.yaml +++ b/.github/workflows/deploy-telos-testnet.yaml @@ -121,7 +121,7 @@ jobs: HAPI_EVM_EOS_EVM_ACCOUNT: eosio.evm HAPI_EVM_BLOCK_INTERVAL_SEC: 0.5 HAPI_EVM_OLD_BLOCK_INTERVAL_SEC: 0.1 - HAPI_EVM_ATH_INTERVAL_SEC: 60 + HAPI_EVM_ATH_INTERVAL_SEC: 900 HAPI_EVM_CLEAN_OLD_BLOCK_INTERVAL_SEC: 86400 HAPI_EVM_CLEAN_OLD_TRANSFER_INTERVAL_SEC: 86400 HAPI_EVM_KEEP_HISTORY_FOR_YEARS: 1 diff --git a/.github/workflows/deploy-telos.yaml b/.github/workflows/deploy-telos.yaml index 80b9ced48..f37070896 100644 --- a/.github/workflows/deploy-telos.yaml +++ b/.github/workflows/deploy-telos.yaml @@ -121,7 +121,7 @@ jobs: HAPI_EVM_EOS_EVM_ACCOUNT: eosio.evm HAPI_EVM_BLOCK_INTERVAL_SEC: 0.5 HAPI_EVM_OLD_BLOCK_INTERVAL_SEC: 0.1 - HAPI_EVM_ATH_INTERVAL_SEC: 60 + HAPI_EVM_ATH_INTERVAL_SEC: 900 HAPI_EVM_CLEAN_OLD_BLOCK_INTERVAL_SEC: 86400 HAPI_EVM_CLEAN_OLD_TRANSFER_INTERVAL_SEC: 86400 HAPI_EVM_KEEP_HISTORY_FOR_YEARS: 1 From 5cbfd6d108442949b668d0fee8c1bd11de45689e Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 28 Nov 2023 13:45:44 -0600 Subject: [PATCH 61/75] chore(envs): update the EVM ATH every 15 minutes instead of every minute --- .env.jungle | 4 ++-- .env.local | 2 +- .env.mainnet | 2 +- .env.telos | 2 +- .env.telostestnet | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.env.jungle b/.env.jungle index eb117d263..2f6486a22 100644 --- a/.env.jungle +++ b/.env.jungle @@ -70,7 +70,7 @@ HAPI_EVM_NETWORK_CHAIN_ID=73e4385a2708e6d7048834fbc1079f2fabb17b3c125b146af43897 HAPI_EVM_EOS_EVM_ACCOUNT=eosio.evm HAPI_EVM_BLOCK_INTERVAL_SEC=1 HAPI_EVM_OLD_BLOCK_INTERVAL_SEC=0.1 -HAPI_EVM_ATH_INTERVAL_SEC=60 +HAPI_EVM_ATH_INTERVAL_SEC=900 HAPI_EVM_CLEAN_OLD_BLOCK_INTERVAL_SEC=86400 HAPI_EVM_CLEAN_OLD_TRANSFER_INTERVAL_SEC=86400 HAPI_EVM_KEEP_HISTORY_FOR_YEARS=1 @@ -110,5 +110,5 @@ REACT_APP_GOOGLE_ANALITIC_PAGE_ID=G-E6Y0EC9FT8 REACT_APP_PUBLIC_RE_CAPTCHA_KEY=key REACT_APP_EOS_INCLUDE_TRANSACTION= REACT_APP_EVM_ENDPOINT=https://api.testnet.evm.eosnetwork.com -REACT_APP_EVM_BLOCK_EXPLORER_URL=https://explorer.testnet.evm.eosnetwork.com/(block)/transactions +REACT_APP_EVM_BLOCK_EXPLORER_URL=https://explorer.testnet.evm.eosnetwork.com/block/(block)/transactions REACT_APP_EVM_ENDPOINTS=["https://api.testnet.evm.eosnetwork.com"] diff --git a/.env.local b/.env.local index b9070e6a6..5d07ee755 100644 --- a/.env.local +++ b/.env.local @@ -70,7 +70,7 @@ HAPI_EVM_NETWORK_CHAIN_ID=aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef94 HAPI_EVM_EOS_EVM_ACCOUNT=eosio.evm HAPI_EVM_BLOCK_INTERVAL_SEC=1 HAPI_EVM_OLD_BLOCK_INTERVAL_SEC=0.1 -HAPI_EVM_ATH_INTERVAL_SEC=60 +HAPI_EVM_ATH_INTERVAL_SEC=900 HAPI_EVM_CLEAN_OLD_BLOCK_INTERVAL_SEC=86400 HAPI_EVM_CLEAN_OLD_TRANSFER_INTERVAL_SEC=86400 HAPI_EVM_KEEP_HISTORY_FOR_YEARS=1 diff --git a/.env.mainnet b/.env.mainnet index 18f9ea3c4..addbc8842 100644 --- a/.env.mainnet +++ b/.env.mainnet @@ -70,7 +70,7 @@ HAPI_EVM_NETWORK_CHAIN_ID=aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef94 HAPI_EVM_EOS_EVM_ACCOUNT=eosio.evm HAPI_EVM_BLOCK_INTERVAL_SEC=1 HAPI_EVM_OLD_BLOCK_INTERVAL_SEC=0.1 -HAPI_EVM_ATH_INTERVAL_SEC=60 +HAPI_EVM_ATH_INTERVAL_SEC=900 HAPI_EVM_CLEAN_OLD_BLOCK_INTERVAL_SEC=86400 HAPI_EVM_CLEAN_OLD_TRANSFER_INTERVAL_SEC=86400 HAPI_EVM_KEEP_HISTORY_FOR_YEARS=1 diff --git a/.env.telos b/.env.telos index 952df2ffb..d97eb1438 100644 --- a/.env.telos +++ b/.env.telos @@ -69,7 +69,7 @@ HAPI_EVM_NETWORK=TELOS HAPI_EVM_EOS_EVM_ACCOUNT=eosio.evm HAPI_EVM_BLOCK_INTERVAL_SEC=0.5 HAPI_EVM_OLD_BLOCK_INTERVAL_SEC=0.1 -HAPI_EVM_ATH_INTERVAL_SEC=60 +HAPI_EVM_ATH_INTERVAL_SEC=900 HAPI_EVM_CLEAN_OLD_BLOCK_INTERVAL_SEC=86400 HAPI_EVM_CLEAN_OLD_TRANSFER_INTERVAL_SEC=86400 HAPI_EVM_KEEP_HISTORY_FOR_YEARS=1 diff --git a/.env.telostestnet b/.env.telostestnet index 16db4c07d..36405ceea 100644 --- a/.env.telostestnet +++ b/.env.telostestnet @@ -70,7 +70,7 @@ HAPI_EVM_NETWORK=TELOS HAPI_EVM_EOS_EVM_ACCOUNT=eosio.evm HAPI_EVM_BLOCK_INTERVAL_SEC=0.5 HAPI_EVM_OLD_BLOCK_INTERVAL_SEC=0.1 -HAPI_EVM_ATH_INTERVAL_SEC=60 +HAPI_EVM_ATH_INTERVAL_SEC=900 HAPI_EVM_CLEAN_OLD_BLOCK_INTERVAL_SEC=86400 HAPI_EVM_CLEAN_OLD_TRANSFER_INTERVAL_SEC=86400 HAPI_EVM_KEEP_HISTORY_FOR_YEARS=1 From 5782dd91662d1aa16bbe1d3afdefdc24a8dd4a77 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 28 Nov 2023 16:09:23 -0600 Subject: [PATCH 62/75] fix(hapi-evm): fix undefined value --- hapi-evm/src/services/partial-ath.service.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hapi-evm/src/services/partial-ath.service.ts b/hapi-evm/src/services/partial-ath.service.ts index eb9cbd337..d8cc2ff66 100644 --- a/hapi-evm/src/services/partial-ath.service.ts +++ b/hapi-evm/src/services/partial-ath.service.ts @@ -52,8 +52,8 @@ export const getATHInRange = async ( const row = rows[0] as Stats return { - ath_blocks: row.ath_blocks, - ath_transactions_count: Number(row.ath_transactions_count) || 0, - ath_gas_used: Number(row.ath_gas_used) + ath_blocks: row?.ath_blocks, + ath_transactions_count: Number(row?.ath_transactions_count) || 0, + ath_gas_used: Number(row?.ath_gas_used) || 0 } as Stats } From 9ebc91e54f146f49764dffe718e96e3a27b47280 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Tue, 28 Nov 2023 16:24:01 -0600 Subject: [PATCH 63/75] chore(hapi-evm): update ATH before save nextBlock to sync --- hapi-evm/src/services/block.service.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/hapi-evm/src/services/block.service.ts b/hapi-evm/src/services/block.service.ts index 72dcc2dee..8f466f803 100644 --- a/hapi-evm/src/services/block.service.ts +++ b/hapi-evm/src/services/block.service.ts @@ -161,16 +161,16 @@ const syncOldBlocks = async (): Promise => { } else { console.log(`Syncing old blocks complete at ${moment().format()}`) } - await paramModel.queries.saveOrUpdate( - nextBlock + blocksInserted * Number(!isUpToDate), - !!isUpToDate, - nextBlockToNumber - ) const partialATH = await getATHInRange( nextBlock - 1, nextBlock + blocksInserted - 1 ) await StatsModel.queries.updateATH(partialATH) + await paramModel.queries.saveOrUpdate( + nextBlock + blocksInserted * Number(!isUpToDate), + !!isUpToDate, + nextBlockToNumber + ) } const blockWorker = async () => { From 1970e790229bec2cc05d25dbf310d8602e2a4c20 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Thu, 30 Nov 2023 11:47:47 -0600 Subject: [PATCH 64/75] fix(hasura): fix evm stats view migration --- .../up.sql | 53 +++++++++---------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/hasura/migrations/default/1701189064166_create_evm_stats_view_v5/up.sql b/hasura/migrations/default/1701189064166_create_evm_stats_view_v5/up.sql index b597583a1..5f1abdae4 100644 --- a/hasura/migrations/default/1701189064166_create_evm_stats_view_v5/up.sql +++ b/hasura/migrations/default/1701189064166_create_evm_stats_view_v5/up.sql @@ -1,30 +1,29 @@ +DROP VIEW IF EXISTS "evm"."stats"; CREATE OR REPLACE VIEW "evm"."stats" AS SELECT COALESCE(evm_block.avg_gas_used, (0)::numeric) AS block_gas_avg, COALESCE(daily_transactions.total_transaction_count, (0)::bigint) AS daily_transaction_count, - partial_ath.blocks AS ath_blocks, - COALESCE((partial_ath.max_transaction_sum)::numeric, (0)::numeric) AS ath_transactions_count, - COALESCE(partial_ath.gas_used_sum, (0)::numeric) AS ath_gas_used - FROM ((( SELECT avg(subquery_alias.gas_used) AS avg_gas_used - FROM ( SELECT block.gas_used, - block."timestamp" - FROM evm.block - ORDER BY block."timestamp" DESC - LIMIT 100) subquery_alias) evm_block - CROSS JOIN LATERAL ( SELECT sum(jsonb_array_length(block.transactions)) AS total_transaction_count - FROM evm.block - WHERE (block."timestamp" >= (now() - '24:00:00'::interval))) daily_transactions) - CROSS JOIN LATERAL ( WITH subquery AS ( - SELECT array_to_string(array_agg(block.number), ','::text) AS blocks, - sum(jsonb_array_length(block.transactions)) AS total_transaction_count, - sum(block.gas_used) AS gas_used_sum - FROM evm.block - WHERE (block."timestamp" >= (now() - '00:30:00'::interval)) - GROUP BY block."timestamp" - ) - SELECT q2.blocks, - q1.max_transaction_sum, - q2.gas_used_sum - FROM (( SELECT max(subquery.total_transaction_count) AS max_transaction_sum - FROM subquery) q1 - JOIN subquery q2 ON ((q1.max_transaction_sum = q2.total_transaction_count))) - LIMIT 1) partial_ath); + COALESCE(max_transaction_sum, (0)::numeric) AS ath_transactions_count, + COALESCE(gas_used_sum, (0)::numeric) AS ath_gas_used, + blocks AS ath_blocks + FROM (((( SELECT avg(subquery_alias.gas_used) AS avg_gas_used + FROM ( SELECT block.gas_used, block."timestamp" + FROM evm.block + ORDER BY block."timestamp" DESC + LIMIT 100) subquery_alias) evm_block + CROSS JOIN LATERAL ( + SELECT sum(jsonb_array_length(block.transactions)) AS total_transaction_count + FROM evm.block + WHERE (block."timestamp" >= (now() - '24:00:00'::interval))) daily_transactions) + CROSS JOIN LATERAL ( + WITH subquery AS( + SELECT array_to_string(array_agg(evm.block.number), ',') AS blocks , + sum(jsonb_array_length(evm.block.transactions)) AS total_transaction_count, + sum(evm.block.gas_used) AS gas_used_sum + FROM evm.block + WHERE (block."timestamp" >= (now() - '00:30:00'::interval)) + GROUP BY timestamp) + SELECT blocks, max_transaction_sum, gas_used_sum + FROM ( SELECT max(subquery.total_transaction_count) AS max_transaction_sum + FROM subquery) q1 + INNER JOIN subquery q2 ON q1.max_transaction_sum = q2.total_transaction_count + LIMIT 1) partial_ath)); From 5734fe398be495c6b844db4297e32f0f50fd26b3 Mon Sep 17 00:00:00 2001 From: Xavier Fernandez <5632966+xavier506@users.noreply.github.com> Date: Thu, 30 Nov 2023 19:44:31 -0600 Subject: [PATCH 65/75] Revert "fix(hasura): fix evm stats view migration" --- .../up.sql | 53 ++++++++++--------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/hasura/migrations/default/1701189064166_create_evm_stats_view_v5/up.sql b/hasura/migrations/default/1701189064166_create_evm_stats_view_v5/up.sql index 5f1abdae4..b597583a1 100644 --- a/hasura/migrations/default/1701189064166_create_evm_stats_view_v5/up.sql +++ b/hasura/migrations/default/1701189064166_create_evm_stats_view_v5/up.sql @@ -1,29 +1,30 @@ -DROP VIEW IF EXISTS "evm"."stats"; CREATE OR REPLACE VIEW "evm"."stats" AS SELECT COALESCE(evm_block.avg_gas_used, (0)::numeric) AS block_gas_avg, COALESCE(daily_transactions.total_transaction_count, (0)::bigint) AS daily_transaction_count, - COALESCE(max_transaction_sum, (0)::numeric) AS ath_transactions_count, - COALESCE(gas_used_sum, (0)::numeric) AS ath_gas_used, - blocks AS ath_blocks - FROM (((( SELECT avg(subquery_alias.gas_used) AS avg_gas_used - FROM ( SELECT block.gas_used, block."timestamp" - FROM evm.block - ORDER BY block."timestamp" DESC - LIMIT 100) subquery_alias) evm_block - CROSS JOIN LATERAL ( - SELECT sum(jsonb_array_length(block.transactions)) AS total_transaction_count - FROM evm.block - WHERE (block."timestamp" >= (now() - '24:00:00'::interval))) daily_transactions) - CROSS JOIN LATERAL ( - WITH subquery AS( - SELECT array_to_string(array_agg(evm.block.number), ',') AS blocks , - sum(jsonb_array_length(evm.block.transactions)) AS total_transaction_count, - sum(evm.block.gas_used) AS gas_used_sum - FROM evm.block - WHERE (block."timestamp" >= (now() - '00:30:00'::interval)) - GROUP BY timestamp) - SELECT blocks, max_transaction_sum, gas_used_sum - FROM ( SELECT max(subquery.total_transaction_count) AS max_transaction_sum - FROM subquery) q1 - INNER JOIN subquery q2 ON q1.max_transaction_sum = q2.total_transaction_count - LIMIT 1) partial_ath)); + partial_ath.blocks AS ath_blocks, + COALESCE((partial_ath.max_transaction_sum)::numeric, (0)::numeric) AS ath_transactions_count, + COALESCE(partial_ath.gas_used_sum, (0)::numeric) AS ath_gas_used + FROM ((( SELECT avg(subquery_alias.gas_used) AS avg_gas_used + FROM ( SELECT block.gas_used, + block."timestamp" + FROM evm.block + ORDER BY block."timestamp" DESC + LIMIT 100) subquery_alias) evm_block + CROSS JOIN LATERAL ( SELECT sum(jsonb_array_length(block.transactions)) AS total_transaction_count + FROM evm.block + WHERE (block."timestamp" >= (now() - '24:00:00'::interval))) daily_transactions) + CROSS JOIN LATERAL ( WITH subquery AS ( + SELECT array_to_string(array_agg(block.number), ','::text) AS blocks, + sum(jsonb_array_length(block.transactions)) AS total_transaction_count, + sum(block.gas_used) AS gas_used_sum + FROM evm.block + WHERE (block."timestamp" >= (now() - '00:30:00'::interval)) + GROUP BY block."timestamp" + ) + SELECT q2.blocks, + q1.max_transaction_sum, + q2.gas_used_sum + FROM (( SELECT max(subquery.total_transaction_count) AS max_transaction_sum + FROM subquery) q1 + JOIN subquery q2 ON ((q1.max_transaction_sum = q2.total_transaction_count))) + LIMIT 1) partial_ath); From 9133350bca9c6f71e3884c21fdcfd0a077e59e9e Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Mon, 4 Dec 2023 12:03:02 -0600 Subject: [PATCH 66/75] fix(hasura): regenerate migration to get a partial ATH --- .../down.sql | 5 +++-- .../up.sql | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) rename hasura/migrations/default/{1701189064166_create_evm_stats_view_v5 => 1701711193753_create_evm_stats_view_v5}/down.sql (95%) rename hasura/migrations/default/{1701189064166_create_evm_stats_view_v5 => 1701711193753_create_evm_stats_view_v5}/up.sql (95%) diff --git a/hasura/migrations/default/1701189064166_create_evm_stats_view_v5/down.sql b/hasura/migrations/default/1701711193753_create_evm_stats_view_v5/down.sql similarity index 95% rename from hasura/migrations/default/1701189064166_create_evm_stats_view_v5/down.sql rename to hasura/migrations/default/1701711193753_create_evm_stats_view_v5/down.sql index 01326624b..3f32d1c22 100644 --- a/hasura/migrations/default/1701189064166_create_evm_stats_view_v5/down.sql +++ b/hasura/migrations/default/1701711193753_create_evm_stats_view_v5/down.sql @@ -1,11 +1,12 @@ -- Could not auto-generate a down migration. -- Please write an appropriate down migration for the SQL below: +-- DROP VIEW IF EXISTS "evm"."stats"; -- CREATE OR REPLACE VIEW "evm"."stats" AS -- SELECT COALESCE(evm_block.avg_gas_used, (0)::numeric) AS block_gas_avg, -- COALESCE(daily_transactions.total_transaction_count, (0)::bigint) AS daily_transaction_count, --- partial_ath.blocks AS ath_blocks, -- COALESCE((partial_ath.max_transaction_sum)::numeric, (0)::numeric) AS ath_transactions_count, --- COALESCE(partial_ath.gas_used_sum, (0)::numeric) AS ath_gas_used +-- COALESCE(partial_ath.gas_used_sum, (0)::numeric) AS ath_gas_used, +-- partial_ath.blocks AS ath_blocks -- FROM ((( SELECT avg(subquery_alias.gas_used) AS avg_gas_used -- FROM ( SELECT block.gas_used, -- block."timestamp" diff --git a/hasura/migrations/default/1701189064166_create_evm_stats_view_v5/up.sql b/hasura/migrations/default/1701711193753_create_evm_stats_view_v5/up.sql similarity index 95% rename from hasura/migrations/default/1701189064166_create_evm_stats_view_v5/up.sql rename to hasura/migrations/default/1701711193753_create_evm_stats_view_v5/up.sql index b597583a1..c3fbbdb3c 100644 --- a/hasura/migrations/default/1701189064166_create_evm_stats_view_v5/up.sql +++ b/hasura/migrations/default/1701711193753_create_evm_stats_view_v5/up.sql @@ -1,9 +1,10 @@ +DROP VIEW IF EXISTS "evm"."stats"; CREATE OR REPLACE VIEW "evm"."stats" AS SELECT COALESCE(evm_block.avg_gas_used, (0)::numeric) AS block_gas_avg, COALESCE(daily_transactions.total_transaction_count, (0)::bigint) AS daily_transaction_count, - partial_ath.blocks AS ath_blocks, COALESCE((partial_ath.max_transaction_sum)::numeric, (0)::numeric) AS ath_transactions_count, - COALESCE(partial_ath.gas_used_sum, (0)::numeric) AS ath_gas_used + COALESCE(partial_ath.gas_used_sum, (0)::numeric) AS ath_gas_used, + partial_ath.blocks AS ath_blocks FROM ((( SELECT avg(subquery_alias.gas_used) AS avg_gas_used FROM ( SELECT block.gas_used, block."timestamp" From 89d8e7c46c61d6e4395a5f1ad1057889b2430f93 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Mon, 4 Dec 2023 14:26:23 -0600 Subject: [PATCH 67/75] fix(webapp): fix error when ATH blocks array is undefined --- webapp/src/routes/EVMDashboard/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/src/routes/EVMDashboard/index.js b/webapp/src/routes/EVMDashboard/index.js index 54de327ab..84fad3461 100644 --- a/webapp/src/routes/EVMDashboard/index.js +++ b/webapp/src/routes/EVMDashboard/index.js @@ -143,7 +143,7 @@ const EVMDashboard = () => { loading={loading} > + links={(EVMStats?.tps_all_time_high?.blocks || []).map(block => getEVMBlockNumUrl(block), )} /> From 455245da1cc1432f7cf3fde7e789a0a8108561d2 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Thu, 7 Dec 2023 14:13:35 -0600 Subject: [PATCH 68/75] chore(hapi-evm): define sequelize pool configuration --- hapi-evm/src/utils/sequelize.util.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hapi-evm/src/utils/sequelize.util.ts b/hapi-evm/src/utils/sequelize.util.ts index e641a5ea1..645973520 100644 --- a/hapi-evm/src/utils/sequelize.util.ts +++ b/hapi-evm/src/utils/sequelize.util.ts @@ -6,5 +6,11 @@ export const sequelize = new Sequelize(hasuraConfig.databaseURL, { dialectOptions: { connectTimeout: 60000000 }, + pool: { + max: 2, + min: 0, + acquire: 30000, + idle: 10000 + }, logging: false }) From 61943716bb91f847ca920d1332f8546509d4d88b Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Thu, 7 Dec 2023 14:13:48 -0600 Subject: [PATCH 69/75] chore(hapi): define sequelize pool configuration --- hapi/src/utils/sequelize.util.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hapi/src/utils/sequelize.util.js b/hapi/src/utils/sequelize.util.js index ae46b5c61..e37e993f7 100644 --- a/hapi/src/utils/sequelize.util.js +++ b/hapi/src/utils/sequelize.util.js @@ -6,6 +6,12 @@ const sequelize = new Sequelize(hasuraConfig.databaseUrl, { dialectOptions: { connectTimeout: 60000000 }, + pool: { + max: 5, + min: 0, + acquire: 30000, + idle: 10000 + }, logging: false }) From 87067d4cc3e8eb71a04123f300bb0e01936625df Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Thu, 7 Dec 2023 14:17:34 -0600 Subject: [PATCH 70/75] perf(hapi-evm): query the blocks to the partial ATH calculation --- hapi-evm/src/services/block.service.ts | 16 +-- hapi-evm/src/services/partial-ath.service.ts | 114 ++++++++++--------- 2 files changed, 72 insertions(+), 58 deletions(-) diff --git a/hapi-evm/src/services/block.service.ts b/hapi-evm/src/services/block.service.ts index 8f466f803..44af7fb9c 100644 --- a/hapi-evm/src/services/block.service.ts +++ b/hapi-evm/src/services/block.service.ts @@ -30,10 +30,6 @@ const syncFullBlock = async (blockNumber: number | bigint) => { throw new Error('Wrong block format') } - const blockExist = await blockModel.queries.exist(block.hash.toString()) - - if (blockExist) return - const blockTimestamp = new Date(Number(block.timestamp) * 1000) const isBefore = moment(blockTimestamp).isBefore( moment().subtract(networkConfig.keepHistoryForYears, 'years') @@ -119,17 +115,23 @@ const incrementTotalTransactions = async (transactionsCount: number) => { } } -const getBlock = async () => { - let blockNumber: bigint +const getLastBlockInDB = async () => { const lastBlockInDB = (await blockModel.queries.default.get( { timestamp: { _gt: moment().subtract(30, 'minutes') } }, { number: 'desc' } )) as blockModel.interfaces.CappedBlock + return lastBlockInDB?.number || 0 +} + +const getBlock = async () => { + let blockNumber: bigint + const lastBlockInDB = await getLastBlockInDB() + if (!lastBlockInDB) { blockNumber = await web3.eth.getBlockNumber() } else { - blockNumber = BigInt(lastBlockInDB.number + 1) + blockNumber = BigInt(lastBlockInDB + 1) } await syncFullBlock(blockNumber) diff --git a/hapi-evm/src/services/partial-ath.service.ts b/hapi-evm/src/services/partial-ath.service.ts index d8cc2ff66..5df2f8c6b 100644 --- a/hapi-evm/src/services/partial-ath.service.ts +++ b/hapi-evm/src/services/partial-ath.service.ts @@ -1,59 +1,71 @@ +import Web3 from 'web3' + import { Stats } from '../models/stats/interfaces' -import { sequelizeUtil } from '../utils' +import { networkConfig } from '../config' export const getATHInRange = async ( lowerBlockNumber: number, upperBlockNumber: number ) => { - const [rows] = await sequelizeUtil.sequelize.query(` - SELECT - ath_in_range.blocks AS ath_blocks, - COALESCE( - (ath_in_range.max_transaction_sum) :: numeric, - (0) :: numeric - ) AS ath_transactions_count, - COALESCE(ath_in_range.gas_used_sum, (0) :: numeric) AS ath_gas_used - FROM - ( - WITH subquery AS ( - SELECT - array_to_string(array_agg(block.number), ',' :: text) AS blocks, - sum(jsonb_array_length(block.transactions)) AS total_transaction_count, - sum(block.gas_used) AS gas_used_sum - FROM - evm.block - WHERE (block.number >= ${lowerBlockNumber} and block.number <= ${upperBlockNumber}) - GROUP BY - block."timestamp" + const httpProvider = new Web3.providers.HttpProvider( + networkConfig.evmEndpoint + ) + const web3 = new Web3(httpProvider) + + const rangeOfBlocks = Array.from( + { length: upperBlockNumber - lowerBlockNumber }, + (_, index) => index + lowerBlockNumber + ) + + const blocks = await Promise.allSettled( + rangeOfBlocks.map(async blockNumber => await web3.eth.getBlock(blockNumber)) + ) + + const blocksPerSecond = blocks.reduce( + (status: { [timestamp: number]: Stats }, blockPromise) => { + if (blockPromise.status !== 'fulfilled') return status + + const block = blockPromise.value + const timestamp = Number(block.timestamp) + const stats = { + ath_blocks: Number(block.number).toString(), + ath_transactions_count: block.transactions?.length || 0, + ath_gas_used: Number(block.gasUsed) || 0 + } + if (!status[timestamp]) { + return { ...status, [timestamp]: stats } + } else { + return { + ...status, + [timestamp]: { + ath_blocks: status[timestamp].ath_blocks + ',' + stats.ath_blocks, + ath_transactions_count: + status[timestamp].ath_transactions_count + + stats.ath_transactions_count, + ath_gas_used: status[timestamp].ath_gas_used + stats.ath_gas_used + } + } + } + }, + {} + ) + + const partialATH = Object.keys(blocksPerSecond || {}).reduce( + (max: Stats, current: string): Stats => { + if ( + max.ath_transactions_count > + blocksPerSecond[Number(current)].ath_transactions_count ) - SELECT - q2.blocks, - q1.max_transaction_sum, - q2.gas_used_sum - FROM - ( - ( - SELECT - max(subquery.total_transaction_count) AS max_transaction_sum - FROM - subquery - ) q1 - JOIN subquery q2 ON ( - ( - q1.max_transaction_sum = q2.total_transaction_count - ) - ) - ) - LIMIT - 1 - ) ath_in_range - `) - - const row = rows[0] as Stats - - return { - ath_blocks: row?.ath_blocks, - ath_transactions_count: Number(row?.ath_transactions_count) || 0, - ath_gas_used: Number(row?.ath_gas_used) || 0 - } as Stats + return max + + return blocksPerSecond[Number(current)] + }, + { + ath_blocks: '', + ath_transactions_count: 0, + ath_gas_used: 0 + } + ) + + return partialATH as Stats } From 9dd7754cc247f4f12e5fd78e44b474ebf259d259 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Thu, 7 Dec 2023 14:28:03 -0600 Subject: [PATCH 71/75] chore(hapi): use aggregate to get the amount of producers --- hapi/src/services/producer.service.js | 47 ++++++++++++++++++++------- 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/hapi/src/services/producer.service.js b/hapi/src/services/producer.service.js index 78d1886dc..530b28ce0 100644 --- a/hapi/src/services/producer.service.js +++ b/hapi/src/services/producer.service.js @@ -112,18 +112,41 @@ const saveEstimateNextUpdate = async lastUpdateAt => { } const getProducersSummary = async () => { - const [rows] = await sequelizeUtil.query(` - SELECT - bp_json->>'type' as type, - count(*)::integer as entities_count, - STRING_AGG (owner, ',') as entities - FROM producer - GROUP BY - bp_json->>'type' - ; -`) - - return rows + if (eosConfig.networkName === eosConfig.knownNetworks.lacchain) { + const [rows] = await sequelizeUtil.query(` + SELECT + bp_json->>'type' as type, + count(*)::integer as entities_count, + STRING_AGG (owner, ',') as entities + FROM producer + GROUP BY + bp_json->>'type' + ; + `) + + return rows + } + + const query = ` + { + producer_aggregate { + aggregate { + count + } + } + } + ` + + const { + producer_aggregate: { aggregate: { count } } + } = await hasuraUtil.request(query) + + return [ + { + type: null, + entities_count: count + } + ] } const syncNodes = async producers => { From f67ac34708ec7ea291f6f9b8d14a01e96679327f Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Thu, 7 Dec 2023 15:06:08 -0600 Subject: [PATCH 72/75] chore(hapi-evm): keep last block num inserted to avoid query it every round --- hapi-evm/src/services/block.service.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/hapi-evm/src/services/block.service.ts b/hapi-evm/src/services/block.service.ts index 44af7fb9c..f2c0df893 100644 --- a/hapi-evm/src/services/block.service.ts +++ b/hapi-evm/src/services/block.service.ts @@ -124,9 +124,9 @@ const getLastBlockInDB = async () => { return lastBlockInDB?.number || 0 } -const getBlock = async () => { +const getBlock = async (lastInserted: number | null) => { let blockNumber: bigint - const lastBlockInDB = await getLastBlockInDB() + const lastBlockInDB = lastInserted || (await getLastBlockInDB()) if (!lastBlockInDB) { blockNumber = await web3.eth.getBlockNumber() @@ -135,6 +135,8 @@ const getBlock = async () => { } await syncFullBlock(blockNumber) + + return Number(blockNumber) } const syncOldBlocks = async (): Promise => { @@ -175,8 +177,9 @@ const syncOldBlocks = async (): Promise => { ) } +let lastInserted: number | null = null const blockWorker = async () => { - getBlock() + lastInserted = await getBlock(lastInserted) } const cleanOldBlocks = async () => { From c10028ed74e92285331f6eab3723d54bf9df91fd Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Thu, 7 Dec 2023 16:00:17 -0600 Subject: [PATCH 73/75] chore(hapi): print the error when it doesn't have a message --- hapi-evm/src/services/worker/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hapi-evm/src/services/worker/index.ts b/hapi-evm/src/services/worker/index.ts index 8da101223..77b29f917 100644 --- a/hapi-evm/src/services/worker/index.ts +++ b/hapi-evm/src/services/worker/index.ts @@ -8,7 +8,7 @@ const run = async (worker: defaultModel.Worker) => { try { await worker.action() } catch (error: any) { - console.log(`${worker.name} ERROR =>`, error.message) + console.log(`${worker.name} ERROR =>`, error?.message || error) } if (!worker.intervalSec) { From 9b9c84856bfc453191e1fe44f750df145f4d4f91 Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Fri, 8 Dec 2023 16:46:45 -0600 Subject: [PATCH 74/75] fix(webapp): avoid undefined additional nodes types --- webapp/src/config/eos.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/src/config/eos.config.js b/webapp/src/config/eos.config.js index 3f4ed18c8..79bf7d947 100644 --- a/webapp/src/config/eos.config.js +++ b/webapp/src/config/eos.config.js @@ -103,7 +103,7 @@ const blockExplorerLinks = JSON.parse(process.env.REACT_APP_BLOCK_EXPLORER_URL | export const nodeTypes = _nodeTypes export const nodeChips = _nodeChips || _nodeTypes -export const additionalNodesTypes = _additionalNodesTypes +export const additionalNodesTypes = _additionalNodesTypes || [] export const producerTypes = _producerTypes export const includeDefaultTransaction = process.env .REACT_APP_EOS_INCLUDE_TRANSACTION From cca91e92b061455018bcb947d32fd384690e8b4b Mon Sep 17 00:00:00 2001 From: Torresmorah Date: Fri, 8 Dec 2023 16:48:13 -0600 Subject: [PATCH 75/75] feat(webapp): update eoscr-components --- webapp/package.json | 2 +- webapp/yarn.lock | 169 ++++++++++++++++++++++++++++---------------- 2 files changed, 110 insertions(+), 61 deletions(-) diff --git a/webapp/package.json b/webapp/package.json index 50e48abf0..f7dbf8a94 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -29,7 +29,7 @@ "@dvsl/zoomcharts": "^1.19.0-1", "@emotion/react": "^11.9.3", "@emotion/styled": "^11.9.3", - "@eoscostarica/eoscr-components": "^4.0.5", + "@eoscostarica/eoscr-components": "^4.0.7", "@mui/icons-material": "^5.8.4", "@mui/lab": "^5.0.0-alpha.90", "@mui/material": "^5.9.0", diff --git a/webapp/yarn.lock b/webapp/yarn.lock index e34c89124..b8f0a3581 100644 --- a/webapp/yarn.lock +++ b/webapp/yarn.lock @@ -3,9 +3,9 @@ "@adobe/css-tools@^4.0.1": - version "4.3.1" - resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.1.tgz#abfccb8ca78075a2b6187345c26243c1a0842f28" - integrity sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg== + version "4.3.2" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.2.tgz#a6abc715fb6884851fca9dad37fc34739a04fd11" + integrity sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw== "@ampproject/remapping@^2.2.0": version "2.2.1" @@ -56,7 +56,7 @@ dependencies: "@babel/highlight" "^7.8.3" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.8.3": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.8.3": version "7.22.13" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== @@ -64,6 +64,14 @@ "@babel/highlight" "^7.22.13" chalk "^2.4.2" +"@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== + dependencies: + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" + "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.20", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.9.0": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.20.tgz#8df6e96661209623f1975d66c35ffca66f3306d0" @@ -320,7 +328,16 @@ "@babel/traverse" "^7.23.0" "@babel/types" "^7.23.0" -"@babel/highlight@^7.22.13", "@babel/highlight@^7.8.3": +"@babel/highlight@^7.22.13", "@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + +"@babel/highlight@^7.8.3": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== @@ -1349,7 +1366,15 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.12.1": +"@babel/runtime-corejs3@^7.10.2": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.23.5.tgz#818778beea4f23d40b77b5ad213894404c14f3f3" + integrity sha512-7+ziVclejQTLYhXl+Oi1f6gTGD1XDCeLa4R472TNGQxb08zbEJ0OdNoh5Piz+57Ltmui6xR88BXR4gS3/Toslw== + dependencies: + core-js-pure "^3.30.2" + regenerator-runtime "^0.14.0" + +"@babel/runtime-corejs3@^7.12.1": version "7.23.1" resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.23.1.tgz#d03f5819f4ba81a21dd1f80edfb19983e9e20fc1" integrity sha512-OKKfytwoc0tr7cDHwQm0RLVR3y+hDGFz3EPuvLNU/0fOeXJeKNIHj7ffNVFnncWt3sC58uyUCRSzf8nBQbyF6A== @@ -1364,13 +1389,20 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.19.4", "@babel/runtime@^7.20.13", "@babel/runtime@^7.22.15", "@babel/runtime@^7.22.5", "@babel/runtime@^7.22.6", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.19.4", "@babel/runtime@^7.22.15", "@babel/runtime@^7.22.5", "@babel/runtime@^7.22.6", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4": version "7.23.1" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.1.tgz#72741dc4d413338a91dcb044a86f3c0bc402646d" integrity sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g== dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.20.13", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.5.tgz#11edb98f8aeec529b82b211028177679144242db" + integrity sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.4.0", "@babel/template@^7.8.6": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" @@ -1540,10 +1572,10 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== -"@eoscostarica/eoscr-components@^4.0.5": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@eoscostarica/eoscr-components/-/eoscr-components-4.0.5.tgz#39d1a1b81382da0f8ab4b567a1c0e1299821ca44" - integrity sha512-gnHET5Lc5guvREzJEBnaxP+1l63bR/09G26kXu9TwBCihqmFulNaYMZ4PktyvecRtLs8MO34XZQBaOeiYIJmWw== +"@eoscostarica/eoscr-components@^4.0.7": + version "4.0.7" + resolved "https://registry.yarnpkg.com/@eoscostarica/eoscr-components/-/eoscr-components-4.0.7.tgz#e3975abf6417be10a1c7a9574053171c23b71768" + integrity sha512-L7jRbrQa6Pi3KOwvyhJOgGFbqpNcv50FNGCZMT22LlFThiXzGMq+JSvxAYqQhzYIDZW0LPy2Oe39P5dl7B4R/Q== dependencies: "@babel/polyfill" "^7.12.1" "@emotion/react" "^11.9.3" @@ -1555,13 +1587,13 @@ "@testing-library/jest-dom" "^5.11.4" "@testing-library/react" "^11.1.0" "@testing-library/user-event" "^12.1.10" - clsx "^1.1.1" + clsx "^2.0.0" crypto-js "^4.1.1" eosjs "^22.1.0" eosjs-api "^7.0.4" + js-file-download "^0.4.12" prop-types "^15.7.2" react-dropzone "^11.4.2" - react-file-download "^0.3.5" react-google-recaptcha "^2.1.0" react-identicons "^1.2.5" react-image-file-resizer "^0.4.8" @@ -2308,14 +2340,14 @@ "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== "@types/istanbul-lib-report@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#412e0725ef41cde73bfa03e0e833eaff41e0fd63" - integrity sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== dependencies: "@types/istanbul-lib-coverage" "*" @@ -2328,16 +2360,16 @@ "@types/istanbul-lib-report" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz#edc8e421991a3b4df875036d381fc0a5a982f549" - integrity sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A== + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== dependencies: "@types/istanbul-lib-report" "*" "@types/jest@*": - version "29.5.5" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.5.tgz#727204e06228fe24373df9bae76b90f3e8236a2a" - integrity sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg== + version "29.5.11" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.11.tgz#0c13aa0da7d0929f078ab080ae5d4ced80fa2f2c" + integrity sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ== dependencies: expect "^29.0.0" pretty-format "^29.0.0" @@ -2357,7 +2389,14 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== -"@types/node@*", "@types/node@>=6": +"@types/node@*": + version "20.10.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.4.tgz#b246fd84d55d5b1b71bf51f964bd514409347198" + integrity sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg== + dependencies: + undici-types "~5.26.4" + +"@types/node@>=6": version "20.7.1" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.1.tgz#06d732ead0bd5ad978ef0ea9cbdeb24dc8717514" integrity sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg== @@ -2404,9 +2443,9 @@ integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== "@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== "@types/stylis@^4.0.2": version "4.2.1" @@ -2421,9 +2460,9 @@ "@types/jest" "*" "@types/yargs-parser@*": - version "21.0.1" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b" - integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== + version "21.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== "@types/yargs@^13.0.0": version "13.0.12" @@ -2433,16 +2472,16 @@ "@types/yargs-parser" "*" "@types/yargs@^15.0.0": - version "15.0.16" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.16.tgz#258009dc52907e8f03041eb64ffdac297ba4b208" - integrity sha512-2FeD5qezW3FvLpZ0JpfuaEWepgNLl9b2gQYiz/ce0NhoB1W/D+VZu98phITXkADYerfr/jb7JcDcVhITsc9bwg== + version "15.0.19" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.19.tgz#328fb89e46109ecbdb70c295d96ff2f46dfd01b9" + integrity sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA== dependencies: "@types/yargs-parser" "*" "@types/yargs@^17.0.8": - version "17.0.25" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.25.tgz#3edd102803c97356fb4c805b2bbaf7dfc9ab6abc" - integrity sha512-gy7iPgwnzNvxgAEi2bXOHWCVOG6f7xsprVJH4MjlAWeBmJ7vh/Y1kwMtUrs64ztf24zVIRCpr3n/z6gm9QIkgg== + version "17.0.32" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" + integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== dependencies: "@types/yargs-parser" "*" @@ -4056,9 +4095,9 @@ ci-info@^2.0.0: integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== ci-info@^3.2.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" - integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -4156,7 +4195,7 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" -clsx@^1.0.4, clsx@^1.1.1: +clsx@^1.0.4: version "1.2.1" resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== @@ -4421,9 +4460,9 @@ core-js-compat@^3.31.0, core-js-compat@^3.32.2, core-js-compat@^3.6.2: browserslist "^4.21.10" core-js-pure@^3.30.2: - version "3.32.2" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.32.2.tgz#b7dbdac528625cf87eb0523b532eb61551b9a6d1" - integrity sha512-Y2rxThOuNywTjnX/PgA5vWM6CZ9QB9sz9oGeCixV8MqXZO70z/5SHzf9EeBrEBK0PN36DnEBBu9O/aGWzKuMZQ== + version "3.34.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.34.0.tgz#981e462500708664c91b827a75b011f04a8134a0" + integrity sha512-pmhivkYXkymswFfbXsANmBAewXx86UBfmagP+w0wkK06kLsLlTK5oQmsURPivzMkIBQiYq2cjamcZExIwlFQIg== core-js@^2.4.0, core-js@^2.6.5: version "2.6.12" @@ -4562,9 +4601,9 @@ crypto-browserify@^3.11.0: randomfill "^1.0.3" crypto-js@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf" - integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw== + version "4.2.0" + resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631" + integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q== css-blank-pseudo@^0.1.4: version "0.1.4" @@ -4815,7 +4854,12 @@ cssstyle@^1.0.0, cssstyle@^1.1.1: dependencies: cssom "0.3.x" -csstype@^3.0.2, csstype@^3.1.2: +csstype@^3.0.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +csstype@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== @@ -8482,6 +8526,11 @@ jest@24.9.0: import-local "^2.0.0" jest-cli "^24.9.0" +js-file-download@^0.4.12: + version "0.4.12" + resolved "https://registry.yarnpkg.com/js-file-download/-/js-file-download-0.4.12.tgz#10c70ef362559a5b23cdbdc3bd6f399c3d91d821" + integrity sha512-rML+NkoD08p5Dllpjo0ffy4jRHeY6Zsapvr/W86N7E0yuzAO6qa5X9+xog6zQNlH102J7IXljNY2FtS6Lj3ucg== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -11312,11 +11361,6 @@ react-feather@^2.0.8: dependencies: prop-types "^15.7.2" -react-file-download@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/react-file-download/-/react-file-download-0.3.5.tgz#7a4e75874528806bfa53ddddd98b4da427d3a897" - integrity sha512-gP867caQCviTw2IUQTMTOFgHn2A71zoLYzHr4KkOI0gkwc1m4ceb/dxNOkG4yB8Hent2+G3f4qbr9Rzb9yZouw== - react-ga@^3.3.0: version "3.3.1" resolved "https://registry.yarnpkg.com/react-ga/-/react-ga-3.3.1.tgz#d8e1f4e05ec55ed6ff944dcb14b99011dfaf9504" @@ -13387,14 +13431,14 @@ typedarray@^0.0.6: integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== typescript@*: - version "5.2.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" - integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== + version "5.3.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" + integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== ua-parser-js@^1.0.35: - version "1.0.36" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.36.tgz#a9ab6b9bd3a8efb90bb0816674b412717b7c428c" - integrity sha512-znuyCIXzl8ciS3+y3fHJI/2OhQIXbXw9MWC/o3qwyR+RGppjZHrM27CGFSKCJXi2Kctiz537iOu2KnXs1lMQhw== + version "1.0.37" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.37.tgz#b5dc7b163a5c1f0c510b08446aed4da92c46373f" + integrity sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ== ual-anchor@^1.0.6: version "1.3.0" @@ -13420,6 +13464,11 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc"