より技術的な処理については、以下をご覧ください。 OmiseGOプラズマ概要ブログ記事.
MultiBaasは、Ethereumネットワーク上でスマートコントラクトと対話するためのシンプルなインターフェースを提供し、OmiseGOのPlasmaネットワーク上での構築を簡素化することができます。この記事では、MultiBaasを使ってOmiseGO上でDAppを構築するための出発点として使用できるデモアプリケーションをご紹介します。
MultiBaasomisego-demo-appは Vue.js上に構築されており、MultiBaasブロックチェーンミドルウェアとOmiseGO Plasmaの子チェーンと対話するためのカスタムJavaScriptを使用しています。この時点では、トランザクションを構成するには、フロントエンドが呼び出すogg-jsライブラリが必要です。近い将来、MultiBaasはOmiseGO Plasmaの子チェーントランザクションを直接作成するためのバックエンドサポートを追加する予定です。
MultiBaasはTLS/SSL(HTTPS)を必要とするため、開発用には基本的なHTTP-to-HTTPSプロキシをlocalhost上で使用しています。MultiBaasのAPIキーはプロキシサーバにあります。
セットアップ
リポジトリをクローンして、サーバーとウェブディレクトリの両方で yarn install を実行することから始めます。アプリケーションを起動する前に、Ropsten Ethereum テストネットワーク上の MultiBaas デプロイメントに接続するための有効な API キーを提供する必要があります。このチュートリアルでは、Ropsten テストネットワーク上に MultiBaas ディプロイメントを設定し、MultiBaas と対話するための API キーを作成したことを前提としています。無料で立ち上げて実行する方法については、MultiBaasのブログ記事「Introduction to MultiBaas」を参照してください。
MultiBaasディプロイメントを設定し、APIキーを作成したら、その詳細をserver/config/config.jsonファイルに追加します。ホストフィールドにはMultiBaasディプロイメントのURLを入力し、apiKeyフィールドにはAPIキー作成ページに表示されたキーを入力します。
サンプルアプリケーションを介してOmiseGOスマートコントラクトと対話する前に、OmiseGOコントラクトをMultiBaasデプロイメントの適切なRopstenアドレスにリンクする必要があります。スマートコントラクトはMultiBaasコントラクトページにプリロードされています。
各契約のデプロイ/リンクページに移動し、それぞれの Ropsten アドレスで契約をリンクします。
Erc20Vault: 0x18E15C2cDc003b845B056f8D6b6a6a91ab33d3F182
EthVault: 0x895Cc6F20D386f5C0deae08B08cCFeC9f821E7D9
PaymentExitGame: 0x08C569c5774110EB84A80B292e6d6f039E18915A
PlasmaFramework.0x96d5D8bc539694e5fa1ec0dAb0e6327CA9E680F9
これらの詳細を設定した後、ターミナルを開き、サーバディレクトリで yarn start を実行してローカルのプロキシサーバを起動します。
アプリケーションのフロントエンドにアクセスするためには、別のターミナルでウェブディレクトリで yarn serve を実行してください。後者のコマンドが完了すると、ターミナルウィンドウにフロントエンドにアクセスできるURLが表示されます。デフォルトでは http://localhost:8080/ です。
Web ブラウザを開いて http://localhost:8080/ (またはターミナルに表示されているもの) にアクセスします。以下のスクリーンショットに示すように、OmiseGO アプリケーションのトップに Ropsten アドレスが表示されていれば、サンプルアプリケーションが MultiBaas 配置に正常に接続されたことを示しています。
OmiseGOフロー
OmiseGOネットワークにEtherを入金してみましょう。Depositタブで、Etherセクションを展開し、Weiの金額として10000000000000000を入力します(0.01 Etherに相当)。Depositボタンを押すと、アプリケーションは、指定した引数でethvault契約のデポジット メソッドを呼び出すことを希望する旨のAPIリクエストをMultiBaasデプロイメントに送信します。MultiBaas はリクエストを処理し、符号なしトランザクションを返します。
MetaMask(または他のWeb3ブラウザ)のポップアップで返されたトランザクションを確認し、確認してください。
取引がマイニングされるのを待つマイニングされたら、OmiseGOのネットワークに入金が反映されるまで、さらに10ブロックほどEthereumのネットワーク上でマイニングされるのを待つ必要があります。
OmiseGOアプリのバランスセクションを使用して、入金が成功したことを確認してください。
さて、OmiseGOネットワーク上にEtherがあるので、別のアドレスに送信してみましょう。トランザクトタブで、方法を展開して詳細を記入します。預けた金額の半分を別のアドレスに送るために、金額として5000000000000000を入力します。ドロップダウンで通貨としてEtherを選択します。受取人欄には別のEthereumアドレスを入力します。これらの資金を引き出すことができるようにしたい場合は、受取人のアドレスが自分が管理しているアドレスであることを確認してください。オプションで、メタデータフィールドにテキストを含めることができます。
Transactボタンをクリックし、MetaMaskウィンドウでトランザクションを確認します。
取引が確認できたら、残高セクションを使用して、取引が成功したことをもう一度確認してください。新しい残高が反映されるまでには少し時間がかかります。
OmiseGOネットワークで取引を行ったので、残りの資金をEthereumネットワークに引き出してみましょう。出金タブに切り替えて、出金方法を展開します。イーサの一部を使い切ってしまったので、標準的な出口を開始しようとする前にUTXO(未使用トランザクション出力)リストを更新しておくと便利です。UTXO To Exit ドロップダウンの右側にある更新ボタンをクリックして、引き出したいUTXOを選択します。標準終了の開始]ボタンをクリックします。
MetaMask ウィンドウでは、トランザクションに 0.014 Ether の値が含まれていることに気づくでしょう。このEtherは、OmiseGOネットワークのセキュリティを確保するために、一時的に債券として保持されます。彼らはそれが非正規であることを証明することができる場合は、ネットワーク上の他の当事者があなたの引き出しに異議を唱えることができるチャレンジ期間の間、引き出しは保留されます。
取引が確認され、チャレンジ期間が経過したら、plasmaframework契約のprocessExitsメソッドを呼び出すことで、OmiseGOネットワークからの出金処理を行うことができます。この機能は OmiseGO サンプルアプリケーションには含まれておらず、読者のための練習として残されています。ヒント: MultiBaasのPlasmaFrameworkコントラクトのコントラクトページで試してみてください。
出口が処理されると、出金された資金だけでなく、出口債券もEthereumネットワーク上の出金先に返却されます。
上記の処理は、2つの注意点を除いて、ERC-20トークンで繰り返すことができます。
- erc20vault契約の入金方法を呼び出す前に、erc20vault契約の承認方法を呼び出す必要があります。スペンダーアドレスはERC20VAULT契約のアドレスで、指定された金額は今後の入金を承認したい累積金額です。
- ERC-20 UTXO を選択して paymentexitgame 契約の startStandardExit メソッドを呼び出す前に、指定された ERC-20 トークンの引き出しキューが作成されていることを確認する必要があります。退出キューがすでに存在するかどうかは、plasmaframework コントラクトの hasExitQueue メソッドを呼び出すことで確認できます。ethvault の金庫 ID は 1、erc20vault の金庫 ID は 2 です。 ERC-20 トークンのための退出キューが存在しない場合は、plasmaframework コントラクトの addExitQueue メソッドを呼び出して退出キューを作成する必要があります。これは、ERC-20 トークンごとに一度だけ行わなければなりません。
スマートコントラクトとのすべてのインタラクションと同様に、上記のメソッド呼び出しは、MultiBaasデプロイメントのWeb UIを介して、またはMultiBaas APIを介して直接実行することができます。
結論
このウォークスルーが、OmiseGO Plasmaネットワークとの相互作用や、MultiBaasとOmiseGO Plasma上でDAppを構築する方法を実演する上で参考になったことを願っています。BUIDLingを楽しみにしています。