ブロックチェーンと投票について

Kazuki Kyakuno
Axell Corporation
Published in
10 min readJan 10, 2023

ブロックチェーンと投票の親和性と問題点の解説とEthereumで提案されている投票の標準規格の紹介をします。

ブロックチェーンがなぜ投票に有用と言われているのか

ブロックチェーン、特にパブリックブロックチェーン、の主な特徴で、検閲耐性と事前に決められたルールに沿って間違いなく実行されるという点が、コミュニティの代表などを決める投票に有用だと言われています。

正しく分散化されたブロックチェーンでは、特定の人の投票を止めることは出来ませんし、その投票を改竄することは出来ません。

これは、平等で公正な投票を行う上で、必要不可欠な要素です。

ブロックチェーンが可能にする投票について

ブロックチェーンを使われた投票では大きな利点がいくつもあります。

  • 集計や票の物理的な移動時などに、意図的もしくは偶然的に一定の票がなくなるという問題を防げる
  • 人件費や設備などの経費の大幅な削減
  • 改竄がないことが、誰でも簡単に証明が出来る
  • 投票者が、投票に行くコストが下がり投票率が上がることが期待される
  • 任意の投票を意図的に勘定しないということが出来ない
  • 集計結果が正確にリアルタイムに反映される

その他、オンラインであることのメリットとして、投票に関する情報を得やすいなどもあります。

もちろん、インターネット投票でも多くの問題は解決されます。ヨーロッパの電子国家として有名なエストニアでは既にオンライン投票を含めた公共のサービスの99%がオンラインで行われています。現在オンラインで出来ないのは、婚姻と離婚のみになっています。

投票を管理する人を含めすべての人が誠実に行動すれば中央集権的に行っても問題はないですが、実際にはそうは動きません。ですので、安全で平等な投票を行うためには改竄耐性や検閲耐性などのブロックチェーンが解決している技術が大事になってきます。

しかし、投票に必要な特徴はそれだけではありません。現在、言及されているブロックチェーンで投票が現実的でない理由について次に説明していきます。

現在のブロックチェーンでの投票の問題について

大前提に、例えば日本で国民投票を行う場合は、日本人全員が短期間に投票しても問題のないシステムである必要があります。

例えば、BitcoinのTPS (Transaction per second)は約5でethereumは約15と言われています。もし、ethereumのシステムを投票のみに使えるとした場合でも日本の有権者約1億人分の投票を処理するには約100日程度の時間がかかる計算になります。ですので、大きな規模での投票の場合は、分散的かつスケールするブロックチェーンが存在するということが前提になります。

また、投票のシステム自体にバグがないという前提でなければいけません。過去にブロックチェーン投票をロシアで実行しようとした場合に攻撃可能な不具合が実施の1ヶ月前に見つかったこともあり、システム自体の成熟度も大切になっています。

それだけでなく投票に必要な特徴として秘匿性と強制耐性があります。

それはつまり、自分の投票は誰にも自分と紐付けることが出来ず、また自分も誰に投票したのかを証明出来ないということです。これにより、買収や脅迫によって票を左右できないようになっています。

現在の投票では、投票ブースで一人で行われており、誰が誰に投票をしたのか。また、自分が誰に投票したのかを正確に証明することは出来ません。もちろん、現在の郵便投票ではこの特性はありませんし、上記の特徴があっても、同調圧力で誰に投票するかを決めている場合もあります。しかし、ここで大事なのは、自分の意志で決められるルールであるということです。

この特徴については、ブロックチェーンが有名になる前から世界中で研究されており、常に進歩している分野でもあります。詳しく知りたい方は参考文献の”Blockchain voting is overrated among uninformed people but underrated among informed people”で紹介されている論文を参考にしてください。

もちろん、これらの問題は投票を行う規模や状況によって必要のない場合もあります。特に、ブロックチェーン内で完結できる情報に関しては既に実用されています。

投票を用いているプロトコル例

ブロックチェーン上での投票の実例は下記のようなものがあります。

  • ブロックチェーンのブロック作成者の選定 (Delegated Proof of Stake)
  • DAO (非中央集権化匿名組織)による仕様やリーダーの選定
  • ブロックチェーンの仕様の施行の決定

これからエコシステムがさらに成熟しさまざまなDAOやプロジェクトが出来てくると、投票の標準規格が重要になってきます。現在、EIPで提案されている投票の規格を紹介します。

EIP 1202: 投票の標準規格

EIP 1202は、Ethereum上で行われる投票の規格を提案しています。

出典:https://eips.ethereum.org/EIPS/eip-1202

この標準があることにより、Ethereumのエコシステムで使われているアプリケーション(メタマスクなど)が複数のDAppsに対応出来たり、smart contractを使った投票やその結果の自動執行などが出来るようになっています。

想定されている使用方法は、トークンやNFTの発行の決定、プロジェクトリーダーやスマートコントラクトの選定や非中央集権的にスマートコントラクトのアップグレード判断などがあります。

Public API

contract ERC1202 {

// Vote with an option. The caller needs to handle success or not
function vote(uint issueId, uint option) public returns (bool success);
function setStatus(uint issueId, bool isOpen) public returns (bool success);

function issueDescription(uint issueId) public view returns (string desc);
function availableOptions(uint issueId) public view returns (uint[] options);
function optionDescription(uint issueId, uint option) public view returns (string desc);
function ballotOf(uint issueId, address addr) public view returns (uint option);
function weightOf(uint issueId, address addr) public view returns (uint weight);
function getStatus(uint issueId) public view returns (bool isOpen);
function weightedVoteCountsOf(uint issueId, uint option) public view returns (uint count);
function topOptions(uint issueId, uint limit) public view returns (uint[] topOptions_);

event OnVote(uint issueId, address indexed _from, uint _value);
event OnStatusChange(uint issueId, bool newIsOpen);
}

EIPに準拠する為には、上記のインターフェイスを実装する必要があります。

主な使用方法は、ユーザーはvoteを使うことになります。また、この規格は、ERC20のように拡張性を優先しており、将来的にこの規格を拡張しいろいろなユースケースに対応出来るようになっています。

ballotOf の関数は、指定のアドレスがどのような投票をしているのかを返すようになっています。これは、標準規格が匿名と記名投票のどちらにも対応する必要があるからです。もし、匿名投票を実装する場合は、この関数から結果を返さないようにしなくてはなりません。しかし、実際には、全ての投票はブロックチェーンに書かれているのでそれだけでは匿名にはならないので、投票の際に暗号を使って何に対して投票したのかをわからないようにする必要があります。

ERC1202では、投票には”重み”がついていると想定されています。この重みについては、コード内で決められるべきもので更新は出来ないようになっています。

まとめ

Ethereumをはじめ、さまざまな国やプロジェクトがオンライン投票やブロックチェーン投票を研究して、小さい範囲では実用化も進んでいます。

限定された環境の中では、既に実用的に使うことも出来ると言えます。

ただし、不具合のないソフトウェアをスケールさせる設計で作るだけでなく、それをオープンにして誰でもアクセス、攻撃が出来る状態にするのはとても難しく、これからも重要な場面での投票に使えるようなシステムを作るには多くの試行が必要になってくるかと思います。

ただ、それに見合うだけの平等性や利便性があるのでこれからも注目して見ていきたいと思います。

参考文献

--

--