智能合约怎么开发的
『壹』 区块链要什么技术开发
区块链要什么技术开发:
一、区块链理论:区块链开发者要对区块链的理论知识具备熟悉的掌握能力,这是作为一名区块链开发者最基本的要求。在里面的内容包括了区块链网络架构、去中心化等相关应用技术。拓展技术理论是对以太坊开发的掌握。
二、智能合约:智能合约是需要区块链开发者用区块链编程语言写出来的一串代码,根据不同场景构思逻辑后开发出来的信任机制,旨在消除第三方的介入,创造出高效、高信任的区块链网络。区块链开发者要实现这串代码自动执行,且是不可逆的操作效果。
三、密码学:区块链应用场景很多都是具备高加密性的,点对点的加密模式是密码学的特点。区块链开发者通过研究密码学,了解到钱包、密钥、广泛的加密和解密技术等加密概念
四、分布式架构:区块链开发人者必须懂得分布式架构和网络的功能。去中心化网络是区块链架构的基础,在区块链网络中信息的传递要遵循去中心化的方式,这样每个人才能享受到同等的网络权益。
『贰』 用Go来做以太坊开发④智能合约
在这个章节中我们会介绍如何用Go来编译,部署,写入和读取智能合约。
与智能合约交互,我们要先生成相应智能合约的应用二进制接口ABI(application binary interface),并把ABI编译成我们可以在Go应用中调用的格式。
第一步是安装 Solidity编译器 ( solc ).
Solc 在Ubuntu上有snapcraft包。
Solc在macOS上有Homebrew的包。
其他的平台或者从源码编译的教程请查阅官方solidity文档 install guide .
我们还得安装一个叫 abigen 的工具,来从solidity智能合约生成ABI。
假设您已经在计算机上设置了Go,只需运行以下命令即可安装 abigen 工具。
我们将创建一个简单的智能合约来测试。 学习更复杂的智能合约,或者智能合约的开发的内容则超出了本书的范围。 我强烈建议您查看 truffle framework 来学习开发和测试智能合约。
这里只是一个简单的合约,就是一个键/值存储,只有一个外部方法来设置任何人的键/值对。 我们还在设置值后添加了要发出的事件。
虽然这个智能合约很简单,但它将适用于这个例子。
现在我们可以从一个solidity文件生成ABI。
它会将其写入名为“Store_sol_Store.abi”的文件中
现在让我们用 abigen 将ABI转换为我们可以导入的Go文件。 这个新文件将包含我们可以用来与Go应用程序中的智能合约进行交互的所有可用方法。
为了从Go部署智能合约,我们还需要将solidity智能合约编译为EVM字节码。 EVM字节码将在事务的数据字段中发送。 在Go文件上生成部署方法需要bin文件。
现在我们编译Go合约文件,其中包括deploy方法,因为我们包含了bin文件。
在接下来的课程中,我们将学习如何部署智能合约,然后与之交互。
Commands
Store.sol
solc version used for these examples
如果你还没看之前的章节,请先学习 编译智能合约的章节 因为这节内容,需要先了解如何将智能合约编译为Go文件。
假设你已经导入从 abigen 生成的新创建的Go包文件,并设置ethclient,加载您的私钥,下一步是创建一个有配置密匙的交易发送器(tansactor)。 首先从go-ethereum导入 accounts/abi/bind 包,然后调用传入私钥的 NewKeyedTransactor 。 然后设置通常的属性,如nonce,燃气价格,燃气上线限制和ETH值。
如果你还记得上个章节的内容, 我们创建了一个非常简单的“Store”合约,用于设置和存储键/值对。 生成的Go合约文件提供了部署方法。 部署方法名称始终以单词 Deploy 开头,后跟合约名称,在本例中为 Store 。
deploy函数接受有密匙的事务处理器,ethclient,以及智能合约构造函数可能接受的任何输入参数。我们测试的智能合约接受一个版本号的字符串参数。 此函数将返回新部署的合约地址,事务对象,我们可以交互的合约实例,还有错误(如果有)。
就这么简单:)你可以用事务哈希来在Etherscan上查询合约的部署状态: https://rinkeby.etherscan.io/tx/
Commands
Store.sol
contract_deploy.go
solc version used for these examples
这写章节需要了解如何将智能合约的ABI编译成Go的合约文件。如果你还没看, 前先读 上一个章节 。
一旦使用 abigen 工具将智能合约的ABI编译为Go包,下一步就是调用“New”方法,其格式为“New<contractname style="box-sizing: border-box; font-size: 16px; -ms-text-size-adjust: auto; -webkit-tap-highlight-color: transparent;">”,所以在我们的例子中如果你 回想一下它将是 NewStore 。 此初始化方法接收智能合约的地址,并返回可以开始与之交互的合约实例。</contractname>
Commands
Store.sol
contract_load.go
solc version used for these examples
这写章节需要了解如何将智能合约的ABI编译成Go的合约文件。如果你还没看, 前先读 上一个章节 。
在上个章节我们学习了如何在Go应用程序中初始化合约实例。 现在我们将使用新合约实例提供的方法来阅读智能合约。 如果你还记得我们在部署过程中设置的合约中有一个名为 version 的全局变量。 因为它是公开的,这意味着它们将成为我们自动创建的getter函数。 常量和view函数也接受 bind.CallOpts 作为第一个参数。了解可用的具体选项要看相应类的 文档 一般情况下我们可以用 nil 。
Commands
Store.sol
contract_read.go
solc version used for these examples
这写章节需要了解如何将智能合约的ABI编译成Go的合约文件。如果你还没看, 前先读 上一个章节 。
写入智能合约需要我们用私钥来对交易事务进行签名。
我们还需要先查到nonce和燃气价格。
接下来,我们创建一个新的keyed transactor,它接收私钥。
然后我们需要设置keyed transactor的标准交易选项。
现在我们加载一个智能合约的实例。如果你还记得 上个章节 我们创建一个名为 Store 的合约,并使用 abigen 工具生成一个Go文件。 要初始化它,我们只需调用合约包的 New 方法,并提供智能合约地址和ethclient,它返回我们可以使用的合约实例。
我们创建的智能合约有一个名为 SetItem 的外部方法,它接受solidity“bytes32”格式的两个参数(key,value)。 这意味着Go合约包要求我们传递一个长度为32个字节的字节数组。 调用 SetItem 方法需要我们传递我们之前创建的 auth 对象(keyed transactor)。 在幕后,此方法将使用它的参数对此函数调用进行编码,将其设置为事务的 data 属性,并使用私钥对其进行签名。 结果将是一个已签名的事务对象。
现在我就可以看到交易已经成功被发送到了以太坊网络了: https://rinkeby.etherscan.io/tx/
要验证键/值是否已设置,我们可以读取智能合约中的值。
搞定!
Commands
Store.sol
contract_write.go
solc version used for these examples
有时您需要读取已部署的智能合约的字节码。 由于所有智能合约字节码都存在于区块链中,因此我们可以轻松获取它。
首先设置客户端和要读取的字节码的智能合约地址。
现在你需要调用客户端的 codeAt 方法。 codeAt 方法接受智能合约地址和可选的块编号,并以字节格式返回字节码。
你也可以在etherscan上查询16进制格式的字节码 https://rinkeby.etherscan.io/address/#code
contract_bytecode.go
首先创建一个ERC20智能合约interface。 这只是与您可以调用的函数的函数定义的契约。
然后将interface智能合约编译为JSON ABI,并使用 abigen 从ABI创建Go包。
假设我们已经像往常一样设置了以太坊客户端,我们现在可以将新的 token 包导入我们的应用程序并实例化它。这个例子里我们用 Golem 代币的地址.
我们现在可以调用任何ERC20的方法。 例如,我们可以查询用户的代币余额。
我们还可以读ERC20智能合约的公共变量。
我们可以做一些简单的数学运算将余额转换为可读的十进制格式。
同样的信息也可以在etherscan上查询: https://etherscan.io/token/?a=
Commands
erc20.sol
contract_read_erc20.go
solc version used for these examples
『叁』 以太坊的智能合约
智能合约是运行在计算机里面的,用于保证让参与方执行承诺的代码,般情况下,普通合约上记录了甲方与乙方各方面的关系条款,并通常是通过法律强制执行或保护的,而“智能合约”则是用密码或密钥来执行关系。以更加直接的角度来理解的话,即“智能合约”的程序内容将同-开始大家一起设定好的那样百分百执行,并且零差错。
举个例子,以太坊用户可以使用智能合约在特定日期向朋友发送10个以太币。在这种情况下,用户可以操作创建一个合约,然后将程序推人该合约中进行特殊计算,以便它能够执行所需的命令。而以太坊就是专门把精力集中在这件事上的这么一个平台。
比特币是第一个支持“智能契约”的资源币种,因为网络的价值在于把价值或数据从一个点或人转移到另一个点或人身上。节点网络只在满足某些条件时才会进行验证,但是,比特币仅限于货币用例。相反,以大坊取代了比特币那种带有不小限制性的编程语言,取而代之的是一种允许开发人员编写自己程序的语言。以太坊允许开发人员编写他们自己的“智能契约”,即“自主代理”或“自治代理”,正如ETH白皮书所称的那样。该编程语言是“图灵完备”语言,这意味着它支持一组更广泛的计算指令。智能合约能做些什么呢?
1.“多签名”账户功能,只有在一定比例的人同意时才能使用资金。这个功能经常用在与众筹或募捐类似的活动中。
2.管理用户之间所签订的协议。例如,一方从另一方购买保险服务3.为其他合同提供实用程序。
4.存储有关应用程序的信息,如“域注册信息”或“会员信息记录”。概念有时候比较晦涩,我们举一个募捐的智能合约的例子来帮助理解:假设我们想向全网用户发起募捐,那就可以先定义一个智能账户,它有三个状态:当前募捐总量,捐款目标和被捐赠人的地址,然后给它定义两个函数:接收募捐函数和捐款函数。
接收募捐函数每次收到发过来的转账请求,先核对下发送者是否有足够多的钱(EVM会提供发送请求者的地址,程序可以通过地址获取到该人当前的区块链财务状况),然后每次募捐丽数调用时,都会比较下当前募捐总量跟捐款目标的比较,如果超过目标,就把当前收到的捐款全部发送到指定的被捐款人地址,否则的话,就只更新当前募捐总量状态值。
捐款函数将所有捐款发送到保存的被捐赠人地址,并且将当前捐款总量清零。每一个想要募捐的人,用自己的ETH地址向该智能账户发起一笔转账,并且指明了要调用接受其募捐函数。于是我们就有一个募捐智能合约了,人们可以往里面捐款,达到限额后钱会自动发送到指定账户,全世界的矿工都在为这个合约进行计算和担保,不再需要人去盯着看有没有被挪用,这就是智能合约的魅力所在。
『肆』 长安链--智能合约的开发、编译、安装、调用、查询(二)
官方参考文档: https://docs.chainmaker.org.cn/dev/%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6.html
学习智能合约的郑唤开发,通常需要有Demo来学习API的使用方式,项目组织方式。在长安链学习过程中也是如此,所以第一步获取合约模块。
1.1) 拉取镜像: docker pull chainmakerofficial/chainmaker-go-contract:1.1.1
长安链为我们提供合约开发的镜像,内部包含合约模板。
1.2) 启动并进入容器: docker run -it --name chainmaker-go-contract -v ${PWD}:/home chainmakerofficial/chainmaker-go-contract:1.1.1 bash
启动 chainmaker-go-contract 容器并进入,同时将当前目录挂载到滚睁容器的 /home 目录下
1.3) 解压并分析合约模板
cp /home
tar xzvf contract_go_template.tar.gz
按照大丛岁官方参考文档方式 在 chainmaker-go-contract 容器中执行 ./build.sh
生成main.wasm文件
2)执行TestUserContractHash Test方法
这里使用的是默认配置文件,如果需要改变端口、连接数、TLS使能等等,需要修改 chainmaker-sdk-go/testdata/sdk_config.yml
『伍』 Defi中的关键 什么是智能合约
常有人问,什么是智能合约? 那么一定得先了解什么是“合约”。
什么是智能合约?
智能合约(Smart Contract)是上世纪90年代由密码学家尼克·萨博提出的理念,由于当时缺乏可信的执行环境,智能合约没有被应用和发展, 直到 以太坊 的出现,才让智能合约得以“复活”。
那智能合约到底是什么呢?简单来说智能合约就是用计算机语言取代了法律语言记录条款并由程序自动执行的合约。换句话说,智能合约就是传统合约的数字化版本,跑在区块链网络上,由程序自动执行。
自动售货机、ATM取款机, 在某种程度上都可以被理解为执行智能合约的机器 ,但这都不是真正意义上的智能合约
设计阶段的智能合约安全注意事项
考虑威胁建模和安全设计
What:从开发生命周期的一开始就实施识别系统的潜在威胁并确定其优先级的具体方案是很重要的 —— 智能合约开发人员应确定要在开发中实施的所有安全控制以及应在开发中检查的所有威胁测试、审计和监控。所有的安全假设,包括攻击的预期复杂程度和手段,都应在设计阶段明确定义和阐明。
How:遵循已知的威胁建模实践。如果开发团队没有内部安全专业知识,那么它应该在设计阶段的早期与安全顾问合作。在设计系统时采用「攻击者」的心态,并假设任何个人、硬件或服务都可能受到攻击。
智能合约有哪些特点
与传统的合约相比,智能合约有三大特点:
1、合约内容公开透明
智能合约部署在区块链上,其合约内容自然是公开透明的。
2、合约内容不可篡改
同样,因为部署在区块链上原因,智能合约的内容是无法被修改的。
3、永久运行
运行在区块链上的智能合约,同样被区块链上网络节点共同维护,只要区块链在,智能合约就能永久的运行下去。有种“链在合约就在”的兄弟情义之感。
有区块链三大特点加持的智能合约,与传统的合约相比主要有如下优势
智能合约是用计算机语言取代了法律语言记录条款、由程序自动执行的合约。 部署在区块上的它,也具备了区块链的数据公开透明、不可篡改、永久运行的特点。
与传统的合约相比, 智能合约有去信任、安全、高效、无需第三方仲裁的优点 。但智能合约并不完美,而且也不智能或者说它的智能程度很低。
文章中提到智能合约的执行无需第三方机构裁决,同时又提到,当执行条件涉及到外部信息时,智能合约无法感知 ,需要对智能合约输入相关的信息,才能触发智能合约去执行裁决
『陆』 FIL智能合约解读
这可以通过几个关键的方式实现,都可以通过定制的Chainlink外部适配器实现:
1. 智能合约输入—使用Chainlink口令将存储在星际文件系统上的经过密码学证明的数据桥接到区块链上。然后,这些数据可以作为输入,在Ethereum等网络上触发智能合约应用程序的执行。
2. 智能合约输出—允许智能合约向星际文件系统发送输出,作为数据存储的命令,由Chainlink口令桥接这两个环境。
3. 智能合约自动化—利用Chainlink Keepers,根据预先定义的条件,如定期的时间间隔或市场活动,触判哗发输入或输出的预言机工作。
鉴于混合智能合约应用的快速增长,它们将继续产生和消耗更多的数据,这是合乎逻辑的—需要更大的存储需求,同时保持区块链的防篡源隐改和可用性保证。Chainlink中间件的双向通信能力使星际文件系统和外部区块链之间的通信成为可能,这扩展了智能合约的不可更改的数据存储能力。
申请Chainlink和星际文件系统的联合资助
Chainlink和星际文件系统的联合资助计划正在支持最多五个团队建立由防篡改文件存储和通用连接驱动的卓越混合智能合约应用。从本质上讲,这些联合资助是为那些将Web3.0堆栈扩展到链上计算之外,并扩展到去中心化的链下计算、数据和存储的开发者准备的。
以下是一些可能的混合智能合约应用的例子,但我们鼓励所有结合Chainlink和星际文件系统的提案:
星际文件系统存储提供者保险
当星际文件系统存储提供者不可靠时,Chainlink预言机可以通知外部智能合约。如果预言机不能从存储中检索数据或确定存储提供者离线,可以自动向另一个区块链上的投保人发放保险赔付。
数据赏金
智能合约可以汇集资金,用于存储特定的数据,如其独特的内容标识符(CID)的特征。一旦证明它已被存储在星际文件系统网络上的证据从Chainlink预言机处转达,就会触发支付。
永久存储
由于Chainlink的双向连接,其他区块链上的智能合约可以在星际文件系统上验证存储。可以在Ethereum等网络上建立合约,任何人都可以在星际文件系统上以特定的时间间隔存入和资助数据的存储。
DeFi数据
智能合约可以使用Chainlink预言机,以防篡改的方式在星际文件系统上存储大量的金融数据,这些数据可以按需交付给各种区块链上的智能合约,以创造更多的互操作性。
如果你想参加Chainlink-星际文件系统资助项掘裂行目,请在2021年9月17日之前在这里申请。最多五个团队将被选为共同赞助的赠款,这些赠款将用于进一步开发他们的项目。
『柒』 利用python的flask框架开发智能合约
开发智能合约的框架有很多,比如:
但我是一个pythoner,显然上述都不合适
3.6
ganache是以太坊的本地测试链
web3是一个用于和以太坊交互的python库。
flask的插件,可快速构建restful风格的api
flask的插件,用于序列化/反序列化
启动一个区块链,用于测试智能合约的发布
先查看本地的solidity版本是多少
使用solidity编写智能合约。
solidity是用于编写以太坊智能合约的语言。
编写user.sol文件
官方的版本中要连接 stringUtils 和 主文件 ,因为我是一个菜鸡,不知道怎么导入外部包,所以直接省掉了这部分操作。
合约部署成功以后(仅部署一次即可),然后可以通过flaskapi来做数据 “存”,“取” 操作。
『捌』 如何做智能合约开发需要多长时间
找一家专业的公司做,专业的事交给专业的人。他们做的很快的,像鑫宏拦世通网络悄昌就启绝扒听专业的,报价比较实惠! 你也可以网络下。
『玖』 以太坊智能合约开发:让合约接受转账
在以太坊智能合约开发中,通常会有向合约地址进行转账的需求,那么有几种向合约地址进行转账的方式呢?
有三种方式:
部署合约时转账
调用合约提供的方法
直接向合约地址进行转账
但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?
1、部署转账
在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。
示例:
2、执行合约转账
执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符
示例:
3、直接转账
支持直接转账,需要借助后备函数(fallback function),只需要为后备函数添加 payable 修饰符
示例:
『拾』 一文读懂混合型智能合约:如何结合链上与链下计算资源
混合型智能合约包含链上运行的代码和链下数据、计算资源,预言机可为其提供喂价、储备金证明、可扩展计算等功能。
撰文:Chainlink
混合型智能合约包含区块链上运行的代码以及区块链下的数据和计算资源,这些资源由去中心化预言机网络传输至链上。混合型智能合约可以协调复杂的经济和 社会 活动,具有区块链防篡改的特质,并且可以安全地接入链下预言机服务,实现各种创新功能,如可扩展性、保密性、公允排序以及接入任何链下数据源或系统。
本文将明确定义混合型智能合约在区块链信任模式中的作用,并阐述 Chainlink 预言机为混合型智能合约提供的各种去中心化服务,以及这一发展将如何催生出新一代的混合型智能合约应用。这些连通了链下资源的混合型智能合约将在未来席卷几乎所有主流行业,并改变整个 社会 的合作方式。
预言机如何扩展区块链上的合作方式
区块链在本质上是促进可信合作的计算基础架构,这是它的关键功能。参与者有了信任,才会坚定地认为合作关系是可靠、真实且有效的。在合作中建立信任最常见的方式就是签署合约。合约定义了各方的法律和商业义务,以及他们行为会受到的奖励和惩罚。然而,如今的合约义务执行机制却漏洞百出。甚至一些情况下,某个参与者会拥有绝对优势,比如操纵和影响合约执行机制,比对手方得知更多消息,或拥有更多时间和资本延长仲裁过程。因此,现在的合约系统变成了:你必须相信对手方的品牌背书,才能信任你们之间的合作关系是牢靠的。
区块链技术的出现使合作从品牌背书转向了基于算法的信任(math-based trust)。合约的存放、执行和托管都转移到了去中心化网络中运行的代码逻辑中,个人完全无法干预和篡改。区块链就像一台没有联网的计算机,可信度非常高,因为它是一个封闭的环境,并且只能实现几种容易执行的功能,比如在一个封闭账本中的多个地址之间转移通证。这种设置是有意而为。虽然区块链的封闭性和功能的单一性为它带来了防篡改性和高度的确定性(这也是区块链最有价值的地方),但同时也排除了任何需要接入链下数据、计算或功能的合作方式。
由于用户希望扩展区块链上可行的合作方式,因此预言机以及混合型智能合约相继出现。预言机为区块链接入外部世界提供了安全的门户,让智能合约应用可以验证外部事件,基于外部系统触发操作,并完成在链上无法实现的计算任务。
Chainlink2.0 白皮书中提到,去中心化预言机网络(DONs)极大扩展了智能合约可以实现的链上合作方式。去中心化金融(DeFi)的快速崛起就是一个很好的例子。Chainlink 去中心化预言机网络将金融市场数据传输到区块链,支持 Aave 货币市场、Synthetix 衍生品平台、dYdX 杠杆交易市场以及 Ampleforth 算法稳定币等各种混合型智能合约协议,因此加速了 DeFi 的发展。
混合型智能合约的构成要素
混合型智能合约应用包含两个部分,即:1)智能合约——这是专门在区块链上运行的代码;2)去中心化的预言机网络——这是为智能合约提供的安全链下服务。这两个模块安全地无缝交互,共同形成了混合型智能合约应用。最后,链上代码通过许多独特的方式得到增强,并且激活了一系列全新的应用场景,突破了之前链上代码在技术、法律或金融等方面的限制。
混合型智能合约将两个完全不同的计算环境同步在一起,打造出区块链或预言机网络单独无法实现的应用功能,并且将这两个环境中独一无二的优势结合在一起。链上代码在极其安全且功能受限的区块链环境中运行,攻击表面较小,因此用户在执行和储存时可以获得极高的确定性,代码一定会严格执行,结果将被永远储存在链上,不可篡改。而 DON 则在链下运行,因此可以更灵活地实现更多功能并访问更多数据。
值得注意的是,DON 也具有非常高的防篡改性和可靠性,可以与智能合约相媲美,但不同的是,DON 是在封闭的链下环境中运行,并且采用了多种安全机制。每个 DON 都会为一个应用提供定制化的去中心化服务,也就是说同一条区块链上的其他智能合约与这个 DON 的性能没有任何关联,而且保障所有智能合约安全的底层区块链共识机制也不会有任何风险。DON 作为独立的服务,不仅在安全上具有优势,而且还兼具灵活性,可以验证并计算更复杂且开放式的链下数据。
比如,一些智能合约选择接入 DON 的标准是去中心化水平以及加密经济安全性,而另一些智能合约则会选择节点声誉高且采用了高级加密技术展开可验证隐私计算的 DON。在这些异构网络中,可以并行几千个或甚至几百万个 DON,每个 DON 之间不会相互依赖,并可以为具体应用提供专门的去中心化服务。同一个 DON 的用户也可以共摊服务成本(如:目前众多 DeFi 协议共同使用 Chainlink ETH/USD 喂价预言机,并分摊成本)。这个框架非常重要,可以同时为所有区块链和应用提供服务,比如为高速区块链上运行的应用接入链下数据并保障隐私。另外,去中心化程度较高的区块链上的应用也需要接入可扩展的计算资源。
混合型智能合约如何结合链上和链下计算资源
为了进一步了解链上和链下模块的差异,我们先为每个模块明确定义:
链上模块:区块链
维护账本,可靠地托管用户资产,并与私钥交互。
处理用户之间不可逆的转账交易,执行最终结算。
解决分歧,建立安全护栏,保障 DON 的链下服务正常运行。
链下:去中心化的预言机网络
从链下 API 安全地获取和验证数据,并传输到区块链和 layer-2 网络中的智能合约。
为区块链和 layer-2 网络中的智能合约展开各种计算任务。
将智能合约输出的数据传输至其他区块链或链下系统。
混合型智能合约结合了链上代码和链下去中心化预言机网络,实现更高级的区块链应用
Chainlink 去中心化服务为混合型智能合约保驾护航
定义了混合型智能合约之后,我们来讨论一下 Chainlink DON 为智能合约提供的各种去中心化服务。这些去中心化服务可以大致分为两类,即:链下数据和链下计算。
链下数据
DON 可以在各种链下数据和区块链之间搭起连通桥梁,为混合型智能合约输入所需数据。以下是初步可以访问的数据类型:
喂价——从几百家交易平台聚合的资产价格数据,数据基于交易量加权计算,并剔除了异常值和虚假交易。
储备金证明——关于通证资产当前储备金余额的最新数据,比如 WBTC 的比特币抵押资产,或 TUSD 的美元抵押资产。
任何 API——来自受密码保护 API 接口的付费数据,数据类型涵盖天气预报、 体育 比赛结果、企业后台数据以及物联网数据。
区块链中间件——区块链抽象层,使链下系统可以接入任何区块链网络中的智能合约,双向读写数据。
链下计算
DON 可以代表智能合约执行一系列链下计算,帮助智能合约获取某些数据,或者打造原生区块链上无法实现的功能,比如隐私保护、可扩展性以及公允排序。以下是目前已经实现和未来即将实现的部分 DON 计算功能:
Keeper 网络——指定期维护智能合约的自动化 bot,在适当的时间点启动合约,执行关键的链上功能。
链下报告(OCR)——以可扩展的方式聚合 DON 预言机节点响应的数据,然后将聚合数据在单笔交易中发送至链上,以降低链上成本。
可扩展的计算——为智能合约执行实现高吞吐量和低成本,采用现成的 layer-2 技术定期与链上同步。
可验证随机函数(VRF)——安全地生成可验证的随机数,采用加密证明技术,证明过程的完整性。
数据和计算隐私——保护隐私的预言机计算功能采用零知识证明(DECO)、可信硬件(Town Crier)、安全的多方计算以及特定的 DON 委员会制度,将敏感数据保密地传输至智能合约。
公允排序服务(FSS)——根据预定义的公平原则开展去中心化的交易排序,避免抢跑攻击和矿工可提取价值(MEV)。
链上合约隐私——将合约逻辑与结算结果解绑,保护智能合约交易隐私,比如通过 DON 的 Mixicles 功能在两方之间传输数据。
Chainlink 去中心化的预言机网络提供一系列丰富的服务,拓展了混合型智能合约应用的功能
混合型智能合约对全球各个行业带来的影响
DON 可以实现高级的混合型智能合约框架,将不同系统和区块链上的各个独立实体无缝连接,实现安全和通用的自动化交互。Chainlink 为开发者克服了智能合约的技术壁垒,开发者可以利用区块链的高确定性,并通过 DON 实现外部连接、隐私保障、可扩展性以及公允排序等各种关键功能。混合型智能合约不仅为网络中各个参与者创造了更可信和高效的合作空间,还将区块链网络接入传统链下基础架构,并且无需在后端做任何修改。
DON 将为众多智能合约应用提供所需的隐私保障和可扩展性,并涵盖大多数企业应用场景和众多 游戏 和金融应用,为其实现高吞吐量和实时决策。混合型智能合约还将激活一系列前所未有的全新应用场景,比如通过可验证随机数和去中心化交易排序实现基于算法的经济公平性和透明性。
已经感受到,或即将感受到混合型智能合约影响的部分主流行业:
身份信息——身份信息可自动验证,并保护信息隐私。智能合约可以定义所需的个人信息以及所需操作。DON 对这些数据展开计算,验证用户个人信息,并同时保护信息不透露给对手方,并且不会储存在链下系统。
金融——抗审查的开放式金融市场,访问不设门槛,信息透明。智能合约可以为买家和卖家定义交易规则,DON 可以使用链下数据定价和结算,并实现额外的功能,如:隐藏交易、KYC 验证、公允交易排序以及高速链下处理等。
供应链——在共享账本上运行的多方交易协议,将产品线数字化,基于验证过的数据跨多个系统进行自动化操作。智能合约可以定义合约义务、支付条款和惩罚机制。DON 可以利用隐私计算和物联网数据追踪运输信息、监控质量控制、验证客户身份并触发结算付款。
保险——基于预定义事件建立双边预测市场,并在此基础上创建参数型保险。智能合约可以定义保费和理赔流程,DON 可以将合约接入链下数据,获得报价并处理理赔申请。DON 还可以开展风险评估计算,从云平台等数据源获取复杂的风险评估结果,并以保密的方式验证用户身份。
游戏 ——自动发放 游戏 奖励,用户可以通过 NFT 完全拥有 游戏 内资产,并提供权威证明,证明所有参与者都有同样的获胜概率。智能合约可以定义 游戏 规则和奖励发放模式,DON 可以提供防篡改的随机数,保障 游戏 的公平性可以得到验证,并且奖励发放过程是公平的。 游戏 dApp 接入 DON 后,还可以接入增强现实的物联网传感器等一系列链下数据源,并在链下处理部分 游戏 功能,以提高 游戏 性能。
市场营销——营销活动基于各种参数和指标自动实时发放奖励。智能合约可以定义阶梯式的奖励发放模式,并设置具体的里程碑目标。DON 可以验证目标是否达成,并对客户数据和市场趋势展开保密计算,以更有效地评估营销活动。
治理——分布式社区可以安全公平地管理共享系统和资金池。智能合约可以定义完整的治理框架,DON 可以提供链下数据和计算资源,触发利润分发、费用分摊和身份认证等各种操作,有效抵御女巫攻击,验证各成员的参与度,或甚至实现自动化的决策流程。
最终,DON 可以提供所有无法在链上实现的服务,并为现有数据和系统带来更强大的加密安全保障,以启动链下服务生态。混合型智能合约基础架构可以丰富去中心化系统的合作方式,让各个区块链和非区块链基础设施可以安全可靠地无缝交互,并保障可扩展性、保密性、定制化和通用连接性。虽然目前加密货币资产规模已达数万亿美元,且 DeFi 经济规模逼近 1000 亿美元,但是区块链生态仍处于发展初期,还有巨大潜力未被挖掘,因此混合型智能合约和 Chainlink 去中心化预言机网络拥有巨大的应用空间和潜力。
如果你想立刻着手开发混合型智能合约应用,并需要接入链下数据或计算资源,请查看我们的开发者文档,你也可以在 Discord 频道询问技术问题或与 Chainlink 专家透过电话沟通。