EOS源码分析
文章平均质量分 95
以源码的方式分析EOS技术
区块链斜杠青年
这个作者很懒,什么都没留下…
展开
-
[EOS源码分析]系列开始了
前面一个多月写了比特币源码情景系列(区块链1.0)和以太坊源码情景分析系列(区块链2.0),接下来很自然要分析号称“区块链3.0”的EOS的源码,欢迎大家和我一起学习。...原创 2018-05-18 10:20:16 · 4456 阅读 · 0 评论 -
[EOS源码分析]1.EOS源码编译运行
本文所有实践都是基于EOS dawn-v4.1.0,请切到该分支然后实践切换命令:git checkout dawn-v4.1.0 目前网络上都是针对老版EOS2.0源码编译的文章,我在mac上参考这些文章编译,最后发现根本就不对,最新版本只需一条命令(./eosio_build.sh,依赖库会自动安装的)即可。我根据这些文章手动安装的库还导致如下问题,最后大部分时间都花在...原创 2018-05-18 17:23:16 · 6504 阅读 · 2 评论 -
[EOS源码分析]2.EOS账号钱包密钥等基本概念及操作实践
本文所有实践都是基于EOS dawn-v4.1.0,请切到该分支然后实践切换命令:git checkout dawn-v4.1.0cleos cleos应用程序是用户端命令行交互模块,用于解析用户命令,执行钱包,账号等如下操作 cleos依赖keosd和nodeos等应用程序处理这些操作。 当keosd没有启动时,cleos会自动启动该程序,对应的...原创 2018-05-22 14:48:18 · 5207 阅读 · 0 评论 -
[EOS源码分析]3.EOS权限模型机制分析
cleos涉及account和contract的命令都会产生一个action,进而生成一个transaction,所有的action都需要指定permission权限 权限验证流程图如下 主要分为三个部分:permission声明:1~3 permission授权证明:4~9 权限检测:10~14,其中本地节点的nodeos和miner节点的nodeos都会执...原创 2018-05-23 17:08:03 · 5431 阅读 · 4 评论 -
[EOS源码分析]4.EOS源码调试
在【EOS源码编译运行】一文已经详细描述了EOS源码编译。但是阅读代码,光跑代码是不够的,必须要可以调试。一搜发现网上没有相关的文章,只好自己探索折腾。不过很快发现其实EOS已经为我们做好了的,只需带相关参数即可,只是官网没有介绍,自然网上也没有相关的文章。 编译带调试信息的EOS 编译可以调试(带源码信息)的EOS程序,增加-o Debug参数即可,即$./eosi...原创 2018-05-25 18:37:03 · 4286 阅读 · 0 评论 -
[EOS源码分析]5.EOS编写HelloWorld智能合约及各种坑
本文所有实践都是基于EOS dawn-v4.1.0,请切到该分支然后实践切换命令:git checkout dawn-v4.1.0HelloWorld源码#include <eosiolib/eosio.hpp>#include <eosiolib/print.hpp>using namespace eosio;class hello :...原创 2018-05-26 15:04:34 · 5926 阅读 · 2 评论 -
[EOS源码分析]6.EOS特殊智能合约eosio
这里说的eosio智能合约不是泛指eos的智能合约,它是一个特殊的具体的合约。它本事可大了,我们一起来看看它有哪些功能负责智能合约部署 大家有注意到如下红色字体的log吗$ cleos set contract hello.code ../eos-contract/hello -p hello.codePublishing contract...executed...原创 2018-05-26 23:04:15 · 5340 阅读 · 0 评论 -
[EOS源码分析]7.EOS智能合约开发实践之合约调用合约(inline action)
首先,目前dawn-4.1, dawn-4.2使用inline action是会报如下错误 transaction declares authority '{"actor":"hello.code","permission":"active"}', but does not have signatures for it under a provided delay of 0...原创 2018-06-01 11:43:01 · 5979 阅读 · 0 评论 -
[EOS源码分析]8.EOS保留权限eosio.code深度解读
inline action简单来说就是action调用另外一个action, 具体来说就是一个智能合约的代码调用另外一个智能合约的函数。 eoiso.code这一特殊权限是dawn4.0后新增的内部特殊权限,用来加强inline action的安全性。比如alice调用智能合约contract1.test,一开始alice看过contract1.test的逻辑,发现它只是一个打印函...原创 2018-06-03 16:25:33 · 5329 阅读 · 0 评论 -
[EOS源码分析]9.EOS智能合约开发实践之数据库持久化
以太坊智能合约定义的全局变量的值是持久性的,就相当于智能合约一直在运行着。而EOS的智能合约更加接近我们平时使用的程序,每次执行action都相当于启动智能合约的一个新实例,一旦执行完,代码定义的变量就释放了,不会影响下一次执行环境。但是智能合约肯定需要有持久化存储的需求,比如永久保存智能合约代币的状态,不能代币转账执行完,代币的balance余额信息和转账前一样吧。这个持久化存储就是数...原创 2018-06-04 10:41:56 · 4329 阅读 · 0 评论 -
[EOS源码分析]10.EOS区块同步及生产
本文所有实践都是基于EOS v1.0.1,请切到该分支然后对比源码切换命令:git checkout v1.0.1提到区块生产和同步,我们肯定有几个疑问?节点同步 1)节点从哪里同步数据 节点如何知道哪些节点有最新的区块数据以同步数据 2)genesis文件不同的节点互联会怎么样? ...原创 2018-06-06 10:56:36 · 5500 阅读 · 0 评论 -
[EOS源码分析]11.cleos create account创建账号失败源码分析
我们知道在部署eosio.system合约之前,cleos new account都是可以好好使用的,一旦eosio.system部署完成,再执行该命令就会报如下错误。 $cleos create account eosio itleaks EOS8Znrtgwt8TfpmbVpTKvA2oB8Nqey625CLN8bCN3TEbgx86DsvtError 3080001: a...原创 2018-07-02 11:37:26 · 3281 阅读 · 1 评论