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%上昇した

推薦する

香港証券取引所が鉱山機械メーカーを除外するのはなぜですか?李小佳は答えた

世界の仮想通貨マイニングマシン市場シェアの90%以上を独占する3社、Ebang Technology...

嘲笑された後、KuCoin攻撃者はDeFiを使用して盗まれた数億ドルの資産を現金化しました

記事: ハッシュパイ著者: LucyCheng北京時間2020年9月26日早朝、KuCoinホットウ...

ニューハンプシャー州のビットコイン保護法案が支持を集め、革新的な産業の発展を奨励することを目指す

ゴールデンファイナンスニュース - 4月1日より、日本は資金決済法(新改正)を正式に施行し、ビットコ...

パキスタン議会が紙幣廃止を計画、国内ビットコイン取引量は400%増加

今週、パキスタン議会は最高額紙幣の廃止を提案し、国内のビットコイン取引量は近400%増加した。政府の...

ビットコインの盗難を防ぐにはコールドストレージが最善の選択肢でしょうか?

最も堅牢で最先端のビットコイン取引所でもハッキングされる可能性があります。 KrakenはDDoS攻...

イーサリアムの物語の流行の下で、関連性の高いプロジェクトのうち、期待する価値のあるものはどれでしょうか?

最近、米国SECは8つのイーサリアムスポットETFについて19b-4文書を正式に承認しました。 ET...

インターネットエンジニアリングタスクフォースがデジタル通貨の送金のためのドメイン名システムを設計

Rage Review : 今月初め、Interledger は初の実際の支払いを実施し、いくつかの...

ビットコインの2MBブロック拡張計画は合意を得るのが難しい

先週、ビットコインのコア開発者ジェフ・ガージック氏は、今年11月にビットコインのブロックサイズ制限を...

EY レポート: ブロックチェーンは開発の重要な段階にあり、デジタル革命は止められない (レポート全文をダウンロード)

世界第3位の多国籍プロフェッショナルサービス企業であるアーンスト・アンド・ヤング(EY)は、ブロック...

ビットコインの採掘難易度が12.6%低下、今が採掘のチャンス

新疆が今年4月に安全検査のため全面停電を実施した後、半月以内にネットワーク全体のハッシュレートが約4...

有名なOTC決済業者が盗まれたBTCの販売に関与している

最近、OTC詐欺事件が多発しています。エミール・ピクテという偽名を使ったヨーロッパ人男性が、投資の名...

Bitfinex: BTCは一時91,000ドルを下回り、危機的な状況に

仮想通貨取引所ビットフィネックスのアナリストらは、ビットコインは一時9万1000ドルを下回り、90日...

女性が「ビットコイン投機」に投資して詐欺に遭い、王城警察は即座に50万元以上を回収した

11月18日のニュース:「今となっては大変後悔しています。投資の話をする時は、知らない人を信用しては...