EOS主网即将上线,那些你一定要知道的事儿

Eos.Store的自白

Eos.Store作为超级节点的竞选者之一,期望可以成为其守护者以及EOS生态繁荣的建设者,并致力构造一个开放多元平衡的应用生态。围绕EOS生态,Eos.Store将以社群为中心,构建基于EOS的DAPP超级应用市场,帮助更多的开发应用落地,同时社区每一位以Eos.Store社群繁荣的用户将有优先投票权帮助社区更好地发展,促使整个EOS生态合理有序。感谢大家的支持,请与我们一起见证未来…

本篇文章是延续“入门(一)”继续讲解的,上一篇没有看过的朋友可以先阅览一下(入门(一)丨EOS价格突破20美元,创历史新高,你了解EOS么?)

正文继续:

EOS术语解释

Account,账户

Authority,权力

Block,缩写Blk,每个区块可包含0个或多个交易,以及一个对前置区块的加密连接。不可逆。

DAC,分权自治集体,或者是分权自治公司。

DAO,分权自治组织

Deferred Transaction,缩写defTx,延期交易。该交易是有智能合约所创建,会在未来的某个时间被执行。这个交易也能够创建另一个在其之后的交易。因此,延期交易可以创建无限循环的顺序交易。用户授权一个延期交易必须指定到执行的时刻拥有足够的带宽,存储来执行预期交易。

DLTs,分布式账本技术。一种分布式账本(也被称作共享式账本),它是一个基于复制、共享以及同步数字化资产的跨站点、跨国家、跨机构的共识。

DPoS,授权权益证明。此外,也可以代表民主即权益证明。DPoS是共识算法的一种,即区块生产者能够针对交易或区块的真实性,可验证,不可逆等特性达成共识的一种方法。

Key pair,缩写keys,一个密钥对,包括公钥和其对应的私钥。

larimer,一种EOS的计量单位,等于0.0001 EOS。(性质如同以太坊中的Wei)

Master Password,用于解锁,或解密一个钱包文件的密码。

Action,一个对区块链的改变动作。可以是一个或这多个动作组成一个交易。

Non-Producing Node,非生产节点,也可以被理解为普通节点。这是一个完整的区块链节点,但它智能观察和验证区块,以及只能维护自己本地区块链的拷贝。一个普通节点可以在一个“备用池”中,通过投票流程称为生产节点(具备出块权的超级节点)一个超级节点,也会被投票出局,成为一个普通节点。但是值得注意的是,大多数普通节点并不在“备用池”中。

Oracle,在区块链和智能合约的上下文中,它是一个代理,被智能合约使用用来找到和验证实际发生的并提交这个信息到区块链上。

peer-to-peer,p2p,对等计算或网络是一个分布式应用程序架构,在对等环境下,它被分去为任务或者是工作量。对等节点是拥有等价权限,在应用程序中的参与机会均等。他们组成了点对点的网络节点。

Permission,加权的,安全机制,通过评估它的签名权力来确定一个信息是否被正确授权。

Private Key,用来签名交易的私钥。

Public Key,缩写pub key,公钥,会在交易间被传输。

Scope,作用域,智能合约的作用域,智能合约智能写入他们同一个作用域的自己的其他合约,而只能够读取其他作用域的合约。

Smart Contract, 智能合约,一个计算机协议,旨在促进、验证或执行谈判。

Standby Pool,100个全节点的集合,渴望被选中为21个超级节点之一,他们实际上已经拥有了超级节点的能力,无论何时链需要替换一个超级节点时,就会从备用池中选择。

Transaction,缩写Tx,Txn。它有事务的含义,一般我们称作交易。它是一个完整的原子的区块链的变化,一个或多个消息的组合,在EOS中通常是由一个智能合约来执行。

Wallet,钱包,会生成一个加密钱包文件或是通过客户端来管理,例如cleos。它管理了私钥以及用一个安全的方式去促进交易的签名。钱包可以被锁定或解锁。

Block Producer, 缩写bp。21个超级节点之一,是目前正在出块轮次的那个超级节点。

构建本地环境

EOS三个组件:

nodeos:服务端区块链节点组件

cleos:命令行接口,与区块链交互,管理钱包,管理账户,在区块链上调用方法。(很重要,相当于以太坊web3)

keosd:管理EOSIO钱包的组件。

接下来,我们将构建这些EOSIO组件,并将它们部署在一个主机,通过单个节点对网络(testnet)进行测试与配置。

构建源码

recursive参数会将所有子组件自动克隆下来,最终我们会在本地得到全部完整的源码。

自动构建源码。

构建时间较长,最终构建成功的页面如下:

手动构建源码

安装开发工具包

wget 下载llvm-key出错,可以按照提示加入参数--no-check-certificate搞定。

依赖

基于我本机是Ubuntu16.04,除了使用上面的自动编译以外,也可以手动安装,不怕折磨的话。

目前EOS当前版本的依赖包括:

Clang 4.0.0

CMake 3.5.1

Boost 1.66

OpenSSL

LLVM 4.0

secp256k1-zkp (Cryptonomex branch)

依赖安装请参照官方文档

跑单元测试

这一步是为了验证源码功能完整度,耗时也较久。

安装命令

命令会被安装在/usr/local。执行完这个命令以后,我们可以在系统任何位置进行命令启用。

启动一个单独节点

构建完成后,会在build/programs/目录中出现nodeos文件夹,这是我们要启动节点的工具。通过以下命令启动你自己的独立节点区块链

这条命令中,可执行文件./nodeos后面有很多参数,好看的是后面的plugin是启动时对插件的配置,剩下的参数配置我们会在接下来介绍到。启动以后,日志打印出来相关信息:

下面来逐一分析一下这个日志内容,可以看出EOS启动私链节点是通过插件实现的,在启动私链前,要对插件进行初始化配置,启动各依赖组件处理器。下面来列举一下主要插件内容:

wallet_plugin,钱包管理相关,启动阶段只出现过一次,说明它的功能主要依赖启动后的操作,而在启动期间需要做的配置很少。

walletapiplugin,依赖于wallet_plugin,出现一次,应该是提供外部调用与钱包交互的接口服务。

http_plugin,启动阶段大量出现的插件,说明在准备期,针对HTTP的配置和添加接口服务非常多。配置包括url,端口,监听。接口服务包括钱包相关,链相关,账户相关的一系列api地址。

chain_plugin,链插件配置,出现了几次,除了初始化启动以外,还有针对链数据读取模式的配置为read/write模式,生成创世块配置文件genesis.json,以及展示了创世区块的各种属性信息。

chainapiplugin,同样的,依赖于chain_plugin,提供外部调用链相关操作的接口服务。

net_plugin,网络插件,出现了几次,是对网络节点的基本配置,包括网络日志的级别为info,本地网络监听端口,生成节点id。最后启动监听器,并设置了以该网络节点为服务器的客户端最多能够连入25个。

main,主插件,对eosio这整个软件的一个主要插件,配置了eosio的版本以及展示了eosio工作的本地root地址。

accounthistoryapi_plugin,顾名思义,账户历史接口插件,估计是与账户历史相关的供外部调用的接口服务。

producer_plugin,区块生产者插件,插件启动。

以上出现的所有插件亦可理解为组件。

接着看日志,提示我创世块时间戳过时,可以通过一个参数来修改,下面我尝试修改一下,在以上启动命令加入了参数,重新启动:

重新启动以后,打印出来的日志中,前面的都是相同的,我们从producer_plugin贴出来是:

可以看到,那个关于创世块时间戳的提示已经消失,producer_plugin插件启动开始与完毕。接下来就是

fork_database程序,推送区块,报出了消失区块好2783。TODO:这一行还待未来分析解决。

接下来就是正常出块了,由于我们本地启动的节点一定是具备出块权的(目前只有一个节点未涉及共识),这些块是不包含任何交易信息的,出块速度很快。

停止

断开私链直接按下复制键(Ctrl+C)即可,日志中也有体现:

可以看到私链停止时,都是通过netplugin插件来操作,操作的方法是与pluginstartup对应的plugin_shutdown,步骤为:

开始关闭的标识

关闭接收器acceptor

关闭连接

完成私链停止工作,退出shutdown程序

以上内容在未来的源码分析中均会涉及。

(未完待续,精彩讲解敬请期待)

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180501G0VH2200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券