トップへ戻る
公開日
2020年4月27日
筆者:Curvegrid
ダニエル・ブリスキン

MultiBaasでのOmiseGOプラズマの使用方法

MultiBaasは、Ethereumネットワーク上のスマートコントラクトと対話するためのシンプルなインターフェースを提供します。

より技術的な処理については、以下をご覧ください。 OmiseGOプラズマ概要ブログ記事.

MultiBaasは、Ethereumネットワーク上でスマートコントラクトと対話するためのシンプルなインターフェースを提供し、OmiseGOのPlasmaネットワーク上での構築を簡素化することができます。この記事では、MultiBaasを使ってOmiseGO上でDAppを構築するための出発点として使用できるデモアプリケーションをご紹介します。

OmiseGO MultiBaasデモアプリのアーキテクチャ

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

Erc20Vaultの契約をそのRopstenアドレスにリンクする

これらの詳細を設定した後、ターミナルを開き、サーバディレクトリで yarn start を実行してローカルのプロキシサーバを起動します。


ヤーンスタート
yarn run v1.21.1
ノード app.js
MultiBaas プロキシサーバは http://127.0.0.1:3000/ で動作しています。


アプリケーションのフロントエンドにアクセスするためには、別のターミナルでウェブディレクトリで yarn serve を実行してください。後者のコマンドが完了すると、ターミナルウィンドウにフロントエンドにアクセスできるURLが表示されます。デフォルトでは http://localhost:8080/ です。


$ヤーンサーブ
yarn run v1.21.1
$ vue-cli-service serve
 INFO 開発サーバーの起動...

  で動作しているアプリ。
  - ローカル: http://localhost:8080/
  - ネットワーク: http://10.10.0.2:8080/

  開発ビルドは最適化されていないことに注意してください。
  本番用ビルドを作成するには、yarn buildを実行します。


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アドレスを入力します。これらの資金を引き出すことができるようにしたい場合は、受取人のアドレスが自分が管理しているアドレスであることを確認してください。オプションで、メタデータフィールドにテキストを含めることができます。

OmiseGO ネットワーク上での Ether トランザクションの送信

Transactボタンをクリックし、MetaMaskウィンドウでトランザクションを確認します。

OmiseGO ネットワーク上での Ether トランザクションの確認

取引が確認できたら、残高セクションを使用して、取引が成功したことをもう一度確認してください。新しい残高が反映されるまでには少し時間がかかります。

イーサ取引を残高に反映

OmiseGOネットワークで取引を行ったので、残りの資金をEthereumネットワークに引き出してみましょう。出金タブに切り替えて、出金方法を展開します。イーサの一部を使い切ってしまったので、標準的な出口を開始しようとする前にUTXO(未使用トランザクション出力)リストを更新しておくと便利です。UTXO To Exit ドロップダウンの右側にある更新ボタンをクリックして、引き出したいUTXOを選択します。標準終了の開始]ボタンをクリックします。

イーサリアムに戻って残りのイーサを引き出す

MetaMask ウィンドウでは、トランザクションに 0.014 Ether の値が含まれていることに気づくでしょう。このEtherは、OmiseGOネットワークのセキュリティを確保するために、一時的に債券として保持されます。彼らはそれが非正規であることを証明することができる場合は、ネットワーク上の他の当事者があなたの引き出しに異議を唱えることができるチャレンジ期間の間、引き出しは保留されます。

エーテルの撤退を確認

取引が確認され、チャレンジ期間が経過したら、plasmaframework契約のprocessExitsメソッドを呼び出すことで、OmiseGOネットワークからの出金処理を行うことができます。この機能は OmiseGO サンプルアプリケーションには含まれておらず、読者のための練習として残されています。ヒント: MultiBaasのPlasmaFrameworkコントラクトのコントラクトページで試してみてください。

出口が処理されると、出金された資金だけでなく、出口債券もEthereumネットワーク上の出金先に返却されます。

上記の処理は、2つの注意点を除いて、ERC-20トークンで繰り返すことができます。

  1. erc20vault契約の入金方法を呼び出す前に、erc20vault契約の承認方法を呼び出す必要があります。スペンダーアドレスはERC20VAULT契約のアドレスで、指定された金額は今後の入金を承認したい累積金額です。
  2. 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を楽しみにしています。