VIPSブログ

記事を書いて5ch発の暗号資産(仮想通貨)「VIPSTARCOIN」を投げ銭してもらう誰でも参加型のブログです

スマートコントラクト入門②

前回に引き続きスマートコントラクトの解説です。

前回↓

vips-blog.hatenablog.com

 

ソースコードの解説

gist06f95217977eeeae42522f97014fb1c0

 

solidityはjavascriptライクな言語らしいです(JS触ったことないので分からない)。

 

インデントはスペース4つです。

(Remixなら自動補完のはず)

また、変数定義などの処理の後ろには「;」が必要です。

 

1行目から見ていきます。

これはsolidityのバージョン指定です。

範囲指定もできます(「>=0.4.22 <0.6.0」とか)。

 

 2行目でcontractを作成しています。

contractが1つのプログラムの単位だと考えて大丈夫だと思います。

(2行目から13行目までが1つのcontract)

 

3行目で変数を宣言しています。

変数は「データ型 変数名;」で宣言します。

(保存タイプを指定する時は「データ型 保存タイプ 変数名;」)

同時に値を代入する場合は「データ型 変数名 = 値;」になります。

代入しない場合は初期値になります。

初期値の一覧の参考:

What are the initial/zero values for different data types in Solidity? - Ethereum Stack Exchange

変数のデータの保存方法についてはいくつかのタイプがあります。

参考:

Introduction to Smart Contracts — Solidity 0.5.4 ドキュメント

  • storage - ブロックチェーンにデータを書き込み/読み込みする(コスト高)
  • memory - メモリ上でデータを扱う(コスト中)
  • その他(使うことは少ない)

関数の外で宣言しているので自動的にstorageになります。

storageだとデータが永続的に保存され(ブロックチェーンに書き込まれ)ます。

関数のタイプ一覧:

Types — Solidity 0.5.4 ドキュメント

 

4から6、7から9、10から12行目で関数を作成しています。

記法は「function(引数の定義) 修飾子 returns(返すデータの定義) {処理の中身}」です。

修飾子の一覧(わかりやすく纏まっています)

Solidityのfunction修飾子がよくわからなくなるのでメモ - Qiita

 

まずは関数「pureHelloWorld」を見ていきます。

引数はありません。修飾子は「public」と「pure」です。

publicなのでどこからでも呼び出せる関数です。

また、pureなので変数を一切読み書きできません。

returnsは「string memory」です。これは5行目の「return "hello world"」が対応しています。

 

次に関数「readStrData」です。

引数はありません。修飾子は「external」と「view」です。

externalなので外部から呼び出し可能、viewなので変数の読み込みが可能です。

returnsは「string memory」です。これは8行目の「return data」が対応しています。

この「data」は3行目で宣言した変数です。

 

最後に関数「sendStrData」です。

引数は「string memory sendData」なので文字列ということになります。「sendData」という名前で関数内で参照できます。

修飾子はpublicのみなのでどこからでも呼び出せますし、「view」や「pure」等がついていないので変数の読み書きができます。

returnsはないので返されるデータはありません。

11行目で3行目で宣言した「data」に引数のデータである「sendData」を代入しています。この操作では「data」がstorageなので新しいデータがブロックチェーンで永続的に保存されます。

最後に

今更ですが、自分も独学(ネット情報)でsolidityを学んでいるので間違っているかもしれません。

誤り等あればコメント欄でお願いします。

VIPSウォレットへのデプロイは次回に変更になります。

VIPSでスマコン使うサービスができてほしいなぁ...(その前にVIPSが終わりそう)

前 ↓

vips-blog.hatenablog.com

 

次→まだ

 

ブログランキング

 ブログランキング・にほんブログ村へ

投げ銭

VIPSアドレス:VGeWZ76u5V1byPtLHyNjDCXRSu48NxmH8c

ヌクモリンク:このブロガーに1000 VIPS を送る!

(ヌクモリンクの導入はここからどうぞ)

Discord

[VIPSTARCOIN]

[VIPSフリマ・オークション](当ブログの発祥地)