notional-labs / cosmosia Goto Github PK
View Code? Open in Web Editor NEWCosmos Infrastructure Automation
Cosmos Infrastructure Automation
if DNS point to a single IP address, bandwidth is limited by the physical etherenet port.
Ech server has single 1Gb port, ~100MB/s downloading snapshot.
If there are 2 clients downloading snapshot, each got 50MB/s. If there are 10 clients downloading snapshot, each got 10MB/s...So it does not scale.
The purpose of this task is to increase bandwidth by using DNSRR point to IP of multiple servers in the cluster. If there are 10 servers with 1Gb port, total bandwidth now is 10Gb ~ 1GB/s.
As servers could be up/down/add/remove at runtime, need a script to monitor and update DNS records automatically.
pebbledb has been running for 8 hours, its stable now.
[root@e6047691c84a data]# ps -aux |grep sif
root 211878 5.5 0.7 7771656 1035072 pts/1 Sl+ 10:28 27:35 /root/go/bin/sifnoded start --db_backend=pebbledb --p2p.persistent_peers=23923a2ae66653984e3e35d2ce8c1e1e0e1d4473@tasks.sss_sifchain:26656
root 217915 0.0 0.0 4092 2292 pts/4 S+ 18:41 0:00 grep sif
[root@e6047691c84a data]# ps -p 211878 -o etime
ELAPSED
08:13:59
Good to do some benchmark to compare to goleveldb/rocksdb.
https://github.com/baabeetaa/cosmprund/blob/add_apps/cmd/pruner.go#L118
each chain has multiple rpc instances and a snapshot instance.
Atm, these instances dont peer to each other, All sync from internal network.
The purpose of this task is to make them auto discover and peer to each others.
Osmosis (osmosis): OK
Starname (starname): OK
Regen (regen): OK
Akash (akash): OK
Gaia (cosmoshub): OK
Sentinel (sentinel): <<< Error
E-Money (emoney): OK
Ixo (ixo): OK
Juno (juno): OK
Sifchain (sifchain): OK
Likecoin (likecoin): OK
Ki (kichain): OK
Cyber (cyber): OK
Cheqd (cheqd): OK
Stargaze (stargaze): OK
Band (bandchain): OK
Chihuahua (chihuahua): OK
Kava (kava) <<< Error
BitCanna (bitcanna): OK
Konstellation (konstellation): OK
Omniflix (omniflixhub): OK
Terra (terra): OK
Vidulum (vidulum): OK
Provenance (provenance): OK
Dig (dig): OK
Gravity-Bridge (gravitybridge): OK
Comdex (comdex): <<< Error
Cerberus (cerberus): OK
BitSong (bitsong): OK
AssetMantle (assetmantle): <<< Error
FetchAI (fetchhub): <<< Error
Evmos (evmos): OK
alternative to re-statesync and re-download pruned snapshot.
Statesync doesnt work with all chains (https://github.com/notional-labs/cosmosia/blob/main/docs/statesync.md).
This task is to try it. If it works, then use it for chains which dont support statesync.
files
folder toRPC instances now peer to each other already ( #34 ) but snapshot node does not.
This task is to make the snapshot node peer to rpc instances for faster sync.
need it works with 3 versions of rocksdb: v6.15.5 v6.24.2 v7.1.2
To make sure all RPC instance of a service running the same snapshot version (the same data and settings for all instances).
Snapshot file can be synced from external providers, statesync.
Rpc service syncs from internal snapshot service only.
However, snapshot can be pruned by (cosmos-pruner, re-statesync or re-download). Everytime prunning snapshot, need to update data all rpc instances. The issue is this update process.
The easy way is just re-start the RPC service. But there is long down-time. Snapshot data can be a few GB to hundreds of GB, so the update time could be very long (few mins to hours).
Need a solution to update RPC data without downtime ( or very small - seconds to few minutes).
The idea of snapshot versioning
is that a new RPC service (with new snapshot data) is created. When everything ready, update the load-balancer to switch to the new RPC service. Then remove the old RPC service.
keep the snapshot-interval high ~ 1 day so wont hurt performance.
We have decided not to do anything with AssetMantle. Pls remove it out of the system
v2.5.1 works fine
v2.5.2 stops working
a quick fix is just running v2.5.1
We already have list of chains in the chain_registry.ini
.
This task is to generate the https://github.com/notional-labs/cosmosia/blob/main/proxy_public/snapshot.index.html dynamically when starting the proxy.
Help to reduce a step when adding a new chain https://github.com/notional-labs/cosmosia/blob/main/docs/new_chain.md
Chain \ Day | Day 0 | Day 1 | Day 2 |
---|---|---|---|
rpc_akash_0 | 102G | 106G | 109G |
rpc_axelar_0 | 67G | 70G | 72G |
rpc_bandchain_0 | 143G | 146G | 149G |
rpc_bitcanna_0 | 92G | 95G | 98G |
rpc_bitsong_0 | 54G | 56G | 58G |
rpc_cerberus_0 | 114G | 119G | 124G |
rpc_cheqd_0 | 58G | 60G | 60G |
rpc_chihuahua_0 | 97G | 101G | 105G |
rpc_comdex_0 | 68G | 70G | 71G |
rpc_cosmoshub_0 | 183G | 190G | 197G |
rpc_cryptoorgchain_0 | 136G | 141G | 146G |
rpc_cyber_0 | 116G | 117G | 117G |
rpc_dig_0 | 63G | 65G | 65G |
rpc_emoney_0 | 19G | 19G | 19G |
rpc_evmos-testnet-archive_1 | 528G | 532G | 537G |
rpc_evmos_0 | 174G | 190G | 201G |
rpc_fetchhub_0 | 115G | 116G | 116G |
rpc_gravitybridge_0 | 136G | 142G | 145G |
rpc_irisnet_0 | 65G | 66G | 68G |
rpc_ixo_0 | 56G | 57G | 58G |
rpc_juno_0 | 125G | 132G | 140G |
rpc_kava_0 | 166G | 168G | 170G |
rpc_kichain_0 | 82G | 84G | 85G |
rpc_konstellation_0 | 77G | 79G | 80G |
rpc_likecoin_0 | 69G | 69G | 70G |
rpc_omniflixhub_0 | 102G | 103G | 104G |
rpc_osmosis_0 | 286G | 471G | 693G |
rpc_persistent_0 | 84G | 87G | 88G |
rpc_provenance_0 | 107G | 107G | 107G |
rpc_pylons_1 | 58G | 59G | 60G |
rpc_regen_0 | 66G | 68G | 69G |
rpc_sei_1 | 118G | 120G | 122G |
rpc_sentinel_0 | 92G | 96G | 100G |
rpc_sifchain_0 | 131G | 137G | 143G |
rpc_stargaze_0 | 129G | 135G | 136G |
rpc_starname_0 | 86G | 87G | 88G |
rpc_terra_0 | 287G | 295G | 298G |
rpc_umee_0 | 80G | 85G | 90G |
rpc_vidulum_0 | 50G | 51G | 52G |
remove docs, snapshot, scripts...
Some chains have memory leak issue. Need a cronjob to restart the chain periodically.
pruned bandchain of quicksync is huge ~300GB
https://quicksync.io/networks/band.html
Genesis and snapshot files are huge. Eg., cosmoshub-4-pruned is 68 GB (https://quicksync.io/networks/cosmos.html).
The proxy with cache helps:
https://github.com/sei-protocol/sei-chain/releases/tag/1.0.6beta
chain-id: atlantic-1
https://raw.githubusercontent.com/sei-protocol/testnet/main/sei-incentivized-testnet/genesis.json
https://raw.githubusercontent.com/sei-protocol/testnet/main/sei-incentivized-testnet/addrbook.json
peer: [email protected]:2420
https://rpc-sei-ia.notional.ventures/
simple tool like https://github.com/terra-money/level-to-rocks/
which converts goleveldb databases to pebbledb databases.
External status page is already available at https://status.notional.ventures/status/cosmosia
However uptime-kuma doesnt have api atm.
So we'll build a simple tool to use.
1 Osmosis (osmosis) ✅
2 Starname (starname) ✅
3 Regen (regen) ✅
4 Akash (akash) ✅
5 Gaia (cosmoshub) ✅
6 Sentinel (sentinel) ✅
7 E-Money (emoney) ✅
8 Ixo (ixo) ✅
9 Juno (juno) ✅
10 Sifchain (sifchain) ✅
11 Likecoin (likecoin) ✅
12 Ki (kichain) ✅
13 Cyber (cyber) ✅
14 Cheqd (cheqd) ✅
15 Stargaze (stargaze) ✅
16 Band (bandchain) ✅
17 Chihuahua (chihuahua) ✅
18 Kava(kava) ✅
19 BitCanna (bitcanna) ✅
20 Konstellation (konstellation) ✅
21 Omniflix (omniflixhub) ✅
22 Terra (terra) ✅
23 Vidulum (vidulum) ✅
24 Provenance (provenance) ✅
25 Dig (dig) ✅
26 Gravity-Bridge (gravitybridge) ✅
27 Comdex (comdex) ✅
28 Cerberus (cerberus) ✅
29 BitSong (bitsong) ✅
30 AssetMantle (assetmantle) <== wait for #80
31 FetchAI (fetchhub) ✅
32 Evmos (evmos) ✅
33 Persistence (persistent) ✅
34 Crypto.org (cryptoorgchain) ✅
35 IRISnet (irisnet) ✅
36 Axelar (axelar) ✅
37 Pylons Testnet(pylons) ✅
38 Umee (umee) ✅
39 Sei-Chain Testnet (sei) ✅
40 Evmos Testnet Archive(evmos-testnet-archive) ✅
got 502 Bad Gateway
its just the proxy-to-loadbalancer issue, there is no issue when testing on load-balancer directly.
<body>
<h1>An error occurred.</h1>
<p>Sorry, the page you are looking for is currently unavailable.<br/>
Please try again later.</p>
<p>If you are the system administrator of this resource then you should check
the error log for details.</p>
<p><em>Faithfully yours, nginx.</em></p>
</body>
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.