![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Eos
文章平均质量分 79
yhc166188
路虽远,行则将至;事虽难,做则必成!
展开
-
eos代码架构
EOS由programs、plugins、librarires、和contracts四部分组成,可以看出石墨烯的架构和EOS的架构是很相近的,EOS增加了对智能合约的支持。实际上EOS并没有直接用石墨烯的源代码,而是重写了90%的代码,不过基本架构是一样的。石墨烯技术(Graphene blockchain library)是一种区块链底层技术架构,由Cryptonomex公司开发, 采用C+...原创 2020-03-21 21:06:44 · 411 阅读 · 0 评论 -
eos虚拟机与智能合约详解与分析
文章目录1. 相关背景知识1.1 LLVM相关内容1.1.1 LLVM架构概述1.1.2 LLVM IR介绍与分析1.1.2.1 LLVM IR指令集1.1.2.2 LLVM IR类型系统1.1.2.3 LLVM IR内存模型1.1.2.4 LLVM IR函数调用1.1.2.5 LLVM IR示例1.1.3 LLVM JIT介绍与分析1.1.3.1 LLVM JIT实现原理1.1.3.2 LLVM...转载 2020-03-14 22:55:37 · 1063 阅读 · 0 评论 -
wasm虚拟机相关接口定义实现
1、执行流程controller::push_transaction() // 事务 -> transaction_context::exec() // 事务 -> transaction_context::dispatch_action() // 通过便利transaction中的各个action来分发执行 -> apply_context:...原创 2020-02-25 20:57:13 · 1221 阅读 · 0 评论 -
eos 账户名与uint64_t转换(N与name)
N与name弁言在EOS智能合约中,你应当见到过相似如许的语句:require_auth( N(user));结合上一篇的内容,这句话的意义是指,搜检:在以后action的已受权的允许列表中,是不是存在user账号,若是存在,则甚么也不做;若是不存在,则抛出非常。还记得我们之前写的hello合约吗?外面的hi 这个action的处置惩罚函数(handler)大抵是如许的:...转载 2018-11-08 20:16:53 · 1680 阅读 · 0 评论 -
eos require_auth函数
action的结构要说清楚这个方法的含义和用法,咱们需要从action的结构说起。详见eoslib.hpp中的action类,这里把它的结构简化表示成下面这样: * struct action { * account_name account; // the contract defining the primary code to execute for co...转载 2018-11-08 19:41:21 · 1551 阅读 · 0 评论 -
EOS 调试合约之日志打印
EOS智能合约的开发,目前还没有办法像传统CPP开发一样通过lldb/gdb进行断点调试。目前只有通过打日志的方式进行调试。若想在命令行中将合约日志打印出来,需要在启动nodeos的时候传入--contracts-console选项,否则日志不会被打印。基本C函数在print.h文件中,提供了几个基本的C函数,因为C没有重载,所以其实可以认为是提供了print的统一桥接层。这里为什么...转载 2018-10-25 20:14:05 · 595 阅读 · 0 评论 -
C++ 反射机制
反射机制:反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为语言的反射机制。Reflection 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说”自审”,并能直接操作程序的内部属性。即可以在运行时加载、探知、使用编译期间完全未...原创 2018-10-25 19:41:47 · 1019 阅读 · 1 评论 -
eosiolib文件解析
Source base on EOS version: 1.0.5,some photo except. 在eos源码中,eosiolib库在源码中的位置如下:在\eos\contracts\eosiolib一共有46个文件,其中很大部分都为头文件,具体的实现都在 eos/libraries/chain/wasm_interface.cpp中,下面我们对每个文件都做一个较为简单的介...转载 2018-10-23 10:06:36 · 231 阅读 · 0 评论 -
EOS deferred action与inline action
actionEOS体系是以通讯为基本的,action就是EOS上通讯的载体。若是你想挪用某个智能合约,那末就要给它发action。若是你的智能合约要供应某种效劳,供他人挪用,那该智能合约就要供应action的处置惩罚器(handler)函数,这些handler函数就是你对外界发来的action做出响应中央,也可以或许说是,你给他人供应效劳的中央。在没有严加辨别的时刻,我说的actio...转载 2018-10-10 19:56:05 · 1256 阅读 · 0 评论 -
EOS的账户授权和多重签名
钱包:钱包是一个存储账户Key、权限Key的客户端。它支持一个或者多个账户,通过高复杂度的密码来加锁、解锁钱包。EOS的代码中自带了一个轻量级的钱包-keosd。keosd通过调用cleos接口来与区块链建立连接账户:一个账户以人类可读的名字存储在区块链中,它按照权限配置从属于一个个人或者组织。在转账或者推送一笔交易到区块链的时候账户是必须要有的。BTC简单说账户就是Address...转载 2018-10-10 16:32:02 · 1696 阅读 · 0 评论 -
eos系统合约提案合约eosio.msig (下)
简介本篇将为大家介绍eosio.msig的源码实现,合约代码库详见:eosio.msig。eosio.msig主要有propose、approve、unapprove、cancel、exec、invalidate这几种方法,下面会详细逐一介绍每种方法的功能和实现细节。主要合约方法eosio.msig合约,在eosio.msig.hpp头文件中,主要定义了以下六个合约方法:- pr...转载 2018-10-12 14:25:29 · 424 阅读 · 0 评论 -
eos系统合约介绍 eosio.msig (上)
简介本篇将为大家介绍eos一个系统合约eos.msig的主要功能和源码实现细节。eos.msig是eos的提案合约,同样也是cleos multisig命令调用的系统合约,可用于提案、通过/不通提案、执行多重签名交易等功能。由于涉及内容较多,介绍将分为上下两篇,上篇将围绕eos账户权限、cleos multisig命令的使用这几个方面进行介绍,下篇则会为大家介绍eosio.msig的源码实现。...转载 2018-10-12 13:58:38 · 530 阅读 · 0 评论 -
【eos不定期更新的日常】系统合约最近升级了什么?
简介最近实在太懒惰了,再勤快点写篇eos最近的动向为大家充充电。所谓币圈一日,人间一年,eos主网上线不知不觉已经三个月了,其中有很多bug亟待block.one解决。最近一次的系统合约升级,就有效的解决了好几个系统问题。升级流程eosio账户的权限,已经被21个超级节点所控制了。再跟大家复习下,目前,eosio账户被eosio.prods账户控制,而eosio.prods账户被21个...转载 2018-10-12 10:21:30 · 322 阅读 · 0 评论 -
os 九个系统账户介绍
1.eosio.bpay:矿工获取出块奖励的临时代管账户,增发EOS的1%的25%会先转到这个账户临时代管并向出块节点支付相应奖励(EOS 1% 增发中的 25% 转入此账户),矿工到这里领相应的工资。2.eosio.msig:多重签名管理的账户3.eosio.names:靓号账户拍卖管理的账户用于储存竞拍短账户消耗的EOS,与eosio.ramfee类似,这也是消除通胀的一种方式...原创 2018-10-11 17:46:01 · 435 阅读 · 0 评论 -
eos 常用命令
一、安装命令行钱包1、下载 EOS 源代码 如果没有安装 git , 请先下载安装 git , 网址: https://git-scm.com 下载 EOS 源码: git clone https://github.com/EOSIO/eos --recursive 2、编译安装编译:cd eos./eosio_build.sh安装cd buildsud...转载 2018-09-20 23:25:11 · 1971 阅读 · 4 评论 -
账户之实战篇
这篇文章为大家介绍钱包(Wallet)、账户(Accounts)、账户权限(Account authorities)的概念。钱包 Wallet钱包是一个本地客户端软件,有下面两个作用: 保存私钥。私钥可以和一个或多个账户关联,私钥保存在钱包中,私钥对应的公钥保存在账户中。 对交易签名。账户(Account)发起交易(Transactions)时,需要通过钱包客户端对交易...转载 2018-09-24 17:56:35 · 203 阅读 · 0 评论 -
eos cpu_limit
Eos中,通过抵押token的方式,提供cpu运算时间以供用户完成交易。net资源计算方式与cpu类似。本文旨在理清变量间关系,故略过大部分中间变量,仅记录关联度较大的部分。在eos测试中,用账号进行高频的transfer(转账)操作,出现了以下报错。所以决定做一份关于cpu限制的笔记。3080004 tx_cpu_usage_exceeded: Transaction excee...转载 2018-12-06 18:30:11 · 1182 阅读 · 0 评论 -
EOS用户资源管理resource_limits深入解析
简介eos中用户资源分3类,1)ram,2)cpu,3)net,其中ram资源的获取主要通过变种的Bancor算法实现ram的自动定价,去中心化交易,具体的实现可以查看eosio.system合约中的exchange_state.cpp,用户的cpu跟net资源通过抵押eos来获取,抵押eos形成抵押权重相应为cpu_weight,net_weight,抵押的越多可以获取的资源越多,这跟ram...转载 2018-12-06 18:31:56 · 674 阅读 · 0 评论 -
EOS存储
谈到区块链的存储,我们很容易联想到它的链式存储结构,然而区块链从比特币发展到今日当红的EOS,技术形态已经演化了10年之久。目前的EOS的存储除了确认结构的链式存储以外,在状态存储方面有了很大的进步,尤其是引入了MongoDB plugin以后,可以将功能有限的状态库搭上大数据的班车。本文将全面介绍EOS的存储技术。EOS 存储,Merkle Tree,mongodb,chainbase...转载 2018-12-28 17:02:47 · 3833 阅读 · 0 评论 -
EOS源码解析 使用多线程从签名生成对应公钥
昨天早上,EOS 1.5.0 release 版本发布了。这次比较大改动点是在多线程签名上面。它将同步区块时的 block 签名验证和 trx 签名验证都使用多线程签名验证,来节省同步所需要的时间, 但是生产区块所需要的成本是不变的,但为什么生产区块成本不变呢。接下来介绍一下具体的改动。区块多线程签名改动:同步区块时进行多线程签名, replay 过程中依然是单线程签名。因为区块同步时需要回...转载 2019-09-01 15:31:37 · 185 阅读 · 0 评论 -
eos中签名验签流程和eosjs中的加解密原理
本文主要探讨两方面1.eosjs中用密钥对进行加解密功能2.eos中密钥对生成,签名和验签过程(私钥签名 公钥验签)常用的加密算法对称性加密算法对称式加密就是加密和解密使用同一个密钥,信息接收双方都需事先知道密匙和加解密算法,之后便是对数据进行加解密了.对称加密算法用来对敏感数据等信息进行加密。对称性加密算法有:AES、DES、3DESDES(Data Encrypti...原创 2019-08-26 22:17:49 · 803 阅读 · 0 评论 -
深入解读EOS源代码之——区块链内核
本文的目的是深入解析EOS的源代码,所以是“探底”的工作,而不是展现“全貌”,读者最好对EOS的一些顶层设计原理有所了解,如果您想充分了解这部分内容,请参阅EOS的白皮书(https://github.com/EOSIO/Documentation),含中文翻译。EOS区块链内核为了理解EOS区块链的基本原理,首先需要了解这它的数据结构和关键算法,数据结构和算法是构成整个骨架的基本元素,对...转载 2019-06-28 14:55:39 · 682 阅读 · 0 评论 -
高级EOS系列 - 第4部分 - 表的唯一性
独特的索引到目前为止,我们可以在我们的表中创建由我们的唯一account_name标识符索引的行,但是我们如何使用不同的primary_key并确保它是唯一的?幸运的是,EOSIO的开发人员为我们提供了这项available_primary_key()功能。让我们首先创建一个struct来定义Item我们的items表。我们将使用uint64_t类似法线来指定我们的主键id。// @...翻译 2019-04-25 09:44:33 · 195 阅读 · 0 评论 -
EOS智能合约之push_transaction的天龙八“步”
eosio整个系统中,transaction占据着十分重要的位置。我们在区块链上的任何有效操作,都代表着有transaction被执行了。在执行的过程中,push_transaction是不可以被忽略的。例如我们创建账户的时候,会通过push_transaction写到区块信息中,我们进行转账也会push_transaction写到区块信息中,今天我们来看看push_transaction作为区块...转载 2019-04-29 16:10:35 · 802 阅读 · 0 评论 -
解析 deferred_transaction 的原理
eosio::transaction out;out.actions.emplace_back( permission_level{ from, N(active) }, _self, N(refund), from );out.delay_sec = refund_delay;cancel_deferred( from ); // TODO: Remove this line whe...转载 2019-04-29 10:20:56 · 772 阅读 · 0 评论 -
高级EOS系列 - 第3部分 - 二级索引
主要索引到目前为止,您应该知道如何使用struct在EOS中定义多索引表,但为了完整起见,我们简要介绍一下我们的基本表定义。定义struct我们将首先定义我们struct及它所需的primary_key函数,这是我们调用时使用的索引find(KEY)。现在让我们使用用户account_name的独特性,并在下一章中介绍一种更通用的方法。// @abi table items i...翻译 2019-04-24 10:08:57 · 265 阅读 · 0 评论 -
高级EOS系列 - 第2部分 - 单例模式
单例模式应该用来存储合约状态,或者当只需要一行时,作为多索引表的替代。持久性我们将探讨单例模式作为合约状态持久性的方法。使用table会浪费资源,因为我们的数据只会占用一行。定义单例模式对于此示例,我们将使用单例来存储合约配置状态。让我们用结构来定义我们的单例。我们将使用一种bool类型closed和uint32_t类型char_count。我们可以用它来限制用户上传大小。...翻译 2019-04-24 09:53:33 · 211 阅读 · 0 评论 -
高级EOS系列 - 第1部分 - 加密哈希
加密哈希函数让我们首先看一下哈希,这个例子的所有资源都可以在GitHub上找到。在密码学中,散列算法接受输入并生成固定大小的hash,称为输出摘要。摘要是确定性且不可逆的,这意味着相同的输入将始终生成相同的输出,并且输出无法反转以获得原始输入。良好的散列算法通过在最短的计算时间内使用“高难度”来最小化输出冲突。冲突或碰撞是两种不同输入产生相同输出的可能性。哈希的应用通常我们将使用哈希函...翻译 2019-04-23 17:59:19 · 270 阅读 · 0 评论 -
聊一聊最近大火的闪电网络
简介最近,闪电网络的火炬传递活动,让闪电网络一下子从理论阶段,跃升成实践。作者年前在同事的分享中,学习了闪电网络的原理,感觉设计确实很巧妙,一旦大规模应用,能让btc实现秒级支付,真正让btc的世界货币梦想come true。本文,会介绍闪电网络的设计原理,主要涉及多重签名地址、 RSMC、HTLC几大概念。基本原理假如Bob和Alice经常有业务来往,结算方式是btc。但是,btc的...原创 2019-03-04 19:33:30 · 691 阅读 · 0 评论 -
eos INLINE Action 和 eosio.code 使用說明
1、inline action简单来说就是action调用另外一个action, 具体来说就是一个智能合约的代码调用另外一个智能合约的函数。现在的eos(好像是自从dawn 4.0之后),只要在合约中调用另一个合约的action,不管以什么代码格式调用,都自动是inline action。 eosio.code 的解释:eoiso.code这一特殊权限是dawn4.0后新增的内部特殊权...转载 2019-01-05 17:09:24 · 1104 阅读 · 0 评论 -
EOS源码备忘-Push Transaction机制
这里我们讨论EOS Push Transaction 的逻辑,这块EOS与Eosforce实现有一些区别,我们会着重点出。 关于wasm相关的内容我们会有一片专门的文档分析。我们这里通常将Transaction译做交易,其实这里应该是事务的意思。1. Transaction与Action在EOS中Transaction与Action是最重要的几个类型, 在EOS中,所有的链上行为都是A...转载 2018-12-29 15:18:15 · 1011 阅读 · 0 评论 -
EOS自动的延迟转账
transaction 里面有一个 delay_sec 的参数,默认是0,可以通过自定义实现延迟EOS转账。具体代码可以查看 contracts/eosiolib/transaction.hpp我们通过写一个新的合约,实现延时转账的 send 功能void send(account_name from, account_name to, asset amount, string memo...原创 2018-09-24 17:35:54 · 975 阅读 · 0 评论 -
5行代码帮你梳理EOS.IO的脉络
EOS号称Blockchain上的操作系统,且白皮书和开发日志都描述的非常美好,同时也有无数人看好这个项目,但对于一个开源项目来说,再好的愿景,还是需要实际产品的支撑,永远都要记住Talk is cheap, show me the code...这篇文章的目的是帮助梳理EOS.IO的核心——eosiod的代码脉络,为后续深入研究源码打下基础。本文假设你已经下载了EOS.IO的代码...转载 2018-09-24 16:34:32 · 236 阅读 · 0 评论 -
5分钟学会cleos注册EOS主网账户、投票和发币
第一步: 安装dockerhttps://www.docker.com/community-edition# install docker for CentOS. (其他操作系统看上面链接)sudo yum install -y yum-utils device-mapper-persistent-data lvm2sudo yum-config-manager --add-repo...转载 2018-08-19 09:20:34 · 2241 阅读 · 1 评论 -
EOS代码架构及分析(一)
EOS简介EOS(Enterprise Operation System),企业操作系统,是为企业级分布式应用设计的一款区块链操作系统。相比于目前区块链平台性能低、开发难度大以及手续费高等问题,EOS拥有高性能处理能力、易于开发以及用户免费等优势,极大的满足企业级的应用需求,被誉为继比特币、以太坊之后区块链3.0技术。EOS优秀基因的背后是其底层的石墨烯软件架构所决定的。其实EOS不是最早...转载 2018-08-15 23:41:20 · 701 阅读 · 0 评论 -
刚炒完RAM,CPU饥荒时代就快来临,且用且珍惜吧
最近一天很多朋友反馈它的账号冻结了,啥都没法操作了,我们先看看一组数据 场景还原 昨晚23点到24点短短1个小时,全网CPU抵押的EOS快速激增了一倍,导致每个人可以用的CPU减少了一半 进而很多账号的CPU都超支了,就是已使用的CPU超过了用户拥有的CPU量,进而处于僵死状态,啥都不能做。比如下图,limit=5.9,已使用的量却是7.2。 ...转载 2018-08-15 23:30:31 · 311 阅读 · 0 评论 -
EOS零手续费免费?你不知道的EOS收费细节
EOS是收取手续费的,主要体现在ram上。cpu和net也是收费的,但是是一种临时抵押冻结方式,一段时间后会自动解冻, 所以从一定程度上说cpu, net资源是免费的。这个其实也是合理的,因为ram是物理资产,不随时间的增长而增长。而cpu, net资产是一种虚拟资产,它的量是跟时间相关的。时间越长,它的量越大。1个月的cpu计算量肯定是1天cpu计算量的30倍。 账号的资源拥有状态保...转载 2018-08-15 23:23:06 · 1091 阅读 · 0 评论 -
如何释放已使用的EOS RAM,然后就可以自由买卖了
昨天到今天,EOS RAM价格大跌,有一些用户想卖RAM,但是却发现大量RAM被占用,比如下图: 这位伙伴找到我时,他说啥都没做但他的内存使用量怎么高达189k,然后我查了一下该账号的交易记录,发现他曾经部署过智能合约。然后他告诉我是他不小心部署的,且报错了,以为没部署成功。可见RAM被智能合约吃掉了,那怎么办呢?释放已经使用的EOS RAM 个人使用掉的...转载 2018-08-15 23:04:32 · 530 阅读 · 0 评论 -
EOS RAM交易背后的阳谋和阴谋
区块链一直有两个最核心的基本指标,去中心化和高TPS。去中心化和高TPS其实是一对矛盾,越去中心化,效率越低,TPS自然就低。因此DPOS应运而生,投票选出21个代表,决策者只有21个代表,而不是POW的全民运动,自然决策效率高。EOS是DPOS共识算法的一次最大规模应用和实验。但是高TPS会带来两个很大的问题,那就是高数据量和高实时处理量高数据量 以太坊的历史数据量...转载 2018-08-15 22:58:54 · 251 阅读 · 0 评论 -
EOS Bios Boot Sequence 启动步骤
通过分析并运行eos/tutorials/bios-boot-tutorial目录下的bios-boot-tutorial.py脚本文件,结合以前的学习过的eos命令,对eos的启动过程做一个简略的分析。此文件在于用单台主机模拟eos的启动流程,最后创建了多个节点并轮流出块的环境,为以后布置多节点多主机环境创建一个良好的基础。在运行bios-boot-tutorial.py脚本前,请安装好py...转载 2018-08-14 23:44:34 · 1419 阅读 · 0 评论