eos智能合约源代码解读总体说明

thefist11 thefist11     2023-01-08     440

关键词:

1. 基本定义

在eos私有节点操作中,我们通常是一个合约对应一个合约账户,并且一个账户中只能部署一个智能合约。如果在同一个账户部署多个合约,那么最后部署的合约会覆盖掉之前的合约。每个帐户都至少链接到一个公钥,而这个公钥又链接到钱包里面的一个私钥。

2. EOS源代码合约

2.1 eosio.token合约: 负责发现币种
2.2 eosio. msig提案合约

提案合约同样也是cleos multisig命令调用的系统合约,可用于提案、通过/不通提案、执行多重签名交易和用户权限管理用的。每一笔Transaction都会被相应的用户用其密钥签名发布,多重签名即Transaction被多个人签名后才可以发布成功。

2.3 eosio.system

是EOS的智能合约,eos三个核心功能:

  • 用户抵押token,可以投票给区块生成者(block producer),就是目前竞争火热的21个超级节点,还有获得社区提案(worker proposal)的权利。
  • 设置代理,把投票权移交给其他用户。
  • 抵押token,获得相应的网络带宽,存储空间,运算能力

2.4 eosio.boot合约:用来激活 Activates a protocol feature

2.5 eosio.bios合约 Basic Input/Output System 基本输入输出系统

bios 合约就是让我们能进行最底层的操作的合约,其它合约的运行建立在 bios 合约的基础之上,所以我们先来加载 bios 合约

如果把 EOS 或者说 nodeos 看做一个操作系统, bios 合约看做启动计算式时按 F8 就能进入的 bios 系统就可以了。这东西必不可少,软件的运行建立在这个基础上,但我们一般情况下不用去管它,只要保证它顺利加载就行。

作用

  • 可以直接控制其它账户的资源分配
  • 可以使用其它需要权限的API调用

eos智能合约源代码解读classcontract(代码片段)

1.所有合约的基类#defineCONTRACTclass[[eosio::contract]]//合约#defineACTION[[eosio::action]]//动作#defineTABLEstruct[[eosio::table]]//表namespaceeosio/***newcontractshouldderivefromthisclass,soitcanmakeuseofeosio 查看详情

eos智能合约源代码解读bios合约(代码片段)

class[[eosio::contract("eosio.bios")]]bios:publiceosio::contractpublic:usingcontract::contract;[[eosio::action]]voidxx_setabi(text_nameaccount,conststd::vector<char>&abi);[[eosio::a 查看详情

eos智能合约源代码解读合约开发示例(代码片段)

官方提供了一个工具eosiocpp,它可以按照固定的模板创建一个新的智能合约。eosiocpp可以创建2个合约文件(曾经是三个文件),它们仅仅包含了合约的框架。1.HelloWorld合约代码如下:testcc.hpp:/***@file*@copyri... 查看详情

eos智能合约源代码解读(10)token合约“简介”(代码片段)

1.记录用户的token,比如有哪些代币class[[eosio::contract("eosio.token")]]token:publiccontractpublic:usingcontract::contract;[[eosio::action]]void_create(consttext_name&issuer,constasset&maxi 查看详情

eos智能合约源代码解读symbol.hpp(代码片段)

token的名称和数字精度名称大写/**classsymbolrepresentsatokenandcontainsprecisionandname.Whenencodedasauint64_t,firstbyterepresentsthenumberofdecimals,remainingbytesrepresenttokenname.Namemustonlyincludeuppercaseal 查看详情

eos智能合约源代码解读合约之action(代码片段)

1.动作(action)是EOS合约的灵魂,是EOS的基础组成单位1.1一个动作就是一个公开的(pubic)的C++类的成员方法必须使用[[eosio::action]]C++11特性修饰,否则就是一个普通的类成员函数访问级别必须是公开的public必须没有... 查看详情

eos智能合约源代码解读(12)system合约“native.hpp”(代码片段)

1.native类//system_contract合约类继承于native,class[[eosio::contract("eosio.system")]]system_contract:publicnative//native合约类继承于eosio::contractclass[[eosio::contract("eosio.system")]]n 查看详情

eos智能合约源代码解读(13)system合约“native类的关键方法”(代码片段)

1.native.hppclass[[eossys::contract("eossys.system")]]native:publiceossys::contractpublic:/***Newaccountactioniscalledafteranewaccountiscreated.Thiscodeenforcesresource-limitsrules*fornewacco 查看详情

eos智能合约源代码解读(11)wrap合约“wrap源代码”(代码片段)

wrap.hppclass[[eossys::contract("eossys.wrap")]]wrap:publiccontractpublic:usingcontract::contract;[[eossys::action]]voidexec(ignore<text_name>executer,ignore<transaction>trx);usin 查看详情

eos智能合约源代码解读name.hpp(代码片段)

///Immutableexceptforfc::from_variant.structnameprivate:friendstructfc::reflector<name>;friendvoidfc::from_variant(constfc::variant&v,eosio::chain::name&check);voidset(std::string_views 查看详情

eos智能合约源代码解读asset.hpp(代码片段)

1.合约中关于资产的数据结构的定义输入字符串:“10.0000CUR”输出:amount=10,symbol(4,“CUR”)/**assetincludesamountandcurrencysymbol*/structasset:fc::reflect_init//通过给定的符号名称以及资产数量构建一个新的资产对象。explicitasset(shar... 查看详情

eos智能合约源代码解读(10)token合约“几种关键操作”(代码片段)

1.create:负责创建资产voidtoken::create(consttext_name&issuer,constasset&maximum_supply)require_auth(get_self());nameissuer_id(get_account_id(issuer.c_str(),issuer.size()));autosym=maximu 查看详情

eos智能合约源代码解读(11)wrap合约“action_wrapper类”(代码片段)

1.功能对于许多用例,需要从合同代码向另一个合同发送新操作。这是合同之间能够积极沟通的唯一途径。它为特定智能合约代码的特定操作创建“操作模板”,然后可使用该模板来调用此操作。第一个参数是动作名称,第二个参数... 查看详情

eos智能合约源代码解读(14)system合约“exchange_state.hpp”(代码片段)

1.使用bancor数学创建一个在两种资产类型中的50/50的中继namespaceeosiosystemusingeosio::asset;usingeosio::symbol;typedefdoublereal_type;//使用Bancor算法在两种不同资产类型中间创造一个50对50的中继。bancor交易所的状态完全包含在这个结构体中。使... 查看详情

精eos智能合约:system系统合约源码分析(代码片段)

...从源码角度详细研究system合约。关键字:EOS,eosio.system,智能合约,name类型,native.hpp,newaccount,bidname,coretokeninit,onblock,更新已入选生产节点eosio.system概览笔者使用的IDE是VScode,首先来看eosio.system的源码结构。如下图所示。... 查看详情

eos基础全家桶智能合约ide-eos_studio(代码片段)

简介我们马上要进入智能合约的开发了,以太坊最初提供了智能合约的功能,并宣告区块链进入2.0时代,而EOS的智能合约更进一步,提供了更多的便利性和可能性。为了进一步了解智能合约,并进行开发,我们需要先准备好智能... 查看详情

eos智能合约开发-智能合约编写(代码片段)

...兼容,导致生产上出问题.下面我们讲用以vscode做演示.配置智能合约项目先用vscode打开eosio.cdt项目代码目录,按提示安装相应的 查看详情

刘文彬精解eos智能合约演练(代码片段)

...呆的博客园,https://www.cnblogs.com/Evsward/p/eos-contract.htmlEOS,智能合约,abi,wasm,cleos,eosiocpp,开发调试,钱包,账户,签名权限热身本文旨在针对EOS智能合约进行一个完整的实操演练,过程中深入熟悉掌握整个EOS智能合约的流程,过程... 查看详情