LoginSignup
8
5

More than 5 years have passed since last update.

LoomNetworkのdemoを色々試してみたよ

Last updated at Posted at 2018-09-18

はじめに

Ethereumでプロトタイプゲーム「 PlanetTravelers http://planettravelers.net 」を作っているのですがDApps固有の問題であるGas代の高騰が悩ましい今日この頃です。
(参考) https://gitcoin.co/gas/history
Gas代が上がりすぎると、友達にちょっとやってみてよーと勧めることも難しくなるので、解決策を色々探している中
LoomNetworkのSDKがサイドチェーンに対応したと記事に上がっていたので、
試してみることにしました.

LoomNetwork

Zombie Battlegroundでキックスターターを実行したことで知られている
ブロックチェーン基盤を提供するためのプロジェクトだそうです.
EthereumのサイドチェーンであるDAppChainを開発しており、DApp1つ1つに、DappChainが1個ずつ与えられ専用のチェーンとして動きます.
アプリケーションはEthereumメインネットとLoomNetworkのサイドチェーンで実装されることが期待されており、
MetaMaskの準備や、ガス料金に悩まされず、アプリケーションを実行できることを目的としています.

DelegateCall

SideChainを使った事例として「DelegateCall」と言うQandAサイトをリリースしており、
https://blockchain.delegatecall.com/#/blocks
がアプリのトランザクションとなっています.

token

Loom network上のDappsにアクセスするためにトークンが必要で、
https://loomx.io/purchase/ から購入できるようです.

3Layer構造

Plasma Chainという独自チェーンの下に、ゲームのChainがぶら下がるイメージになっています.
zu1.png

PlasmaCash

https://medium.com/loom-network-japanese/plasma-cash%E3%82%A4%E3%83%8B%E3%82%B7%E3%83%A3%E3%83%AB%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9-7013fcbd4775
http://block-chain.jp/blockchain_study_salon_dojo/ethereum-plasma-cash/

(参考)
https://twitter.com/kelvinfichter/status/1039153673362923521

サンプル実行してみる_A.

Loomを起動させて、Truffleからcontractをdeployしてサービスから使うまでの一連の流れ

0.

一回一連の流れを試したく、ここを参考に進めてみました.
https://loomx.io/developers/

1.loomをインストールして起動

terminal
 # loomファイルの取得
 $ wget https://private.delegatecall.com/loom/osx/build-330/loom 
 # loomファイルの権限の変更
 $ chmod +x loom 
 # loom blockchian環境の初期化
 $ ./loom init 
 # loom blockchain起動
 $ ./loom run 

2.truffle-dappchain-example

(参考)
https://loomx.io/developers/docs/en/truffle-deploy.html

terminal

 # localにサンプルをclone
 $ git clone https://github.com/loomnetwork/truffle-dappchain-example

 # truffleをinstall
 $ npm install -g truffle

 # ディレクトリ移動
 $ cd truffle-dappchain-example

 # package入れる
 $ npm install

 # contractをデプロイ
 $ npm run deploy 

 # reactの環境を動かす
 $ npm run serve 

??

src/contracts/index.js
//何故か、そのままで、うまく動かず、微調整. 
//何かのversionが違うのかもだけど、一応動いたからok...。

this.client = new Client(
    'default',
    //'ws://127.0.0.1:46658/websocket',
    'ws://127.0.0.1:46657/websocket',
    'ws://127.0.0.1:46658/queryws',
)

//const networkId = await this._getCurrentNetwork()
//this.currentNetwork = SimpleStore.networks[networkId]
this.currentNetwork = SimpleStore.networks.default;

3.無事起動.

スクリーンショット 2018-09-18 18.47.31.png

4.Block-Explorerでtransactionを眺めてみる

Etherscanのようなエクスプローラーもついていますので試してみます.
https://loomx.io/developers/docs/en/block-explorer-tutorial.html

git clone https://github.com/loomnetwork/vue-block-explorer.git
yarn install
yarn run serve

スクリーンショット 2018-09-18 19.24.17.png

サンプル実行してみる_B

転送ゲートウェイを使ってmainnetからgamechainにtokenを流してみるサンプルを実行してみます

0.転送ゲートウェイとは何か

Loom DAppChainsとEthereumネットワーク間でトークンを転送できる仕組みのことのようです.
Mainnetにあるethereumやtokenをゲームに持ってきたり、またその逆もできます。

https://github.com/loomnetwork/transfer-gateway-example
に書かれている通りに実行

1.

git clone https://github.com/loomnetwork/transfer-gateway-example.git
./transfer_gateway setup

//StartするとLoomchainとGanacheとあとは、webアプリケーションが同時にbackground実行される
./transfer_gateway start

2.Metamaskに秘密鍵をロード(環境はlocalhost)

metamaskに、0xbb63b692f9d8f21f0b978b596dc2b8611899f053d68aec6c1c20d1df4f5b6ee2
を秘密鍵で、アカウントをロード
(バックグラウンドでGanacheが動いており、test用のethereumが入ったアカウント.)

3.遊んでみる

3-1

SendToDappChainを押すと、100tokenがDappCahinに移動します
スクリーンショット 2018-09-19 17.36.35.png

3-2

DappChainのtokenをwithdrawするとEthereumGatewayに送られ、
スクリーンショット 2018-09-19 17.36.59.png

3-3.

そこからさらにWithdrawするとEthereumAccountに戻リます.
スクリーンショット 2018-09-19 17.37.24.png

サンプルを実行してみる_C

PhaserSDKのdemoを実行してみます

1.phaser-sdk-demoのREADMEの通りそのままです.

(loomはA,Bで使ったものそのままだとゲームが動かなかったが何が違うんだっけ。。下記手順でloomを起動するとゲームが動いた。後で調べる)

wget https://storage.googleapis.com/private.delegatecall.com/loom/osx/build-163/loom
chmod +x loom

mkdir tmpgopath
export GOPATH=`pwd`/tmpgopath
./loom spin weave-blueprint
cd blueprint
export GOPATH=$GOPATH:`pwd`
make deps
make
cd build

../../loom init
cp ../genesis.example.json genesis.json

../../loom run

2.遊んでみる

スクリーンショット 2018-09-20 20.43.21.png

3.

j"???lt????
??YM
defaultJ??B??ۊ??V???v???
etMsg

score16
I[09-20|11:47:17.233] {Data:[8 1] ValidatorUpdates:[] Tags:[]}

2018/09/20 20:47:17 Event emitted: index: 10675, length: 329, msg: {"caller":{"chain_id":"default","local":"StDnQoyl24qAAvSDVoaN2na7+sQ="},"address":{"chain_id":"default","local":"4ojW7scVDWoi/eM/CqLYHgZZHE0="},"plugin_name":"blueprint:0.0.1","block_height":10675,"encoded_body":"eyJNZXRob2QiOiJTZXRNc2ciLCJLZXkiOiJzY29yZSIsIlZhbHVlIjoiMTYifQ==","original_request":"CgZTZXRNc2cSCwoFc2NvcmUSAjE2"}

サンプル実行してみる_D

0.ElasticSearchやRedisと連携した投稿型サイトのサンプル

ElasticSearchやRedisと連携した投稿型サイトのサンプル
https://github.com/loomnetwork/loom-sdk-documentation/blob/master/docs/simple-social-network-example.md

1.手順

書いてある通り。indexer.jsを8081起動させつつ、clinetを8080で起動。(loomも起動)
やっぱり下記2つのwebsocketのportは46658->46657に書き換えが必要だったのはなぜだろう??
/solidity-social-example/webclient/src/contract.js
/solidity-social-example/webclient/indexer.js

2.結果

スクリーンショット 2018-11-02 11.57.04.png

参考

Zombieチェーンとは?その特徴とDappチェーンとの違いについて解説
https://dappsmarket.net/loomnetwork/dappchain-zombiechain/

Loom Network Plasma Chain 化がもたらす革新
https://harukataro.com/loomnetworkplasmachain/

Plasmachainとは?Loomの新たなサイドチェーン構想の仕組みと特徴
https://dappsmarket.net/loomnetwork/plasmachain/

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5