什么是DAPP智能合约系统开发?链上DAPP智能合约系统开发原理及详细

供应商
河南漫云科技有限公司
认证
报价
1000.00元每漫云科技
DAPP智能
DAPP智能合约系统开发
联系电话
13103827627
漫云服务热线
13103827627
联系人
王乾
所在地
郑东新区升龙广场3号楼A座3202
更新时间
2024-05-30 20:09

详细介绍

    web3.0的纽带作用:

   与dapp浏览器相辅相成的是其底层网络架构web3.0,这是和信息互联网时代传统浏览器基于的web2.0完全不同的体系架构。区块lian技术,尤其是eth的出现使web3.0成为基于区块lian进行价值传递的基础网络。

   从技术架构来看,web3.0的体系架构更为复杂,它在传统信息互联网的基础上,增加了价值(token)的传递。

   合约是代码(它的功能)和数据(它的状态)的集合,存在于eth区块lian的特定地址。合约账户能够在彼此之间传递信息,进行图灵完备的运算。关于dapp智能合约系统开发分析:i35-7o98-o7i8合约依靠被称作eth虚拟机(evm)字节代码(eth特有的二进制格式)上的区块lian运行。

    合约很典型地用诸如solidity等语言写成,然后编译成字节代码上传到区块lian上。

    eth语言

   合约依靠被称作eth虚拟机(evm)字节代码(eth特有的二进制格式)上的区块lian运行。如有系统开发需求对接v:mrsfu123然而,合约很典型地用诸如solidity等语言写成,然后用eth虚拟机编译器编译成字节代码上传到区块lian。

    编译合约

    solidity合约的编译可以通过很多机制完成。

    通过命令行使用solc编译器。

   在geth或eth提供的javascript控制台使用web3.eth.compile.solidity(这仍然需要安装solc编译器)。

    在线solidity实时编译器。

    建立solidity合约的meteordappcosmo。

    mixide。

    eth钱包。

    注意:关于solc和编译solidity合约代码的更多信息可在此查看。

    在geth设置solidity编译器

    如果你启动了geth节点,就可以查看哪个编译器可用。

    这一指令会返回到显示当前哪个编译器可用的字符串。

    注意:solc编译器和cpp-ethereum一起安装。或者,你可以自己创建。

   如果你的solc可执行文件不在标准位置,可以用—solc标志为solc可执行文件指定一个定制路线

    或者你可以通过控制台在执行期间设置这个选项:

    编译一个简单合约

    让我们编译一个简单的合约源:

    这个合约提供了一个单一方法multiply,它和一个正整数a调用并返回到a*7。

   注意:编译器通过rpc因此也能通过web3.js,对浏览器内任何通过rpc/ipc连接到geth的Ðapp可用。

    下面的例子会向你展示如何通过json-rpc接合geth来使用编译器。

    code编译的eth虚拟机字节代码

    info从编译器输出的额外元数据

    source源代码

    language合约语言(solidity,serpent,lll

    languageversion合约语言版本

    compilerversion用于编译这个合约的solidity编译器版本。

    abidefinition应用的二进制界面定义

    userdoc用户的natspecdoc。

    developerdoc开发者的natspecdoc。

   编译器输出的直接结构化(到code和info)反映了两种非常不同的部署路径。编译的eth虚拟机代码和一个合约创建交易被发送到区块,剩下的(info)在理想状态下会存活在去中心化云上,公开验证的元数据则执行区块lian上的代码。

   如果你的源包含多个合约,输出会包括每个合约一个入口,对应的合约信息对象可以用作为属性名称的合约名字检索到。你可以通过检测当前的globalregistrar代码来试一下:

    创建和部署合约

    注意:用在线solidity实时编译器或mixide程序会更容易完成。

    所有的二进制数据都以十六进制的格式序列化。十六进制字符串总会有一个十六进制前缀0x。

   注意:注意arg1,arg2,…是合约构造函数参数,以备它要接受参数。如果合约不需要构造函数参数,就可以忽略这些参数。

   值得指出的是,这一步骤需要你支付执行。一旦交易成功进入到区块,你的账户余额(你作为发送方放在from领域)会根据eth虚拟机的gas规则被扣减。一段时间以后,你的交易会在一个区块中出现,确认它带来的状态是共识。你的合约现在存在于区块lian上。以不同步的方式做同样的事看起来是这样:

    与合约交互

   与合约交互典型的做法是用诸如eth.contract()功能的抽象层,它会返回到javascript对象,和所有可用的合约功能一起,作为可调用的javascript功能。描述合约可用功能的标准方式是abi定义。这个对象是一个字符串,它描述了调用签名和每个可用合约功能的返回值。

   现在abi中具体说明的所有功能调用都在合约实例中可用。你可以用两种方法中的一种来调用这些合约实例上的方法。

   当用sendtransaction被调用的时候,功能调用通过发送交易来执行。需要花费以太币来发送,调用会记录在区块lian上。用这种方式进行的调用返回值是交易散表。

   当用call被调用的时候,功能在eth虚拟机被本地执行,功能返回值和功能一起返回。用这种方式进行的调用不会记录在区块lian上,因此也不会改变合约内部状态。这种调用方式被称为恒定功能调用。以这种方式进行的调用不花费以太币。

   随着公链等基础设施的完善,未来将会出现更多基于不同应用场景的dapp,包括:存储、社交、即时通信等领域均已出现相应的代表案例。手机钱包作为区块lian世界的“支付宝”,可以连接dapp提供的服务端,以及终端用户,因此内嵌dapp浏览器成为很自然的选择。


什么是DAPP智能合约系统开发?链上DAPP智能合约系统开发原理及详细

展开全文

我们其他产品
我们的新闻
咨询 在线询价 拨打电话