Tezos ブロックチェーン のためのスマートコントラクト記述言語 SCaml、チュートリアルの第1回目です。(この内容は 2020-03-21 にやった SCaml ハンズオンの資料を手直ししたものです。)
今回は演習の準備です。
- コンセプトの紹介(英語)
- リリースのお知らせ(英語)
- プロジェクトページ
- レポジトリ
- 第0回: コンセプトの説明
- 第1回: 準備
- 第2回: 概観
- 第3回: ウォレット操作
- 第4回: スマートコントラクトのデータ型
- 第5回: はじめての SCaml コントラクト
- 第6回: もう少し複雑なコントラクト。パラメータとストレージ
- 第7回: 投票コントラクトを書いてみる
必要スキル
- 基本的な Unix (Linux) 操作
- 基本的な
git
- 基本的な OCaml プログラミング
SCaml は OCaml のサブセットなので、プログラミング言語としての SCaml は OCaml の入門書(例えばOCaml爆速入門)を参照してください。SCaml は OCaml の基礎的な機能しかつかいません。次の事ができる人であれば OCaml の復習をする必要はないでしょう:
- ヴァリアントやレコード型の使い方
- リストの使い方、例えば
List.fold_left
- .mli ファイルの読み方
準備
- Webブラウザ
- お好きなエディタ (OCaml のハイライター、インデンターが入っているとなお吉)
sh
git
- Docker
- ハードディスク空き容量。多くても 1GB くらい
準備は大事です。
Webブラウザ
標準的なブラウザで結構です。
お好きなエディタ
特にエディタを限定しませんので使い慣れたものを使ってください。
SCaml は OCaml と互換性がある文法なので、 OCaml のシンタックスハイライターやインデンターがあると捗ります。必須ではないので各自可能ならばインストールしてみてください。
sh
Unixシェルを使います。OS として Linux か Mac OS X をお勧めします。Windows は WSL で使えるかもしれませんが、保証しません。未確認です。
git
git
コマンドで使用するスクリプトをダウンロードしますので git
をインストールしてください。
Docker
ツールは Docker イメージとして配布しますので、 Docker が必須です。
- Linux と Mac OS X で動作確認しています。
- Windows は未確認です。WSL から Docker を入れて動くかもしれませんし動かないかもしれません。VMWare や VirtualPC から Ubuntu を入れ、その中で作業すれば動きます。
ターミナルから以下のコマンドを実行して Docker の動作を確認してください:
$ docker info
もし permission denied
などと言われた場合は sudo
なしで docker
コマンドが動くように設定してください。(これを敢えて行わない場合は、実習で使うコマンドで Docker を呼び出すものは全て permission denied で失敗することになり、sudo
をコマンドの前につけなくてはいけなくなります。)
ターミナルでコマンドを実行する、がわからない方はこの実習では対象としていません。ごめんなさい。
使用するスクリプト類
https://gitlab.com/dailambda/docker-tezos-hands-on/ にあります。 git
でまとめて落としてください。 GitHub ではありません。 GitLab です。ターミナルで次のコマンドを実行してください:
$ git clone https://gitlab.com/dailambda/docker-tezos-hands-on
繰り返しますが GitHub ではない。
実習は docker-tezos-hands-on
ディレクトリで行います:
$ cd docker-tezos-hands-on
$ ls
README-jp.md check scamlc tezos-client
動作確認と設定
./check
スクリプトを使ってください。
$ ./check
(以下は出力例です)
Checking network connectivity inside Docker... Ok
Finding an accessible public Tezos RPC server...
Checking https://ithacanet.smartpy.io: Ok
Using --endpoint https://ithacanet.smartpy.io
Updated the config of ./tezos-client:
{ "base_dir": "/root/.tezos-client",
"endpoint": "https://ithacanet.smartpy.io", "web_port": 8080,
"confirmations": 0 }
Ok
Docker イメージをダウンロードしたうえで、Docker 内部から外部ネットワークにアクセスできるかチェックします。
一番初めの Checking network connectivity inside Docker… で Error
になった場合は:
- コンピュータのネットワーク接続
- Docker のネットワーク設定
を確認修正してください。これは Docker 内部で curl http://www.w3.org
を行っているだけです。
これが Ok
だったにも関わらず、最終的に Error: None of the pubic Tezos RPC servers was accessible. と言われる場合は:
check
が古すぎて、新しいテストネットに対応していない。git pull
してcheck
を更新してみてください。git pull
しても失敗する場合、Tezos テストネットのパブリックノードが今現在全て落ちていると思われるます。しばらくたってまた試してみてください
準備完了
おめでとうございます。check
が最終的に Ok
と返すなら、準備はほぼ完了です。