zoukankan      html  css  js  c++  java
  • 以太坊:C++客户端的安装与定制(三)

    运行

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

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

    使用geth

    使用以太坊控制台

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

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

    可以用npm安装:

    注意:

    1
    2
    
    > npm install -g ethereum-console
    > 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更新
    • 从来没有干净的建构?

    下一篇文章我们将会介绍《以太坊:Go、Java、Python、Ruby、JS客户端介绍》

  • 相关阅读:
    解决PKIX:unable to find valid certification path to requested target 的问题
    Linux 上的常用文件传输方式介绍与比较
    用VNC远程图形化连接Linux桌面的配置方法
    红帽中出现”This system is not registered with RHN”的解决方案
    linux安装时出现your cpu does not support long mode的解决方法
    CentOS SSH配置
    es6扩展运算符及rest运算符总结
    es6解构赋值总结
    tortoisegit安装、clon、推送
    es6环境搭建
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13313429.html
Copyright © 2011-2022 走看看