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客户端介绍》

  • 相关阅读:
    POJ 1741 Tree(树分治)
    HDU 2196 Computer(树形dp)
    2015沈阳区域赛Meeting(最短路 + 建图)
    make the fence great again(dp 二维)
    2017沈阳区域赛Infinite Fraction Path(BFS + 剪枝)
    bitset详解
    2016青岛区域赛.Coding Contest(费用流 + 概率计算转换为加法计算)
    2019上海网络赛B题(差分 + 离散化 or 差分 + 思维)
    poj-1664.放苹果.(递推)
    hdu-4738.Caocao's Bridges(图中权值最小的桥)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13313429.html
Copyright © 2011-2022 走看看