開発者目線でWeb3サービスまとめ
様々なサービスがweb3化している。開発者目線でホワイトペーパーなどから興味のある項目をまとめてみた
目次
Minds
参考ページ
特徴
- 一言で言うと「web3版Facebook」
- プログラムコードは全てオープンソース化されている
- アプリへの貢献度によってトークン(points)をもらえる
アプリへの貢献と報酬
ユーザーは閲覧数、投票数、コメント数、定期購読者数の増加につながる質の高い記事を書いたり、知人を紹介すること(アフィリエイト)によってトークンがもらえる
開発者は公開されているソースコードからバグや脆弱性を見つけることによってトークンがもらえる。
もらえるトークン量は見つけたバグの影響度合いや発生頻度に応じて評価された危険度(OWASP)に基づき決定する。
Mindsのスマートコントラクト
MindsのトークンはEtherscanから確認できる。
ホワイトペーパーには、以下の形式の記事情報をmd5でハッシュ化してブロックチェーンに記録していると書いてあった。
(boost_guid, boost type (newsfeed, offer, sidebar), owner_guid, perma_url, message, title, time_created)
記事が更新されるごとに、このハッシュ値も変化し、記録されるとのこと。 残念ながらスマートコントラクトはリポジトリから見つけることができなかった。
OWASP
- Open Web Application Security Project の略
- ソフトウェアのセキュリティ向上を目的とした非営利団体
- 全ての情報に誰でも無料でアクセスできる
- OWASP ASVSというWebアプリにおけるセキュアな開発のための検証項目を公開している
- OWASP ZAPという脆弱性診断ツールを公開している
- OWASP Testing GuideというWebアプリにおけるテストの教科書を公開している
- OWASP Top10というWebアプリにおけるセキュリティリスクの高い上位10項目を公開している
Odysee
参考ページ
特徴
- 一言で言うと「 web3版YouTube」
- LBRY protocolというブロックチェーン技術を用いたファイル共有・支払いプロトコルを使用
- ブロックチェーン上にコンテンツが格納され、コンテンツはP2P方式で共有される
- 動画のアップロードに最小0.01LBCのトークンが必要で、閲覧に必要なLBCトークン量を設定可能
LBRY protocol
- ブロックチェーンとBitTorrentの技術を使用
- MIT Lincenseのオープンソースプロジェクト
- プログラム言語はC++で書かれている
Audius
参照ページ
特徴
- 一言で言うと「web3版音楽配信プラットフォーム」
- アーティストが自身でブロックチェーン上に音楽をアップロード・管理する
Audiusの3種類の利用者
Audiusの利用者は3種類に分類される
種類 | 説明 |
---|---|
アーティスト | 曲のアップロード/アルバムの作成/コンテンツの共有 |
ファン | 曲を聴く/プライリストの作成/サブスクリプション/フォロー/再共有 |
サービス提供者 | サーバーの提供/曲の配信/ネットワークの援助 |
サービス提供者
サービス提供者は「Discovery node」や「Content node」を提供する
Discovery node
- ソースコード
- 「Discovery node」はユーザーや曲、アルバム、プレイリストなどの情報をindexして保存しておくノードである
- インデックスしたデータは「PostgreSQL」に保存
- サーバーにはPythonの「Flask」を使用
- 定期実行jobはPythonの「Celery」によって管理
- キャッシュなどの一時的なデータ保存に「Redis」を使用
- 検索エンジンに「Elastic Search」を使用
Content node
- ソースコード
- 「Content node」は曲や画像、メタデータを管理するサーバーである
- データは「Postgres DB」に保存
- サーバーにはnodejsの「Express」を使用
- キャッシュなどの一時的なデータ保存に「Redis」を使用
Celery & Redis
Celery
- 公式ページ
- Celeryはタスクジョブを管理するためのパッケージで、同期・非同期的に動作可能
- 定期的に同期する機能を呼び出すなどで使用する
Redis
- 公式ページ
- 「REmote DIctionary Server」の略
- Redisはインメモリデータベースで、非常に高速に応答できる
- 明示的に保存しない限りデータが永続化されず、停止と共にデータが消去される
- データをキー&バリュー形式で保存する
簡単にCeleryとRedisを利用してみる。
Redisを使ってみる
以下のdocker-compose.yamlを用意する
redis起動用のdocker-compose.yaml
1 2 3 4 5 6 7 |
|
以下のコマンドでRedisのコンテナを起動する
Redis(docker-compose)の起動コマンド
1 2 |
|
以下のコマンドで Python用Redisパッケージをインストールする
Python用Redisパッケージのインストールコマンド
1 2 |
|
以下のpythonを作成してRedisの通信と動作を確認
redisとの通信を行う簡単なプログラムの作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
celeryを使ってみる
以下のコマンドでceleryをインストール(参照)
インストールコマンド
1 2 |
|
検証用のコードを作成する。以下、作成したコードの構成 docker-compose.yamlは先ほど作成したredisのコンテナ
ファイル構成
1 2 3 4 5 6 |
|
celerynのサーバー情報をserver.pyに記載する redisとの接続情報も記録されている
server.py
1 2 3 4 5 6 7 8 |
|
バックグラウンドで実行したいtaskをtasks.pyに記載する 単純に5秒後に足し算の結果を返すだけ
tasks.py
1 2 3 4 5 6 7 8 |
|
非同期的に実行して、10秒間1秒ごとにjobIdと状態を確認するコードをprog.pyに記載する。
prog.py
1 2 3 4 5 6 7 8 9 |
|
redisが起動している状態で、celeryのworkerを起動する tasksはファイル(tasks.py)
celeryのworkerを起動
1 2 |
|
prog.pyを実行すると、以下の結果が得られた 5秒間pendingが続き、その後successが得られている 非同期動作が確認できた
非同期job結果
1 2 3 4 5 6 7 8 9 10 11 |
|
今度は10並列でjobを実行してみた
10並列jobコード
1 2 3 4 5 6 7 8 9 10 11 12 |
|
10並列の結果は以下の通り 同時に8つ並列実行できていることを確認できた
10並列job結果
1 2 3 4 5 6 7 8 9 10 11 |
|
Mirror
参照ページ
- 公式ページ
-
記事を書いて個人が収益を得られるweb3版ブログプラットフォーム
- クリエイターが記事を公開する際にチェックボックスにチェックを入れるだけで、簡単に自分の記事をNFT化することができる
- NFTの供給量と価格はクリエイターが自由に設定可能
- NFTを使ったクラウドファンディングの仕組みが導入されている
- 暗号資産ETFにより資金を調達する。支援者への返礼としては、独自のERC20トークンを発行して渡す
Mastodon
- 短文投稿型SNS
- 管理者も設置場所も異なる多数のサーバーで運用されている
- ユーザーは自分で所属サーバーを選び(新たに自分でサーバーを設置することも可能)ネットワークに参加する