技術
2018/04/21Ethereum(イーサリアム) ERC721の特徴は? ERC20やERC223との違いを徹底比較!
こんにちは!Shota(@shot4crypto)です。 多くのプロジェクトがイーサリアムのERC20と呼ばれる標準の規格でトークンを発行しますが、これに続き新たにERC223やERC721といった規格が開発されています。 今回は、このERC721という規格が他のERC20やERC223とどのような部分で異なるのか、ERC721の特徴などを解説していきたいと思います。 dAppsゲームなどでも利用されることが多い規格なので、是非頭に入れておいて下さい。 スマートコントラクトには規格がある Ethereum(イーサリアム)のスマートコントラクトにはERCと呼ばれる標準規格が存在します。 このERCとはEthereum RFC(Request for Comment)の略のことで、この後ろにつく番号は単純に規格の種類を表します。 数字が大きければ、必ずしもそれが過去の規格をアップデートして優れた性能を持つわけではないというわけではなく、数字によって異なる特徴を持つ点に注意してください。 現在では、大半のトークンが2014年に開発されたこのERC20を標準規格として採用しています。 その後2017年3月5日に、ERC20のいくつかの問題を解決したERC223が開発されました。 ERC223に関しては以下の記事を参照してください。 関連記事:Ethereum(イーサリアム)のERC20を解決したERC223とは何か? その後2017年9月に登場した新たな規格がERC721になります。 ERC721とは?用途や特徴を解説 このERC721という規格ですが、ERC223と違いERC20における問題を解決するために作られたものではありません。 以下に説明する非代替性などの特徴から、既存の規格における問題を解決するというよりは、別のベクトルでスマートコントラクトに新たな可能性をもたらす規格として作られたと考えるのが妥当です。 ERC721の特徴である非代替性とは ERC721はNFT(Non-Fungible Token)と呼ばれ、それぞれのトークンが固有の希少性や独自性などを持つことができるように設計されています。 『Fungible』とは『代替性を持つもの』のことを意味します。 例えば、友人から100円を借りたとして、それを返すとき100円を渡すことで貸し借りが成立するのは、通貨が持つ『価値の保存』、『価値の尺度』、『交換の手段』の3つがFungibility(=代替性)となり、借りた100円と返す100円が同じ価値を持つためです。 NFTという性質を持つERC721では、トークンがそれぞれが独自の価値(例:レア度、所有権など)を持つために、『AがBにトークンを渡し、3日後にBがAにトークンを返す』といった交換が成立しない可能性が出てきます。 次にこれがなぜ成立しないのかを具体的な用途を交えて解説します。 ERC721の用途 このNFTという性質のために、トークンは主にDappsゲームなどで利用されています。 例えば、CryptoKittiesやChain MonstersなどのDappsにおいて、プレイヤーは自身の猫の育成や交配、モンスターのレベルや世代が独自の価値を生み出すため、マーケットプレイスでは様々な特徴を持った猫やモンスターが売買されます。 上に述べた『AがBにトークンを渡し、3日後にBがAにトークンを返す』といった交換が成立しないのは、モンスターの性質(レベルなど)が変化することで、同等の価値を保つことができなくなるためです。 したがって、この規格は決済手段などとして使われる通貨を目指すマイクロペイメントなどのトークンというよりは、どちらかというとDappsの主にゲームにおいて、育成要素などを付与する際に使われることが多くなります。 ERC721の将来性 育成要素のあるDappsゲームにおけるこの規格の採用はこれからも増えていくと考えられますが、その他の場合だとどのように採用されていくのでしょうか? 僕個人としては、現実的なモノやサービスと連動するのではないか、と考えています。 ERC721の採用例を2つほど挙げさせていただきます。 音楽ライブでのチケット購入 音楽ライブにおいて、座席やライブまでの日付により価格が変動するチケットはERC721の採用により、マーケットプレイスにおいて相対的な価値で公正に主催者のプラットフォームのもとでチケットが売買される環境を構築することができます。 スマートコントラクトにより、主催側のプラットフォーム以外でこれが売買される(現在でいうダフ屋など)場合、このトランザクションを成立させないことも可能になります。 Webサービスにおけるイノベーション 例えば、自身の価値を形にできるWebサービス(タイムバンクやVALU)において、例えばXYZトークン(XYZ)に識別可能な3つの特徴(Aフォロワー数, B秘密鍵, C平均RT数, Dサービスプラットフォーム内での評価)を検出するスマートコントラクトが書いてあるとします。 このときERC721を使ったXYZを僕が発行(プラットフォームから購入)した場合、フォロワーは300人、秘密鍵、平均RT数、プラットフォーム内の評価などから相対的なトークンの価値が算出され、これはリアルタイムで変動します。 仮にきゃんた君がXYZを発行(プラットフォームから購入)した場合、フォロワーが6000人いるのでこのときのXYZトークンの価値は相対的に僕のXYZトークンより高くなります。 これはあくまでも簡単に考えた例でしかないので現実的ではないかもしれませんが、より洗練されたインプットデータを入力することで、正確に公正に価格を設定することが可能な、こういったサービスが登場するかもしれません。 まとめ この記事ではERC721を、ERC20やERC223との機能面や用途に関しての比較という形で紹介させていただきました。 Dappsゲームは、勝ち負けをこだわる際にこういった非代替性が必要不可欠になってくるので、これからはよりERC721を採用したトークンを目にする機会が増えると思います。 要注目です!
技術
2018/04/19ビットコイン + スマートコントラクト RootStock(ルートストック) / RSKとは?
Crypto Times公式ライターのYuyaです。 2008年に登場し、その革新的なテクノロジーで仮想通貨市場を作り上げたビットコイン。 その後2015年に登場したのがイーサリアム。スマートコントラクト機能がブロックチェーンの応用・実用性を飛躍的に向上させました。 ビットコインには価値貯蔵(Store of Value)としての市場最高の知名度・信用があるものの、使いやすさの面ではイーサリウムを始め毎日のように生み出される他のプロダクトに劣るようになりました。 そこでビットコインにスマートコントラクトの機能をつけることによって、ビットコインの通貨としての普及を広めようとしているのがRootStock(ルートストック)です。(以下、RSKとする) 今回は、RSKのプロジェクト内容や魅力について詳しく書いていきたいと思います。 RSKプラットフォームの魅力 それでは、RSKにはどのような特徴があって、何故、今、注目される魅力的なプロジェクトなのでしょうか? RSKにはスマートコントラクトやビットコインとのサイドチェーン、マージマイニングなどなど、たくさんあります。一つ一つ見てみましょう。 RSKバーチャルマシン (RVM) スマートコントラクトの要となるバーチャルマシン。 イーサリアム・バーチャルマシン(EVM)と互換性があるため、イーサリアムのスマートコントラクトがRVM上で円滑に機能するようにできています。 つまり、RSKプロジェクトによってイーサリアムユーザーもビットコインのネットワークの安全性を享受することができる、ということになります。 BTC-RSKサイドチェーン サイドチェインとは、「ツーウェイペグ」とも呼ばれ、ある通貨の価格がもう一つの通貨に連動していることを示します。 RSKの場合、ビットコインとRTC(RSK側の通貨)が1:1で連動しています。 仮に10BTCを両替するとしましょう。 ここでは実際にBTCがRSKに"両替"される訳ではありません。ビットコイン側で10BTCが凍結され、RSK側で10SBTC(Smart Bitcoin, RSK側の内部通貨)がアンロックされます。 逆のトランスアクションを同じで、10SBTCが凍結されると取引先の10BTCがアンロックされる、という寸法です。 マージマイニングとフェデレーション RSKでは、ビットコインとRSKのネットワークを同時にマイニングすることができます。 大まかなフローとしては、マイナーはユーザーのBTC-SBTC間の両替の手数料をSBTCで受け取ることができ、更にそれをBTCに1:1のレートで変換できる、ということになります。 このBTC-SBTC間の変換は前述のツーウェイペグで行われるものですが、RSKはここにフェデーレションというセキュリティチェックポイントを置き、安全性を高めています。 フェデレーションとは学術的権威やエキスパートで構成されたチームで、RSKのハッシングパワーが一定以下になった場合にチェックポイントとして介入することになっています。 フェデレーションのメンバーはマイナー、ユーザー、RSKおよびビットコインのデベロッパー、ビットコイン関連の非営利団体などの投票によって決められるそうです。 効率的ネットワーク RSKではDECOR+やGHOSTといったプロトコルを使用することにより、ネットワークの効率化を図っています。 ビットコインの問題であった決済のスピードを改善し、1トランザクションあたりを10秒で処理できると計算されています。 トランザクションの速さは様々なプロジェクトで大幅に短縮されていますが、RSKはそこにビットコイン連動、スマートコントラクト搭載といった特徴があるのが優れているところだと考えられます。 まとめ RSKはビットコインに連動したブロックチェーンで、スマートコントラクトが使えるプロジェクトということでした。 つまりビットコインにスマートコントラクトの拡張機能を付け加えたようなものですね。 それだけではなく、マージマイニングでビットコインとRSKの両方のネットワークを同時にマイニングでき、フェデレーションが追加のセキュリティチェックポイントになるので安全性も高い訳です。 その上にネットワークの高速化もなされているので、ビットコインの実用性をあげること間違いなしですね! ビットコインにスマートコントラクトがついちゃうのは強すぎるっ!!
技術
2018/03/06Ethereum(イーサリアム)のERC20を解決したERC223とは何か?
どうも、カリフラです(。・ω・。) 今回がCRYPT TIMES公式ライターとしての記念すべき1発目の投稿となりますが、これから読んでいただいている方に分かりやすく、そして楽しんでいただけるように頑張りますのでよろしくお願いします。 それでは早速ですが今回は、ERC20の進化版!?これから需要がさらに伸び話題になっていくであろうERC223とは? というテーマについて説明しながら私個人の見解も交えつつ進めていこうかなと思いますので是非最後まで読んでいただけたらなと思います。 ERC20とは まず最初に、「てかそもそもERC20ってなんなの?」って方向けにERC20について少し説明していきますね。 ERC20というのは皆さんご存知イーサリアムのシステムのことであり、このERC20のシステムを使うことによってイーサリアムのブロックチェーン上に容易にトークンを発行することができます。 現在、イーサリアム上で発行されているトークンの多くはERC20というシステムに従って発行されています。 ERC とは「Ethereum RFC (Request for Comment)」の意味で、その20番目なのでERC20と命名されており、私たちがよく知っているトークンだとOmiseGo、そしてAugurなどがERC20のシステムを利用したトークンとして挙げられますね。 他にもICOをしているトークンでイーサリアムのブロックチェーンを利用しているものは現状ERC20に準拠しているトークンがかなり多いと言えます。 ERC223の特徴 はい、ということでERC223についてお話していきます。 ERC223とはすごくザックリ言うと「ERC20の改良版」です! どういうことかと言うと、大きく分けて2つほど良くなった点があって1つ目は送金の際に必要なGASがERC20の時よりも少なくて済むという点です。 イーサリアムを送金する際にはその燃料となるGASが必要なのですが、必要なGASの量が少なくても動きますよってことですね。 車で例えるなら燃費が良くなったので、少ないガソリンでもいっぱい走りますよーって感じです😊 そして2つ目が、送金先のアドレスを間違えても大丈夫という点です。 現在ERC20のシステムの場合イーサリアム(ETH)やイーサリアム上のトークンを送金する際に送金先のアドレスを間違えて送ってしまうとそのトークンは消滅してしまいます。(正確には消滅というより存在しないアドレスに送られるといった感じでしょうか。) 送金先のアドレスを間違えて「セルフゴックスしちゃった。」なんて話もよく聞きますよね...。実際に日本円にして3億円以上のトークンが闇に葬られてしまっているんです😢 今のご時世、電話ですら番号を間違えたら「おかけになった電話番号は現在....」ってちゃんとお知らせしてくれるのに最新技術であるブロックチェーンがこれではきついですよね(>_<) しかしERC20の上位互換と言われるERC223のシステムを利用した場合、送金先のアドレスが存在しなかった場合は送り主に返還されるのです。 これは送り主が送金先のアドレスを入力し、「送金」を申請するとそのアドレスが存在するのか事前に確かめて確認が完了できたらそのトランザクションの実行が開始されるというわけですね。 このERC223のシステムが導入されることで、「このアドレスで合ってるよな?コピペミスってないよな?ミスってたら100万円消えるぞ....。あと100回は確認しよ!!!」って感じで気づいたら朝になってたなんてこともなくなるわけですね♪ 技術面 じゃあ「どのようにしてERC223のシステムを導入するの〜?」っていう技術的な話なんですけど、システムを変えたり今回のように改良する場合、もちろん「た、たのむ...改良されてくれ....」って念じても何も改良されないわけで、 そうなんですよ。あのヴィタリックの力を持ってしても祈るだけじゃ何も起こらないんすよね。 なのでエンジニアの方がコードを書く(プログラミングする)ことでシステムが変わるわけなんですが、プログラミングをするのにも言語というのがありまして、Java・Java Script・Go言語・C++・pythonなどさまざまで、今回のイーサリアムの場合は「Solidity」というちょっと珍しい言語を使っています。 (SolidityはJava Scriptと似ているので案外いけたりするみたいですが) それで、今回のERC223の話に戻ると、例えば今まで(ERC20の場合)は送り主が10ETHを「送信」ってやると送金先のアドレスを確認せずに手動で、「おっけー。トランザクション開始」って感じのシステムだったのですが、ERC223の場合はそこの手動の作業を自動化することで送金のアドレスに誤りがないか確認された上でトランザクションが開始されるといった感じです。 今後とまとめ とまあこのような感じで、イーサリアムの次の段階でもあるERC223について特徴などご紹介してまいりましたが、冷静に考えると送金先のアドレス(住所)を間違えるとそのトークンを紛失してしまうという状況って結構やばいですよね。 まあ私の友人で、「大学受験の際に住所を間違えて違う大学に受けにいってしまってテストに遅刻した」なんていうほんとにやばいやつもいましたが...。 それは置いといて、これからまだまだイーサリアム上でICOをするというのは主流でありそういったトークンは出てくると思います。 そういった際にやはり既存のERC20を使うトークンは少なくERC223を使ってICOをすることが増えていくだろうと思います。 また、管理方法に関してはERC20とERC223は同一のイーサウォレットで管理することができるので便利だと思いますね。 そして、イーサリアムはEC223以外にも 「フロンティア」→「ホームステッド」→「メトロポリス」→「セレニティ」とアップデートを続けており、これからも欠点であると言われている点が改善されていくことでしょうし楽しみな銘柄ですね。(2018年2月現在は3つ目のメトロポリスの途中) それでは今回はこのへんで終わろうと思います。最後まで読んでいただきありがとうございました(*・ω・)ノ
技術
2018/03/02DAG通貨について徹底解説!IOTAやADKなどについてわかりやすく紹介!
こんにちは、hayata(@hayata_crypto)です。 今回は、DAG(Directed Acyclic Graph)について解説します。 DAGという技術は、IOTA・byteball(GBYTE)・NANO(旧xrb)・Aidos kuneen(ADK)で採用されています。どれも一度は聞いたことがあるような、有名なものばかりですね。 どれも発行日より大幅に価格を上げており、DAGを採用しているだけでかなり高い注目を得られています。また、Travelflex(TRF)もDAG通貨として注目を浴びましたが、あくまで"採用する予定"となっており現段階では一般的なブロックチェーン方式の通貨(POW)となっています。 2018年2月ごろには、TRUSTNOTE(TTT)という新DAG通貨のAirdropもありましたね。信用できるか保証はしません。 このように、大変注目度の高いDAGについて解説していきます。 この記事の3つのポイント! スケーラビリティの問題を解決できる可能性を秘めている DAGは通貨ごとに少しづつ違う仕組みである DAG特有の課題も確認されている 参考:ブロックチェーンに変わる新技術?DAGとは、IOTA(IoT特化型暗号通貨)の技術の裏側、NANOのWHITEPAPER、RaiBlocks(XRB)とはなにか。 DAGの仕組みと、ブロックチェーンとの違い DAGとは、有向非巡回グラフと呼ばれるように、向きがあって巡回しないように取引が複数のチェーンに繋がれている形で取引を記録していきます。 ビットコインなどの仮想通貨では、ブロックチェーンという技術が採用されています。 基本的なDAGとブロックチェーンの大きな違いは、一つの一つの取引をまとめて記録するかそれぞれ記録するかという違いがあります。 以下のようなイメージです。 ブロックチェーンでは、ブロックをチェーンで一本につなぎ一方向につなぎ足すことによって、そのブロックにある複数の取引データを記録します。 それに対し、DAGでは、1つの取引データを一方向に複数つなぐことによって取引を記録しています。 DAGでは、ブロック内に取引データを収容する必要がないので、ブロック生成時間とブロックサイズが原因で送金が遅くなるという問題が改善されます。 DAGではすべての通貨があらかじめ生産されていますので、マイニングという概念そのものがありません。 通貨ごとのDAGの違い ここからは、通貨ごとにDAGの仕組みが違うことを解説します。 IOTAのDAGとは IOTAはIoT機器間などにおけるマイクロペイメント(少量少額送金)の為に作られた通貨です。 IOTAでは、DAG構造はtangleと呼ばれています。そして、それぞれのトランザクションは二つ前のトランザクションを参照するように生成されています。 そして、基本的に取引手数料が無料ということも特徴の一つです。 利用者は、自分の取引をするためにトランザクションを生成するのですが、この時に過去のトランザクション承認することが必要になります。この承認時に、ビットコインなどのマイニングのようにPOW(proof of work)を行うことが求められます。 送金者自身で、自身の送金を完了するためにPOWを行うので送金手数料がかからないのです。 また、一般的に仮想通貨では取引手数料がかかりますが、かかる理由の1つとしてスパム攻撃への対策が挙げられています。IOTAでは、二つ前のトランザクションを承認することが求められるので、攻撃する度にPOWを行うことになるので、攻撃を受けるほどより承認速度が上がります。 そして、IOTA財団は現在、Coordinatorという特別なノードを用いて、既に承認されているトランザクションをチェックし取引を整備することで、tangleのネットワークを大規模攻撃から守っています。これにより、IOTAは完全には分散化出来ていません。とはいえ、将来的にはCoordinatorは役目を終え、完全な分散化が達成されると考えられています。 また、量子コンピューター耐性のある署名方式が採用されています。将来を見据えて設計された通貨であると考えておけばいいと思います。 しかし、IOTAは二重支払いやトランザクション分岐の問題があると言われています。 少額送金や署名や二重支払い問題については、過去記事で簡潔に解説していますのでご覧ください。 ○IOTAの要点 取引手数料がかからない スケーラビリティの問題の解決 量子コンピューター耐性がある hayata DAGは通貨ごとに仕様が違います。IOTA以外のDAG通貨の解説が続きます。 byteball のDAGとは byteball は匿名送金が実装されており、スマートコントラクトやトークン発行が出来るようになるとされています。 DAGというくくりではIOTAと同じにされていますが、仕組みをたどると違いが見えてきます。 IOTAとの違いは、トランザクション承認にPOWを使わず代わりにWitnessを採用していることです。Witnessは特別なノード(ここでは、トランザクションからトランザクションへと繋ぎメインチェーンを生成する役割)だと理解してください。 このWitnessという12のノードがメインチェーンを作り出し、トランザクションに重みづけすることによって二重支払い問題が防がれています。また、Witnessしかチェーンの改変や再構成が出来ません。 ただし、Witnessは性善説によって運営されており、悪意のあるWitnessによってチェーンが改変されてしまう可能性はゼロではありません。とはいえ、Witnessは12あるので、一部のWitnessが悪意をもったとしても残りのWitnessで対応できると考えられています。 利用者は投票でWitnessを選ぶので、票が得られなければWitnessから外すことも可能です。 また、Witnessにチェーンの管理を任せているので、手数料は発生しています。1バイトあたり、1byteトークンが必要になります。 そして、byteball では「条件支払い」が可能です。例えば、公式ウォレット同士でご送金してしまった時に送金を取り消せるということです。セルフGOXが起こりづらくなるわけです。 ○byteball の要点 Witnessに管理を任せており、Witness以外はチェーンの改変が出来ない 超低額での送金が可能 条件支払いで誤送金が取り消せる場合もある NANO(旧:RaiBlocks)のDAGとは NANOは2018年1月31日にRaiblocksからリブランドされました。取引手数料がかからないことと、スケーラビリティを売りにしています。 Nanoでは各アカウントが自身に関連するトランザクションをまとめて、ブロックチェーン形式で取引履歴を管理します。 イメージとしては、各アカウントごとにブロックチェーンを作成し、各自のトランザクションを各自のブロックに収納しチェーンを構成します。 NANOのホワイトペーパーでは以下のような図で説明されています。 図の解説をします。まず、A,B,Cの各アカウントが独自のブロックチェーンを生成します。そして、送金をする際には自分のブロックと他のアカウントのブロックにトランザクションを載せることによって送金を完了します。 これによって、自身が正しく取引データを保存していれば二重支払い問題は起こらないと言われています。 ただし、実際には不正を働こうとする人もいます。そのような不正な送金が発生した時の為に、NANOではネットワーク参加者の投票によって正しい取引履歴が決定されています。 投票という形式はLISKなどに代表されるDPOSと同じだと考えればよいです。とはいえ、DAGなので採掘(鋳造)は出来ないので報酬は出ません。 これにより、IOTAやbyteball よりもトラストレスで分散型のネットワークが構築できると考えられています。 ○NANOの要点 取引手数料とスケーラビリティ問題がない それぞれのアカウントごとにブロックチェーンを形成する ネットワーク参加者による投票によって正しい取引記録が選ばれる 終わりに それぞれの通貨の仕組みが混同してしまっている方の為にそれぞれを改めて比較します。 以下、ホワイトペーパーからの引用です。ここまで読んできた方なら理解できると思います。 Byteballは、正直で評判が良く、ユーザーが信頼できる「証人」で構成された「メインチェーン」に頼ってコンセンサスを達成しています。 IOTAは、積み重ねられた取引の累積的な確証を担保にしたコンセンサスアルゴリズム(tangle)です。 RaiBlocksは、報酬のないDPOSによりコンセンサス(合意)を達成する。 また、それぞれの用途についても、 IOTAは、IoT機器間などにおけるマイクロペイメント(少量少額送金) byteball は、通貨や債務、株式などの譲渡可能か価値を示すデータの改ざんを無くして収納する NANOは、信頼性の高い迅速なP2P(peer to peer)支払いと裁定取引のための迅速な取引転送 であり、それぞれの役割は異なります。 文章を締めます。 DAGは、ブロックチェーンに続く新しい技術です。 メリットは手数料が安価であることやスケーラビリティの問題が無いことやブロック生成時間を待たずに送金できることなどが挙げられます。 しかし、取引データが重く、ブロックチェーンと比べて歴史が浅いため、セキュリティ面での不安が比較的大きいという現状があります。 また、一言にDAGといってもその形態はさまざまであることから、DAGが採用されるとしてもその中で淘汰されていき、トラストレスで分散型で量子コンピューター耐性を実装できる形のDAGが生き残っていくと思います。もちろん、通貨の用途も大切ですよ。 今回はここまでとします、広く浅く解説したので興味のあるかたはご自身で調べてみてくださいね。 hayata 読んでいただきありがとうございました。twitterフォローして頂けると嬉しいです!
技術
2018/02/22スケーラビリティ問題を解決する4つの策とは?
この記事のポイント! ブロックサイズと生成速度は変更が難しい Segwitやメインチェーン外取引(サイドチェーン)で解決の可能性 こんにちは、hayata(@hayata_crypto)です。 今回は、仮想通貨のスケーラビリティ問題について、どのような改善方法があるのかを分かりやすく解説します。 そもそも、仮想通貨におけるスケーラビリティ問題とは、ブロックチェーンの仕様によって一定以上の送金が短時間に行われると、その送金がスムーズに行われなくなることだと簡単に理解しておいてください。 スケーラビリティ問題の4つの改善策 ここからは、仮想通貨のスケーラビリティ問題4つの改善策について解説します。 4つの改善策 ブロックサイズを大きくする 取引データを小さくする ブロック生成時間を短縮する ブロックチェーン外で取引をする これら4つの改善策があると考えられます。順に説明します。 1、ブロックサイズを大きくする まず、ブロックサイズを大きくすればスケーラビリティ問題は改善します。 現在、BTCは1MBという容量のブロックを生成し、そこに取引を書き込んでいます。なので、単純にその容量を例えば2MBにしてしまえば単純計算で2倍の数の送金が可能になります。 実際にブロックサイズを大きくした例としては、ビットコインキャッシュ(BCC、BCH)が挙げられます。BCHは、ブロックサイズを8MBにしたことでより多くの取引が送金詰まりなく可能となりました。 以下、イメージです。(実際のブロックには、取引データのみが載っている訳ではないが、説明の簡略化のため記載していません。) 可視化すると、ブロックサイズの違いが明確に分かりますね。 「じゃあ、ビットコインもブロックサイズ大きくすればいいじゃん!!!」と思いますよね。しかし、そう簡単な話ではありません。ビットコインがブロックサイズを変更しないのは、それなりの理由があります。 理由として一番重要なものは、マイニングの集中化問題です。 ブロックサイズが大きくなると、新しく発見されたブロックが他のマイナーに伝わるまでの時間がより長くなります。そうすると、マイニングに成功したマイナーがより有利となり、大規模なマイナ―がより多くマイニングに成功するようになるので、小規模なマイナーがブロックを発見しずらくなりマイニングを辞めてしまうでしょう。 それによって、マイナーの集中化が進みます。集中化が進むと、ブロックチェーンの売りである分散型という構造が崩れます。最悪の場合、ある一つのマイナーが51%以上の割合でマイニングするまでに集中化がすすめば、ブロックチェーン自体の書き換えが可能となります。思うがままです。 とはいえ、ビットコインとビットコインキャッシュはどちらも個人でマイニングするにはハードルが高いです(笑) また、それ以外にも、ブロックサイズの変更にはハードフォークという不可逆的なアップデートが必要となることや、サトシナカモトの論文では1MBがセキュリティ的にも良いと書いてあるので、利便性の向上よりもセキュリティ面を重視していることからビットコインのブロックサイズ増加は起きていません。 次へ、進みます。 2、取引データを小さくすること 他にも、取引データを小さくすることによって一つのブロックにより多くの取引データを載せられるようになるので、スケーラビリティ問題は改善します。 取引データを取引データを小さくすることをSegwitと言います。 イメージはこのような感じです。取引データの中の一部をWitnessという別領域に格納することによってより多くの取引を一つのブロックに載せることを可能にしました。 もちろん、ブロックサイズは変更されていないものとして考えています。 また、ビットコインはSegwitに対応していますが、ビットコインキャッシュはSegwit対応していません。BCCはブロックサイズが8MBもあるので、Segwitしなくても比較的大きな容量を使うことが出来ています。 また、ブロックサイズの増加とSegwitをどちらも採用されている通貨もあり、Segwit2x(ブロックサイズ2MB でSegwit対応)や、ビットコインダイアモンド(BCD)は8MBでSegwitに対応しています。 Segwitに関する詳細は、こちらの過去記事をご覧ください。↓↓ Segwitとは何か?今さら聞けない仮想通貨 3、ブロックの生成時間を短縮する ビットコインのブロック生成時間を短縮することでも、スケーラビリティ問題は改善します。 現状、ブロックは10分に1つ生成されるように調整されており、合意さえ得られれば技術的には生成時間短縮は可能です。(合意は得づらいと思います。) しかし、短縮することでデメリットが生じます。 ブロック生成時間の短縮により、送金はより素早く完了しますが、フォークが頻繁に起こることにより二重支払いの問題が起こり易くなることなど脆弱性が高まります。 フォークを簡単に解説します。以下の図を参考にしてください。例えばAさんとBさんがほぼ同時にマイニングに成功したとして、次にCさんがAさんのブロックの次のブロックをマイニングしたとします。 その時に、Bさんのブロックはフォークしたブロックとされて、AさんやCさんが発見したブロックの後ろに今後のブロックが生成されていくことになります。これは、より長く繋がっているブロックが正しいものとして認められるためです。 フォーク自体は自然に起きることなのですが、ブロックの生成時間を短縮するという方法は、結果的にフォークによる脆弱性が高まる為にされていません。 hayata BTCは利便性よりもセキュリティを重視しているという点で、ブロックサイズとブロックの生成時間の変更をしないことは方向性が一貫していますね。 4、ブロックチェーン外で取引する ブロックチェーン(メインチェーン)の外で取引データのやり取りをすれば、スケーラビリティ問題は改善します。 具体的に言うと、チェーン外で行われた取引の一部だけをメインチェーンに記録することでブロックチェーンに記載するデータ量を減らすことで改善させることが出来ます。 そのような仕組みとして、ライトニングネットワークやサイドチェーンが考えられます。 ライトニングネットワークについては、以下の過去記事をご覧ください。 仮想通貨に送金革命!?ライトニングネットワークとは何か そして、もう一つはサイドチェーンという技術です。 サイドチェーンは、ビットコインのメインチェーンとは別のもう一つの補助的なチェーンと覚えておいてください。 有名なアルトコインで言うと、LISKはサイドチェーンの技術を採用しています。 また、サイドチェーンにより、BTCにもイーサリアムやLISKのようにスマートコントラクト(ブロックチェーンに契約を記載できるようにすること)が使えるようになります。 ただ、スケーラビリティ問題改善の為に重要なのは、メインチェーンからサイドチェーンとその逆の送金が可能になることです。これにより、BTC送金がよりスムーズになり、スケーラビリティ問題が改善すると考えられています。 サイドチェーンも話し始めると記事一つ書けてしまうので今回はここまでとします。 終わりに 最後に、本文をまとめます。 スケーラビリティ問題の改善には、4つの改善策が考えられています。 しかし、ブロックサイズとブロック生成時間の変更はセキュリティ面を考えてされて来ませんでした。今後も、されないであろうと思います。 一方で、取引データの削減(Segwit)やメインのブロックチェーン外で取引をすることについて開発が進んでいると考えられます。 hayata 少しづつですが日々技術の発展は進んでいます。様々な技術によって、セキュリティ面を重視しつつ広く普及していけるようになればいいですね! hayata 読んでいただきありがとうございました。twitterフォローして頂けると嬉しいです!
技術
2018/02/13Segwitとは何か?今さら聞けない仮想通貨
こんにちは、hayata(@crypto_hayata)です。今回は、Segwit(Segregated Witness)について解説していこうと思います。 また、今回も技術的な詳細よりも理解のしやすさを重視して解説していきます。 この記事の3つのポイント! Segwitは、署名データを別領域に格納する Segwitは、実質的なブロックサイズを大きくする Segwitは、送金の利便性を高める 記事参考:①segwitとは何か? ②ZOOM ③bitFlyer Segwitとは何か Segwitを一言で説明すると、「ビットコインの取引データ内の署名を分離して別の領域に格納することによって、取引当たりのデータ量を減らすことで、送金詰まりを改善する仕組み」のことです。 以下では、 ①署名データを別領域に格納し、取引データを削減する仕組み ②送金詰まりを改善する仕組み に分けて、より詳しく解説します。 ①署名データを別領域に格納し、取引データを削減する仕組み ここでは、①の内容について解説します。 まず、前提としてビットコインの取引データをトランザクション(以下、TX)と言うことを覚えておいてください。 知らない方も多いと思いますが、ビットコインのトランザクション(TX)にはinputとoutputがあります(他にも、バージョンやタイムスタンプなども含まれますが関係ないので割愛します)。 inputには送金元の情報(送金元の秘密鍵で作成された公開鍵や署名など)が、outputには送金先の情報(送金先アドレス公開鍵のハッシュ値)が含まれています。(公開鍵や秘密鍵の詳しい説明は、別の機会があればしようと思います。分からなくてもSegwitの仕組みは解説できますので続けます。) Segwit(Segregated witness)では、本来TXのinput(送金元情報)に含まれている署名データを別の領域に格納します。この別領域をWitnessと言います。また、署名データが別領域に格納されることに対応するようにoutput書き換えも行われます。 この署名データの移動により、それぞれのTXのサイズが減ります。 別領域に格納された署名データはどこにいったのかというと、各ブロックの最初にあるcoinbaseTXという場所に保存されます。ここのデータを確認することで、署名がなされているかを確認することが出来ます。 そして、署名データをWitnessに格納することによってTXサイズがどのくらい削減できるかということは以下の式で求めることが出来ます。(1MBは、現在のビットコインのブロックサイズを表しています。) Witness以外のブロックサイズ+Witness÷4≦1MB 要するに、Witness領域に保存されたデータは容量が4分の1になるということです。ありえませんが、ブロック内のすべてのデータがWitnessに格納されればブロックサイズは実質4MBとなります。しかし実際には、1.7MB程度になるであろうと推測されています。 ②送金詰まりを改善する仕組み ここからは、送金詰まりを改善する仕組みについてお話しします。ここの内容は、直接的にSegwitとは関係がありません。 ①では、Segwitによってブロックサイズが実質1.7MB相当になるといいましたが、ブロックサイズの拡大自体が送金詰まりを改善します。 それはなぜかと言うと、ビットコインは1日で出来る送金の上限データ容量が決まっているからです(ビットコインだけに関わらず、ブロックチェーンを採用している通貨すべてに言えます)。また、なぜ上限が決まっているかと言うと、1日にマイニングによってマイニングされるブロック数が限られているからです。 例えば、1日に150ブロックがマイニングされているとして、1日で150MB分のデータをBTCのブロックチェーンに記載できます。もしSegwitされて、1ブロック当たりの実質容量が1MBから1.7MBになったとすれば、1日当たり255MB 分のデータが利用できるようになります。 つまり、その差分の105MBで記載出来る分だけの送金詰まりは改善するという訳です。 (因みに、ビットコインでは、難易度調整によって10分で1ブロックがマイニングされるように定期的に調整が入ります。それゆえ、マイニングをするマイナーが増えても、本来は生成されるブロック数は増えません(一時的な増減はあります)。) hayata ここまでは、Segwitの仕組みについてお話ししました。ここからは、Segwitのメリットについて見ていきましょう! Segwitのメリット・デメリット メリット メリットとして、既に送金詰まりの改善を挙げました。 しかし、他にもメリットは多いです。 取引所やウォレットでのトランザクション(TX)識別がTXIDで可能になる 取引手数料の低下 送金の承認時間(送金完了までの時間)の短縮 ライトニングネットワークを導入しやすくなる トランザクション展性(マリアビリティ問題)への耐性 DDoS攻撃への危険性の軽減 今回は、特にトランザクション展性への耐性ついて述べます。 因みに、ライトニングネットワーク(略して、LN)とは、こちらも送金詰まりを解消する仕組みの一つです。こちらの解説は過去に詳しく書きましたので、文末にリンクを貼っておきます。 トランザクション展性とは トランザクション展性とは、「トランザクションID(TXID)が変更されてしまう」という現在のビットコインが抱えている問題の一つです。こちらも出来る限り簡潔に解説します。 トランザクション展性という脆弱性によって、トランザクションに含まれるアドレスと送金量を変更せずにTXIDだけを変更することが可能です。 この脆弱性によって、二重支払いの問題が起きます。 以下の図を用いて説明するので、まずは図を見てください。 Bさんだけが攻撃者です。また、①と②は送金を、③はTXの書き換え行為を、④はTXが書き換えられたことを、⑤は④によって送金がされなくなったことを表します。以下で、具体的に解説します。 まず、AさんがBさんに送金し、承認を受け送金を完全に完了します(①)。その後、BさんがAさんから送金された通貨を用いて、Cさんのお店で買い物をした代金を送金します(②)。①の送金は承認済みなのに対し、②の送金は承認が済んでいません。また、Cさんのお店では、迅速な決済の為に承認を待たず支払いを完了させた扱いにしています。 Bさんは、Cさんへの代金支払いの為に送金したトランザクションが承認される前に、Aさんから送金されたトランザクションIDを書き変えました(③)。すると、トランザクション展性によりTXIDが変更されて(④)、それによってBさんからCさんへの送金が行われなくなります(⑤)。 BさんはAさんから送られた通貨を用いて、Cさんへの決済に使用しました。よって、BさんからCさんへの送金はAさんからBさんへの送金を参照しているために、Bさんの攻撃によって②の送金が①の送金を参照できなくなったのです。 結局、何が言いたかったのかというと、Segwitによってこのような問題が起きなくなるということです。しかし、二重支払いにはこれ以外のタイプもあり、全ての二重支払い問題が解決されるわけではありません。 デメリット ここからはデメリットについて説明します。 デメリットとしては、 トランザクション毎にマイナーが得られる手数料が減る 実装が複雑だった Segwitに対応していない通貨に誤送金すると署名無しで引き出せてしまう マイナーの反対意見が多かった などが挙げられます。一部はデメリットとは言いきれないかもしれません。 実装が複雑なことに関して、マイニングをするマイナーがSegwitに対応しなくてはならないことは問題でした。ビットコインでは全体の95%がSegwitに対応したコンピュータを実装しなければならないそうです。ただし、2017年8月24日にアクティベート(有効化)されました。 また、3つ目のデメリットに関して、Segwit非対応通貨の口座に誤送金した時の盗難リスクも上昇します。なので、bitlflyerはbtcの預入時にはSegwitが利用できないようになっています。 また、マイナーの反対意見は強いものでした。その理由として、当時使用されていたマイニング用のpc(ASICboost)が使えなくなることもありました。しかし、それだけではなくビックブロック派がハードフォークによってビットコインキャッシュを誕生させるなどしました。 終わりに 今回は、Segwitとは何かについて、その仕組みに焦点をあてて解説しました。 Segwitについては、特にマイナーの意見も含めると複雑な記事になってしまうので出来るだけ技術に焦点を当てるようにしました。より詳しいことが知りたい方は、下の参考などから見てみましょう。 今回の記事を、簡単にまとめると「Segwitは、TX内の署名を別領域に保存することによって実質的なブロックサイズを大きくし、送金の利便性が高まる」ということです。 また、モナコインやLitecoinも既にSegwitに対応しているので、覚えておきましょう。 Segwitのように送金の利便性を高める技術として、ライトニングネットワークについての記事も書いています。こちらも以下のリンクよりご覧ください。 仮想通貨に送金革命!?ライトニングネットワークとは何かを解説! - CRYPTO TIMES hayata 読んでいただきありがとうございました。twitterフォローして頂けると嬉しいです!
技術
2018/02/06仮想通貨に送金革命!?ライトニングネットワークとは何かを解説!
はじめまして、hayataです。今回は、ライトニングネットワーク(以下、LN)についてやさしく解説していきたいと思います。 技術的な細かい話よりも、全体の理解のしやすさを優先しつつ出来るだけ丁寧に解説しています。また、すべてビットコインを例に解説しています。 この記事の3つのポイント! LNは、ブロックチェーンの外で行われる。 LNで、速く安く少額の送金が可能に! LNには、経路選択問題という課題がある。 ライトニングネットワーク(LN)とは何か LNを出来るだけ短く説明すると、「オフチェーンで、網状に連絡した相互で行われる送金ネットワーク」と言えるでしょう。よく分からないと思うので、具体的に説明します。 まず、LNはオフチェーンで行われます。オフチェーンとは、ブロックチェーン外で行われているという意味なのですが、感覚的にはブロックチェーンと対応した裏世界というイメージです。以下の画像を参考にしてください。 そして、LNはオフチェーンに参加しているAさんとBさんの間{二者の間}にチャネルと呼ばれる管のようなものを作り、そこを通じてやり取りを出来るようにします。 (チャネル作成の為に、両者が秘密鍵をもつマルチシグアドレスに通貨を送金する必要があります。この送金した合計額よりも大きな額は送金できません。) そして、両者のチャネル間で複数回取引が行われた後に、チャネル(両者を結ぶ管)は閉じます。それによって、最終的な収支の状態だけがブロックチェーンへと記録されます。 以下の画像を理解の助けとしてください。AさんとBさんの10BTCと5BTCの取引がチャネル上で行われた【上段】後に、その収支である5BTCの送金【下段】だけがブロックチェーン上に反映されます。 上の例では理解しやすいように二者で説明しましたが、実際には利用者は無数に存在します。なので、この二者間の関係を多数の人と行っているという認識が必要です。(上の文章を、三者以上で送金し合っているとして読み直すと理解しやすいと思います。) また、あなたの指定した送金先まで第三者のチャネルを中継して最短経路で送金することも特徴です。経由した第三者を送金者は信頼する必要なしに送金が可能です。送金中に第三者に通貨を盗まれることはありません。 冒頭で、LNは「オフチェーンで、網状に連絡した相互で行われる送金ネットワーク」だと言いましたが、「網状に連絡した」とは二者の関係を多数の人とで行っているという意味です。以下のツイートの画像が視覚的に参考になると思います。 https://twitter.com/WhalePanda/status/959127269930348544 hayata ここまでは、LNの仕組みについてお話しました。次は、LNの利点や問題点(課題点)について解説します。 ライトニングネットワークのメリット・デメリット LNのメリットとデメリットを解説いたします。 LNによるメリット メリットを簡単に言うと、速い送金・安い送金・少額の送金が可能になることです。それぞれ解説します。 まず、LNによって、高速な送金が可能となります。現在のビットコインは、常にブロックチェーン上で送金されているため、ブロックが生成された後に複数回承認されなければ送金は完了しません(通常6承認必要)。1ブロック10分で生成されるとして、6承認なら1時間かかりますね。 スムーズに承認されればいいのですが、送金詰まりが発生している時に安い手数料で送金した場合には数週間も送金が完了しない時もあります。 しかし、LNによってオフチェーンで取引がなされるため承認を待たずに送金できるようになるのです。 次に、安い送金・細かい送金が可能となることです。LNによって、1satoshi(1億分の1BTC)までの少額の支払いが可能になります。現状では、そこまでの少額は送金の下限があり、送ることは出来ません。また、現在BTC送金にはトランザクション手数料を含めるとおおよそ0.001BTCかかります。送金するごとに1000円程度(1BTC=100万円換算で)かかってしまいますから、送金できたとしても少額すぎるBTCを送る人はいないでしょう。 送金額が安くなるのは、LNでは、チャネルの開閉時にしか送料が発生しないからです。複数回の送金が開閉にかかる手数料だけで可能となります。 また、送金詰まり(スケーラビリティ)の問題も改善すると考えられています。上記で述べましたが最終的な取引結果しかブロックチェーンには反映されないのでデータ量の節約が出来ます。 hayata スケーラビリティ問題を改善しつつ、速く安く少額の送金が出来る未来は楽しみですね!しかし、そんなLNにも課題があることを以下で解説します。 LNのデメリット LNのデメリットはチャネルの経路問題やセキュリティだと言えるでしょう。 安定してLNを稼働させ続けるためにはチャネルの経路問題が発生しないようにすることが必要です。 経路問題が発生しないように、効率的に取引をまとめてブロックチェーンに記載するために多くのチャネルを開いている必要があります。そして、LNで送金するためにはチャネルを開き続けて、送金相手までの最短経路を発見することが必要です。 ここで注意すべきことはただ単に最短経路を発見するのではなく、送金相手までに中継したすべてのチャネルに自身の送金額よりも多くの残高が必要であるということです。 よって、LNにおいて効率的な送金を実現し続けるために、中継点にあるBTCが塩漬けになるという問題点が出てきます。 また、送金の効率的な経路選択の結果として、特定の中継点がばかりが利用されてしまうことになるでしょう。 その結果、その中継点に依存した中央集権的な構造となれば、簡単に言うとネットワークの信頼度が下がります。 特定の中継点に依存しない分散型のネットワークが構築されることが理想です。(完全な分散化は構造上不可能だと思います。) 極端な例ですが、以下の図のように一つの中継点にチャネルが集中しており他の経路が無い場合には、赤い中継点のチャネルの開閉や残高不足などによってその中継点が利用出来なくなればLNは利用できなくなります。 LNでの送金の特性上、自分より出来るだけ多くの資金を塩漬けにしている中継点を経由した方が効率的に送金することが出来るので(←上で述べたが、送金額よりもプールしている額が大きくないと送金できないため)、チャネルが集中化してしまうハブ化と呼ばれる現象は避けることは出来ないでしょう。 そして、そのハブ化してしまった中継点は金融規制法の対象になると言われています。(法律は詳しくないのでここの詳細は分かりかねます。) また、セキュリティに関しても課題点があります。 LNはインターネットに接続されたホットウォレットでやり取りされ、その経過はブロックチェーン上での取引でもありません。 2018年1月末にコインチェックで盗難されたnemはホットウォレットでマルチシグネチャされてませんでした。 LNでは、ホットウォレットでしか稼働出来ませんが、マルチシグネチャという複数の秘密鍵でチャネル開設に必要な仮想通貨を管理できます。(余談ですが、仮想通貨はコールドウォレットというインターネットと隔離させた環境で管理することが盗難防止のためには望ましいです。) LNはブロックチェーン上での取引ではないため、LN上でのセキュリティについても考える必要があります。 誰がどのように管理していくのか。この点で、本当に仮想通貨である強みを活かすことが出来るのかという疑問を抱きました。 終わりに LNは既にテストトランザクションが開始されており、依然テスト段階ではありますが、執筆時点で決済のチャネルは1000を超えました。 ノードを建てる人は増加し続けています。また、LNに対する期待感は強く、一刻も早く採用されるべきという声が強いと個人的には感じます。 最後に、本文を再度まとめます。 メリットは、速く安く少額の送金が出来ることです。一方で、デメリットはチャネルのハブ化による中央主権化とLN自体のセキュリティの問題です。 これらを総合的に判断すると、メリットは魅力的ですが、分散型で管理できる仮想通貨の強みが活かせていないようにも感じます。 LN全体の管理を分散型で出来ればいいのですが、そのようなビジョンが見えずらいのが現状です。とはいえ、LN自体は仮想通貨を実社会で普及させ広く利用していくためには重要な技術であると個人的に考えており、今後の進展には期待を寄せています。 記事参考: ①ビットコイン研究所ブログ ライトニングネットワークの衝撃 doublehash.me/what-is-lighting-network ②Zoom zoom-blc.com/lightning-network ③bitTHINK youtu.be/k14EDcB-DcE hayata 期待感の強いLNですが、あえて否定的な考え方も入れつつ中立的に述べるように心がけました。これからの発展が楽しみですね! hayata 読んでいただきありがとうございました。twitterフォローして頂けると嬉しいです!