poanetwork / poa-ballot-stats

Read POA voting records and rank voters by how many ballots they missed.
GNU Lesser General Public License v3.0
7 stars 6 forks source link

(Question) Different number of ballots per validator for old validators #14

Closed igorbarinov closed 6 years ago

igorbarinov commented 6 years ago

I run the tool with cargo run -- -c contracts/sokol.json https://sokol.poa.network -v -p "12 weeks" to get missed ballots per validator. Here are results:

        Missed  Voting key   Mining key   Name
   9/16, 56.3%  0x2b6e…adc1  0xdb12…ea85  Michael Milirud
   7/22, 31.9%  0x4a58…85fa  0x4ca0…46a0  Jefferson Flowers
   6/19, 31.6%  0x30bd…75aa  0x58ba…34cd  John D. Storey
   6/19, 31.6%  0x931d…3d37  0x46bc…5aec  Lillian Chan
   6/22, 27.3%  0x9a1f…a313  0x82e4…c248  Roman Storm
   3/16, 18.8%  0x7b43…8d90  0x2346…8d28  Stephen Arsenault
   4/22, 18.2%  0x0e94…8cf1  0x5b2c…11e5  Marat Pekker
   4/22, 18.2%  0xb911…b051  0xf747…62ed  Alexey Emelyanov
   3/20, 15.0%  0xa1d0…cb8c  0x0b55…51d6  Walter Karshat
   2/16, 12.5%  0x3ce1…b87e  0xde88…e024  Melanie Marsollier
   1/22,  4.6%  0xb494…0489  0x4e20…25b3  Jim O'Regan
   1/22,  4.6%  0xb52d…76d8  0xed2a…1c36  Sherina Yang
    0/7,  0.0%  0xb307…a7a1  0xf168…d6e5  Xiaobo Chen
    0/9,  0.0%  0xc2de…fad6  0x706b…1c4e  Oxana Kunets
   0/14,  0.0%  0x33e3…7694  0x7bd5…2392  Adam Kagy
   0/17,  0.0%  0x7d52…347d  0x063f…4e15  Ilmira Nugumanova
   0/19,  0.0%  0x4df3…3135  0xe2ac…0381  John H. LeGassic
   0/22,  0.0%  0xc900…bf64  0xcbbc…90c1  Sviataslau Vishneuski
   0/22,  0.0%  0xf153…9a96  0xa0b0…b941  Rocco Mancini

some of validators are relatively new, e.g. Oxana Kunets or Xiabo Chen, and I understand why they have not many ballots where they should participate.

Although, some validators, e.g. Michael Milirud onboarded before 12 weeks period and should have same number of ballots to participate as Rocco Mancini, or John D. Storey They are old validators but have 16,19,22 ballots.

igorbarinov commented 6 years ago

Maybe I'm not right

8 weeks

        Missed  Voting key   Mining key   Name
   7/14, 50.0%  0x2b6e…adc1  0xdb12…ea85  Michael Milirud
   4/14, 28.6%  0x0e94…8cf1  0x5b2c…11e5  Marat Pekker
   4/14, 28.6%  0x30bd…75aa  0x58ba…34cd  John D. Storey
   4/14, 28.6%  0x931d…3d37  0x46bc…5aec  Lillian Chan
   4/14, 28.6%  0x9a1f…a313  0x82e4…c248  Roman Storm
   4/14, 28.6%  0xb911…b051  0xf747…62ed  Alexey Emelyanov
   3/14, 21.5%  0x4a58…85fa  0x4ca0…46a0  Jefferson Flowers
   3/14, 21.5%  0x7b43…8d90  0x2346…8d28  Stephen Arsenault
   3/14, 21.5%  0xa1d0…cb8c  0x0b55…51d6  Walter Karshat
   1/14,  7.2%  0xb494…0489  0x4e20…25b3  Jim O'Regan
    0/7,  0.0%  0xb307…a7a1  0xf168…d6e5  Xiaobo Chen
    0/9,  0.0%  0xc2de…fad6  0x706b…1c4e  Oxana Kunets
   0/14,  0.0%  0x33e3…7694  0x7bd5…2392  Adam Kagy
   0/14,  0.0%  0x3ce1…b87e  0xde88…e024  Melanie Marsollier
   0/14,  0.0%  0x4df3…3135  0xe2ac…0381  John H. LeGassic
   0/14,  0.0%  0x7d52…347d  0x063f…4e15  Ilmira Nugumanova
   0/14,  0.0%  0xb52d…76d8  0xed2a…1c36  Sherina Yang
   0/14,  0.0%  0xc900…bf64  0xcbbc…90c1  Sviataslau Vishneuski
   0/14,  0.0%  0xf153…9a96  0xa0b0…b941  Rocco Mancini

4 weeks

        Missed  Voting key   Mining key   Name
    3/6, 50.0%  0x0e94…8cf1  0x5b2c…11e5  Marat Pekker
    3/6, 50.0%  0x2b6e…adc1  0xdb12…ea85  Michael Milirud
    3/6, 50.0%  0x7b43…8d90  0x2346…8d28  Stephen Arsenault
    3/6, 50.0%  0xa1d0…cb8c  0x0b55…51d6  Walter Karshat
    0/6,  0.0%  0x30bd…75aa  0x58ba…34cd  John D. Storey
    0/6,  0.0%  0x33e3…7694  0x7bd5…2392  Adam Kagy
    0/6,  0.0%  0x3ce1…b87e  0xde88…e024  Melanie Marsollier
    0/6,  0.0%  0x4a58…85fa  0x4ca0…46a0  Jefferson Flowers
    0/6,  0.0%  0x4df3…3135  0xe2ac…0381  John H. LeGassic
    0/6,  0.0%  0x7d52…347d  0x063f…4e15  Ilmira Nugumanova
    0/6,  0.0%  0x931d…3d37  0x46bc…5aec  Lillian Chan
    0/6,  0.0%  0x9a1f…a313  0x82e4…c248  Roman Storm
    0/6,  0.0%  0xb307…a7a1  0xf168…d6e5  Xiaobo Chen
    0/6,  0.0%  0xb494…0489  0x4e20…25b3  Jim O'Regan
    0/6,  0.0%  0xb52d…76d8  0xed2a…1c36  Sherina Yang
    0/6,  0.0%  0xb911…b051  0xf747…62ed  Alexey Emelyanov
    0/6,  0.0%  0xc2de…fad6  0x706b…1c4e  Oxana Kunets
    0/6,  0.0%  0xc900…bf64  0xcbbc…90c1  Sviataslau Vishneuski
    0/6,  0.0%  0xf153…9a96  0xa0b0…b941  Rocco Mancini
afck commented 6 years ago

There are some weird InitiateChange events around that time, where the set suddenly went down to only two validators:

InitiateChange { parent_hash: 0x3130…4e33, new_set: [0x1092…ebae, 0x7138…57a6] }

I'll investigate in more detail next week. The tool is not checking the parent hash yet, so possibly adding that will filter out InitiateChange events that didn't go through.

igorbarinov commented 6 years ago

Let's add parameter from which block we'll start crawling? e.g. on Sokol before HF1 https://github.com/poanetwork/wiki/wiki/HFs-Sokol-2018-01-18 we had a strange behavior with InitiateChange is it before block 509355 ?

afck commented 6 years ago

Those events with the very small validator sets were later than that:

• #1385657 InitiateChange { parent_hash: 0x3130…4e33, new_set: [0x1092…ebae, 0x7138…57a6] }
• #1385705 InitiateChange { parent_hash: 0x1d29…f61a, new_set: [0x1092…ebae, 0x7138…57a6, 0xe5aa…6b59] }
• #1385727 InitiateChange { parent_hash: 0xefbe…7e0c, new_set: [0x1092…ebae, 0x7138…57a6, 0xe5aa…6b59, 0xa5f6…7709] }
igorbarinov commented 6 years ago

@varasev Hi Vadim, please help us investigate why we had that small validator sets Andreas mentioned in the last comment (on Sokol)

varasev commented 6 years ago

InitiateChange events in blocks 1385657, 1385705, 1385727 are not related to the current PoaNetworkConsensus contract that has the address 0x03048F666359CFD3C74a1A5b9a97848BF71d5038.

It was just my test transactions I made on March 13 in Sokol network with a small set of test validators.

I'll try to scan InitiateChange event for the current PoaNetworkConsensus contract and its previous versions in Sokol network. We can see previous versions' addresses in https://github.com/poanetwork/poa-chain-spec/blob/sokol/spec.json

rstormsf commented 6 years ago

I'm curious where did @afck got your test contract address

igorbarinov commented 6 years ago

@afck could you use only PoaNetworkConsensus contract in the tool?

varasev commented 6 years ago

I've written a small script that shows a history of InitiateChange event for all three PoaNetworkConsensus contracts in Sokol network:

== Contract 0x8bf38d4764929064f2d4d3a56520a76ab3df415b ==

#672:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248

#194806:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28

#200641:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941

#205821:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941
  0xe2ac1c6843A33f81aE4935E5EF1277a392990381

#212436:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941
  0xe2ac1c6843A33f81aE4935E5EF1277a392990381
  0xde88a1a783b29a0b476BE28beEF38B4A85c0e024

#267590:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941
  0xe2ac1c6843A33f81aE4935E5EF1277a392990381
  0xde88a1a783b29a0b476BE28beEF38B4A85c0e024
  0x257101F4e39A9ae40B08f7a076Afb2eeb38244Dd

#277841:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941
  0xe2ac1c6843A33f81aE4935E5EF1277a392990381
  0xde88a1a783b29a0b476BE28beEF38B4A85c0e024
  0x257101F4e39A9ae40B08f7a076Afb2eeb38244Dd
  0xA46C53bDf50CDd073b79A58455070690Bb5E1Cc1

#306811:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941
  0xe2ac1c6843A33f81aE4935E5EF1277a392990381
  0xde88a1a783b29a0b476BE28beEF38B4A85c0e024
  0x257101F4e39A9ae40B08f7a076Afb2eeb38244Dd
  0xA46C53bDf50CDd073b79A58455070690Bb5E1Cc1
  0x4E20226355b4464Cf8f3b67Fc318b753A7c125B3

== Contract 0xf5cE3f5D0366D6ec551C74CCb1F67e91c56F2e34 ==

#387289:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941
  0xe2ac1c6843A33f81aE4935E5EF1277a392990381
  0xde88a1a783b29a0b476BE28beEF38B4A85c0e024
  0x4E20226355b4464Cf8f3b67Fc318b753A7c125B3
  0xA46C53bDf50CDd073b79A58455070690Bb5E1Cc1

#387289:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941
  0xe2ac1c6843A33f81aE4935E5EF1277a392990381
  0xde88a1a783b29a0b476BE28beEF38B4A85c0e024
  0x4E20226355b4464Cf8f3b67Fc318b753A7c125B3
  0xA46C53bDf50CDd073b79A58455070690Bb5E1Cc1
  0xdb1207770E0a4258D7A4Ce49aB037f92564feA85

#387293:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941
  0xe2ac1c6843A33f81aE4935E5EF1277a392990381
  0xde88a1a783b29a0b476BE28beEF38B4A85c0e024
  0x4E20226355b4464Cf8f3b67Fc318b753A7c125B3
  0xdb1207770E0a4258D7A4Ce49aB037f92564feA85

#387293:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941
  0xe2ac1c6843A33f81aE4935E5EF1277a392990381
  0xde88a1a783b29a0b476BE28beEF38B4A85c0e024
  0x4E20226355b4464Cf8f3b67Fc318b753A7c125B3
  0xdb1207770E0a4258D7A4Ce49aB037f92564feA85
  0xeD2ACEb63Eb7928e67c854C24F61cF41db311c36

#447755:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941
  0xe2ac1c6843A33f81aE4935E5EF1277a392990381
  0xde88a1a783b29a0b476BE28beEF38B4A85c0e024
  0x4E20226355b4464Cf8f3b67Fc318b753A7c125B3
  0xdb1207770E0a4258D7A4Ce49aB037f92564feA85
  0xeD2ACEb63Eb7928e67c854C24F61cF41db311c36
  0xE0C755279c00A4EAD2c015Ce23fe02973028427b

== Contract 0x03048F666359CFD3C74a1A5b9a97848BF71d5038 ==

#555470:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941
  0xe2ac1c6843A33f81aE4935E5EF1277a392990381
  0xde88a1a783b29a0b476BE28beEF38B4A85c0e024
  0x4E20226355b4464Cf8f3b67Fc318b753A7c125B3
  0xdb1207770E0a4258D7A4Ce49aB037f92564feA85
  0xeD2ACEb63Eb7928e67c854C24F61cF41db311c36
  0xE0C755279c00A4EAD2c015Ce23fe02973028427b
  0x4Ca0f1a7B5a2723A9094B7706BaA23C2B8BD46A0

#562574:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941
  0xe2ac1c6843A33f81aE4935E5EF1277a392990381
  0xde88a1a783b29a0b476BE28beEF38B4A85c0e024
  0x4E20226355b4464Cf8f3b67Fc318b753A7c125B3
  0xdb1207770E0a4258D7A4Ce49aB037f92564feA85
  0xeD2ACEb63Eb7928e67c854C24F61cF41db311c36
  0x4Ca0f1a7B5a2723A9094B7706BaA23C2B8BD46A0
  0x5B2cf18296B2ABf23288Ef2F9A09C6E1275311e5

#586847:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941
  0xe2ac1c6843A33f81aE4935E5EF1277a392990381
  0xde88a1a783b29a0b476BE28beEF38B4A85c0e024
  0x4E20226355b4464Cf8f3b67Fc318b753A7c125B3
  0xdb1207770E0a4258D7A4Ce49aB037f92564feA85
  0xeD2ACEb63Eb7928e67c854C24F61cF41db311c36
  0x4Ca0f1a7B5a2723A9094B7706BaA23C2B8BD46A0
  0x5B2cf18296B2ABf23288Ef2F9A09C6E1275311e5
  0x58baD7Cf29428c3D17Cb859f5C580D3C25F134CD

#630737:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941
  0xe2ac1c6843A33f81aE4935E5EF1277a392990381
  0xde88a1a783b29a0b476BE28beEF38B4A85c0e024
  0x4E20226355b4464Cf8f3b67Fc318b753A7c125B3
  0xdb1207770E0a4258D7A4Ce49aB037f92564feA85
  0xeD2ACEb63Eb7928e67c854C24F61cF41db311c36
  0x4Ca0f1a7B5a2723A9094B7706BaA23C2B8BD46A0
  0x5B2cf18296B2ABf23288Ef2F9A09C6E1275311e5
  0x58baD7Cf29428c3D17Cb859f5C580D3C25F134CD
  0xcBbcd5Ac86F9a50e13313633B262e16f695a90c1

#680366:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941
  0xe2ac1c6843A33f81aE4935E5EF1277a392990381
  0xde88a1a783b29a0b476BE28beEF38B4A85c0e024
  0x4E20226355b4464Cf8f3b67Fc318b753A7c125B3
  0xdb1207770E0a4258D7A4Ce49aB037f92564feA85
  0xeD2ACEb63Eb7928e67c854C24F61cF41db311c36
  0x4Ca0f1a7B5a2723A9094B7706BaA23C2B8BD46A0
  0x5B2cf18296B2ABf23288Ef2F9A09C6E1275311e5
  0x58baD7Cf29428c3D17Cb859f5C580D3C25F134CD
  0xcBbcd5Ac86F9a50e13313633B262e16f695a90c1
  0x0b55FdBa9e288C23cF3EB04c6f237D3bd0f751d6

#743509:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941
  0xe2ac1c6843A33f81aE4935E5EF1277a392990381
  0xde88a1a783b29a0b476BE28beEF38B4A85c0e024
  0x4E20226355b4464Cf8f3b67Fc318b753A7c125B3
  0xdb1207770E0a4258D7A4Ce49aB037f92564feA85
  0xeD2ACEb63Eb7928e67c854C24F61cF41db311c36
  0x4Ca0f1a7B5a2723A9094B7706BaA23C2B8BD46A0
  0x5B2cf18296B2ABf23288Ef2F9A09C6E1275311e5
  0x58baD7Cf29428c3D17Cb859f5C580D3C25F134CD
  0xcBbcd5Ac86F9a50e13313633B262e16f695a90c1
  0x0b55FdBa9e288C23cF3EB04c6f237D3bd0f751d6
  0x46bc76E617E72cE6658C199E222C07cBa2Fb5aEc

#879887:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941
  0xe2ac1c6843A33f81aE4935E5EF1277a392990381
  0xde88a1a783b29a0b476BE28beEF38B4A85c0e024
  0x4E20226355b4464Cf8f3b67Fc318b753A7c125B3
  0xdb1207770E0a4258D7A4Ce49aB037f92564feA85
  0xeD2ACEb63Eb7928e67c854C24F61cF41db311c36
  0x4Ca0f1a7B5a2723A9094B7706BaA23C2B8BD46A0
  0x5B2cf18296B2ABf23288Ef2F9A09C6E1275311e5
  0x58baD7Cf29428c3D17Cb859f5C580D3C25F134CD
  0xcBbcd5Ac86F9a50e13313633B262e16f695a90c1
  0x0b55FdBa9e288C23cF3EB04c6f237D3bd0f751d6
  0x46bc76E617E72cE6658C199E222C07cBa2Fb5aEc
  0xf74769d9FFe1Cd17F20b283995CF9e7fA2A262ed

#1128860:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941
  0xe2ac1c6843A33f81aE4935E5EF1277a392990381
  0xde88a1a783b29a0b476BE28beEF38B4A85c0e024
  0x4E20226355b4464Cf8f3b67Fc318b753A7c125B3
  0xdb1207770E0a4258D7A4Ce49aB037f92564feA85
  0xeD2ACEb63Eb7928e67c854C24F61cF41db311c36
  0x4Ca0f1a7B5a2723A9094B7706BaA23C2B8BD46A0
  0x5B2cf18296B2ABf23288Ef2F9A09C6E1275311e5
  0x58baD7Cf29428c3D17Cb859f5C580D3C25F134CD
  0xcBbcd5Ac86F9a50e13313633B262e16f695a90c1
  0x0b55FdBa9e288C23cF3EB04c6f237D3bd0f751d6
  0x46bc76E617E72cE6658C199E222C07cBa2Fb5aEc
  0xf74769d9FFe1Cd17F20b283995CF9e7fA2A262ed
  0x8527153b9A747AdCE9fDF4274aFE39211F15E0d3

#1191257:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941
  0xe2ac1c6843A33f81aE4935E5EF1277a392990381
  0xde88a1a783b29a0b476BE28beEF38B4A85c0e024
  0x4E20226355b4464Cf8f3b67Fc318b753A7c125B3
  0xdb1207770E0a4258D7A4Ce49aB037f92564feA85
  0xeD2ACEb63Eb7928e67c854C24F61cF41db311c36
  0x4Ca0f1a7B5a2723A9094B7706BaA23C2B8BD46A0
  0x5B2cf18296B2ABf23288Ef2F9A09C6E1275311e5
  0x58baD7Cf29428c3D17Cb859f5C580D3C25F134CD
  0xcBbcd5Ac86F9a50e13313633B262e16f695a90c1
  0x0b55FdBa9e288C23cF3EB04c6f237D3bd0f751d6
  0x46bc76E617E72cE6658C199E222C07cBa2Fb5aEc
  0xf74769d9FFe1Cd17F20b283995CF9e7fA2A262ed

#1534002:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941
  0xe2ac1c6843A33f81aE4935E5EF1277a392990381
  0xde88a1a783b29a0b476BE28beEF38B4A85c0e024
  0x4E20226355b4464Cf8f3b67Fc318b753A7c125B3
  0xdb1207770E0a4258D7A4Ce49aB037f92564feA85
  0xeD2ACEb63Eb7928e67c854C24F61cF41db311c36
  0x4Ca0f1a7B5a2723A9094B7706BaA23C2B8BD46A0
  0x5B2cf18296B2ABf23288Ef2F9A09C6E1275311e5
  0x58baD7Cf29428c3D17Cb859f5C580D3C25F134CD
  0xcBbcd5Ac86F9a50e13313633B262e16f695a90c1
  0x0b55FdBa9e288C23cF3EB04c6f237D3bd0f751d6
  0x46bc76E617E72cE6658C199E222C07cBa2Fb5aEc
  0xf74769d9FFe1Cd17F20b283995CF9e7fA2A262ed
  0x063fE3bAFcf93D099dd7E09b3372641dc5E04e15

#1570386:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941
  0xe2ac1c6843A33f81aE4935E5EF1277a392990381
  0xde88a1a783b29a0b476BE28beEF38B4A85c0e024
  0x4E20226355b4464Cf8f3b67Fc318b753A7c125B3
  0xdb1207770E0a4258D7A4Ce49aB037f92564feA85
  0xeD2ACEb63Eb7928e67c854C24F61cF41db311c36
  0x4Ca0f1a7B5a2723A9094B7706BaA23C2B8BD46A0
  0x5B2cf18296B2ABf23288Ef2F9A09C6E1275311e5
  0x58baD7Cf29428c3D17Cb859f5C580D3C25F134CD
  0xcBbcd5Ac86F9a50e13313633B262e16f695a90c1
  0x0b55FdBa9e288C23cF3EB04c6f237D3bd0f751d6
  0x46bc76E617E72cE6658C199E222C07cBa2Fb5aEc
  0xf74769d9FFe1Cd17F20b283995CF9e7fA2A262ed
  0x063fE3bAFcf93D099dd7E09b3372641dc5E04e15
  0x7BD556B838a9E330a815a53EF39e04Ff2fDf2392

#2068009:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941
  0xe2ac1c6843A33f81aE4935E5EF1277a392990381
  0xde88a1a783b29a0b476BE28beEF38B4A85c0e024
  0x4E20226355b4464Cf8f3b67Fc318b753A7c125B3
  0xdb1207770E0a4258D7A4Ce49aB037f92564feA85
  0xeD2ACEb63Eb7928e67c854C24F61cF41db311c36
  0x4Ca0f1a7B5a2723A9094B7706BaA23C2B8BD46A0
  0x5B2cf18296B2ABf23288Ef2F9A09C6E1275311e5
  0x58baD7Cf29428c3D17Cb859f5C580D3C25F134CD
  0xcBbcd5Ac86F9a50e13313633B262e16f695a90c1
  0x0b55FdBa9e288C23cF3EB04c6f237D3bd0f751d6
  0x46bc76E617E72cE6658C199E222C07cBa2Fb5aEc
  0xf74769d9FFe1Cd17F20b283995CF9e7fA2A262ed
  0x063fE3bAFcf93D099dd7E09b3372641dc5E04e15
  0x7BD556B838a9E330a815a53EF39e04Ff2fDf2392
  0x706b85eA94221C5f0911a51aD0293e4bBf811C4E

#2144556:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941
  0xe2ac1c6843A33f81aE4935E5EF1277a392990381
  0xde88a1a783b29a0b476BE28beEF38B4A85c0e024
  0x4E20226355b4464Cf8f3b67Fc318b753A7c125B3
  0xdb1207770E0a4258D7A4Ce49aB037f92564feA85
  0xeD2ACEb63Eb7928e67c854C24F61cF41db311c36
  0x4Ca0f1a7B5a2723A9094B7706BaA23C2B8BD46A0
  0x5B2cf18296B2ABf23288Ef2F9A09C6E1275311e5
  0x58baD7Cf29428c3D17Cb859f5C580D3C25F134CD
  0xcBbcd5Ac86F9a50e13313633B262e16f695a90c1
  0x0b55FdBa9e288C23cF3EB04c6f237D3bd0f751d6
  0x46bc76E617E72cE6658C199E222C07cBa2Fb5aEc
  0xf74769d9FFe1Cd17F20b283995CF9e7fA2A262ed
  0x063fE3bAFcf93D099dd7E09b3372641dc5E04e15
  0x7BD556B838a9E330a815a53EF39e04Ff2fDf2392
  0x706b85eA94221C5f0911a51aD0293e4bBf811C4E
  0xF168667104e8785Ad9C49dBf713e1AfDe250D6e5

#2536790:
  0xE8DDc5c7A2d2F0D7a9798459c0104fDf5E987ACA
  0x82e4e61e7f5139ff0a4157A5Bc687eF42294c248
  0x23468dB7f4b8Ff4924B0709aB7Ae0971B3Bc8d28
  0xA0B0D4cCF483b000F0aF59C47A1944668477b941
  0xe2ac1c6843A33f81aE4935E5EF1277a392990381
  0xde88a1a783b29a0b476BE28beEF38B4A85c0e024
  0x4E20226355b4464Cf8f3b67Fc318b753A7c125B3
  0xdb1207770E0a4258D7A4Ce49aB037f92564feA85
  0xeD2ACEb63Eb7928e67c854C24F61cF41db311c36
  0x4Ca0f1a7B5a2723A9094B7706BaA23C2B8BD46A0
  0x5B2cf18296B2ABf23288Ef2F9A09C6E1275311e5
  0x58baD7Cf29428c3D17Cb859f5C580D3C25F134CD
  0xcBbcd5Ac86F9a50e13313633B262e16f695a90c1
  0x0b55FdBa9e288C23cF3EB04c6f237D3bd0f751d6
  0x46bc76E617E72cE6658C199E222C07cBa2Fb5aEc
  0xf74769d9FFe1Cd17F20b283995CF9e7fA2A262ed
  0x063fE3bAFcf93D099dd7E09b3372641dc5E04e15
  0x7BD556B838a9E330a815a53EF39e04Ff2fDf2392
  0x706b85eA94221C5f0911a51aD0293e4bBf811C4E
  0xF168667104e8785Ad9C49dBf713e1AfDe250D6e5
  0x96da16d5a75bf79c0dBf9b08274bCf3c4c1f1721

Node.js source code:

const axios = require('axios');
const Web3 = require('web3');
const web3 = new Web3(new Web3.providers.HttpProvider("https://sokol.poa.network"));

main();

async function main() {
    let abi;

    try {
        console.log('Retrieve PoaNetworkConsensus ABI...');
        abi = (await axios.get('https://raw.githubusercontent.com/poanetwork/poa-chain-spec/sokol/abis/PoaNetworkConsensus.abi.json')).data;
        console.log('');
    } catch (err) {
        console.log('Cannot read ABI');
        return;
    }

    let contractsAddresses = [
        '0x8bf38d4764929064f2d4d3a56520a76ab3df415b',
        '0xf5cE3f5D0366D6ec551C74CCb1F67e91c56F2e34',
        '0x03048F666359CFD3C74a1A5b9a97848BF71d5038'
    ];

    for (let c = 0; c < contractsAddresses.length; c++) {
        const address = contractsAddresses[c];
        const instance = new web3.eth.Contract(abi, address);

        console.log(`== Contract ${address} ==`);
        console.log('');

        let events = await instance.getPastEvents('InitiateChange', {fromBlock: 0, toBlock: 'latest'});

        for (let i = 0; i < events.length; i++) {
            const event = events[i];

            console.log(`#${event.blockNumber}:`);      
            for (let s = 0; s < event.returnValues.newSet.length; s++) {
                console.log(`  ${event.returnValues.newSet[s]}`);
            }
            console.log('');
        }
    }
}
afck commented 6 years ago

I'm curious where did @afck got your test contract address

Nowhere; I just didn't filter for the contract address at all, so it returned all instances. But fixing that will still return all InitiateChange events, including the ones that didn't get finalized. So I'll do #16 instead.

varasev commented 6 years ago

Yes, we can't check if some validators set has been finalized, because ChangeFinalized event has never been emitted due to Parity limitations.

I think we could use KeysManager.VotingKeyChanged event to confirm that a specified mining key has been finalized. Because VotingKeyChanged event may only be emitted if mining key is active (i.e., finalized), and a voting key is always added for a new validator.

VotingKeyChanged event (with action parameter equal to "added") is emitted here: https://github.com/poanetwork/poa-network-consensus-contracts/blob/6094198e3789225839b8ab4058a2d89658e9e57d/contracts/KeysManager.sol#L263

afck commented 6 years ago

Thanks, I'll try it out! That would be a better solution which should even work without --pruning=archive.