Ethereum シリアル (IX): C++ クライアントのインストールとカスタマイズ (III)

Ethereum シリアル (IX): C++ クライアントのインストールとカスタマイズ (III)

走る

引数なしで eth を実行すると、ノードがパブリック ブロックチェーンに同期されます。別のブロックチェーンを作成したり、別のブロックチェーンと同期したりすることも可能です (eth を使用したカスタム ブロックチェーンを参照)。

ノードとのやり取りは、geth または Ethereum コンソールを使用して行うことができます。

gethの使用

Ethereumコンソールの使用

Ethereum コンソールは、実行中の eth/geth ノードに接続し、web3 オブジェクトへのアクセスを提供する node.js アプリケーションです。

注: https://github.com/ethereum/ethereum-console

npm を使用してインストールできます:

知らせ:

 1
2
 > npm インストール -g イーサリアムコンソール
>ethコンソール

知らせ:

使用法:

 1
 ethconsole [javascript ファイル] [ipc ソケット]

ipc経由でEthereumノードに接続し、グローバル変数web3経由でリモート制御します(web3.adminも表示されます)。パラメータが指定されていない場合は、デフォルトのipcソケットに接続します。

対話モードに入ります。

パラメータ:

指定された IPC ソケットに接続します (.ipc で終わらない場合は、ipc:// を使用します)

指定された .js で終わる JavaScript ファイルを非対話形式で実行します。

コンソールを終了するには、スクリプトで process.exit() を呼び出す必要があります。

モジュールとは何ですか?

メインの実行可能ファイルは何ですか?

  1. eth コマンドライン Ethereum フルノード、RPC 経由で制御可能。

  2. 契約とユーザーインターフェースの開発、テスト、ブロックチェーンへの展開のためのmix IDE

  3. solc Solidity コマンドラインコンパイラ。

  4. lllc LLL コマンドラインコンパイラ。

非推奨の実行ファイル。まもなく廃止されます

  1. AlethZero Ethereum と対話するための包括的な Qt ベースのグラフィカル ユーザー インターフェイス (最小限のサポートを受けます)。

  2. EthKey キー管理 CLI。

さまざまなモジュールとは何ですか?

  • AlethZero - Ethereum と対話するための Qt ベースのグラフィカル ユーザー インターフェイス。最小限のサポートを受けます。

  • libethereum - コンセンサス エンジン、ブロックチェーン ダウンロード、仮想マシンなど、Ethereum Web3 部分に関連するモジュール。

– ethkey: 独立したキー管理

– ethminer: スタンドアロン ethash マイナー

– ethvm: スタンドアロンの Ethereum 仮想マシン実行機能

– evmjit: Ethereum 仮想マシン ライブラリ ジャストインタイム コンパイラ

– libethash: ethashマイニングのプルーフオブワークアルゴリズムの実装

– libethash-cl: GPU マイニング用の ethash マイニング コード (OpenCL)

– libethashseal: プルーフ・オブ・ワーク シーリング エンジンの汎用ラッパー。すべてのethashベースのチェーンの元の状態も含まれています

– libethcore: コアデータ構造と概念のコレクション

– libethereum: メインのコンセンサス エンジン (Ethereum 仮想マシンを除く)。状態とブロックチェーンのクラスを含む

– libevm: Ethereum 仮想マシン実装 (インタープリター)。

– libevmasm: Ethereum 仮想マシン アセンブリ ツール。オプティマイザーも含まれています。

- libevmcore: Ethereum 仮想マシン、オペコード、ガスコストなどの低レベルのデータ構造。

– liblll: 低レベルのLISP風言語コンパイラとアセンブラ

- libnatspec: natspec スクリプト評価ツール (確認情報)

– libtestutils: コードをテストするためのユーティリティ

– lllc: LLLコンパイラのコマンドラインインターフェース

  • libweb3core – Web3 コア ライブラリ、ネットワーク、エンコード、デコード、基本データ アーキテクチャ。

– ベンチ: ツリー構造のベンチマーク

– libdevcore: データアーキテクチャ、ユーティリティ、rlp、ツリー構造、インメモリデータベース

– libdevcrypto: 暗号化プリミティブ、libsecp256k1 および libcrypto++ に依存

– libp2p: コアピアツーピアネットワーク実装(特定のサブプロトコルを除く)

– rlp: スタンドアロン rlp エンコーダ/デコーダ

  • mix – 分散型アプリケーション統合開発環境

  • solidity – Solidity コンパイラ

– docs: ドキュメントは http://solidity.readthedocs.org/ にあります

– libsolidity: 実際の実装

– 分析: 参照解決、型チェック… (拡張 AST アノテーション)

– ast: 抽象構文木と型システム

– codegen: コメント付きASTからアセンブリコードを生成する

– 形式的: 形式的検証

– インターフェース: libsolidity ユーザー向けの外部インターフェース

– 解析: パーサー (コメントなしの AST を作成)

- solc: コマンドラインコンパイラ

  • web3.js - JavaScript 分散アプリケーション フレームワーク ライブラリ (RPC/IPC 経由でバックエンドに接続)

  • webthree – 実際のクライアント/ノード実装 ("eth")

– eth: コマンドラインクライアント/ノード

– libjsconsole: 廃止された eth にアクセスするための JavaScript コンソール。nodejs アプリに置き換えられます。

– libjsengine: libjsconsole の潜在的なエンジン。近々削除される予定です。

– libweb3jsonrpc: http および IPC (unix ソケット、windows パイプ) コネクタを提供する json-rpc サーバー側エンドポイント

– libwebthree: Ethereum、swarm/ipfs、whisper 用のサービス コネクタ

– libwhisper: ウィスパー実装

  • webthree-helpers – ビルドシステムといくつかの外部依存関係

– cmake: インタラクティブな依存関係の指示を含むシステムcmakeファイルのビルド

– utils: 外部依存関係

# json_spirit: Boost の Spirit ライブラリの JSON パーサー

# libscrypt: scrypt 実装

# secp256k1: SECP 256k1 ECDSA 署名アルゴリズムの実装

cpp-ethereumの自動セットアップ

この文書を書いている時点では、すべての cpp-ethereum 自動化は、http://52.28.164.97 でホストされている Jerkins インスタンスによって実行されています。

このセットアップには http://ethbuilds.com の「便利なエイリアス」がありますが、これは Ethereum Foundation ではなく Bob Summerwill 個人が所有しており、将来的には何かを指すことになるかもしれません。

これは、Go および Python ビルドの Ethereum ダウンロード ページの例に相当します。

2 つの異なる自動化システムが存在するのは理想的ではなく、歴史的な理由によるものです。すべての Ethereum Foundation プロジェクトを単一の継続的な自動化セットアップに統合することは理にかなっていますが、膨大な作業が必要になります。議論中です。 C++ コードベースのリポジトリの再編成が完了すると、より使いやすくなるはずです。

現在の Jenkins の設定では、継続的インテグレーションを形式化するという目標が達成されておらず、これが主な弱点となっています。 HEAD の C++ ビルドが有効か壊れているかを確認するためにアクセスできる単一の URL はありません。プライベート リポジトリが有効か壊れているかを確認するためにリポジトリごとにアクセスできる URL すらありません。

また、リリースしていたリポジトリのセットが有効か壊れているかを知るための、webthree-umbrella の自動化全体が失われました。

プルリクエストの自動化が可能です。これらは、依存するリポジトリの開発ブランチに対して構築されます。複数のリポジトリに関係する変更をテストする場合、それらの依存関係の代替ブランチを指定するためのメカニズムがあります。しかし、破損していました。

これは PR 自動化のための Jenkins プロジェクトです。これらは、新しい PR が作成されるか、既存の PR ブランチの内容が更新されるたびに、Github Webhook を介して自動的にトリガーされます。

  1. alethzero-prs – alethzero による PR テスト

  2. libethereum-prs - libethereum の PR テスト

  3. libweb3core-prs – libweb3core の PR テスト

  4. mix-prs – ミックスのPRテスト

  5. solidity-prs – solidity の PR テスト

  6. webthree-helpers-prs – webthree-helpers の PR テスト

  7. webthree-prs – webthree の PR テスト

他にも Jenkins プロジェクトがいくつかあります。

  1. ethbinaries-develop および ethbinaries-release – 開発リリース webthree-umbrella の Windows および OS X バイナリを生成するプロジェクト。開発プロジェクトは世界標準時の夜間に毎晩実行されます。プロジェクトをリリースして手動で実行します。

  2. ppa-build-develop および ppa-build-release - ソース、ビルド ステップ、およびバイナリをパッケージ化するプロジェクト。ビルド ステップは Launchpad にプッシュされ、そこでビルドされ、成功した場合はバイナリが世界にプッシュされます。開発プログラムは、世界標準時の夜間に毎晩実行されます。手動で実行するプロジェクトをリリースします。

  3. solidity-emscripten – Emscripten 用にコンパイルされた Solidity。これは、以下にリストされている共通ターゲットを呼び出すビルド ターゲットです。開発プログラムは、世界標準時の夜間に毎晩実行されます。

  4. update-umbrella - webthree-umbrella プロジェクト内のサブモジュールを更新するために手動で実行できるユーティリティ プロジェクト。すぐに削除されます。夜間でも手動で作動します。以下のプロジェクトは有効な「リソース ライブラリ」であり、上記の「ユーザー向け」プロジェクトを構築するために使用されます。

  5. ethbinaries-build – ethbinaries-develop および ethbinaries-release と一緒に使用します。

  6. project-build – すべての PR プロジェクトに使用されます。

  7. project-test – すべての PR プロジェクト用。

  8. pullrequest_parser – すべての PR プロジェクトに使用されます。

  9. solidity-emscripten-publisher – solidity-emscripten 用。

ボブはこれらの Jenkins ターゲットが何であるか全く知りません。それらは排除される可能性があります。

  1. コードカバレッジ実行

私たちは、自動化における「魔法の要素」を減らすために、自動化スクリプトを Jenkins から Git に移行するよう意識的に取り組んでいます。まだ作業中ですが、自動化に使用する主要なスクリプトをいくつか紹介します。

  1. homebrew/prepare_receipt.sh – Homebrew 用にビルド

  2. scripts/build_emscripten.sh – Emscripten バイナリをビルドします (browser-solidity 用)

  3. scripts/ethbinaries.sh – Windows および OS X バイナリをビルドします

  4. scripts/ethbuild.sh – ビルドコード(全プラットフォーム)

  5. scripts/ethtests.sh – テストを実行します (すべてのプラットフォーム)

  6. scripts/ppabuild.sh – PPA のバンドルをビルドします

しかし、Jenkins 内にはまだ孤立したスクリプトがいくつか残っています。

  1. Windows PowerShell で Eth ZIP を作成する – win_eth.zip の作成に使用

  2. github_issue_mover.py – cpp-ethereum から webthree-umbrella ライブラリにイベントを移動するためのスクリプト

新しい Jenkins スレーブをセットアップするのは悪夢のようなプロセスです。 OS X スレーブを追加する方法は次のとおりです。他のプラットフォームではプロセスが異なりますが、まだそうする必要はありません。

  1. 適切なオペレーティング ソフトウェアをインストールします (Bob は Apple ID でログインする必要があります)

  2. Macストアから最新のXcodeをインストールする

  3. Homebrewをインストールする

- Xcode選択ライセンスに同意する

– 醸造アップデート

– 醸造アップデート

– まず最初にインストールします (http://www.ethdocs.org/en/latest/ethereum-clients/cpp-ethereum/building-from-source/osx.html)

– Rubyをインストールする

—– https://github.com/rbenv/rbenv#homebrew-on-mac-os-x を参照してください

—– rbenv をインストールします

—–rbenv 初期化

—– Rbenv 1.9.3-p551 をインストール

—– ~/.bash_profile に eval “$(rbenv init –)” を追加します。

- Java Web Start を使用してスレーブに接続する (セキュリティ設定を下げる必要があります)

– デバイスの PATH を Jenkins のノードの構成フィールドにコピーして貼り付けます。

—– 例: /Users/administrator/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

既知の問題

  1. 標準化された施設の欠如

  2. ウェブ3傘ビルドの欠如

  3. 自動Windowsテストなし

  4. 壊れたクロスリポジトリ PR

  5. サスペンションテスト

  6. 不完全なテストセット

  7. 「ethereum/tests」を実行しましたか?

  8. 「ethereum/rpc-tests」を実行しましたか?

  9. Windows ボックスでは Windows 7 Home Edition が実行されています。 RDC アクセスがありません。

  10. Visual Studio 2013 を実行します。

  11. VS2015 で Windows 10 を実行する必要があります。ターゲットは Windows 7 です。

  12. 有効なEl Capitanバイナリはまだありません

  13. ループごとにHomebrew/PPAアップデートを行う人はいない

  14. クリーンビルドをしたことがありませんか?

次回は「Ethereumシリーズ(10):Go、Java、Python、Ruby、JSクライアント入門」を紹介します。

「Ethereum Homestead ドキュメント」の翻訳と校正に協力してくれた Chaoxi チームの Azure と Bob に感謝します。


<<:  米国の信用組合がCUレジャーブロックチェーンアライアンスを立ち上げ

>>:  ウォールストリートニュース:中国の買い手が再び力強い購入を行い、ビットコインの価格は短期的に10%上昇した

推薦する

イーサリアム2.0開発者:PoS統合計画は遅くとも来年初めに実施される可能性がある

注: 元の著者は、ConsenSys の研究者であり、Ethereum 2.0 開発者でもある Be...

Matrixport: イーサリアムはRSIの低さとアップグレード計画により回復する可能性あり

イーサリアムは再び偉大になるだろうシティグループの最新レポートは、イーサリアム(ETH)が今年20%...

DeFi は金融の世界を具体的にどのように変えたのでしょうか?

マドフの死により、11年前に閉鎖されていたポンジースキームが再び世間の注目を集めることになった。それ...

日本のブロックチェーンサービス開発者がセミナーを開催

Dragonfly FintechのCEOであり、NEM(New Economy Currency)...

イーサリアムとビットコインが負の相関関係にある理由

ここ数週間、イーサリアムとビットコインの価格変動は負の相関関係にあります。価格動向チャートから、イー...

ビットコインマイニング:公正な分配メカニズム

「鉱業の知識」は、智光大学の初心者ユーザー向けの鉱業科学コラムです。このコラムでは、ビットコインマ...

MEV は Ethereum にどのような集中化の問題をもたらしますか?どうすれば改善できますか?

改善点には、提案者とビルダーの分離と部分ブロックオークションが含まれます。サイモン・ブラウン著編集:...

データ:Huobiの24時間BTC純流入額は7,910万ドルで、資本の本国送還が加速している

AIcoinによると、11月10日15時時点で、Huobi Globalの24時間純流入額は7,91...

iPhone 向け最も人気のある 8 つのビットコイン アプリ

新しい iPhone 6s を購入したら、どのようなアプリをインストールすればよいでしょうか?ビット...

ネットワークエンジニア: アンチASICマイニングは間違っているかもしれない、将来のIPプロトコルのアップグレードは大規模なブロック拡張に有益となるだろう

「マスター、最近は小型の採掘コインが人気です。私が中関村に行って採掘用の機械を組み立てるのはどう思い...

ポルトガルではビットコインは規制されていないが、財務省は課税を推奨している

世界中の他の国々と同様に、ポルトガルのメディアは暗号通貨の人気と価値が高まるにつれてそれを報道してい...

未来はすでにここにある。ただまだ普及していないだけ。ビットコインのような技術のメガトレンドを早期に発見するにはどうすればいいのでしょうか?

編集者注: もちろん、主要な技術トレンドを事前に発見することは非常に重要です。あなたが起業家であれば...

ラウル・パル:暗号通貨市場の底は今後5週間以内に現れるだろう、来週から暗号通貨を買い始めるかもしれない

グローバル・マクロ・インベスターのCEO、ラウル・パル氏は、暗号通貨市場の底値は今後5週間以内に現れ...