找回密码
 立即注册

QQ登录

只需一步,快速开始

门户 区块链技术 查看内容
  • QQ空间
  • 回复
  • 收藏

以太坊连载(九):C++客户端的安装与定制(三)

admin 2018-11-20 15:00


运行
不用任何参数运行eth,会将你的节点同步到公共区块链。也可能创建或同步到另一个区块链(查看用eth定制区块链)。

与你的节点互动可以用geth或以太坊控制台完成:

使用geth
使用以太坊控制台
以太坊控制台是个node.js应用,连接到正在运行的eth/geth节点,提供到web3对象的访问权限。

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

可以用npm安装:

注意:

1> npm install -g ethereum-console
2> ethconsole

注意:

用法:
1 ethconsole [javascript file] [ipc socket]
通过ipc连接到以太坊节点,以远程控制 通过全局变量web3 (web3.admin也出现) 如果没有给定参数,连接到默认ipc插口

进入交互模式。

参数:
连接到给定 ipc插口 (如果不以.ipc结尾,使用ipc://)

执行给定的javascript文件,非交互地以.js结尾。

脚本需要调用process.exit()以终止控制台。

模块是什么?
什么是主要的可执行文件?
eth 命令行以太坊完整节点,可以通过RPC控制。
mix IDE,用于合约和用户界面开发,测试和部署到区块链
solc solidity命令行编译器。
lllc LLL命令行编译器。
弃用的可执行文件,很快会退役
AlethZero 基于Qt的无所不包的图形用户界面,用于与以太坊交互(接收最小的支持)。
EthKey 钥匙管理 CLI。
什么是不同的模块?
AlethZero – 基于Qt的图形用户界面,用于与以太坊交互。接收最小支持。
libethereum – 与以太坊web3部分相关的模块,比如,共识引擎,区块链下载,虚拟机。
– ethkey: 独立钥匙管理

– ethminer: 独立ethash矿工

– ethvm: 独立以太坊虚拟机执行设施

– evmjit:以太坊虚拟机库即时编译器

– libethash: ethash挖矿工作量证明算法实现

– libethash-cl: ethash用于GPU挖矿(OpenCL)的挖矿代码

– libethashseal: 工作量证明算法密封引擎的通用包裹。也包括所有基于ethash的链的原始状态

– libethcore: 核心数据架构和概念的集合

– libethereum: 主要共识引擎(减去以太坊虚拟机)。包括状态和区块链课堂

– libevm: 以太坊虚拟机实现(解释器)。

– libevmasm: 以太坊虚拟机组装工具,也包括优化器

– libevmcore:以太坊虚拟机,操作码,gas成本的初级数据架构……

– liblll: 低级LISP类语言编译器和汇编器

– libnatspec: natspec脚本评估器(确认信息)

– libtestutils:测试代码的实用程序

– lllc: LLL编译器命令行界面

libweb3core – Web3核心库,网络,编码,解码,基本数据架构。
– bench: 树形结构标杆管理

– libdevcore: 数据架构,实用程序,rlp,树形结构,内存数据库

– libdevcrypto: 加密基元,取决于libsecp256k1和libcrypto++

– libp2p: 核心点对点网络实现(除了特定的子协议)

– rlp: 独立rlp编码器/解码器

mix – 去中心化应用集成开发环境
solidity – Solidity编译器
– docs: 文档,出现在http://solidity.readthedocs.org/

– libsolidity: 实际实现

– analysis: 指代消解,类型检查… (加强AST注释)

– ast: 抽象语法树和类型系统

– codegen: 从注释的AST汇编码生成

– formal: 形式验证

– interface: libsolidity用户的外部接口

– parsing: 解析器(创建未注释的AST)

– solc:命令行编译器

web3.js – JavaScript去中心化应用框架库(通过RPC / IPC连接到后端)
webthree – 实际客户端/节点实现(“eth”)
– eth: 命令行客户端/节点

– libjsconsole: JavaScript控制台以访问弃用的eth,将要被nodejs应用代替

– libjsengine: libjsconsole的潜在引擎,即将移除

– libweb3jsonrpc: json-rpc服务器端终端,提供http和IPC (unix插口,windows管道)连接器

– libwebthree: 以太坊,swarm/ipfs和whisper的服务连接器

– libwhisper: whisper实现

webthree-helpers – 建立系统和一些外部依赖
– cmake: 建立系统的cmake文件,包括交互依赖的说明

– utils: 外部依赖

# json_spirit: 为Boost’s Spirit库的JSON解析器

# libscrypt: scrypt实现

# secp256k1: SECP 256k1 ECDSA签字算法实现

cpp-ethereum的自动设置
在写本文档时,所有cpp-ethereum自动化都由托管在http://52.28.164.97 的Jerkins实例驱动

设置有个“漂亮的别名”在http://ethbuilds.com ,但是由Bob Summerwill个人,而不是以太坊基金拥有,将来可能会以指向某物告终。

它与以太坊下载页面实例平行,用于Go和Python建立。

我们有两个不同的自动化系统这一事实并不理想的,是由于历史原因。将所有以太坊基金项目巩固到一个独立、持续的自动化设置会很有意义,但工作量很大。我们正在讨论。为C++代码库完成repo reorg以后应该更容易接近。

目前的Jenkins设置丢失了规范化连续的集成目标,这是它的主要弱点。没有单独的URL,可供你访问来找出C++建立在HEAD是有效还是损坏。甚至都没有你可以每个资源库访问的URL,可供你访问来找出私人资源库是有效还是损坏。

我们也丢失了作为一个整体的webthree-umbrella自动化,来知道我们正在发布的资源库组是有效还是损坏。

我们有拉取请求的自动化。它们针对它们所依赖的资源库开发分支建立。当测试改变哪一个包含多个资源库的时候,有一个规定那些依赖的替代分支的机制。但是它损坏了。

这是PR自动化的Jenkins项目。每当有新的PR建立,或是现存PR分支的内容更新的时候,它们通过Github webhooks自动触发:

alethzero-prs – alethzero的PR测试
libethereum-prs – libethereum的PR测试
libweb3core-prs – libweb3core的PR测试
mix-prs – mix的PR测试
solidity-prs – solidity的PR测试
webthree-helpers-prs – webthree-helpers的PR测试
webthree-prs – webthree的PR测试
这是我们有的其他Jenkins项目:

ethbinaries-develop和ethbinaries-release – 生成Windows和开发发行webthree-umbrella的OS X二进制的项目。开发项目每晚夜间运行,标准世界时间。发行项目手动运行。
ppa-build-develop和ppa-build-release – 打包源,建立步骤和二进制的项目,建立步骤随后会被推送到他们被建立的Launchpad,如果成功二进制会被推送到世界。开发项目每晚夜间运行,标准世界时。发行项目手动运行。
solidity-emscripten – Emscripten架构的Solidity编译版。这是建立目标,调用下面列出的公共目标。开发项目每晚夜间运行,标准世界时。
update-umbrella – 可以手动运行更新webthree-umbrella项目中子模块的实用项目。很快会被淘汰。它手动运行,也是夜间运行。 下列项目是有效的“资源库”,用于建立上面的“面向用户”项目。
ethbinaries-build – 用于ethbinaries-develop和ethbinaries-release。
project-build – 用于所有PR项目。
project-test – 用于所有PR项目。
pullrequest_parser – 用于所有PR项目。
solidity-emscripten-publisher – 用于solidity-emscripten。
Bob不知道这些Jenkins目标是什么。它们可能被淘汰。

code-coverage-run
我们正在有意识地努力将自动化脚本从Jenkins转移到Git,以减少我们自动化中的“voodoo因素”。还在研发过程中,但是有一些我们自动化使用的关键脚本:

homebrew/prepare_receipt.sh – 为Homebrew建立
scripts/build_emscripten.sh – 建立Emscripten二进制(为browser-solidity)
scripts/ethbinaries.sh – 建立Windows和OS X二进制
scripts/ethbuild.sh – 建立代码(所有平台)
scripts/ethtests.sh – 运行测试(所有平台)
scripts/ppabuild.sh – 为PPAs建立捆绑
但是在Jenkins内我们仍然有一些孤立的脚本:

在Windows powershell创建Eth的ZIP – 用来制作win_eth.zip
github_issue_mover.py – 用于从cpp-ethereum到webthree-umbrella库搭配移动事件的脚本
设置新的Jenkins从属 这是个噩梦进程。这是如何添加OS X从属。 其他平台进程会不同,但是我们还不必去做。

安装适当的操作软件(Bob要用自己的Apple登录)
从Mac商店安装最新的xcode
安装Homebrew
– 同意xcode选择许可

– brew更新

– brew更新

– 安装首要之事 (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

—– Brew安装rbenv

—– rbenv init

—– Rbenv安装1.9.3-p551

—– 添加eval “$(rbenv init –)”到~/.bash_profile:

– 用Java web-start连接从属(需要降低安全设置)

– 为Jenkins里的节点从设备剪切-粘贴PATH到配置域:

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

已知问题
缺乏规范化建立
缺乏webthree-umbrella建立
没有自动Windows测试
损坏的跨资源库PR
悬挂测试
不完备的测试集
我们运行了 “ethereum/tests”吗?
我们运行了 “ethereum/rpc-tests”吗?
Windows box在运行Windows 7家用版。没有RDC访问权限。
运行Visual Studio 2013.
应该用VS2015运行Windows 10,目标是Windows7
我们还没有有效的El Capitan二进制
每个循环没有一个做Homebrew/PPA更新
从来没有干净的建构?

(扫二维码 入群交流)

文章点评
相关文章

热门货币

柚子币EOS
柚子币EOS

EOS (Enterprise Operation System)是由 Block.one公司主导开发

恒星币XLM
恒星币XLM

恒星币(Stellar),一个由前瑞波币(Ripple)创始人Jed McCaleb

比特币BTC
比特币BTC

比特币(BitCoin)的概念最初由中本聪在2009年提出,根据中本聪的

新经币NEM
新经币NEM

新经币(New Economy Movement,缩写 NEM),是一种点对点虚拟货币

艾达币ADA
艾达币ADA

ADA,中文称为艾达币,是Cardano项目的产物,Cardano项目发起于2

币圈大佬

V神:以太坊创始人
V神:以太坊创始人

萌萌的天才少年Vitalik Buterin,圈内人一般称他为V神。这个94年

黄天威:比特时代创始人兼CEO
黄天威:比特时代创始人兼

黄天威,比特时代创始人兼CEO,历任腾讯产品经理,范特西副总裁,

杜均:金色财经创始人
杜均:金色财经创始人

他是全球最早从事区块链产业投资的专业投资人,也是知名的数字资

李笑来:中国比特币首富
李笑来:中国比特币首富

李笑来,原新东方名师,中国比特币首富,著名天使投资人,比特基

中本聪:比特币创始人
中本聪:比特币创始人

中本聪,比特币创始人,谜一样的人物。2008年中本聪在互联网上一

交易平台

火币网
火币网

火币网成立于2013年,是中国最大的比特币(btc)、莱特币(ltc)、以

库币网
库币网

库币网就是以“区块链”为核心上线的数字资产交易平台。千万注册

火币pro
火币pro

火币全球专业站,是火币全球旗下服务于全球专业交易者的创新数字

OkCoin国际
OkCoin国际

okcoin国际站是全球着名的数字资产交易平台之一,主要面向全球用

币安Binance
币安Binance

币安交易平台是由赵长鹏(CZ)领导的一群数字资产爱好者创建而成