fc2ブログ

Solidityの仕様のまとめ(データ型、単位換算、グローバル変数)

どうも、ぺろりんです。


今日も今日とて、ちょっとずつですが「はじめてのブロックチェーン・アプリケーション Ethereumによるスマートコントラクト開発入門 (DEV Engineer's Books)」を読み進めていきます。

今回はCHAPTER3-4で、Solidityのざっくりとした仕様説明みたいな章なので、ここでの知識をメモとしてまとめておきます。


Solidityで使えるデータ型

Solidityでは以下のデータ型が使えます。
小数点を扱えるデータ型、日付型もないというのは注意しないといけないですね。

カッコの中には「値型」か「参照型」[注1]の分類を記載しています。


ブーリアン(bool:値型)

・true(真)かfalse(偽)の値をとる。
・使える演算子は「!(not)」、「&&(and)」、「||(or)」、「==(equal)」、「!=(not equal)」。
・andとorは短絡評価[注2]


整数(int、uint:値型)

・符号付の「int」、符号なしの「uint」がある。
・8~256の、ビット数が8の倍数長の型がある(例:int8、uint256)。数字を省略すると256になる。
・使える演算子は比較演算子(<=、<、==、!=、>=、>)、ビット演算子(&:and、|:or、^:xor、~:not)、算術演算子(+、-、*、/、剰余:%、累乗:**、左シフト:<<、右シフト:>>)。


アドレス(address:値型)

・20倍とのアドレスを格納する。
・初期値は0x000…00(16進数で20倍となので、0が40個)。
・使える演算子は比較演算子(<=、<、==、!=、>=、>)。
・使えるメソッドは所有ETHの確認:<アドレス値>.balance、ETHの送金(失敗時はなかったことになる):<address>.transfer(uint256 <送金量>)、ETHの送金(失敗時はfalseを返す):<address>.send(uint256 <送金量>)returns(bool)、gas指定で送金(失敗時はfalseを返す):<address>.call.value(uint256 <送金量>).gas(uint256 <ガスの値>)returns(bool)。


配列(Arrays:参照型)

・固定長:<配列名>[<長さ>]、可変長:<配列名>[] がある。
・配列の要素は0番目からスタート。
・使えるメソッドは配列の長さ確認:<配列名>.length、配列の最後に要素を追加:<配列名>.push(<追加する要素の値>)。


文字列(string:参照型)

・文字列の比較はできない。keccak256()という関数でハッシュ値に変換することで比較できる。
・最大長は256bit?

(参考)
Solidity言語メモ(Qitta)
【Solidity基礎】型の種類(ブロックチェーンエンジニアとして生きる)
Ethereum Solidityの型(block-chain.jp)


構造体(Structs:参照型)

・構造体[注3]は以下の書式で宣言。

struct <構造体名>{
<データ型> <変数名>;
<データ型> <変数名>;

}

・直接構造体自体の値は返せないので、<対象構造体の配列名>[<要素番号>].<構造体中の変数名>の形で値を取得する。


マッピング(mapping:参照型)

・連想配列。値を呼び出すキーとなる名前を付ける。
・mapping(<キーのデータ型>=><呼び出したい値のデータ型>)の形式で宣言する。


単位換算

仮想通貨Etherの単位

Ethereumの単位はwei、szabo、finny、etherとある。
・以下の書式で単位換算できる。

<換算後の量> = <換算したい元の量> / 1 <単位>



時間の単位

・使える単位は、seconds(秒)、minutes(分)、hours(時)、days(日)、weeks(週)、years(年:= 365days)
・以下の書式で単位換算できる。

<換算後の量> = <換算したい元の量> / 1 <単位>



グローバル変数

ここはまだイマイチ使い方がわからないので写経します。

・block.blockhash(unit blockNumber):指定ブロックのハッシュを返す。
・block.coinbase:カレントブロックのマイナーのアドレスを返す。
・block.number:カレントブロックの番号を返す。
・block.timestamp:カレントブロックのタイムスタンプを返す。
・msg.sender:送信者のアドレスを返す。
・msg.value:送金額を返す。
・now:block.timestampのエイリアス。


まとめ

今回はSolidityの仕様に関しての知識が書いているパートだったので、動きを見るよりも、勉強ノート的な感じでメモとしてまとめておきました。
こうやってデータで残しておくと、あとで検索できて便利かなと。。


[注1] 値型、参照型…値型は値そのものが入るが、参照型は値のアドレスが入る。
[注2] 短絡評価…「A || B」の真理値がAのみで決まるときにBは考慮されない、というような評価。たとえば、A=trueの場合、Bがtrueでもfalseでも(A || B)はtrueなので、Bは評価されない。
[注3] 構造体…複数の型のデータから構成されるデータ構造。

テーマ : プログラミング
ジャンル : コンピュータ

Keyword : ブロックチェーンBrowser-SoliditySolidityEthereumイーサリアム

コメントの投稿

Secret

プロフィール

ぺろりん

Author:ぺろりん
まだ始まってもいない暗号資産(仮想通貨)、今後が楽しみです。
基本的な技術をちゃんと知りたいなぁと思いつつ、まったりお勉強していこうかと思います。

twitter:ぺろりん@ぶろっくちぇーん

カテゴリ
最新記事
最新コメント
月別アーカイブ
カレンダー
08 | 2023/09 | 10
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
検索フォーム
RSSリンクの表示
メールフォーム

名前:
メール:
件名:
本文:

Bitcoin 取引情報
Ethereum 取引情報