Coinholder Poll: Voting Authority Coordination

I’ve created the elections and generated the corresponding JSON files for the coinholder poll. The seed phrases have been saved. Next, the four voting authorities need to coordinate and get their BFT nodes up and running.

cc: @dismad, @hanh, @james_katz, @outgoing.doze

11 Likes

My validator:

"validators": [
    {
      "address": "B23AFDF5EAE0C215C7D3901AD5BF65DBB51ECB34",
      "pub_key": {
        "type": "tendermint/PubKeyEd25519",
        "value": "P1KLHfnHUfngfqj6+4ivElQQyiNxnIYGhTe82fxxS+4="
      },
      "power": "10",
      "name": ""
    }
  ],

my peerinfo:

9a3840b0bf8f950c39e4af0bbf3988ea27cf85c4@69.30.226.234:26656

6 Likes
  "validators": [
    {
      "address": "A09E54E8FA7D748F6DFEC92AACC5E5EE565D2F2B",
      "pub_key": {
        "type": "tendermint/PubKeyEd25519",
        "value": "BXT522PDkbMC1XfQg+edKaaSRZQnM/4VssVfNHatO90="
      },
      "power": "10",
      "name": ""
    }
  ],
 

@dismad I’m just teasing with the :-1: . You’ve been a real pain with me so far but I know your intentions are good and I appreciate everything you do for the project. What a pain though. :hugs:

9 Likes

Will also need to all update our persistent_peers.

You can use ./cometbft show_node_id

To grab your node id.

I suppose DM’m your full peer info to me would be ideal, unless you want to post it publicly.

example: id:ip:port

persistent_peers = "fedcba@11.22.33.44:26656,beefdead@55.66.77.88:20000"

When we have all 4, I will combine all the validator info and post the complete genesis.json. If we all agree, we will run the nodes and start the election.

1 Like

$ ./cometbft show_node_id
2cc7594fff5febfdefd4769cd679b6f13f915863

So I suppose that would give us:

2cc7594fff5febfdefd4769cd679b6f13f915863@80.78.27.254:26656

Let’s see if the whole thing can be done safely in a public manner. Only helps with the credibility of the vote.

1 Like

One validator is missing (need 4).

Also need the election.json

Quick update: One of the voting authorities was unavailable yesterday, so we weren’t able to launch as planned. All four BFT nodes should be up and running today. After that, there will be some testing to ensure the system handles multiple simultaneous elections correctly, since each question will have its own URL. Once testing is complete, voting will go live.

4 Likes

Suggestion for next time: double the minimum number of participants required. We need 3 minimum for the blockchain to produce blocks, 6 participants seems like the minimum reasonable to start so we avoid the situation we are in right now.

The reality is we could / should have a lot more participants and celebrate the event like The Ceremony. Now the fact that so few are applying to contribute and help here, particularly those receiving tokens from the dev fund, is a bit cringe.

2 Likes

Sorry, I’m late.

"validators": [
    {
      "address": "E36CA811E7D77A48E7CD7B70F8B408A528E90942",
      "pub_key": {
        "type": "tendermint/PubKeyEd25519",
        "value": "KiqQIIhBTQ7TKfBKxeeDd1Gag9cHus/Hynxk3GR+apg="
      },
      "power": "10",
      "name": ""
    }
  ]

node id + ip + port

11f7f5cba0c21fcd94c603c5882cdcf5e12953f3@54.157.231.20:26656

:rocket:

4 Likes

What’s the status of the BFT nodes? If you’re having trouble coordinating, please share your availability in UTC so we can find a time to test and launch the poll. We need to get things started as soon as possible. Thanks!

hahn and I are live, waiting on james and doze

to see connected peers:

curl -s http://localhost:26657/net_info | jq -r '.result.peers[].node_info.id'

and we have 3/4 peers connected!

:fire:

2 Likes

There are only 3/4 validators (address / pub_key / node_id) shared in here. cc @hanh

somebody should have given you the files on signal…

I’m not on Signal. Either way, could we do this publicly so that anyone can observe the process transparently, and ideally even join and verify blocks permissionlessly?

The genesis file should go to the config dir. The config file can go to the config dir too unless you made changes. The only value I changed is the persistent_peers value
The json files should go the data dir in zcash-vote-server (create if needed).

2 Likes

@outgoing.doze Your node is down and is not contributing to consensus.

both cometbft (tcp/26656) and zcash-vote-server (tcp/8000) need to be open, correct?

1 Like

Also update the moniker so we don’t have double hahns when listing peers :light_bulb:

config.toml

# A custom human readable name for this node
moniker = "zecvote.zone"
$ curl -s http://localhost:26657/net_info | jq -r '.result.peers[].node_info.id'
6a89b53989a8f266b4649b14c27691dcc55f69d9
11f7f5cba0c21fcd94c603c5882cdcf5e12953f3
9a3840b0bf8f950c39e4af0bbf3988ea27cf85c4

Receiving some errors though:

E[2025-04-19|16:17:37.347] Invalid block                                module=blocksync height=1660 err="wrong Block.Header.AppHash.  Expected CD9D7740FFFF571A
595FA3507349C6D8A073362D8840C1A2DBE0C02D8355DDD9, got 7AD55C5F263B80D0176618B6E27FB737374A287E8E5FF531AFD367FE3686F4D8. Check ABCI app for non-determinism"     
E[2025-04-19|16:17:37.347] Stopping peer for error                      module=p2p peer="Peer{MConn{54.157.231.20:26656} 11f7f5cba0c21fcd94c603c5882cdcf5e12953f
3 out}" err="reactor validation error: wrong Block.Header.AppHash.  Expected CD9D7740FFFF571A595FA3507349C6D8A073362D8840C1A2DBE0C02D8355DDD9, got 7AD55C5F263B8
0D0176618B6E27FB737374A287E8E5FF531AFD367FE3686F4D8. Check ABCI app for non-determinism" 

update 01: I have also just removed my own node from persistent_peers, maybe this will help.

update 02: At least from the outside it’s listening:

user@laptop ~ % nc -vz 80.78.27.254 26656
Connection to 80.78.27.254 port 26656 [tcp/*] succeeded!
user@laptop ~ % nc -vz 80.78.27.254 8000 
Connection to 80.78.27.254 port 8000 [tcp/irdmi] succeeded!

update 03: Still getting errors though.

What does

curl -s http://localhost:26657/status show?

curl -s http://localhost:26657/status | jq 
{
  "jsonrpc": "2.0",
  "id": -1,
  "result": {
    "node_info": {
      "protocol_version": {
        "p2p": "9",
        "block": "11",
        "app": "1"
      },
      "id": "9a3840b0bf8f950c39e4af0bbf3988ea27cf85c4",
      "listen_addr": "tcp://0.0.0.0:26656",
      "network": "test-chain-JYZFOb",
      "version": "1.0.1",
      "channels": "40202122233038606100",
      "moniker": "zecvote.zone",
      "other": {
        "tx_index": "on",
        "rpc_address": "tcp://127.0.0.1:26657"
      }
    },
    "sync_info": {
      "latest_block_hash": "54CFC62A3E354A9839A261DC0DC2615FFC8C277BE77E236A11162F40D5350BA6",
      "latest_app_hash": "556BE580CD4147880632DB09B0E154B0DBDFA6673FA2AF5585257F80E81485FF",
      "latest_block_height": "5577",
      "latest_block_time": "2025-04-19T16:44:36.761389497Z",
      "earliest_block_hash": "42D8FF8FB1E991380B635EED93CEC205E252384543F5A9A77A5A60FBA70F7979",
      "earliest_app_hash": "",
      "earliest_block_height": "1",
      "earliest_block_time": "2025-04-18T02:15:34.220961Z",
      "catching_up": false
    },
    "validator_info": {
      "address": "B23AFDF5EAE0C215C7D3901AD5BF65DBB51ECB34",
      "pub_key": {
        "type": "tendermint/PubKeyEd25519",
        "value": "P1KLHfnHUfngfqj6+4ivElQQyiNxnIYGhTe82fxxS+4="
      },
      "voting_power": "10"
    }
  }
}