首页Pi币教程 正文

Pi Network与智能合约

2023-11-21 4698 0条评论

先说结论,如果你想的是跟以太坊一样的DApp,Pi Network目前没有这样的功能。 但目前没有,不代表将来没有。

 

智能合约

 

智能合约(Smart Contract)一词是由学者Nick Szabo1990年代初期提出,倡议可以将交易的条款透过电脑化来落实,只可惜当时没有合适的环境来实现。

 

直到这几年,智能合约才随着区块链(Blockchain)技术的兴起,逐渐有了大展拳脚的舞台。 2015年中推出的区块链平台-以太坊 (Ethereum),其白皮书名为「新一代智能合约与分布式应用平台」(A Next-Generation Smart Contract and Decentralized Application Platform),强调智能合约为其平台特色,一举将智能合约这个名词推到一个新的层次,让大家开始注意到智能合约的重要性,甚至视其为「区块链 2.0」的主要技术与应用。

 

现今我们谈论的智能合约跟区块链是息息相关的,简化一点甚至可以说,智能合约就是在区块链平台上执行的程序。

 

智能合约是以应用程序的逻辑,来实现交易合约中的条款与条件; 因此,不同的区块链平台所提供的智能合约,多少会有些差异。 但一般说来,智能合约的运作,多半是以「事件驱动」的方式进行; 智能合约程序一旦部署到区块链平台上后,当合约所设定的事件发生时,一些条件就会成立而触发合约的指定功能,开始执行程序; 执行的结果,通常就会引发资产的移转。

 

另外,有些事件是发生在区块链之外的,智能合约必须去跟这些外部系统要求相关信息。 例如我们可以开发一个防疫险的智能合约,只要通报确诊,就能自动获得理赔。 这时智能合约就必须定期去跟卫福部的系统索取确诊资料。 我们称这种具权威性的外部资料源为「神谕」(Oracle),安全又有效取得外部Oracle资料,是很多智能合约运行的一个重要依据。

 

DApp

 

DApp的全名是去中心化应用程序(Decentralized Application),相对于过往运行在中心化服务器的App,DApp的程序部署在分布式的网络上, 所有的资料皆公开透明且不可篡改。

 

只要区块链上开发的App都是DApp吗? 答案是否定的。 2014年的一篇名为「去中心化应用程序的一般理论,DApps (The General Theory of Decentralized Applications, DApps) 的论文列出了DApp的主要标准。

https://github.com/DavidJohnstonCEO/DecentralizedApplications

 

根据该论文,去中心化应用程序必须满足四个主要标准:

1. 它必须具有开源代码,并且可以在不依赖集中式网络的情况下自主运行。 用户必须达成共识才能实现对应用程序代码的更改。

2. 数据和操作记录必须以加密方式存储在公共、分散的区块链中,而不是集中式服务器。

3. 使用应用程序必须花费加密代币,并且质押者、矿工、农民的任何价值贡献都应获得代币作为奖励。

4. 依赖于工作量证明或权益证明等共识机制来生成代币。

 

但是现在我们所知晓的DApp并不完全遵守这些标准,为了方便,我们可以简化地说,以太坊上基于智能合约的应用程序就是DApp,也就是说智能合约可以用来串联DApp与区块链,当做它们两者间的桥梁。

 

DApp和我们常使用的应用程序App类似,但App为中心化、DApp为去中心化程序。

l APP:前端界面 + 一个中心化的服务器。

l Dapp:前端介面 + 去中心化的智能合约,因为放在区块链上,不需要服务器。

 

如何做到?

 

到目前为止的内容,在网络上都查的到,讲得也大同小异,但却省略了实作上的技术细节。 大家是否想过,智能合约是怎么存放在区块链上的? 没有服务器,又是在哪里执行这些程序的?

 

细节可以参考这两篇链接

https://medium.com/pelith/howethsmartcontractwork-328bd8b9bb62

https://medium.com/pelith/structure-of-ethereum-blockchain-35fd4849f609

 

我只提两个重点:

1. 智能合约的代码严格来说是二进制码是放在交易的Input Data中,由节点矿工部署上链,生成「合约地址」。

2. 以太坊的节点可以运行EVM(Ethereum Virtual Machine,以太坊虚拟机器,当节点矿工执行交易时,就是由EVM执行合约代码。

 

所以如果拿这两点来检视Pi Network(或者Stellar),结果是什么呢?

 

首先,Stellar不提供内建的智能合约语言或像以太坊这样的虚拟机器来编写智能合约代码。 但不表示Stellar没有智能合约,让我们回头看看什么是智能合约,它只是将彼此的交易条款与条件,表达成自动执行的程式码,透过智能合约将两造之间的资产移转,变成可程式化的。

 

Stellar上的智能合约不是图灵完备(Turing-complete),无法解决所有的可计算的问题,但它结合了交易和各种约束来提供预期的结果。

 

Stellar智能合约(Stellar Smart Contract, SSC)是通过不同的约束条件执行交易。 这些约束条件包含:

l 多重签名(Multisignature):授权特定操作需要哪些私钥? 多重签名是需要各方账户来签署交易的概念。

l 原子性/批次处理(Atomicity/Batching):所有操作必须同时发生或失败? 必须发生什么才能迫使它失败或通过? 批次处理是在一个交易中涉及多个操作的概念。 原子性确保给定的一系列操作在提交到网络后,如果一个操作失败,则交易中的所有操作都会失败。

l 顺序(Sequence):应按什么顺序处理一系列交易? 有哪些依赖和限制? 比如有组二择一的交易,利用序列号可以确保在提交其中一个交易时,不会执行另一个交易。

l 时间限制(Time Bounds):什么时候可以执行交易? 时间限制是对交易有效时间的限制。

 

举例一种实作方法,我们需要三个账户,即来源账户(S)、目的账户(D)和托管账户(E),来执行两方之间的时间锁定托管合约。 (S)建立(E),把适当数量的资产存入(E),并将(D)添加为(E)的签名者, 然后设定一些时间限制的约束条件。

 

更多关于以太坊智能合约与恒星智能合约的比较可参阅Espeo Blockchain blog

https://espeoblockchain.com/blog/ethereum-smart-contracts-vs-stellar-smart-contracts/

 

Soroban

 

SDF(Stellar Development Foundation)2022年的规划蓝图中,智能合约是一项重要的目标。 名为《Jump Cannon》的项目在20228月发布了预览版的原生智能合约平台Soroban台湾的Pi先锋善逸也有参与。 同年10月,SorobanFuturenet上线,提供开发人员测试环境,SDF还宣布了一项1亿美元的基金,以支持在Soroban上进行开发的开发人员。 预计在2023年上半年在Stellar主网上推出Soroban,正式将图灵完备(Turing-complete)的智能合约引入Stellar网络。

 

Soroban是一个独立的智能合约平台,根本不依赖也不需要Stellar,甚至可以被其他区块链、L2s使用。 Stellar通过提交InvokeContractOp操作来调用Soroban合约。 虽然Soroban是发展中的新东西,但却是建立在成熟的技术之上:WASMRust

 

WASM(WebAssembly)是为在浏览器中运行沙盒应用程序而建立的代码规范。 它被各种不同配置的链使用:PolkadotTerraNearElrondDfinity等。 它最常使用Rust编程语言,但也支持其他语言,如CC++

 

从本质上讲,WASM是一个运行在所有现代浏览器上的虚拟机,由W3C建立与定义,专为网络而生。 它具有EVM的所有功能,并且速度快、效率高、可移植。 通过使用WASM,我们可以在浏览器中使用任何程式语言开发的应用程序,开发人员也不必直接编写WASM代码,而是把其他语言编写的程序编译成WASM

 

有趣的是,以太坊社区早在2015年就一直在倡导在以太坊中使用WASM,以太坊基金会还开发了eWASM

 

Rust是由Mozilla主导开发的通用、编译型程式语言。 设计准则为「安全、并行、实用」,支持函数式、并行式、程序式以及对象导向的编程风格。 它虽然由Mozilla资助,但其实是一个共有项目,有很大部分的代码是来自于社群的贡献者。

 

Rust的设计目标之一,是要使设计大型的互联网客户端和服务器的任务变得更容易。 因此更加强调安全性、内存配置、以及并行处理等方面的特性。 在效能上,具有额外安全保证的代码会比C++慢一些,否则两者效能上是相似的。

 

选择Rust还意味着我们可以在智能合约及其宿主环境之间共享代码Stellar的情况下,这是指stellar-core)SDF正在这样做!

 

至于将来的发展会怎么走? Pi Network会不会也采用Soroban? 还是另外发展自己的智能合约? 就靠全体的先锋一起努力了。

f68bcdaade7642858cfd3d06888eb90e.jpeg

 

补充观点

 

关于DApp也有人持不同的见解,定义广义来说只要使用去中心化系统即为DApp。 以下补充CT及先锋善逸的见解:

 

CT:世界上没有一个DApp是真正去中心化,目前认同的DApp都是有使用到去中心化系统的。

 

Kai:我这边假设常常有的系统会拥有数据库/存储系统/云计算//云端托管... 目前很多都是只有其中之一为去中心化系统。 Soroban目前还有很多限制,很多开发者也在测试目前现有的功能,未来功能也会慢慢新增。 Soroban的宗旨和Stellar一样,必须是让开发者容易使用并且保留快速的效率,这也是为什么当初选择WASMRust考虑重点之一。


文章投稿或转载声明

本文来源:yuanrui919 版权归原作者所有,转载请保留出处。本站文章发布于 2023-11-21
温馨提示:文章内容系作者个人观点,不代表 Pi币中文网 对其观点赞同或支持。

发表评论

快捷回复:

评论列表 (暂无评论,4698人围观)参与讨论

还没有评论,来说两句吧...

目录[+]

取消
微信二维码
微信二维码
支付宝二维码