テストネット上でETHの送金をやってみる

テストネット上でETHの送金をやってみる
今回は、イーサリアムの「テストネット上でETHの送金手順」について専門用語を省き、事例を使いながら説明しています。こちらのレポートを読んで頂くことで、実際にテストネット上でETHの送金を試していただくことができます。百聞は一見にしかず、ETHの送金を試したことのない方は、実際に試した上で専用サイトを使用してその状態を確認してみましょう。どうぞご覧下さい。


CoinPicks Labでは、ビットコインやイーサリアムに関する理解を深めて頂くために、専門用語を使用せず、むずかしい数字も使用せず、身近な事例に例えながら、毎週金曜日にメールマガジンを配信しています。

メールマガジンを希望する

テストネット上でETHの送金手順

前回のレポートでは、Ethereumのコードベースでの理解を深めることを目的として、MetaMaskのダウンロード方法をお伝えした上で、今後の基礎学習として「Ropstenテストネットワーク」を使用していくことをお伝えしました。

前回のレポートはこちらです。

[blogcard url=”https://atomic-temporary-106217043.wpcomstaging.com/preparation-of-metamask/”%5D

今回は、Ropstenテストネットワーク内でテスト用のETHを使用して送金テストを行ってみましょう。

MetaMaskを開きアドレスのコピーを行います。この時、最上部のタブが「Ropstenテストネットワーク」を開いていることを確認します。

②「Ropsten Ethereum Faucet」と呼ばれるWEBページを開き、①でコピーしたアドレスをアドレスバー部分にペーストを行い、「Send me test Ether」をクリックします。

https://faucet.ropsten.be/

③数秒後に1.5ETHMetaMask上に送られてくることを確認します。上記ウェブサイトでは、5秒ごとにテスト用のETHの送信が可能となっています。

Ethereumはパブリックブロックチェーンと呼ばれ、Ethereumに関連する送受金情報は公開されています。その公開情報は、Etherscanと呼ばれるブロックエクスプローラー上で確認することができます。ウェブサイト内のアドレスバーに①でコピーを行ったアドレスを再度ペーストし、「Search」をクリックします。

https://ropsten.etherscan.io/

⑤アドレスの検索が行われると、③で送信の確認を行った1.5ETHの公開情報を確認することができます。例えば、送信元アドレス、受信元アドレス、送金時間、送金金額、トランザクションハッシュ等の情報を確認することができます。

⑥実際にMeataMask内のETHを送信テストを行ってみましょう。MetaMask内の「振込」をクリックします。

⑦「Etherを取得する」をクリックします。

⑧「MetaMask Ether Faucet」と呼ばれるウェブサイトが開きます。同ページ内の「1 ether」をクリックすることで、MetaMaskが起動し、「確認」をクリックすることで送金が行われます。

通常は、同ページ内の「request 1 ether from faucet」をクリックすることでテスト用のETHを取得することができるのですが、2020224日時点では残高がなく、 ETH を受け取れない為、②のように別のウェブサイトからテスト用のETHを取得しています。

https://faucet.metamask.io/

⑨実際に送金が行われたかを確認してみましょう。送金の確認には、④で使用したEtherscanを使用することで、以下のように1ETHの送金を確認することができます。

ここまでで、ETHの送金までのテストが完了したことになります。

MetaMask内の残高を確認してみましょう。はじめに1.5ETHを受信し1ETHの送信を行った為、残高は0.5ETHとなる計算です。

⑪メインページでは確かに0.5ETH(自動的に四捨五入?)と表示されていますが、右上の丸アイコンをクリックすると上記のような黒塗りのホップアップが表示され、残高が0.499958ETHであることが確認できます。0.000042ETHは何に使用されたのかというと、送金手数料として使用されました。

これは、⑨で確認を行ったEtherscanでも確認をすることができます。

⑫この送金手数料がGasと呼ばれる、Ethereumのスマートコントラクトを動かすために必要なコストです。Gasについては過去に下記URLにて説明を行っています。

Gasに関するレポートはこちらです。

[blogcard url=”https://atomic-temporary-106217043.wpcomstaging.com/turing_gas/”%5D

テストネットにもGasが必要とされる理由は2つあり、1つ目は動作を限りなくメインネットの環境に近づけるためです。2つ目は手数料が無料になると、悪質なコントラクトによって無限に処理が行われるようなプログラムが実行された場合に対処が困難になるため、対策としてGasを導入しています。

まとめ

実際にテストネット上でETHの送金を行ってみた感想はいかがでしょうか。テストネットで試して頂いた、「ウォレットに保有しているETHを指定したアドレスに送信および送信確認を行う」というフローは、メインネットでも同じように機能します。

今回のテストで実感頂きたいのは、ETHという資産を送信先のアドレスさえ知っていれば、僅かな手数料で世界中の誰にでも送ることができるという点、送受信を含むあらゆる情報が公開されており、リアルタイムで状態の確認ができる透明性があるという点、これが銀行のような集権的な組織によって管理されておらず、ユーザー間で処理可能な点など、今までとは違った方法で資産の送信ができるということです。

また、次回からもテストネットを利用して様々な基礎学習を進めていきたいと思います。

 

CoinPicks Lab

レポートを希望する

MetaMaskの準備

MetaMaskの準備
今回は、イーサリアムの推奨ウォレットである「MetaMask」について専門用語を省きながら説明しています。こちらのレポートを読んで頂くことで、MetaMaskの準備が完了し、次回よりテストネットを利用した基礎学習を進めていくことができます。どうぞご覧下さい。


CoinPicks Labでは、ビットコインやイーサリアムに関する理解を深めて頂くために、専門用語を使用せず、むずかしい数字も使用せず、身近な事例に例えながら、毎週金曜日にメールマガジンを配信しています。

メールマガジンを希望する

MetaMaskの準備

Google Chromeから「MetaMask(以下、メタマスク)」をダウンロードしましょう。

https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?hl=ja

ダウンロードが完了すると、ブラウザーのツールバー上にキツネの顔のアイコンが表示される為、クリックします。クリックすると以下のような画面が表示される為、パスワードの設定を行います。パスワードの設定後、ニーモニックフレーズと呼ばれる12単語が表示され、バックアップが求められます。ニーモニックフレーズは、暗号資産の秘密鍵同様にウォレット等の所有権を表す唯一無二のものになります。秘密鍵同様、第三者に知られないように厳重に保管する必要があります。

ログイン後、以下のように自身のメタマスク内の資金の状態を確認することができます。今後、メタマスクウォレットを利用して、イーサリアムの基礎学習を進めていきたいと思います。

メタマスクのアカウントページを確認すると、デフォルトでは「Ethereumメインネットワーク」と表示されていることが確認できます。その部分をクリックすることで、様々なネットワークの切り替えを行うことができ、「Ropstenテストネットワーク」「Kovanテストネットワーク」「Rinkebyテストネットワーク」「Goerli Test Network」「Locallhost 8545」「カスタムRPC」の表示が確認できます。

次回から、「Ropstenテストネットワーク」を使用していきます。

 

CoinPicks Lab

レポートを希望する

チューリング完全マシンにおけるガス(Gas)の役割

チューリング完全マシンにおけるガス(Gas)の役割
今回は、イーサリアムの「チューリング完全マシン」と「停止性問題」について専門用語を省き、事例を使いながら説明しています。このレポートを読んで頂くことで、チューリング完全マシンであるイーサリアムのメリットと課題について知ることができ、その課題の解決方法がどのような形で実装されているかについて理解することができます。


CoinPicks Labでは、BitcoinやEthereum、時事情報に焦点を絞り毎週金曜日レポートを配信しています。

今回の記事に関してメールマガジンでは、優先的に配信を行なっています。

レポートを希望する

チューリング完全マシンにおけるガス(Gas)の役割

イーサリアムについて学び始めると「チューリング完全」という言葉を良く目にします。イーサリアムは、ビットコインと異なりチューリング完全であると言われている為、今回の記事ではその意味合いについて掘り下げたいと思います。

1.1 チューリング完全マシンについて

チューリング完全なマシンとは、特別なシステムが備わっている万能なシステムをイメージするかもしれませんが、実はそうではありません。不完全なマシンと比較して、僅かなプログラムで簡単に実装できるというのが特徴です。

チューリングというのはイギリスの数学者、アラン・チューリングの名前から由来しています。

イーサリアムは、冒頭で説明したようにチューリング完全なマシンとしてあらゆるプログラムを実行することができます。つまり、様々な開発言語やプログラムに対応することができ、ワールドコンピュータとしての汎用性が高さがイーサリアムのイノベーション要素とも言えるわけです。

分かりやすいワールドコンピューターの説明についてはこちら

[blogcard url=”https://atomic-temporary-106217043.wpcomstaging.com/ethereum_blockchain/”%5D

プログラムを簡単に実行できるからこそ、悪意あるプログラムの実行も簡単にできてしまします。悪意あるプログラムとは、コンピューターに終わりのないプログラム(無限ループ)を処理させ、負荷をかけ停止させるような攻撃を例に、「停止性問題」と呼ばれるものです。

これは、イーサリアムにとっても非常に重要な問題です。

通常、限られた人だけが使用するプログラムであれば、停止性問題が発生した場合でも、プログラムを再起動や強制終了することで、処理は終了します。しかし、パブリックブロックチェーンを採用しているイーサリアムはそのような解決方法を実行することができません。

何故なら、イーサリアムは限られた人だけに管理されているネットワークではなく、世界中の人間がイーサリアムネットワーク(ブロックチェーン)を維持するために分散的に参加している為、現実的に停止させることができないのです。

つまり、イーサリアムネットワーク上で停止性問題が発生した場合、ネットワークは永遠に同じプログラムを処理し続け、他の処理をすることができずネットワークの詰まりが発生します。そうすると、イーサリアムはワールドコンピュータとして機能しなくなります。

この問題を解決するために、実装されているのが「Gas」と呼ばれるメカニズムです。

1.2 Gasと停止性問題について

Gasとは、イーサリアムのスマートコントラクトと呼ばれるプログラムの規格を動かす為に使用されるコストです。車を動かす為に使用されるガソリン(燃料)のようなイメージを持つと分かりやすいです。

このGasによって、停止性問題を解決しています。

スマートコントラクトでプログラムを動かす為には、事前に必要なGasの量が決められています。そのGasは、トランザクションの中に含まれており、プログラムを動かす命令と一緒に送信されます。そして、含まれているGasが消費され無くなるとプログラムが停止する仕組みになっているのです。車の中のガソリンが無くなり、車が強制的に停止してしまうようなイメージです。

補足事項として、Gasはトランザクション送信時に全て消費されるわけではなく、送信時に一定のGasがトランザクション内に含まれている条件が決められているのみであり、実際にGasが消費されるのはプログラムが動き出してからとなります。

1.3 まとめ

イーサリアムは、チューリング完全マシンとして、様々な開発言語やプログラムに対応することができる、汎用性の高いワールドコンピューターであるというメリットを持ちながら、停止性問題と呼ばれるネットワークを脅かす可能性のある問題がありました。

その停止性問題を解決しているのが、Gasと呼ばれるプログラムを動かす為に必要なコストであり、Gasコスト決められている以上、プログラムも無限にループすることができないということでした。

汎用性の高いイーサリアムブロックチェーンにおいて、Gasは大変重要な役割を果たしていることが理解頂けたかと思います。

 

CoinPicks Lab

レポートを希望する

イーサリアムの通貨単位について

イーサリアムの通貨単位について
今回は、イーサリアムの「通貨単位」について専門用語を省き、事例を使いながら説明しています。こちらのレポートを読んで頂くことで、イーサリアムの理解にあたって混乱のポイントとなる通貨単位について知ることができます。


CoinPicks Labでは、BitcoinやEthereum、時事情報に焦点を絞り毎週金曜日レポートを配信しています。

今回の記事に関してメールマガジンでは、優先的に配信を行なっています。

レポートを希望する

イーサリアムの通貨単位について

1.1 イーサリアムの通貨単位

イーサリアムのネイティブ通貨は「Ether(イーサ)」です。イーサの表記方法として他にも多く使用されるのが「ETH」です。他にもいくつか表記方法がありますが、上記2通りが最も一般的に使用される表記方法と言えます。

よくある誤解として、当レポートの参考文献であるマスタリング・イーサリアムが補足していますが、「イーサリアム」と「イーサ」を混同してはいけません。イーサリアムはシステムを指し、イーサが通貨のことを指しています。

イーサの最小単位は、「wei」です。1イーサは、100wei1018乗)を表します。つまり、Aが保有している1イーサをBに送金する場合に、プログラム内では、100weiという値が処理されています。

その他にもイーサリアムについて学習していくと、「kwei」「mwei」「gwei」と言った単語を目にする機会があるかと思います。kwei103乗、mwei106乗、gwei109乗であると頭の片隅に置いておいてください。

前回説明させて頂いた通り、イーサリアムネットワークを動かす為には、Gasコストの計算と送金が必要です。

前回のレポートはこちら
https://coinpicks.substack.com/p/picks-report-vol24

コストの計算には、weiという単位に基づいて「Gasプライス」と「Gasリミット」と呼ばれる概念が存在しています。Gasプライスとは、取引に使用するコストの量を決定します。Gasリミットとは、取引を行う際に払っても良いコストの上限値を意味します。この概念に関しては、後程しっかり説明をしたい為、今回は割愛させて頂きます。

実際にイーサリアムをAからBに送金する為には、送金に必要なイーサとコストとしてのGasが必要であるという解釈は正しいのですが、それだと大変手間がかかります。

実際には、2種類の通貨を用意する必要はなく、コストとしてのGasはイーサから支払われることになります。つまり、AからBに1イーサを送金する為に「10gwei」必要ということであれば、0.0000000001etherをコスト分として1イーサとは別に支払うことができます。

1.2 まとめ

今回は、イーサリアムとイーサの違いについて説明をさせて頂き、イーサの最小単位「wei」について説明しました。ネットワークを悪意あるプログラムから守る為に設定されているGasには、非常に小さな単位があり、送金時にユーザーの利便性を損なわないように工夫された設計になっていることを理解頂けたのではないでしょうか。

 

CoinPicks Lab

レポートを希望する

イーサリアムの「状態」について掘り下げて理解する

イーサリアムの「状態」について掘り下げて理解する
今回は、イーサリアムの「状態」について専門用語を省き、事例を使いながら説明しています。このレポートを読んで頂くことで、イーサリアムを学習するにあたって度々出てくる「状態」について簡潔に知ることができます。どうぞご覧下さい。


CoinPicks Labでは、BitcoinやEthereum、時事情報に焦点を絞り毎週金曜日レポートを配信しています。

今回の記事に関してメールマガジンでは、優先的に配信を行なっています。

レポートを希望する

イーサリアムの「状態」について掘り下げて理解する

マスタリングイーサリアムには、「状態(ステート)」について以下のような説明があります。

イーサリアムは「状態マシン」にコードをロードして、ロードされたコードを実行した後に、「状態変化」の結果をブロックチェーンに記録(格納)します。結果をブロックチェーン上に記録することで、データの「状態推移」を追跡することができます。

いまいちイメージが湧かず理解しきれないのではないかと思います。

1.1 状態(ステート)について理解する

簡単に説明すると、ブロックチェーン上に記録されている「状態」を確認することで、トランザクションによって変化した情報の結果を知ることができます。トランザクションには、AからBに対するデータの送信情報が含まれており、データの保有者がAからBに変化したという結果を確認することができます。

また、データの保有者がBに変化したという情報は、過去の履歴(状態)が変化した結果を表しています。つまり、データの保有者がBになる以前の保有者であったAの履歴を追跡することができます。この状態の変化は、イーサリアム特有の「状態マシン」によって行われます。

下記画像は、Etherscanと呼ばれるイーサリアムの様々なデータを確認することができるページをスクリーンショットしたものです。こちらのデータから、状態変化を視覚的に確認することができます。

下記画像の赤枠部分はデータの送信者の状態変化を表しています。つまり、ETHを受信者に送信したことで保有の状態が変化した結果が記録されています。また、Nonce(ナンス)という記載が確認できますが、ナンスとは送信されたトランザクションの数が表されています。

下記画像の赤枠部分はデータの受信者の状態変化を表しています。つまり、ETHが送信者から受信したことで保有の状態が変化した結果が記録されています。

下記画像の赤枠部分は状態変化を承認したマイニング従事者が手数料を受け取った事による状態変化を表しています。

このようにして、状態変化の確認と追跡が可能になっています。

1.2 状態の構成について理解する

「状態」とは、トランザクションによって変化した情報の結果であることが分かりました。また、状態にはWorld state(ワールド状態)とAccount state(アカウント状態)の2つの概念があります。

ここも簡単に説明したいと思います。

ワールド状態の中には、ルートハッシュと呼ばれるデータが含まれており、アカウントステートの中に含まれるトランザクションハッシュまで確認することができます。トランザクションハッシュを確認することで、関連するnonce(ナンス)とbalance(バランス)を確認することができます。ナンスとは、その際に送信された累積トランザクション数を表しており、バランスとは、そのアカウントが所有するETHの量を表しています。

以下の図は、ホワイトペーパーに記載されているワールド状態とアカウント状態の関係図をツリー状に表したものになります。これを「マークル・パトリシアツリー」と呼びます。

上図の「STATE_ROOT」の部分がワールド状態のルートハッシュを表しています。ルートハッシュからツリー状に「NONCEBALANCECODEHASHSTORAGE_ROOT」から構成されるアカウント状態を表しています。そして、アカウント状態のSTORAGE_ROOTの中にトランザクションハッシュが含まれています。

つまり、ワールド状態にはアカウント状態の重要なデータの中身が保存されており、ワールド状態のルートハッシュを確認することで、確実にアカウント状態のデータにアクセスできるということです。この仕組みによって効率的にデータの保存ができています。

1.3 まとめ

今回は、状態と状態の構成について説明しました。

「状態」とは、トランザクションによって変化した情報の結果を指しており、その結果はワールド状態とアカウント状態によって構成されているということです。この2つの構成によって、効率的なデータの保存が行われているということです。

 

CoinPicks Lab

レポートを希望する

イーサリアムの誕生とヴィタリック・ブテリン

イーサリアムの誕生とヴィタリック・ブテリン
今回は、「イーサリアムの誕生とヴィタリック・ブテリン」専門用語を省き、事例を使いながら説明しています。このレポートを読んで頂くことで、ヴィタリック氏がいつ暗号資産に興味を持ち、イーサリアム開発に至ったかを簡潔に知ることができます。


CoinPicks Labでは、BitcoinやEthereum、時事情報に焦点を絞り毎週金曜日レポートを配信しています。

今回の記事に関してメールマガジンでは、優先的に配信を行なっています。

レポートを希望する

イーサリアムの誕生とヴィタリック・ブテリン

1.1 ヴィタリック・ブテリンとは

前回、イーサリアムとは「ワールドコンピュータ」としてあらゆるものをデジタル化することで、世界そのものを1つのコンピューターにすることを目的としたプラットフォームであると説明しました。

イーサリアムとブロックチェーンについて:https://coinpicks.substack.com/p/picks-report-vol21

今回は、イーサリアムの考案者である「ヴィタリック・ブテリン(以下、ヴィタリック氏)」について簡潔に掘り下げたいと思います。

まもなく26歳を迎えるヴィタリック氏が暗号資産に興味を持つキッカケとなった出来事は、お気に入りのゲームキャラクターのパラメーターが運営会社の集権的な運営によって変更されてしまったことに起因するそうです。その後、高校生になったヴィタリック氏はビットコインに興味を持ち、時給5ビットコイン(当時4ドル程)で記事を書いていたそうです。

時代の変化を感じるヴィタリック氏の境遇として、ビットコインをヴィタリック氏に教えたのは父親だったとのことです。その時は、ただの数字の羅列にしか見えず、本質的な価値に気付いたのは別の場所でビットコインについて話を聞いた1ヶ月後であったそうです。

それから、没頭するあまり時間の大半をビットコインに注ぎ、大学を中退した後、ビットコイン界で何が起きているのかを知るために5ヶ月間の旅に出たそうです。

そうして世界を旅した結果、ヴィタリック氏は19歳のときにブロックチェーンプラットフォーム「イーサリアム」を考案しました。

このようにして生まれたイーサリアムが、今世界を巻き込んで多くの人間を熱中させているのです。

1.2 アンドレアス・M・アントノプロスとは

マスタリング・ビットコインの著者としても知られるアンドレアス・M・アントノプロス(以下、アントノプロス氏)は、2012年にSatoshi Nakamotoのホワイトペーパーを読んでビットコインに心を奪われました。当時フリーランスとしてのコンサルタント業務を放棄し、ビットコインについて無料で記事の執筆をはじめたそうです。ヴィタリック氏同様、心を奪われた後は記事を書くんですね。

あまりに熱中しすぎた結果、4カ月間ほど、寝食を忘れて学び、9キロ以上も体重が減っていたとの話もあります。そんなアントノプロス氏も、最初はビットコインを「どーせオタクのコインだろ。」とバカにしていた時期があったそうです。

その後、ヴィタリック氏が作成したイーサリアムの元となるホワイトペーパーを読み、興味を奪われアントノプロス氏は、ヴィタリック氏に対して技術的なことを含む多くの質問をして、意見を求められた際に、「うまく機能しない」言い、その理由について説明したところ、ヴィタリック氏は非常にクリアな回答を既に用意していたとのことです。

アントノプロス氏は、この後に紹介をするギャヴィン・ウッド博士と共に、マスタリング・イーサリアムを執筆するに至ったわけです。

1.3 ギャヴィン・ウッドとは

イーサリアムの初期開発の大きな支えとなった人物として、ギャヴィン・ウッド(以下、ウッド氏)は、プロトコル面でズバ抜けて目立っていたとヴィタリック氏は語っています。

ウッド氏といえば、現在Web3ファウンデーション(Web3 Foundation)でポルカドット(Polkadot)に取り組み、パリティ(Parity)ではイーサリアムとジーキャッシュ(Zcash)のクライアントを作っていることで有名です。

ウッド氏は、2013年に初めて暗号資産に興味を持ち、ビットコインについて調べ始めました。ビットコインのエコシステムについて調査している際に、ビットコイン開発者のアミール氏を通じてヴィタリック氏と連絡を取り合ったのが、出会いのきっかけとのことです。

ウッド氏は、魅力的なプロジェクトを探していたこともあり、それから共同創業者としてヴィタリック氏と共に、イーサリアムの基礎となるプロトコル開発を行いました。イーサリアムのスマートコントラクト向けのプログラミング言語「Solidity」もウッド氏によって開発されました。

そうして、今回アントノプロス氏と共にマスタリング・イーサリアムを執筆するに至ったわけです。

1.4 まとめ

イーサリアムプロトコルの原型は、ヴィタリック氏によって作られ、アントノプロス氏によって多くの人に語り継がれ、ウッド氏によって基礎開発が行われ、いま多くの人の興味を引きつけています。

今回のレポートは、イーサリアムの基礎学習を進めていく上での重要事項ではありませんが、どのような人が関わり、どのような意図があったのかを知ることは、イーサリアムについて理解し、他のプロジェクトを俯瞰する際に意外と役に立つのではないかと思っています。

また、レポートではマスタリング・イーサリアムに記載のあった主要人物のみを取り上げていますが、他にも多くの人が関わり、2015730日、イーサリアムのジェネシスブロック(最初のブロック)のマイニングと呼ばれる承認作業が始まり、ワールドコンピュータとして動き始めたという事実があります。

Reference
マスタリング・イーサリアム
https://wired.jp/special/2017/vitalik-buterin/

 

CoinPicks Lab

レポートを希望する

「イーサリアムとブロックチェーンについて」専門用語を省き、事例を使いながら簡単に説明してみました。

イーサリアムとブロックチェーンについて
今回は、「イーサリアムとブロックチェーンについて」専門用語を省き、事例を使いながら説明しています。このレポートを読んで頂くことで、イーサリアムとは何か。ブロックチェーンとは何か。そしてブロックチェーンがどのような技術で構成されているのかについて、全部理解して頂けます。どうぞご覧下さい。


CoinPicks Labでは、BitcoinやEthereum、時事情報に焦点を絞り毎週金曜日レポートを配信しています。

今回の記事に関してメールマガジンでは、優先的に配信を行なっています。

レポートを希望する

「イーサリアムとブロックチェーンについて」専門用語を省き、事例を使いながら簡単に説明してみました

1.1 イーサリアムとは

そもそもイーサリアムとは何でしょうか。

イーサリアムとは「ワールドコンピュータである」というのは、よく聞く回答ではないでしょうか。

では、ワールドコンピュータとは一体何でしょうか。

ワールドコンピュータとは、その名前の通り、24時間 365日世界中に存在するコンピューターを同士を繋げ、どの国にも規制や管理されることなく、コンピューターの持ち主によって、全てのデータが安全に管理することを可能にします。つまり、世界そのものが「1つのコンピューター」になるシステムであると言えます。

イーサリアムは、あらゆるものをデジタル化することで、世界そのものを1つのコンピューターにすることを目的としたプラットフォームであると言えます。物凄く壮大なスケールを掲げているのです。

ここでは、あえてイーサリアムを構築する様々なテクノロジー(要素)については割愛します。各要素について噛み砕いているだけで莫大な量になりそうなので、当レポートでは内容を絞り込みます。

1.2 ブロックチェーンとは

イーサリアムとは何かについては、大枠理解頂けたかと思います。しかし、イーサリアムについて学んでいくとブロックチェーンという言葉をよく聞くようになります。では、一体ブロックチェーンとは何でしょうか。また、イーサリアムとの関係性は何でしょうか。様々な疑問が湧いてくるでしょう。

前述したように、イーサリアムとはあらゆるデータを個人が自由に誰の規制や管理を受けることなく、繋げることができるプラットフォームでした。例えば、個人が保有しているチケットをイーサリアムプラットフォーム上でデータ化したとします。データ化することで好きなルール、好きな価格、好きな人とチケットの交換をすることができます。

これがメルカリや楽天であれば、そこにはルールがあり、ルールに従って交換する必要があります。

当然、自由度の高いプラットフォームの方が使い勝手はいいです。しかし、ルールがなければトラブルが発生するのが人間です。例えば、ABがチケットを交換したとします。確かにチケットを交換をしたはずなのに、Bさんがチケットをもらってないと言い出しました。チケットを交換したという証拠もなければ、見ている人もいないという困った状況が発生します。

これがメルカリや楽天であれば、ルールによってしっかり管理され、トラブルの発生が最小限に抑えられます。それならば、メルカリや楽天を使った方が良いというのが正論です。ここで自由度の高いプラットフォームにブロックチェーンが大活躍します。

つまり、ブロックチェーンとは、決められたルール(決定事項)を保存しておく場所のようなものです。そして、イーサリアムにとってブロックチェーンは、ワールドコンピュータを維持する為になくてはならない存在であると言えます。また、イーサリアムは決められたルールを参会者全員で守る為の仕組みも提供しているのです。

1.3 ブロックチェーンの構成要素

前述したように、ブロックチェーンとは決められたルール(決定事項)を保存しておく場所のようなものでした。そのブロックチェーンにも、いくつか種類があり、様々な技術の組み合わせによって構成されています。

今回は、イーサリアムとの関係性が強い「パブリックブロックチェーン」の構成要素に焦点を当てて説明したいと思います。構成要素を知ることで、ブロックチェーンがどのような特性を持ちあわせているか、より詳しく知ることができると思います。

パブリックブロックチェーンの要素は以下になります。

P2P(ピアツーピア)ネットワーク
②トランザクションメッセージ
③コンセンサスルール
④状態マシン
⑤ブロック
⑥インセンティブスキーム
⑦コンセンサスアルゴリズム

当然の話、何が何だかわかりませんね。
しっかり噛み砕いて説明したいと思います。

P2P(ピアツーピア)ネットワーク
ピアツーピアネットワークとは、「コンピューター同士の通信方式の1つ」です。他にもクライアントサーバ方式という通信方式があり、こちらの方が多くの方にとって馴染み深いと言えるのではないでしょうか。

簡単に説明すると、多くの人が使用しているLINEやFacebookは、友人とメッセージや電話をする際に、LINE社やFacebook社などの会社(管理者)のサーバーを経由して行われています。この通信手段をクライアントサーバ方式と言います。

一方で、LINE社やFacebook社などのサーバーを経由させずに、メッセージや電話ができる通信手段をピアツーピアネットワークと言います。

パブリックブロックチェーンの構成要素に、ピアツーピアネットワークが採用されていることによって、規制や管理を受けることなくコミュニケーションを取ることができる基盤があるということです。

②トランザクションメッセージ
トランザクションメッセージとは、コミュニケーションの内容です。その中身には、宛先を含む様々なデータが含まれており、今回はコミュニケーションを行う為に必要なデータが多く含まれていると覚えておいてください。

③コンセンサスルール
コンセンサスルールとは、ブロックチェーンの中で決められたルールです。まさしく、ブロックチェーンとは決められたルール(決定事項)を保存しておく場所であると説明しました。それがブロックチェーンでは、コンセンサスルールと呼ばれています。

コンセンサスは「合意」という意味があり、自由度の高いブロックチェーンだからこそ、ルールに基づいて、皆の合意を得る必要があるということを覚えておいて下さい。

④状態マシン
状態マシンとは、トランザクションメッセージの内容について、皆で決めたコンセンサスルールを確認した上で処理を行います。

確認が問題なく完了すると、トランザクション内の様々なデータの内容が更新されます。

⑤ブロック
ブロックとは、前述したトランザクションメッセージを、1つに格納する入れ物の役割を持ちます。

ブロックチェーンでは、皆で決めたコンセンサスルールに従ってトランザクションメッセージを確認する為、確認できるスピードに限界があります。そこで、トランザクションメッセージを1つの大きなブロックに格納した後に、ブロックに要点をまとめた情報を記載してあげることで、より早く内容を確認することができます。

そして、ブロックやトランザクションメッセージの内容は、勝手に第三者に変更されないように、暗号化されているのです。

⑥インセンティブスキーム
インセンティブスキームとは、その言葉の通り報酬が発生する仕組みです。誰の何の為の報酬であるのかについて説明します。

ブロックチェーンには、様々な貴重なデータがトランザクションメッセージの中に含まれており、皆で決めたコンセンサスルールによって、安全性が確認された上でコミュニケーションが行われていました。

しかし、その仕組みを利用して悪事を働くことで、利益を得ようとする人間は必ず現れます。悪事を防止する為にコンセンサスルールが決められているのですが、それでも100%悪意を持った人間を排除することはできません。それは、悪事を働くことで得られる利益の方が大きいからに他なりません。

そこで、インセンティブスキームによって悪事を働くことで得られる利益よりも、コンセンサスルールに基づいてブロックチェーンを健全に運営していくことの方が利益が大きくなるような仕組みを作っています。

つまり、インセンティブスキームとは、ブロックチェーンへの悪意ある攻撃から守る為に設計されており、健全な運営に貢献している人間に対して用意されたインセンティブであるということです。

⑦コンセンサスアルゴリズム
コンセンサスアルゴリズムとは、コンセンサスルールやインセンティブスキームを含む、ブロックチェーンを健全に運営していく為のルールの中核部分です。

以上が、パブリックブロックチェーンの構成要素です。

まとめ

パブリックブロックチェーンとは、コンセンサスアルゴリズムの要素であるコンセンサスルールとインセンティブスキームに基づいて、ピアツーピアネットワーク方式によって個人同士のトランザクションメッセージをブロックにまとめ、状態マシンによって健全に処理とコミュニケーションを可能にするインフラであると理解することができます。

 

Reference
マスタリング・イーサリアム

 

CoinPicks Lab

レポートを希望する

Ethereum基礎学習|アカウントとは?

Ethereum基礎学習|アカウントとは?
Ethereumには、2種類のアカウントが存在しています。1つはEOAExternally Owned Account)、もう1つはContract(コントラクト)アカウントです。また、アカウントに紐づくstateには、Account state(アカウント状態)とWorld state(ワールド状態)が存在しています。


CoinPicka Labでは、BitcoinやEthereum、時事情報に焦点を絞り毎週金曜日レポートを配信しています。

レポートを希望する

Ethereum基礎学習|アカウントとは?

Ethereumには、2種類のアカウントが存在しています。1つはEOAExternally Owned Account)、もう1つはContract(コントラクト)アカウントです。それぞれのアカウントは、Gethのコンソール上で新規発行することができます。

EOAはユーザーが管理することのできるアカウントで、トランザクションの作成、トークンの送金、コントラクトの実行、マイニングの実行などを行うことができます。一方Contractアカウントは、アカウント内のコードを実行するためのアカウントです。こっれは自発的に動作することはなく、EOAからContractアカウントにETHを送金することで、Contractアカウント内のコードが実行(フィールドのデータも更新)されるのです。

Account state

Ethereumのブロックチェーンには、トランザクションに基づいた「state(状態)」という概念があります。新たなトランザクションが発生する度に、EOA及びContractアカウントのstateは変化していきます。また、stateAccount state(アカウント状態)とWorld state(ワールド状態)が存在しています。

Account state4つの要素から構成されています。

  1. nonce(ナンス):EOAの場合は、アカウントによって作成されたトランザクションの数が記録されています。Contractアカウントの場合は、そのアカウントが作ったコントラクトの数が記録されています。
  2. balance(バランス):アカウントが保有している通貨量が記録されています。その単位はEthereumの最小単位である”Wei”で記録されています。1Wei0.000000000000000001 ETHです。
  3. storageRoot(ストレージルート):アカウントが保有するデータのマークルツリーのデータハッシュを持っています。現時点で分かりやすく言うと、データの大きな倉庫に保管しているとして、そのデータを保管している自分だけにしかわからないID番号みたいなものです。
  4. codeHash(コードハッシュ):EOAの場合は、空文字のハッシュが記録されており、コントラクトアカウントの場合はそのアカウントが持っているコードのハッシュが記録されています。

World state

World stateは、Ethereumネットワーク全体のstateのことを指します。上述したネットワーク上のAccount stateのアドレスに各stateを紐付けたものをMerkle Patricia tree(マークル・パトリシアツリー)として構成したものでWorld stateが成り立ちます。しかし、星の数ほどあるネットワーク上のアカウントのstateを考慮することは複雑である為、World stateMerkle Patricia tree(マークル・パトリシアツリー)のルートハッシュとして成り立っています。

ツリー上の最上部に位置するルートハッシュは、Account statestateデータを分割して「3.storageRoot」のハッシュ値が最終的にMerkle Patricia treeのルートハッシュに記録されています。

 

CoinPicks Lab

レポートを希望する

Ethereum基礎学習|GHOSTプロトコルとは?

Ethereum基礎学習|GHOSTプロトコルとは?
GHOSTプロトコルとは何か?ブロック生成に同じPoWを採用しているBitcoinとの違いについて記載しています。


CoinPicka Labでは、BitcoinやEthereum、時事情報に焦点を絞り毎週金曜日レポートを配信しています。

レポートを希望する

Ethereum基礎学習|GHOSTプロトコルとは?

20198月時点でEthereumに採用されているGHOSTGreedy Heaviest Observed Subtree)プロトコルは、マイナーによるブロック承認作業によってチェーンが分裂した際に、どちらか一方のチェーンに収束させるための仕組みです。その選択方法は、よりコンピュータによる計算能力(ハッシュパワー)が集まっている方に収束させるというものです。ブロック生成に同じPoWを採用しているBitcoinとの違いはというと、Bitcoinの場合は1番「長いチェーン」がメインチェーンとして収束していき、Ethereumの場合は1番「重いチェーン」がメインチェーンとして収束していきます。

なぜ同じPoWを採用しているのにも関わらず、メインチェーンの収束の仕方に違いがあるのかというと、ブロック生成時間が異なるからです。Bitcoinの場合は、1ブロック生成時間は約10分です。Ethereumの場合は、1ブロック生成時間は約15秒です。処理能力の観点から早いほうが良いとは言えますが、セキュリティやマイニングの集権化といった特有の課題も出てきます。

セキュリティの課題というのは、ブロックの生成スピードが早いほどにマイナーが同時にブロックを生成してしまう可能性が高くなり、チェーンの分裂が発生することで悪意のある攻撃箇所が増えることです。マイニングの集権化というのは、ネットワークに参加しているマイナーは、ブロックを生成するためにハッシュパワーを使用して競争をします。例えば、マイナーAがブロック生成に必要なハッシュ値を計算によって見つけた場合、ネットワーク全体に知らせるために一定数の時間が必要になります。しかし、マイナーAは誰よりも早く次のブロック生成に必要な計算を始めることができ、集権化してしまうというものです。

Ethereumのブロック生成時間の速さを活かしながら、セキュリティやマイニングの集権化の課題を解決しているのが、GHOSTプロトコルということです。では、どのように課題を解決しているのでしょうか?

セキュリティの課題はに関しては、メインチェーンから分裂した際のブロック(unclenephew)に費やされた計算資源もメインチェーンの重みとして考慮されます。つまり、これは分裂したuncleブロックやnephewブロック(uncleブロックの子ブロック)でさえもEthereumのセキュリティに貢献していることを意味しています。

マイニングの集権化に関する課題は、uncleブロックやnephewブロックに対してもブロック報酬を設定している点で、解決というよりも緩和しています。uncleブロックのマイニング報酬はメインブロックの87.5%、nephewブロックだと3.125%のマイニング報酬を得ることができます。これによってマイナーが、uncleブロックやnephewブロックをマイニングするインセンティブを作り出しており、それがセキュリティにも関連してくるというものです。しかし、親ブロックのマイニンングに対する初期発見者の優位性は変わらないという点で、解決ではなく迂回であるという意味です。

Reference
https://github.com/ethereum/wiki/wiki/White-Paper#modified-ghost-implementation

 

CoinPicks Lab

レポートを希望する

ERC998について学びユースケースを考える

ERC998について学びユースケースを考える
ERC998トークンは、簡単に言えば「トークンを組み合わせてできたトークン」です。FungibleであるERC20トークンやNon-fungibleであるERC721トークンを組み合わせて、1つのトークンを作る、そうしてできあがるのがERC998トークンというイメージです。


本日はERC20トークンやERC721トークンを構成可能な形で表現するERC998トークンについての概要を眺めてみたいと思います。

ERC1155についてはこちらをご覧ください。但しERC998の知識があった方がより理解が深まります。

[blogcard url=”https://atomic-temporary-106217043.wpcomstaging.com/erc1155/”%5D

[blogcard url=”https://atomic-temporary-106217043.wpcomstaging.com/erc725-erc735/”%5D

ERC998|イーサリアムのトークン規格

様々なアセットをトークンの形で表現しようとするプロジェクトはカラードコインという仕組みを用いて実現されていました。最近はあまり使われていませんが、Counterpartyというプロジェクトでは、トークンの発行ができました。2年ほど前にはTwitter界で有名な方々が自分のトークンを発行して、そのトークンを保有している人しか閲覧できないフォーラムで情報を発信したり、トークン保有者に紐付けられたメールアドレスに対してメルマガを発行したりということが行われていました。

上述のような流れを経て、Ethereumでも様々な種類のトークンが誕生してきている、というのが今までの流れです。

ERC998トークンは、簡単に言えば「トークンを組み合わせてできたトークン」です。FungibleであるERC20トークンやNon-fungibleであるERC721トークンを組み合わせて、1つのトークンを作る、そうしてできあがるのがERC998トークンというイメージです。

上記の条件さえ満たせば何でも良いのですが、今までのレポートでも取り上げたCryptoKittiesを例に挙げると、ERC721トークンで表現された猫二匹と、ERC20トークンで表現された猫のための餌をセットにして、ERC998トークンで表現するようなイメージです。

ブロックチェーンの世界では、ERC20やERC721をベースに考えてしまう癖がついていますが、現実世界ではERC998ベースで考えた方が自然な商材はたくさんあります。土地付きの家、家具付きの部屋、複数のパーツで構成されるPC、複数の食材で作られるレストランの食事など、「個別でも販売することができるが、セットで売られるのが一般的であるもの」は身の回りにも多数あります。

各パーツがERC20やERC721であり、それをセットにしたものがERC998、というイメージで良いかと思います。もちろん入れ子構造的にERC998を構成要素とするERC998もあり得ます。

「で、それの何が嬉しいの?」というと、複数トークンの交換を一回のトランザクションで行えるため、ガス代が節約できる点や何らかの特性や機能をもたせることができる点などが挙げられるでしょう。当然ゲームやアセットの管理の幅が広がることも利点として挙げられます。

ERC998トークンとは異なりますが、トークンをバスケットの形にして、複数トークンからなるインデックスのようなものがあります。

ゲームに留まらず、証券やトークンのバスケットの提案も出てきており、それが必ずしも良い結果を保証するわけではありませんが、より複雑なことを表現できるようになれば、逆説的ではありますが人間にとってむしろより自然に理解できるものがトークンによって表現されるようになると個人的には思います。今のブロックチェーンはピュアすぎるというか、清潔すぎて、現代人の直感に反するものが多いと割と真面目に考えています。

一方で最終的に消費者の手元に届く頃には、商材がすっかり複雑性を帯びているような場合、その商材を原材料にまで遡って深く理解することは不可能ではないものの、非常に時間のかかるプロセスを経る必要があります。

無料レポートをGET

ERC1155について学びユースケースを考える

ERC1155について学びユースケースを考える
ERC1155規格によって発行されたトークンは、種類に関係なく複数のトークンを一度に送信することができるというのが1つの特徴です。


ERC1155とは

「ERC1155」は、シンガポールに拠点を置くEnjin Pte LtdのWitek Radomski 氏によって発表されました。この規格を用いて発行されたトークンは、種類に関係なく複数のトークンを一度に送信することができるというのが1つの特徴になっています。

裏を返せば、ERC20やERC721規格によって生成されたトークンは種類が違うと一括して送信することができなかったということです。例えば、自身のウォレットにEthereum(ETH)とEnjin(ENJ)を保有していたとして、ETHとENJを同時に送ることはできず、トークン毎に送信の手間と手数料が発生します。これを一括でまとめて送信できるようにした規格がERC1155ということです。

ERC1155規格を用いて発行されたトークンは手数料削減に繋がります。

ただし、複数のトークンを一度に送信する場合においてということです。

実際に計算してみましょう。

Ethereumのトランザクション手数料の計算式は、”ガスリミット(Gas) × ガス価格(Gwei) × 0.000000001″で求めることができます。ガスリミットを21,000gas、ガス価格を10Gweiと仮定します。2019年7月10日時点では、ETHの価格は$311.53(¥33,893.84)になるので上記の式に当てはめて計算してみると手数料は最大約¥7.1という数字が出ました。

手数料としてはかなり安価ですが、今後トークンエコノミー経済発展しあらゆる価値がトークンを介して送信できるようになった時には、大きな課題となります。ゲームの世界で例えると分かりやすいのですが、BobがアイテムAを、MikeがアイテムBとアイテムCをそれぞれ持っていたとします。Bobは次のステージに進むためにアイテムBとアイテムCが必要になります。よってMikeからアイテムBとアイテムCを送信してもらう必要があるのですが、このアイテムがERC721トークンであった場合、アイテムBを送った後にアイテムCの送信という手順になります。もどかしさと手数料の観点からユーザービリティーが良いとは言えません。これがERC1155トークンであった場合、アイテムBとアイテムCはたった1回の送信で完了します。

また、ゲーム内のアイテム交換に留まらずトークンの性質上、ゲームを超えての取引にも活用することができます。アイテムABCと現実世界のコンテンツ所有権を表すトークンを交換することさえも可能になります。このように価値の移転においてトークンとの相性が非常に良いのです。

今後、トークン経済圏や個人間取引が活発になり複雑になればなるほど、一括送信が可能であることは重要であると言えます。

 

ERC223についての基礎学習はこちらからご覧ください。

[blogcard url=”https://atomic-temporary-106217043.wpcomstaging.com/ethereum-erc223/”%5D

メールアドレスで無料レポートを受け取る

Join Lab Now

ライトニングネットワーク内のビットコインが安全と言える仕組みを理解する

ライトニング・ネットワーク内にデポジットされた資金が盗まれるという、一部界隈の懸念を具体的な仕組みの説明によって払拭しました。こちらの記事を見ていただくことで 、なぜ資金が安全と言えるのかを理解していただくと同時に、その仕組みを理解して頂くことができます。


前回のライトニング・ネットワークのチャネル内の仕組みと基礎に引き続き、今回もライトニング・ネットワークに関して執筆致します。内容は、テレグラムの「Tokyo Dragons Den」グループ内での大石氏による発言とコミュニティー内の発言をまとめたものになります。

前回の記事を読まれていない方はこちら

[blogcard url=”https://coinpicks1.wordpress.com/lighteningnetwork-1/”%5D

 

ライトニング・ネットワークで資金を盗む方法

ライトニング・ネットワークに関して「チャネル内の資金が盗まれる」という話があります。

結論から言うとその心配はありません。

それはなぜか?

まずは「チャネル内の資金が盗まれる」という話の前提から説明します。

ライトニング・ネットワークは、チャネル内の残高に対してお互いが電子署名を確認することで、送金しているように見えるというのは前回の記事で図を用いて説明させて頂きました。

さて、ここで悪意のあるAがいたと仮定しましょう。

ここにライトニング・ネットワークによる決済に対応したスターバックスがあります。

Aはコーヒー代金をBTCで決済しました。ここで悪意のあるAさんは、BTCで決済する前のチェーンに遡り履歴をオンチェーン(ブロックチェーン内)にブロードキャストしてチャネルを閉じて確定しようとしています。Aさんは過去にすべての残高に電子署名しているので、どの残高であってもブロードキャストをして確定させることができてしまいます。

これが「チャネル内の資金が盗まれる」という話の前提になります。

あたりまえですが、これでは使い物にならず最新の残高だけが有効でないと困ってしまいます。そのような悪意のある行動に対して、チャネルのクローズ方法に工夫をすることで防止しています。

 

協力的なクローズと非協力クローズ

悪意のあるものによるダブルスペンド(2重払い)を防止するために、チャネルのクローズ方法に工夫があることをお伝えしました。

チャネルには2種類の閉じ方、協力的クローズ非協力クローズがあります。

協力的なクローズは、ブロードキャストされた残高に対してABが合意することでクローズします。このクローズ方法であれば、最新の残高履歴が確認されるので協力クローズでは不正はおきません。

問題は、ダブルスペンドを目的とした古い残高をブロードキャストした後に、非協力クローズによって一方的にチャネルを閉じるというものです。しかし、非協力クローズのTX(トランザクション)には、タイムロックがかかる仕組みになってます。タイムロックがかかったTxは、48時間や2週間などあらかじめ定められた期間が経過しないと有効にならない仕組みです。もしその時間が経過すると、不正TXがマイニングされ成功してしまいます。

しかし、その48時間とか2週間の猶予の間に不正TXがブロードキャストしていることを検知してカウンターTXを出すことで、カウンターTXが先にマイニングされチャネル内のBTCを総取りできるような仕組みになってます。つまり、善意で不正Txを検知したものには正のインセンティブを提供し、悪意あるものにはチャネルのBTCを全て失う負のインセンティブを提供しています。

これが冒頭でお伝えした、チャネル内の資金が盗まれる心配は無いという理由です。

しかし、この不正TXをどのように検知するのかという課題があるのも現実です。

 

不正トランザクション(Tx)を検知する方法

悪意あるものによる不正TXはどのように検知するのか?

基本的には、ブロードキャストされてくるTXを全てウォッチしている必要が有ります。これはフルノードであれば必ず全てのTxを検知しているので、フルノードでライトニング・ネットワークを走らせているひと(またはフルノードに接続してつかうウォレット)にとっては何ら問題になりません。

Point:これはフルノードを運用するインセンティブになります。先日、国内で暗号通貨ウォレットを提供しているGincoもフルノードの運用を代理で行うことを発表しました。これから大手などの参入もどんどん増えてきそうですね。

不正Txの対処にかかる労力が大変という声が聞こえてきそうですが、基本的に不正Txの対処はライトニング・ネットワークのソフトウェアが自動的に行うので、ユーザーへの負担は全くありません。

問題はモバイルウォレットです。

実際に筆者の経験ですが、ウォレットに関しては数日以上オフラインの場合が多いです。その間にチャネルがクローズされ、タイムロック期間内にカウンターTx発行できないという問題があります。

それを防ぐために、ウォッチタワーというのが出てきます。

これは普通のフルノードですが、これに自身のチャネル情報を登録しておくことで、不正TXを発見した場合に代理でカウンターTXを発行してくれます。これはLND(*1)などのソフトウェアに実装される見込みで、今年の春くらいには使用できるようになるはずです。

*1 LND:Lightning Labs(ライトニング・ラボ)が開発しています。詳細はこちら

 

質問と回答

以下のような質問と回答がコミュニティー内でありましたので共有します。

Q:チャネルの状態を最新のものから巻き戻していけないので、バックアップが絡むと問題が複雑になりますよね。古いバックアップに戻してはいけない=バックアップを持っていることはある種のリスクになってしまいます。実際に少し前までは、Lightningのバックアップはどうしたらいいですかと質問すると、「バックアップは取るな!」という回答も見かけました。バックアップファイル(ある時点のチャネル状態)を持っているだけでは、決してそれはバックアップとして機能せず、必ずそれが最新であることを保証しなければなりません。個人ならば、それは個人の記憶やメモで補えるかもしれません。しかし、チャンネルの状態は、自分だけでなく相手方も変える権限がある。というか誰でも変えられる(routing)はずで、厄介では。

大石氏

そうですねバックアップの問題はややこしいです。自分のバックアップが最新なのかどうかを確かめる必要が常にでてきますね。おっしゃるようにルーティングノードは厄介ですね。いまのところ効率的な回答はなく。ただ、プロトコルレベルで、最新のステートだけをもてばよく過去の履歴はもたないで大丈夫な方法も提案されています。

 

LINE@ – 友達追加 –

おかげさまで現在お友達が1057名を突破しました。仮想通貨の最新情報や重要なファンダ情報などを「プッシュ通知」にて誰よりもはやくお届けします。

https://platform.twitter.com/widgets.js

CoinPicks Labってなに?

ライトニングネットワークのチャネル内の仕組みと基礎

ライトニング・ネットワークのチャネル内の送金の仕組みや方法について解説しています。基本的なことをお伝えしておりますので、この記事を読んで頂くことで今後のライトニング・ネットワークに関する情報についてもより理解を深めやすくなると思います。また、コミュニティー内の質問も多く収録しておりますので一度目を通してみてください。


ライトニングネットワークのチャネル内の仕組みと基礎

今回は、テレグラムの「Tokyo Dragons Den」というグループ内で非常にわかりやすいやりとりがあったので共有致します。

Q:ライトニング・ネットワークについて1つ疑問があるのでご教授頂きたいのですが、A→C、A→B→Cといった形で送金をする場合には、その取引記録等は最終的に誰が保管する事になるのでしょうか?デポジットしているBTCの増加減の事ではなくAとCの取引をしたという記録の保管先についての質問です。

大石氏

A・B・Cがそれぞれ保持します。ABの部分はABが保持して、BCの部分はBCがそれぞれ保持します。

ライトニング・ネットワークではチャネルに関する部分が少し複雑になっています。上記の質問と回答の意味がそもそも分からないという方がほとんどではないでしょうか?

この記事を読んでいただくことで、最終的には上記の質問と回答の意味を理解して、ライトニング・ネットワークのチャネル内の送金に関する基礎を理解頂けます。

 

ライトニングネットワーク チャネル内の送金の仕組み

ライトニング・ネットワークのチャネル(*1)内での送金に関して下記より図を用いて説明致します。前提として黒い玉はキャパシティ(デポジットされたBTC)を表しており、Bobを「A」Aliceを「B」とします。また、後ほど登場するTomは「C」とさせて頂きます。

*1 チャネル:例えば、「A→B」という取引を行う場合には、まずはじめにチャネルを開く必要があり「A→B」の部分の「→」の部分がチャネルとなります。

上図はA→Bのチャネルを表しています。

A→Bというチャネルを通して、黒い玉を2個送金すると、チャネル内の残高が書き換わります。この状態でチャネルを閉じ(精算す)ると、この残高がそれぞれオンチェーン(ブロックチェーン上)で処理されます。

上図から分かるようにA←Bという送金を実現するためには、いったんAからBに黒い玉を送金しないとA←Bの送金はできません。では、A→B→Cはどうやるかというと、この玉突きの連携です。

これがA→B→Cの連携状態です。

この状態のとき、AからCに2つ黒い玉を送金するためにはどうしたら良いでしょうか?

答えは、AからBに送金、BからCに送金するという連携が必要になります。

ここで重要なのはBはAから受け取った黒い玉をCに送っているわけではないということです。あくまでチャネルはAとB、BとCの間だけで成り立っているので、Aのコインが直接Cに送金されるというわけではありません。

つまりライトニング・ネットワークは、チャネルのバランス(残高)を玉突きのようなイメージで行ったり来たりさせることで、あたかも送金されているような感じに見えるという仕組みなのです。

 

チャネルの精算と残高の記録

次にチャネルを閉じた際のブロックチェーンへの記録についてお話します。

チャネルを閉じるのに必要な情報はABBCがそれぞれの間で保持しています。ABが合意すればABの間の残高を閉じて精算できます。BCも同様に双方の合意によってチャネル間の残高を閉じて精算することができます。ちなみにAは、BCのチャネルを勝手に精算することはできません。

POINT:チャネルを精算するということは、AとBの精算時の残高をブロックチェーン上に記録することを意味します。ライトニング・ネットワークはチャネルを開くことからはじまり閉じることで終わります。手数料は唯一この時に発生します。

チャネルを閉じるとブロックチェーン上に最終残高だけが記録されます。それまでの間に、黒い玉がチャネル内を何回移動しようが、その履歴についてはABの当事者しかわからないようになっています。

このようにA→Bのようなチャネルが沢山作られ、A→B→Cというように繋がっていくと、それがネットワークとなり様々なところに送金可能になるのです。現在ライトニング・ネットワーク内のチャネルは23861個つくられています。また総デポジット量は652BTC(2019年2月7日現在)です

Lightning Network Search and Analysis Engine

Lightning Network Explorer

視覚的にライトニング・ネットワークのチャネルを確認することができて面白いですよ。

 

ライトニングネットワークの送金網とAMP

A→BCDという送金があったとします。

この時Bは、最終着金者がDであることは知りません。Bは、Aからの送金をCにバケツリレーするという命令だけうけて実行しているだけにすぎず、その先Dまで行くということは関知できません。同じように、Cは、Bからの送金をDに送るだけで、それがはじめはAからの送金だったということはわかりません。

つまり、ルーティングする人は前後だけしかわからないという仕組みになっています。しかし、ADは、お互いがどのようなルートでいくら送金したかというのは記録を保持しているので知ることができます。当事者だけが全体を知っているという形になっています。

「ライトニング・ネットワーク内の送金は全て検閲される」という噂がありますが、上記の仕組みを理解していればFUDであることがわかります。

さらにAMPというものがあります。
これは送金経路をいくつかに分けるというしくみです。

たとえばAからXに黒い玉を3個を送りたいとします。

  • A→B→Xというルートで1個送金
  • A→C→D→Xというルートで1個送金
  • A→P→Q→Xというルートで1個送金

3つのルートからの送金をひとまとまりにして送金することができます。

そうすると、それぞれ途中の経路の人は、全体の送金がいったいどうのように行われているのかを知るすべは殆どないでしょう。ということでライトニングは経由者(=ハブ)が検閲できるという話も正しいですが…

  1. 送金経路を知ることができる範囲は前後まで
  2. AMPで送金すると全体像は把握不可能

なので、全体としてはオンチェーンよりも匿名性が増し、チェーン解析のようなこともできないと考えられます。

 

質問と大石氏の回答

Q:ライトニングはこのリレー途中で外部からの阻害行為を仕組的に予防してることにもなるのでしょうか?

Community ALNHTLCという技術を使ってトラストレスな仕組みを構築しており、外部からの阻害および参加者同士の裏切り行為を防止しています。結構複雑なので自分もなかなか理解できなかったのですが、以下の記事がたぶん一番わかりやすいかも?https://zoom-blc.com/lightning-network

HTLCというのは、Hashed Timelock Contractの略でBTCをロックされたアドレスに送金して、一定の条件を満たすことで資金の取り出しが可能となります。この仕組みを用いることで赤の他人ともトラストレスな取引が実現します。

Q:オフチェーンの仕組がなぜこんなに早い送金を実現してるのでしょうか?

Community A:ご存知と思いますが、オンチェーントランザクションは新規BTCの供給スケジュールを固定にするためにどうしてもブロックタイム10分の制限があります。オフチェーンの場合はそこに依存しないので、参加者同士での接続のみで次々にチャネルを更新できるので早いです。

オフチェーンはブロックチェーン外の処理ということです。

Q:リレー途中で阻害されても、一時的にロックして到達先から承認されないと(自分のチャンネル内の?!)全て取引が破棄されるので、セキュリティーが担保される感じでしょうか

Community A:自分の理解だと、ロックしているものを無理やり解除するしようとすると損するため実質できない、ということだと思います。

Q:最終的にブロックに記録されるのはライトニングで決済されたかなり後になってからトランザクションとして記録されるイメージでよいのでしょうか?

Community A:ブロックに記録されるのは、ペイメントチャネルを閉じたときですね。たしか現状は時間の制限はないので、ずっと開きっぱなしでもいけるはずです。

大石氏

リレー途中で悪さや障害があると、送金全体が失敗する仕組みになっています。なので資金が途中でスタックしてしまうというようなことはないようになっています。技術的にはHTLCという仕組みを使っています。

最終的にオンチェーンでコインを使いたければチャンネルを閉じてコインをオンチェーンに戻す必要があります。ただしその必要がなければチャンネルはずっと開けっぱなしでもOK ですし、オフチェーンの世界でなんで何度でも使って送金したり受取することができますので、 そのまま財布として使い続ければ問題なしです。送金の都度チャネルを閉じる必要はありません

Q:Bluewalletに関してはペメントチャンネルを意識せずに使えてるように感じますが、他のウォレットだとチャンネルを閉じるか開けとくか任意に設定出来る感じでしょうか?もし他に代表的なお勧めのウォレットなどあれば教えていただけると幸いです

大石氏

Lightning Wallet というのが、チャネルの設定ふくめていろいろできるようになってます。私もこれをつかってます。(android のみ)

Q:ただの質問になってしまい恐縮ですが、追加でBTCをライトニング・ネットワークに入金する場合は、チャネルを閉じる必要はない。ライトニング・ネットワーク外のウォレットにBTCを出金する場合、チャネルを閉じる必要がある。という理解で大丈夫でしょうか?

大石氏

今のところチャネルにお金がなくなった時に外からBTCを入金するというのができないのですが、サブマリンスワップという方法を使うとこれができるようになります。ただし通常のオンチェーン手数料がかかります。あとスプライシングと言ってチャネルの容量を後から増減できるような技術も今後できるようになるようです。

以上

ここまで読んで頂けたのであれば最初の質問にも答えられるようになっているはずです。試しにもう一度見直してみてください。また、それ以上に全体像の理解ができたのではないでしょうか?

今後もライトニング・ネットワークに関する記事を増やしていきたいと思います。

 

あわせて読んでほしい記事

[blogcard url=”https://atomic-temporary-106217043.wpcomstaging.com/bitcoin-qa2/”%5D

 

LINE@ – 友達追加 –

おかげさまで現在お友達が1057名を突破しました。仮想通貨の最新情報や重要なファンダ情報などを「プッシュ通知」にて誰よりもはやくお届けします。

https://platform.twitter.com/widgets.js

CoinPicks Labってなに?

ビットコインにおけるウォレット構造

ウォレットは秘密鍵の容器であり、ビットコイン自体がウォレット内に入っているわけではありません。つまり、ユーザーはビットコインではなく秘密鍵が入ったウォレットを持っているというのが正しい認識です。

UTXOとしてバラバラに存在しているトランザクションに秘密鍵を使用して署名をすることで、自身の所有物としての証明をします。この証明をしているのがUTXO内に含まれるトランザクションスクリプトであることは下記記事で説明しました。

ビットコインにおけるトランザクションの仕組み

今回の記事ではウォレットの構造について説明したいと思います。

 

非決定性ウォレット

初期のウォレットというのは、ランダムに生成された秘密鍵の単なる集まりでした。これをType-0非決定性ウォレットと呼んでいます。

このタイプのウォレットは、初回起動と同時に100個のランダムな秘密鍵とそれに付随する公開鍵が同数生成されます。ユーザーは生成された秘密鍵の厳重な管理とすべての秘密鍵をバックアップする必要があります。

なぜならば、ウォレットにアクセスする際に秘密鍵をバックアップしていないと、鍵に紐ずく資金にアクセスできなくなってしまうからです。よってType-0非決定性ウォレットはビットコインコア(*1)開発者たちからは推奨されておりません。

*1 ビットコインコア:Satoshi Nakamotoの論文を元に集開発開発者。

構造はシンプルですが、大量に生成された分の秘密鍵の管理はハードルが高く実用的ではないと言えるでしょう。

 

決定性ウォレット

Seeded(シード)ウォレットとも呼ばれており、一方向性ハッシュ関数を用いて導出された秘密鍵の入ったウォレットを指します。

またシードウォレットでは、インデックス番号とChaincodeと呼ばれる他のデータと組み合わせることで複数の秘密鍵を生成することができます。

このシード(*2)さえバックアップしておけば、生成された全ての秘密鍵を復元することが可能であり、非決定性ウォレットとは対照的にウォレットの管理と鍵の移行を容易にしています。

*2 シード:初期設定時にユーザーに対して12から24個の英単語の列を表示します。この英単語の列がウォレットのバックアップになります。余談にはなりますが、ハッシュ関数SHA256を用いると24文字の列となり、SHA128を用いると12文字の列となります。

ハッシュ関数に関する記事はこちらをご覧下さい。

ビットコイン におけるハッシュ関数について

 

階層決定性ウォレット

HDウォレットとも呼ばれており、上述した決定性ウォレット(シードウォレット)をBIP32(*3)で定義した最も推奨されるウォレットとなります。

*3 BIP:BIPとは (Bitcoin Improvement Proposal) の略称で「ビットコイン改善案」という意味を持ち、ビットコインの性能や機能について定義しています。

HDウォレットでは、鍵がツリー構造をなしていて親鍵が子鍵群を生成して、それぞれの子鍵が孫鍵群を生成するといった形で、生成が無限に続いていきます。

具体的なHDウォレットの生成方法としては、シードを起点としてマスター秘密鍵とマスターChaincodeが生成され、マスター秘密鍵からマスター公開鍵が生成されます。一方でマスターChaincodeは、親鍵から小鍵、小鍵から孫鍵と階層上に秘密鍵を生成するために使用されます。

もう少し細かく説明すると、親鍵から小鍵を生成するためには親秘密鍵または親公開鍵とChaincodeとインデックス番号が必要で、Chaincodeによって小秘密鍵にランダム性が生まれインデックスによって小鍵の階層が決まります。つまりインデックス番号を変えることで、小鍵0、小鍵1、小鍵2と作り出していくことができます。

このように最初はランダムに生成されたマスター秘密鍵とChaincodeですが、小鍵や孫鍵の生成がされていくことで親の情報が引き継がれていきます。

HDウォレットには2つのメリットとデメリットが考えられます。

メリット

  • ツリー構造の利点を生かしてそれぞれの階層に役割を与えることができる。例えばおつり用、支払い用、受け取り用などと用途を分類化することができます。
  • シードさえあれば全ての鍵の復元が可能なため管理が楽になります。

デメリット

  • シードを紛失した場合、関連したビットコインは全て凍結してしまいます。
  • シードを誰かに知られた場合、関連したビットコインは全て盗まれてしまいます。

 

HDウォレットの識別子

HDウォレットにある鍵は「Pach」命名規則を使用して一意に指定されています。この命名規則はスラッシュ(/)を使って区切ります。

実際の規則例を見たほうが理解が早まりますので、まずは下記をご覧下さい。

m / 0:マスター秘密鍵から生成された最初の子秘密鍵

m / 0 / 0:最初の子供(m/0)の最初の孫秘密鍵

m / 0’ / 0:最初の強化された(*4)子供(m / 0’)の最初の通常の孫秘密鍵

m / 1 / 0:2番目の子供(m / 1)の最初の孫秘密鍵

M / 23 / 17 / 0 / 0:24番目の子供の18番目の孫の、最初の曽孫の最初の玄孫の公開鍵

*4 強化された鍵:強化導出関数と呼ばれており、詳細は割愛しますが、簡単に説明すると生成された鍵のセキュリティーが向上している状態を言います。

マスター秘密鍵から得られた秘密鍵は「m」から始まります。マスター公開鍵から得られた秘密鍵は「M」から始まります。また注意点として数字は0から数えはじめるため、m / 1 はマスター秘密鍵から生成された2番目の子秘密鍵ということになります。

右から左に進むほどに先祖の鍵であることを意味しており、1番左はマスター鍵になります。1つの親鍵はま40億個の子鍵を持つことができます。つまり、ツリー状にどんどん鍵を生成することが可能ですがその分複雑になります。

その改善案としてBIP44が提案されました。

BIP44ではウォレットの目的が明確化されており、下記のような5つの階層構造になっています。

m / purpose’ / coin_type’ / account’ / change / address_index

構造例を下記に示します。

M / 44’ / 0’ / 0’ / 0 / 2:最初のビットコイン口座に対する3番目の受信用公開鍵

M / 44’ / 0’ / 3’ / 1 / 14:4番目のビットコイン口座に対する15番目のおつり用公開鍵

m / 44’ / 2’ / 0’ / 0 / 1:トランザクションに署名するための、ライトコインメイン口座の2番目の秘密鍵

先程と同様にマスター秘密鍵から得られた秘密鍵は「m」から始まります。マスター公開鍵から得られた秘密鍵は「M」から始まります。

最初の構造である「purpose」は常に44となります。

第2階層「coin_type」では、トークンの種類を表しており、ビットコインはm/44’/0’、ビットコインテストネットはm/44’/1’、ライトコインはm/44’/2’によって表されます。

第3階層「account」では、同じ階層内でユーザーが何番目の口座を使用しているのかを示しています。

第4階層「change」では、受け取り用アドレスまたはおつり用アドレスを区別しています。m/44’/0’/0/0が受け取り用アドレス、m/44’/0’/0/1が受け取り用アドレスを示しています。

第5階層「address_index」では、第3階層で指定した口座内の何番目のアドレスなのかを示しています。

 

CoinPicks LINE@

おかげさまで現在お友達が1057名を突破しました。仮想通貨の最新情報や重要なファンダ情報などを「プッシュ通知」にて誰よりもはやくお届けします。

https://platform.twitter.com/widgets.js

CoinPicks Lab

学習項目
 
  • 分析レポート
  • Bitcoinについて
  • Ethereum経済圏について
  • ST(セキュリティートークン)について
  • PoS型プラットフォームトークンについて
  • ステーブルコインについて
  • コンセンサスアルゴリズムについて
  • トークン設計について
  • 流通設計について
  • CBDCについて
  • 各インフルエンサーによる特化した情報
  • Q&A項目の共有
  • 基礎学習
  • 掲示板

https://lounge.dmm.com/detail/761/

などなど…
今後も学習項目は増えていきます。

ブロック内のデータとナンス

ブロックチェーンに含まれるデータとブロック承認までの流れについて簡単にまとめたいと思います。

ブロックチェーンという言葉だけが先行して有名になり、その中身やどのようにしてブロックが生成されているかまでは知らない方が多いのではないでしょうか。

 

ブロックチェーンに含まれるデータ

まずはじめにマイナーが承認するブロックにはどのような情報が含まれているのでしょうか。

下図をご覧ください。

ブロックの中身は大きくヘッダーとボディーにわけることができます。ヘッダー部分には「前ブロックデータのハッシュ値」と「ナンス」が含まれ、ボディー部分には「取引情報」が含まれています。

ヘッダー部分に含まれる「前ブロックデータのハッシュ値」がチェーンの役割をしており、このハッシュ値が次のブロックのハッシュ値を求めるために使用されます。その際のハッシュ値が1文字でも異なれば全く違うハッシュ値が生成されるため、改竄は困難であり改竄する場合は過去のハッシュ値から全て書き換える必要があります。

ビットコイン におけるハッシュ関数について

 

ナンスとは

ヘッダー部分に含まれる「ナンス」とは、number used onceの略でブロックのデータをハッシュ関数に通したときに、先頭に0がたくさん並ぶような非常に小さい32ビットのハッシュ値が生成されるように調整するための値のことを言います。

このナンスを見つけるために、マイナーがハードウェアと電力を用いて計算をする作業をマイニングと言います。ビットコインは10分に1度ブロックが生成されますが、この時間はナンスによって調整され、この調整を難易度調整(Difficulty)と言います。Difficultyは2016ブロック(20160分)毎におこなわれマイナーが増えハッシュレートと呼ばれる計算資源が多く集まるとDifficultyが上昇します。逆にハッシュレートが下がるとDifficultyは下降します。

Difficultyはこちらから確認できます。
https://fork.lol/pow/difficulty

実は、ナンスというのはブロックのヘッダーのみに存在するのではなく、ブロックの最初のトランザクションである「coinbaseトランザクション」という特別なトランザクションにエクストラナンス(extra nonce)として存在しています。

extra nonceの役割は非常に重要で急激なDifficultyの上昇の際にマイニングを可能にします。ヘッダーに含まれるナンスは4byteなので4,294,967,296回(約4億回)の計算が可能です。Difficultyが上昇すると約4億回では計算回数が足りません。

するとマイニングが完了しないという自体に陥るため、extra nonceをcoinbaseトランザクションに含めているのです。

こうして新たなブロックが承認・生成されます。

 

CoinPicks LINE@

おかげさまで現在お友達が1057名を突破しました。仮想通貨の最新情報や重要なファンダ情報などを「プッシュ通知」にて誰よりもはやくお届けします。

https://platform.twitter.com/widgets.js

CoinPicks Lab

学習項目
 
  • 分析レポート
  • Bitcoinについて
  • Ethereum経済圏について
  • ST(セキュリティートークン)について
  • PoS型プラットフォームトークンについて
  • ステーブルコインについて
  • コンセンサスアルゴリズムについて
  • トークン設計について
  • 流通設計について
  • CBDCについて
  • 各インフルエンサーによる特化した情報
  • Q&A項目の共有
  • 基礎学習
  • 掲示板

https://lounge.dmm.com/detail/761/

などなど…
今後も学習項目は増えていきます。