Bầu chọn Người quản lý Mạng

Chúng tôi tin rằng đó là một sự thật phổ quát rằng bất kỳ cơ quan không chịu trách nhiệm giải trình nào, dù tốt lành đến đâu, cuối cùng cũng sẽ trở nên tham nhũng, không hiệu quả hoặc đơn giản là không đổi mới. Vì lý do này, chúng tôi đã xây dựng vào giải pháp blockchain PKT trong trường hợp người quản lý mạng không thực hiện đúng vai trò của mình. Mỗi người sở hữu PKT đều có thể bầu chọn để luận tội người quản lý mạng và cho phép một người mới thay thế. Việc luận tội không phải là một sự kiện không quan trọng, nó đòi hỏi ít nhất 50% tổng PKT đang tồn tại phải rõ ràng bầu chọn cho nó để sự kiện này xảy ra. Tuy nhiên, nếu sự kiện này xảy ra, tiếp theo là việc tự động đếm phiếu bầu và người quản lý mạng thay đổi.

Người quản lý mạng

Cách bầu chọn hoạt động

Một phiếu bầu gồm hai phần, VoteFor và VoteAgainst. VoteAgainst là phiếu bầu luận tội trong khi VoteFor là bầu chọn ai nên trở thành người quản lý mạng trong trường hợp luận tội.

Người quản lý mạng được biểu diễn dưới dạng một script đầu ra giao dịch thay vì một khóa được mã hóa trong script. Cách đơn giản để lấy script cho một địa chỉ nhất định là trả một số tiền cho nó và sau đó khám phá giao dịch gốc và sao chép đầu ra.

Khám phá một giao dịch coinbase, chúng ta có thể thấy đầu ra được trả cho người quản lý mạng https://explorer.pkt.cash/address/ và script cho đầu ra này là 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
}

Nếu chúng ta kiểm tra lại bằng cách truy vấn pktd để tìm hiểu ai là người quản lý mạng, chúng ta sẽ thấy rằng nó hiển thị script đã được trả.

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

Vì vậy, nếu chúng ta muốn, ví dụ, thay đổi người quản lý mạng thành https://explorer.pkt.cash/address/pGzmtW4Q2v4AWHcX8TYGqG5c1Eh5Ykg6fX , chúng ta sẽ muốn bầu cho script tương ứng 76a9147d9df4279212fd7def4c47abf2d5f3a6c6eaf4ae88ac, và tất nhiên chúng ta cũng muốn bầu chống lại người quản lý mạng hiện tại.

Cách bầu chọn

Bầu chọn được thực hiện bằng cách cấu hình ví của bạn để bầu chọn, bất cứ khi nào bạn tiêu tiền, ví của bạn sẽ bao gồm một phiếu bầu trong mỗi khoản thanh toán PKT tiếp theo. Nếu bạn muốn tăng tốc độ quá trình bầu chọn, bạn có thể cấu hình ví của bạn để bầu chọn và sau đó chuyển tất cả PKT của bạn đến một ví khác, để chắc chắn rằng tất cả sẽ được bầu chọn.

Để cấu hình ví của bạn bầu chọn cho https://explorer.pkt.cash/address/pGzmtW4Q2v4AWHcX8TYGqG5c1Eh5Ykg6fX và chống lại https://explorer.pkt.cash/address, bạn sẽ sử dụng quy trình làm việc sau:

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