diff --git a/src/libs/fetch.js b/src/libs/fetch.js
index e4e0135d..ab92a719 100644
--- a/src/libs/fetch.js
+++ b/src/libs/fetch.js
@@ -60,19 +60,19 @@ export default class ChainFetch {
}
async getLatestBlock(config = null) {
- const conf = config || this.getSelectedConfig()
- if (conf.chain_name === 'injective') {
- return ChainFetch.fetch('https://tm.injective.network', '/block').then(data => Block.create(commonProcess(data)))
- }
- return this.get(`/blocks/latest?${new Date().getTime()}`, config).then(data => Block.create(data))
+ // const conf = config || this.getSelectedConfig()
+ // if (conf.chain_name === 'injective') {
+ // return ChainFetch.fetch('https://tm.injective.network', '/cosmos/base/tendermint/v1beta1/block').then(data => Block.create(commonProcess(data)))
+ // }
+ return this.get('/cosmos/base/tendermint/v1beta1/blocks/latest', config).then(data => Block.create(data))
}
async getBlockByHeight(height, config = null) {
- const conf = config || this.getSelectedConfig()
- if (conf.chain_name === 'injective') {
- return ChainFetch.fetch('https://tm.injective.network', `/block?height=${height}`).then(data => Block.create(commonProcess(data)))
- }
- return this.get(`/blocks/${height}`, config).then(data => Block.create(data))
+ // const conf = config || this.getSelectedConfig()
+ // if (conf.chain_name === 'injective') {
+ // return ChainFetch.fetch('https://tm.injective.network', `/cosmos/base/tendermint/v1beta1/block?height=${height}`).then(data => Block.create(commonProcess(data)))
+ // }
+ return this.get(`/cosmos/base/tendermint/v1beta1/blocks/${height}`, config).then(data => Block.create(data))
}
async getSlashingSigningInfo(config = null) {
@@ -94,7 +94,7 @@ export default class ChainFetch {
}
async getTxsByRecipient(recipient) {
- return this.get(`/txs?message.recipient=${recipient}`)
+ return this.get(`/cosmos/tx/v1beta1/txs?message.recipient=${recipient}`)
}
async getTxsByHeight(height) {
@@ -102,22 +102,32 @@ export default class ChainFetch {
}
async getValidatorDistribution(address) {
- return this.get(`/distribution/validators/${address}`).then(data => {
- const ret = ValidatorDistribution.create(commonProcess(data))
- ret.versionFixed(this.config.sdk_version)
+ // return this.get(`/distribution/validators/${address}`).then(data => {
+ return Promise.all([
+ this.get(`/cosmos/distribution/v1beta1/validators/${address}/commission`),
+ this.get(`/cosmos/distribution/v1beta1/validators/${address}/outstanding_rewards`),
+ ]).then(data => {
+ const ret = ValidatorDistribution.create({
+ operator_address: address,
+ self_bond_rewards: data[1].rewards.rewards,
+ val_commission: data[0].commission.commission,
+ })
return ret
})
}
async getStakingDelegatorDelegation(delegatorAddr, validatorAddr) {
- return this.get(`/staking/delegators/${delegatorAddr}/delegations/${validatorAddr}`).then(data => StakingDelegation.create(commonProcess(data)))
+ return this.get(`/cosmos/staking/v1beta1/validators/${validatorAddr}/delegations/${delegatorAddr}`).then(data => StakingDelegation.create(commonProcess(data).delegation_response))
}
async getBankTotal(denom) {
if (compareVersions(this.config.sdk_version, '0.40') < 0) {
return this.get(`/supply/total/${denom}`).then(data => ({ amount: commonProcess(data), denom }))
}
- return this.get(`/bank/total/${denom}`).then(data => commonProcess(data))
+ if (compareVersions(this.config.sdk_version, '0.46') < 0) {
+ return this.get(`/bank/total/${denom}`).then(data => commonProcess(data))
+ }
+ return this.get(`/cosmos/bank/v1beta1/supply/${denom}`).then(data => commonProcess(data))
}
async getBankTotals() {
@@ -128,7 +138,7 @@ export default class ChainFetch {
}
async getStakingPool() {
- return this.get('/staking/pool').then(data => new StakingPool().init(commonProcess(data)))
+ return this.get('/cosmos/staking/v1beta1/pool').then(data => new StakingPool().init(commonProcess(data.pool)))
}
async getMintingInflation() {
@@ -139,29 +149,29 @@ export default class ChainFetch {
return this.get('/echelon/inflation/v1/inflation_rate').then(data => Number(data.inflation_rate / 100 || 0))
}
if (this.isModuleLoaded('minting')) {
- return this.get('/minting/inflation').then(data => Number(commonProcess(data)))
+ return this.get('/cosmos/mint/v1beta1/inflation').then(data => Number(commonProcess(data.inflation)))
}
return 0
}
async getStakingParameters() {
- return this.get('/staking/parameters').then(data => {
+ return this.get('/cosmos/staking/v1beta1/params').then(data => {
this.getSelectedConfig()
- return StakingParameters.create(commonProcess(data), this.config.chain_name)
+ return StakingParameters.create(commonProcess(data.params), this.config.chain_name)
})
}
async getValidatorList(config = null) {
- return this.get('/staking/validators', config).then(data => {
- const vals = commonProcess(data).map(i => new Validator().init(i))
+ return this.get('/cosmos/staking/v1beta1/validators?pagination.limit=200&status=BOND_STATUS_BONDED', config).then(data => {
+ const vals = commonProcess(data.validators).map(i => new Validator().init(i))
localStorage.setItem(`validators-${this.config.chain_name}`, JSON.stringify(vals))
return vals
})
}
async getValidatorUnbondedList() {
- return this.get('/cosmos/staking/v1beta1/validators?status=BOND_STATUS_UNBONDED').then(data => {
- const result = commonProcess(data)
+ return this.get('/cosmos/staking/v1beta1/validators?pagination.limit&status=BOND_STATUS_UNBONDED').then(data => {
+ const result = commonProcess(data.validators)
const vals = result.validators ? result.validators : result
return vals.map(i => new Validator().init(i))
})
@@ -180,12 +190,12 @@ export default class ChainFetch {
}
async getStakingValidator(address) {
- return this.get(`/staking/validators/${address}`).then(data => new Validator().init(commonProcess(data)))
+ return this.get(`/cosmos/staking/v1beta1/validators/${address}`).then(data => new Validator().init(commonProcess(data).validator))
}
async getSlashingParameters() {
if (this.isModuleLoaded('slashing')) {
- return this.get('/slashing/parameters').then(data => commonProcess(data))
+ return this.get('/cosmos/slashing/v1beta1/params').then(data => commonProcess(data.params))
}
return null
}
@@ -228,33 +238,33 @@ export default class ChainFetch {
return result
}
if (this.isModuleLoaded('minting')) {
- return this.get('/minting/parameters').then(data => commonProcess(data))
+ return this.get('/cosmos/mint/v1beta1/params').then(data => commonProcess(data.params))
}
return null
}
async getDistributionParameters() {
- return this.get('/distribution/parameters').then(data => commonProcess(data))
+ return this.get('/cosmos/distribution/v1beta1/params').then(data => commonProcess(data.params))
}
async getGovernanceParameterDeposit() {
- return this.get('/gov/parameters/deposit').then(data => commonProcess(data))
+ return this.get('/cosmos/gov/v1beta1/params/deposit').then(data => commonProcess(data.deposit_params))
}
async getGovernanceParameterTallying() {
- return this.get('/gov/parameters/tallying').then(data => commonProcess(data))
+ return this.get('/cosmos/gov/v1beta1/params/tallying').then(data => commonProcess(data.tally_params))
}
async getGovernanceParameterVoting() {
- return this.get('/gov/parameters/voting').then(data => commonProcess(data))
+ return this.get('/cosmos/gov/v1beta1/params/voting').then(data => commonProcess(data.voting_params))
}
async getGovernanceTally(pid, total, conf) {
- return this.get(`/gov/proposals/${pid}/tally`, conf).then(data => new ProposalTally().init(commonProcess(data), total))
+ return this.get(`/cosmos/gov/v1beta1/proposals/${pid}/tally`, conf).then(data => new ProposalTally().init(commonProcess(data), total))
}
getGovernance(pid) {
- return this.get(`/gov/proposals/${pid}`).then(data => {
+ return this.get(`/cosmos/gov/v1beta1/proposals/${pid}`).then(data => {
const p = new Proposal().init(commonProcess(data), 0)
p.versionFixed(this.config.sdk_version)
return p
@@ -275,7 +285,7 @@ export default class ChainFetch {
return Array.isArray(result) ? result.reverse().map(d => new Deposit().init(d)) : result
})
}
- return this.get(`/gov/proposals/${pid}/deposits`).then(data => {
+ return this.get(`/cosmos/gov/v1beta1/proposals/${pid}/deposits`).then(data => {
const result = commonProcess(data)
return Array.isArray(result) ? result.reverse().map(d => new Deposit().init(d)) : result
})
@@ -283,7 +293,7 @@ export default class ChainFetch {
async getGovernanceVotes(pid, next = '', limit = 50) {
if (compareVersions(this.config.sdk_version, '0.40') < 0) {
- return this.get(`/gov/proposals/${pid}/votes`).then(data => ({
+ return this.get(`/cosmos/gov/v1beta1/proposals/${pid}/votes`).then(data => ({
votes: commonProcess(data).map(d => new Votes().init(d)),
pagination: {},
}))
@@ -361,14 +371,14 @@ export default class ChainFetch {
}
async getAuthAccount(address, config = null) {
- return this.get('/auth/accounts/'.concat(address), config).then(data => {
+ return this.get('/cosmos/auth/v1beta1/accounts/'.concat(address), config).then(data => {
const result = commonProcess(data)
return result.value ? result : { value: result }
})
}
async getBankAccountBalance(address) {
- return this.get('/bank/balances/'.concat(address)).then(data => commonProcess(data))
+ return this.get('/cosmos/bank/v1beta1/balances/'.concat(address)).then(data => commonProcess(data).balances)
}
async getStakingReward(address, config = null) {
@@ -379,7 +389,7 @@ export default class ChainFetch {
}
async getStakingValidators(address) {
- return this.get(`/cosmos/distribution/v1beta1/delegators/${address}/validators`).then(data => commonProcess(data))
+ return this.get(`/cosmos/distribution/v1beta1/delegators/${address}/validators?pagination.size=200`).then(data => commonProcess(data.validators))
}
async getStakingDelegations(address, config = null) {
@@ -413,7 +423,7 @@ export default class ChainFetch {
}
async getBankBalances(address, config = null) {
- return this.get('/bank/balances/'.concat(address), config).then(data => commonProcess(data))
+ return this.get('/cosmos/bank/v1beta1/balances/'.concat(address), config).then(data => commonProcess(data))
}
async getCommunityPool(config = null) {
@@ -458,7 +468,7 @@ export default class ChainFetch {
}
static async getBankBalance(baseurl, address) {
- return ChainFetch.fetch(baseurl, '/bank/balances/'.concat(address)).then(data => commonProcess(data))
+ return ChainFetch.fetch(baseurl, '/cosmos/bank/v1beta1/balances/'.concat(address)).then(data => commonProcess(data))
}
async getGravityPools() {
diff --git a/src/libs/utils.js b/src/libs/utils.js
index bcf271c8..fdd57a14 100644
--- a/src/libs/utils.js
+++ b/src/libs/utils.js
@@ -1,5 +1,5 @@
import {
- Bech32, fromBase64, fromBech32, fromHex, toBech32, toHex,
+ Bech32, fromBase64, fromBech32, fromHex, toBase64, toBech32, toHex,
} from '@cosmjs/encoding'
import { sha256, stringToPath } from '@cosmjs/crypto'
// ledger
@@ -193,6 +193,15 @@ export function getUserCurrencySign() {
export function consensusPubkeyToHexAddress(consensusPubkey) {
let raw = null
if (typeof consensusPubkey === 'object') {
+ if (consensusPubkey['@type'] === '/cosmos.crypto.ed25519.PubKey') {
+ raw = toBase64(fromHex(toHex(sha256(fromBase64(consensusPubkey.key))).slice(0, 40)))
+ return raw
+ }
+ // /cosmos.crypto.secp256k1.PubKey
+ if (consensusPubkey['@type'] === '/cosmos.crypto.secp256k1.PubKey') {
+ raw = toBase64(fromHex(new RIPEMD160().update(Buffer.from(sha256(fromBase64(consensusPubkey.key)))).digest('hex')))
+ return raw
+ }
if (consensusPubkey.type === 'tendermint/PubKeySecp256k1') {
raw = new RIPEMD160().update(Buffer.from(sha256(fromBase64(consensusPubkey.value)))).digest('hex').toUpperCase()
return raw
diff --git a/src/router/index.js b/src/router/index.js
index 7dcbc14f..04e70054 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -403,18 +403,13 @@ const router = new VueRouter({
})
router.beforeEach((to, from, next) => {
- const c = String(to.params.chain).toLowerCase()
-
const configs = JSON.parse(localStorage.getItem('chains'))
- const conf = Object.values(configs).find(i => i.chain_name === c || i.alias === c)
- if (!configs || conf) {
+ if (configs && to.params.chain) {
+ const c = String(to.params.chain).toLowerCase()
+ const conf = Object.values(configs).find(i => i.chain_name === c || i.alias === c)
if (conf) {
store.commit('select', { chain_name: conf.chain_name })
- }
- next()
- } else if (c) {
- if (c === 'index.php') {
- next({ name: '/' })
+ next()
} else {
next({ name: 'chain-404' })
}
diff --git a/src/views/Parameters.vue b/src/views/Parameters.vue
index 8de24752..3b6c8a75 100644
--- a/src/views/Parameters.vue
+++ b/src/views/Parameters.vue
@@ -120,10 +120,6 @@ export default {
this.latestTime = toDay(res.block.header.time, 'long')
})
- this.$http.getMarketChart().then(res => {
- this.marketData = res
- })
-
this.$http.getStakingParameters().then(res => {
this.staking = this.normalize(res, 'Staking Parameters')
Promise.all([this.$http.getStakingPool(), this.$http.getBankTotal(res.bond_denom)])
diff --git a/src/views/StakingValidator.vue b/src/views/StakingValidator.vue
index 34689815..5053f957 100644
--- a/src/views/StakingValidator.vue
+++ b/src/views/StakingValidator.vue
@@ -259,7 +259,6 @@
:total-rows="transactions.total_count"
:per-page="transactions.limit"
:value="transactions.page_number"
- align="center"
class="mt-1"
@change="pageload"
/>
diff --git a/src/views/StateSync.vue b/src/views/StateSync.vue
index 45040630..030c1d77 100644
--- a/src/views/StateSync.vue
+++ b/src/views/StateSync.vue
@@ -11,7 +11,7 @@
Starting New Node From State Sync
- 1. Install Binary (Version: {{ version }})
+ 1. Install Binary (Version: {{ app_version }})
We need to install the binary first and make sure that the version is the one currently in use on mainnet.
2. Enable State Sync
@@ -69,7 +69,8 @@ export default {
data() {
const { rpc, snapshot_provider } = this.$store.state.chains.selected
let servers = ''
- if (rpc && Array.isArray(rpc)) {
+ console.log('rpc', rpc)
+ if (rpc && Array.isArray(rpc) && rpc.length > 0) {
let serv = rpc
if (serv.length === 1) {
serv = serv.concat(serv)
@@ -88,7 +89,7 @@ export default {
? `# Comma separated list of nodes to keep persistent connections to \npersistent_peers = "${peers}" `
: 'OMG! There is NO available providers, but you can try it.'
return {
- version: '',
+ app_version: '',
snapshot_provider,
servers,
providers,
@@ -125,9 +126,9 @@ trust_period = "168h" # 2/3 of unbonding time`
})
}
this.$http.getNodeInfo().then(res => {
- this.version = res.application_version.version
+ this.app_version = res.application_version.version
this.daemon = res.application_version.app_name
- })
+ }).catch()
})
},
methods: {
diff --git a/src/views/Uptime.vue b/src/views/Uptime.vue
index 679e01fd..3fcc6540 100644
--- a/src/views/Uptime.vue
+++ b/src/views/Uptime.vue
@@ -108,7 +108,7 @@ import {
import {
consensusPubkeyToHexAddress, getCachedValidators, timeIn, toDay,
} from '@/libs/utils'
-import { Bech32, toHex } from '@cosmjs/encoding'
+import { fromBech32, toBase64 } from '@cosmjs/encoding'
export default {
components: {
@@ -171,7 +171,7 @@ export default {
if (res.info) {
res.info.forEach(x => {
if (x.address) {
- const hex = toHex(Bech32.decode(x.address).data).toUpperCase()
+ const hex = toBase64(fromBech32(x.address).data)
this.missing[hex] = x
}
})
diff --git a/src/views/components/OperationModal/index.vue b/src/views/components/OperationModal/index.vue
index 136d926b..6392c059 100644
--- a/src/views/components/OperationModal/index.vue
+++ b/src/views/components/OperationModal/index.vue
@@ -324,9 +324,12 @@ export default {
if (this.address) {
return this.address
}
- const chain = this.$store.state.chains.selected.chain_name
- const selectedAddress = this.accounts.address.find(x => x.chain === chain)
- return selectedAddress?.addr
+ if (this.accounts) {
+ const chain = this.$store.state.chains.selected.chain_name
+ const selectedAddress = this.accounts?.address.find(x => x.chain === chain)
+ return selectedAddress?.addr
+ }
+ return null
},
selectedChain() {
let config = null