versions eosio 1.7.0. eosio.cdt 1.6.1 eosio.contracts 1.5.2
どうも!こんにちは! dappsの開発プラットフォームであるdappStartのエンジニアの管原(https://twitter.com/Niggaz613)です。
今回から「ブロックチェーンで何かプロダクトを作りたい!」とか「EOS興味あるけどどうやって開発進めればいいんだ!」っていうwebエンジニアの方々へ向けてスマートコントラクトのチュートリアルを投稿していきたいと思います!
今回は第一回ということで、まず一番簡単な「Hello World」のスマートコントラクトを書いていきましょう!
EOSのスマートコントラクトは現状、C++で記述するのですがC++の経験がないプログラマーの方でもわかるように説明していきたいと思います!
なお、スタートする以前に環境構築とコンパイルツールのインストールをお願いします!
環境構築↓
コンパイルツール↓
https://developers.eos.io/eosio-home/docs/installing-the-contract-development-toolkit
それではチュートリアルに移ります。まず最初に完成形から確認しちゃいましょう!
#include <eosio/eosio.hpp>
using namespace eosio;
class hello : public contract {
public:
using contract::contract;
[[eosio::action]]
void hi( name user ) {
print( "Hello, ", user);
}
};
はい!たったの10行です!大きく3つに分解しましょう。
①
#include <eosio/eosio.hpp> ②
using namespace eosio; ③
class hello : public contract {
public:
using contract::contract;
[[eosio::action]]
void hi( name user ) {
print( "Hello, ", user);
}
};
①[include文]外部ファイルやライブラリの読み込みに使用されます。ここではeosio.hppというeosioを使用する上で必要なヘッダファイルを読み込んでいます。
「ヘッダファイルって何?」と思った方はこちらをどうぞ!https://wa3.i-3-i.info/word12026.html
② [using ディレクティブ] using namespase 名前空間;という形で使用します。名前空間の位置で記述した名前空間名を今後省略できます。詳しくはこちら→https://marycore.jp/prog/cpp/using-directive/
③こちらがコントラクトの本体といってもいいでしょう。
class hello : public contract {
public:
using contract::contract;
[[eosio::action]]
void hi( name user ) {
print( "Hello, ", user);
}
};
1行目 class hello : public contract
contractクラスを継承したhelloコントラクトの宣言をしています。
2行目 public:
パブリックアクセス修飾子です。これ以下に記載されるfunctionやデータを外部から呼び出し可能と明示しています。
3行目 using contract::contract;
using宣言です!簡潔に書くために記載しています。
4行目 [[eosio::action]]
アクションはコントラクトの具体的な振る舞いを定義できます。そしてそれをコンパイラに対して明示するためにこの文を記載する必要があります。
5〜7行目
void hi( name user ) {
print( "Hello, ", user);
}
hi→アクション名
name→データタイプ. nameタイプの引数userを定義しています。
以上です!
エラーが出たらまずバージョンを確認しましょう!
バージョンによって若干書き方が異なります。
それから本番環境で使用する場合はセキュリティなどに配慮して多少書き加えが必要な可能性があります。
それではまた次回!
質問、間違い等あれば気軽にコメントしてください!
telegramグループにご参加いただけば質問にお答えできるかもです!
記事に関しては今後どしどし更新しtwitterアカウントでお知らせして行きます!
https://twitter.com/dappstart1
_________________________________
私たちは下記のサービスを運営しております。
今後ユーザーの方々のご意見を元にコンテンツやデプロイツールなどの開発を行っていくので気軽にお声がけください!
dapps開発やdapps以外の開発案件のご相談も下記のアドレスへ気軽にどうぞ!
dappstart@gmail.com
サービス紹介
■Dapps開発者向けプラットフォーム「dappStart」
https://dapp-start.herokuapp.com/
<目的>ブロックチェーン開発者の開発・学習コストを下げること
<サービス機能>
①ブロックチェーン開発者向けの情報提供
②GUIやドキュメントを用いた無料Deployツールの提供
・deployツール紹介動画
https://www.youtube.com/watch?v=PwwMgZFvBuM
③開発者同士のコミュニティ
_________________________________