The Coffee Times

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

BitcoinとLitecoin、ライトニングチャネルのAtomic Swapに成功

f:id:CoffeeTimes:20171117144856p:plain

 

Lightning Labsの開発チームは、テストネットのビットコインライトコインをライトニングチャネルで交換することに成功しました。(このような異なるチェーンでの通貨のやり取りはアトミックスワップと呼ばれます。)

トランザクションブロックチェーン上に刻まれず、コインの所有者を変えることに成功したことになります。

ライトコイン創始者のチャーリー・リーはBitcoin Magazineに対し以下のように答えています。

「以前実施したアトミックスワップは、オンチェーンであり、ブロックチェーンによる遅延や高い手数料などの制約がありました。」

「オフチェーンのアトミックスワップは、オンチェーンのアトミックスワップよりも簡単で、手数料も低く、プライバシー的にも優れています。」

 

 

ライトニングネットワークは、ビットコイン上の「セカンドレイヤーの支払い」ネットワークとして期待されていて、またライトコインなどの「ビットコインからフォークした他の暗号通貨」へのデプロイは比較的カンタンです。

 

もしライトニングネットワークが異なるチェーン上で実装されると、これらのチェーンは相互にリンクし合うので、ネットワーク上に「あるコインから別のコインに転送してくれる」ようなノードが1つでもあれば、「ビットコインを送り、それと同価値のライトコインを相手側が受け取る」というようなことが可能です。

リーはこのブログポストで、この可能性を感じ、自分の地位を投げ打ってでもSegwitのソフトフォークを支援するようになった、と説明しています。

segwit.org

 

 

  

テストについて

テストはローカルマシンで実施され、そのマシン内に2つのノード(名前はAliceとBob)が建てられました。BitcoinとLitecoin両方のチェーンを監視できるように設定され、固定レートで「テストネットのLitecoinをAliceからBobに送り、テストネットのBitcoinをBobからAliceに送る」ようなライトニングチャネルを作りました。テストの環境下ですが成功し、Lightning Labsは今日ブログビデオを公開し詳細を説明しています。

ノードが今日の取引所のようになり、通貨交換の役割を果たすようになる可能性もあり良いレートを競争しあうようになります。またそのような交換ノードが、支払いのプロセッサとして機能する可能性もあります。

つまりビットコインしか受け付けない店やサイトで、ライトコインが簡単に使えるなどです。またAからBにビットコインを送るのに、途中ライトコインを経由し、安く早くビットコイン送信が可能になります。

 

これからも開発が楽しみです。 

 

参考:

https://bitcoinmagazine.com/articles/atomic-swaps-how-the-lightning-network-extends-to-altcoins-1484157052/

https://bitcoinmagazine.com/articles/lightning-network-now-supports-transactions-across-blockchains/

https://blog.lightning.engineering/announcement/2017/11/16/ln-swap.html

Parityライブラリ自己破壊、何が起きたか、どう防げたか

f:id:CoffeeTimes:20171116005613p:plain

Parityのバグについて昨日、凍結された資金を持つPolkadotの見解を書きました。

そして今日、Parity側の見解がでました。

以下になります。

 

ーーー

116 02:33:47 UTC)にParityマルチシグウォレットの「ライブラリ」スマートコントラクトコードに脆弱性が匿名ユーザによって発見されました。

 

このユーザは脆弱性を利用し、自らをライブラリコントラクトのオーナーとなったのちち、このコンポーネントを破棄しました。Parityのマルチシグウォレットはこのコンポーネントに依存しているため、合計513,774.16 Ether(およそ190億円)および他のトークンを保持する587個のウォレットがブロックされました。ライブラリコンポーネントを破棄した後、ユーザ名「devops199」と名乗るアカウントはgithubにこの内容をあげました。https://github.com/paritytech/parity/issues/6995

 

パリティウォレット(UI)の他のすべての機能には、同様の脆弱性はありません。(

スタンダードのアカウント、非マルチシグアカウントにもありません)

 

影響を受けたユーザには連絡しており、まだ届いていない場合はcommunity@parity.ioまでご連絡ください。この問題が、プロジェクト・資金の将来に対して不安を抱かせてることを認識していて、実行可能な策を模索する努力をしています。

悪用が行われて以来、チーム全体で多くの議論や分析を行ってきました。この記事では、問題に関連する要因を明らかにし、質問や苦情への対応を書いていきます。

 

 

ウォレットのライブラリは監査されていなかったのか?

オリジナルの "Foundation" マルチシグウォレットコードは、Ethereum Foundationの開発チーム(パリティ・テクノロジーズ)とコミュニティのメンバーによって創られ、監査されました。そして多くレビューを受けました。

 

このコードには今回対象となったセキュリティ問題はありません。そして、パリティチームによって、ウォレットが作成されるたびにネットワークに展開される軽量のstubスマートコントラクトに再編されました。ちなみにこれには、一度だけ展開されたライブラリスマートコントラクトなどウォレットのロジックの大部分を含みます。

 

正式な監査はありませんでしたが、7月19日のバグと資金の回収もあり、このコントラクトは社内外に多くのレビューを受けていました。

 

 

事件の前に何が起きたか?

監査された元のスマートコントラクトの状態に近づけるため、できるだけ変更を加えないようにしていました。しかしこれは、ライブラリコントラクトが通常のウォレットと同じ機能を持ち初期化が必要であることを意味し、よってウォレットを消去するために設計された元のself-destruct機能(自己破壊機能)もまだ含まれたままでした。

 

2017年7月19日の攻撃の後、2017年7月20日にライブラリコントラクトを修正し、再度デプロイしました。

 

8月に、Github上のcontributorである、アカウント名 "3esmit”は、デプロイのときにinitWalletが呼び出されるべきようにコード変更をすべきと勧めました。

したがって、私たちはこの提案された拡張をライブラリコントラクトに実施し、

構築時にinitWalletを呼び出すことによって自動的に初期化するようにしました。

この推奨を拡張だと解釈し、変更されたコードは定期的なアップデートのときに展開されることになりました。

 

11月6日03:25:21 PM + UTCに、 'devops199'は7月に導入されたコントラクト内にあった未初期化オーナーを見つけ、それを初期化し、自分をオーナーとして設定しました。その後、devops199はライブラリコントラクトを消し去りました。

 

どのようにすれば防げたのか?

この悪用を避けることができた2つの方法があります。

たとえ誰かが所有権を持っていたとしても、もしコントラクトコードに自らを消す機能(suicideやkill)が含まれていなければ、何もすることができなかったでしょう。 kill機能は、元の監査済みコントラクトの残りの部分でした。もう1つの方法は、3esmitによって提案されたことを、コード変更と再デプロイによって自動的に、または7月に導入されたコントラクトに手動で、すぐに実施されていたら、防げていたでしょう。

 

パリティ・テクノロジーズは、当社が作成するスマートコントラクトについて正式な監査を、外部に定期的に依頼しています。たとえば、当社のKYCサービス「PICOPS」および当社が支援するICOの販売契約には、厳しい監査要件があります。

 

しかし、より多くの監査を行うだけでなく、セキュリティを実現するためには、デプロイ、監視、およびテストのための、より後半で正式な手順とツールが必要であると考えています。エコシステム全体としては、特にコントラクトの数や複雑さが増した場合に、同様の問題が再発するのを防ぐために、上のような手続きやツールがすぐにでも必要であると考えます。

 

パリティ・テクノロジーズは、凍結された資金を開放するために何をしているか?

深刻に状況を後悔しており、既存のEIP、また新しいEIPの提案に懸命に取り組んでいます。これらの改善提案は今後、ブロックされた資金の救済措置として一般的なケースに対応できるでしょう。

 

そのような改善案がいつ実行されるかについてのタイムラインはありません。私たちはコミュニティの意向に従い、他のプロトコル改善のような定期的なEIPプロセスを進めます。パリティ・テクノロジーズは、提案に関する開発を多く実施し、Ethereum Foundationチームおよび更なるプロトコル層開発のためのコミュニティと建設的に協力します。

 

 

他に実施する予定の事項は?

・最初のステップとして、適切なセキュリティと操作手順が確立されていると感じるまで、マルチシグマウォレットを展開する機能を削除して、これが再び起こらないようにします。

パリティウォレットUIは、安全であるとみなされるグノーシス、WHG、またはその他の複数のシグネチャウォレットを引き続きサポートします。

Parity Walletを使用して、事前に展開されたマルチシグウォレットを見たり、使用したりすることができます。

他のコントラクトと同様に、マルチシグコントラクトを手動で導入することも可能ですが、マルチシグ固有の統合された方法はありません。

 

・ウォレットではなく、ウォレットがおいてあるクロームの中間インフラストラクチャーに、注力していきます。この意味で、ウォレットはパリティを拡張できる「ユーザーレベル」のソフトウェアになります。

・我々は、秘密管理、鍵生成とパスワード管理、署名と自動更新を含む、既存のすべての機密コードの、フルスタック外部セキュリティ監査を委託しています。

・私たちは内部的にプロセスと手順を見直すことに多大な努力とリソースを投入し、具体的には業務セキュリティに専念するチームを作っていきます。

このチームは必要に応じて拡張され、リソースを自由に使います。チームは、パリティ・テクノロジーズの提供する重要な部分のレビューとメンテナンスを担当します。

 

必要なコントラクトのデプロイが、このリポジトリ内のコード変更とレビュープロセスに適切にリンクされていることを確認し、そのためのツールを作成するための取り組みをサポートします。

例えば:

・航空宇宙や医療などのように、各コントラクトごとに、デプロイのチェックリストをつくる

・デプロイされたコントラクトについては、リポジトリ内の最新のレビュー済みバージョンと比較して正しいか常に監視する

などです。

 

・私たちは、社内で努力するだけでなく、次のような外部のヘルプやリソースを探していきます。

・正式な検証や証明支援など、他のスマートコントラクト言語やツールの研究開発サポート

・ツール、言語研究、およびテストに焦点を当てたリサーチチームとの開発関係。

次世代の資産管理のセットを創るチームの作成。

セキュアなストレージとリカバリのためのツールを提供するマルチシグネチャ、タイムロック、デッドマンスイッチ用のボールトセーフなコントラクト。

・バグバウンティプログラムを拡張。(すべてのソフトウェアをオープンソースのソフトウェアとして提供しています)

 

パリティ・テクノロジーズは、エテリアムの技術開発の先駆者であり続けるよう努力し、コミュニティにとって安全で便利な技術を開発するために尽力します。

 

ーーー

 

まだあまりタイムラインなども不明確なようですね。

ただこれらの改善が、今後のEthereumおよびクリプト界隈の新たな技術を生み出してくれると良いです。

 

原文:

A Postmortem on the Parity Multi-Sig Library Self-Destruct – Parity Technologies

 

 

 

 

Parityバグ、Web3の見解アップデート

Parityのバグの問題について資金が凍結されたWeb3 Foundationのアップデートを翻訳しています。

 

medium.com

 

11月8日、EthereumのカンファレンスDevcon3のあとに、Parityのマルチシグウォレットのライブラリに脆弱性が見つかり、悪意のなかった人がコントラクトコードを潰し、Web3 Foundationが主に使っていたウォレットが操作できなくなりました。資金は奪われていませんが、送金などの操作が一切できない状態です。

 

この結果、Web3 FoundationがICOで集めたうちの 306,276 ETHがオフラインのマルチシグウォレットに凍結されている状態です。

 

現状について

今時点で、Web3Foundationは $45Mのフィアットと、BTCがあります。一部は法律や会計などの必要資金にあてられますが、それでもPolkadotを開発していくのに十分な資金が残っています。

このレベルの資金であれば、元々の技術思想、開発予定で継続していけるのは間違いないといえます。

そして今時点で、遅らせたり、開発やデプロイを他の方法に変えるなどという必要もありません。

さらにこの資金はただ単にPolkadotを開発するだけでなく、コミュニティを形成し、ミートアップやカンファレンス・ハッカソンを行うのに十分な金額です。

 

多額の援助を得たため、トラブルが起きる前より少ないですが、Polkadot以外にもWeb33やクリプト経済に使うことも可能です。

これらはWeb3のミッションの重要な部分と考えますが、もちろんPolkadotのメインのプロダクトではなく、Web3に余裕が出るまでは二の次のことです。

もしブロックされた資金が使えるようになれば、本来の用途に使う予定です。

つまりPolkadotのコアプロトコルではないR&Dに対してのサポートです(

Whisper, Swarmや他のツールやプログラミング言語、学術研究など)。

ブロックされた資金がこれらのプロジェクトの支援に使われ、経済圏によって良い影響を与えられることを望んでいます。

 

ブロック解除への技術的解決策

Vitalikによって提出されたEIP156(Ethereum Improvement Proposal)は、このブロック解除の1つの解決策になりそうではありますが、Web3 Foundationの資金を開放するには少し不十分です。しかし、十分な解決策となるような努力が、EIP156と同様の趣旨の技術的提案の元、行われています。

資金がもどり、Ethereumのプロトコルの技術改善によっても良いwinwinな状況になることを望んでいます。

 

Parityのマルチシグウォレット利用の決定について

Web3は、Parityのマルチシグを軽い気持ちで扱うとは決めていません。MistやConsensys/Gnosisウォレットと比べた結果、以下の3点でParityを選んでいました。

1.サポート、2.セキュリティ、3.コールドウォレットの統合です。

 

1.サポートに関しては、Polkadotのクラウドセールで働いてる数名はベルリンに住んでいます。Parityも、色々なところに場所を構えていますが、ベルリンがベースです。

フェイスtoフェイスのテクニカルサポートは、単なるサポートだけでなく、設定オペレーション中に様々な対応が期待できる、利用することができました。

 

2.セキュリティについては、Parityは数ヶ月前にかなり大規模な問題を起こしています。

当時は、以下の状況から我々はセキュアだと判断しました。「arityすべてのコア開発者が直したコードをレビューし、さらにEthereumのセキュリティ組織にもレビューされ、そして何人かが問題について説明するためにコードを分解・解説した記事を書いていました。」

こんな状況から、深刻なバグはもう無いだろうと信じていましたが、それが間違いでした。

 

3.コールドウォレット統合については、署名をセキュアに使いたかったためです。Parityウォレットは、マルチシグのトランザクションにおいて、ネットワークから物理的に隔離された(エアギャップ)のコールドウォレットを提供するもので、当時調べたときにはParityのみがその特徴を有するウォレットでした。 

 

今後について

ParityはPolkadotの救済にコミットし続けます。

我々は、資金を解放するためのいろいろな選択肢を試していきます。コミュニティのサポートが必要になると理解しています。今後もフィードバックや質問を受け付けています。