![](https://img-blog.csdnimg.cn/20190711160520700.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
EOS系列
文章平均质量分 62
整理EOS系列的文章,建立知识体系
搬砖魁首
区块链从入门到宁静
展开
-
EOS系列 - EOSIO WEB IDE
这是一个面向开发者的开发容器, 具有IDE和私链测试环境介绍功能在Gitpod.io和Docker的支持下, 这个工具在云服务中运行,使新开发人员能够建立智能合约和Web应用程序开发环境以及完全集成的单节点个人测试网,因此他们可以在几分钟之内从入门到构建。自动部署一个单节点私链 nodeos和keosd, 并可重置能够在容器内利用其在线IDE(类vscode)编写智能合约能够使用cleos和eosio.cdt的所有命令能够用命令行编译与部署智能合约单元测试DAP原创 2022-01-01 09:59:31 · 8847 阅读 · 4 评论 -
EOS系列 - WASM智能合约 - 特性
构造函数addressbook(name receiver, name code, datastream<const char*> ds):contract(receiver, code, ds) {}#单例表(code和scope都用receiver的表)也可在初始化列表中实例化singleton_example( name receiver, name code, datastream<const char*> ds ) : contract(recei原创 2021-08-16 19:54:13 · 1115 阅读 · 1 评论 -
EOS系列 - 合约数据表字段升级
各种加字段手法测试新老表差异表内数据升级手法CURD 结果解决方案最后加一个加字段无数据re-deploy加记录前查全表: OK 加记录(不带新字段): OK 加记录(带新字段): OK 加记录后查全表: OK 删除新数据行: OK 加记录后查全表: OK 指定查新数据行: OK最后加一个字段有老数据re-deploy加记录前查全表: Fail 加记录(不带新字段): OK 加记录(带新字段): OK 加记录后查全表: Fail 指定查新原创 2021-03-31 11:54:31 · 821 阅读 · 4 评论 -
EOS系列 - EOSIO 2.1
EOSIO 2.1 RC中的新产品功能组成EOSIO堆栈的大多数创新都同样很好地支持公共和私有区块链部署。在EOSIO 2.1 RC中,我们引入了一项新的合规性功能,专门用于允许私有区块链系统管理员删除指定为上下文无关的数据而不会损害系统功能。EOSIO 2.1 RC还包括可优化区块链数据存储,简化表管理并为系统管理员提供集群选项的其他功能。此外,它还根据社区反馈更新了我们两个1.x数据导出工具的功能。关键值表键值API为开发人员提供了一种更加灵活,简化的方法来创建和搜索链表。开发人员还可以在创建表原创 2021-03-25 14:30:08 · 669 阅读 · 3 评论 -
区块链知识系列 - DPoS+Pipelined BFT共识机制
EOS 目前采用DPoS+Pipelined BFT 共识机制。DPoS共识 - 如何成为出块节点DPoS(Delegated Proof of Stake)是权益委托证明机制。相比于比特币的PoW机制,DPoS不用浪费算力资源争夺记账权,而是通过赋予通证持有人投票权,EOS 将投票选出21个“超级节点”来担任记账人(Block Producer:区块生产者简称BP)的角色,保证整个网络的正常运行。出块机制每0.5秒生产一个区块。超级节点轮流出块,每轮每个超级节点连续出12个块。以 21*12 .原创 2020-09-22 13:58:04 · 1459 阅读 · 1 评论 -
EOS系列 - 区块最终确认数 LIB 的计算方法
LIBLIB:last Irreversible Block,最后一个不能修改的区块将被标注为LIBEOS上一笔交易的不可逆转时间163秒是怎么算出来的?前提:主网 21个超级节点,每个节点连续出12个块,每个块用时0.5秒通过BM与V神的讨论,DPOS的节点确认被定义为两轮。所以总确认时间为:T = 2*(2/3) *21 *12 = 336块时间而理论上一个区块达到最终确认需要的块数: T = 12*(14+13) + 1 = 325整个网络需要15个人确认才能达成共识。每个人默认会对自己出原创 2020-12-03 10:54:42 · 1058 阅读 · 4 评论 -
EOS系列 - DPOS, Stake与投票机制
EOS的DPOS, Stake与投票机制DPOSEOS.IO软件架构中采用的共识算法。根据这种算法,全网持有代币的人可以通过投票系统来选择区块生产者,一旦当选任何人都可以参与区块的生产。出块机制超级节点轮流出块,每轮每个节点连续出12个块EOS.IO架构中区块产生是以 21*12 个区块为一个周期。在每个出块周期开始时,21个区块生产者会被投票选出。所选择的生产者会根据从块时间导出的伪随...原创 2019-12-24 19:55:59 · 2194 阅读 · 1 评论 -
EOS系列 - 使用cleos(命令行)发起裸包交易
eos构造裸交易并签名原创 2020-10-20 15:23:12 · 990 阅读 · 12 评论 -
EOS系列 - 使用eosc(golang)发起裸包交易
run eosc1. go get -u -v github.com/eoscanada/eosc/eosc2. cd $GOPATH/src/github.com/eoscanada/eosc/eosc3. go build main.go4. cp main $GOPATH/bin/eosctransaction signature1. import private key (offline)eosc vault create --import --comment "Airtight w原创 2020-10-12 23:35:39 · 922 阅读 · 6 评论 -
EOS系列 - 使用eosjs(js)发起裸包交易
EvnnodejsFirst runnpm installmanual installnpm install eosjs@beta --savenpm install node-fetch --saveCodevim eos_trx.jsconst { Api, JsonRpc, RpcError } = require('eosjs');// const { JsSignatureProvider } = require('eosjs/dist/eosjs-jssig');原创 2020-10-08 01:44:59 · 582 阅读 · 1 评论 -
EOS系列 - EOS发行Token
0. 合约规则必须注意的是,一个账户只能与一个智能合约相关联,可以在同一账户上更改或升级智能合约代码账户名与合约名相同一个合约内使用过的符号名,换一个合约还能用, 甚至也能叫做 ‘EOS’创建token合约要求至少需要230KB的内存通过自己创建的合约转账需要消耗ram,系统的token合约转账不消耗ram并不是每次交易都会消耗RAM用户哪此操作需要用到RAM呢?以下操作是需要消耗RAM的:创建新的EOS帐户、创建合约、向其它帐户转账、买卖RAM、抵押获取CPU或者NET、赎回抵押等等。用户原创 2020-07-06 19:24:45 · 1361 阅读 · 1 评论 -
密码学系列 - 椭圆曲线 ECDSA - 为什么EOSIO与EOSJS的签名结果不一样
EOSIOIn eos the initial value of nonce is 1static int extended_nonce_function( unsigned char *nonce32, const unsigned char *msg32, const unsigned char *key32,...原创 2020-03-30 17:00:02 · 939 阅读 · 1 评论 -
EOS系列 - 解决升级EOS2.0 `env.set_proposed_producers_ex unresolveable` 问题
解决升级到EOSIO 2.0以上的版本之后, 部署eosio.bios或eosio.system会报错 Error 3070000: WASM Exception \ Error Details: \ env.set_proposed_producers_ex unresolveable 的问题v1.8和v2.0中引入的所有协议升级功能首先都需要 PREACTIVATE_FEATURE 激活特殊的协议功能此版本中包含的eosio.system和eosio.bios合同只能在激活 WTMSIG_BLOC原创 2020-05-26 00:25:06 · 1372 阅读 · 1 评论 -
EOS系列 - EOSIO 2.0
EOS 2.0 | EOSIO 2.0 | EOS.IO 2.0block.one在2019年6月1日发布会上正式宣布推出EOSIO 2.0新的编译器 EOS-VM:不同于以太坊的EVM,EOS有自己独立的一套基于WebAssembly的智能合约引擎。2018年6月block.one发布WebAssembly编译器Binaryen,2018年12月,eos1.3发布WebAssembly...原创 2020-04-20 21:17:22 · 1828 阅读 · 0 评论 -
EOS系列 - EOSIO 跨链通信
跨链通信使一个区块链能够以可证实的安全方式验证另一个区块链上事件的真实性,目标是让区块链之间的通信像智能合约之间的内部链式沟通一样安全.轻量级的默克尔树证明比特币的SPV(简单支验证)EOS引入LCVEOS跨链通信EOS.IO 的设计能促进跨链通信,实现方式是简化生成操作存在证明和顺序证明。这些证明和围绕操作传递设计的应用架构一起,使得跨链通信的细节和验证工作对应用开发者不可见,开发...原创 2020-04-07 12:04:54 · 1139 阅读 · 1 评论 -
EOS系列 - 内存映射文件数据库 - chainbase
ChainBase-快速版本控制的事务性数据库特征支持具有多个索引的多个对象(表) (基于boost :: multi_index_container)状态在多个过程之间是持久且可共享的具有撤销更改功能的嵌套事务写入并发访问默认情况下,ChainBase不提供任何同步,并具有与任何boost :: multi_index_container相同的并发限制。这意味着两个或多个线程可以同时读取数据库,但是所有写操作必须由互斥锁保护。如果注意在数据库上使用进程间锁定,则多个进程可能会打开同一数据原创 2021-01-27 11:12:35 · 936 阅读 · 1 评论 -
EOS系列 - 源码分析 - EOS线程机制
EOS有几个线程nodeso节点的工作线程包括:一个主线程,一个信号处理线程和四个线程池。nodeos(10265 主线程&信号处理线程) : 进行异步io投递 `epoll_wait` | 接收系统信号并处理 ─┬─{nodeos}(10311 controller线程池_1: 异步执行块block_state创建,块中交易验证时的交易解签名计算) ├─{nodeos}...原创 2020-01-13 21:09:40 · 1682 阅读 · 1 评论 -
EOS系列 - 源码分析 - P2P网络模块
EOS P2P 网络模块P2P - GossipGossip算法又被称为反熵(Anti-Entropy),熵是物理学上的一个概念,代表杂乱无章,而反熵就是在杂乱无章中寻求一致,这充分说明了Gossip的特点:在一个有界网络中,每个节点都随机地与其他节点通信,经过一番杂乱无章的通信,最终所有节点的状态都会达成一致。每个节点可能知道所有其他节点,也可能仅知道几个邻居节点,只要这些节点可以通过网络连...原创 2020-01-31 12:10:58 · 1594 阅读 · 1 评论 -
EOS系列 - 源码分析 - 数据存储
EOS的链式存储结构EOS的区块数据结构如下:fieldexplanationtimestamp时间戳producer生产者confirmed生产者确认数previous链式结构前一个区块的idtransaction_mroot交易默克尔树根action_mroot动作默克尔树根schedule_version生产者版本排序...原创 2019-05-28 20:53:57 · 488 阅读 · 0 评论 -
EOS系列 - 源码分析 - 出块与同步过程
EOS源码解读心得主要知识点1.EOS出块过程生产、同步区块的核心代码逻辑:区块同步的更详细的说明:区块的创造过程检查区块生产者的合法性如果当前主干已经不是最长链,需要切换到最长的分叉链上切换过程如下弹出一定数量的区块,直到碰...原创 2019-08-02 22:39:28 · 1168 阅读 · 0 评论 -
EOS系列 - 源码分析 - 框架剖析(v1.7.2)
eos项目(v1.7.2)主要可以分为以下八个模块:编译模块主程序模块依赖库模块插件模块智能合约模块测试模块Docker工具模块文档说明模块1.编译模块eos项目的整体编译、依赖库下载、代码编译等功能,依托于一个完整的脚本体系,主要包括以下三部分:eos/scriptseos/scripts/eosio_build.sheos/CMakeModules1.1 eo...原创 2019-04-24 17:56:11 · 842 阅读 · 0 评论 -
EOS系列 - 哪些情况会消耗RAM
EOS系统资源主要包括RAM、CPU和NET,其中RAM需要购买,而CPU和NET只需要用EOS抵押即可获得,赎回期是3天。所以,可以理解为RAM是收费的,CPU和NET是免费的。理解RAMEOS的RAM是用来存储内存数据库的部分。DApp会使用EOS RAM来存储状态信息,以便于DApp的快速存储。另外创建EOS的账户也需要EOS RAM。RAM价格机制在EOS系统中,CPU和网络的...原创 2019-07-02 00:43:29 · 1347 阅读 · 0 评论 -
EOS系列 - 出块奖励分配机制
一张图了解EOS奖励分配机制,EOS版本v1.7.2原创 2019-05-18 18:14:25 · 1455 阅读 · 0 评论 -
EOS系列 - 系统合约
eosio contract由3个部分构成nativeactionnativeactions是setcode, setabi, newaccount功能的函数集。这部分代码是hardcode在EOS系统代码里的,也就说不需要部署这一步骤,所以就解决了蛋生鸡,鸡生蛋问题。nativeaction是通过SET_APP_HANDLER注册的对应的函数名是apply_eosio_xxx,比如apply_eosio_setcode,apply_eosio_newaccounteosio.bios, eosi原创 2020-09-30 14:30:42 · 820 阅读 · 6 评论 -
EOS系列 - 账户名规则
EOS 账户名规则账户名规则: (用system newaccount来创建)普通账户:必须12位字符 ,允许字符 a~z, 1~5 和 .短账户:少于12个字符,但没有’.'的 , 需要参与系统合约拍卖带后缀账户: 字符中带’.'的,可以少于12位, 但符号的后缀必须等于创建者的名称eosio创建账号只要不超过12位都行账户名的底层仍是uint64_tN(str_user) ...原创 2019-07-24 15:16:43 · 2094 阅读 · 0 评论 -
EOS系列 - WASM智能合约 - 内置方法
#高级EOSIO编程概念eosio::same_payerget_first_receiver,get_self()action_wrappertime_point, time_point_sec, microseconds原创 2019-10-16 15:54:30 · 1108 阅读 · 0 评论 -
EOS系列 - WASM智能合约 - 数据类型与RAM
EOS上编写智能合约的注意事项EOSIO支持创建智能合约,其执行和资源消耗的方式与在操作系统上运行的应用程序类似。智能合约使用C++编写并转换为WebAssembly。计算量和速度由带宽和CPU资源负责,持久信息的存储由RAM负责。只有在执行某些智能合约操作时才需要CPU和带宽,这些资源可以通过抵押Token获得。持久性资源RAM需要根据需求预先购买。RAM通常为易失性内存,但在...原创 2019-05-18 18:48:30 · 594 阅读 · 0 评论 -
EOS系列 - EOS-VM
EOS-VM原创 2020-02-03 17:02:27 · 1350 阅读 · 1 评论 -
EOS系列 - EVM和WASM的基本原理
了解EVM和EOS虚拟机基本原理EVM是以太坊图灵完备的虚拟机(Ethereum Virtual Machine), 简称EVM由程序翻译指令并执行EVM出于所谓运算速度和效率方面考虑,采用了非主流的256bit整数不支持浮点数缺乏标准库支持,例如字符串拼接、切割、查找等等都需要开发者自己实现给合约打补丁或是部分升级合约代码在EVM中是完全不可能的比特币的程序非常简单,由解锁脚...原创 2019-03-24 00:08:42 · 7015 阅读 · 0 评论 -
EOS系列 - 超级节点(BP)列表更新流程
eos定时更新BP列表的流程:步骤一: nodeos出块时调合约内的方法:nodeoson_block_act.name = N(onblock);eos_abi.structs.emplace_back( struct_def { "onblock", "", { {"header", "block_header"} } ...原创 2020-03-23 22:43:54 · 1242 阅读 · 1 评论 -
EOS系列 - 超级节点的密钥安全
EOS的BP注意事项密钥的安全性考虑到EOS超级节点自身的安全性和EOS区块链的安全性,每个BP都需要能够以安全有效的方式管理它们的密钥。以下是BP节点服务器上运行秘钥的指引说明:每个BP帐户必须使用4个密钥对owner密钥 - 是证明所有权的终极金钥匙,必须安全的保存并希望永远不要使用它。active密钥 - 用于在网络上签名和执行事务和操作,应该保持安全。签名密钥 - 仅用于签名...原创 2019-07-17 22:56:30 · 731 阅读 · 0 评论 -
EOS系列 - 超级节点的硬件要求
EOS的BP注意事项硬件要求备选节点预计至少需要提供4个面向公众服务的终端,让公众能够查询交易及提交交易。搭建一个备选节点需要有10台服务器,每台服务器包括10个核心,128 GB RAM,一些合理的磁盘存储,网络带宽和吞吐量。BP - [EOS Huobi Pool] HW Configurationdeploy 3 physical server,2 server ...原创 2019-09-10 00:37:39 · 1486 阅读 · 0 评论 -
EOS系列 - 各类节点的硬件要求
节点分为三类:API节点:同步块,广播事务,并提供链上基础数据的查询功能API全节点:同步块,并提供链上所有历史数据的查询功能BP节点:同步块和生产块API NodeMin:RAM: 4GBCPU: 2 coresStorage SSD: 500GBRecommend:RAM: 32GBCPU: 4 coresStorage SSD: 1TBConnecti...原创 2019-11-16 16:00:11 · 1545 阅读 · 3 评论 -
EOS系列 - EOSIO主网上线步骤
从genesis.json加载而来的initial_key,将做为初始化时出块账户eosio的公钥,存入block_header_state.active_scheduleproducer_schedule_type initial_schedule{ 0, {{config::system_account_name, conf.genesis.initial_key}} };genhe...原创 2019-07-24 15:11:01 · 785 阅读 · 0 评论