什么是EOS?EOS全称叫作“EnterpriseOperationSystem”,中文意思是“企业操作系统”,是为企业级分布式应用制作的一个区块链操作系统。相比于BTC、以太币平台性能低、开发难度大及其手续费高等问题,EOS拥有高性能处理能力、便于开发及其用户免费等优点,能极大的满足企业级的应用需求,创立之初曾被称作继BTC、以太币之后区块链3.0技术。
为什么EOS性能高?这要得益于他的共识算法的制作。想知道他的共识算法?欢迎关注后续文章。EOS上的智能合约有什么特点,EOSIO智能合约由一组Action和类型定义组成。Action指定并实现合约的行为。类型定义指定所需的内容和结构。开发合约时要对每一个action实现对应的actionhandler。actionhandler的参数指定了接收的参数类型和数量。当向此合约发送action时,要发送满足要求的参数。
Action,EOSIOAction关键在基于消息的通信体系结构中运转。客户端能够应用cleos指令,将消息发送(消息推送)到nodeos来启用Action。也可以应用EOSIOsend方法(例如eosio::action::send)来启用Action。nodeos将Action请求分发给合约的WASM代码。该代码完整地运转完,然后继续处理下一个Action。
EOS体系是以通信为基础的,Action就是EOS上通信的媒介。EOSIO兼容2种基础通信模型:内联(inline)通信,如在当前交易中处理Action,和延迟(defer)通信,如触发一笔将来的交易。
Inline通信是指启用Action和被启用Action都要执行成功(否则会一起回滚)(Inlinecommunicationtakestheformofrequestingotheractionsthatneedtobeexecutedaspartofthecallingaction.)Inline通信应用原始交易相同的scope和权限作为执行上下文,并保证与当前action一起执行。能够被认为是transaction中的嵌套transaction。如果transaction的任何部分失败,Inline动作将和其他transaction一起回滚。无论成功或失败,Inline都不会在transaction范围外生成任何通知。
Deferred通信在概念上等同于发送一个transaction给一个账户。这个transaction的执行是eos出快节点自主判断进行的,Deferrd通信无法保证消息一定成功或者失败。如前所述,Deferred通信将在稍后由出快节点自行决定,从原始transaction(即创建Deferred通信的transaction)的角度来看,它只能确定创建请求是成功提交还是失败(如果失败,transaction将立即失败)。拥有这些背景知识,在理解下文的漏洞时会更加明了。