The Coffee Times

シゴト・英語・テクノロジー・人生の楽しみ方を発信してます

Ethereumの歴史を1000文字で見てみよう

Ethereumは、2014の7~8月にICOがされました。その後、Ethereum Switzerland GmbHという会社がICOの資金で正式にソフトウェアプロジェクトを開始しました。2015年の7月になりEthereumが公開され当時11.9百万トークンがネットワークに存在していました。

 

それ以来ここ2,3年で大きなアップデートがされてきました。

バージョンでいうと今、Metropolisの1つ目のフェーズです。

この前はというと、2015年7月にFrontierのリリースを迎え、2016年3月にHomesteadというバージョンになりました。

Metropolisの2フェーズ目へのハードフォークは、まだ正式な日程はアナウンスされていませんが、2018年のQ2かQ3になるだろうと言われています。

このアップデートのあと、少なくとも1バージョン控えています。(Serenityという名前の予定)

 

 

しかし、すべてのマイルストーン(アップグレード計画)が遅延なくこなせてきたわけではありません。

最も議論になったのが、2016年にThe DAOICOで150 million USドル(約150億円)を調達したときです。

Ethereumそのものでなく、そこに書かれたスマートコントラクトに脆弱性があり、攻撃され、Ethereumは緊急ハードフォークを実施したのです。

(Ethereum Classicを生み出したハードフォークです。)

これ以来、Ethereumのほうが注目を集めていますが、両チェーンともに争いなく共存を続けています。

 

他にもEthereumネットワークへの攻撃はおきてきました。2016年Q4には連続でハードフォークをし、2つの問題を回避したのに加え、DDoS耐性力が高くなり、ブロックチェーンの膨張も抑えることができるようになりました。

さらには、スパム攻撃者の効率性を限りなくゼロに下げることにも成功したと言われています。

しかし、Ethereumが100%安全でセキュアになったというわけではありません。最近では、ウォレットであるParityのバグがあり、Ethereumが簡単に凍結してしまうという状況が起きてしまいました。

coffeetimes.hatenadiary.jp

この問題は今開発者が頑張っているところですが、まだ解決してはいません。

 

これらの多くの課題が残っているにもかかわらず、Ethereumの価格は今年上がり続けてきました。

これを書いている時点では、時価総額300億ドル(3兆円)にもなっています。3年前にはなかったプロジェクトとしては、驚異的な額になっています。

価格は加熱している感もありますが、ユースケースとしてもインフラとしてもBitcoinとは違い競合するわけではないため、一歩一歩、未来の分散型エコシステムを作りあげていくことに期待をしています。

 

参考 :

https://blockgeeks.com/guides/ethereum/

https://themerkle.com/the-history-of-ethereum-in-500-words/

 

 

aeternity(æternity)のæpp開発

æternity(以下aeternity)は分散型aeternityアプリ(通称æppらしい)のエコシステムを作るというゴールに向かって開発を続けており、現在アプリチームは、æppのエコシステムの基礎を作っています。その進捗具合になります。

 

æpp

æternityの投票アプリは、現在Ethereumのメインネットにつながっていて、AEトークンで署名・投票することができます。(もしくは新しい投票の質問を作ることもできます。)他のæppに関してはテスト中であり、EthereumのKovan テストネットに接続されています。

 

そろそろ、AEトークンのfaucet(少量のトークンがお試しとしてもらえるツール)の実装が終わり、コミュニティの人たちがæppを試せし、その結果がテストネットのæppにフィードバックすることができるようです。

f:id:CoffeeTimes:20171123192943p:plain

 

 

モバイルの Identity Manager æppæternityの基本となるæppで、これにより、ユーザは自分たちの個人情報(ID)を管理でき、他のæppも立ち上げることができたり、トークンを使うことができます。

 

f:id:CoffeeTimes:20171123192952p:plain

 

 

またAEトークンを使って誰でもEthereumのメインネット上で、Voting æpp(投票アプリ)を試すこともできます。

 

f:id:CoffeeTimes:20171123193010p:plain

 

Notary æpp(存在証明をする公証アプリ)もあります。

 

 

f:id:CoffeeTimes:20171123193057p:plain

 

開発者向けツール

f:id:CoffeeTimes:20171123193117p:plain

 

UI関連のデータは1つのスクラッチファイルにしてGitHubにおいてあり、随時更新がされます。

 

f:id:CoffeeTimes:20171123193139p:plain

 

さらに 開発者がæpp を直接使えるVue.js æpp compononetsもまとめ始められています。

またここ2週間で行ったこととして以下のように報告がされています。

f:id:CoffeeTimes:20171123193247p:plain

休みなく開発を続けている状況です。

 

参考:

Towards an æpps Ecosystem – æternity blog

ブロックチェーンで使われるハッシュやデジタル署名とは何か?

暗号学について説明として、基礎となる概念2つ、ハッシュとデジタル署名について説明します。

ハッシュとは、任意のデータをインプットしたときに、いくつかのアルゴリズムを通し、outputととして出てきた固定の値をハッシュと呼びます。

 

f:id:CoffeeTimes:20171123124809p:plain

 

このinputは、どのような大きな値も可能です。理論的には無限のbit数のデータを入れ込めます。そしてハッシュアルゴリズムは、数ある中からニーズに合ったものを選ぶことができます。

ここで重要なことは、ハッシュアルゴリズムは無限の大きさの2進数のinputにとっても、計算をし、有限の(固定の)値のoutputを出します。(例えば256bitなどのアウトプットなど)

 

 

一般的にハッシュは何に使われるか

一般的な使い方は、ファイルの証明(フィンガープリント)に使われます。チェックゾーンとかとも言われますね。つまり、ファイルが操作や変更がされていなくオリジナルなものだ!と確認するために使われるのです。

もし私が、何か記事を書きファイルにして、MD5 というハッシュ関数を使って固定の値をつくったとしましょう。

そして、このファイルをダウンロードした人が、そのファイルをMD5ハッシュ関数

で固定の値を出してみたとします。もしこのハッシュ値同士がマッチしなければ、ダウンロードされたファイルは何かしらの変更が加えられた、ということが分かります。

f:id:CoffeeTimes:20171123125322p:plain

 

 

ブロックチェーンは何にハッシュを使うのか

ハッシュは、ブロックチェーンの現在の状態を示すために使われます。inputはブロックチェーンの状態すべてであり(どのアカウントがいくら持っていて、過去にどんな取引をしてなどの情報)、そしてそのハッシュ関数を通じて出されたハッシュ値は、現在の状態を表します。そしてすべてのノードが、「今のブロックチェーンはこれだよね」と同意できることになります。

具体的に、どのような計算が行われているでしょうか。

まず一番はじめのブロック(ジェネシスブロックとも言われます)のために、そのブロック内のトランザクションを使って一番はじめのハッシュ値が計算されます。

このあとにできていくブロックに関しては、前回のブロックのハッシュ値が、「次のブロックのハッシュ値を求めるためのinput」ととして使われます。

このように、それぞれの新しくできるブロックは、その前のブロックをinputにとったハッシュ値で、できていき、ブロックの連なり(ブロックチェーン)が形成されていきます。

このハッシュによる仕組みで、どのトランザクションも改ざんされていない、ということが保証されます。なぜなら上で述べたように、もしトランザクションが変わると、それらをinputにとって導いたときのハッシュ値も変化し、ブロックのハッシュ値も変わるためです。

すべてのブロックチェーンの情報ではなく、ハッシュ値を比べればいいため、不正を検出するのが容易です。Ethereumのブロックチェーンは、数十ギガバイト以上ありますが、たった256bitの16進数ハッシュ値で、現在の状態だというのが表現されているわけです。

 

デジタル署名について

手書きの署名のように、自分であることを証明する署名ですが、暗号技術(数学)を用いて署名がされるため、セキュアな署名といえます。インターネットでは広く使われていて、例えば、自分とサーバーで信頼性を確認するためにデジタル署名を使ったSSLなどを意識せずに使い、ウェブサイトを見ていることも多いと思います。

例えばFacebookをみるときなどは、Google cromeやfirefoxなどのブラウザが、本当にFacebookのサーバーから来ている情報か?ハックされていないか?と確認するために、webページと共に送られるデジタル署名をチェックしています。

 

 

 

公開鍵暗号では、ユーザが、あるアルゴリズムを用い、公開鍵と秘密鍵のペアの鍵を作ります。この2つは数学的に関連付けがされていると思ってもらえば大丈夫です。

公開鍵(パブリックキー)はその名の通り公開され、メッセージを受け付けるためのアドレスのように機能します。

秘密鍵(プライベートキー)は公開されずシークレットの状態のままであり、他のユーザから送られてきたメッセージにデジタル署名をするために使われます。

この署名はメッセージに含まれ、公開鍵を使って確認ができるようになっています。

つまりこのやり方であれば「送信者だけがこのメッセージを送れる」ということを受信者が確かめることができるのです。

このペアの鍵を生成するのは、ブロックチェーン上でアカウントを作るのと同じ挙動になります。さらに、ブロックチェーン上で実行されたすべてのトランザクションは、送信者が秘密鍵によってデジタル署名されるため、アカウントのオーナーだけがアカウントのお金を動かせるということを保証してくれているというわけです。

 

最後に

ブロックチェーンは、ハッシュやデジタル署名なしでは存在しえません。ハッシュは、ブロックチェーンの現在の状態をみんなが本物だと信じるための方法であり、デジタル署名は、すべてのトランザクションが然るべき人(アドレスの所有者)によって作られたものだということを保証するための方法です。これらの特徴を活用し、改ざんされないブロックチェーンが動いています。