Solidity

Solidity is a statically-typed curly-braces programming language designed for developing smart contracts that run on Ethereum. https://soliditylang.org/

プログラミング言語スマートコントラクト Programming LanguageSmart ContractEthereumEVM

Gyazo画像

  • ぼくは「書き味が Java に似ている」と感じる
    • class の代わりに contract があるような感じ、クラスではなくコントラクトを作って組み合わせていく
    • クラスの継承のような雰囲気で、コントラクトを拡張する機構がある
  • uintstring と並んで address という型があるのはブロックチェーンの世界という感じでおもしろい
  • 計算量やガス代を常に意識しながらコードを書くことになるのがおもしろい
  • 関数の modifier の仕組みは、Rails の before_action みたいでおもしろい
    • 引数もやりとりできて便利
  • 関数の可視性修飾詞
    • private
    • internal は Ruby でいう protected みたいな位置づけ
    • external コントラクトの外からだけ呼び出せる
    • public どこからでも呼び出せる
  • 関数の状態修飾子
    • pure
    • view
  • 関数の payable 修飾子
    • ETH を受け取れるようにするやつ
  • ブロックチェーンネットワーク上にデプロイされた他のコントラクトを参照できる
  • event って概念で「こういうことが起きたよ」を Publish/Subscribe できる
  • NatSpec