eos源码解析
文章平均质量分 87
zhuxiangzhidi
这个作者很懒,什么都没留下…
展开
-
eos源码赏析(二):eos代码主分支架构
在上篇文章中我们完成了在Ubuntu操作系统编译eos的代码,我们会发现在原有的路径下会多出一个名为build的文件夹,那么这个文件夹里面有什么内容呢?这些东西是用来干什么的呢?古有庖丁解牛,现我们也将一一的分解eos代码主分支,看看这些代码都包含了什么内容,恰如我们看书都会先翻一下序文和目录一样,让我们大致看一下这些个【目录】,这样才能更容易打开eos的大门。 eos主目录下...原创 2018-03-31 10:46:22 · 7329 阅读 · 0 评论 -
eos源码赏析(十六):EOS智能合约数据表查询
今天群内讨论较多的内容为数据表的查询,集中在两个问题上: 为什么我的数据表查出来是个空的? 能否获取到某个数据表的数据量,即该表中存在几条数据? 针对这两个问题简单的给出答案就是: 基于eos进行智能合约开发时的abi注释要规范 可以修改一部分代码来获取某张表中的数据量,也可以获取到本次查询结果中的数据量。 数据表查询为空解决方案 仍旧以前文中的智能合约为例,在结构体...原创 2018-08-29 20:33:42 · 2672 阅读 · 2 评论 -
eos源码赏析(十九):EOS智能合约之合约中数据表中RAM的使用
上周eos更新版本至1.2.4,其中修复了ram使用权限的相关缺陷。当时在开发者群内也引发了一些讨论。那么我们今天来看看最新的版本在ram使用权限上到底做了哪些改动呢。涉及到权限的问题自然都是很严重的问题,因为它关乎到用户的资金安全,恰如这次关于ram的使用。 本文主要包含有以下内容智能合约中ram的使用eos中lambda表达式的使用智能合约中ram的使用 我们在以前的文章中多...原创 2018-09-11 19:42:31 · 535 阅读 · 0 评论 -
eos源码赏析(十七):EOS源码调试及跟踪(下)
在前文介绍了EOS源码调试及跟踪的方法以及IDE的使用,均在ubuntu16.04 下进行,笔者尝试在Windows下使用VS这款IDE结合Visualgdb进行调试的时候,代码运行起来了,但不知为何始终无法进断点调试,着实尴尬,在此向各位等待如何在Win下调试eos代码的朋友说声抱歉,具体尝试过程也会在本文中进行阐述,如果有对visualgdb比较熟悉的同学,还请多多指导。本文继续介绍一种I...原创 2018-09-10 22:51:46 · 651 阅读 · 0 评论 -
eos源码赏析(十八):EOS智能合约之合约内ram购买及资源抵押
昨天群内有朋友问,智能合约内是否可以实现帮用户购买ram或者帮用户抵押资源(cpu及net),以及如何来实现这个功能。今天我们一起来看下这个问题。文章的内容分为以下两个部分:buyram及delegatebw的实现合约内实现替用户购买ram及抵押资源1、buyram及delegatebw的实现我们知道在执行buyram的时候是分为两种情况的:以eos的单位来购买ram以r...原创 2018-09-10 23:00:30 · 990 阅读 · 0 评论 -
eos源码赏析(二十一):EOS智能合约之区块签名的天龙八“步”
在上篇文章中我们提到了,由用户操作会产生各种事务,事务的链上执行是由push_transaction来完成的,我们简单的划分了下,具体可参考eos源码赏析(二十):EOS智能合约之push_transaction的天龙八“步” 。我们知道,在区块生产或者打包事务信息的时候免不了对数据进行签名,同时对于非本节点的区块信息也要进行验签。当然,针对每一个事务也都有签名及验签的过程,我们今天以区块的签名过...原创 2018-10-02 16:41:54 · 1437 阅读 · 1 评论 -
eos源码赏析(二十二):EOS交易状态何时才是不可逆的
作为本文的读者,可能大部分都进行过eos代币的转账操作。我们平时的交易过程中,能体验到【立马到账】的感觉,这也是eos被越来越多的人认可的重要原因。然而在区块链系统中一笔交易是否完成,有一个很重要的因素就是该笔交易在链上是否是可逆的。今天我们就来谈谈一笔交易在什么情况下才是不可逆的。在行文之前首先感谢大佬Raymond及荆凯给予的帮助,同时建议了解下交易的基础知识,荆凯大佬曾经写了一篇文:【一...原创 2018-10-02 16:49:18 · 2205 阅读 · 0 评论 -
eos源码赏析(二十三):默克尔树在EOS中的应用(上)
前面文章中在分析push_transactioneos源码赏析(二十):EOS智能合约之push_transaction的天龙八“步”以及区块签名eos源码赏析(二十一):EOS智能合约之区块签名的天龙八“步”的时候都提到了默克尔树,受限于篇幅未做具体分析。今天我们来谈谈默克尔树在eos中的应用。拟分为上下两篇,上篇主要分为以下内容:默克尔树简介eos中如何构建默克尔树1、默克尔树简介关于...原创 2018-10-14 21:51:45 · 3223 阅读 · 0 评论 -
基于eos的Dapp开发--元素战争(一)
我们前面的内容主要都是在对eos的源码体系进行分析,有很多朋友说不够接地气,想要学习基于eos的Dapp开发。然而对于很多开发者而言,eos入门并非易事。从环境的搭建到智能合约的编写、编译、前端调用等等一系列的过程要耗费不少的时间。今天eos官推方出了一款小游戏,生动形象的引领有一定开发基础的朋友走进基于eos的Dapp开发,官方地址:元素战争为了让更多的开发者参与进来,我们以官方的batt...原创 2018-10-22 21:01:03 · 3071 阅读 · 0 评论 -
基于eos的Dapp开发--元素战争(二)
我们上篇文章中讲到完成一个Dapp的搭建需要两个主要的部分,即智能合约的编写以及前段的构建,今天我们首先来一步步看智能合约中主要有哪些内容以及是如何编写的。在智能合约中,数据的存储是较为重要的一环,我们在做源码分析的时候都知道数据是存储在Multi-Index(多索引表)里面的,本文将介绍如何创建一个多索引表以及如何通过action来更新表中的内容的,同时我们引入了智能合约中使用的ABI的概念。...原创 2018-10-22 21:10:58 · 795 阅读 · 0 评论 -
基于eos的Dapp开发--元素战争(三)
我们在前面的章节中先后介绍了一个基于EOS的Dapp中主要包含有哪些内容以及智能合约的编写过程和规范,今天我们来谈谈一个Dapp开发中另一个不可或缺的内容,即前端是如何开发的。在本次课程之前需要指出:在本课程中将涉及到private-key的操作,由于这仅仅是个教程所以在这里故意将private-key的使用简单化了,在我们自己进行DAPP的开发过程中是不可取的,一定要注意保护好用户的隐私以及自...原创 2018-11-05 23:08:31 · 702 阅读 · 0 评论 -
eos源码赏析(十五):EOS源码调试及跟踪(上)
工欲善其事,必先利其器。 前期一直在对源码做分析,其中有很多eos开发入门者还未深入到这一步,于是最近后台有很多留言,问关于如何进行eos代码调试的问题,这其中涉及到调试的IDE工具以及调试的方法。 从个人经验来看,若要对代码进行跟踪无外乎通过日志的打印去跟踪和断点调试堆栈的调用去观察代码调用的流程。今天我们就简单的谈谈如何对代码进行跟踪调试,系列同样分为上下两篇:上篇针对Li...原创 2018-08-29 20:32:58 · 1175 阅读 · 0 评论 -
eos源码赏析(十四):EOS智能合约数据持久化存储(下)
上篇文章发出来之后,群内前辈@郭其淼 针对性的提出两个问题:1、 创建用户时可以用emplace的返回值作为已创建对象的编号。2、 未对Multi-Index的一个关键性二级索引作出说明。今天我们结合这两个问题,去看看Multi-Index中的相关函数的实现,以及Multi-Index和chainbase之间的交互。本文主要包含有以下内容: Multi-Index中...原创 2018-08-26 19:53:46 · 998 阅读 · 0 评论 -
eos源码赏析(一):Ubuntu下eos代码编译
网上已经有很多关于btc的源码分析了,由于eos主网上线还需时日,且网上关于eos的源码解析较少,斗胆尝试着做一个系列的文,学习eos的源码,也提升一下自己的阅读代码的能力和对新知识的了解能力。要阅读赏析源码首先运行起来,看看大概是个什么样子,这样心里有个底,也就踏实多了。本文为系列文的第一篇,Ubuntu下eos代码的编译,是依据官网文档的指导完成的。官方文档链接:https://github....原创 2018-03-26 20:40:23 · 2019 阅读 · 0 评论 -
eos源码赏析(四):基于boost::asio的httpserver架构
前言 eos代码更新很快,在4月初已经升级到3.0版本,随着版本的更迭,在各个操作系统下的编译、节点的运行都越来越集成化,不需要自己再一步步的下载依赖,如果感兴趣可以直接按照官方wiki进行编译。官方wiki地址:https://github.com/EOSIO/eos/wiki 一般不会出现什么错误,当然如果出现编译、测试节点运行出错的情况可以添加我个人微信(见本文最下方),我会尝试...原创 2018-05-20 16:06:53 · 2628 阅读 · 0 评论 -
eos源码赏析(三):eosd初始化
上篇文章以文件分类简单的介绍了eos代码的架构,由于eosiod在整个工程中是较为重要的,接下来的例子中我们将以eosiod为主线进行相关内容的分析和探讨,今天我们主要看一下eosiod的初始化相关内...原创 2018-05-07 22:25:03 · 1993 阅读 · 0 评论 -
eos源码赏析(五):EOS智能合约入门之无崖子传功虚竹
读过《天龙八部》小说或者看过《天龙八部》影视剧的朋友们对无崖子将自己毕生功力传给虚竹都应该不算陌生。我们平时在了解或者熟悉基于各种语言或环境的智能合约开发的时候都不可避免的接触到交易这个概念,即token从一个账户到另一个账户之间转移的过程,那么无崖子传功虚竹是否也是类似的一个过程呢?将功力从无崖子转到虚竹,今天我们就尝试着将这个过程通过eos智能合约开发的形式简单的展示一下。 ...原创 2018-06-25 22:20:07 · 828 阅读 · 0 评论 -
eos源码赏析(八):EOS智能合约入门之区块生产
插件初始化 区块的生产是在producer_plugin里面实现的,和其他所有插件一样,插件初始化的时候从配置文件中读取相关参数如:私钥相关、区块产生相关、交易设置相关等参数并写到内存中去,接下来会使用到。和所有其他插件的初始化一样,大都是从配置文件中读取,然后根据关键字去匹配,匹配成功则写入内存,代码不再粘贴。C++Tips在插件启动的时候会调用on_block()函数,在这个函数中...原创 2018-07-17 23:08:32 · 1725 阅读 · 0 评论 -
eos源码赏析(六):EOS智能合约入门金叶子兑换碎银
武侠小说中的群豪们似乎总不缺钱,经常有台词就是小二来两斤熟牛肉、两斤烧酒,不用找了,难道他们都这么有钱的么?熟悉金庸小说《鹿鼎记》的朋友应该对狗官吴之荣还有些印象,庄允城在书中给他夹了若干金叶子。金叶子直接花出去不太方便,需要兑换成银子再进行消费,那么,这个用金叶子换碎银的过程是怎么实现的呢,兑换的比例又有谁来决定呢,兑换的过程中收不收手续费呢,今天我们就以eos智能合约的方式来简单...原创 2018-07-05 22:50:17 · 681 阅读 · 0 评论 -
eos源码赏析(七):EOS智能合约入门之共识机制初探
从丐帮帮主及丐帮长老的选举说起。 金庸小说中塑造了众多丐帮帮主的形象,如汪剑通、萧峰、洪七公、黄蓉、鲁有脚、耶律齐、史火龙等。这些帮主在未当选帮主之前大都是丐帮中普普通通的一员,后来经过投票选举---也就是吐唾沫的方式当上了帮主。这和现在eos的各大BP的竞选类似,eos的持有者可以通过投票的方式或者代理投票的方式选择自己意向中的BP,今天我们就从选举和投票的角度来谈...原创 2018-07-05 23:05:18 · 2310 阅读 · 0 评论 -
eos源码赏析(九):EOS智能合约入门之区块打包和广播机制
首先感谢群里的大佬中山狼、linx、阿泥豆等各位给予的指导。在上篇文章中我们写到了eos中区块产生的调用流程,其主要过程是从插件中的producer_pligin去产生区块,而实际产生区块的过程却是在chain中的controller.cpp中实现的。通过以前的文章我们知道,在eos区块的产生并不仅仅是单独产生的过程,它还需要进行区块打包、入库、广播、上链等过程,今天我们就来谈谈区块产生之后又...原创 2018-07-21 19:51:09 · 2022 阅读 · 0 评论 -
eos源码赏析(十):EOS智能合约入门之区块上链
或许我们还都记得美国队长的勇敢、神武,为了捍卫自由和保卫人民而拥有的坚不可摧的盾牌,但我们还记得那个瘦弱到不堪一击的史蒂夫.罗杰斯么?血清的注射让他变成了很多人心目中的英雄。那么我们又可曾想过,美国队长还会变成以前的那个因瘦弱的身躯而一直被人嘲笑的史蒂夫.罗杰斯么,或许真的已经变不回去了,因为血清的注射是一个不可逆的过程,就如同eos中区块产生、确认之后是一个不可逆的过程一样。下面结合源码,承接上...原创 2018-07-26 22:27:19 · 1458 阅读 · 0 评论 -
eos源码赏析(十一):EOS之从“狼人游戏”看智能合约调用及权限分配(上)
火了没几天的“狼人游戏”因某些原因遭到口诛笔伐而下线,后期参与的玩家可谓损失惨重,而这一切的操盘仿佛都指向一个并不算匿名的匿名团队,毕竟在区块链上任何动作的执行都是可追溯的。该游戏上线不久即被指出存在数据溢出风险,同时该游戏的合约可以获取到参与用户的active权限,作为一个新生事物,eos的智能合约是可以更新的,可以想象当一个智能合约的开发者拥有了用户的active权限和一颗作恶的...原创 2018-08-04 10:59:15 · 1530 阅读 · 0 评论 -
eos源码赏析(十二):EOS之从“狼人游戏”看智能合约调用及权限分配(下)
接上篇,本篇从智能合约内部权限使用出发,结合“狼人游戏”源码,谈谈eosio中权限的分配及使用,本文主要分为以下三部分: 狼人团队的声明探析 多签名账户 权限eosio.code的相关说明 狼人团队的声明eos3d合约地址https://github.com/yanxi-me/eos3d-contract在“狼人游戏”源码底部,其团队已声明:将owne...原创 2018-08-13 19:50:46 · 1195 阅读 · 0 评论 -
基于eos的Dapp开发--元素战争(四)
上节内容中我们讲了前端和智能合约之间通过一个service组件进行交互,并将前端的数据通过push action的方式存储到多索引表中。那么我们如何从智能合约的表中取数据出来并展示在前端界面呢,这便是我们今天要学习的内容。对eos有一定了解的朋友们应该知道RPC接口的存在,我们可以通过cleos命令行的get table来获取表中的内容,也可以通过RPC接口中的get_table_rows来获取...原创 2018-11-05 23:12:13 · 1341 阅读 · 0 评论