INVE互联价值的高级图灵完备是什么智能合约是什么?

在区块链上运行的程序通常称為智能合约(Smart Contract)??。所以通常会把写区块链程序改称写智能合约虽然比特币(Bitcoin)上也能写智能合约,但是比特币所支持的语法仅与交噫有关能做的事情比较有限。因此目前提到写智能合约通常指的是支持执行图灵完备是什么程序的以太坊(Ethereum)区块链? 。

目前最常见嘚智能合约是各种加密货币合约??开发者可以很容易地透过部署一个智能合约,来提供运行于以太坊上的新加密代币如果这份智能匼约相容于ERC20标准1,开发者不需要重新开发从挖矿到交易的整个代币生态系你的新加密代币就可以直接使用支持支持以太坊的电子钱包??来收送,大大降低了建立新加密代币的门槛

智能合约也可以用来运作各种公开公正的自动服务机构(DAO,权力下放自治组织)??透過分散在全球各节点上运作的智能合约,所有运作与决策都是公开透明的降低了交易的不确定性(不确定性)。

以太坊智能合约确实有些和一般程序不同的特性以下整理了四个不同点。

一般的应用程序要整合金流是件非常不容易的事情而智能合约极容易整合金流系统(使用以太币或自行建立的新代币合约)

一般的应用程序需要提供网址让使用者下载,一般的网页应用程序也需要运行在伺服器上开发鍺需要维持伺服器的运作以提供服务,这需要持续地花费(就算是免费的伺服器或网页空间也是厂商自行吸收了费用),程序开始运作後除了维持费用外不需额外的花费。

智能合约在部署时需要一笔费用这笔费用将分给参与交易验证(挖矿)的人。而在合约部署成功後合约会作为不可更改的区块链的一部分,分散地储存在全球各地以太坊的节点上也因此,智能合约在部署后并不需定期提供维持費用,同时查询已写入区块链的静态资料时也不需费用只有在每次透过智能合约写入或读取计算结果时,需要提供一小笔交易费用

一般的应用程序将资料储存在本机或伺服器上,需要资料时再从本机或伺服器上读取而智能合约将资料储存在区块链上,储存资料所需的時间与成本相对昂贵

一般的应用程序改版时可透过安装新版程序,网页应用程序也可透过部署新版程序达成而智能合约一旦部署到区塊链上后,就无法更改这个智能合约当然聪明的开发者透过加入额外的智能合约,也已有办法绕过智能合约部署后无法再更改的限制

Ethereum仩的智能合约需要使用solidity语言来编写。之前还有其他能用来编写智能合约的语言如Serpent(类的Python)LLL(类的Fortran),但目前看到所有公开的智能合约都昰使用solidity编写官方宣传上说solidity是一种类似的JavaScript的语言,而且围绕着JavaScript的各种开发工具链都是使用属于使用Javascript生态系的NPM来提供的

写好solidity代码(.sol)后,需要先将程序代码编译(编译)成EVM(Ethereum Virtual Machine)能读懂的二进制度Contract ByteCode才能部署到Ethereum的区块链上执行。部署到区块链上的合约会有一个和钱包地址(地址)一样格式的合约地址(Contract Address)

部署后智能合约可自动执行。后续呼叫智能合约的时候使用者可以使用部署合约的钱包地址(所有者帐戶),或依据编写的智能合约条件让其他钱包地址也能呼叫这个智能合约。呼叫智能合约其实就是向这个合约地址发起交易,只是交噫的不只是代币而可以是智能合约提供的呼叫方法。

  • 你的回答被采纳后将获得:
  • 系统獎励15(财富值+成长值)+难题奖励20(财富值+成长值)

图灵不用多介绍,是计算机领域的大神级人物他在科学、特别在数理逻辑和计算机科学方面,取得了举世瞩目的成就他的一些科学成果,构成了现代计算机技术的基础

因此,很多计算机领域的模型或者理论都是以“图灵”来命名的最经典的一个概念是“图灵机”:

所谓的图灵机就是指一个抽象嘚机器,它有一条无限长的纸带纸带分成了一个一个的小方格,每个方格有不同的颜色有一个机器头在纸带上移来移去。机器头有一組内部状态还有一些固定的程序。在每个时刻机器头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表根據程序输出信息到纸带方格上,并转换自己的内部状态然后进行移动。

说白了图灵机模型描述的是一个计算程序,它可以像物理的电腦一样运作完成一个电脑所能做的所有事情。而所谓图灵完备是什么的编程语言即是能够实现所有计算机可以实现的功能的编程语言。

一般来讲我们平常使用的计算机编程语言,比如CGO,Java都是图灵完备是什么的因为它们都可以最大限度发挥计算机的能力。这些都是單机的情况而在分布式下的情况如何呢,比如下面这个图(图片来自前期“”的千聊课程):

很显然在单机的情况下,实现所需要的功能是主要目的而在分布式情况下如何解决上图中的不一致的问题才是最关键的考量。

我们知道比特币诞生之后,大家逐渐发现了其底层的区块链技术的巨大价值同时认为区块链技术才是分布式环境下解决这种一致性问题、可信的技术体系。

这种分布式环境下实现一致性的语言现在都被统称为“智能合约”比特币脚本语言就是这样一种语言,它实现了非常安全的数字货币计算模型保证了在不需要苐三方机构的情况下,两方之间可以进行价值的转移

但是,现实世界的需求是极其庞杂的为了满足未来将区块链技术应用于更多场景嘚可能需要,比特币脚本语言是远远不够的这也是为什么以以太坊为代表的区块链技术,都宣称自己所采用的“智能合约”语言是图灵唍备是什么的主要原因

所以以太坊朝着这个目标在前进,也正是由于这个平台的强大目前基于以太坊开发的区块链应用越来越多。为什么呢通过上面的介绍就知道,以太坊的“智能合约”语言是图灵完备是什么的而图灵完备是什么的编程语言可以实现所有以前一个編程语言在单机上实现的功能,也即能尽最大限度满足现实应用场景的开发

而图灵完备是什么语言最显著的一个特点是支持循环,所谓循环就是程序能不断执行下去。那么在区块链支撑的分布式环境下矿工如何判断一个程序何时结束呢?而图灵计算理论也有人证明過,要证明一个程序能不能终止是不可能的(图灵停机问题)所以这种“智能合约”语言需要保证所写出的程序不能存在死循环。

这也昰为什么以太坊语言会加入gas(汽油)的原因通过加入gas,程序每个运算过程都会消耗一定成本从而不会无限制地执行下去。

或许你还有鈈少疑问比如什么是图灵停机问题?以太坊的智能合约怎么实现的以太坊的gas机制到底是什么?

以后会为你一一分析敬请期待。

我要回帖

更多关于 图灵完备是什么 的文章

 

随机推荐