深入分析DAPP智能合约BSC币安链上合约系统开发技术详情及功能

本文涉及的产品
数据传输服务 DTS,数据同步 small 3个月
推荐场景:
数据库上云
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,数据同步 1个月
简介:  解锁智能合约3.0:如何通过预言机提升互操性  功能迥异的分布式账簿技术(DLT)协议既没办法交互,也没办法与DLT以外的系统连接。以Chainlink为主导的互操作性协议正在成为行业中标准化的互操作性解决方案,在各个系统之间实现安全的去中介化交互。

  解锁智能合约3.0:如何通过预言机提升互操性

  功能迥异的分布式账簿技术(DLT)协议既没办法交互,也没办法与DLT以外的系统连接。以Chainlink为主导的互操作性协议正在成为行业中标准化的互操作性解决方案,在各个系统之间实现安全的去中介化交互。

  在区块链的早期发展阶段,人们普遍信仰的是“单链至上”,币安链DAPP智能合约系统开发详细:I35-7O98-O7I8即一条区块链上包含Dapps端到端运行所需的所有功能。而如今盛行的理念则是一个模式中包含多个区块链协议,每个协议都拥有具体的功能。理念之所以发生转变是因为人们意识到数据量实在过于庞大,而且开发者的需求多种多样,仅依靠一个平台满足所有需求的风险实在太高。

  因此又产生了一个新的问题:这些功能迥异的分布式账簿技术(DLT)协议既没办法交互,也没办法与DLT以外的系统连接。以Chainlink为主导的互操作性协议正在成为行业中标准化的互操作性解决方案,在各个系统之间实现安全的去中介化交互。

  相互孤立的DLT堆栈

  DLT目前的基础架构中存在许多不同类型的分布式账簿,每一种账簿都拥有具体的功能和优劣势。比如,BTC被广泛认为是储存价值的hj标准,因此它的优势是可靠性高、交易完全去中心化,但随之而来的劣势是功能单一、速度较慢。eth允许开发者添加条件表达式实现状态改变,以增强区块链的功能。然而,为了做到这一点,它付出的代价是将简单的编程语言换成了一种更加复杂的语言,这使得学习过程更困难,而且代码也更容易出现错误。btc和ETH都专注于完成某项特殊任务,因此都获得了成功。

  如今的趋势不是开发出一条可以涵盖所有功能的区块链,而是专注于某一具体功能,这个逻辑与如今的互联网协议堆栈不谋而合。互联网并非一个包罗万象、庞大单一的协议,而是由各种协议组成的,每个协议都负责一个具体功能。协议堆栈通过分工合作的方式实现优化,并减少每一层协议受到的攻击强度,以此降低风险。

  目前Web3.0的分布式协议堆栈中存在许多功能独特且实用的DLT协议,需求开发唯:MrsFu123,web3.0是去中心化的互联网,用户在其中可以控制自己的数据、身份和体验。这些协议不断优化其核心功能,但彼此无法在web3.0中或在网络之外实现交互。

  互联网堆栈的基础是传输控制协议和互联网协议(TCP/IP),这两种协议将数据打包,并在各个计算机/服务器之间来回传输。这有点像递送邮件的邮政服务。虽然区块链也在其系统内可靠地传输数据,但整个DLT生态系统中仍未建立标准化协议,因此Dapps无法实现跨网络交互和链下数据交互。

  互联网赖以生存的另一个主要协议就是HTTP协议以及超文本传输安全协议HTTPS。HTTP协议允许web浏览器客户端向web服务器发送数据请求,如果请求被接受,用户就能访问网页。这个协议定义了数据格式和传输方式,还定义了浏览器在收到某个命令时应采取什么相应的行动。区块链需要TCP/IP协议在底层实现数据传输,同样地,它们也需要一个协议来规范数据传输的方式。HTTP协议在现有的TCP/IP堆栈上建立,并扩展功能,让用户能够浏览网页。这个协议的出现使得用户界面变得更简单,而且可以实现大规模的数据传输。

  如果要开发可以应用在真实世界的去中心化应用,开发者既需要在不同系统之间实现数据传输,也需要建立一个标准协议规范数据传输方式。为了让DLT得到广泛应用,这些协议必须得让Dapps开发流程变得跟拖放式App开发一样简单。开发者可以选中某条区块链(可以选择公链或私链、速度优先或去中心化优先、以及具体针对的应用场景),连接至各种数据输入(数据、物联网、web API),然后使用多种数据输出(支付系统、云平台、其他区块链)安全可靠地进行结算。

  要实现并规范数据传输,需要解决两个主要功能问题:

  去中心化的资产交易所-互操作性更受人关注的功能是在协议之间互相交易本地资产。比如说,某人可以使用btc支付eth Dapp,或用btc兑换LTC进行支付。代币是区块链上的数据,因此资产交易在本质上最接近TCP/IP协议。

  去中心化的消息数据交易所-互操作性的另一个不太受到关注的功能就是在协议之间传输消息数据。举个例子,IOTA上的设备可以传输物联网数据,触发eth上的智能合约,最终触发在btc区块链上进行支付结算。数据可以在两个分布式账簿之间进行传输,也可以在链上智能合约和链下系统之间进行传输。比如,来自路透社的链下市场数据触发链上衍生品智能合约,然后触发链下通过SWIFT码进行的法币结算。这个功能规范了系统中的消息数据如何触发底层区块链或后端系统的数据传输,在本质上最接近HTTP协议。

  去中心化的资产和数据交易所有许多关注焦点和设计方法。在谈到Chainlink在各个模式中所做的尝试之前,我们先来探讨一下不同的解决方案。

  链上互操性实现方式

  解决互操作性问题的其中一个方法就是使用另外一条区块链作为沟通的桥梁。简单来说,就是将第三条区块链搭在两条区块链之间,以安全加密的方式记录两条链之间的交易和消息数据。

  轴辐模式(hub and spoke):轴辐模式是最常见的模式,母链(parent blackchain)是其他区块链(通常也称侧链)的中继站(hub)。这个模式也有人称之为元链模式(Metachains),目前Polkadot、Cosmos以及eth在几个侧链提议(Plasma、Matic、Loom)中都采用了该模式。虽然现已能够建立作为侧链存在的去中心化资产交易所(比如Plasma),但是大部分元链的主要问题还是如何在网络中所有侧链之间实现跨链消息传递。另外还可以建立专门的桥梁连接在生态系统之外的状态机,比如将Polkadot与eth连接。

  通用型桥梁:另一种方式就是用区块链建立通用型桥梁。AION项目正在打造单向桥梁,在账簿中验证、记录和储存跨链交互数据,并提供拥有时间戳的区块链共识。对于那些不使用轴辐模式或有具体需求的区块链来说,这个方法尤为实用。

  链下互操作性实现方式

  实现系统间互操作性的另一个方法是在链下开展或使用中间件。这个模式下的各方需要经过谨慎分析,因为链下数据无法在确定性的环境中得到验证。然而,如果找到正确的方法,就可以为用户带来高效、实用且同样安全的解决方案。

  原子互换(Atomic Swap):原子互换是以去中心化的方式交换资产,比如用btc交换ltc,过程中无须经由中心化的交易所。原子互换类似现实世界中的以物易物,双方就资产交换达成协议,然后完成交易。虽然这项技术仍处于发展初期阶段,而且多数情况下只能用于同类资产交换协议(like-kind protocols),但Komodo等项目已经开始尝试针对异类资产交换协议推出原子互换,比如用btc交换以太币。

  预言机:预言机一个较少被关注的功能是作为通用型桥梁连接两个区块链。这个功能不仅可以实现区块链之间的信息互通,还可以与任何企业系统交互。比如,将一条区块链上的交易活动数据作为输入,触发另一条区块链上的智能合约。再比如,用云端数据触发区块链上的智能合约,然后再到链下的支付系统中进行结算。预言机可以实现别的模式无法实现的各种跨链交互方式。

  状态通道-在同一条区块链上互换资产的另一个方式就是建立一条链下状态通道来交易资产。状态通道让各方无须任何链上交易就可以交易并记录资产所有权,直到最终交割为止。这个方法对于扩容和降低链上交易成本非常有效。即将到来的Plasma eth扩容主要针对的是侧链之间的UTXO资产交易,而状态通道可以在链上状态变更之前先交换状态变更信息。

  Chainlink:通用型信息传输标准

  Chainlink是首个去中心化的预言机网络,在功能上相当于HTTP协议(在可信执行环境中相当于HTTPS),在链上和链下的协议层和应用层实现信息传输。Chainlink节点能够将来自经过验证API的信息和数据打包成智能合约可以读取的格式。Chainlink节点可以连接至任何API,无论是区块链、企业系统、Web API还是物联网设备均可连接。如果某一任务不在Chainlink核心节点的支持范围内,还可轻松建立外部适配器,扩展节点功能。Chainlink能够完美地实现不同系统之间的数据传输,并可根据实际应用需求任意调节去中心化程度和安全水平。

  链下资源:Chainlink是市场上将链下数据连接至链上智能合约的领先解决方案。这项功能非常重要,因为许多区块链虽然无须与其他区块链协议交互,但需要连接至外部API。需要链下数据触发智能合约执行,并触发链下支付系统和云平台进行结算。预计超过80%的智能合约都在某种程度上需要链下资源支持。

  轴辐模式:轴辐式的互操作性协议能实现侧链之间信息互通,但它们仍需要链下数据触发链上行为。Chainlink已宣布与Polkadot和eth合作,为其网络提供链下数据。

  去中心化金融:许多去中心化的金融平台也能通过搭桥建立协议,实现跨链交互,但如果是资产交易,区块链就需要市场数据来触发交易。Chainlink已跟万维链开展合作,为万维链上的智能合约提供链下数据。

  通用型桥梁:Chainlink可以通过外部适配器实现协议之间的信息互通。外部适配器可以基于其他区块链和系统中发生的事件触发各种链上行为。AION、IOTA和Zilliqa上已经推出了外部适配器,供开发者在开发跨链应用时使用。Chainlink还可以通过单向桥梁基于外部数据触发区块链上的资产交易,比如在AION网络中进行交易。

  企业区块链:Chainlink在可信执行环境(TEE)中,可以安全地将公链连接至企业区块链、将企业区块链连接在一起、并在各个系统之间传输机密信息。其实公链上的互操作性并非在所有情况下都适合传输敏感信息,而Chainlink由于收购了Town Crier,因此具备独一无二的条件,可以在保障系统数据完整性的前提下传输机密数据。

  关于智能合约代码:

  pragma solidity 0.6.6;

  contract SimpleBank{//CapWords

  mapping(address=>uint)private balances;

  address public owner;

  event LogDepositMade(address accountAddress,uint amount);

  //Constructor,can receive one or many variables here;only one allowed

  constructor()public{

  owner=msg.sender;

  }

  function deposit()public payable returns(uint){

  //Use'require'to test user inputs,'assert'for internal invariants

  //Here we are making sure that there isn't an overflow issue

  require((balances[msg.sender]+msg.value)>=balances[msg.sender]);

  balances[msg.sender]+=msg.value;

  //no"this."or"self."required with state variable

  //all values set to data type's initial value by default

  emit LogDepositMade(msg.sender,msg.value);//fire event

  return balances[msg.sender];

  }

  function withdraw(uint withdrawAmount)public returns(uint remainingBal){

  require(withdrawAmount<=balances[msg.sender]);

  balances[msg.sender]-=withdrawAmount;

  //this automatically throws on a failure,which means the updated balance is reverted

  msg.sender.transfer(withdrawAmount);

  return balances[msg.sender];

  }

  function balance()view public returns(uint){

  return balances[msg.sender];

  }

  }

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
相关文章
|
API Python
永续合约/秒合约系统设计开发dapp技术/代码搭建示例
永续合约是一种类似于期货合约的金融衍生品,与传统合约不同的是,它没有到期日期。HKD交易所的永续合约是基于标 记价格和保证金机制的交易方式,允许用户通过杠杆操作来增加收益和风险。在永续合约交易中,用户可以选择开多或开空 仓位,实现对市场走势的利润预测。
|
安全 Go
dapp丨defi代币合约系统开发详情说明丨案例分析丨需求设计丨成熟案例丨源码平台
Before developing the DApp pledge mining system, it is necessary to clarify the entire development process. Firstly, determine requirements and functional planning, including user interface design, contract writing, etc. Secondly, design the system architecture to determine the relationships and dat
|
安全 区块链
DAPP公链合约系统开发技术原理丨DAPP公链合约系统开发详细源码及案例
智能合约dapp系统开发是基于链游技术开发的应用程序,它利用智能合约来实现去中心化的应用。智能合约是一种程序,它可以在链游上运行,根据指定的条件自动执行。智能合约dapp系统开发的核心在于智能合约的开发,智能合约的开发需要具备一定的链游技术知识和编程技能
|
存储 安全 区块链
DAPP互助合约系统开发功能逻辑说明
DApp互助系统的开发指的是创建一个基于区块链技术和智能合约的去中心化应用程序(DApp),旨在通过互助和合作实现共同利益和社区发展。
|
存储 区块链 UED
DAPP流动性质押系统开发方案与详情|DAPP合约案例
区块链的另一个固有挑战是其确定性。确定性本质意味着一旦一个块被添加到区块链中,它就无法更改,并且任何智能合约执行的结果都是可预测的和一致的。
|
存储 算法 区块链
DAPP智能合约系统软件开发案例 | 币安智能链模式系统开发
币安链和其它许多项目类似,比如EOS。它具有高吞吐量和高性能的底层匹配引擎,可以同时迅速的支持和处理大量交易。但是不够灵活性,无法支持许多复杂的DAPP。
|
存储 监控 算法
DAPP链上质押项目系统开发|DAPP合约模式开发案例
DAPP不依赖中心化机构也不受单一实体控制,因此DAPP可以减少中心化机构的意见干扰
|
存储 人工智能 供应链
BSC币安智能链DAPP发行代币合约模式系统开发成熟技术/案例介绍/方案项目/源码平台
  区块链+人工智能的结合可以实现更加智能化和自动化的操作方式,使得操作更加简单、高效和安全。例如,在智能合约中,人工智能可以自动检测合约中的条件并执行相应的操作,大大减少了人工干预的需求
|
Rust Go C++
DAPP链上合约系统开发(开发功能)丨DAPP链上合约系统开发(详细及源码)
 Smart contract is a kind of computer program or transaction protocol,which records the information,events and behaviors of transaction terms,aiming at reducing the demand,arbitration and execution costs for trusted