Slide 1

Slide 1 text

2019/02/20 Blockchain Kyoto #12 「Javascriptで簡単スマートコントラクト」

Slide 2

Slide 2 text

自己紹介 ARATA(@newsnow) もとはビジネスコンサルタント 超上流から川下り中 現在の本業は「父親」

Slide 3

Slide 3 text

ブロックチェーンは価値移転だけでなく、価値の再定義 や新しい価値観の創造を可能にしてくれる… 背景にあるイデオロギーや時流を含めて捉えないと、既 存技術との比較になってしまいがち。 より多くの人に関心を持ってもらうためには、まずはとっ つきやすいことが大切!

Slide 4

Slide 4 text

ということで、応援したいプロジェクト Lisk(Sidechain Development Kit) Cosmos(Interoperability) IOST(Better Blockchain)

Slide 5

Slide 5 text

本日のテーマは、 IOST 2月25日 メインネットリリース!

Slide 6

Slide 6 text

あらかじめ… 通貨の価格については関知しない 仕様変更は大いにありえる

Slide 7

Slide 7 text

IOST(Internet Of Services Token)とは 高セキュリティ 高い分散性(...10,000node) 超高TPS(8000TPS→...100,000TPS) =>「トリレンマ問題」の一つの解を目指すプロジェクト

Slide 8

Slide 8 text

トリレンマ問題 ETHはスケーラビリティを犠牲 EOSは分散性を犠牲 IOSTはETHよりも400倍以上速く、EOSの10倍の分散化

Slide 9

Slide 9 text

IOSTは少し特殊なパブリックブロックチェーンプロジェク トです。IOSTの最も大きな特徴は、EOSよりもさらに「非 中央集権化」を実現し、イーサリアムよりさらにスケーラブ ルだという点です。 - Terrence Wang(CTO)

Slide 10

Slide 10 text

概要・特徴 Javascriptでスマートコントラクトが書ける コントラクトは後からアップデート・削除可能(※) コンセンサスは「Proof of Believability」 貢献方法(ノード運営・パートナー・開発・バウンティ) 投票制度があり、投票者にも報酬あり アドレスではなくアカウントで管理 送金手数料は無料(IOSTではなくiGASを消費) シャーディングによるスケール(予定) (※)コントラクト自体を削除することはできない

Slide 11

Slide 11 text

+α ICOせずに資金確保 PBFTを限りなくパブリックに 発行枚数は多い EthreumよりもEOSに対抗心(検閲耐性重視) 本部開発者との連絡はスムーズ CTOのテリーはすげーイイ奴

Slide 12

Slide 12 text

とりあえずデモ (※開発環境は、go getから自分でbuildする方法とDockerを利用する方法があります が、特に理由がない場合は、Docker利用が推奨されています。)

Slide 13

Slide 13 text

開発手順 1. コントラクトコードを作成(jsファイル) 2. コントラクトのコンパイル(abiファイル生成) 3. abiファイルの修正(paramsチェック) 4. コントラクトをブロードキャスト 5. コントラクト実行 6. レシート確認 [参考]IOST スマートコントラクトの基本的な書き方

Slide 14

Slide 14 text

javascript class HelloWorld { init() { storage.put("user", "bckyoto") } sayHello() { let user = storage.get("user") return "hello, "+ user } change(newone) { storage.put("user", newone) } } module.exports = HelloWorld;

Slide 15

Slide 15 text

abi { "lang": "javascript", "version": "1.0.0", "abi": [ { "name": "sayHello", "args": [], "amountLimit": [] }, { "name": "change", "args": [ "string" ], "amountLimit": [] } ] }

Slide 16

Slide 16 text

command // abiファイル作成 iwallet compile helloworld.js // コントラクト発行 iwallet publish helloworld.js helloworld.js.abi --account admin // コントラクト実行 iwallet call "sayHello" '[]' --account admin // コントラクト実行 iwallet call "change" '["newname"]' --account admin // レシート確認 iwallet receipt // アップデート iwallet publish -u helloworld.js helloworld.js.abi --account admin

Slide 17

Slide 17 text

スマートコントラクトの操作方法 RPC gRPC iwallet API json curl SDK

Slide 18

Slide 18 text

iwallet

Slide 19

Slide 19 text

デモ (SDK / Token20 / Token721 / 画像バイナリ)

Slide 20

Slide 20 text

Token20 create(tokenSymbol, issuer, totalSupply, configJson); issue(tokenSymbol, to, amountStr); transfer(tokenSymbol, from, to, amountStr, memo); transferFreeze(tokenSymbol, from, to, amountStr, unfreezeTime, memo); destroy(tokenSymbol, from, amountStr); balanceOf(tokenSymbol, from); supply(tokenSymbol); totalSupply(tokenSymbol);

Slide 21

Slide 21 text

Token721 create(tokenSymbol, issuer, totalSupply); issue(tokenSymbol, to, metaData); transfer(tokenSymbol, from, to, tokenID); balanceOf(tokenSymbol, from); ownerOf (tokenSymbol, tokenID); tokenOfOwnerByIndex(tokenSymbol, owner, index); tokenMetadata(tokenSymbol, tokenID);

Slide 22

Slide 22 text

transfer CLICK ME アプリからSDKを介して送金することもできます

Slide 23

Slide 23 text

ユースケース [参考]Flagship DApp パートナープログラム

Slide 24

Slide 24 text

◆慈善事業(チャリティー) オペレーションと資金使途、寄付、クラウドファンディング、エンド・トゥー・エンド・トラッキングの透明 性 ◆アート 偽造と真正性、来歴と所有権、記録保持、入札プロセスとアーティストへの支払い ◆ソフトウェア開発 オープンソース開発、クラウドファンディング、レベニューシェアと著作権(IP) ◆教育 学歴と証明書、アプリケーション手続き、リモート学習、費用と決済 ◆フィンテック&インシュアテック(保険) 国際送金、ファイナンシング&ローン、信用格付けと記録保持

Slide 25

Slide 25 text

◆ゲーム コレクション、ゲーム内アセット、ゲーム内決済、クラウド・ファンディングと開発の透明性 ◆サプライチェーン 認証と偽造、来歴と調達、記録保持、企業間契約、エンド・トゥー・エンドの可視性と追跡 ◆メディア&エンタメ マイクロペイメント、アーティストへのロイヤルティー、P2P販売、デジタル所有権と公平な決済メカ ニズム ◆マーケットプレイス&イーコマース 決済処理とセキュリティ、注文の履行と追跡、決済の清算と確定、信憑性と所有権

Slide 26

Slide 26 text

難易度↑

Slide 27

Slide 27 text

アーキテクチャとモデル 1. IOST Economic Model 2. PoB Consensus 3. Smart Contract System 4. IOST Virtual Machine (IVM) 5. High Performance Storage Layer 6. Decentralized Network layer

Slide 28

Slide 28 text

1. IOST Economic Model Contribution Economic Model IOST / iGAS / iRAM HFFS(Highest-Fee-First-Serve) No Transaction Fee [参考]iGAS/iRAM

Slide 29

Slide 29 text

SystemModel Advantages ETH 所有権 1. アカウントを無料で作成 2. ネットワーク使用と負担に対する不公平感は少ない 3. ガス料金は明確 EOS レンタル 1. ネットワーク全体のトークン数・利用可能リソース数? 2. システム利用時はトークンをデポジット(消費しない)。大規模アプリケーショ ンもサポート可。 3. ユーザはRAMを解放する動機があるので、データの拡張問題を低減 IOST 貢献 1. アカウントの作成は低コストで簡単 2. 貢献すればするほとシステムリソースを多く利用可能 3. トークンをデポジットしてGASを取得(トークンは消費しない) 4. ガス価格設定により大規模デポジットによるトークン希薄化を回避 5. システムリソースをCPUとストレージに分けてリソース低利用率を回避

Slide 30

Slide 30 text

Resources abstraction

Slide 31

Slide 31 text

Transaction Scheduling Model

Slide 32

Slide 32 text

2. PoB Consensus Servi Committee Frequent Rotation [参考]Introducing PoB

Slide 33

Slide 33 text

Servi

Slide 34

Slide 34 text

3. Smart Contract System Plug-and-play Multi-language Support Domain Name System Account Permission System(Flexible Access Control) Result of Consensus Receipt Event Topics Subscription [参考]Smart Contract Quick Start

Slide 35

Slide 35 text

4. IOST Virtual Machine (IVM) Chrome V8VM Ensuring Security [参考]VM

Slide 36

Slide 36 text

Virtual Machine

Slide 37

Slide 37 text

Sandbox

Slide 38

Slide 38 text

5. High Performance Storage Layer LevelDB Multiversion Concurrency Control WAL [参考]Database

Slide 39

Slide 39 text

StateDB

Slide 40

Slide 40 text

6. Decentralized Network layer Protocol Buffers Snappy Kademlia Bloom Filter UPnP [参考]Network layer

Slide 41

Slide 41 text

まとめ 我々には他のブロックチェーンプラッ トフォームと違うことをしているという 自負があります - Terrence Wang(CTO)

Slide 42

Slide 42 text

参考URL WHITE PAPER Document BUILDING A BETTER BLOCKCHAIN TACKLING THE SCALABILITY TRILEMMA Everest v2.0 極度妄想さんのレビュー Meet IOST