Slide 1

Slide 1 text

javaScriptでブロックチェーンを学ぶ!名古屋編

Slide 2

Slide 2 text

IOSTでスマートコントラクトを作成する

Slide 3

Slide 3 text

iGasͱIRam iGas: トランザクションの時に発⽣する⼿数料 iRam: ブロックチェーンに書き込む際に必要な⼿数料 購⼊することで取得可能。 余った分のiRamは売ったり送ったりすることが可能 IOSTをdepositすることで取得することが可能

Slide 4

Slide 4 text

テストネットのアカウントを作成する アカウントの作成 https://testnet.explorer.iost.io/applyIOST Generate KeyPair for meをクリックして Account PubKeyを発⾏する

Slide 5

Slide 5 text

アカウントの作成 完了するとPrivateKeyが表⽰される Private Keyをコピーしてどこかにメモしておく *紛失すると2度と復元することはできません

Slide 6

Slide 6 text

https://chrome.google.com/webstore/detail/iwallet/kncchdigobghenbbaddojjnnaogfppfj iWalletのインストール chromeに追加する

Slide 7

Slide 7 text

iWalletのアカウント作成 chromeの右上に アイコンが表⽰されているのでクリックして 起動する passwordの⼊⼒し、 Import Accountをクリック

Slide 8

Slide 8 text

アカウント追加 先ほど作成した アカウントのPrivateKeyを貼り付け Submitをクリックする

Slide 9

Slide 9 text

アカウント確認 アカウントが正常にimportできているか確認する これでアカウント作成は完了

Slide 10

Slide 10 text

IDEについて

Slide 11

Slide 11 text

IDE https://chainide.com/ 今回はIDEを使ってコントラクトの作成、実⾏を⾏う ChainIDEを使⽤

Slide 12

Slide 12 text

IDE デフォルトが中国語. 設定から英語に変換可能 もともと3つの異なるコントラクトが⽤意されているので、 簡単に試すことが可能 iwalletのアカウントと連携しているため、簡単にデプロイ、実⾏が可能

Slide 13

Slide 13 text

IDE β版のため不具合が多いので気をつけることが多い ・ウォレットを起動した状態で、IDEを開く, 開いたらアカウントを変更しない ・更新すると書き込んだコードが消えることがある ・compileし直しても更新されない ・ページ更新するとデプロイしたコードが消える

Slide 14

Slide 14 text

iRamの準備1 アカウントインポート後,iRamを購⼊していく コントラクトのデプロイ時、 ブロックチェーンにデータを保存するため必要 Purchase Amountに購⼊する⾦額を指定する

Slide 15

Slide 15 text

iRamの準備2 Submitクリックするとこの画⾯になる SuccessfullyなればOK

Slide 16

Slide 16 text

今回はIRC20tokenを作成する

Slide 17

Slide 17 text

トークンについて IOSTではFungible Tokenを作成するための規格が⽤意されている https://developers.iost.io/docs/en/3-smart-contract/Token.html 今回は最低限の機能のみで作成 create, issue, transfer, balanceOf, supply, totalSupply のみ使⽤ Iost.tokenのインターフェース Iost.tokenという組み込みシステムコントラクトを使⽤

Slide 18

Slide 18 text

実際にトークンを作成する

Slide 19

Slide 19 text

New file 左上のプラスマークをクリックしてtokenというファイルを作成 新規ファイルの作成

Slide 20

Slide 20 text

Contract1 name: トークンのシンボル fullName: トークンの名前 decimal: 少数点以下の桁数 totalSupply: 最⼤発⾏枚数 admin: このコントラクトのオーナー(先ほど作ったアカウント名) お好きな設定に変更する (a-z, 0-9, _)のみ

Slide 21

Slide 21 text

Contract2 Class, init関数の作成 1. Tokenというクラスを作成する 初期デプロイ時に実⾏される関数 それ以降は実⾏されない 2. initという関数を作成する

Slide 22

Slide 22 text

Contract3 トークンの作成 IOST Blockchain API https://developers.iost.io/docs/en/3-smart-contract/IOST-Blockchain-API.html init内部にデプロイ時に 実⾏される関数を書いていく IRC20にあったcreateを使って トークンを作成する Blockchain.callWithAuth(“token.iost”, “create”, [args]) create(tokenSymbol, issuer, totalSupply, configJson) // string, string, number, json blockchainは元々⽤意されているAPI 詳しくは⬇ ೝূΛ൐͏Ҿ਺෇͖ͰίϯτϥΫτΛݺͼग़͠

Slide 23

Slide 23 text

Contract4 トークンの発⾏する関数作成 1. ⼆つの内部関数を作成する _amount:扱うトークンの量を計算する関数 _checkToken: トークンのシンボルがあっているか確認する関数

Slide 24

Slide 24 text

Contract5 _checkToken, _amountを使⽤ トークンの発⾏する関数作成 2. blockchain.callWithAuthを使ってissueを実⾏ issue(tokenSymbol, to, amountStr) //string, string, string https://developers.iost.io/docs/en/3-smart-contract/IOST-Blockchain-API.html IOST Blockchain API: https://developers.iost.io/docs/en/3-smart-contract/Token.html IRC20:

Slide 25

Slide 25 text

Contract6 _checkToken, _amount 送⾦を⾏う為の関数作成 blockchain.callWithAuthを使ってtransferを実⾏ transfer(tokenSymbol, from, to, amountStr, memo) //string, string, string, string, string https://developers.iost.io/docs/en/3-smart-contract/IOST-Blockchain-API.html IOST Blockchain API: https://developers.iost.io/docs/en/3-smart-contract/Token.html IRC20:

Slide 26

Slide 26 text

Contract7 _call関数を作成

Slide 27

Slide 27 text

Contract8 _call, _checkTokenを使⽤ 残⾼確認する関数を作成 IRC20 balanceOf balanceOf(tokenSymbol, from) //string, string https://developers.iost.io/docs/en/3-smart-contract/IOST-Blockchain-API.html IOST Blockchain API: https://developers.iost.io/docs/en/3-smart-contract/Token.html IRC20:

Slide 28

Slide 28 text

Contract9 _call, _checkTokenを使⽤ 現在の発⾏量を確認する関数を作成 IRC20 supply supply(tokenSymbol) //string https://developers.iost.io/docs/en/3-smart-contract/IOST-Blockchain-API.html IOST Blockchain API: https://developers.iost.io/docs/en/3-smart-contract/Token.html IRC20:

Slide 29

Slide 29 text

Contract10 https://developers.iost.io/docs/en/3-smart-contract/IOST-Blockchain-API.html IOST Blockchain API: _call, _checkTokenを使⽤ 最⼤発⾏数を確認する関数の作成 IRC20 totalSupply totalSupply(tokenSymbol) //string https://developers.iost.io/docs/en/3-smart-contract/Token.html IRC20:

Slide 30

Slide 30 text

Contract11 Tokenをエクスポート これでコントラクト完成

Slide 31

Slide 31 text

Deploy1 token.jsをコンパイルしてABIを作成する コンパイルが成功するとfunctionが表⽰される

Slide 32

Slide 32 text

Deploy2 token.jsとtoken.js.abiを選択して デプロイする Gas RatioとGas Limitはこのままで確定をクリック

Slide 33

Slide 33 text

Deploy3 デプロイが成功すると 失敗する場合はnameが被っている可能性がほとんど 今回の設定

Slide 34

Slide 34 text

Deploy4 成功するとフォームが出現する 今回はこれを使って実際にコントラクトを動かしていく

Slide 35

Slide 35 text

function1 現在の残⾼を確認する balanceOfを選択 実⾏をクリック 引数1: トークンのシンボル(name) 引数2: 確認するアカウント 現在0であることを確認

Slide 36

Slide 36 text

function2 トークンを発⾏する Issueを選択 実⾏をクリック 引数1: トークンのシンボル(name) 引数2: 付与するアカウント succeededならOK 引数3: 発⾏枚数

Slide 37

Slide 37 text

function3 再度残⾼確認 発⾏枚数が追加されていればOK

Slide 38

Slide 38 text

iwallet1 Add Tokenをクリック トークン名を⼊⼒してAddをクリック iwalletから残⾼確認や送⾦可能 iwalletにトークンをインポート

Slide 39

Slide 39 text

Happy Hacking!!