Голосование Network Steward

Мы считаем, что универсальным фактом является то, что любая неответственная власть, как бы благополучна она ни была, в конечном итоге подвергнется коррупции, неэффективности или простому отсутствию инноваций. Именно поэтому мы встроили в решение блокчейна PKT механизм в случае, если сетевой хранитель перестает выполнять свои обязанности. Каждый держатель PKT имеет возможность проголосовать за отставку сетевого хранителя и позволить новому занять его место. Отставка - это несущественное событие, для ее осуществления требуется, чтобы хотя бы 50% всего PKT, существующего на момент голосования, выразили поддержку этой инициативе. Однако, если она все же произойдет, то за ней последует автоматическое подсчет голосов, и сетевой хранитель будет заменен.

Network Steward

Принцип голосования

Голос состоит из двух частей, VoteFor (За) и VoteAgainst (Против). VoteAgainst - это голос за отставку, а VoteFor - это голос за того, кто должен стать сетевым хранителем в случае отставки.

Сетевой хранитель представлен в виде выходного сценария транзакции, а не ключа, закодированного сценарием. Простой способ получить сценарий для определенного адреса - заплатить немного денег на этот адрес и затем изучить сырую транзакцию и скопировать выход.

Изучая транзакцию coinbase, мы видим, что выход переведен сетевому хранителю https://explorer.pkt.cash/address/ а сценарий для этого выхода следующий: 0020d5c1005c0d4012d3ae2672319e7f9eb15a57516aeefabbbc062265f67e308f2

$ ./bin/pktctl getrawtransaction 505d2750577a3d3c739c2a650ec0e03a7ddb1f81080c820ab1a317575020745b 1
{
  "hex": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff10022913000b2f503253482f706b74642fffffffff03cac2a6ee0000000
01976a9147d9df4279212fd7def4c47abf2d5f3a6c6eaf4ae88ac362f5f3b00000000220020d5c1005c0d4012d3ae2672319e7f9eb15a57516aeefabbbc062265f67e308f2b000000000000
0000326a3009f91102ffff7f20c70542e4ca2363ce0149e845305f25564e7ce81e33411ad570df0f56f387462021cd01000000000000000000",
  "txid": "505d2750577a3d3c739c2a650ec0e03a7ddb1f81080c820ab1a317575020745b",
  "hash": "505d2750577a3d3c739c2a650ec0e03a7ddb1f81080c820ab1a317575020745b",
  "size": 203,
  "vsize": 203,
  "version": 1,
  "locktime": 0,
  "vin": [
    {
      "coinbase": "022913000b2f503253482f706b74642f",
      "sequence": 4294967295
    }
  ],
  "vout": [
    {
      "value": 40.0390625,
      "n": 0,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 7d9df4279212fd7def4c47abf2d5f3a6c6eaf4ae OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a9147d9df4279212fd7def4c47abf2d5f3a6c6eaf4ae88ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "pGzmtW4Q2v4AWHcX8TYGqG5c1Eh5Ykg6fX"
        ]
      }
    },
    {
      "value": 9.9609375,
      "n": 1,
      "scriptPubKey": {
        "asm": "0 d5c1005c0d4012d3ae2672319e7f9eb15a57516aeefabbbc062265f67e308f2b",
        "hex": "0020d5c1005c0d4012d3ae2672319e7f9eb15a57516aeefabbbc062265f67e308f2b",
        "reqSigs": 1,
        "type": "witness_v0_scripthash",
        "addresses": [
          "pkt1q6hqsqhqdgqfd8t3xwgceulu7k9d9w5t2amath0qxyfjlvl3s3u4sjza2g2"
        ]
      }
    },
    {
      "value": 0,
      "n": 2,
      "scriptPubKey": {
        "asm": "OP_RETURN 09f91102ffff7f20c70542e4ca2363ce0149e845305f25564e7ce81e33411ad570df0f56f387462021cd010000000000",
        "hex": "6a3009f91102ffff7f20c70542e4ca2363ce0149e845305f25564e7ce81e33411ad570df0f56f387462021cd010000000000",
        "type": "nulldata"
      }
    }
  ],
  "blockhash": "c77d9026867de1455e573eb47bd3322548fd537b29ed9296a004a00f43d1da18",
  "confirmations": 3,
  "time": 1566221646,
  "blocktime": 1566221646
}

Если мы дважды проверим, запросив у pktd, кто такой сетевой хранитель, мы увидим, что он показывает сценарий, который был оплачен.

$ ./bin/pktctl getnetworksteward
{
  "script": "0020d5c1005c0d4012d3ae2672319e7f9eb15a57516aeefabbbc062265f67e308f2b",
  "votesagainst": 0,
  "totalpossible": 21985819476623360
}

Итак, если бы мы, например, хотели изменить сетевого хранителя на https://explorer.pkt.cash/address/pGzmtW4Q2v4AWHcX8TYGqG5c1Eh5Ykg6fX , мы бы хотели проголосовать за соответствующий сценарий 76a9147d9df4279212fd7def4c47abf2d5f3a6c6eaf4ae88ac, и, конечно же, возможно, мы хотели бы проголосовать против текущего сетевого хранителя тоже.

Как голосовать

Голосование осуществляется путем настройки вашего кошелька для голосования, каждый раз, когда вы тратите деньги, ваш кошелек будет включать голос в каждый будущий платеж в PKT, который будет совершен. Если вы хотите ускорить процесс голосования, вы можете настроить свой кошелек для голосования и затем перевести все свои PKT на другой кошелек, чтобы убедиться, что все они будут голосовать.

Для настройки вашего кошелька на голосование за https://explorer.pkt.cash/address/pGzmtW4Q2v4AWHcX8TYGqG5c1Eh5Ykg6fX и против https://explorer.pkt.cash/address, вы можете использовать следующий рабочий процесс:

$ ./bin/pktctl --wallet getnetworkstewardvote
{}
$ ./bin/pktctl --wallet setnetworkstewardvote default 76a9147d9df4279212fd7def4c47abf2d5f3a6c6eaf4ae88ac 0020d5c1005c0d4012d3ae2672319e7f
9eb15a57516aeefabbbc062265f67e308f2b
{}
$ ./bin/pktctl --wallet getnetworkstewardvote
{
  "votefor": "76a9147d9df4279212fd7def4c47abf2d5f3a6c6eaf4ae88ac",
  "voteagainst": "0020d5c1005c0d4012d3ae2672319e7f9eb15a57516aeefabbbc062265f67e308f2b"
}