diff --git a/nyancat/v0.16/upgrade_result.txt b/nyancat/v0.16/upgrade_result.txt new file mode 100644 index 00000000..1a753a07 --- /dev/null +++ b/nyancat/v0.16/upgrade_result.txt @@ -0,0 +1,87 @@ +Parsing... DO NOT QUIT +count of hash_height_map: 44 +0DE29813CBA06D2AD87B9B9B124DA4D9263025E7: 89500 +E01C7393FF629995EDA5BFE3E27FC19F63D5704E: 89500 +75875F70948E33D1650B9692EF1C51FF3A57DF88: 89500 +236E1A81D99FFFD81E4EA876E4AD2C0D329BAFC7: 89500 +F85D2B404E296373C4B89F16016B450A7178E0B5: 89500 +A4F264828371D3454AD062272E9B61D6AAA3A744: 89500 +13F2644AA5CD7DF42AA1B461ECA4E7F564C97C11: 89500 +A06346354FBF96767FA5149FC2F715E3CD1A7270: 89500 +36B0C2BC6853E51E929256FEAC9B6BEAAC7B3F83: 89500 +D55C44827D2AEC15B32DC419128B771055AD3A78: 89500 +AA8C02646CD999897DF507133BA03E921764EEEF: 89500 +20997FBDB7CF2560C9F2D9C3E9724DB5827DDBE5: 89500 +5238BE5E4451D2CFB13FE7BB6E89190F5A57EC5C: 89500 +1832D22279F8369A96DC1CEB8254B60FBBB6BCB5: 89500 +FD8261857253B1E7CC7907BCC9F1B72339927F29: 89500 +C0CD04963F838318C954DED2F99CF4BA3386F754: 89500 +9B93707175EBDB54218810EAACC0F94F1ECF85BE: 89500 +0DF1CD84F0A01D43D396FA510A3975BDA4B4270E: 89500 +F773B0EE4E139C6C71705C4BE29C4B5378208AF8: 89500 +70D5B7007BD6BB4ADA8AE05AA66D0F75BE8A1ADF: 89500 +CFB81B3886B2245B79B67F5341068A5789BCF2D5: 89500 +61AC82D9E229932490EFA163B59FAC41C0284FFE: 89500 +7C1D0834B14FC68C9ECDA31EEDAD536FF7F6ADC8: 89500 +2DC6BFFB64B0A7F9FDAE00CFA122C3BE12AD5194: 89500 +76C3D14A801DF1EA521B173DEFBE3119848A61FB: 89500 +B2183BA1262F92895027A1D7B65A185AF406CDF1: 89500 +6DA5F750A97DF6548A81DE1F69CAA0F5C81745F0: 89500 +DC95D92E97A88FD22F046AB95EEC5063E6147308: 89500 +AB998215298B2BF037BDC55184B30C415F763433: 89500 +BF84BC1334E698E628B061E729B384DC0192F08E: 89500 +871B774881BFEDA840B63E4B9A77EF4E925FF5C7: 89500 +776BB71E517A771C20718919C47391CE42844F2B: 89500 +C3A5C8764DD7ECE3802B912F679B8AD020FEA6D5: 89500 +A4CC9A56A091737311635ED0C584445BCDE091E4: 89549 +E3E379964AEAD656C8BC2FA24AA8F8D2934B6AD7: 89500 +BCC6D088A63E4CD4BD7FE0B8F4732AA00FC2202C: 89500 +4E5DF0F5F094921BA2ED3C380BCB697F7C82577D: 89500 +29C213D6F7A3B7A2B7BCE98FA4C7991E5958C3EE: 89500 +CAA2D43BFA31C2E9BF9D83B433E6157547A2130E: 89500 +2130777DE84D2CB4915C5E4902222C85DDFFE4C8: 89500 +BDD7EF0A45104720E14954C5F37769F970827F55: 89500 +B27194F8EFED98BBDA74A7A4E2C62728331A3747: 89500 +759FAA15A53AD2F915E5A88D6F649BF03983B34A: 89500 +6739F35B94982379011BAFCD5D7445FAC75899D8: 89500 +1 fva1lr24zv4qhrrzude8f4swhuvtm44ne0lffrlj82 2019-11-18T13:04:22.573Z nodeasy +2 fva19yz90xr58ppf5t6hfwwrmn937qnuh7k5y5g272 2019-11-18T13:04:27.616Z IRIS Cat - FAB46CEEAEAB9FA1 +3 fva1ewdan0e0wssu0sx42vurvh770q4vxgk4vqmpye 2019-11-18T13:04:33.031Z Rich518 +4 fva1fs9mdufg8cl06n5h7w95wdle89eky6ssnj4cgn 2019-11-18T13:04:38.074Z liangcheng-nyancat5-DBF3F5B2CA263BF2 +5 fva16lcrv5l70ta78p3hugd3ur7uuxc864sxjqrl8k 2019-11-18T13:04:43.116Z hmm +6 fva1ckqsu3mgcnn8u5kzlafrc8tez9xzwg5wlfw7sl 2019-11-18T13:04:43.116Z xiaopeng +7 fva12zw00vvh2jfqk7mt3cfsjjpsw0z2xe5tj2t3w0 2019-11-18T13:04:43.116Z sen2 +8 fva1unvyq8pzjuadt6ceghuw8sr7m8x3923ymmw72z 2019-11-18T13:04:43.116Z sheny +9 fva1z9jt836m54snxsv92gpdqugz880uuytkfl6vuv 2019-11-18T13:04:48.165Z excellent-A5A0087D80A1136E +10 fva13gxuqpcgc8sq8zhw7ga2jhretmc8zy4r0avz66 2019-11-18T13:04:53.863Z Coinstaking-65909B956DF0F488 +11 fva1n2gd7lawfyydjfjt5dc223puvy63j9qrd9a8tu 2019-11-18T13:04:53.863Z CindyLi-A3D4307C0B2D4DB0 +12 fva1fyxwj6pf7sygvtg7tejltwcs8vfv8mwqg0cdp0 2019-11-18T13:04:58.908Z Wetez +13 fva1krghynpm5f2wpt6zhkcvljlwrr79cjypyefcuq 2019-11-18T13:05:03.946Z Darmon-46077CBEEA4FF922 +14 fva1w4n0pkkqxgy5c9gk3nqwx0jlkn05ta0nnver6k 2019-11-18T13:05:09.88Z dolphintwo-7A38C8CD6C0FA32A +15 fva1naw4f7slg2fd9dt03m03sfepkhqgrxrcg363da 2019-11-18T13:05:14.923Z stone +16 fva1eelwxfzkrmnm7a83d9fv9aqsywdm4je9kur40q 2019-11-18T13:05:19.968Z szq-1E70794B56DFB583 +17 fva1ud5jlg4unw428mnswt0j2xnahs205ya9frqn2k 2019-11-18T13:05:30.489Z HLT-DE22EF4D75849301A5283B143B702801F00074AF +18 fva1vagngllj3sr2s888528uw3rqsnq308km4ylr3t 2019-11-18T13:06:01.034Z Stake5 Labs - C7595F18CC5D4FA6 +19 fva1f64m50kuemuwfeztpa8mnju309n434ane4vgek 2019-11-18T13:07:13.306Z shikenian-F1F0BF192D84EAC3 +20 fva1wjyj2xqqgmq9aa69577en9u6x32vclx5820g76 2019-11-18T13:09:01.706Z Hello_Rose +21 fva1vjnl5dc385ly08p3rjah3v5peaeq0fqem2whuq 2019-11-18T13:09:42.819Z matrixyz-D73D632ACC76163D +22 fva1jytwvxwywuc69jlqp6e85fne4j2d6w9hla3x08 2019-11-18T13:10:09.187Z wukong5-9A26C5A2EE8EAFD2 +23 fva1qp7hdyk72a7s9xx5078wjyt8ejteme3cr9qe3l 2019-11-18T13:12:33.368Z filestealer-CF242D961E36802A +24 fva1z7jfek9vurhw2sdmlwyvu2q37wswa6kaljwstx 2019-11-18T13:12:55.68Z Allen-49D02A7526022E7C +25 fva15c7ukycq8d9f5ucmftp42ujl4jx38wtw4aa7fd 2019-11-18T13:24:04.938Z Irivin_AC1B8777C654F6ADAC9BC53FFCEE899E205B8C35 +26 fva1n5tqycmf8kyagatk9yyadd79e0cw4mldd2spck 2019-11-18T13:51:06.155Z abouzidi-BE448F9ECAB40ABE +27 fva1cc6n98a6nqhja23fzv6nhvd6rsdnsgfzvun80v 2019-11-18T13:54:58.043Z irisnyan5-D378BD6DB583FDF9 +28 fva1est0jnntmeu8g6yv99vaa0khlmm478ajwxuewj 2019-11-18T14:06:41.497Z NewRoad.Capital-F898ACE263EC1C4E +29 fva1hma5k4xz2rjsy8sg2zfa6e97cqyptzyw4ddcmr 2019-11-18T14:34:35.879Z kai-DA4CF56ADE526129 +30 fva1zmrnj3pkms3e86h5u35wyzkz42eptxq5ghgzrz 2019-11-18T14:35:11.703Z sam-70FA19B71FE14D20 +31 fva1ud47gxvlc3cc9efpga4hvlm44q9970kah4a6ms 2019-11-18T14:35:37.474Z xiaokai-58B908123A30A660 +32 fva1qkfu7e58pqm30d4ak0gguhnqnx00r6t5e97uug 2019-11-18T14:37:57.481Z steep-F09FF586F5000416 +33 fva1ygq0eqeaxmgmrqvxm7cvthpgsj7punakv5rnwf 2019-11-18T15:13:56.257Z yn-alex-FAA52713CBDB55F7 +34 fva1vn8xlcrpzgrhxwnvhed8xlpkvrrmnh4pygu85e 2019-11-18T15:14:47.493Z BC7FB7F830FD2C32 +35 fva1cn2q6840090kgkpdyl330x5css5kp7m4npyq9j 2019-11-18T15:16:26.945Z liviu-2C877AC873132C91 +36 fva1lyzpnl2k05wm2l5n7wc09ed7y3e9hfycy0x3kl 2019-11-18T15:41:16.888Z bharvest-n6 +37 fva18wvfx7j783wq7v6dkr3mjfna2s2ul3d5ktg7u9 2019-11-18T17:25:20.997Z ilya-genesislab-CE335B8803B8898E +38 fva1gyhapedd7l0jaxe35hnwxc2tmjcdrvzxv9k50p 2019-11-18T17:42:27.172Z syncnode-F422F328C14AFBFA +39 fva10mljgcjf9h2dq6fnms7pxfx8288mtw04g77pd6 2019-11-19T00:34:16.961Z ATEAM-B700C93D9E4578F666108BE80CB9A4E7643FF992 +40 fva1k4kxxfkhhwvyzxxxgksefkzpxahp9wfcapg2py 2019-11-19T02:22:32.772Z Mr.K-74D3AF53635231D9 +41 fva19f2vm6gvepakeazkuxsrylgazvq5axpx5x6kn0 2019-11-19T13:17:24.341Z valiris-5281C9C7BE5C2646 ok diff --git a/nyancat/v0.16/upgrade_verify.sh b/nyancat/v0.16/upgrade_verify.sh new file mode 100644 index 00000000..f0174c21 --- /dev/null +++ b/nyancat/v0.16/upgrade_verify.sh @@ -0,0 +1,77 @@ +#!/bin/bash + +echo "Parsing... DO NOT QUIT" + +declare -A hash_height_map +declare -A fva_hash_map +declare -A fva_vote_map +declare -A fva_moniker_map +declare -A testnet_identity_map +declare -A mainnet_identity_map + +### acquire validator_address of validators who has signed one of blocks between 89500 and 89800 from lcd and save it to hash_height_map, +### the height of software upgrade switched to version v0.16.0-rc1 is 89500. +for i in {89501..89801} +do + # echo $i; + PreCommits=$(curl -s 'https://lcd.nyancat.irisnet.org/blocks/'$i | jq '.block.last_commit.precommits') + for row in $(echo "${PreCommits}" | jq -r '.[] | @base64'); do + _jq() { + echo ${row} | base64 --decode | jq -r ${1} + } + validator_address=$(_jq '.validator_address') + height=$(_jq '.height') + ### filter validator_address of validator who already has signed last block. + if [ "$validator_address" != "null" -a -z "${hash_height_map[$validator_address]}" ] + then + hash_height_map["$validator_address"]=$height + fi + done +done +echo "count of hash_height_map: " ${#hash_height_map[@]} + +### acquire info of validators from api of nyancat explorer and save it to fva_hash_map and testnet_identity_map. +curl -s 'https://nyancat.irisplorer.io/api/stake/validators?page=1&size=100&type=""&origin=browser' | jq '.Data[] | .proposer_addr+":"+.operator_address+":"+.description.identity' | sed 's/"//g' > nyancat-task-temp +while read row; do + # echo $row + hash=$(echo $row | cut -d':' -f1) + fva=$(echo $row | cut -d':' -f2) + identity=$(echo $row | cut -d':' -f3) + fva_hash_map[$fva]=$hash + testnet_identity_map[$fva]=$identity +done < nyancat-task-temp + +### acquire info of validators from api of explorer of mainnet and save it to mainnet_identity_map. +curl -s 'https://www.irisplorer.io/api/stake/validators?page=1&size=100&type=""&origin=browser' | jq '.Data[] | .proposer_addr+":"+.operator_address+":"+.description.identity' | sed 's/"//g' > nyancat-task-temp +while read row; do + identity=$(echo $row | cut -d':' -f3) + # echo $identity + [ -n "$identity" ] && mainnet_identity_map[$identity]="ok" +done < nyancat-task-temp + +### acquire voted info in proposal #1 & #3 from api of nyancat explorer ordered by time. +curl -s 'https://nyancat.irisplorer.io/api/gov/proposals/1/voter_txs?page=1&size=100' | jq '.items | reverse | .[] | .voter+":"+.moniker+":"+.option+"::"+.timestamp' | sed 's/"//g' > nyancat-task-temp +curl -s 'https://nyancat.irisplorer.io/api/gov/proposals/3/voter_txs?page=1&size=100' | jq '.items | reverse | .[] | .voter+":"+.moniker+":"+.option+"::"+.timestamp' | sed 's/"//g' >> nyancat-task-temp +index=0 +while read row; do + # echo $row + fva=$(echo $row | cut -d':' -f1) + moniker=$(echo $row | cut -d':' -f2) + vote=$(echo $row | cut -d':' -f3) + timestamp=$(echo $row | awk -F:: '{print $2}') + ### filter validators of duplicate vote and unsigned one of 300 blocks after software upgrade. + if [ -z "${fva_vote_map[$fva]}" -a -n "${fva_hash_map[$fva]}" ] && [ -n "${hash_height_map[${fva_hash_map[$fva]}]}" ]; then + if [ $index -lt 40 ]; then + index=$[$index + 1] + fva_vote_map[$fva]=$vote + echo -e $index"\t"$fva"\t"$timestamp"\t"${testnet_identity_map[$fva]}"\t"$moniker + ### validators of mainnet beyond top 40 is passed by verifying their identity. + elif [ -n "${testnet_identity_map[$fva]}" ] && [ "${mainnet_identity_map[${testnet_identity_map[$fva]}]}" == "ok" ]; then + index=$[$index + 1] + fva_vote_map[$fva]=$vote + echo -e $index"\t"$fva"\t"$timestamp"\t"${testnet_identity_map[$fva]}"\t"$moniker"\t"ok + fi + fi + # echo $fva,$moniker,$vote +done < nyancat-task-temp +rm -f nyancat-task-temp