Ethereum 開発者向けコミュニティを作ったよ

<a href="https://www.hi-ether.org/"><img src="https://slack.hi-ether.org/badge.svg">

この記事は [Ethereum Advent Calendar 2017](https://qiita.com/advent-calendar/2017/ethereum) の1日目の記事です。

# TL;DR

- Ethereum の仕組みを使って、Ethereum コミュニティを作ってみたよ
- テストネットの Ether を 1.0 ETH 以上保有していないと参加できない仕組みだよ
- Ethereum エンジニアはまだまだ少ないので、ぜひ参加してほしいよ

 → [Hi-Ether 登録ページ](https://www.hi-ether.org/)

# 背景

私は今 Ethereum を活用したサービスを開発しているのですが、まだ Web 上に Ethereum の開発情報が少ないこともあり、１人でハマってしまうことがよくあります。周りで Ethereum をやっているエンジニアも全然いないので、「困ったときに気軽に質問できる場があればな〜」と思っていました。

Ethereum のコミュニティ自体は日本にもいくつかあるのですが、どうしても「投資対象としての ETH 」がメイントピックになってしまうことが多く、なかなかエンジニアが具体的な Dapps 開発についてコミュニケーションを取れる場が存在しなかったというのが、今回「[Hi-Ether](https://www.hi-ether.org/)」というコミュニティを作ったきっかけです。

# テストネット ETH 保有者限定に

オンラインコミュニティ自体は Slack 等を使えばすぐ用意できるのですが、なるべくエンジニアが集まるようにするにはどうすれば良いだろうと考えている中で、テストネットの Ether を保有していることを参加条件にすることを思いつきました。

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">テストネットの ETH 保有を参加条件にした、Ethereum 好きのためのグループを作りたい<br><br>テストネット上の Dapp プロトタイプを、参加者がお互いに試したりできるように</p>&mdash; Akinori Machino (@amachino) <a href="https://twitter.com/amachino/status/932800446053236736?ref_src=twsrc%5Etfw">November 21, 2017</a></blockquote>

テストネットとは、Ethereum 開発者がテストのために使う Ethereum ブロックチェーンです。本番の Ethereum (メインネット) とは別のチェーンですが、ほぼ同じ仕組みで維持されています。テストネット用の ETH も存在しており、本物の ETH と同じ方法で送金もマイニングも行うことができます。

テストネットには種類があり、いま存在している代表的なものは、

1. [Ropsten](https://ropsten.etherscan.io/)
2. [Kovan](https://kovan.etherscan.io/)
3. [Rinkeby](https://rinkeby.etherscan.io/)

の３つです[^1]。Hi-Ether では、1番目の Ropsten テストネットの ETH 保有を参加条件にしています。

[^1]: Ropsten と Kovan/Rinkeby では、ブロック生成のコンセンサスアルゴリズムが異なります。Ropsten はメインネットの Ethereum と同じ PoW ですが、Kovan/Rinkeby では、安定的にブロックが生成されるように PoA というテストネット向けのコンセンサスアルゴリズムが採用されています

# Slackin を改造して自動招待ページを作成

オープンなオンラインコミュニティを作る際には、[Slackin](https://github.com/rauchg/slackin) のような仕組みがよく使われます。それだけだと誰でも参加できてしまうので、Hi-Ether では Slackin のコードに手をいれて、登録時に Ropsten ETH の保有を確認するロジックを追加してあります。

ソースコードは GitHub 上に公開してありますの興味ある方はどうぞ。
https://github.com/hi-ether/slackin

同じ考え方で、「特定のトークンを保有している人だけが参加できる Slack」なんかも簡単に実現できます[^2]。

[^2]: [Gnosis](https://gnosis.pm/) の [Slack](https://slack.gnosis.pm/) は、GNO トークンの保有が参加条件になっています

# MetaMask を使った登録フロー

Hi-Ether に登録する際には、[MetaMask](https://metamask.io/) の Google Chrome プラグインを使うのが便利です。

MetaMask で Ethereum アカウントにログインした状態で、
https://slack.hi-ether.org/
を開くと、「GET MY INVITE」というボタンが押せるようになります。

<img width="960" alt="hi-ether.png" src="https://qiita-image-store.s3.amazonaws.com/0/10941/9791fa3f-5aab-0158-bbdf-da5dce135655.png">

「GET MY INVITE」を押すと、MetaMask のポップアップが開き本人確認のための署名 (Sign) を求められます。Sign ボタンを押し、使用しているアカウント（アドレス）に 1.0 ETH 以上の Ropsten Ether が入っていれば、Slack の招待メールが飛ぶはずです。

<img width="370" alt="hi-ether-metamask.png" src="https://qiita-image-store.s3.amazonaws.com/0/10941/0d1348e9-176e-8858-1a17-8fc9e529f52b.png">

# Q. Ropsten の ETH はどこで手に入れればいいの？

**A. 内緒です！**

Ropsten の ETH を手に入れる方法はいくつかありますが、Web上で少し調べると方法が見つかると思うので、ぜひ宝探しをしてきてみてください。

（テストネットの ETH は無料で手に入れられるので、変な詐欺にあわないでくださいね）

# Q. Hi-Ether ってなんて読むの？

**A. ~~「ハイエーテル」です！~~[^3]**

[^3]: Ethereum（イーサリアム）の ETH (Ether) を呼ぶときは、一般的に英語読みで「イーサ (íːθər)」です

*（追記：コミュニティでみんな「ハイイーサ」と読むので、もはや「ハイイーサ」にしましたｗ）*

いやまぁ、普通に英語読みしたら「ハイイーサ」なんですけどね。FINAL FANTASY シリーズのアイテム「[ハイエーテル (Hi-Ether)](http://finalfantasy.wikia.com/wiki/Hi-Ether)」から名前を拝借しました。

余談ですが、イーサリアムの「イーサ」も、イーサネットの「イーサ」も、FINAL FANTASY の「エーテル」も、物理学の「エーテル」も、化学の「エーテル」も、全て古代ギリシャの「[エーテル (Ether)](https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%BC%E3%83%86%E3%83%AB_(%E7%A5%9E%E5%AD%A6)
)」という言葉が語源です。

# おわりに

[Ethereum Advent Calendar 2017](https://qiita.com/advent-calendar/2017/ethereum) が~~まだ全然埋まっていないので、何か書いてください！~~ 埋まりましたね！ 有益な情報がたくさん集まっています。

 → [Hi-Ether 登録ページ](https://www.hi-ether.org/)