Solidity の基礎~Ethereumの理解を深める

DAppの開発などに使われる非中央集権ネットワークのイーサリアムの概要をメモしておきます。

【環境構築】スマートコントラクト開発

イーサリアムの基礎

イーサリアムは分散型アプリであるDApps(Decentralized Applications)やスマート・コントラクトを構築するためのプラットフォームの名称です。

イーサリアムを利用するために必要な内部流通通貨として「Ether(イーサ)」が用いられています。

Etherの単位

イーサリアムの単位はETH(イーサ〜ether)。

最小単位は「wei(ウェイ)」。

1ether=100京wei。

100京(ケイ)は10億が10億個=10の18乗となります。

実際はweiよりもgwei表記のことが多く、1gwei = 10億weiとなり、10億gweiが1etherとなります。

gweiは、情報理論の父としてしられる数学者のクロード・シャノンにちなんで、Shannonというニックネームが付いています。

Claude Elwood Shannon, 1916年4月30日 – 2001年2月24日 / 引用:Wikipedia
情報理論の父と呼ばれ、情報、通信、暗号、データ圧縮、符号化など現代の情報社会に必要不可欠な分野での先駆的研究を多数残しました。
アラン・チューリングやジョン・フォン・ノイマンとともに現代のコンピュータ技術の基盤を作り上げた人物として、名前が並びます。

ネットワーク

イーサリアムプロトコルは1つですが、プロトコルを実行するためのネットワークは複数存在しています。

メインネット

パブリックイーサリアムネットワークは開発者間ではメインネットと呼ばれています。

テストネット(フォーセット)

コミュニティーがステージング環境として利用するためのテストネットというパブリックネットワークも存在しており、テストネットにはフォーセット(faucet)があり、フォーセットは開発者がスマートコントラクトをテストできるようにイーサリアムを無償で配布するメカニズムとなっています。

イーサリアムプロトコルを実行しているネットワークではすべてでイーサリアムを使用しますが、実際に価値を持つのはメインネットのイーサリアムだけになります。

イーサリアム自体をメインネットにデプロイして実行するためにはメインネットのイーサリアムが必要になります。

イーサリアムを手に入れるためには取引所で購入するか友人から分けてもらうか、仕事の報酬としてもらうか採掘するかの方法があります。

Gas

ガス(イーサリアムトランザクション手数料)はイーサリアムの価格に依存しません。

イーサリアムの価格変動によってエコシステム全体に悪影響にならないようにするためです。

イーサリアムトランザクションはwei単位でGasPriceを設定します。

ブロックの作成者がブロックに追加するトランザクションを決める際に設定しますが、Gasには暗黙の相場が存在しています。

トランザクションの実行に速度を求める際はGasの価格を高く設定する必要があり、速度を必要としない場合は低く設定することで、費用対効果の調整をトランザクション作成者が自分で調整することができます。

Gasのルール

イーサリアムのトランザクションにはgas属性とgasPrice属性がそれぞれ必ず含まれている必要があります。

これらの属性の掛け合わせで実行予定のトランザクション手数料の最も高い数値がwei建てで設定されます。

gas属性はトランザクションで実行される計算に上限を課す(gaslimit)ため、この上限を超過した分はトランザクション作成者に返還されます。

Solidityについて

Solidity(イーサリアム用のプログラミング言語)はオブジェクト指向型の言語になります。

Solidityでは読み取り専用の関数をpureキーワードとviewキーワードで表します。

書き込み専用の関数はSolidityのデフォルト関数でありキーワードは不要になります。

関数を実行するためにデータをトランザクション経由で送信し、ブロックに書き込みます。

書き込み専用関数が失敗した場合、その処理は元に返されます。

トランザクション属性

Solidityではトランザクション(tx)の属性として2つ定義されています。

gasPrice

トランザクションを作成したEOAが設定するガス価格(wei建てで決まります)

origin

トランザクションを作成したEOAアドレスです。

メッセージ属性

Solidityはトランザクション属性が他にもありますが、それらはメッセージ(msg)という概念で統一されています。

コントラクト関数の呼び出しには必ずmsg.senderがあります。

data

実行中の外部関数やパブリック関数に送信されたデータの生のバイトでコールデータとも呼ばれています。

sender

実行中の外部関数または、パブリック関数の呼び出し元アドレス。

sig

呼び出し中の関数を特定するためのコールデータのうち最初の4バイトで、関数IDとも呼ばれています。

value

この関数に送信されているweiの量。

number

新しいブロックが増えるたびに増加。

timestamp

ブロックが作成された時刻。

blockhash

ハッシュ値は16進数であり、当然現在のハッシュ値は入手不可能ですが、直近の256ブロックまでなら入手可能。

difficulty

現在のブロックのマイニング難易度。

gaslimit

ブロックで消費できるガスの最大値。

coinbase

ブロック作成者のアドレス。

となっています。

icon image

こちらの記事もいかがですか?!
ざっくり歴史把握シリーズは今さら聞けない情報もたくさんありおすすめです!

阿鼻叫喚の恐ろしい世界。
自分じゃなくてよかった・・・

世にも恐ろしい株式市場の悲惨な暴落史をざっくり把握する

株式市場の歴史、実は結構古いんです。

株式市場の歴史をざっくり把握する / Stock market

今さら聞けない・・・ビットコインやイーサリアムの歴史をざっくり把握しておきましょう!

暗号通貨の歴史をざっくり把握する

イーサリアムの歴史をざっくり把握

現代でも裁量トレードはまだ残っていますが、この先の未来では裁量トレードを行う人はほとんどいなくなるかと思います。

アルゴリズム取引の歴史をざっくり把握する / Algorithmic trading

ナイチンゲールは実はデータサイエンティストだった!?

データサイエンスの歴史をざっくり把握する / Data

裁量トレードだって、botトレードだってテクニカル分析の基本を知らなければいけません。
こちらもなかなか今さら聞けない分野ですので、歴史についてまずはざっくり勉強していきましょう。

テクニカル分析の歴史をざっくり把握 / Technical analysis

なんとなく頼りないイメージのある経済学者ですが、もちろん凄い人は凄いんです。

経済学の歴史をざっくり把握する / Economics

FXは慎重に!

円やドル / 外国為替市場の歴史をざっくり把握する

Kotaro
Kotaro
服部 洸太郎
音大を卒業後ピアニストとして活動。
自身のピアノトリオで活動後北欧スウェーデンにてシンガーアーティストLindha Kallerdahlと声帯とピアノによる即興哲学を研究。
その後ドイツへ渡りケルンにてAchim Tangと共に作品制作。
帰国後、金田式電流伝送DC録音の名手:五島昭彦氏のスタジオ「タイムマシンレコード」にアシスタントとして弟子入りし、録音エンジニアとしての活動開始。
独立後、音楽レーベル「芸術工房Pinocoa(現在はKotaro Studioに統合)」を立ち上げ、タンゴやクラシックなどのアコースティック音楽作品を多数プロデュース。
その後、秋山庄太郎氏後継の写真スタジオ「村上アーカイブス」でサウンドデザイナー兼音響担当として映像制作チームに参加。
村上宏治氏の元で本格的に写真、映像技術を学ぶ。
祖父母の在宅介護をきっかけにプログラムの世界に興味を持ち、介護で使えるプログラムをM5Stackを使って自作。
株式会社 ジオセンスの代表取締役社長:小林一英氏よりプログラムを学ぶ。
現在はKotaro Studioにてアルゼンチンタンゴをはじめとした民族音楽に関する文化の研究、ピアノ音響、さらに432hz周波数を使った癒しのサウンドを研究中。
2022年9月より豊かな暮らしをテーマとしたウェブサイト『レンタルdeクラセル』も発信中〜