雀康麻将机价格|2018微乐贵阳捉鸡麻将
文章阅读页通栏

EOS智能合约开发:理解在EOS上编写dApp的基本概念

来源: 区块网 作者:
通过观察流行的dApp跟踪网站,EOS应用程序开发人员可能会被EOS上不断增长的dApp和交易率所吸引,并考虑是否应该开始学习开发智能合约。然而,在开始研......
通过观察流行的dApp跟踪网站,EOS应用程序开发人员可能会被EOS上不断增长的dApp和交易率所吸引,并考虑是否应该开始学习开发智能合约。然而,在开始研究之后,由于缺乏具有深度的高质量资源、令人困惑的文档和围绕智能合约开发的环境,它们很快就会丢失初衷。这使得开发人员别无选择,只能在研究上投入大量时间,这对于忙碌的开发人员来说甚至是不可能的。通过这些正在进行的系列文章,我们希望这篇文章的介绍会使这个过程更加顺畅,?#21592;?#20844;司和应用程序开发人员能够利用EOS开发创新的分散应用程序。
在本文中,我们打算对开发生态系统、合约的基本结构、作为合约开发(EOS CDT)的一部分的各种类型和模块等基本概念进行高层次的概述,并为进一步研究提供各种资源指针。

如何使用这篇文章

本文应该被?#28216;?#19968;个非正式的线程,它将各种重要的概念联系在一起,并涉及EOS开发的各个方面。由于在技术深度上讨论所有概念超出了这一篇文章的范围,我们鼓励读者进一步研究我们将在整篇文章中提供的指针。此外,通过?#27492;承?#38405;读本系列的所有文章,可以更好地利用本系列文章。在本系列的后续文章中,我们将通过实际开发将所有讨论的概念付诸实践。

在阅读本文之前,我们建议阅读我们的第一篇文章,以了解EOS的体?#21040;?#26500;与以太坊体?#21040;?#26500;的?#21592;取?#35753;我们开始吧!

快速架构概述:

EOSIO提供了一个具有操作系统等特点的分散平台,它使用区块链来维护这个平台上发生的分布式的、不可信的?#24405;?#21644;交易分类账。决定谁创建新块(协商共识)是通过委托权益证明来实现的,这涉及到代币以获得对块生成器投票的权利,块生成器是向区块链添?#26377;?#22359;的完整节点。由于怀疑有任何恶意活动,选民可以?#22659;?#23631;蔽生产商,并投票给新的生产商。在给定的时间内,只有21个块生成器创建新的块,因此交易处理速?#32570;?#24471;非常快,因为基于工作证明的协商共识算法等验证的数量较少。

EOSIO支持创建智能合约,它的执行和资源消耗就像在OS上运行的典型应用程序一样。智能合约是用c++编写的,可以转换为web程序集。

计算量和速度被描述为带宽和CPU资源,持久信息的存储被描述为RAM。由于对CPU和带宽的需求是暂时的,因为它只需要执行一些智能合约操作,所以这些资源是通过标记一段时间(3天)获得的。这可以确保帐户获得与标记的代?#39029;?#27604;例,并且如果其中一些资源是空闲的(就像internet连接的网络带宽),则可以获得更多的资源。

然而,RAM是一种持久资源,需要根据需要提前购买。RAM通常表示?#36164;阅?#23384;,但在EOS中,它表示智能合约的持久内存。RAM的价格是不稳定的,?#19978;?#32479;根据Bancors算法需求和供应来决定。由于RAM是一种相对罕见的资源,系统内正在采取措施防止对它的囤积和投机性交易。

必须注意的是,?#39034;?#20037;信息没?#20889;?#20648;在区块链上。区块链仅用于记录指向智能合约持久信息更改的交易和?#24405;?#29616;在我们已经对EOSIO架构有了一个大致的概念,接下来让我们来看看开发生态系统。

发展生态系统

任何智能合约开发需要一个本地测试节点,某种程度上与本地节点通信,账户管理钱包/钥匙,设置IDE /代码编辑器和编译器/转换器,将智能合约转换为可执行形式,一个健壮的测试框架,可以准备一个新的国家的本地节点测试,利用可用性的GUI工具?#31383;?#21161;与部署的合合约。让我们就EOS分别讨论它们。

Nodeos是EOSIO核心节点,可以使用插件配置它来运行节点。它将作为一个本地节点,可以用于开发和测试目的,但是可以将它配置为一个完整的节点,甚至用于块生产。

Cleos是与本地节点守护进程交互的命令行接口,?#37096;?#20197;配置为与远程节点交互。它用于发出与钱包管理、节点配置和向智能合约发出交易相关的命令。

Keosd是在wallets.Eosio中安全地存储EOSIO密钥的组件。

Eosio.cdt是合约开发工具包,它公开各种库和编程构造,以帮助智能合约开发。这些结构提供编程接口?#21019;?#29702;EOS的各种组件。Eosio.cdt还由eosio-cpp组成,eosio-cpp是负责将用c++编写的合约转换为wasm (web assembly)的模块。它还为合约生成ABI,这是一个JSON文件,指定合约支持的类型和操作。它用于将智能合约功能与客户端应用程序集成。

EOSFactory是由tokenika开发的基于python的测试框架,我们发现它对于dapp的开发和测试非常有用。它提供了一个简单的基于python的接口来与智能联系人进行交互,并支?#26234;?#26494;设置用于测试的新节点实例。它甚至支持在公共测试和主要网络上部署和管理合约。

Scatter是一个gui应用程序,它使连接EOS网络和安全管理资产变得容易,类似于以太坊中的Metamask。它可以作为所有主要平台的桌面应用程序使用。

由于合约是用c++编写的,所以任何流行的ide都可以用来编写智能合约。然而,EOSFactory为VS代码提供了一些支持,在Quillhash中,我们使用VS代码进行智能合约开发,尽管这更多是一个个人选择的问题。

在EOS中管理角色和权限

本机支持管理EOS中的角色和权限,这使得它在执行智能合约中的访问控制和权限方面非常强大。。它们是Active的所有者权限。所有者权限与与帐户相关的管理级操作相关联,是Active权限的父权限。Active权限用于公共操作,?#28909;?#25191;行智能合约操作。例如代币传输、购买RAM等。除了这些权限之外,我们还可以创建新的权限,可以通过在智能合约中?#23454;?#22320;处理它们来执行这些权限。

另一个有趣的许可是eosio。如果希望智能合约以编程方式与其他合约通信,则智能合约将使用此权限。此权限必须由承载智能合约的帐户通过将其添加到Active权限来授予?#32422;骸?/span>

EOS智能合约的基本概述

智能合约是在EOSIO节点上运行的软件,它的持久化数据存储在节点的RAM中,动作?#24405;?#23384;储在区块链上并同步。EOS智能合约公开可执行的“操作?#20445;?#36825;些“操作”是执行特定于合约操作的函数,受调用该操作的帐户的约束和权限的限制。考虑到这一点,我们可以将合约看作三个方面一起工作的组合。

首先,我们有指定操作逻辑的函数定义。其次,我们有多索引表,它为我们提供了与持久存储(RAM)连接的接口。第三,我们有“dispatcher?#20445;?#23427;充当操作处理程序,并将传入的请求?#25104;?#21040;正在请求的操作。这三个组成部分是每一份合同的基本“骨架”。

每个合约都定义为继承eosio::contract类的类。可以将定义合约状态的各种变量指定为类的私有成员。这些类的成员可以指定为“Actions”。EOSIO提供了EOSIO -cpp用于生成web程序集字节码和ABI的各?#36136;?#24615;。EOS上的智能合约可?#28304;?#29702;来自其他合约的通知,甚?#37327;?#20197;调用其他合约的操作,前提是它们获得了必要的权限(eosio)。代码许可)。

每当我们调用合约上的操作时,都会创建一个新的合约实例,该操作在执行时被销毁。因此,表示合约状态的任何信息必须在合约启动时(在构造函数中)加载,并在销毁之前或销毁期间(在析构函数中或在调用的操作体中)保存。必须注意的是,一个状态只能关联一个智能合约。

结论

在本文中,我们讨论了在EOS上开发dapp?#26412;?#24120;出现的基本概念。现在我们已经对EOS生态系统和体?#21040;?#26500;有了一个高层次的概述,我们准备深入研究合约的技术和编码方面,并构建我们?#32422;?#30340;dapps。在下一篇文章中,我们将详细地分析标准的eosio.token合约,?#21592;?#29702;解构建智能合约所涉及的所有细节。我们还将在未来的文章中开发一个基本的众销售应用程序?#22836;?#25955;式的游戏合约。

更多区块链信息:www.gkjln.tw/news
关键词: EOS  智能合约  dApp  
0/300
? 雀康麻将机价格 超级大乐透预测 河北福利排列七走势图 57798八码中 深圳风采中奖号码查询 排列三最近300期走势图 山西11选5的和值表 北京快三138086期开奖结果 快乐购官方网站首页 新疆25选7今日开奖号 重庆幸运农场开奖app