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