Compare commits

...
178 Commits
Author SHA1 Message Date
ping 622e2ba449 Merge pull request #421 from uptSmart/testnet
add the testnet chain of uptick
2023-06-06 08:45:49 +08:00
uptSmart d075f04b8a add the testnet chain of origin 2023-06-05 07:57:26 +00:00
liangping 82eeaff601 add missing blocks and filter by parameters 2022-03-18 14:58:56 +08:00
liangping 1300ec3c3f color asset bubble 2022-03-11 19:42:34 +08:00
liangping 65039e46bf change name to lum-network 2022-03-11 18:09:53 +08:00
liangping 80bd18d8ed Merge branch 'master' into testnet 2022-03-11 10:05:11 +08:00
liangping d0ca90efca change name to chain_id 2022-03-10 19:57:01 +08:00
liangping 2253023459 fix typo 2022-03-06 15:55:18 +08:00
liangping 1e07bf6d4b improve ux 2022-03-06 09:20:25 +08:00
liangping 944b02dce1 change axis 2022-03-06 07:41:15 +08:00
liangping 976ebef410 use scatter chart 2022-03-05 23:48:39 +08:00
liangping 24d1f92bae improve ux 2022-03-05 13:34:50 +08:00
liangping e77a890798 improve navigation and rewards 2022-03-05 10:58:09 +08:00
liangping 9340191314 update dig price 2022-03-05 09:18:15 +08:00
liangping 149b42fa39 add new provider 2022-03-04 18:16:33 +08:00
liangping e6459023e1 fix format number issue 2022-03-04 18:16:23 +08:00
liangping 0df70f5701 fix issues 2022-03-04 17:56:41 +08:00
liangping 86b4ee0eaa add providers 2022-03-04 17:56:28 +08:00
liangping 4bb76ada1d add official endpoint 2022-03-04 11:53:01 +08:00
liangping 3264300a2b add evmos 2022-03-03 11:29:16 +08:00
liangping 88a6215a94 fixed display issue of supply 2022-02-17 11:16:24 +08:00
liangping b4d82c225b Change logo of RIZON 2022-02-17 11:04:06 +08:00
liangping c0b15ccc14 add umee 2022-02-17 10:14:56 +08:00
liangping f004b4af4a change url of logo 2022-02-17 10:14:48 +08:00
liangping cb1159ddf3 improve display of currency 2022-02-16 19:06:20 +08:00
liangping 6bd333a41c improve display of accounts 2022-02-16 13:57:03 +08:00
liangping b2d7640240 Merge branch 'master' of https://github.com/ping-pub/explorer 2022-02-16 11:07:46 +08:00
liangping 24f39e3bce imporove disploy of token amount 2022-02-16 11:07:32 +08:00
ping 3832b5bf1a Merge pull request #71 from alpha-omega-labs/patch-1
Update genesisl1.json
2022-02-14 21:08:52 +08:00
alpha-omega-labs 0b6e1ebd1d Update genesisl1.json 2022-02-14 08:06:52 -05:00
liangping 3f0dcdf276 Fixed issue: unable to delegate to unbond validators 2022-02-11 17:58:53 +08:00
liangping 10ad6fef38 integrate Ping Key Manager 2022-02-11 17:21:00 +08:00
liangping 1a348f6d3e Fix endpoint issues 2022-02-06 10:17:18 +08:00
liangping 85ca2e3989 add backup endpoint for chihuahua 2022-02-06 08:39:50 +08:00
liangping 32b9b9aa64 fixed issues on trading page 2022-02-05 18:45:24 +08:00
liangping 883ca9b699 use official endpoint 2022-02-04 19:20:54 +08:00
liangping ed76d659ff add gravity bridge 2022-01-31 17:14:21 +08:00
liangping 837e2e1f44 add rizon 2022-01-31 12:36:12 +08:00
liangping 529bf57274 fix issue 2022-01-29 12:41:38 +08:00
liangping b4b2833298 fix typo 2022-01-29 12:27:40 +08:00
liangping b07b11e0eb fix shentu issue 2022-01-29 12:26:04 +08:00
liangping 42814c6377 update isntallation 2022-01-29 11:37:39 +08:00
liangping 5d0ee95d7b add guild of installation 2022-01-29 11:27:14 +08:00
liangping 7661d705b6 Remove tauri 2022-01-29 10:55:47 +08:00
liangping 6468e42d44 Update version of dependency 2022-01-29 09:20:50 +08:00
liangping f8e4d342d6 update version of dependency 2022-01-29 09:20:07 +08:00
liangping 5c37b7b709 Merge branch 'master' of https://github.com/ping-pub/explorer 2022-01-29 09:05:29 +08:00
liangping eec49e8391 fixed gov issue of osmos 2022-01-29 09:05:09 +08:00
ping b67d6ad7dd Merge pull request #66 from ping-pub/dependabot/npm_and_yarn/node-fetch-3.1.1
Bump node-fetch from 2.6.1 to 3.1.1
2022-01-25 09:31:25 +08:00
dependabot[bot] 5a4af7c659 Bump node-fetch from 2.6.1 to 3.1.1
Bumps [node-fetch](https://github.com/node-fetch/node-fetch) from 2.6.1 to 3.1.1.
- [Release notes](https://github.com/node-fetch/node-fetch/releases)
- [Changelog](https://github.com/node-fetch/node-fetch/blob/main/docs/CHANGELOG.md)
- [Commits](https://github.com/node-fetch/node-fetch/compare/v2.6.1...v3.1.1)

---
updated-dependencies:
- dependency-name: node-fetch
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-22 19:00:19 +00:00
liangping 13b1dbe9fd add stargaze LCD 2022-01-20 09:39:28 +08:00
liangping 661dd1ff5e update kava version 2022-01-20 08:39:40 +08:00
liangping f97acc8e03 Merge branch 'master' of https://github.com/ping-pub/explorer 2022-01-19 12:52:26 +08:00
liangping 4e24af68bc change api for osmosis 2022-01-19 12:52:18 +08:00
ping ac375f40c8 Merge pull request #64 from MasterPi-2124/patch-3
Change Dig Logo
2022-01-18 08:47:26 +08:00
liangping 2a73ec8f8a update coin_type of persistence 2022-01-17 19:57:26 +08:00
Master Pi ea6d5b25fc Change Dig Logo
We now use the new logo of Dig!
2022-01-17 18:37:31 +07:00
liangping e21a06a0a7 update decimals for CHEQ 2022-01-17 08:16:09 +08:00
liangping aa1d0161c3 fix typo 2022-01-17 08:15:04 +08:00
liangping 6dea16c207 fix decimals 2022-01-14 10:35:15 +08:00
liangping f928b8fa73 fix typo 2022-01-14 10:02:23 +08:00
liangping 18e4cc609c Update coin type 2022-01-14 09:51:04 +08:00
liangping 96931d905b add NOTE 2022-01-14 09:37:10 +08:00
liangping 984dd8ae3a Use chainid, instead of 'cosmoshub', 2022-01-14 08:55:24 +08:00
liangping 3cf3caab79 update decimals for provenance 2022-01-14 08:53:56 +08:00
liangping 7aa7339639 add eeur 2022-01-13 21:00:08 +08:00
liangping ace266a25b improve IBC transfer 2022-01-13 19:52:23 +08:00
liangping 81531e36e2 update readme 2022-01-13 15:32:06 +08:00
liangping 1574ec063f Improve IBC transfer 2022-01-13 09:55:55 +08:00
liangping bca324367e update version 2022-01-13 09:14:54 +08:00
liangping da125a2b67 update version of sdk 2022-01-13 09:02:25 +08:00
liangping f7b72e57fd Fix big number issue 2022-01-13 08:45:38 +08:00
liangping a95dcff4bc add custom coin type 2022-01-12 21:08:30 +08:00
liangping 41a9eb20a3 add colors on coin type 2022-01-12 20:40:51 +08:00
liangping a974b9929b Use latest IBC url 2022-01-12 20:40:07 +08:00
liangping 871db0d371 Update min tx fees 2022-01-12 19:19:22 +08:00
liangping 4f398739fe read tx fee from config 2022-01-12 18:58:32 +08:00
liangping feea9009cb add multi api supports 2022-01-11 21:08:25 +08:00
liangping 044064dcc6 add multi-chain supports 2022-01-11 18:27:53 +08:00
liangping b129a3a6a5 edit charts 2022-01-11 18:27:29 +08:00
liangping 76aabaf3d6 update price chart 2022-01-11 13:17:07 +08:00
liangping 62af7ccc27 Update IBC denom 2022-01-11 12:12:07 +08:00
liangping 15ce00fda5 Fix ibc denom trace issue 2022-01-10 20:46:53 +08:00
liangping 221574c923 Update IBC denom. 2022-01-10 20:14:00 +08:00
liangping e70a05fa74 change config 2022-01-10 19:08:11 +08:00
liangping 7cf0259eba update Nav 2022-01-10 10:50:35 +08:00
liangping f9f4de071f clean code 2022-01-10 09:40:10 +08:00
liangping b7de3bcb34 fixed display issue of governance 2022-01-10 09:35:55 +08:00
liangping 9917b2c534 add donation address 2022-01-07 09:39:57 +08:00
liangping bab7192206 remove unused config 2022-01-07 09:39:32 +08:00
liangping 037b4e18a2 add coin type 2022-01-06 11:12:26 +08:00
liangping 445ce5c805 add coin_type 2022-01-06 11:10:46 +08:00
ping 9c51ad6be3 Merge pull request #63 from iramiller/provenance-info
Adding Provenance Blockchain registrations
2022-01-06 10:18:26 +08:00
liangping 8a22b0bd3e Merge branch 'master' of https://github.com/ping-pub/explorer 2022-01-06 10:11:53 +08:00
liangping eb0c5cc9c4 Add Notice 2022-01-06 10:11:44 +08:00
liangping f5fde99f63 using uppercase for chain name 2022-01-06 08:58:55 +08:00
Ira Miller 5c259870b9 Adding Provenance Blockchain registrations 2022-01-05 09:52:35 -07:00
ping f805dfdea6 Merge pull request #61 from kingnodes/master
Update chihuahua.json
2021-12-31 10:08:16 +08:00
nullmames 29af1c8cce Update chihuahua.json
Update logo location
2021-12-30 21:14:58 +11:00
ping ec6db195ff Merge pull request #59 from joeabbey/adding-cheqd
Adding cheqd
2021-12-26 09:46:53 +08:00
Joe Abbey ac5b4521bb Adding cheqd 2021-12-25 16:34:52 -05:00
ping 611a9a3913 Merge pull request #31 from ping-pub/dependabot/npm_and_yarn/axios-0.21.2
Bump axios from 0.21.1 to 0.21.2
2021-12-24 10:15:11 +08:00
ping e29bf5a678 Merge pull request #32 from ping-pub/dependabot/npm_and_yarn/prismjs-1.25.0
Bump prismjs from 1.24.0 to 1.25.0
2021-12-24 10:14:58 +08:00
ping 70130dbfe3 Merge pull request #58 from dualsystems/master
[comdex] fix logo size
2021-12-24 10:14:32 +08:00
SlavA 30eb43ce74 [comdex] fix logo size 2021-12-23 14:20:56 +02:00
ping c20be0acb2 Merge pull request #57 from notional-labs/master
Change dig API
2021-12-23 17:28:55 +08:00
Master Pi 74ae5975f5 Change dig API 2021-12-23 14:06:48 +07:00
ping 678417898c Merge pull request #56 from kingnodes/master
delete odin chain
2021-12-23 10:50:19 +08:00
nullmames 4206de4541 delete odin chain
Odin has halted. Need to resolve issues and re-submit at a later date.
2021-12-23 13:46:57 +11:00
liangping 13c78855a7 update 2021-12-23 10:40:53 +08:00
ping 7aa3992eb0 Merge pull request #55 from dualsystems/master
[comdex] add chain
2021-12-23 09:42:43 +08:00
ping 4b2602a768 Merge pull request #53 from RaulBernal/patch-2
Adding BitCanna chain
2021-12-23 09:41:51 +08:00
ping 610da743bd Merge pull request #51 from joeabbey/update-chihuahua-and-lum-sdks
Updating Chihuahua and LUM SDK versions
2021-12-23 09:39:40 +08:00
ping 09aedf5011 Merge pull request #54 from joeabbey/fast-tpying
Minor typos
2021-12-23 09:38:41 +08:00
SlavA eb749dc7df Create comdex.json 2021-12-22 21:11:42 +02:00
Joe Abbey 1b7426f627 Minor typos 2021-12-22 10:21:58 -05:00
Raul Bernal 31c7289d01 Adding BitCanna chain 2021-12-22 12:51:16 +01:00
Joe Abbey 739970114e Updating Chihuahua and LUM SDK versions 2021-12-22 06:25:32 -05:00
liangping 7d9618653c Update gov module 2021-12-22 16:55:58 +08:00
ping 4ea72891e5 Merge pull request #49 from joeabbey/patch-1
Update Uptime.vue
2021-12-22 16:20:32 +08:00
liangping cdeafd9f0a Merge branch 'master' of https://github.com/ping-pub/explorer 2021-12-22 16:17:16 +08:00
liangping 8916cc094d add helping 2021-12-22 16:17:08 +08:00
liangping 8d5cdbf0f4 add tx history and delegations 2021-12-22 15:43:07 +08:00
liangping af9f1cac45 refactor 2021-12-22 14:21:23 +08:00
Joe Abbey c06364ebb3 Update Uptime.vue
English is dumb.
2021-12-21 21:57:41 -05:00
ping 193ba1987c Update README.md 2021-12-22 09:38:48 +08:00
ping cb74f9ab26 Merge pull request #48 from joeabbey/add-bostrom
Adding bostrom
2021-12-22 08:56:09 +08:00
ping 1687d6606a Update bostrom.json 2021-12-22 08:55:45 +08:00
Joe Abbey e96bba810b 0.44.3 is the actual SDK version, promise 2021-12-21 07:20:38 -05:00
Joe Abbey bb804b9939 Updating SDK 2021-12-21 07:17:30 -05:00
Joe Abbey 9bae5ec302 Adding bostrom 2021-12-21 07:15:02 -05:00
ping f8167e546a Merge pull request #47 from joeabbey/add-lum-network
Adding LUM network
2021-12-21 09:39:04 +08:00
liangping 53bc4dbdf9 change deploy policy 2021-12-21 09:36:31 +08:00
liangping 08499947de Merge branch 'master' of https://github.com/ping-pub/explorer 2021-12-21 09:24:44 +08:00
liangping b7f7bed42e update version for microtick 2021-12-21 09:24:36 +08:00
Joe Abbey 84e59d0349 Adding LUM network 2021-12-20 12:49:19 -05:00
ping 594db214b2 Merge pull request #46 from kingnodes/master
Update dig.json
2021-12-20 09:57:27 +08:00
nullmames e8d55984eb Update dig.json 2021-12-20 12:52:38 +11:00
ping ba3e53e971 Merge pull request #45 from kingnodes/master
Add dig chain (#1)
2021-12-20 09:37:16 +08:00
nullmames 04619780c4 Add dig chain (#1)
* upload dig logo

* Create dig.json
2021-12-20 12:32:54 +11:00
liangping b4f93790fa Fixed issues 2021-12-16 10:40:44 +08:00
liangping 173a4d8bd2 Merge branch 'master' of https://github.com/ping-pub/explorer 2021-12-15 16:51:06 +08:00
liangping df914d1f25 change api 2021-12-15 16:50:49 +08:00
ping 6f5f0a0064 Merge pull request #43 from joeabbey/add-chihuahua
Adding chihuahua
2021-12-15 16:48:34 +08:00
Joe Abbey cf64147d05 Setting API to project controlled domain 2021-12-14 11:25:26 -05:00
Joe Abbey e2f7f38d47 Using my API endpoint 2021-12-14 10:45:07 -05:00
Joe Abbey b1e02b81b9 Adding chihuahua 2021-12-14 09:33:49 -05:00
liangping 38bbe7be5f improve UX for proposal details 2021-12-14 20:23:10 +08:00
liangping 04e152c1fb add upgrade count down 2021-12-14 15:18:41 +08:00
dependabot[bot] efc7ed5429 Bump prismjs from 1.24.0 to 1.25.0
Bumps [prismjs](https://github.com/PrismJS/prism) from 1.24.0 to 1.25.0.
- [Release notes](https://github.com/PrismJS/prism/releases)
- [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PrismJS/prism/compare/v1.24.0...v1.25.0)

---
updated-dependencies:
- dependency-name: prismjs
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-14 05:49:08 +00:00
liangping 06fff024d7 Fixed uptime issue for band, odin 2021-12-14 13:47:30 +08:00
liangping 878e92ec92 clean code 2021-12-14 12:30:55 +08:00
liangping 9c26bcd220 update my delegations 2021-12-14 12:01:37 +08:00
liangping 42d5a75ed6 update odin 2021-12-14 09:34:12 +08:00
ping 513fba1115 Merge pull request #40 from kingnodes/master
Create odin.json
2021-12-14 09:15:47 +08:00
liangping 0093928c16 optimize wallet menu 2021-12-13 17:15:36 +08:00
liangping 4c8694a43e add microtick 2021-12-13 17:15:09 +08:00
liangping 255601932c add Readme 2021-12-13 14:25:24 +08:00
nullmames d2d3ecaf27 Create odin.json 2021-12-12 14:32:57 +11:00
liangping e9db729843 remove debugs 2021-12-11 11:32:55 +08:00
liangping 1176a727e9 debug swap message 2021-12-11 11:31:24 +08:00
liangping 87a24f8d21 Fixed timeout stamp 2021-12-06 11:47:36 +08:00
liangping c651b7971c enable deposit 2021-12-06 10:01:07 +08:00
liangping 97083b40df improve UX 2021-12-05 19:57:12 +08:00
liangping 8cf7375ce1 Fix keplr wallet issue 2021-12-05 18:57:20 +08:00
liangping dcd26824f9 improve UX 2021-12-05 12:20:29 +08:00
liangping 543118ba92 Update for IBC transfer. 2021-12-05 10:30:00 +08:00
liangping 838971bbbe add genesis L1 2021-12-05 10:07:39 +08:00
liangping 00c0d1147c format 2021-12-05 10:07:23 +08:00
liangping 872e997889 fix typo 2021-12-05 09:40:22 +08:00
liangping 4b7c72cac0 update readme 2021-12-04 16:56:22 +08:00
dependabot[bot] a43a842637 Bump axios from 0.21.1 to 0.21.2
Bumps [axios](https://github.com/axios/axios) from 0.21.1 to 0.21.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.21.1...v0.21.2)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-04 08:53:39 +00:00
liangping 1780c2a360 update readme 2021-12-04 16:52:04 +08:00
liangping 3c78a1e01b Merge branch 'trade' 2021-12-04 15:53:59 +08:00
liangping 82bdb42a61 update logo url 2021-11-30 09:39:54 +08:00
liangping d62b2368c0 add arkh chain 2021-11-30 09:31:49 +08:00
liangping bcf4a16996 fixed issue on unbonding 2021-11-29 22:48:49 +08:00
liangping 6bcdd61e56 add juno & evmos testnet 2021-11-26 08:43:42 +08:00
140 changed files with 3304 additions and 7180 deletions
+3 -3
View File
@@ -1,11 +1,11 @@
name: Ping Deploy
name: Deploy to ping.pub
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
# pull_request:
# branches: [ master ]
jobs:
deploy:
+45
View File
@@ -0,0 +1,45 @@
# test directories
__tests__
test
tests
powered-test
# asset directories
docs
doc
website
images
assets
# examples
example
examples
# code coverage directories
coverage
.nyc_output
# build scripts
Makefile
Gulpfile.js
Gruntfile.js
# configs
appveyor.yml
circle.yml
codeship-services.yml
codeship-steps.yml
wercker.yml
.tern-project
.gitattributes
.editorconfig
.*ignore
.eslintrc
.jshintrc
.flowconfig
.documentup.json
.yarn-metadata.json
.travis.yml
# misc
*.md
+80 -59
View File
@@ -1,71 +1,92 @@
# Ping Explorer
<div align="center">
Look is a light explorer for Cosmos-based Blockchains. https://ping.pub .
![Ping Wallet](./public/logo.svg)
## What is the difference between Look and other explorers?
<h1>Ping Explorer</h1>
Look is designed to explore blockchain data as real as possible, therefore there is no cache, no analysis. Look does not cache/save blockchain data on its server. Look only fetch data from Cosmos full node via LCD/RPC endpoints. We call it "Light Explorer".
**Ping explorer is not only an explorer but also a wallet and more ... 🛠**
## Do you want Look to explore your blockchain?
[![version](https://img.shields.io/github/tag/ping-pub/explorer.svg)](https://github.com/ping-pub/explorer/releases/latest)
[![GitHub](https://img.shields.io/github/license/ping-pub/explorer.svg)](https://github.com/ping-pub/explorer/blob/master/LICENSE)
[![Ping Deploy](https://github.com/ping-pub/explorer/actions/workflows/mainnet-deploy.yaml/badge.svg)](https://github.com/ping-pub/explorer/actions/workflows/mainnet-deploy.yaml)
[![Twitter URL](https://img.shields.io/twitter/url/https/twitter.com/bukotsunikki.svg?style=social&label=Follow%20%40ping_pub)](https://twitter.com/ping_pub)
[![https://discord.gg/CmjYVSr6GW](https://img.shields.io/badge/discord-join-7289DA.svg?logo=discord&longCache=true&style=flat)](https://discord.gg/CmjYVSr6GW)
</div>
Ping Explorer is a light explorer for Cosmos-based Blockchains. https://ping.pub .
## What is the difference between Ping explorer and other explorers?
Ping Explorer is designed to explore blockchain data as real as possible, therefore there is no cache, no pre-processing. Ping Explorer does not cache/save blockchain data on its server. Ping Explorer only fetch data from Cosmos full node via LCD/RPC endpoints. We call it "Light Explorer".
## Do you want to list your blockchain on ping.pub?
Pull your request [here](./src/chains), We will add your chains as soon as possible. It is **FREE** (You must have 10+ independent validators on your chain).
## Why Ping explorer use official/trusted third party public LCD/rpc server?
We have two considerations: 1, Trust, In decentralize system, everything controlled by one single team/organization could be risks. So we decided to co-build with the community. 2. We will list hundreds cosmos-based blockchains in the future, it's impossible for our team to run validators or fullnodes for all of those chains.
# Installation:
1. Running with yarn
```
yarn && yarn serve
```
2. Building for web servers, like nginx, apache
```
yarn && yarn build
cp -r ./dist/* <ROOT_OF_WEB_SERVER>
```
# Enable LCD for Ping.pub
1. Set `enable = true` in `./config/app.toml`
```
###############################################################################
### API Configuration ###
###############################################################################
[api]
# Enable defines if the API server should be enabled.
enable = true
# Swagger defines if swagger documentation should automatically be registered.
swagger = false
# Address defines the API server to listen on.
address = "tcp://0.0.0.0:1317"
# MaxOpenConnections defines the number of maximum open connections.
max-open-connections = 1000
```
2. add proxy server and enable CORS. NOTE: You must enable https as well.
```
server {
server_name juno.api.ping.pub;
listen 443;
location / {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Max-Age 3600;
add_header Access-Control-Expose-Headers Content-Length;
proxy_pass http://<HOST>:1317;
}
}
```
3. config your blockchain in [./src/chains]()
If you want Look to explore your blockchain, pull a request [here](https://github.com/liangping/look/issues), We will explore your chains as soon as possibe. And the most important thing is that Look is free for all public cosmos-based blockchains.
## Why LOOK explorer use official/trusted third party public LCD/rpc server?
We have two considerations: 1, Trust, In decentralize system, everything controled by one single team/orgnization could be risks. So we decided to co-build LOOK explorer with the community. 2. Look explorer will explose handreds and thousands cosmos-based blockchains in the future, it's impossible for our team to run validators or fullnodes for all of those chains.
## Contributors
Developers: @liangping @dingyiming
Data providers: [full list](https://github.com/ping-pub/look/blob/master/hosts.json)
* irisnet.org,
* nylira.net,
* kava.io
*If you don't want to provide data services for LOOK exporer, let us know.*
## Blockchains on LOOK explorer:
* https://ping.pub/cosmos
* https://ping.pub/iris
* https://ping.pub/akash
* https://ping.pub/kava
# LOOK 浏览器
Look是一个轻浏览器,免费为所有的基于Cosmos-SDK开发的区块链提供浏览服务
## Look 和其他区块链浏览器有什么不同?
Look的设计理念是尽可能的保持数据的真实性,所以,他不会在服务器端缓存或者保存任何数据,也不会增加任何分析处理。它仅仅通过LCD/RPC来获取他所需要的所有数据。因此我们叫它“轻浏览器”。
## 你希望Look来浏览你的区块链吗?
如果你需要Look来浏览你的区块链,请在[这里](https://github.com/liangping/look/issues) 提交申请,我们会尽快开通。而且是免费的。
## 为什么LOOK要使用官方或者可信赖的第三方的LCD/RPC服务器?
我们主要是基于以下两个考虑:1,可信,在去中心化的系统里,任何有一个由单个团队或者实体控制的事情都是有风险的,所以我们选择和社区一起来共建LOOK浏览器。2,LOOK浏览器计划在未来支持成百上千条区块链,因此对我们团队来说,不可能为所有这些链去提供一个验证人节点或者全节点。
## 项目贡献者
开发者: @liangping @dingyiming
数据服务方: [列表](https://github.com/ping-pub/look/blob/master/hosts.json)
* irisnet.org,
* nylira.net,
* 01node.com,
* kava.io
*如果你觉得我们滥用了你的服务器资源,请告知我们。*
## LOOK explorer 上的区块链:
* https://ping.pub/cosmos
* https://ping.pub/iris
* https://ping.pub/akash
* https://ping.pub/kava
# Contact Us
Email18786721#qq.com
+338 -45
View File
@@ -23,10 +23,11 @@
"@ledgerhq/hw-app-cosmos": "^6.3.0",
"@ledgerhq/hw-transport-web-ble": "^6.3.0",
"@ledgerhq/hw-transport-webusb": "^6.3.0",
"@vue/composition-api": "^1.4.0",
"@vueuse/core": "4.0.0",
"animate.css": "4.1.1",
"apexcharts": "3.24.0",
"axios": "0.21.1",
"axios": "0.21.2",
"axios-mock-adapter": "1.19.0",
"bootstrap": "4.6.0",
"bootstrap-vue": "2.21.1",
@@ -38,13 +39,15 @@
"echarts": "4.8.0",
"leaflet": "1.6.0",
"ledger-cosmos-js": "2.1.8",
"node-fetch": "^2.6.1",
"long": "^5.2.0",
"node-fetch": "^3.1.1",
"pako": "^1.0.11",
"portal-vue": "2.1.7",
"postcss-rtl": "1.7.3",
"prismjs": "1.24.0",
"prismjs": "1.25.0",
"protobufjs-cli-dbx": "^7.0.7",
"protobufjs-dbx": "^7.0.0",
"ripemd160": "^2.0.2",
"swiper": "6.5.1",
"trading-vue-js": "^1.0.2",
"uuid": "8.3.2",
@@ -75,6 +78,7 @@
"vue-toastification": "1.7.8",
"vue-tour": "1.5.0",
"vue-tree-halower": "1.8.3",
"vue2-flip-countdown": "^0.12.1",
"vue2-leaflet": "2.5.2",
"vuedraggable": "2.24.3",
"vuex": "3.6.0"
@@ -1863,7 +1867,7 @@
"@cosmjs/encoding": "0.26.5",
"@cosmjs/math": "0.26.5",
"@cosmjs/utils": "0.26.5",
"axios": "^0.21.2",
"axios": "0.21.2",
"fast-deep-equal": "^3.1.3"
}
},
@@ -1935,6 +1939,11 @@
"protobufjs": "~6.10.2"
}
},
"node_modules/@cosmjs/proto-signing/node_modules/long": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
},
"node_modules/@cosmjs/socket": {
"version": "0.26.5",
"resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.26.5.tgz",
@@ -1985,6 +1994,11 @@
"xstream": "^11.14.0"
}
},
"node_modules/@cosmjs/stargate/node_modules/long": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
},
"node_modules/@cosmjs/stream": {
"version": "0.26.5",
"resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.26.5.tgz",
@@ -2004,7 +2018,7 @@
"@cosmjs/math": "0.26.5",
"@cosmjs/socket": "0.26.5",
"@cosmjs/stream": "0.26.5",
"axios": "^0.21.2",
"axios": "0.21.2",
"readonly-date": "^1.0.0",
"xstream": "^11.14.0"
}
@@ -2063,6 +2077,25 @@
"unorm": "^1.3.3"
}
},
"node_modules/@cosmostation/cosmosjs/node_modules/node-fetch": {
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
"dependencies": {
"whatwg-url": "^5.0.0"
},
"engines": {
"node": "4.x || >=6.0.0"
},
"peerDependencies": {
"encoding": "^0.1.0"
},
"peerDependenciesMeta": {
"encoding": {
"optional": true
}
}
},
"node_modules/@hapi/address": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz",
@@ -2461,6 +2494,25 @@
"node": ">=8"
}
},
"node_modules/@nuxt/opencollective/node_modules/node-fetch": {
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
"dependencies": {
"whatwg-url": "^5.0.0"
},
"engines": {
"node": "4.x || >=6.0.0"
},
"peerDependencies": {
"encoding": "^0.1.0"
},
"peerDependenciesMeta": {
"encoding": {
"optional": true
}
}
},
"node_modules/@nuxt/opencollective/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -4500,11 +4552,11 @@
"integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
},
"node_modules/axios": {
"version": "0.21.1",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
"integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
"version": "0.21.2",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.2.tgz",
"integrity": "sha512-87otirqUw3e8CzHTMO+/9kh/FSgXt/eVDvipijwDtEuwbkySWZ9SBm6VEubmJ/kLKEoLQV/POhxXFb66bfekfg==",
"dependencies": {
"follow-redirects": "^1.10.0"
"follow-redirects": "^1.14.0"
}
},
"node_modules/axios-mock-adapter": {
@@ -6167,9 +6219,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001245",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz",
"integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==",
"version": "1.0.30001303",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001303.tgz",
"integrity": "sha512-/Mqc1oESndUNszJP0kx0UaQU9kEv9nNtJ7Kn8AdA0mNnH8eR1cj0kG+NbNuC1Wq/b21eA8prhKRA3bbkjONegQ==",
"dev": true,
"funding": {
"type": "opencollective",
@@ -7134,6 +7186,11 @@
"protobufjs": "~6.11.2"
}
},
"node_modules/cosmjs-types/node_modules/long": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
},
"node_modules/cosmjs-types/node_modules/protobufjs": {
"version": "6.11.2",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.2.tgz",
@@ -7586,6 +7643,14 @@
"node": ">=0.10"
}
},
"node_modules/data-uri-to-buffer": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz",
"integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==",
"engines": {
"node": ">= 12"
}
},
"node_modules/dayjs": {
"version": "1.10.6",
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.6.tgz",
@@ -9576,6 +9641,28 @@
"pend": "~1.2.0"
}
},
"node_modules/fetch-blob": {
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.1.4.tgz",
"integrity": "sha512-Eq5Xv5+VlSrYWEqKrusxY1C3Hm/hjeAsCGVG3ft7pZahlUAChpGZT/Ms1WmSLnEAisEXszjzu/s+ce6HZB2VHA==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/jimmywarting"
},
{
"type": "paypal",
"url": "https://paypal.me/jimmywarting"
}
],
"dependencies": {
"node-domexception": "^1.0.0",
"web-streams-polyfill": "^3.0.3"
},
"engines": {
"node": "^12.20 || >= 14.13"
}
},
"node_modules/figgy-pudding": {
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
@@ -9912,6 +9999,17 @@
"node": ">= 0.12"
}
},
"node_modules/formdata-polyfill": {
"version": "4.0.10",
"resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
"integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
"dependencies": {
"fetch-blob": "^3.1.2"
},
"engines": {
"node": ">=12.20.0"
}
},
"node_modules/forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@@ -12702,9 +12800,9 @@
}
},
"node_modules/long": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz",
"integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w=="
},
"node_modules/longest": {
"version": "1.0.1",
@@ -13533,12 +13631,39 @@
"integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
"dev": true
},
"node_modules/node-fetch": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
"integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
"node_modules/node-domexception": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
"integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/jimmywarting"
},
{
"type": "github",
"url": "https://paypal.me/jimmywarting"
}
],
"engines": {
"node": "4.x || >=6.0.0"
"node": ">=10.5.0"
}
},
"node_modules/node-fetch": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.1.1.tgz",
"integrity": "sha512-SMk+vKgU77PYotRdWzqZGTZeuFKlsJ0hu4KPviQKkfY+N3vn2MIzr0rvpnYpR8MtB3IEuhlEcuOLbGvLRlA+yg==",
"dependencies": {
"data-uri-to-buffer": "^4.0.0",
"fetch-blob": "^3.1.3",
"formdata-polyfill": "^4.0.10"
},
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/node-fetch"
}
},
"node_modules/node-forge": {
@@ -15473,9 +15598,9 @@
}
},
"node_modules/prismjs": {
"version": "1.24.0",
"resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.24.0.tgz",
"integrity": "sha512-SqV5GRsNqnzCL8k5dfAjCNhUrF3pR0A9lTDSCUZeh/LIshheXJEaP0hwLz2t4XHivd2J/v2HR+gRnigzeKe3cQ=="
"version": "1.25.0",
"resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz",
"integrity": "sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg=="
},
"node_modules/process": {
"version": "0.11.10",
@@ -15645,11 +15770,21 @@
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz",
"integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw=="
},
"node_modules/protobufjs-dbx/node_modules/long": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
},
"node_modules/protobufjs/node_modules/@types/node": {
"version": "13.13.52",
"resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.52.tgz",
"integrity": "sha512-s3nugnZumCC//n4moGGe6tkNMyYEdaDBitVjwPxXmR5lnMG5dHePinH2EdxkG3Rh1ghFHHixAG4NJhpJW1rthQ=="
},
"node_modules/protobufjs/node_modules/long": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
},
"node_modules/proxy-addr": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@@ -18718,6 +18853,11 @@
"node": ">=0.8"
}
},
"node_modules/tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
},
"node_modules/trading-vue-js": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/trading-vue-js/-/trading-vue-js-1.0.2.tgz",
@@ -20011,6 +20151,23 @@
"vue": "^2.4.4"
}
},
"node_modules/vue2-flip-countdown": {
"version": "0.12.1",
"resolved": "https://registry.npmjs.org/vue2-flip-countdown/-/vue2-flip-countdown-0.12.1.tgz",
"integrity": "sha512-kS3A86VMUjsG2FGnqv/AO4UTLKAAwutqh1dOTPfjSRiUfsgLO+9gmhLSeo+qSBoQYpCxccq44G/IsoRef8kywQ==",
"dependencies": {
"uuid": "^3.3.2"
}
},
"node_modules/vue2-flip-countdown/node_modules/uuid": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
"deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
"bin": {
"uuid": "bin/uuid"
}
},
"node_modules/vue2-leaflet": {
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/vue2-leaflet/-/vue2-leaflet-2.5.2.tgz",
@@ -20201,6 +20358,19 @@
"defaults": "^1.0.3"
}
},
"node_modules/web-streams-polyfill": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz",
"integrity": "sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA==",
"engines": {
"node": ">= 8"
}
},
"node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
"integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE="
},
"node_modules/webpack": {
"version": "4.46.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz",
@@ -20522,6 +20692,15 @@
"node": ">=0.8.0"
}
},
"node_modules/whatwg-url": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
"integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
"dependencies": {
"tr46": "~0.0.3",
"webidl-conversions": "^3.0.0"
}
},
"node_modules/which": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
@@ -22224,13 +22403,12 @@
"@cosmjs/encoding": "0.26.5",
"@cosmjs/math": "0.26.5",
"@cosmjs/utils": "0.26.5",
"axios": "^0.21.2",
"axios": "0.21.2",
"fast-deep-equal": "^3.1.3"
},
"dependencies": {
"axios": {
"version": "0.21.4",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
"version": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
"integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
"requires": {
"follow-redirects": "^1.14.0"
@@ -22289,6 +22467,13 @@
"cosmjs-types": "^0.2.0",
"long": "^4.0.0",
"protobufjs": "~6.10.2"
},
"dependencies": {
"long": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
}
}
},
"@cosmjs/socket": {
@@ -22327,6 +22512,13 @@
"long": "^4.0.0",
"protobufjs": "~6.10.2",
"xstream": "^11.14.0"
},
"dependencies": {
"long": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
}
}
},
"@cosmjs/stream": {
@@ -22348,14 +22540,13 @@
"@cosmjs/math": "0.26.5",
"@cosmjs/socket": "0.26.5",
"@cosmjs/stream": "0.26.5",
"axios": "^0.21.2",
"axios": "0.21.2",
"readonly-date": "^1.0.0",
"xstream": "^11.14.0"
},
"dependencies": {
"axios": {
"version": "0.21.4",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
"version": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
"integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
"requires": {
"follow-redirects": "^1.14.0"
@@ -22402,6 +22593,14 @@
"safe-buffer": "^5.0.1",
"unorm": "^1.3.3"
}
},
"node-fetch": {
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
"requires": {
"whatwg-url": "^5.0.0"
}
}
}
},
@@ -22717,6 +22916,14 @@
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
},
"node-fetch": {
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
"requires": {
"whatwg-url": "^5.0.0"
}
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -24379,11 +24586,11 @@
"integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
},
"axios": {
"version": "0.21.1",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
"integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
"version": "0.21.2",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.2.tgz",
"integrity": "sha512-87otirqUw3e8CzHTMO+/9kh/FSgXt/eVDvipijwDtEuwbkySWZ9SBm6VEubmJ/kLKEoLQV/POhxXFb66bfekfg==",
"requires": {
"follow-redirects": "^1.10.0"
"follow-redirects": "^1.14.0"
}
},
"axios-mock-adapter": {
@@ -25729,9 +25936,9 @@
}
},
"caniuse-lite": {
"version": "1.0.30001245",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz",
"integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==",
"version": "1.0.30001303",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001303.tgz",
"integrity": "sha512-/Mqc1oESndUNszJP0kx0UaQU9kEv9nNtJ7Kn8AdA0mNnH8eR1cj0kG+NbNuC1Wq/b21eA8prhKRA3bbkjONegQ==",
"dev": true
},
"case-sensitive-paths-webpack-plugin": {
@@ -26530,6 +26737,11 @@
"protobufjs": "~6.11.2"
},
"dependencies": {
"long": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
},
"protobufjs": {
"version": "6.11.2",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.2.tgz",
@@ -26881,6 +27093,11 @@
"assert-plus": "^1.0.0"
}
},
"data-uri-to-buffer": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz",
"integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA=="
},
"dayjs": {
"version": "1.10.6",
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.6.tgz",
@@ -28470,6 +28687,15 @@
"pend": "~1.2.0"
}
},
"fetch-blob": {
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.1.4.tgz",
"integrity": "sha512-Eq5Xv5+VlSrYWEqKrusxY1C3Hm/hjeAsCGVG3ft7pZahlUAChpGZT/Ms1WmSLnEAisEXszjzu/s+ce6HZB2VHA==",
"requires": {
"node-domexception": "^1.0.0",
"web-streams-polyfill": "^3.0.3"
}
},
"figgy-pudding": {
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
@@ -28715,6 +28941,14 @@
"mime-types": "^2.1.12"
}
},
"formdata-polyfill": {
"version": "4.0.10",
"resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
"integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
"requires": {
"fetch-blob": "^3.1.2"
}
},
"forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@@ -30879,9 +31113,9 @@
"dev": true
},
"long": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz",
"integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w=="
},
"longest": {
"version": "1.0.1",
@@ -31554,10 +31788,20 @@
"integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
"dev": true
},
"node-domexception": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
"integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="
},
"node-fetch": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
"integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.1.1.tgz",
"integrity": "sha512-SMk+vKgU77PYotRdWzqZGTZeuFKlsJ0hu4KPviQKkfY+N3vn2MIzr0rvpnYpR8MtB3IEuhlEcuOLbGvLRlA+yg==",
"requires": {
"data-uri-to-buffer": "^4.0.0",
"fetch-blob": "^3.1.3",
"formdata-polyfill": "^4.0.10"
}
},
"node-forge": {
"version": "0.10.0",
@@ -33070,9 +33314,9 @@
}
},
"prismjs": {
"version": "1.24.0",
"resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.24.0.tgz",
"integrity": "sha512-SqV5GRsNqnzCL8k5dfAjCNhUrF3pR0A9lTDSCUZeh/LIshheXJEaP0hwLz2t4XHivd2J/v2HR+gRnigzeKe3cQ=="
"version": "1.25.0",
"resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz",
"integrity": "sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg=="
},
"process": {
"version": "0.11.10",
@@ -33124,6 +33368,11 @@
"version": "13.13.52",
"resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.52.tgz",
"integrity": "sha512-s3nugnZumCC//n4moGGe6tkNMyYEdaDBitVjwPxXmR5lnMG5dHePinH2EdxkG3Rh1ghFHHixAG4NJhpJW1rthQ=="
},
"long": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
}
}
},
@@ -33212,6 +33461,11 @@
"version": "10.17.60",
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz",
"integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw=="
},
"long": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
}
}
},
@@ -35636,6 +35890,11 @@
"punycode": "^2.1.1"
}
},
"tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
},
"trading-vue-js": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/trading-vue-js/-/trading-vue-js-1.0.2.tgz",
@@ -36642,6 +36901,21 @@
"vue": "^2.4.4"
}
},
"vue2-flip-countdown": {
"version": "0.12.1",
"resolved": "https://registry.npmjs.org/vue2-flip-countdown/-/vue2-flip-countdown-0.12.1.tgz",
"integrity": "sha512-kS3A86VMUjsG2FGnqv/AO4UTLKAAwutqh1dOTPfjSRiUfsgLO+9gmhLSeo+qSBoQYpCxccq44G/IsoRef8kywQ==",
"requires": {
"uuid": "^3.3.2"
},
"dependencies": {
"uuid": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
}
}
},
"vue2-leaflet": {
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/vue2-leaflet/-/vue2-leaflet-2.5.2.tgz",
@@ -36790,6 +37064,16 @@
"defaults": "^1.0.3"
}
},
"web-streams-polyfill": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz",
"integrity": "sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA=="
},
"webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
"integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE="
},
"webpack": {
"version": "4.46.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz",
@@ -37030,6 +37314,15 @@
"integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
"dev": true
},
"whatwg-url": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
"integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
"requires": {
"tr46": "~0.0.3",
"webidl-conversions": "^3.0.0"
}
},
"which": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+10 -10
View File
@@ -5,9 +5,7 @@
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint",
"tauri:build": "vue-cli-service tauri:build",
"tauri:serve": "vue-cli-service tauri:serve"
"lint": "vue-cli-service lint"
},
"dependencies": {
"@casl/ability": "4.1.6",
@@ -25,11 +23,11 @@
"@ledgerhq/hw-app-cosmos": "^6.3.0",
"@ledgerhq/hw-transport-web-ble": "^6.3.0",
"@ledgerhq/hw-transport-webusb": "^6.3.0",
"@vue/composition-api": "^1.4.0",
"@vue/composition-api": "^1.4.9",
"@vueuse/core": "4.0.0",
"animate.css": "4.1.1",
"apexcharts": "3.24.0",
"axios": "0.21.1",
"axios": "0.21.2",
"axios-mock-adapter": "1.19.0",
"bootstrap": "4.6.0",
"bootstrap-vue": "2.21.1",
@@ -38,16 +36,18 @@
"core-js": "3.8.1",
"cosmjs-types": "^0.2.0",
"dayjs": "^1.10.6",
"echarts": "4.8.0",
"echarts": "5.3.0",
"leaflet": "1.6.0",
"ledger-cosmos-js": "2.1.8",
"node-fetch": "^2.6.1",
"long": "^5.2.0",
"node-fetch": "^2.6.5",
"pako": "^1.0.11",
"portal-vue": "2.1.7",
"postcss-rtl": "1.7.3",
"prismjs": "1.24.0",
"prismjs": "1.25.0",
"protobufjs-cli-dbx": "^7.0.7",
"protobufjs-dbx": "^7.0.0",
"ripemd160": "^2.0.2",
"swiper": "6.5.1",
"trading-vue-js": "^1.0.2",
"uuid": "8.3.2",
@@ -60,7 +60,7 @@
"vue-cleave-component": "2.1.3",
"vue-clipboard2": "0.3.1",
"vue-context": "6.0.0",
"vue-echarts": "5.0.0-beta.0",
"vue-echarts": "^6.0.2",
"vue-feather-icons": "5.1.0",
"vue-flatpickr-component": "8.1.6",
"vue-flex-waterfall": "^1.0.7",
@@ -78,6 +78,7 @@
"vue-toastification": "1.7.8",
"vue-tour": "1.5.0",
"vue-tree-halower": "1.8.3",
"vue2-flip-countdown": "^0.12.1",
"vue2-leaflet": "2.5.2",
"vuedraggable": "2.24.3",
"vuex": "3.6.0"
@@ -96,7 +97,6 @@
"eslint-plugin-vue": "6.2.2",
"sass": "1.32.*",
"sass-loader": "^10.1.0",
"vue-cli-plugin-tauri": "~1.0.0-beta.6",
"vue-template-compiler": "2.x"
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

+59
View File
@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.2.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="레이어_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 110 110" style="enable-background:new 0 0 110 110;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#SVGID_1_);}
.st1{fill:url(#SVGID_2_);}
.st2{fill:url(#SVGID_3_);}
.st3{fill:url(#SVGID_4_);}
</style>
<g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="18.3748" y1="90.1982" x2="85.5006" y2="25.6877">
<stop offset="1.568510e-02" style="stop-color:#2E0E5B"/>
<stop offset="1" style="stop-color:#2E205B"/>
</linearGradient>
<path class="st0" d="M55,110L55,110C24.6,110,0,85.4,0,55v0C0,24.6,24.6,0,55,0l0,0c30.4,0,55,24.6,55,55v0
C110,85.4,85.4,110,55,110z"/>
<g>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="93.4247" y1="20.8568" x2="44.9131" y2="92.076">
<stop offset="4.034390e-02" style="stop-color:#6AF2A6"/>
<stop offset="0.197" style="stop-color:#64EFAB"/>
<stop offset="0.4077" style="stop-color:#53E8B9"/>
<stop offset="0.6492" style="stop-color:#37DCD1"/>
<stop offset="0.9118" style="stop-color:#10CBF1"/>
<stop offset="1" style="stop-color:#01C5FD"/>
</linearGradient>
<path class="st1" d="M84.2,71.9L84.2,71.9c-0.1,0.2-0.2,0.4-0.3,0.5l-0.2,0.3c-0.7,1-1.5,1.8-2.5,2.4L59.9,87.4
c-1.5,0.9-3.2,1.3-4.8,1.3c-1.7,0-3.3-0.4-4.8-1.3L31.6,76.7c-0.2-0.2-0.4-0.3-0.6-0.4l0,0c-0.2-0.3-0.3-0.5-0.3-0.8
c0.2-0.7,1.8-1,1.9-1.1c0.4-0.1,0.8-0.1,1.2-0.2l0.3,0c0.7-0.1,1.4-0.2,2-0.3c0.7-0.1,1.3-0.2,2-0.3c2.7-0.4,5.3-0.7,7.9-1
c2.5-0.3,5-0.6,7.6-0.8c2.7-0.3,5.2-0.5,7.4-0.6c2.4-0.1,4.8-0.3,7.1-0.4c2.3-0.1,4.6-0.1,6.9-0.2c0.2,0,0.5,0,0.7,0h0.7
c1.7,0,3.5,0,5.3,0.1c0.2,0,0.4,0,0.7,0l0.4,0c0.7,0.1,1.1,0.3,1.3,0.6C84.3,71.5,84.3,71.7,84.2,71.9z"/>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="82.447" y1="13.3793" x2="33.9352" y2="84.5987">
<stop offset="4.034390e-02" style="stop-color:#6AF2A6"/>
<stop offset="0.197" style="stop-color:#64EFAB"/>
<stop offset="0.4077" style="stop-color:#53E8B9"/>
<stop offset="0.6492" style="stop-color:#37DCD1"/>
<stop offset="0.9118" style="stop-color:#10CBF1"/>
<stop offset="1" style="stop-color:#01C5FD"/>
</linearGradient>
<path class="st2" d="M85.5,53.1v7c0,2.6,0,2.7-5.4,3.3l-3.5,0.3c-0.5,0-0.9,0.1-1.4,0.1L74.1,64c-8.9,0.9-17.9,1.7-26.8,2.2
c-4,0.2-7.9,0.4-11.9,0.6c-1.8,0.1-3.7,0.1-5.5,0.2c-0.9,0-1.8,0-2.7,0c-0.7,0-1.8,0.2-2.4-0.3c-0.5-0.5-0.4-1.5-0.4-2.2V46.9
c0-2.5,0.8-3,5.9-3.3c0.9,0,1.7,0,2.9,0c15,0,30.9,2.2,50.1,7c0,0,0.1,0,0.1,0c0,0,0,0,0,0c0.2,0,0.3,0.1,0.5,0.1l0,0
C84.7,51,85.5,50.8,85.5,53.1z"/>
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="76.1836" y1="9.113" x2="27.6719" y2="80.3324">
<stop offset="4.034390e-02" style="stop-color:#6AF2A6"/>
<stop offset="0.197" style="stop-color:#64EFAB"/>
<stop offset="0.4077" style="stop-color:#53E8B9"/>
<stop offset="0.6492" style="stop-color:#37DCD1"/>
<stop offset="0.9118" style="stop-color:#10CBF1"/>
<stop offset="1" style="stop-color:#01C5FD"/>
</linearGradient>
<path class="st3" d="M84.2,41.5c-0.1,0.1-0.2,0.1-0.3,0.2c-0.6,0.2-1.3,0.1-1.9,0c-0.7,0-1.4-0.1-2.1-0.1c-1.3-0.1-2.7-0.2-4-0.4
c-1.8-0.2-3.6-0.4-5.3-0.6c-2.7-0.3-5.4-0.6-8-0.9c-3.1-0.3-6.3-0.7-9.4-1c-3.1-0.3-6.2-0.7-9.3-1c-2.7-0.3-5.3-0.6-8-0.8
c-1.7-0.2-3.5-0.4-5.2-0.6c-0.4,0-0.9-0.1-1.3-0.1c-0.1,0-0.2,0-0.3,0c-0.3-0.1-0.6-0.1-0.8-0.3c-0.1-0.1-0.1-0.3,0.1-0.6l0.1-0.1
c0.1-0.1,0.3-0.2,0.4-0.3c0.2-0.1,0.3-0.2,0.5-0.3l20.8-12c1.5-0.8,3.2-1.3,4.9-1.3c1.7,0,3.4,0.4,4.8,1.3c0,0,20.5,11.8,20.8,12
c1.7,1,3.1,2.7,3.5,4.7C84.3,39.8,84.6,41,84.2,41.5z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

-4
View File
@@ -1,4 +0,0 @@
# Generated by Cargo
# will have compiled files and executables
/target/
WixTools
-3773
View File
File diff suppressed because it is too large Load Diff
-25
View File
@@ -1,25 +0,0 @@
[package]
name = "app"
version = "0.1.0"
description = "A Tauri App"
authors = ["you"]
license = ""
repository = ""
default-run = "app"
edition = "2018"
build = "src/build.rs"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[build-dependencies]
tauri-build = { version = "1.0.0-beta.1" }
# miner = { git="https://github.com/olsf/libra", version="0.1.0" }
[dependencies]
serde_json = "1.0"
serde = { version = "1.0", features = ["derive"] }
tauri = { version = "1.0.0-beta.2", features = ["api-all", "menu", "system-tray"] }
[features]
default = [ "custom-protocol" ]
custom-protocol = [ "tauri/custom-protocol" ]
Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

-14
View File
@@ -1,14 +0,0 @@
max_width = 100
hard_tabs = false
tab_spaces = 2
newline_style = "Auto"
use_small_heuristics = "Default"
reorder_imports = true
reorder_modules = true
remove_nested_parens = true
edition = "2018"
merge_derives = true
use_try_shorthand = false
use_field_init_shorthand = false
force_explicit_abi = true
imports_granularity = "Crate"
-3
View File
@@ -1,3 +0,0 @@
fn main() {
tauri_build::build()
}
-29
View File
@@ -1,29 +0,0 @@
#![cfg_attr(
all(not(debug_assertions), target_os = "windows"),
windows_subsystem = "windows"
)]
use tauri::{CustomMenuItem, SystemTray, SystemTrayMenu, SystemTrayMenuItem, MenuItem};
#[tauri::command]
fn my_custom_command(msg: String) -> String {
println!("I was invoked from JS! {}", msg);
return "Hello from Rust".into()
}
fn main() {
// here `"quit".to_string()` defines the menu item id, and the second parameter is the menu item label.
let quit = CustomMenuItem::new("quit".to_string(), "Quit");
let hide = CustomMenuItem::new("hide".to_string(), "Hide");
let tray_menu = SystemTrayMenu::new()
.add_item(quit)
.add_native_item(SystemTrayMenuItem::Separator)
.add_item(hide);
let tray = SystemTray::new().with_menu(tray_menu);
tauri::Builder::default()
.system_tray(tray)
// This is where you pass in your commands
.invoke_handler(tauri::generate_handler![my_custom_command])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
-70
View File
@@ -1,70 +0,0 @@
{
"package": {
"productName": "Ping-Wallet",
"version": "0.1.0"
},
"build": {
"distDir": "Set automatically by Vue CLI plugin",
"devPath": "Set automatically by Vue CLI plugin",
"beforeDevCommand": "",
"beforeBuildCommand": "",
"withGlobalTauri": true
},
"tauri": {
"bundle": {
"active": true,
"targets": "all",
"identifier": "com.tauri.dev",
"icon": [
"icons/32x32.png",
"icons/128x128.png",
"icons/128x128@2x.png",
"icons/icon.icns",
"icons/icon.ico"
],
"resources": [],
"externalBin": [],
"copyright": "",
"category": "DeveloperTool",
"shortDescription": "",
"longDescription": "",
"deb": {
"depends": [],
"useBootstrapper": false
},
"macOS": {
"frameworks": [],
"minimumSystemVersion": "",
"useBootstrapper": false,
"exceptionDomain": "",
"signingIdentity": null,
"entitlements": null
},
"windows": {
"certificateThumbprint": null,
"digestAlgorithm": "sha256",
"timestampUrl": ""
}
},
"updater": {
"active": false
},
"allowlist": {
"all": true
},
"windows": [
{
"title": "Ping Wallet",
"width": 1024,
"height": 768,
"resizable": true
}
],
"systemTray": {
"iconPath": "icons/icon.png"
},
"security": {
"csp": "default-src blob: data: filesystem: ws: wss: http: https: tauri: 'unsafe-eval' 'unsafe-inline' 'self' img-src: 'self'"
}
}
}
@@ -8,13 +8,13 @@
</template>
<script>
import ECharts from 'vue-echarts'
import * as ECharts from 'echarts'
import 'echarts/lib/component/tooltip'
import 'echarts/lib/component/legend'
import 'echarts/lib/chart/scatter'
import theme from './theme.json'
// import theme from './theme.json'
ECharts.registerTheme('theme-color', theme)
// ECharts.registerTheme('theme-color', theme)
export default {
components: {
+7 -5
View File
@@ -1,6 +1,6 @@
<template>
<p class="clearfix mb-0">
<span class="float-md-left d-block d-md-inline-block mt-25">
<span class="float-md-left d-none d-md-block d-md-inline-block mt-25">
Powered By
<b-link
class="ml-25 font-weight-bolder"
@@ -9,11 +9,13 @@
>Ping.pub</b-link>
</span>
<span class="float-md-right d-none d-md-block">Buy me a cup of coffee.
<router-link
v-ripple.400="'rgba(113, 102, 240, 0.15)'"
class="float-md-right"
to="/coffee"
>Buy me a cup of coffee.
<span
v-b-popover.hover.topleft="'Atom: cosmos1ev0vtddkl7jlwfawlk06yzncapw2x9quyxx75u'"
v-ripple.400="'rgba(113, 102, 240, 0.15)'"
title="Thanks for your donation!"
variant="outline-primary"
>
<feather-icon
@@ -22,7 +24,7 @@
class="text-danger stroke-current"
/>
</span>
</span>
</router-link>
</p>
</template>
+78
View File
@@ -0,0 +1,78 @@
<template>
<div>
<b-row>
<b-col
v-for="(item, i) in chains"
:key="`coffee-${item.addr}-${i}`"
md="4"
>
<b-input-group
size="sm"
class="input-group-merge mb-10"
>
<b-input-group-prepend is-text>
<b-avatar
:src="item.icon"
variant="light-primary"
size="16"
/>
</b-input-group-prepend>
<b-form-input :value="item.addr" />
</b-input-group>
</b-col>
</b-row>
<operation-transfer-component
:recipient-address.sync="selectedAddress"
/>
</div>
</template>
<script>
import {
BRow, BCol,
BAvatar, BFormInput, BInputGroupPrepend, BInputGroup,
} from 'bootstrap-vue'
import Ripple from 'vue-ripple-directive'
import {
addressEnCode, addressDecode,
} from '@/libs/utils'
import OperationTransferComponent from '@/views/OperationTransferComponent.vue'
export default {
name: 'AppFooter',
components: {
BCol,
BRow,
BAvatar,
BFormInput,
BInputGroupPrepend,
BInputGroup,
OperationTransferComponent,
},
directives: {
Ripple,
},
data() {
return {
selectedAddress: 'cosmos1ev0vtddkl7jlwfawlk06yzncapw2x9quyxx75u',
}
},
computed: {
chains() {
const { data } = addressDecode('cosmos1ev0vtddkl7jlwfawlk06yzncapw2x9quyxx75u')
const config = Object.values(JSON.parse(localStorage.getItem('chains')))
.map(x => ({
addr: addressEnCode(x.addr_prefix, data),
icon: x.logo,
}))
return config
},
},
methods: {
transfer(addr) {
this.selectedAddress = addr
this.$bvModal.show('transfer-window')
},
},
}
</script>
@@ -72,7 +72,7 @@
@ps-scroll-y="evt => { shallShadowBottom = evt.srcElement.scrollTop > 0 }"
>
<vertical-nav-menu-items
:items="navMenuItems"
:items.sync="leftMenu"
class="navigation navigation-main"
/>
</vue-perfect-scrollbar>
@@ -154,6 +154,16 @@ export default {
appLogoImage,
}
},
computed: {
leftMenu() {
const preload = []
const { selected } = this.$store.state.chains
const current = navMenuItems.find(x => (x.title === selected.chain_name))
preload.push({ header: 'current' })
preload.push(current)
return preload.concat(navMenuItems.filter(x => x.title !== selected.chain_name))
},
},
}
</script>
@@ -20,7 +20,7 @@
class="mr-1"
/>
<span class="menu-title text-truncate">{{ t(item.title) }}</span>
<span class="menu-title text-truncate text-uppercase">{{ item.title }}</span>
<b-badge
v-if="item.tag"
pill
@@ -1,7 +1,7 @@
import { useUtils as useI18nUtils } from '@core/libs/i18n'
// import { useUtils as useI18nUtils } from '@core/libs/i18n'
import { useUtils as useAclUtils } from '@core/libs/acl'
const { t } = useI18nUtils()
// const { t } = useI18nUtils()
const { canViewVerticalNavMenuHeader } = useAclUtils()
export default {
@@ -12,7 +12,7 @@ export default {
},
},
render(h) {
const span = h('span', {}, t(this.item.header))
const span = h('span', {}, this.item.header)
const icon = h('feather-icon', { props: { icon: 'MoreHorizontalIcon', size: '18' } })
if (canViewVerticalNavMenuHeader(this.item)) {
return h('li', { class: 'navigation-header text-truncate' }, [span, icon])
+45
View File
@@ -0,0 +1,45 @@
# Directory Layout
**We accept all blockchains which have 10+ independent validators.**
- Submit configs for mainnet, go to https://github.com/ping-pub/explorer/tree/master/src/chains/mainnet
- Submit configs for testnet, go to https://github.com/ping-pub/explorer/tree/testnet/src/chains/testnet
# Sample of Config
```json
{
"chain_name": "cosmos",
"api": ["https://cosmos.api.ping.pub"],
"sdk_version": "0.42.6",
"coin_type": "118",
"min_tx_fee": "800",
"assets": [{
"base": "uatom",
"symbol": "ATOM",
"exponent": "6",
"coingecko_id": "cosmos",
"logo": "https://dl.airtable.com/.attachments/e54f814bba8c0f9af8a3056020210de0/2d1155fb/cosmos-hub.svg"
}],
"addr_prefix": "cosmos",
"logo": "https://dl.airtable.com/.attachments/e54f814bba8c0f9af8a3056020210de0/2d1155fb/cosmos-hub.svg"
}
```
- **chain_name** the name to identify the chain on ping.pub
- **api** the rest api endpoint.(make sure that CORS is enabled: `Allow-Control-Allow-Origin: *`)
- **assets** Native Assets on blockchain.
# Test
please add these check points in comments with your PR, and adding your test result by clicking the checkbox of each line
```
Test Result:
- [ ] Connect wallet, check if address is correct?
- [ ] Transfer
- [ ] Delegate
- [ ] Redelegate
- [ ] Unbond
- [ ] withdraw Validator's Commission
- [ ] withdraw Rewards
```
Test is very important for us and our users.
+10 -2
View File
@@ -1,8 +1,16 @@
{
"chain_name": "akash-network",
"coingecko": "akash-network",
"api": "https://akash.api.ping.pub",
"api": ["https://akash.api.ping.pub"],
"sdk_version": "0.41.3",
"coin_type": "118",
"min_tx_fee": "8000",
"assets": [{
"base": "uakt",
"symbol": "AKT",
"exponent": "6",
"coingecko_id": "akash-network",
"logo": "https://dl.airtable.com/.attachments/52586702dd8352d97834fce5c2d83614/969b4d53/akash-network.png"
}],
"addr_prefix": "akash",
"logo": "https://dl.airtable.com/.attachments/52586702dd8352d97834fce5c2d83614/969b4d53/akash-network.png"
}
+9 -1
View File
@@ -1,8 +1,16 @@
{
"chain_name": "band-protocol",
"coingecko": "band-protocol",
"api": "https://laozi1.bandchain.org/api",
"addr_prefix": "band",
"coin_type": "494",
"min_tx_fee": "8000",
"assets": [{
"base": "uband",
"symbol": "BAND",
"exponent": "6",
"coingecko_id": "band-protocol",
"logo": "https://dl.airtable.com/.attachments/472ae99a508e32b4439b416beddd4eb9/c5166f62/band-symbol-blue-bg.75a3ad91.svg"
}],
"logo": "https://dl.airtable.com/.attachments/472ae99a508e32b4439b416beddd4eb9/c5166f62/band-symbol-blue-bg.75a3ad91.svg",
"sdk_version": "0.44.0"
}
+17
View File
@@ -0,0 +1,17 @@
{
"chain_name": "bitcanna",
"coingecko": "bitcanna",
"api":"https://lcd.bitcanna.io",
"sdk_version": "0.44.2",
"coin_type": "118",
"min_tx_fee": "8000",
"assets": [{
"base": "ubcna",
"symbol": "BCNA",
"exponent": "6",
"coingecko_id": "bitcanna",
"logo": "https://raw.githubusercontent.com/osmosis-labs/assetlists/main/images/bcna.svg"
}],
"addr_prefix": "bcna",
"logo": "https://raw.githubusercontent.com/osmosis-labs/assetlists/main/images/bcna.svg"
}
+10 -1
View File
@@ -3,6 +3,15 @@
"coingecko": "bitsong",
"api": "https://lcd.explorebitsong.com",
"addr_prefix": "bitsong",
"coin_type": "639",
"min_tx_fee": "3500",
"logo": "https://dl.airtable.com/.attachments/8016b71b69fb108f0ff33eb9af1c943f/f5fe4ef4/bitsong.svg",
"sdk_version": "0.42.0"
"sdk_version": "0.42.0",
"assets": [{
"base": "ubtsg",
"symbol": "BTSG",
"exponent": "6",
"coingecko_id": "bitsong",
"logo": "https://dl.airtable.com/.attachments/8016b71b69fb108f0ff33eb9af1c943f/f5fe4ef4/bitsong.svg"
}]
}
+17
View File
@@ -0,0 +1,17 @@
{
"chain_name": "bostrom",
"coingecko": "",
"api": "https://lcd.bostrom.cybernode.ai",
"sdk_version": "0.44.3",
"coin_type": "118",
"min_tx_fee": "5000",
"addr_prefix": "bostrom",
"logo": "https://ipfs.infura.io/ipfs/QmSVz41kA5aXttxT1rAXnuJecfazij3wh95X8ewd7Kdc2F",
"assets": [{
"base": "boot",
"symbol": "BOOT",
"exponent": "0",
"coingecko_id": "",
"logo": "https://ipfs.infura.io/ipfs/QmSVz41kA5aXttxT1rAXnuJecfazij3wh95X8ewd7Kdc2F"
}]
}
+10 -2
View File
@@ -1,9 +1,17 @@
{
"chain_name": "certik",
"coingecko": "certik",
"api":"https://azuredragon.noopsbycertik.com",
"sdk_version": "0.42.9",
"coin_type": "118",
"min_tx_fee": "5000",
"addr_prefix": "certik",
"logo": "https://dl.airtable.com/.attachments/78bc9a7352de8ecd09e167d406d68582/2dcea633/dED92akm_400x400.jpg"
"logo": "https://dl.airtable.com/.attachments/78bc9a7352de8ecd09e167d406d68582/2dcea633/dED92akm_400x400.jpg",
"assets": [{
"base": "uctk",
"symbol": "CTK",
"exponent": "6",
"coingecko_id": "certik",
"logo": "https://dl.airtable.com/.attachments/78bc9a7352de8ecd09e167d406d68582/2dcea633/dED92akm_400x400.jpg"
}]
}
+16
View File
@@ -0,0 +1,16 @@
{
"chain_name": "cheqd",
"api": "https://api.cheqd.net",
"sdk_version": "0.44.3",
"coin_type": "118",
"min_tx_fee": "5000",
"addr_prefix": "cheqd",
"logo": "https://raw.githubusercontent.com/osmosis-labs/assetlists/main/images/cheq.png",
"assets": [{
"base": "ncheq",
"symbol": "CHEQ",
"exponent": "9",
"coingecko_id": "cheqd-network",
"logo": "https://raw.githubusercontent.com/osmosis-labs/assetlists/main/images/cheq.png"
}]
}
+17
View File
@@ -0,0 +1,17 @@
{
"chain_name": "chihuahua",
"coingecko": "",
"api": ["https://api.chihuahua.wtf", "https://chihuahua-api.mercury-nodes.net"],
"sdk_version": "0.44.3",
"coin_type": "118",
"min_tx_fee": "5000",
"addr_prefix": "chihuahua",
"logo": "https://github.com/ChihuahuaChain/resources/raw/main/logo/logo_transparent_notext.png",
"assets": [{
"base": "uhuahua",
"symbol": "HUAHUA",
"exponent": "6",
"coingecko_id": "",
"logo": "https://github.com/ChihuahuaChain/resources/raw/main/logo/logo_transparent_notext.png"
}]
}
+16
View File
@@ -0,0 +1,16 @@
{
"chain_name": "comdex",
"api":"https://rest.comdex.one/",
"sdk_version": "0.44.3",
"coin_type": "118",
"min_tx_fee": "5000",
"addr_prefix": "comdex",
"logo": "https://raw.githubusercontent.com/comdex-official/logos/main/cmdx-logo-1.png",
"assets": [{
"base": "ucmdx",
"symbol": "CMDX",
"exponent": "6",
"coingecko_id": "comdex",
"logo": "https://raw.githubusercontent.com/comdex-official/logos/main/cmdx-logo-1.png"
}]
}
+12 -3
View File
@@ -1,8 +1,17 @@
{
"chain_name": "cosmos",
"coingecko": "cosmos",
"api":"https://cosmos.api.ping.pub",
"sdk_version": "0.42.6",
"api": ["https://lcd-cosmoshub.blockapsis.com", "https://cosmos.api.ping.pub", "https://cosmoshub.stakesystems.io"],
"sdk_version": "0.44.3",
"coin_type": "118",
"min_tx_fee": "800",
"addr_prefix": "cosmos",
"logo": "https://dl.airtable.com/.attachments/e54f814bba8c0f9af8a3056020210de0/2d1155fb/cosmos-hub.svg"
"logo": "https://dl.airtable.com/.attachments/e54f814bba8c0f9af8a3056020210de0/2d1155fb/cosmos-hub.svg",
"assets": [{
"base": "uatom",
"symbol": "ATOM",
"exponent": "6",
"coingecko_id": "cosmos",
"logo": "https://dl.airtable.com/.attachments/e54f814bba8c0f9af8a3056020210de0/2d1155fb/cosmos-hub.svg"
}]
}
+10 -1
View File
@@ -4,6 +4,15 @@
"coingecko": "crypto-com-chain",
"api": "https://mainnet.crypto.org:1317",
"sdk_version": "0.39.2",
"coin_type": "394",
"min_tx_fee": "5000",
"addr_prefix": "cro",
"logo": "https://dl.airtable.com/.attachments/b2e638424ea09dccd4f11b04dc53872a/844d11dc/LOGO.png"
"logo": "https://dl.airtable.com/.attachments/b2e638424ea09dccd4f11b04dc53872a/844d11dc/LOGO.png",
"assets": [{
"base": "basecro",
"symbol": "CRO",
"exponent": "8",
"coingecko_id": "crypto-com-chain",
"logo": "https://dl.airtable.com/.attachments/b2e638424ea09dccd4f11b04dc53872a/844d11dc/LOGO.png"
}]
}
+10 -1
View File
@@ -3,6 +3,15 @@
"coingecko": "",
"api": "https://api.mainnet.desmos.network",
"sdk_version": "0.42.0",
"coin_type": "852",
"min_tx_fee": "3000",
"addr_prefix": "desmos",
"logo": "https://dl.airtable.com/.attachments/e8232a86dd06af4e0591ed300376f9b2/3aab415f/logo1.png"
"logo": "https://dl.airtable.com/.attachments/e8232a86dd06af4e0591ed300376f9b2/3aab415f/logo1.png",
"assets": [{
"base": "udsm",
"symbol": "DSM",
"exponent": "6",
"coingecko_id": "",
"logo": "https://dl.airtable.com/.attachments/e8232a86dd06af4e0591ed300376f9b2/3aab415f/logo1.png"
}]
}
+17
View File
@@ -0,0 +1,17 @@
{
"chain_name": "dig",
"coingecko": "",
"api": "https://api-1-dig.notional.ventures",
"sdk_version": "0.44.5",
"coin_type": "118",
"min_tx_fee": "5000",
"addr_prefix": "dig",
"logo": "https://digchain.org/wp-content/uploads/2021/08/dig_lockup_800x800-cropped.png",
"assets": [{
"base": "udig",
"symbol": "DIG",
"exponent": "6",
"coingecko_id": "dig-chain",
"logo": "https://digchain.org/wp-content/uploads/2021/08/dig_lockup_800x800-cropped.png"
}]
}
+16 -1
View File
@@ -3,7 +3,22 @@
"coingecko": "e-money",
"api": "https://emoney.validator.network/api",
"addr_prefix": "emoney",
"coin_type": "118",
"min_tx_fee": "5000",
"logo": "https://dl.airtable.com/.attachments/276e4d6de567b073a5e400240d7d83e9/9bb49806/yoR2r25W_400x400.jpg",
"sdk_version": "0.42.10",
"excludes": "mint governance"
"excludes": "mint governance",
"assets": [{
"base": "ungm",
"symbol": "NGM",
"exponent": "6",
"coingecko_id": "emoney",
"logo": "https://dl.airtable.com/.attachments/276e4d6de567b073a5e400240d7d83e9/9bb49806/yoR2r25W_400x400.jpg"
},{
"base": "eeur",
"symbol": "EEUR",
"exponent": "6",
"coingecko_id": "e-money-eur",
"logo": "https://dl.airtable.com/.attachments/276e4d6de567b073a5e400240d7d83e9/9bb49806/yoR2r25W_400x400.jpg"
}]
}
+17
View File
@@ -0,0 +1,17 @@
{
"chain_name": "evmos",
"coingecko": "",
"api": ["https://rest.bd.evmos.org:1317", "https://evmos-api.skynetvalidators.com"],
"sdk_version": "0.45.1",
"coin_type": "60",
"min_tx_fee": "3000000000000000",
"addr_prefix": "evmos",
"logo": "https://ping.pub/logos/evmos.jpeg",
"assets": [{
"base": "aevmos",
"symbol": "evmos",
"exponent": "18",
"coingecko_id": "",
"logo": "https://ping.pub/logos/evmos.jpeg"
}]
}
+17
View File
@@ -0,0 +1,17 @@
{
"chain_name": "genesisL1",
"coingecko": "",
"api": "https://api.genesisl1.org",
"sdk_version": "0.42.4",
"coin_type": "118",
"min_tx_fee": "3000000000000000",
"addr_prefix": "genesis",
"logo": "/logos/genesisl1.png",
"assets": [{
"base": "aphoton",
"symbol": "PHOTON",
"exponent": "18",
"coingecko_id": "",
"logo": "/logos/genesisl1.png"
}]
}
+17
View File
@@ -0,0 +1,17 @@
{
"chain_name": "gravity-bridge",
"api": "https://gravitychain.io:1317",
"sdk_version": "0.44.5",
"coin_type": "60",
"min_tx_fee": "5000",
"addr_prefix": "gravity",
"excludes": "",
"logo": "https://dl.airtable.com/.attachments/1c18fd6110acea04da61c8f900ea0053/3241283d/gravitybridge.png",
"assets": [{
"base": "ugraviton",
"symbol": "GRAVITON",
"exponent": "6",
"coingecko_id": "",
"logo": "https://dl.airtable.com/.attachments/1c18fd6110acea04da61c8f900ea0053/3241283d/gravitybridge.png"
}]
}
+11 -3
View File
@@ -1,9 +1,17 @@
{
"chain_name": "injective",
"coingecko": "injective-protocol",
"api": "https://lcd.injective.network",
"sdk_version": "0.42.4",
"sdk_version": "v0.44.5",
"coin_type": "60",
"min_tx_fee": "5000",
"addr_prefix": "inj",
"excludes": "",
"logo": "https://dl.airtable.com/.attachments/e024faae112ae873d301f9e1e17a921c/3f3671f7/9pOKAlQ5_400x400.jpg"
"logo": "https://dl.airtable.com/.attachments/e024faae112ae873d301f9e1e17a921c/3f3671f7/9pOKAlQ5_400x400.jpg",
"assets": [{
"base": "inj",
"symbol": "INJ",
"exponent": "18",
"coingecko_id": "injective-protocol",
"logo": "https://dl.airtable.com/.attachments/e024faae112ae873d301f9e1e17a921c/3f3671f7/9pOKAlQ5_400x400.jpg"
}]
}
+10 -2
View File
@@ -1,9 +1,17 @@
{
"chain_name": "iris-network",
"coingecko": "iris-network",
"api": "https://iris.api.ping.pub",
"sdk_version": "0.42.4",
"coin_type": "118",
"min_tx_fee": "40000",
"addr_prefix": "iaa",
"excludes": "mint",
"logo": "https://dl.airtable.com/.attachments/2d6d51b1b262db00ecc51616ffc3bdf5/90ff00d0/IRISnet.svg"
"logo": "https://dl.airtable.com/.attachments/2d6d51b1b262db00ecc51616ffc3bdf5/90ff00d0/IRISnet.svg",
"assets": [{
"base": "uiris",
"symbol": "IRIS",
"exponent": "6",
"coingecko_id": "iris-network",
"logo": "https://dl.airtable.com/.attachments/2d6d51b1b262db00ecc51616ffc3bdf5/90ff00d0/IRISnet.svg"
}]
}
+12 -3
View File
@@ -1,8 +1,17 @@
{
"chain_name": "juno",
"coingecko": "juno-network",
"api": "https://juno.api.ping.pub",
"sdk_version": "0.42.4",
"api": "https://lcd-juno.itastakers.com",
"sdk_version": "0.44.5",
"coin_type": "118",
"min_tx_fee": "3000",
"addr_prefix": "juno",
"logo": "https://dl.airtable.com/.attachments/0f66137c6fb2868000d5a1e214c9ae3d/75a9c5bc/S3c2V3Xd_400x400.jpg"
"logo": "https://dl.airtable.com/.attachments/0f66137c6fb2868000d5a1e214c9ae3d/75a9c5bc/S3c2V3Xd_400x400.jpg",
"assets": [{
"base": "ujuno",
"symbol": "JUNO",
"exponent": "6",
"coingecko_id": "juno-network",
"logo": "https://dl.airtable.com/.attachments/0f66137c6fb2868000d5a1e214c9ae3d/75a9c5bc/S3c2V3Xd_400x400.jpg"
}]
}
+11 -2
View File
@@ -2,7 +2,16 @@
"chain_name": "kava",
"coingecko": "kava",
"api": "https://api.data.kava.io",
"sdk_version": "0.39.2",
"sdk_version": "0.44.5",
"coin_type": "118",
"min_tx_fee": "5000",
"addr_prefix": "kava",
"logo": "https://dl.airtable.com/.attachments/f25737491bd0034240093a7b4e039b15/afec77ff/logo.png"
"logo": "https://dl.airtable.com/.attachments/f25737491bd0034240093a7b4e039b15/afec77ff/logo.png",
"assets": [{
"base": "ukava",
"symbol": "KAVA",
"exponent": "6",
"coingecko_id": "kava",
"logo": "https://dl.airtable.com/.attachments/f25737491bd0034240093a7b4e039b15/afec77ff/logo.png"
}]
}
+11 -3
View File
@@ -1,8 +1,16 @@
{
"chain_name": "kichain",
"coingecko": "ki",
"api": "https://ki.api.ping.pub",
"api": ["https://api-mainnet.blockchain.ki", "https://ki.api.ping.pub"],
"sdk_version": "0.42.10",
"coin_type": "118",
"min_tx_fee": "3000",
"addr_prefix": "ki",
"logo": "https://dl.airtable.com/.attachments/b1f670d31bf69d7ca9906df8437d91a7/b2667ad1/ki.png"
"logo": "https://dl.airtable.com/.attachments/b1f670d31bf69d7ca9906df8437d91a7/b2667ad1/ki.png",
"assets": [{
"base": "uxki",
"symbol": "XKI",
"exponent": "6",
"coingecko_id": "ki",
"logo": "https://dl.airtable.com/.attachments/b1f670d31bf69d7ca9906df8437d91a7/b2667ad1/ki.png"
}]
}
+10 -1
View File
@@ -3,6 +3,15 @@
"coingecko": "likecoin",
"api": "https://mainnet-node.like.co",
"sdk_version": "0.42.0",
"coin_type": "118",
"min_tx_fee": "3000",
"addr_prefix": "cosmos",
"logo": "https://dl.airtable.com/.attachments/d51ad30b75593517d7d79f08b9e4dad0/5603273b/likecoin.png"
"logo": "https://dl.airtable.com/.attachments/d51ad30b75593517d7d79f08b9e4dad0/5603273b/likecoin.png",
"assets": [{
"base": "nanolike",
"symbol": "LIKE",
"exponent": "9",
"coingecko_id": "likecoin",
"logo": "https://dl.airtable.com/.attachments/d51ad30b75593517d7d79f08b9e4dad0/5603273b/likecoin.png"
}]
}
+17
View File
@@ -0,0 +1,17 @@
{
"chain_name": "lum-network",
"coingecko": "",
"api": "https://node0.mainnet.lum.network/rest",
"sdk_version": "0.44.5",
"coin_type": "880",
"min_tx_fee": "5000",
"addr_prefix": "lum",
"logo": "https://ipfs.infura.io/ipfs/QmWwKRnkHantvhoFx9serWaWKBUG6gfhSYN3SHdAv1jmKY",
"assets": [{
"base": "ulum",
"symbol": "LUM",
"exponent": "6",
"coingecko_id": "",
"logo": "https://ipfs.infura.io/ipfs/QmWwKRnkHantvhoFx9serWaWKBUG6gfhSYN3SHdAv1jmKY"
}]
}
+16
View File
@@ -0,0 +1,16 @@
{
"chain_name": "microtick",
"api": "https://lcd.microtick.zone",
"sdk_version": "0.42.9",
"coin_type": "118",
"min_tx_fee": "5000",
"addr_prefix": "micro",
"logo": "https://dl.airtable.com/.attachments/229a8d771fccc46b6730a7bc75d46e15/a3cf3543/microtick.png",
"assets": [{
"base": "utick",
"symbol": "TICK",
"exponent": "6",
"coingecko_id": "",
"logo": "https://dl.airtable.com/.attachments/229a8d771fccc46b6730a7bc75d46e15/a3cf3543/microtick.png"
}]
}
-7
View File
@@ -1,7 +0,0 @@
{
"chain_name": "neuron",
"api": "https://neuron-1.api.ping.pub",
"sdk_version": "0.42.0",
"addr_prefix": "game",
"logo": "https://dl.airtable.com/.attachments/47116e2e2234b2dd979d7ed9f9df22c9/0c507d61/cosmos-game.png"
}
+10 -1
View File
@@ -3,7 +3,16 @@
"coingecko": "okexchain",
"api": "https://exchainrpc.okex.org/okexchain/v1",
"sdk_version": "0.39.2",
"coin_type": "118",
"min_tx_fee": "800",
"addr_prefix": "ex",
"logo": "https://dl.airtable.com/.attachments/4620a173477efece7f459a3d6fc770c0/9f6618ad/OKexchain.svg",
"unload_module": ["minting", "slashing"]
"unload_module": ["minting", "slashing"],
"assets": [{
"base": "okt",
"symbol": "okt",
"exponent": "0",
"coingecko_id": "okexchain",
"logo": "https://dl.airtable.com/.attachments/4620a173477efece7f459a3d6fc770c0/9f6618ad/OKexchain.svg"
}]
}
+18 -3
View File
@@ -1,8 +1,23 @@
{
"chain_name": "osmosis",
"coingecko": "osmosis",
"api": "https://lcd-osmosis.keplr.app",
"sdk_version": "0.42.5",
"api": ["https://lcd-osmosis.blockapsis.com", "https://osmo.api.ping.pub"],
"sdk_version": "0.44.5",
"coin_type": "118",
"min_tx_fee": "800",
"addr_prefix": "osmo",
"logo": "https://dl.airtable.com/.attachments/4ef30ec4008bc86cc3c0f74a6bb84050/0eeb4d64/aQ5W3zaT_400x400.jpg"
"logo": "https://dl.airtable.com/.attachments/4ef30ec4008bc86cc3c0f74a6bb84050/0eeb4d64/aQ5W3zaT_400x400.jpg",
"assets": [{
"base": "uosmo",
"symbol": "OSMO",
"exponent": "6",
"coingecko_id": "osmosis",
"logo": "https://dl.airtable.com/.attachments/4ef30ec4008bc86cc3c0f74a6bb84050/0eeb4d64/aQ5W3zaT_400x400.jpg"
},{
"base": "uion",
"symbol": "ION",
"exponent": "6",
"coingecko_id": "ion",
"logo": "https://dl.airtable.com/.attachments/4ef30ec4008bc86cc3c0f74a6bb84050/0eeb4d64/aQ5W3zaT_400x400.jpg"
}]
}
+10 -1
View File
@@ -3,6 +3,15 @@
"coingecko": "persistence",
"api": "https://rest.core.persistence.one",
"sdk_version": "0.42.4",
"coin_type": "750",
"min_tx_fee": "3000",
"addr_prefix": "persistence",
"logo": "https://dl.airtable.com/.attachments/23178be773dc4de133ca4c07056aba1c/6e855850/persistence.png"
"logo": "https://dl.airtable.com/.attachments/23178be773dc4de133ca4c07056aba1c/6e855850/persistence.png",
"assets": [{
"base": "uxprt",
"symbol": "XPRT",
"exponent": "6",
"coingecko_id": "persistence",
"logo": "https://dl.airtable.com/.attachments/23178be773dc4de133ca4c07056aba1c/6e855850/persistence.png"
}]
}
+17
View File
@@ -0,0 +1,17 @@
{
"chain_name": "provenance",
"coingecko": "",
"api": "https://api.provenance.io",
"sdk_version": "0.44.3",
"coin_type": "505",
"min_tx_fee": "400000000",
"addr_prefix": "pb",
"logo": "https://raw.githubusercontent.com/provenance-io/provenance/main/docs/pio.svg",
"assets": [{
"base": "nhash",
"symbol": "HASH",
"exponent": "9",
"coingecko_id": "",
"logo": "https://raw.githubusercontent.com/provenance-io/provenance/main/docs/pio.svg"
}]
}
+11 -2
View File
@@ -2,7 +2,16 @@
"chain_name": "regen",
"coingecko": "regen",
"api": "https://regen.api.ping.pub",
"sdk_version": "0.42.4",
"sdk_version": "0.44.3",
"coin_type": "118",
"min_tx_fee": "3000",
"addr_prefix": "regen",
"logo": "https://dl.airtable.com/.attachments/0c988f2cd6a7d4fec95f0a3bc87b45da/c7a9f8ba/regen-brandmark-48.svg"
"logo": "https://dl.airtable.com/.attachments/0c988f2cd6a7d4fec95f0a3bc87b45da/c7a9f8ba/regen-brandmark-48.svg",
"assets": [{
"base": "uregen",
"symbol": "REGEN",
"exponent": "6",
"coingecko_id": "regen",
"logo": "https://dl.airtable.com/.attachments/0c988f2cd6a7d4fec95f0a3bc87b45da/c7a9f8ba/regen-brandmark-48.svg"
}]
}
+16
View File
@@ -0,0 +1,16 @@
{
"chain_name": "rizon",
"api": ["https://rizon.api.ping.pub"],
"sdk_version": "v0.42.9",
"coin_type": "118",
"min_tx_fee": "8000",
"assets": [{
"base": "uatolo",
"symbol": "ATOLO",
"exponent": "6",
"coingecko_id": "rizon",
"logo": "https://ping.pub/logos/rizon.svg"
}],
"addr_prefix": "rizon",
"logo": "https://ping.pub/logos/rizon.svg"
}
+10 -1
View File
@@ -3,6 +3,15 @@
"coingecko": "secret",
"api": "https://api.scrt.network",
"sdk_version": "0.33.8",
"coin_type": "529",
"min_tx_fee": "5000",
"addr_prefix": "secret",
"logo": "https://dl.airtable.com/.attachments/b95ce1905e5327924ffdcb6d57c55b66/7e2ad353/logo.png"
"logo": "https://dl.airtable.com/.attachments/b95ce1905e5327924ffdcb6d57c55b66/7e2ad353/logo.png",
"assets": [{
"base": "uscrt",
"symbol": "SCRT",
"exponent": "6",
"coingecko_id": "secret",
"logo": "https://dl.airtable.com/.attachments/b95ce1905e5327924ffdcb6d57c55b66/7e2ad353/logo.png"
}]
}
+10 -1
View File
@@ -3,6 +3,15 @@
"coingecko": "sentinel",
"api": "https://lcd.sentinel.co",
"sdk_version": "0.42.6",
"coin_type": "750",
"min_tx_fee": "8000",
"addr_prefix": "sent",
"logo": "https://dl.airtable.com/.attachments/321491a9da1680faa670fa81569b02b0/37621c88/unnamed.png"
"logo": "https://dl.airtable.com/.attachments/321491a9da1680faa670fa81569b02b0/37621c88/unnamed.png",
"assets": [{
"base": "udvpn",
"symbol": "DVPN",
"exponent": "6",
"coingecko_id": "sentinel",
"logo": "https://dl.airtable.com/.attachments/321491a9da1680faa670fa81569b02b0/37621c88/unnamed.png"
}]
}
+10 -1
View File
@@ -3,6 +3,15 @@
"coingecko": "sifchain",
"api": "https://api.sifchain.finance",
"sdk_version": "0.42.6",
"coin_type": "118",
"min_tx_fee": "8000",
"addr_prefix": "sif",
"logo": "https://dl.airtable.com/.attachments/990cb076d7566e53e976c1fa69d60b09/3c05e786/71144030.jpeg"
"logo": "https://dl.airtable.com/.attachments/990cb076d7566e53e976c1fa69d60b09/3c05e786/71144030.jpeg",
"assets": [{
"base": "rowan",
"symbol": "ROWAN",
"exponent": "18",
"coingecko_id": "sifchain",
"logo": "https://dl.airtable.com/.attachments/990cb076d7566e53e976c1fa69d60b09/3c05e786/71144030.jpeg"
}]
}
+11 -3
View File
@@ -1,8 +1,16 @@
{
"chain_name": "stargaze",
"coingecko": "stargaze-protocol",
"api": "https://rest.stargaze.publicawesome.dev",
"api": ["https://rest.stargaze-apis.com", "https://rest.stargaze.publicawesome.dev"],
"sdk_version": "0.44.3",
"coin_type": "118",
"min_tx_fee": "800",
"addr_prefix": "stars",
"logo": "https://dl.airtable.com/.attachments/79f2b74422c63b3fdb0310407d9cc990/5f4f1dd8/RGw3ZaVT_400x400.png"
"logo": "https://dl.airtable.com/.attachments/79f2b74422c63b3fdb0310407d9cc990/5f4f1dd8/RGw3ZaVT_400x400.png",
"assets": [{
"base": "ustars",
"symbol": "STARS",
"exponent": "6",
"coingecko_id": "stargaze",
"logo": "https://dl.airtable.com/.attachments/79f2b74422c63b3fdb0310407d9cc990/5f4f1dd8/RGw3ZaVT_400x400.png"
}]
}
+10 -1
View File
@@ -3,6 +3,15 @@
"coingecko": "starname",
"api": "https://api.iov-mainnet-ibc.iov.one",
"sdk_version": "0.42.6",
"coin_type": "234",
"min_tx_fee": "8000",
"addr_prefix": "star",
"logo": "https://dl.airtable.com/.attachments/69f75a1b45803d70d8ef69f7f83198e1/d991d407/ZUZfz7Th_400x400.jpg"
"logo": "https://dl.airtable.com/.attachments/69f75a1b45803d70d8ef69f7f83198e1/d991d407/ZUZfz7Th_400x400.jpg",
"assets": [{
"base": "uiov",
"symbol": "IOV",
"exponent": "6",
"coingecko_id": "starname",
"logo": "https://dl.airtable.com/.attachments/69f75a1b45803d70d8ef69f7f83198e1/d991d407/ZUZfz7Th_400x400.jpg"
}]
}
+130 -1
View File
@@ -3,6 +3,135 @@
"coingecko": "terra-luna",
"api": "https://fcd.terra.dev",
"sdk_version": "0.44.2",
"coin_type": "330",
"min_tx_fee": "5000",
"addr_prefix": "terra",
"logo": "https://dl.airtable.com/.attachments/275a6cbdbdc911856556e716a60d6ec4/87addd7f/terra.jpg"
"logo": "https://dl.airtable.com/.attachments/275a6cbdbdc911856556e716a60d6ec4/87addd7f/terra.jpg",
"assets": [{
"base": "uluna",
"symbol": "LUNA",
"exponent": "6",
"coingecko_id": "terra-luna",
"logo": "https://dl.airtable.com/.attachments/275a6cbdbdc911856556e716a60d6ec4/87addd7f/terra.jpg"
},{
"base": "uusd",
"symbol": "UST",
"exponent": "6",
"coingecko_id": "terrausd",
"logo": "https://raw.githubusercontent.com/osmosis-labs/assetlists/main/images/ust.png"
},{
"base": "ukrw",
"symbol": "KRT",
"exponent": "6",
"coingecko_id": "terrakrw",
"logo": "https://raw.githubusercontent.com/osmosis-labs/assetlists/main/images/krt.png"
},{
"base": "cw20:terra183cvzy6knvva6mpvzcq86uyfxw0nd4925m0d0m",
"symbol": "WHALE",
"exponent": "6",
"coingecko_id": "white-whale",
"logo": "https://www.whitewhale.money/tokenlogo.png"
},{
"base": "uaud",
"symbol": "AUD",
"exponent": "6",
"coingecko_id": "",
"logo": "https://www.whitewhale.money/tokenlogo.png"
},{
"base": "ucad",
"symbol": "CAD",
"exponent": "6",
"coingecko_id": "",
"logo": "https://www.whitewhale.money/tokenlogo.png"
},{
"base": "uchf",
"symbol": "CHF",
"exponent": "6",
"coingecko_id": "",
"logo": "https://www.whitewhale.money/tokenlogo.png"
},{
"base": "ucny",
"symbol": "CNY",
"exponent": "6",
"coingecko_id": "",
"logo": "https://www.whitewhale.money/tokenlogo.png"
},{
"base": "udkk",
"symbol": "DKK",
"exponent": "6",
"coingecko_id": "",
"logo": "https://www.whitewhale.money/tokenlogo.png"
},{
"base": "ueur",
"symbol": "EUR",
"exponent": "6",
"coingecko_id": "",
"logo": "https://www.whitewhale.money/tokenlogo.png"
},{
"base": "ugbp",
"symbol": "GBP",
"exponent": "6",
"coingecko_id": "",
"logo": "https://www.whitewhale.money/tokenlogo.png"
},{
"base": "uhkd",
"symbol": "HKD",
"exponent": "6",
"coingecko_id": "",
"logo": "https://www.whitewhale.money/tokenlogo.png"
},{
"base": "uidr",
"symbol": "IDR",
"exponent": "6",
"coingecko_id": "",
"logo": "https://www.whitewhale.money/tokenlogo.png"
},{
"base": "uinr",
"symbol": "INR",
"exponent": "6",
"coingecko_id": "",
"logo": "https://www.whitewhale.money/tokenlogo.png"
},{
"base": "ujpy",
"symbol": "JPY",
"exponent": "6",
"coingecko_id": "",
"logo": "https://www.whitewhale.money/tokenlogo.png"
},{
"base": "umnt",
"symbol": "MNT",
"exponent": "6",
"coingecko_id": "",
"logo": "https://www.whitewhale.money/tokenlogo.png"
},{
"base": "uphp",
"symbol": "PHP",
"exponent": "6",
"coingecko_id": "",
"logo": "https://www.whitewhale.money/tokenlogo.png"
},{
"base": "usdr",
"symbol": "SDR",
"exponent": "6",
"coingecko_id": "",
"logo": "https://www.whitewhale.money/tokenlogo.png"
},{
"base": "usek",
"symbol": "SEK",
"exponent": "6",
"coingecko_id": "",
"logo": "https://www.whitewhale.money/tokenlogo.png"
},{
"base": "usgd",
"symbol": "SGD",
"exponent": "6",
"coingecko_id": "",
"logo": "https://www.whitewhale.money/tokenlogo.png"
},{
"base": "uthb",
"symbol": "THB",
"exponent": "6",
"coingecko_id": "",
"logo": "https://www.whitewhale.money/tokenlogo.png"
}]
}
+16
View File
@@ -0,0 +1,16 @@
{
"chain_name": "umee",
"api": ["https://api.blue.main.network.umee.cc", "https://api.bottlenose.main.network.umee.cc", "https://api.apollo.main.network.umee.cc", "https://api.aphrodite.main.network.umee.cc", "https://api.artemis.main.network.umee.cc", "https://api.athena.main.network.umee.cc", "https://api.beaked.main.network.umee.cc"],
"sdk_version": "0.45.1",
"coin_type": "118",
"min_tx_fee": "8000",
"addr_prefix": "umee",
"logo": "https://ping.pub/logos/umee.png",
"assets": [{
"base": "uumee",
"symbol": "UMEE",
"exponent": "6",
"coingecko_id": "",
"logo": "https://ping.pub/logos/umee.png"
}]
}
+19
View File
@@ -0,0 +1,19 @@
{
"chain_id":"origin_1170-1",
"chain_name": "Uptick Origin",
"api": "https://rest.origin.uptick.network",
"sdk_version": "v0.46.9",
"coin_type": "60",
"min_tx_fee": "40000",
"addr_prefix": "uptick",
"logo": "https://file.uptick.network/file/image/dNOLswid7dGe29CFhPp3Ow.png",
"assets": [
{
"base": "auoc",
"symbol": "UOC",
"exponent": "18",
"coingecko_id": "Uptick Origin",
"logo": "https://file.uptick.network/file/image/dNOLswid7dGe29CFhPp3Ow.png"
}
]
}
+10 -1
View File
@@ -3,6 +3,15 @@
"coingecko": "vidulum",
"api": "https://mainnet-lcd.vidulum.app",
"sdk_version": "0.44.0",
"coin_type": "370",
"min_tx_fee": "8000",
"addr_prefix": "vdl",
"logo": "/logos/VDL.png"
"logo": "https://ping.pub/logos/VDL.png",
"assets": [{
"base": "uvdl",
"symbol": "VDL",
"exponent": "6",
"coingecko_id": "vidulum",
"logo": "https://ping.pub/logos/VDL.png"
}]
}
+7
View File
@@ -0,0 +1,7 @@
{
"chain_name": "arkh",
"api":"https://asc-blockchain-api.arkhadian.com",
"sdk_version": "0.44.1",
"addr_prefix": "arkh",
"logo": "https://www.arkhadian.com/static/images/600-prism_ejAjDRh.jpg"
}
+8
View File
@@ -0,0 +1,8 @@
{
"chain_name": "evmos",
"coingecko": "evmos",
"api": "https://testnet-evmos.api.ping.pub",
"sdk_version": "0.42.4",
"addr_prefix": "evmos",
"logo": "https://dl.airtable.com/.attachments/53c13408739d92d9eada6bda12d0a50a/4c2f1c8c/Hgl3o3VL_400x400.jpg"
}
+8
View File
@@ -0,0 +1,8 @@
{
"chain_name": "juno",
"coingecko": "juno-network",
"api": "https://api.uni.junonetwork.io",
"sdk_version": "0.42.4",
"addr_prefix": "juno",
"logo": "https://dl.airtable.com/.attachments/0f66137c6fb2868000d5a1e214c9ae3d/75a9c5bc/S3c2V3Xd_400x400.jpg"
}
+7
View File
@@ -0,0 +1,7 @@
{
"chain_name": "provenance",
"api": "https://api.test.provenance.io",
"sdk_version": "0.44.3",
"addr_prefix": "tp",
"logo": "https://raw.githubusercontent.com/provenance-io/provenance/main/docs/pio.svg"
}
+5
View File
@@ -28,6 +28,10 @@
"injective": "Injective Protocal",
"vidulum": "Vidulum",
"kichain": "KI Chain",
"genesisL1": "Genesis L1",
"microtick": "Microtick",
"odin": "ODIN",
"chihuahua": "CHIHUAHUA",
"staking": "Staking",
"governance": "Governance",
@@ -50,6 +54,7 @@
"proposal_content": "Content",
"proposal_total_deposit": "Total Deposit",
"voting_time": "Voting Time",
"upgrade_time": "Estimated Upgrade Time:",
"btn_vote": "Vote",
"btn_deposit": "Deposit",
+77 -27
View File
@@ -48,10 +48,35 @@
/></b-link>
</b-media-aside>
<b-media-body class="my-auto">
<h6 class="mb-0 text-uppercase">
{{ selected_chain.chain_name }}
<h6 class="mb-0 ">
<span class="text-uppercase">{{ chainid || selected_chain.chain_name }}</span>
</h6>
<small v-b-tooltip.hover.bottom="'Data Provider'">{{ selected_chain.api }} ({{ selected_chain.sdk_version || '-' }})</small>
<small id="data-provider">
{{ currentApi }} ({{ selected_chain.sdk_version || '-' }})
<b-dropdown
class="ml-0"
variant="flat-primary"
no-caret
toggle-class="p-0"
right
sm
>
<template #button-content>
<feather-icon
icon="RepeatIcon"
size="12"
class="cursor-pointer"
/>
</template>
<b-dropdown-item
v-for="(item, i) in apiOptions"
:key="item"
@click="change(i)"
>
{{ item }}
</b-dropdown-item>
</b-dropdown>
</small>
</b-media-body>
</b-media>
</div>
@@ -62,16 +87,7 @@
<dark-Toggler class="d-none d-lg-block" />
<search-bar />
<locale />
<b-button
v-ripple.400="'rgba(255, 255, 255, 0.15)'"
variant="primary"
class="btn-icon"
:to="{ name: 'accounts' }"
>
<feather-icon icon="KeyIcon" />
<span class="align-middle ml-25">{{ walletName }}</span>
</b-button>
<!-- <b-dropdown
<b-dropdown
class="ml-1"
variant="link"
no-caret
@@ -85,11 +101,15 @@
variant="primary"
class="btn-icon"
>
<feather-icon icon="UserIcon" />
<feather-icon icon="KeyIcon" />
{{ walletName }}
</b-button>
</template>
<b-dropdown-item :to="{ name: 'portfolio' }">
<b-dropdown-item
:to="{ name: 'portfolio' }"
class="d-none"
>
<feather-icon
icon="PieChartIcon"
size="16"
@@ -105,22 +125,29 @@
<span class="align-middle ml-50">Accounts</span>
</b-dropdown-item>
<b-dropdown-item :to="{ name: 'addresses' }">
<b-dropdown-item :to="{ name: 'delegations' }">
<feather-icon
icon="BookOpenIcon"
size="16"
/>
<span class="align-middle ml-50">Address Book</span>
<span class="align-middle ml-50">My Delegations</span>
</b-dropdown-item>
<b-dropdown-item :to="{ name: 'setting' }">
<b-dropdown-item :to="`/${selected_chain.chain_name}/uptime/my`">
<feather-icon
icon="SettingsIcon"
icon="AirplayIcon"
size="16"
/>
<span class="align-middle ml-50">Setting</span>
<span class="align-middle ml-50">My Validators</span>
</b-dropdown-item>
</b-dropdown> -->
<b-dropdown-item :to="`/wallet/transactions`">
<feather-icon
icon="LayersIcon"
size="16"
/>
<span class="align-middle ml-50">My Transactions</span>
</b-dropdown-item>
</b-dropdown>
</b-navbar-nav>
</div>
</template>
@@ -128,14 +155,14 @@
<script>
import {
BLink, BNavbarNav, BMedia, BMediaAside, BAvatar, BMediaBody, VBTooltip, BButton,
BDropdown, BDropdownItem,
} from 'bootstrap-vue'
import Ripple from 'vue-ripple-directive'
import DarkToggler from '@core/layouts/components/app-navbar/components/DarkToggler.vue'
import Locale from '@core/layouts/components/app-navbar/components/Locale.vue'
import SearchBar from '@core/layouts/components/app-navbar/components/SearchBar.vue'
// import CartDropdown from '@core/layouts/components/app-navbar/components/CartDropdown.vue'
import store from '@/store'
import { getLocalAccounts, timeIn, toDay } from '@/libs/data'
import { getLocalAccounts, timeIn, toDay } from '@/libs/utils'
// import UserDropdown from '@core/layouts/components/app-navbar/components/UserDropdown.vue'
export default {
@@ -147,6 +174,8 @@ export default {
BMediaAside,
BMediaBody,
BButton,
BDropdown,
BDropdownItem,
// Navbar Components
DarkToggler,
@@ -169,6 +198,8 @@ export default {
return {
variant: 'success',
tips: 'Synced',
index: 0,
chainid: '',
}
},
computed: {
@@ -178,11 +209,21 @@ export default {
},
selected_chain() {
this.block()
return store.state.chains.selected
return this.$store.state.chains.selected
},
chainVariant() {
return this.variant
},
currentApi() {
return this.index + 1 > this.apiOptions.length ? this.apiOptions[0] : this.apiOptions[this.index]
},
apiOptions() {
const conf = this.$store.state.chains.selected
if (Array.isArray(conf.api)) {
return conf.api
}
return [conf.api]
},
},
mounted() {
const accounts = Object.keys(getLocalAccounts() || {})
@@ -191,13 +232,22 @@ export default {
}
},
methods: {
change(v) {
this.index = v
const conf = this.$store.state.chains.selected
localStorage.setItem(`${conf.chain_name}-api-index`, v)
},
block() {
store.commit('setHeight', 0)
const conf = this.$store.state.chains.selected
const s = localStorage.getItem(`${conf.chain_name}-api-index`) || 0
this.index = Number(s)
this.$store.commit('setHeight', 0)
this.$http.getLatestBlock().then(block => {
store.commit('setHeight', Number(block.block.header.height))
this.chainid = block.block.header.chain_id
this.$store.commit('setHeight', Number(block.block.header.height))
if (timeIn(block.block.header.time, 1, 'm')) {
this.variant = 'danger'
this.tips = `Halted ${toDay(block.block.header.time, 'from')}, Height: ${store.state.chains.height} `
this.tips = `Halted ${toDay(block.block.header.time, 'from')}, Height: ${this.$store.state.chains.height} `
} else {
this.variant = 'success'
this.tips = 'Synced'
+26 -1
View File
@@ -338,7 +338,6 @@ function createDefaultTypes(prefix) {
"/ibc.applications.transfer.v1.MsgTransfer": {
aminoType: "cosmos-sdk/MsgTransfer",
toAmino: ({ sourcePort, sourceChannel, token, sender, receiver, timeoutHeight, timeoutTimestamp, }) => {
console.log('toAmino', sourceChannel, sourcePort)
var _a, _b, _c;
return ({
source_port: sourcePort,
@@ -370,6 +369,31 @@ function createDefaultTypes(prefix) {
timeoutTimestamp: long_1.default.fromString(timeout_timestamp || "0", true),
}),
},
// osmosis
"/osmosis.gamm.v1beta1.MsgSwapExactAmountIn": {
aminoType: "cosmos-sdk/MsgSwapExactAmountIn",
toAmino: ({ sender, routes, tokenIn, tokenOutMinAmount}) => {
utils_1.assertDefinedAndNotNull(tokenIn.amount, "missing amount");
return {
sender,
routes: routes.map(({poolId, tokenOutDenom}) => ({pool_id: poolId, token_out_denom: tokenOutDenom})),
token_in: {
amount: tokenIn.amount,
denom: tokenIn.denom,
},
token_out_min_amount: tokenOutMinAmount,
};
},
fromAmino: ({ sender, routes, token_in, token_out_min_amount }) => ({
sender,
routes: routes.map(({pool_id, token_out_denom})=>({poolId: long_1.default.fromString(pool_id), tokenOutDenom: token_out_denom})),
tokenIn: {
amount: long_1.default.fromString(token_in.amount),
denom: token_in.denom,
},
tokenOutMinAmount: long_1.default.fromString(token_out_min_amount),
}),
},
};
}
/**
@@ -385,6 +409,7 @@ class AminoTypes {
this.register = Object.assign(Object.assign({}, filteredDefaultTypes), additions);
}
toAmino({ typeUrl, value }) {
console.log('typeurl:', typeUrl, value)
const converter = this.register[typeUrl];
if (!converter) {
throw new Error("Type URL does not exist in the Amino message type register. " +
-1
View File
@@ -10,6 +10,5 @@ export { default as Block } from './block'
export { default as ValidatorDistribution } from './validator-distribution'
export { default as StakingDelegation } from './staking-delegation'
export { default as WrapStdTx } from './wrapstdtx'
export * from './data'
export default class Test {}
+5 -7
View File
@@ -1,5 +1,3 @@
import { percent } from './data'
export default class ProposalTally {
constructor() {
this.total = 0
@@ -17,11 +15,11 @@ export default class ProposalTally {
} else {
this.total = total
}
this.yes = percent(Number(element.yes) / this.total)
this.no = percent(Number(element.no) / this.total)
this.veto = percent(Number(element.no_with_veto) / this.total)
this.abstain = percent(Number(element.abstain) / this.total)
this.turnout = percent(subtotal / this.total)
this.yes = Number(element.yes) / this.total
this.no = Number(element.no) / this.total
this.veto = Number(element.no_with_veto) / this.total
this.abstain = Number(element.abstain) / this.total
this.turnout = subtotal / this.total
return this
}
+19 -11
View File
@@ -1,5 +1,4 @@
import compareVersions from 'compare-versions'
import { toDay, formatToken } from './data'
import ProposalTally from './proposal-tally'
export default class Proposal {
@@ -12,9 +11,9 @@ export default class Proposal {
this.title = '-'
this.description = '-'
this.tally = new ProposalTally()
this.submit_time = ' - '
this.submit_time = '0000-00-00'
this.voting_end_time = '0000-00-00'
this.voting_start_time = '-'
this.voting_start_time = '0000-00-00'
this.total_deposit = '-'
this.contents = null
}
@@ -22,17 +21,20 @@ export default class Proposal {
init(element, total) {
this.element = element
this.id = element.id
this.id = element.proposal_id || element.id
this.status = element.status
this.type = element.content.type
this.title = element.content.value.title
this.description = element.content.value.description
this.tally = new ProposalTally().init(element.final_tally_result, total)
this.submit_time = toDay(element.submit_time, 'date')
this.voting_end_time = toDay(element.voting_end_time, 'date')
this.voting_start_time = toDay(element.voting_start_time, 'date')
this.total_deposit = formatToken(element.total_deposit[0])
this.contents = element.content.value
this.submit_time = element.submit_time
this.voting_end_time = element.voting_end_time
this.voting_start_time = element.voting_start_time
// eslint-disable-next-line prefer-destructuring
this.total_deposit = element.total_deposit[0]
this.contents = element.content.value || element.content
if (this.contents) {
this.title = this.contents.title
this.description = this.contents.description
}
return this
}
@@ -64,6 +66,12 @@ export default class Proposal {
}
if (String(this.status).indexOf('PASSED') > -1) {
this.status = 3
} else if (String(this.status).indexOf('VOTING') > -1) {
this.status = 2
} else if (String(this.status).indexOf('REJECTED') > -1) {
this.status = 4
} else if (String(this.status).indexOf('DEPOSIT') > -1) {
this.status = 1
}
}
}
+9 -5
View File
@@ -1,8 +1,9 @@
/* eslint-disable camelcase */
import { SigningStargateClient } from '@cosmjs/stargate'
import { MsgTransfer } from './msg-transfer'
// import { AminoTypes } from './aminotypes'
// import { MsgTransfer } from './msg-transfer'
import { AminoTypes } from './aminotypes'
import { MsgSwapExactAmountIn } from '../msg'
const amino_1 = require('@cosmjs/amino')
const encoding_1 = require('@cosmjs/encoding')
@@ -15,11 +16,11 @@ export default class PingWalletClient extends SigningStargateClient {
static async offline(signer, options = {}) {
const instance = new PingWalletClient(undefined, signer, options)
instance.registry.register('/ibc.applications.transfer.v1.MsgTransfer', MsgTransfer)
instance.registry.register('/osmosis.gamm.v1beta1.MsgSwapExactAmountIn', MsgSwapExactAmountIn)
// console.log('registory:', instance.registry, AminoTypes)
// const { aminoTypes = new AminoTypes({ prefix: options.prefix }) } = options
// instance.aminoTypes = aminoTypes
const { aminoTypes = new AminoTypes({ prefix: options.prefix }) } = options
instance.aminoTypes = aminoTypes
// console.log('aminoType:', instance.aminoTypes)
return instance
}
@@ -32,13 +33,16 @@ export default class PingWalletClient extends SigningStargateClient {
}
const pubkey = proto_signing_1.encodePubkey(amino_1.encodeSecp256k1Pubkey(accountFromSigner.pubkey))
const signMode = signing_1.SignMode.SIGN_MODE_LEGACY_AMINO_JSON
// console.log('messages:', messages)
const msgs = messages.map(msg => this.aminoTypes.toAmino(msg))
// console.log('msgs:', msgs)
const signDoc = amino_1.makeSignDoc(msgs, fee, chainId, memo, accountNumber, sequence)
const { signature, signed } = await this.signer.signAmino(signerAddress, signDoc)
const signedTxBody = {
messages: signed.msgs.map(msg => this.aminoTypes.fromAmino(msg)),
memo: signed.memo,
}
// console.log(signedTxBody)
const signedTxBodyEncodeObject = {
typeUrl: '/cosmos.tx.v1beta1.TxBody',
value: signedTxBody,
+1 -3
View File
@@ -1,5 +1,3 @@
import { percent } from './data'
export default class StakingPool {
constructor() {
this.element = null
@@ -19,6 +17,6 @@ export default class StakingPool {
}
bondedRatio() {
return percent((this.bondedToken * 100) / this.total())
return (this.bondedToken * 100) / this.total()
}
}
+72 -42
View File
@@ -7,7 +7,7 @@ import { toBase64 } from '@cosmjs/encoding'
import {
Proposal, ProposalTally, Proposer, StakingPool, Votes, Deposit,
Validator, StakingParameters, Block, ValidatorDistribution, StakingDelegation, WrapStdTx, getUserCurrency,
} from './data'
} from './utils'
import OsmosAPI from './osmos'
function commonProcess(res) {
@@ -26,6 +26,13 @@ export function keybase(identity) {
export default class ChainFetch {
constructor() {
this.osmosis = new OsmosAPI()
this.EndpointVersion = {
certik: 'v1alpha1',
}
}
getEndpointVersion() {
return this.EndpointVersion[this.config.chain_name] || 'v1beta1'
}
getSelectedConfig() {
@@ -64,8 +71,8 @@ export default class ChainFetch {
return this.get(`/blocks/${height}`, config).then(data => Block.create(data))
}
async getSlashingSigningInfo() {
return this.get('/cosmos/slashing/v1beta1/signing_infos')
async getSlashingSigningInfo(config = null) {
return this.get('/cosmos/slashing/v1beta1/signing_infos?pagination.limit=500', config)
}
async getTxs(hash) {
@@ -133,14 +140,22 @@ export default class ChainFetch {
})
}
async getValidatorList() {
return this.get('/staking/validators').then(data => {
async getValidatorList(config = null) {
return this.get('/staking/validators', config).then(data => {
const vals = commonProcess(data).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)
const vals = result.validators ? result.validators : result
return vals.map(i => new Validator().init(i))
})
}
async getValidatorListByHeight(height) {
return this.get(`/validatorsets/${height}`).then(data => commonProcess(data))
}
@@ -225,7 +240,8 @@ export default class ChainFetch {
}
async getGovernanceList() {
return Promise.all([this.get('/gov/proposals'), this.get('/staking/pool')]).then(data => {
const url = this.config.chain_name === 'certik' ? '/shentu/gov/v1alpha1/proposals?pagination.limit=500' : '/cosmos/gov/v1beta1/proposals?pagination.limit=500'
return Promise.all([this.get(url), this.get('/staking/pool')]).then(data => {
const pool = new StakingPool().init(commonProcess(data[1]))
let proposals = commonProcess(data[0])
if (Array.isArray(proposals.proposals)) {
@@ -243,24 +259,6 @@ export default class ChainFetch {
})
}
async get(url, config = null) {
if (!config) {
this.getSelectedConfig()
}
const ret = await fetch((config ? config.api : this.config.api) + url).then(response => response.json())
return ret
}
async getUrl(url) {
this.getSelectedConfig()
return fetch(url).then(res => res.json())
}
static fetch(host, url) {
const ret = fetch(host + url).then(response => response.json())
return ret
}
async getAuthAccount(address, config = null) {
return this.get('/auth/accounts/'.concat(address), config).then(data => {
const result = commonProcess(data)
@@ -276,7 +274,7 @@ export default class ChainFetch {
if (compareVersions(config ? config.sdk_version : this.config.sdk_version, '0.40') < 0) {
return this.get(`/distribution/delegators/${address}/rewards`, config).then(data => commonProcess(data))
}
return this.get(`/cosmos/distribution/v1beta1/delegators/${address}/rewards`).then(data => commonProcess(data))
return this.get(`/cosmos/distribution/v1beta1/delegators/${address}/rewards`, config).then(data => commonProcess(data))
}
async getStakingValidators(address) {
@@ -317,43 +315,46 @@ export default class ChainFetch {
return this.get('/bank/balances/'.concat(address), config).then(data => commonProcess(data))
}
async getAllIBCDenoms(config = null) {
const sdkVersion = config ? config.sdk_version : this.config.sdk_version
if (compareVersions(sdkVersion, '0.44.2') < 0) {
return this.get('/ibc/applications/transfer/v1beta1/denom_traces?pagination.limit=500', config).then(data => commonProcess(data))
}
return this.get('/ibc/apps/transfer/v1/denom_traces?pagination.limit=500', config).then(data => commonProcess(data))
}
async getIBCDenomTrace(hash, config = null) {
const h = hash.substring(hash.indexOf('/') + 1)
return this.get('/ibc/applications/transfer/v1beta1/denom_traces/'.concat(h), config).then(data => commonProcess(data))
const sdkVersion = config ? config.sdk_version : this.config.sdk_version
if (compareVersions(sdkVersion, '0.44.2') < 0) {
return this.get('/ibc/applications/transfer/v1beta1/denom_traces/'.concat(h), config).then(data => commonProcess(data))
}
return this.get('/ibc/apps/transfer/v1/denom_traces/'.concat(h), config).then(data => commonProcess(data))
}
async getIBCChannels(config = null, key = null) {
if (key) {
return this.get('/ibc/core/channel/v1beta1/channels?pagination.key='.concat(key), config).then(data => commonProcess(data))
return this.get('/ibc/core/channel/v1/channels?pagination.key='.concat(key), config).then(data => commonProcess(data))
}
return this.get('/ibc/core/channel/v1beta1/channels', config).then(data => commonProcess(data))
return this.get('/ibc/core/channel/v1/channels?pagination.limit=1000', config).then(data => commonProcess(data))
}
// eslint-disable-next-line camelcase
async getIBCChannelClientState(channel_id, port_id, config = null) {
// eslint-disable-next-line camelcase
return this.get(`/ibc/core/channel/v1beta1/channels/${channel_id}/ports/${port_id}/client_state`, config).then(data => commonProcess(data))
return this.get(`/ibc/core/channel/v1/channels/${channel_id}/ports/${port_id}/client_state`, config).then(data => commonProcess(data))
}
// eslint-disable-next-line camelcase
async getIBCChannel(channel_id, port_id, config = null) {
// eslint-disable-next-line camelcase
return this.get(`/ibc/core/channel/v1beta1/channels/${channel_id}/ports/${port_id}`, config).then(data => commonProcess(data))
return this.get(`/ibc/core/channel/v1/channels/${channel_id}/ports/${port_id}`, config).then(data => commonProcess(data))
}
static async getBankBalance(baseurl, address) {
return ChainFetch.fetch(baseurl, '/bank/balances/'.concat(address)).then(data => commonProcess(data))
}
static async getIBCDenomTrace(baseurl, hash) {
const h = hash.substring(hash.indexOf('/'))
return ChainFetch.fetch(baseurl, '/ibc/applications/transfer/v1beta1/denom_traces/'.concat(h)).then(data => commonProcess(data))
}
static async getIBCDenomTraceText(baseurl, hash) {
return ChainFetch.getIBCDenomTrace(baseurl, hash).then(res => res.denom_trace.base_denom)
}
async getGravityPools() {
return this.get('/cosmos/liquidity/v1beta1/pools').then(data => commonProcess(data))
}
@@ -361,8 +362,8 @@ export default class ChainFetch {
async getMarketChart(days = 14, coin = null) {
const conf = this.getSelectedConfig()
const currency = getUserCurrency()
if (conf.coingecko && conf.coingecko.length > 0) {
return ChainFetch.fetch(' https://api.coingecko.com', `/api/v3/coins/${coin || conf.coingecko}/market_chart?vs_currency=${currency}&days=${days}`)
if (conf.assets[0] && conf.assets[0].coingecko_id) {
return ChainFetch.fetch(' https://api.coingecko.com', `/api/v3/coins/${coin || conf.assets[0].coingecko_id}/market_chart?vs_currency=${currency}&days=${days}`)
}
return null
}
@@ -399,8 +400,10 @@ export default class ChainFetch {
if (!config) {
this.getSelectedConfig()
}
const conf = config || this.config
const index = this.getApiIndex(config)
// Default options are marked with *
const response = await fetch((config ? config.api : this.config.api) + url, {
const response = await fetch((Array.isArray(conf.api) ? conf.api[index] : conf.api) + url, {
method: 'POST', // *GET, POST, PUT, DELETE, etc.
// mode: 'cors', // no-cors, *cors, same-origin
// credentials: 'same-origin', // redirect: 'follow', // manual, *follow, error
@@ -415,6 +418,33 @@ export default class ChainFetch {
// const response = axios.post((config ? config.api : this.config.api) + url, data)
return response.json() // parses JSON response into native JavaScript objects
}
async get(url, config = null) {
if (!config) {
this.getSelectedConfig()
}
const conf = config || this.config
const finalurl = (Array.isArray(conf.api) ? conf.api[this.getApiIndex(config)] : conf.api) + url
// finalurl = finalurl.replaceAll('v1beta1', this.getEndpointVersion())
const ret = await fetch(finalurl).then(response => response.json())
return ret
}
getApiIndex(config = null) {
const conf = config || this.config
const index = Number(localStorage.getItem(`${conf.chain_name}-api-index`) || 0)
return index < conf.api.length ? index : 0
}
async getUrl(url) {
this.getSelectedConfig()
return fetch(url).then(res => res.json())
}
static fetch(host, url) {
const ret = fetch((Array.isArray(host) ? host[0] : host) + url).then(response => response.json())
return ret
}
}
// export default chainAPI
+2 -2
View File
@@ -8,7 +8,7 @@
import { sha256 } from '@cosmjs/crypto'
import { toHex } from '@cosmjs/encoding'
import fetch from 'node-fetch'
import { formatTokenDenom, getLocalChains } from './data/data'
import { formatTokenDenom, getLocalChains } from './utils'
export const poolIds = {
1: true,
@@ -164,7 +164,7 @@ export default class OsmosAPI {
}
async getDenomTraces() {
return this.get('/ibc/applications/transfer/v1beta1/denom_traces?pagination.limit=300').then(x => {
return this.get('/ibc/apps/transfer/v1/denom_traces?pagination.limit=500').then(x => {
const combined = {}
x.denom_traces.forEach(item => {
const k = 'ibc/'.concat(toHex(sha256(new TextEncoder('utf-8').encode(`${item.path}/${item.base_denom}`))).toUpperCase())
+117 -57
View File
@@ -12,9 +12,11 @@ import dayjs from 'dayjs'
import duration from 'dayjs/plugin/duration'
import relativeTime from 'dayjs/plugin/relativeTime'
import utc from 'dayjs/plugin/utc'
import RIPEMD160 from 'ripemd160'
import localeData from 'dayjs/plugin/localeData'
import { $themeColors } from '@themeConfig'
import PingWalletClient from './signing'
// import { SigningStargateClient } from '@cosmjs/stargate'
import PingWalletClient from './data/signing'
dayjs.extend(localeData)
dayjs.extend(duration)
@@ -41,7 +43,8 @@ export function getLocalTxHistory() {
return getLocalObject('txHistory')
}
export function setLocalTxHistory(newTx) {
export function setLocalTxHistory(tx) {
const newTx = tx
const txs = getLocalTxHistory()
if (txs) {
txs.push(newTx)
@@ -89,12 +92,55 @@ export function setUserCurrency(currency) {
}
export function chartColors() {
const colors = ['#6610f2', '#20c997', '#000000', '#FF0000',
'#800000', '#FFFF00', '#808000', '#00FF00', '#008000', '#00FFFF',
'#008080', '#0000FF', '#000080', '#FF00FF', '#800080']
const colors = [
'#8A2BE2', '#9ACD32', '#000080', '#008080', '#DC143C',
'#7FFFD4', '#B8860B', '#EEE8AA', '#FFFAFA', '#FDF5E6',
'#C0C0C0', '#E6E6FA', '#FFFAF0', '#2E8B57', '#DCDCDC',
'#FF1493', '#4682B4', '#191970', '#FF8C00', '#FFFFE0',
'#696969', '#FFFACD', '#DEB887', '#4169E1', '#9932CC',
'#B0C4DE', '#556B2F', '#FFE4E1', '#F5FFFA', '#8FBC8F',
'#B22222', '#90EE90', '#FFFF00', '#4B0082', '#DB7093',
'#F8F8FF', '#006400', '#6610f2', '#FFA500', '#7FFF00',
'#87CEFA', '#5F9EA0', '#483D8B', '#CD5C5C', '#ADFF2F',
'#2F4F4F', '#00FF7F', '#FFF5EE', '#F4A460', '#808000',
'#000000', '#00FA9A', '#000000', '#EE82EE', '#F5DEB3',
'#0000FF', '#BA55D3', '#FFF0F5', '#F5F5DC', '#0000CD',
'#FFD700', '#708090', '#6B8E23', '#800000', '#7B68EE',
'#FFA07A', '#800080', '#B0E0E6', '#00FFFF', '#00BFFF',
'#7CFC00', '#778899', '#FF7F50', '#E0FFFF', '#6495ED',
'#008B8B', '#DDA0DD', '#CD853F', '#FFFFF0', '#98FB98',
'#9400D3', '#D2691E', '#FF0000', '#008000', '#00008B',
'#C71585', '#FFB6C1', '#8B4513', '#20c997', '#FAEBD7',
'#E9967A', '#FFEFD5', '#FFE4C4', '#D8BFD8', '#A52A2A',
'#8B0000', '#32CD32', '#BDB76B', '#FF0000', '#DAA520',
'#800000', '#9370DB', '#F08080', '#FAF0E6', '#FF6347',
'#FF4500', '#FFFF00', '#808080', '#00CED1', '#FFC0CB',
'#FF00FF', '#F0FFFF', '#A9A9A9', '#F0E68C', '#1E90FF',
'#FFDAB9', '#228B22', '#F0FFF0', '#66CDAA', '#ADD8E6',
'#DA70D6', '#A0522D', '#FFE4B5', '#48D1CC', '#D2B48C',
'#FFEBCD', '#8B008B', '#3CB371', '#87CEEB', '#6A5ACD',
'#FFDEAD', '#FF69B4', '#BC8F8F', '#D3D3D3', '#00FF00',
'#FAFAD2', '#AFEEEE', '#40E0D0', '#FFF8DC', '#20B2AA',
'#00FFFF', '#FA8072', '#F0F8FF']
return Object.values($themeColors).concat(colors)
}
export function extractAccountNumberAndSequence(ret) {
let account = ret.value
if (ret.value && ret.value.base_vesting_account) { // vesting account
account = ret.value.base_vesting_account?.base_account
} else if (ret.value && ret.value.base_account) { // evmos based account
account = ret.value.base_account
}
const accountNumber = account.account_number
const sequence = account?.sequence || 0
return {
accountNumber,
sequence,
}
}
export function getUserCurrencySign() {
let s = ''
switch (getUserCurrency()) {
@@ -117,11 +163,15 @@ export function getUserCurrencySign() {
export function consensusPubkeyToHexAddress(consensusPubkey) {
let raw = null
if (typeof consensusPubkey === 'object') {
raw = toHex(fromBase64(consensusPubkey.value))
if (consensusPubkey.type === 'tendermint/PubKeySecp256k1') {
raw = new RIPEMD160().update(Buffer.from(sha256(fromBase64(consensusPubkey.value)))).digest('hex').toUpperCase()
return raw
}
raw = sha256(fromBase64(consensusPubkey.value))
} else {
raw = toHex(Bech32.decode(consensusPubkey).data).toUpperCase().replace('1624DE6420', '')
raw = sha256(fromHex(toHex(Bech32.decode(consensusPubkey).data).toUpperCase().replace('1624DE6420', '')))
}
const address = toHex(sha256(fromHex(raw))).slice(0, 40).toUpperCase()
const address = toHex(raw).slice(0, 40).toUpperCase()
return address
}
@@ -155,21 +205,28 @@ export async function sign(device, chainId, signerAddress, messages, fee, memo,
transport = await TransportWebUSB.create()
signer = new LedgerSigner(transport, { hdPaths: [getHdPath(signerAddress)] })
break
case 'pingKMS':
if (!window.PingSigner) {
throw new Error('Please install Ping KMS extension')
}
signer = window.PingSigner
break
case 'keplr':
default:
if (!window.getOfflineSigner || !window.keplr) {
throw new Error('Please install keplr extension')
}
await window.keplr.enable(chainId)
signer = window.getOfflineSigner(chainId)
// signer = window.getOfflineSignerOnlyAmino(chainId)
// signer = window.getOfflineSigner(chainId)
signer = window.getOfflineSignerOnlyAmino(chainId)
}
// if (signer) return signAmino(signer, signerAddress, messages, fee, memo, signerData)
// Ensure the address has some tokens to spend
const client = await PingWalletClient.offline(signer)
return client.signAmino(device === 'keplr' ? signerAddress : toSignAddress(signerAddress), messages, fee, memo, signerData)
// const client = await SigningStargateClient.offline(signer)
return client.signAmino2(device.startsWith('ledger') ? toSignAddress(signerAddress) : signerAddress, messages, fee, memo, signerData)
// return signDirect(signer, signerAddress, messages, fee, memo, signerData)
}
@@ -239,7 +296,7 @@ export function abbrMessage(msg) {
}, {})
const output = []
Object.keys(sum).forEach(k => {
output.push(`${k}×${sum[k]}`)
output.push(sum[k] > 1 ? `${k}×${sum[k]}` : k)
})
return output.join(', ')
}
@@ -270,64 +327,66 @@ export function isToken(value) {
}
export function formatTokenDenom(tokenDenom) {
if (tokenDenom) {
let denom = tokenDenom.denom_trace ? tokenDenom.denom_trace.base_denom.toUpperCase() : tokenDenom.toUpperCase()
if (denom.charAt(0) === 'U' && denom !== 'USDX') {
denom = denom.substring(1)
} else if (denom === 'BASECRO') {
denom = 'CRO'
} else if (denom.startsWith('IBC')) {
denom = 'IBC...'
} else if (denom.startsWith('NANOLIKE')) {
denom = 'LIKE'
}
if (tokenDenom && tokenDenom.code === undefined) {
let denom = tokenDenom.denom_trace ? tokenDenom.denom_trace.base_denom : tokenDenom
const config = Object.values(getLocalChains())
return denom
config.forEach(x => {
if (x.assets) {
const asset = x.assets.find(a => (a.base === denom))
if (asset) denom = asset.symbol
}
})
return denom.startsWith('ibc') ? `IBC...${denom.substring(denom.length - 3)}` : denom.toUpperCase()
}
return ''
}
export function getUnitAmount(amount, denom) {
if (denom.startsWith('basecro')) {
return String((Number(amount) * 100000000).toFixed())
}
if (denom.startsWith('rowan')) {
// eslint-disable-next-line no-undef
return (BigInt(amount) * 1000000000000000000n).toString()
}
if (denom.startsWith('nanolike')) {
// eslint-disable-next-line no-undef
return String((Number(amount) * 1000000000).toFixed())
}
return String((Number(amount) * 1000000).toFixed())
export function getUnitAmount(amount, tokenDenom) {
const denom = tokenDenom.denom_trace ? tokenDenom.denom_trace.base_denom : tokenDenom
let exp = 6
const config = Object.values(getLocalChains())
config.forEach(x => {
if (x.assets) {
const asset = x.assets.find(a => (a.base === denom))
if (asset) exp = asset.exponent
}
})
// eslint-disable-next-line no-undef
return String(BigInt(Number(amount) * (10 ** exp)))
}
export function formatTokenAmount(tokenAmount, fraction = 2, denom = 'uatom') {
let amount
if (denom.startsWith('inj')) {
// eslint-disable-next-line no-undef
amount = Number(BigInt(Number(tokenAmount)) / 1000000000000000000n)
// }
} else if (denom.startsWith('rowan')) {
// eslint-disable-next-line no-undef
amount = Number(BigInt(Number(tokenAmount)) / 1000000000000000000n)
// }
} else if (denom.startsWith('basecro')) {
amount = Number(tokenAmount) / 100000000
} else if (denom.startsWith('nanolike')) {
amount = Number(tokenAmount) / 1000000000
} else {
amount = Number(tokenAmount) / 1000000
}
export function numberWithCommas(x) {
const parts = x.toString().split('.')
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',')
return parts.join('.')
}
export function formatTokenAmount(tokenAmount, fraction = 2, tokenDenom = 'uatom', format = true) {
const denom = tokenDenom.denom_trace ? tokenDenom.denom_trace.base_denom : tokenDenom
let amount = 0
let exp = 6
const config = Object.values(getLocalChains())
config.forEach(x => {
if (x.assets) {
const asset = x.assets.find(a => (a.base === denom))
if (asset) exp = asset.exponent
}
})
amount = Number(Number(tokenAmount)) / (10 ** exp)
if (amount > 10) {
if (format) { return numberWithCommas(parseFloat(amount.toFixed(fraction))) }
return parseFloat(amount.toFixed(fraction))
}
return parseFloat(amount)
return parseFloat(amount.toFixed(fraction))
}
export function isTestnet() {
return (window.location.hostname.startsWith('testnet')
|| window.location.search.indexOf('testnet') > -1)
|| window.location.search.indexOf('testnet') > -1)
}
export function formatToken(token, IBCDenom = {}, decimals = 2, withDenom = true) {
@@ -353,7 +412,7 @@ export function formatNumber(count, withAbbr = false, decimals = 2) {
export function tokenFormatter(tokens, denoms = {}) {
if (Array.isArray(tokens)) {
return tokens.map(t => formatToken(t, denoms, 2)).join()
return tokens.map(t => formatToken(t, denoms, 2)).join(', ')
}
return formatToken(tokens, denoms, 2)
}
@@ -406,6 +465,7 @@ export function getStakingValidatorOperator(chainName, addr, length = -1) {
export * from 'compare-versions'
export * from './data'
export class Data {
}
+1 -6
View File
@@ -1,5 +1,5 @@
import store from '@/store'
import { isTestnet } from '../../libs/data/data'
import { isTestnet } from '../../libs/utils'
const modules = [
{
@@ -42,11 +42,6 @@ const modules = [
function processMenu() {
const chainMenus = [
// {
// title: 'Home',
// route: 'home',
// icon: 'HomeIcon',
// },
{
header: 'blockchains',
},
+47 -1
View File
@@ -54,6 +54,20 @@ const router = new VueRouter({
],
},
},
{
path: '/coffee',
name: 'coffee',
component: () => import('@core/layouts/components/Coffee.vue'),
meta: {
pageTitle: 'Donation',
breadcrumb: [
{
text: 'Buy me a cup of coffee!',
active: false,
},
],
},
},
{
path: '/wallet/accounts',
alias: '/wallet',
@@ -97,6 +111,38 @@ const router = new VueRouter({
],
},
},
{
path: '/wallet/delegations',
name: 'delegations',
component: () => import('@/views/WalletDelegations.vue'),
meta: {
pageTitle: 'My Delegations',
breadcrumb: [
{
text: 'Wallet',
},
{
text: 'My Delegations',
},
],
},
},
{
path: '/wallet/transactions',
name: 'mytransactions',
component: () => import('@/views/WalletTransactions.vue'),
meta: {
pageTitle: 'Transaction History',
breadcrumb: [
{
text: 'Wallet',
},
{
text: 'Transaction History',
},
],
},
},
// chain modules
{
path: '/:chain/',
@@ -129,7 +175,7 @@ const router = new VueRouter({
},
{
path: '/:chain/uptime/my',
name: 'uptime',
name: 'myuptime',
component: () => import('@/views/UptimeMyValidators.vue'),
meta: {
pageTitle: 'Uptime',
+1 -1
View File
@@ -5,7 +5,7 @@
* @LastEditors: dingyiming
* @LastEditTime: 2021-11-20 15:33:07
*/
import { isTestnet } from '@/libs/data/data'
import { isTestnet } from '@/libs/utils'
let chains = {}

Some files were not shown because too many files have changed in this diff Show More