EOS(Enterprise Operation System)
作者:杨金宝
1.诞生背景
2.组成和网络分布
3.Nodeos Boot过程
4.权限模型
5.智能合约
6.交易结构
诞生背景:
POW (Proof of Work), POS (Proof of Stake)共识机制缺陷日益显露
Pow 通过与或运算,计算出一个满足规则的随机数,即获得本次记账权,发出本轮需要记录的数据,全网其它节点验证后一起存储;
缺点:目前bitcoin已经吸引全球大部分的算力,其它再用Pow共识机制的区块链应用很难获得相同的算力来保障自身的安全;挖矿造成大量的资源浪费;共识达成的周期较长, 算力过度集中,影响去中心化.
POS 和DOPS (股份授权证明机制-受托人机制):
Pow的一种升级共识机制;根据每个节点所占代币的比例和时间,被系统根据某种算法选为出块者,从而提升系统交易速度。
基于权益证明共识的区块链系统中,参与者的角色是验证者Validator,他们只需要投资系统的代币并在特定时间内验证自己是否为下一区块创造者,即可完成下一区块的创建。
缺点:
PoS 机制由股东自己保证安全,工作原理是利益捆绑。在这个模式下,不持有 PoS 的人无法对 PoS 构成威胁。PoS 的安全取决于持有者,和其他任何因素无关。在POS机制里,拥有币和币龄越高的节点拥有着越高产生新区块的权力。简单来说,就是你拥有越多的币,并且你拥有的币的币龄越久,就有可能获得记账权的概率越大。POS虽然解决了POW的能耗的问题,但全节点确认会让区块确认的效率提不起来,且时间越长,也越容易产生马太效应,即持有币越多的人会获得更多的币奖励,从而加大贫富差距,最终产生超过50%的中心化节点,被动演化为非预期的中心化的结果。
EOS:EOS可以理解为Enterprise Operation System,即为商用分布式应用设计的一款区块链操作系统。EOS是EOS软件引入的一种新的区块链架构,旨在实现分布式应用的性能扩展。注意,它并不是像比特币和以太坊那样是货币,而是基于EOS软件项目之上发布的代币,被称为区块链3.0。
EOS的主要特点如下:
1.EOS有点类似于微软的windows平台,通过创建一个对开发者友好的区块链底层平台,支持多个应用同时运行,为开发dAPP提供底层的模板。
2.EOS通过并行链和DPOS的方式解决了延迟和数据吞吐量的难题,EOS是每秒可以上千级别的处理量,而比特币每秒7笔左右,以太坊是每秒30-40笔;
3.EOS是没有手续费的,普通受众群体更广泛。EOS上开发dApp,需要用到的网络和计算资源是按照开发者拥有的EOS的比例分配的。当你拥有了EOS的话,就相当于拥有了计算机资源,随着DAPP的开发,你可以将手里的EOS租赁给别人使用,单从这一点来说EOS也具有广泛的价值。简单来说,就是你拥有了EOS,就相当于拥有了一套房租给别人收房租,或者说拥有了一块地租给别人建房 。
EOS本质是一个操作系统,要迈向小康,走上繁荣富强之路,必然是要更多更优质的DAPP能够在EOS上运行。
而DAPP要长久运行,CPU资源分配是否合理起决定性作用。而要获得CPU,需要EOS持仓者去抵押换取。
组成和网络分布
基础组件结构:
网络结构: 核心网, 访问网, 消费网. (角色相互转换,是逻辑分层)
核心网:全球21个节点,高性能,高存储. 专职负责接收全网交易,打包出块, 互相同步,确认数据.
访问网络(API nodes, Seed nodes.)
API nodes: 交易数据结构的校验和区块链状态查询, 承担预处理角色. 保护生产节点.
Seed nodes : 生产者候选者,保持与生产者节点的同步.种子节点通常仅使用EOSIO网络协议来通信块(而不是事务),并且不被配置为运行http协议(即,不能通过cleos访问)。每个生产者节点应该具有至少一个关联的种子节点。
消费网络
EOSIO消费网络是一个非常普遍的事情。基本上,任何直接通过cleos或间接使用与blockchain接口的应用程序的使用blockchain的普通用户都是EOSIO消费者网络的一部分。
BIOS Boot顺序
最小合约
eosio.bios
基础合约,提供最基本的功能, 创建账户,设置生产者,生产候选者,权限控制。
合约的拥有这是eosio 内置账户.
eosio.token
提供货币管理能力, 创建货币,发行货币,转账等.
eosio.msig
权限管理,多签名,定义不同层级的权限列表。
eosio.system
提供抵押token,配置和投票生产者或者协作提案.
管理和赋予eos链经济因素.
参考来源:https://developers.eos.io/eosio-cpp/docs
权限模型
cleos create account -j eosio testaccount -p eosio@owner
cleos set account permission testaccount active -p eosio@active
cleos push action contractaccount method 'data' -p account@publish
cleos push action contractaccount method1 'data' -p publickey
智能合约
比特币的程序非常简单,由解锁脚本和锁定脚本构成。以太坊有智能合约,有图灵完备的虚拟机EVM,但是指令也相对简单。这两种程序本质上都是脚本程序,即由程序翻译指令并执行,而不是由本地机器CPU读取指令并执行,效率不高。
EOS.IO区块链上的任何程序都需要先编译成WASM格式。这是区块链接受的唯一格式。
那EOS的智能合约语言Web Assembly(wasm)有什么来头呢?它是谷歌、苹果、微软三大竞争公司同时支持的一种中间代码(字节码), 是浏览器都支持的一种代码。所有其他语言(c, c++, java)编写的程序都可以编程成wasm字节码的程序。
Hello world,踢门
继承eosio.contract
编译c++成 web assembly (.wast file)
生成abi文件
检查是否有 wast 和 abi 文件
上传合约到对应的账户
验证是否成功
交易结构
/v1/chain/push_transaction
优秀github eos实现,推荐:
Javascript:
Eosjs : https://github.com/EOSIO/eosjs
Java:
Eos4j: https://github.com/espritblock/eos4j
参考资料:
https://developers.eos.io/
https://blog.csdn.net/ITleaks/article/details/80394703
https://www.jianshu.com/p/7971140c5cde
https://baijiahao.baidu.com/s?id=1594822043809976160&wfr=spider&for=pc
https://segmentfault.com/a/1190000013906600 (理解EOS的性能设计)
https://www.eosdocs.io/dappdevelopment/helloworldcontract/