开发者社区> 开发V_MrsFu123> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介:  Web 3.0的纽带作用:   与DAPP浏览器相辅相成的是其底层网络架构Web 3.0,这是和信息互联网时代传统浏览器基于的Web 2.0完全不同的体系架构。区块链技术,尤其是ETH的出现使Web 3.0成为基于区块链进行价值传递的基础网络。
+关注继续查看

  Web 3.0的纽带作用:

  与DAPP浏览器相辅相成的是其底层网络架构Web 3.0,这是和信息互联网时代传统浏览器基于的Web 2.0完全不同的体系架构。区块链技术,尤其是ETH的出现使Web 3.0成为基于区块链进行价值传递的基础网络。

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

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

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

  ETH高级语言

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

  编译合约

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

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

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

  在线Solidity实时编译器。

  建立solidity合约的Meteor dapp Cosmo。

  Mix IDE。

  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用户的NatSpec Doc。

  developerDoc开发者的NatSpec Doc。

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

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

  创建和部署合约

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

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

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

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

  与合约交互

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

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

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

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

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

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
HECO火币生态链智能合约dapp系统开发部署方案详细介绍
HECO火币生态链智能合约dapp系统开发部署方案详细介绍
39 0
区块链智能合约DAPP上链模式系统开发技术方案
区块链智能合约DAPP上链模式系统开发技术方案
25 0
BSC币安链DAPP智能合约系统开发方案(成熟技术)
BSC币安链DAPP智能合约系统开发方案(成熟技术)
19 0
深度解析:关于创建BSC币安链DAPP智能合约系统开发方案详细(技术方案)
深度解析:关于创建BSC币安链DAPP智能合约系统开发方案详细(技术方案)
30 0
DAPP智能合约系统功能开发上链技术
  这个文件是项目中的重点,叫智能合约文件。什么是智能合约呢?你可以把智能合约,同样理解为一种可以运行的程序。只不过这个程序比较特殊,它是运行在以太坊的EVM虚拟机(https://ethereum.org/zh/developers/docs/evm/)环境上。并且,程序本身、程序的输入输出、运行结果,对所有人可见。
17 0
DAPP智能合约开发运营版,DAPP链上智能合约系统开发详细及源码
基于区块链技术的基础设施 区块链脱胎于BTC系统,从本质上讲,它是一个共享数据库,存储于其中的数据或信息,具有“不可伪造”、“公开透明”、“集体维护”等特征,基于这些特征,区块链奠定了坚实的“信任”基础,创造了可靠的“合作”机制。
37 0
合约链上DAPP模式系统开发技术原理(成熟分析)智能合约伪DAPP的开发技术逻辑是怎样
合约链上DAPP模式系统开发技术原理(成熟分析)智能合约伪DAPP的开发技术逻辑是怎样
16 0
BSC智能合约系统开发
BSC智能合约开发指南 什么是BSC 币安智能链(Binance Smart Chain,简称 BSC )是一条以太坊虚拟机兼容,与币安链并行的区块链,是加密资产行业顶尖项目的测试和前沿探索。 通过引入权益权威证明(PoSA)共识机制,BSC 创建了验证一个允许节点、代币持有者、开发者和用户都能够从区块链中获益的生态系统,享受更高的性能和更充裕的创新空间。
105 0
图解网络:什么是 DNS 域名系统?
DNS是一个巨大的目录,它保存着互联网上每一个域名的记录,并将其与它的 IP 地址进行映射,DNS是一种标准协议,可帮助 互联网用户使用人类可读地址发现网站,没有 DNS,互联网就会崩溃。
41 0
+关注
开发V_MrsFu123
APP技术开发:I3570980718
42
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载