Solidity
Solidity is a statically-typed curly-braces programming language designed for developing smart contracts that run on Ethereum.
https://gyazo.com/776e9bb21665f3b3a4c6cc3a2b6d02cb
ぼくは「書き味が Java に似ている」と感じる
class の代わりに contract があるような感じ、クラスではなくコントラクトを作って組み合わせていく
クラスの継承のような雰囲気で、コントラクトを拡張する機構がある
uint や string と並んで address という型があるのはブロックチェーンの世界という感じでおもしろい 計算量やガス代を常に意識しながらコードを書くことになるのがおもしろい
関数の modifier の仕組みは、Rails の before_action みたいでおもしろい
引数もやりとりできて便利
関数の可視性修飾詞
private
internal は Ruby でいう protected みたいな位置づけ
external コントラクトの外からだけ呼び出せる
public どこからでも呼び出せる
関数の状態修飾子
pure
view
関数の payable 修飾子
ETH を受け取れるようにするやつ
ブロックチェーンネットワーク上にデプロイされた他のコントラクトを参照できる
event って概念で「こういうことが起きたよ」を Publish/Subscribe できる
Ethereum Natural Language Specification Format
Java でいう Javadoc みたいなやつ