一、目的eosio.token系统合约定义了允许用户为基于EOSIO的区块链创建、发行和管理代币的结构和操作,它演示了一种实现允许创建和管理代币的智能合约的方法。本文详细介绍了eosio.token系统合约并在本地测试链上实际发行了代币进行演示,适用于EOS智能合约的初级开发人员,熟悉如何进行代币的创建、发行和转移。二、概述(一)合约数据结构简介eosio.token合约通过使用两个内部多索引结构管理代币、账户及其相应余额的集合:accounts和stats。accounts多索引表的每一行都包含account对象的实例,而account对象包含有关一个代币余额的信息。accounts表的范围
回顾《【区块链】发布一个纯Python实现的EOSIOWAXSDK》在之前的文章中,我们动手重新实现了一个轻量级的EOSIOSDK,但使用了一段时间,发现有时候提交交易到EOS/WAX网络的RPC节点时,会返回如下错误:{“code”:500,“message”:“InternalServiceError”,“error”:{“code”:10,“name”:“assert_exception”,“what”:“AssertException”,“details”:[{“message”:“is_canonical(c):signatureisnotcanonical”,“file”:“ell
EOSIO合约开发库通过简单的源码分析,可以很清楚的看到EOSIO合约开发库在目录libraries下,各个库的功能如下:注意:由于篇幅问题,只介绍最主要的,常用的CDT:总目录|----libraries:合约开发库总目录|----boost:经过裁剪的boost库|----eosiolib:链提供的合约API接口|----capi:访问链的宿主函数API接口|----contracts:宿主函数API的部分封装|----action.hpp:对action分装,调用内联action,使用此类|----contract.hpp:合约基类|----multi_index.hpp:合约中最重要的
帐户标识EOSIO区块链中的参与者,要使用EOSIO区块链,首先需要创建一个帐户。然后可以将智能合约部署到该帐户,并使用其他帐户权限来授权智能合约交易。本教程详细介绍了eosio.system智能合约中的账户和权限模块,适用于EOS智能合约的初级开发人员,熟悉如何进行账户的创建、短账户的竞标,以及自定义权限的创建、链接、取消链接、删除等。01概述(一)账户简介EOSIO帐户是由12个字符组成,仅包含小写字母a-z和数字1-5。每个账户的所有权仅由账户名称决定,因此一个帐户可以更新其密钥,而不必将它们重新分发给其他方。除了账户名,账户实例还与其他字段相关联,例如创建时间、ram配额/使用、cpu
智能合约代码举例纵观整体代码有如下特点符合C++代码语法,包含相应的头文件,命名空间公有继承合约基类contract在语法中出现了新的标签代码如:[eosio::contract],[eosio::action]等代码尾部出现新的宏EOSIO_DISPATCH合约编译工具工具名称:eosio-cpp命令行:eosio-cpp-ohello.wasmhello.cpp–abigen编译结果:生成hello.wasm和hello.abi文件合约编译过程命令行的解析过程,不做过多解释,在编译过程中使用ClangTool完成代码的分析与合约信息提取,Clang-7完成合约文件的编译过程,将cpp文件编
什么是EOSIOEOS,可以理解为EnterpriseOperationSystem,即为商用分布式应用设计的一款区块链操作系统。EOS是引入的一种新的区块链架构,旨在实现分布式应用的性能扩展。它并不是像比特币和以太坊那样的货币,而是基于EOS软件项目之上发布的代币,被称为区块链3.0。EOS是提供智能合约计算的可编程区块链,他是由位于美国的一家名为block.one的公司开发,全程采用C++语言来实现,智能合约采用剪辑过的C++语言来实现,相比于以太坊,拥有更高的TPS,EOS没有手续费,它是按照用户所消耗的资源来间接收费的。获取EOSIO二进制安装MacOS:brewtapeosio/eo
EOSIO漏洞复现实验环境nodeos:2.0.12EOSIO.CDT(编译器):1.2.1实验数据准备解锁账户(默认锁定时间较短,可以自己修改配置文件使得时间更长)yourcount:指你自己创建的钱包名$cleoswalletunlock-nyourcount--passwordEOSFakeTransfer复现过程存在漏洞的合约示例(test.cpp):if(code==self||action==::eosio::string_to_name("onerror")||code==N(eosio.token)){ print("receiver:",name{receiver},",c