この AMA では、Dean Tribble にインタビューすることができました。 Dean は Agoric の CEO であり、80 年代からさまざまなソフトウェア プロジェクトや新興企業に関与することで、テクノロジーの世界を大きく旅してきました。彼は大規模なネットワーク化されたコンピューター システムのビジョンを追求しており、それが彼をスマート コントラクトに導きました。
Sara Pinto、Dean Tribble、Dimitar Bochvarovski、Pawan Sharma、Mónica Freitas、Limarc Ambalina によるこの Slogging スレッドは、slogging の公式 #amas チャンネルで発生し、読みやすいように編集されています。
@channel さん、次の AMA ゲストであるhttp://agoric.comの CEO である Dean Tribble を歓迎します。 Agoric は、相互運用可能な Proof-of-Stake チェーンとエコノミーを立ち上げるオープンソースの開発会社です。
Dean に次のことについてお気軽にお尋ねください。
こんにちは!呼んでくれてありがとう!
やあ、ディーン・トリブル、君がここにいてくれて嬉しいよ。まず、あなたのバックグラウンドについて少し話してもらえますか?
15 歳のときに最初のコンピューターの仕事をし、17 歳のときに最初のスタートアップ (Atari の創設者である Nolan Bushnell によって資金提供された) を始めました。その多くは、大規模な分散システムの構築に費やされています。
私は文字通り何十年もの間、大規模なネットワーク化されたコンピューター システムのビジョンを追求してきました。私は Xerox PARC で (ここ Agoric の数人の同僚と一緒に) 初期の安全な分散プログラミング言語とオペレーティング システムに取り組んでいました。 JavaScript と RUST の現代の約束は、その作業から派生しています。その後、Xanadu で (Web 以前の) ハイパーテキストに取り組みました。 1989 年のどこかで、私は最初の製品スマート コントラクトに取り組みました (そうです、Vitalik が生まれる 5 年前です 🙂.
それ以来、Java による初期の仲介情報システムから、以前の数十億ドルの支払い手段のギグまで、多くの大規模システムに取り組んできました。通常、新しい技術を市場に投入して、見知らぬ人がよりうまく協力できるようにすることです。
それが、そもそも私がスマート コントラクトに興味を持った理由です。「複数の当事者間の契約のような取り決めの条件を強制するソフトウェア」は、世界でより多くの協力を可能にします。 eBay や PayPal から AirBNB や Lyft まで、すべてのビジネスはその種のビジネスです。
これらはすべて信頼できる仲介者を必要とします。しかしその後、異なる管轄区域にある独立したコンピューターが同じソフトウェアを実行し、互いの動作を検証できるようにするブロックチェーンが登場し、信頼できる仲介者なしで突然スマート コントラクト ビジネスを実行できるようになりました。それが、次世代のブロックチェーンのためのスマート コントラクト インフラストラクチャの構築に私を駆り立てた理由です。そして、ここにいます🙂
そこで、Sun と Microsoft をスキップしたことに気が付きました。
90 年代の Sun Labs では、スマート コントラクト プラットフォームを構築するプロジェクトがありました。これは、Agoric の JavaScript スマート コントラクト プラットフォームの要素につながった初期の設計作業の大部分です。
Microsoft では、私は Midori (研究用) オペレーティング システムのアーキテクトでした。この研究用オペレーティング システムは、現在 Agoric vm/kernel で使用しているのと同じ aysnc message/ocap/promise ベースのアーキテクチャ アプローチを使用しています。
なんというキャリア^^
JavaScript を使用する理由つまり、私は個人的に Web 開発者であり、日常生活で JS を使用しており、他の目的で変更することのない言語ですが、JS に伴う問題については多くの議論があります。動的型、およびメモリ管理の間違いの容易さ...
そして、私はカイル・シンプソンの大ファンです。彼はjsのオブジェクト機能に関する興味深いコースを持っています
当然の答えと驚くべき答えの両方があるので、私はその質問が大好きです.
当然の答えは、「…これは、私が他の何にも変えない言語です…」です。 1,390 万人の開発者!私は世界中でより多くの協力が行われることを望んでおり、スマート コントラクトはそれを実現するための非常に強力なツールです。とはいえ、それは世界中のほとんどのプログラマーが利用できるものでなければなりません。スマート コントラクトを構築するために、10,000 ドルの高価な Solidity 開発者の聖職者に祈らなければならない場合は、あまり役に立ちません。良い弁護士を見つけて、昔ながらの方法でそれを行う方が簡単です!そのため、私たちは開発者がいる場所で開発者に会い、スマート コントラクトを構築できるようにすることに着手しました。
驚くべき答えは、JavaScript は他のほとんどのプログラミング言語よりも安全性が高いということです。これは主に、私たちのチーフ サイエンティストである Mark Miller の貢献によるものです。彼は当初から、私たちの以前の安全な言語作業から必要な要素を JavaScript に組み込んでいます。彼の 2015 年の金融暗号に関する論文「Capability-based Financial Instruments」では、Agoric の JavaScript で記述できるようになった E プログラミング言語の例を示しました。
JS がよりセキュアである理由の一部は、歴史の偶然によるものでもあります。JS 言語は ECMA で標準化されましたが、JS のブラウザー ホスト環境は W3C で標準化されました。これは、安全なオペレーティング システムに必要なユーザー モードとシステム モードの分離に対応しています。委員会が縄張りを守るのと同じように、デザインの境界が守られているのを見たことがありません😄。したがって、JS プログラム/モジュール/何かがシステム内の何かに対する権限を取得する唯一の方法は、それが評価に使用されるグローバル オブジェクトに配置される場合です。ブラウザでは、そのグローバルには
document
そのようなものですが、ノードでは、グローバルには次のものが含まれますfs
とprocess
など。 Mark と他の人々は、JS をその軌道に乗せ続けてきました。さらに、いくつかの追加機能 (例: freeze
) JS コードを評価することができます (例: ブロックチェーン上またはサーバー内)。コードが取得する権限は、提供する特定のサービスに対してのみです。ファイルシステムやネットワークなどでは取得できません。 それが「強化された JavaScript」です。これはオープンソースであり、 https://github.com/endojs/endoで web2 および web3 で利用でき、標準の JS 環境で実行されます。これは MetaMask の次世代ウォレットのバックボーンであり、Salesforce の AppExchange で使用され、もちろんスマート コントラクト プラットフォームにも使用されています。
ディーン・トリブル、すごい!あなたはかなりの旅をしました。テクノロジーに詳しくない人々の名において、ブロックチェーンのスマートコントラクトについて詳しく説明していただけますか?構成可能性とはどういう意味ですか?
スマート コントラクトとは何かについては、「複数の当事者間の契約のような取り決めの条件を実施するソフトウェア」です。そのこと!したがって、eBay と PayPal と Lyft と StubHub はすべて、大部分が「信頼できる仲介者」によって展開されるスマート コントラクト ビジネスです。したがって、スマート コントラクトは、ブロックチェーン*以前*の時価総額が 1 兆ドル以上でした。私たちは仲介者がソフトウェアを忠実に実行することに依存しており、ほとんどの取引はホスティング会社による人間の関与なしに行われます。
このようなビジネスは、すべてをゼロからコーディングせずに新しいビジネスを迅速に構成するための優れたライブラリとプラットフォーム (たとえば、shopify、stripe など、開発者が再利用できるすべてのコンポーネントを提供) があれば、はるかに速く離陸しました。
「ブロックチェーン上で実行できるコード」を思い付くのがなぜそんなに難しいのか、それは一般的なスマート コントラクトです (間違っていたら訂正してください)。解決?
しかし、私のお気に入りのコンポーネント モデルの例は UI 空間にあります (結局、PARC の Smalltalk グループでインターンとして UI に取り組みました)。 React/vue/etc が登場する前は、専門家は JavaScript で非常に優れたものを作成できました。しかし、未加工の HTML/JS で記述された凝ったアプリをデバッグするのは悪夢です (前回、ユーザーが郵便番号を変更したときに購入ページの税率が変更されなかった理由をデバッグしようとしたことを今でも覚えています)。 React は、洗練された UI を構築する際の多くの困難な問題に完全に対処し、複数の関係者によって構築されたコンポーネントが非常にうまく連携できるようにする、ユーザー インターフェイス コンポーネントのコンポーネント フレームワークを提供します。
その結果、React が登場して間もなく、新しい開発者は、React の 1 年前に専門家が作成できたよりも、洗練され、安全で、応答性が高く、便利なアプリケーションを構築できるようになりました。それが、コンポーネント フレームワークが提供するものです。
私たちの目標は、同じ種類のサポートを提供するフレームワークですが、(クリックやレンダリングを使用する代わりに) デジタル資産、価格設定などを処理するスマート コントラクト用です。イーサリアムのようなプラットフォームには、ビジネス上の問題を解決しようとしているアプリケーション プログラマーはもちろん、仮想通貨の専門家にとって率直に言ってリスクが高すぎるセキュリティ上の危険があります。私たちのフレームワークは、これらの危険から開発者を保護するように設計されています。
したがって、スマート コントラクトは「ブロックチェーンで実行できるコード」ではありません。ブロックチェーンの前にスマート コントラクトには 1 兆ドル以上の価値があったからです。
ビットコイン自体がスマート コントラクトです。 BTC の転送ルールを強制するのはソフトウェアです。これは、信頼できる仲介者を必要としない最初のスマート コントラクトです。
Eth は、他の人のソフトウェアを実行するためのサポートをもたらしました。そのためには、いくつかの要件がありました。ブロックチェーンのゴールドスタンダードは
異なる管轄区域と異なる管理ドメインにある複数のコンピューターが、データ、選択、および計算についてすべて合意に達します。
私はそれを開梱し、なぜそれが重要なのかについて話します 🙂.
ディーン・トリブルさん、Agoric でのオファーの安全性について少し説明していただけますか?元の資産と取引手数料を返金するのか、それとも元の資産だけを返金するのか?
異なる管轄区域と異なる管理ドメインにある複数のコンピューターがすべて合意に達している
これは、人間、組織、または政府が一方的にシステムの動作を変更できないことを意味します。計算の完全性を危険にさらすには、大多数のマシン (他の当事者によって制御されている) を同時に危険にさらす必要があります。
データ、選択、計算について。
データ: 「ディーンの口座には 100 ドルあります」
選択肢: 「ディーンは、オークションが終了する前にオファーを取り下げようとしました。彼はオークションに勝ってお金を使いましたか、それともお金を取り戻しましたか?」
計算: 「オークションが実行され、Dean が勝者になると判断されました」
新しい難しい技術的な部分は、「すべてが合意に達する」ことです。すべてのコンピューターを知っていて (知らない)、それらすべてに不正行為をしないように頼ることができる (できない) 場合、私たちは投票を数えて過半数を確保する方法を知っています。ビザンチン フォールト トレランスの領域では、「チートが発生した場合」の処理について説明します。 BitCoin に関する最も優れた洞察は、参加しているすべてのコンピューターを把握していない場合にコンセンサスに対処する方法でした。
最後に、これらのコンピューターがすべて同意していることを確認するには、実際に同意する必要があります。したがって、複数の場所で同じ引数を使用して複数回実行される同じプログラムは、同じ答えを生成する必要があります (これは「決定論的」と呼ばれます)。それは難しいことがわかりました!時計を見ることができれば、彼らは異なる行動をとることができます。メモリ アドレスを確認できる場合、動作が異なる可能性があります。ガベージ コレクションがいつ行われるかを彼らが確認できれば、そのアイデアは理解できます。
したがって、Solidity には多くの問題があり、非常に低レベルですが、決定論的に実行されます。強化された JavaScript を使用すると、 JavaScriptを決定論的に実行できます。これにより、より多くの開発者がこれらすべてにアクセスできるようになります
パワン・シャルマはアゴリック語で「安全を提供する」について質問します。これは、スマート コントラクト フレームワークの重要な特性の 1 つです。おなじみの安全性プロパティは、メモリの安全性や型の安全性などで、大きなクラスのバグを完全に排除します。すべてを解決するわけではありませんが、バグの 80% をテーブルから取り除くことができます。
オファーの安全性は、経済レベルでの安全性です。
まず設定: 既存のブロックチェーンのスマート コントラクト システムでは、「乱数」 (アカウント アドレス) に送金し、何か良いことが起こることを期待してトランザクションを実行します。人々は実際のアカウントではない「アドレス」、間違ったアカウント、その後失敗した契約などにアセットを送信 (および紛失) しました。 0x234ag3453 ではなく、友人のジョンに送金したいと考えています。
本当のビジネスには、見返りが含まれます。「コンサートのチケット Y をくれたら、X ドルあげます」。私たちはそれを直接サポートします。したがって、私たちの API では、クライアントは次のようにしてスマート コントラクトを呼び出します。
offer
秒。各オファーは彼らが何を言うかwant
、彼らがすることgive
どのような状況で、どのような状況でできるかexit
彼らの資産で。そのオファーの支払いは、スマート コントラクトではなく、フレームワーク自体に入ります。スマート コントラクトがアセットを取得できる唯一の方法は、オファーが必要とするアセットを提供する場合です。 では、オークションのオファーの安全性はどのようなものでしょうか?
Zoe はすべての資産を保持し、各オファーの契約を通知しました。オークションが終了すると、オークションはアトミックに契約します
reallocates
コンサートチケットは落札者に、落札者のお金は出品者に。その再配分は、落札価格が売り手にとって十分であり、コンサート チケットが実際に入札者が入札したものである場合にのみ成功します。これは、オークションのクライアントがより安全であることを意味します。オークション コードを読み取る必要がなく、希望のチケットや返金を受け取ることができます。
また、オークション コントラクトの作成者も満足しています。Solidity の危険の多くは、保持してはならないお金の処理に関するものです。契約からの返金のずさんな処理により、文字通り 10 億ドル以上の損失/盗難が発生しています。 Zoe and offer safety を使用すると、コントラクトにコードを 1 行も書かなくても安全に処理できます。
関連するプロパティは「payout liveness」です。各オフには
exit
その条件の一部として。そのためのデフォルト (都合よく指定する必要はありません) は、「必要なときにいつでも」です。それは私のお金だ!それは「オンデマンド」と呼ばれています 🙂 これは、いつでも終了できることを意味します。また、契約側のバグや悪意のある行為によって、オファーを終了して資産を取り戻すことが遅れることはありません。ただし、「あなたの資産」は、いくつかの再割り当てがすでに行われた後である可能性があることに注意してください。あなたが「X moola の N 枚のチケットを購入します」と申し出た場合、N 枚のチケットの一部をすでにあなたに再割り当てし、それらの代金を受け取っている可能性があります。 want
あなたが指定したこと。しかし、あなたの退出シグナルが届くと、Zoe はあなたの資産を引き出し、契約が介入することなくそれらをあなたに返します。同様に、コントラクトがクラッシュしたりハングしたりすると、Zoe はオファーを終了します。ユーザーがお金を取り戻す手段がない契約で、意図せずにどれだけのお金が「ロックアップ」されているかは驚くべきことです。 ディーン・トリブル、詳細な回答をどうもありがとうございました!スマートコントラクトの脆弱性についてはどうですか?どうすればそれらを減らすことができますか?
ディーン・トリブル 素晴らしい説明!!
スマート コントラクトの脆弱性を軽減する方法については、
追加の重要な方法:
イーサリアムやその他のチェーン (最近ではポリネットワーク) では、何十億もの損失が「再入可能性」から生じています。 2 つのコンポーネント (またはコントラクト) がある場合、A は B に電話して何か X を実行する予定ですが、B は X に到達する前に a にコールバック (A に再入力) します。たとえば、A はオークション、 B は入札の払い戻しを要求します。 B が「払い戻しを送ってください」と言ったので、A はそれを調べて B に払い戻しを送信し、B に払い戻しを行ったことを記録します。すぐに「返金してください」というメッセージをもう一度 A に送信します。 A は、B が払い戻しを受け取ったことをまだ記録していないため、先に進み、払い戻しを再度送信します。そして再び、Bはそれに対して「返金してください」と反応します。 A サービスは、B が払い戻しを受け取ったことを記録するポイントに到達しないため、B は A のアカウントを空にするまでこれを行います。このように言うとばかげているように聞こえますが、これはまさに 2017 年のバグであり、Agoric の背後にある技術がブロックチェーンに役立つかどうか疑問に思っていました。昨年の 6 億 6,000 万ドルのエクスプロイトも同じ基本的な問題でした。これは、Eth のアーキテクチャが再入可能性を許可し、サポートし、さらには必要とするためです。
Agoric モデルは基本的に非同期です。つまり、A が B にメッセージを送信しても、B が何かを行うのを待っているわけではありません。次に進み、記録する必要があるものの記録を終了します。これは、些細な例がそれほど些細ではないことを意味しますが、重要な例 (DeFi など) にはセキュリティ上の危険が伴わないことも意味します。
おい、ディーン・トリブル!よろしくお願いします! DeFiで経済を構築する際の主な課題は何だと思いますか?
ああなるほど。説明してくれてありがとう、ディーン・トリブル。再入可能性は多くの問題を引き起こす可能性があります。いつ再入可能システムを扱っているかを知る方法はありますか?
再賃貸;これはシステム アーキテクチャの一部であるため、別の言語やヘルパー ライブラリを使用することはできません。コントラクトまたはコントラクト コンポーネント間の呼び出しが call-return (A が B を呼び出し、応答を待機する) であるシステムは、ほとんどの場合、再入可能です。 A が B に電話をかけている間に (「返金してください」)、他の誰かが A に電話をかけることができる場合、それは再入可能である可能性があります。非同期メッセージングを使用しないアーキテクチャ (agoric など) や、セマンティクスが制限されているアーキテクチャ (Kadena など)。
DeFiで経済を構築する際の課題について
Dean Tribble さん、JavaScrip 開発者による web3 のスケーリングについてはどうですか?それはどういう意味ですか? Agoric が取り組んでいることはありますか?
それは私たちが取り組んでいることの核心です。多くの人が、トランザクション速度、ブロックサイズ、またはレイテンシーのスケーリングについて話しています。しかし、スケーリングが最も難しいのは開発者ベースです。非常に大きな開発者コミュニティに到達するために、彼らが現在の言語とツールを捨てて、さらに別のプログラミング言語に取り組むことを期待することはできません.私たちは「彼らがいる場所で彼らに会う」必要があります。
だからアゴリックで:
具体的な内容 (たとえば、非同期実行を伴う JavaScript など) も重要ですが、何かを成し遂げたいだけの開発者を優先することも重要です。私たちのプラットフォームは、JS や Node が行ったように成長する必要があります。 :)
私の目標は、「クラウド用の web2 アプリケーションを構築できれば、agoric 用の web3 アプリケーションを構築できる」ということです。まだ早いので、まだ到着していませんが、到着する予定です。
こんにちはディーン・トリブル、ご参加ありがとうございます!私の質問は、なぜオープンソースなのですか?このモデルにはどのような利点と欠点があり、長所はどのように短所を上回っていますか?
オープンソースの理由はたくさんあります。
個人的な動機: 素晴らしいプロジェクトに取り組む機会がありました。問題は、最も素晴らしいもののいくつかが出荷されなかったことです。そのため、私の人生の一部は、楽しくて興味深いものでしたが、最終的にははるかに価値のない時間を費やしました.私たちがやっていることの多くは、本当に便利な技術のオープン ソース バージョンを最終的に構築することです。これは、複数の化身で構築されましたが、新しいプロジェクトに簡単に持ち越すことはできませんでした。
文化的動機: JavaScript は大部分がオープンソースの世界です。そして、再利用可能なコンポーネントがたくさん必要です。歴史的に、この種の再利用はオープンソース環境で最もうまくいきます。開発者は、他の開発者がコンポーネントの同じ技術スタックに行くことを知っているため、そこでコンポーネントを構築して貢献します。
そして最後に、ブロックチェーンの中核となる価値提案は、分散化による高い整合性です。スマート コントラクトは、さまざまな管轄区域の独立したオペレーターによって実行される複数のコンピューターで実行されます。それらがすべて同じクローズドソースのソフトウェアを実行している場合、基本的に分散化は行われません。実装者は失敗の唯一の原因です。そして実際には、コミュニティ所有のコードに成長する必要があります。 Thatonly は、オープンソースでのみ機能します。
おしまいです!ディーン・トリブル、私たちの質問に答えてくれてありがとう。最終的な考えはありますか、それとも宣伝したいことはありますか?
「mainnet1」を立ち上げ、コミュニティが支援するインターチェーン環境向けの安定したトークンを提供します。 http://agoric.com/discord のコミュニティに参加して、ニュースレターとhttp://agoric.com/newsletterにサインアップしてください。また、web2 開発者の場合は、endojs をチェックアウトしてください。お招きいただきありがとうございます!
そしてもちろん、Agoric アナウンス チャンネルでは、
電報 ( https://t.me/agoric_ann ) と Twitter ( https://twitter.com/agoric )。