Develop with pleasure!

福岡でCloudとかBlockchainとか。

Ethereum

EthashのPoWとLight Clientの検証コスト

最近、Geth v1.9.0で導入されたUltra Light ClientがブロックヘッダーのPoWの検証をスキップしているのを知った。Bitcoinとかだと軽量ノードはブロックヘッダーのみダウンロードし有効なPoWのチェックはしてるから何故そういうアプローチなのか、EthereumのP…

EthereumのDNSを利用したブートストラップノードの探索

EthereumでもEIP-1469によりノード探索プロトコルでDNSがサポートされたので、内容見てみる↓ arachnid.github.io ↓で解説したように、ノードを起動するとハードコードされたブートストラップノードを使って、アウトバウンドピアの接続対象を検索する。 techm…

Ethereumのノード探索の仕組みとエクリプス攻撃とその対策

EthereumのP2Pネットワークまわりの仕様について、まずノード探索の仕組みについて理解する。 Ethereumのノード探索の仕組み Ethereumは分散ハッシュテーブル(DHT)の一種であるKademliaをベースにしたノード検出プロトコルを実装している(Kademlia自体は…

コントラクトの関数で例外を投げる

Solidityで作成するコントラクトの関数から例外を投げる方法について。 http://solidity.readthedocs.io/en/develop/control-structures.html#exceptions コントラクトの関数内で手動で例外を投げたい場合throwを使う。例外が投げられると現在実行中の処理が…

Rubyで書かれたテスティングフレームワークtethでコントラクトをテストする

Ethereum使ったアプリケーションをRubyで書けないかなーと思ってRubyのライブラリを調べてみた。 EthereumのRubyライブラリ 公式ドキュメントで紹介されているのは以下の3つ。 ruby-ethereum Rubyで書かれたEVM(Ethereum Virtual Machine)の実装 github.c…

Solidityのソースファイルのレイアウト仕様

Layout of a Solidity Source File — Solidity 0.4.3-develop documentation Solidityのソースファイルのレイアウト仕様について↑ざっとみておく。 ソースファイルには任意の数のcontractの定義を記述できる。 Version Pragma ソースファイルにはversion pra…

Ethereumのコントラクトのロジックの更新

Ethereumのコントラクトはブロックチェーンに記録されると基本的に変更ができない。 じゃあコントラクトにバグがあったり機能追加したい場合にどうするの? という疑問がわく。 DELEGATECALL Homesteadから導入されたEIP-7として定義されているDELEGATECALL…

Solidityで記述するEthereumのスマートコントラクト

Ethereumを使ったスマートコントラクト(Solidity版)の作り方について見てみる。 Introduction to Smart Contracts — Solidity 0.4.3-develop documentation シンプルなスマートコントラクト ストレージ Solidityにおけるコントラクトとは、Ethereumのブロ…

Ethereum環境のセットアップとPrivate Chainの作成

Bitcoinのブロックチェーンは取引記録を台帳に記録していくプラットフォームなのに対し、Ethereumは独自のブロックチェーンネットワークで分散アプリケーションを実行するプラットフォームを提供している。 今回は、そんなEthereumの動作環境を作ってみた。 …