当前位置:首页 > 资讯 > 区块链技术 > 正文

虾说区块链-基础篇-15

发布:中币网   时间:2017-10-17 11:05:00   加入收藏 打赏

一直在说区块链是一系列技术结合后的新的技术架构,那么这里分别介绍下这些相关技术,也涉及到一些扩展开去的相关内容。

一直在说区块链是一系列技术结合后的新的技术架构,那么这里分别介绍下这些相关技术,也涉及到一些扩展开去的相关内容。

虾说区块链-基础篇-15

 

相关技术-图灵完备:

首先说下图灵,学过计算机的同学肯定知道这个大名鼎鼎的人物。

艾伦·麦席森·图灵(Alan Mathison Turing,1912年6月23日-1954年6月7日),英国数学家、逻辑学家,被称为计算机科学之父,人工智能之父。

图灵机:我们现在在用的计算机都是在图灵机的基础上发展而来,图灵机定义了现代计算机的核心部分,即输入输出设备,cpu,内部存储器。图灵机是为了用机器模拟人的运算过程而实现的,当图灵机通过纸带上的标识改变控制器的当前状态,然后纸带移动一格。根据输入和当前状态转变为下一状态。 所谓的图灵机就是指一个抽象的机器,它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的状态标识。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。机器头时刻从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动。

http://www.cnblogs.com/worldtraveler/archive/2013/08/26/3282077.html

 

 

虾说区块链-基础篇-15

图灵完备:在可计算理论中,当一组数据操作的规则(一组指令集,编程语言,或者元胞自动机)满足任意数据按照一定的顺序可以计算出结果,被称为图灵完备(turing complete)。一个有图灵完备指令集的设备被定义为通用计算机。如果是图灵完备的,它(计算机设备)有能力执行条件跳转(“if” 和 “goto”语句)以及改变内存数据。 如果某个东西展现出了图灵完备,它就有能力表现出可以模拟原始计算机,而即使最简单的计算机也能模拟出最复杂的计算机。

图灵完备语言:定义简单来说,可以用来模拟图灵机的语言就是图灵完备语言。换一种解释:一个语言是图灵完备的,意味着该语言的计算能力与一个通用图灵机 Universal Turing Machine)相当,这也是现代计算机语言所能拥有的最高能力。两者其实都是一样的,再细说下,具有条件分支功能,比如:if、for、while、goto,再有读写一定数量的数据的功能,就理解有数组概念的语言,也就是图灵完备语言。目前我们所使用语言C++、java等都是图灵完备语言。

其实这个概念很抽象有兴趣的就看这个吧:维基百科上的关于图灵完备的论文https://en.wikipedia.org/wiki/Turing_completeness

区块链上的图灵完备:在区块链技术上,听到最多的应该就是以太坊的智能合约支持图灵完备,在以太坊你可以新建一个包含一些代码的账户,在一次交易中把它上传到以太坊区块链上,这样你就创建了一个智能合约。合约被上传,当你想要运行它的时候你应该创建一个交易,向合约支付ETH,如果合约需要,你可能还要提供一些其他信息。每个挖矿计算机会通过以太坊虚拟机在它们的计算机上运行智能合约,作为他们参与挖矿进程的一部分,然后得出一个输出的结论。理论上,如果没有人恶意操作,每个计算机在以太坊网络上会得出相同的结论因为它们运行着提供了相同信息的相同合约代码。当一个区块产出,矿工会把这个区块公布到其余的网络中,其他的计算机会验证它们得到的结果相同,然后添加该区块到它们自己的区块链上。这就是以太坊区块链更新状态的方式。以太坊的核心是以太坊虚拟机(EVM),EVM可以执行任意算法复杂度的代码。以太坊是图灵完备的。开发者可以使用语法上类似JavaScript和Python的编程语言(Solidity)创建运行于EVM上的应用程序。

对比下比特币和以太坊对图灵完备的支持:

就是说图灵完备的语言,有循环执行语句,判断分支语句等。理论上能解决任何算法。但有可能进入死循环而程序崩溃。

图灵不完备,应该是不允许或限制循环。可以保证,每段程序都不会死循环,都有运行完的时候。

比特币的脚本系统是图灵不完备的,而一些竞争币的智能合约系统是图灵完备的。

各有优缺点,图灵不完备会更安全些,图灵完备会更智能些。

分析这些,结合上面说到智能合约中执行需要支付ETH,在以太坊中设置了GAS的概念,一旦GAS用尽执行也就停止了,这就很好的防止了恶意程序和死循环。

 

相关技术-隔离见证:

 

2015年12月,比特币核心开发员Pieter Wuille 在香港提出隔离见证 (Segregated Witness)软分叉方案,为了彻底解决区块的大小和交易效率的问题。用户在交易时,会把比特币传送到有别于传统的地址。当要使用这些比特币的时候,其签署 (即见证)并不会记录为交易ID的一部份,而是另外处理。也就是说,交易ID完全是由交易状态决定,不受见证部份影响。

虾说区块链-基础篇-15

 

首先隔离见证是对比特币的一种升级扩容方案,由于交易量的增加和比特币区块大小的限制,区块很快被填满,导致交易处理的效率越来越低,比特币有一个图解曲线图可以看出:

虾说区块链-基础篇-15

 

扩容其实十分必要了,只有区块的容量扩大,容纳更多交易这个才能在单位时间内处理更多的交易。

隔离见证,这个是字面翻译,千万不要咬文嚼字去理解概念,我们还是从交易开始说,来解释说明这个概念,之前文章里有对比特币交易做过解释说明,其中比特币中的数据结构UTXO,UTXO直接决定了交易中资金的使用和支配权。在比特币交易中交易是以输入输出的信息存在,输入信息证明资金的所有权,在转账过程中,转账者需要用自己的私钥签名表明能够使用这个资金,同时加上接收者的地址,说明这笔资金是转账给谁,这个过程中签名占用了大量的字节,比特币网络中的旷工需要验证这个签名,而网络中的普通节点只需要知道这个资金是不是可用,简单来说,大多数节点不涉及自己的交易并不是很关心这个签名,所有在比特币系统中出现一种将签名信息隔离开来的提议,那在UTXO中放一个指向签名信息的指针即可。从数据结构角度来说隔离见证方案就是将原来的UTXO信息分为输入、输出、签名(见证)。我们从几个图来说明下可能好理解:

现在的区块和区块链结构图:

虾说区块链-基础篇-15

 

隔离见证后的区块和区块链结构图:

 

虾说区块链-基础篇-15

 

虾说区块链-基础篇-15

 

隔离见证后突破1M区块的限制,由于隔离见证是一种升级方案,那就会产生分叉的问题,隔离见证分叉后如图:

 

虾说区块链-基础篇-15

 

当然隔离见证之前一直有各种问题被讨论,

隔离见证增加技术过失。将签名的merkel根硬塞进coinbase信息,这样隔离见证就能作为软分叉进行部署,这种想法就是一团烂泥,我们想要往比特币基础层放入多少杂牌组件呢?我们打算把软分叉变成一种常规活动吗?我不认为有人能够从中获益,除了那些要求获得跟大设备职权的开发者。

 隔离见证无法被回滚,因为对于未升级的客户端,隔离见证交易看起来像所有人支付。隔离见证激活后,如果通过大多数矿工软件自愿降级来回滚隔离见证,那么隔离见证输出的所有资金都能被不道德的矿工拿走。随着越来越多的资金被锁在隔离见证输出,那么对矿工相互串通的激励就越高。相比之下,硬分叉提升区块大小能够通过一种降低区块大小的软分叉来回滚。

 隔离见证实际上并不增加区块大小,它只是以一种不同的方式来计算区块大小,对隔离见证数据进行打折。这就意味着正常的非隔离见证交易将不会被计算在内。这也意味着只有比特币网络的所有人都使用隔离见证交易,这样才能实现有效区块大小增加。鉴于隔离见证的采用难以预测,实际的交易处理能力增加可能会是目前的1倍到2倍。这也是为什么我将隔离见证区块大小增加称为‘伪增长’。

该地址有多隔离见证前的优缺点分析,有兴趣可参考:http://www.btc38.com/btc/altgeneral/12679.html

来源:




来源:中币网  https://www.zhongbi.net/news/jishu/2470.html
声明:登载此文仅出于分享区块链知识,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。 此文如侵犯到您的合法权益,请联系我们3111859717@qq.com,我们将第一时间处理。