8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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を実行してみます
https://github.com/loomnetwork/phaser-sdk-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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?