飽き性の頭の中
0x Meshの開発環境を整える方法をメモしましたのサムネイル

0x Meshの開発環境を整える方法をメモしました

2019-11-28に公開

# ブロックチェーン

0x Mesh というネットワークが β 版から正式版にそろそろなるということで使ってみました。

公式ドキュメントでは明記されておらずハマったところがあったので簡単に整理してメモしておきます

0x Mesh とは

簡単に 0x Mesh がどのようなものなのかまとめておきます。環境構築だけ知りたい方は次の章へ。

0x

まず、0x は Ethereum 上に配置されたスマートコントラクト、手軽に Ethereum 上のアセットを交換できるプロトコルです。

0x.org

0x 単体ではあくまでプロトコルなので、実際のユーザーが目にするのはこのプロトコルを使って取引機能を提供するサービスとなります。そのサービス主体は Relayer と呼ばれています。

取引をするということは如何にすぐに取引が成立するかということがユーザーにとってもサービス提供者にとっても重要となります。そのため、より多くの注文が出される必要があるのだが、現状では注文は各 Relayer 内に閉じてしまい、各 Relayer がある程度の注文量を確保しなければなりませんでした。

0x Mesh

20191127153152.png

そこで、Relayer を越えてすべての注文情報が共有できれば、流動性が上がりすぐに取引できるようになるのでユーザーにとっても便利になります。これを実現するための機能として、0x Mesh というものが生まれたというのが僕の理解です。

0x-org.gitbook.io

雑な例えですが、メルカリで出品すれば同時にヤフオクでも出品されたことになる機能が提供しやすくなり、買われやすくできるイメージです。

これを各 Relayer が独自実装で共有するのではなく、プロトコルを用意している 0x がやっています。こうしたエコステムがどんどん生まれているのはとてもいい世界だなと思いました。

これのおかげで個人でも Relayer を介さずに注文を指したり取ったりできるようになるはずです。

開発環境を整える

そんな 0x Mesh の開発環境を整えたときのメモです。基本的にはドキュメントを見ればよいのですが、ハマったところを中心に書いておきます。

全体像

0x に限らず、ブロックチェーンに関連する開発には登場人物が多く自分はこんがらがってしまうので最初に全体像を整理します。

用意する必要があるものは次の 3 つです。

  • Ethereum のノード
  • 0x Mesh サーバー
  • 自分のアプリケーション

関係性としては、

20191127211912.png

という感じになります。これらを 1 つずつ用意していきます。

Ethereum のノード

Ethereum のノードを用意する必要があります。ローカルで Ganache でも Ethereum は立てられますが、0x のスマートコントラクトがないので使えません。

実際に稼働しているメイン・テストネットに接続するのが一番楽で、今回は Infura を使ってテストネットに接続しました。

infura.io

Infura は node 運用を代行してくれる SaaS みたいなもので、1 日 10 万リクエストなら無料で使えるのでとりあえず開発するにはお手軽に使えます。

Infura でアカウント作って、エンドポイントだけメモしておきましょう。

20191127173109.png

これで Ethereum のノードの準備は終わりです。

0x Mesh サーバー

2 つ目は 0x Mesh のサーバーです。

https://0x-org.gitbook.io/mesh/getting-started/deployment

上記のドキュメントを見れば基本的にはできます。0x Mesh を動かす Docker イメージがすでに用意されているようなので、それをそのまま使います。

docker run \
--restart unless-stopped \
-p 60557:60557 \
-p 60558:60558 \
-p 60559:60559 \
-e ETHEREUM_CHAIN_ID="3" \
-e ETHEREUM_RPC_URL="https://ropsten.infura.io/v3/[YOUR ACCESS TOKEN]" \
-e VERBOSITY=5 \
-e RPC_ADDR=0.0.0.0:60557 \ # <- 追加
-v /Users/[YOUR USER]/0x_mesh:/usr/mesh/0x_mesh \
0xorg/mesh:latest

変更箇所は次のとおりです。

まず、僕はテストネットの ropsten を使いましたが、用途に合わせてETHEREUM_CHAIN_IDETHEREUM_RPC_URLを変更しました。

さきほど Infura を作った時にメモしていたエンドポイントを使いましょう。これで 0x Mesh のサーバーはアクセスすべき Ethereum のノードを知ることができます。

chain id は以下から参照しました。

github.com

また、RPC_ADDRを環境変数として追加指定しました。これを設定しておらず、なかなかクライアントや Postman からアクセスできずしばらく困ったので注意してみてください。設定することでws://localhost:60557でアクセスできるようになります。

自分のアプリケーション

アクセス可能な 0x Mesh のサーバーが建ったのでここへアクセスするアプリケーションを作ります。

今回はとりあえず疎通を確認するためのスクリプトだけ用意しました。

0x から TypeScript 用のクライアントも用意しているのでそちらを使うと簡単に 0x Mesh にアクセスできます。

0x-org.gitbook.io

以下パッケージを追加して、

yarn add @0x/mesh-rpc-client

簡単なスクリプトを実行してみます。

import { WSClient } from "@0x/mesh-rpc-client";

const main = async () => {
  const client = new WSClient("http://localhost:60557");
  const res = await client.getStatsAsync();
  console.log(res);
};

main()
  .then(() => {
    console.log("OK");
  })
  .catch((error) => {
    console.error(error);
  });

OKが表示されれば正常に繋がっているはずです。

最後に

0x には Discord があります。

https://discord.gg/HF7fHwk

質問したり、過去の質問を遡ることができるので、原因不明のエラーに遭遇したら見てみると解決策が見つかるかもしれません。

自分のRPC_ADDRでハマったところも Discord を辿ったら似たような状況の人が居たので解決できました。

Profile picture

たわ / tawachan

1994年生まれ(29歳)

大学院修士課程(政治学)(2021-2023)

Web開発(2017-)

関連記事

タグ一覧

# 福岡:39# 東京:20# 大学院:13# 移住:10# エナジードリンク:9# Google:8# ブロックチェーン:8# Mac:7# Webエンジニア:7# Apple:6# Firebase:6# Sony:6# サントリー:6# Googleフォト:5# インドネシア:5# 埼玉:5# 英語:5# AWS:4# Canon:4# EOS 8000D:4# Kindle:4# Next.js:4# ZONe:4# ラーメン:4# 京都:4# 仮想通貨:4# 社会人:4# 鴨川シーワールド:4# Docker:3# EOS8000D:3# Lightroom:3# Markdown:3# Pixel:3# React Native:3# a7iii:3# d.school:3# iPad:3# iPad mini:3# アマルティア・セン:3# アメリカ:3# コワーキングスペース:3# セブンイレブン:3# デザイン思考:3# レッドブル:3# ワークショップ:3# 卒業旅行:3# 寿司:3# 紅葉:3# 長崎:3# API:2# ECR:2# ERC20:2# Expo.io:2# Firestore:2# Gatsby.js:2# GitHub Actions:2# Google Drive:2# Kindle Oasis:2# Kindle Paperwhite:2# LINE:2# MacBook Pro:2# NestJS:2# Notion:2# Oculus:2# Oculus Quest:2# Pixel Buds:2# React:2# TypeScript:2# Zotero:2# iPhone:2# pandoc:2# re:Invent:2# zsh:2# かき小屋:2# カフェ:2# ギグワーカー:2# サーチコンソール:2# ジャカルタ:2# スターバックス:2# ステーキ:2# スマートウォッチ:2# ソラマチ:2# チョコレート:2# ニューヨーク:2# バリ島:2# パンとエスプレッソと:2# ヒュッゲ:2# ビーチ:2# ブックスタンド:2# ブログ:2# マクドナルド:2# ミズマチ:2# モンスターエナジー:2# ワイヤレスイヤホン:2# 三千院:2# 両国:2# 修士論文:2# 兵庫:2# 千葉:2# 博多:2# 堀江貴文:2# 宮崎:2# 就活:2# 嵐山:2# 川越:2# 広島:2# 新宿御苑:2# 日米学生会議:2# 有馬温泉:2# 東寺:2# 東浩紀:2# 歴史:2# 民主主義:2# 江ノ島:2# 清澄白河:2# 独自ドメイン:2# 神奈川:2# 神戸:2# 転職:2

©2023 tawachan All Rights Reserved.