教程网

您现在的位置是: 首页 > 百科

区块链技术的工作原理怎么样?

区块链技术的工作原理怎么样?
区块链技术的工作原理怎么样?区块链技术的本质是一个“去中心化”的分布式账本数据库,是一种令所有人都可信任的“记账模式”,具备极强的恢复能力。正是由

区块链技术的工作原理怎么样?区块链技术的本质是一个“去中心化”的分布式账本数据库,是一种令所有人都可信任的“记账模式”,具备极强的恢复能力。正是由于这样的特点,区块链技术在军事领域中存在多种可能的潜在应用。

区块链技术是战场信息的保护伞。区块链技术拥有无法摧毁的特性,区块链技术中每个节点都是系统的一部分,每个节点都有着一模一样的账本,摧毁部分节点对系统没有影响。在现代军事斗争中,夺得了制信息权就夺得了制胜权,战场信息对战争的胜败起着至关重要的作用。拥有数据无法摧毁等诸多特性的区块链技术,能实现数据存储的完整性,并保护高度敏感信息,一定程度上提升了战场信息的安全性和可靠性。目前,美国国防部计划创建一个安全可靠的消息获取和提供平台,从而使任何人在任何地方都能够安全地收发信息,并用于支持部队作战。

区块链技术是军事情报工作的“线人”。区块链技术的突出优势是无需中介参与,过程高效且高度安全。众所周知,军事情报工作中情报提供者或者雇主均需要隐秘身份和行踪,传统的信息交易、资金交易等支付方式极易被跟踪、锁定,并被摧毁。基于区块链技术的系统平台可以作为交易中介,充当中间“线人”,这样就可以巧妙隐藏交易通道,让情报、资金隐蔽流转、难以追溯,进而有效保护情报人员的安全。从这个意义上讲,将区块链技术应用于军事人力资源管理中,还可以实现军事人员信息的可靠存储。

区块链技术是军事装备立体管理的“火眼金睛”。区块链技术是一种动态的记账技术,通过其去中心化、不可篡改的账本,可以永久记录网络或数据库的动态,防止入侵者盗取数据,实时监测调查数据库是否被篡改。军事斗争中对武器装备的控制,以及保持数据的完整性至关重要,通过引入区块链技术,构建一种不可被破解的完整监控、管理和控制系统,可以进一步提高武器装备管理的安全性、便利性和可信度。

区块链技术是军事物流的“防弹衣”。区块链技术去中心化的本质,使其在遭遇攻击后拥有极强的信息恢复能力,除非系统内所有的电脑遭到破坏,否则,修改一个节点的信息完全没有意义,因为系统可以快速恢复完整形态。当前的物流系统过于依赖信息服务中心的可靠性,一旦信息服务中心出现故障,将影响到整个物流系统的正常运转。而军事应用对系统的安全性和战时抗毁伤能力要求非常高,利用区块链技术可有效解决智能化军用物流面临的信息安全、数据存储和交互处理等核心问题,重点是可以提高物流系统的生存能力,从而保证系统的有序高效运转。

从本质上来讲,区块链技术是一个相互信任的存储设备,可用于多个用户之间的信息交易,其核心就是“分布式共识”和“匿名性”,它可以随时验证交易,且不会影响相关方的隐私。因此,区块链技术势必会成为新一代颠覆性技术,其在军事上的应用也将会变得更加广泛和深入。好了,通过对以上的总结,大家对虚拟币的各个方面有没有了很深的了解呢?希望这篇文章会解答一下您的疑惑和让您对您的币种更加了解,会更加深入了解虚拟币。

希望大家收获多多,钱包越来越鼓最后虚拟币也有一定的风险,希望大家量力而行,要谨慎客观的分析各方面的因素,综合自己的自身条件来考虑到底要不要选择一个币种。希望本篇文章会帮助到你。如果有其他需要,大家也可以继续多关注关注我们的文章,会不定时的推送,希望大家通过阅读我们的文章对您的虚拟币会有一个更加清晰的了解那么谢谢您的阅读。

以太坊的工作原理是什么?不管你们知不知道以太坊(Ethereum blockchain)是什么,但是你们大概都听说过以太坊。最近在新闻里出现过很多次,包括一些专业杂志的封面,但是如果你们对以太坊到底是什么没有一个基本的了解的话,看这些文章就会感觉跟看天书一样。

所以,什么是以太坊?本质上,就是一个保存数字交易永久记录的公共数据库。重要的是,这个数据库不需要任何中央权威机构来维持和保护它。相反的它以一个“无信任”的交易系统来运行一个个体在不需要信任任何第三方或对方的情况下进行点对点交易的架构。

依然感到很困惑?这就是这篇文章存在的理由。我的目标是在技术层面来解释以太坊的工作原理,但是不会出现很复杂的数学问题或看起来很可怕的公式。即使你不是一个程序员,我希望你看完之后最起码对技术有个更好的认识。如果有些部分技术性太强不好理解,这是非常正常的,真的没有必要完全理解每一个小细节。我建议只要宏观的理解一下事物就行了。

这篇文章中的很多议点都是以太坊黄皮书中讨论过的概念的细分。我添加了我自己的解释和图表使理解以太坊更加简单一点。那些足够勇敢的人可以挑战一下技术,去阅读一下以太坊的黄皮书。

好了, 让我们开始吧!

区块链定义

区块链就是一个具有共享状态的密码性安全交易的单机(cryptographically secure transactional singleton machine with shared-state)。[1]这有点长,是吧?让我们将它分开来看:

“密码性安全(Cryptographically secure)”是指用一个很难被解开的复杂数学机制算法来保证数字货币生产的安全性。将它想象成类似于防火墙的这种。它们使得欺骗系统近乎是一个不可能的事情(比如:构造一笔假的交易,消除一笔交易等等)。

“交易的单机(Transactional singleton machine)”是指只有一个权威的机器实例为系统中产生的交易负责任。换句话说,只有一个全球真相是大家所相信的。

“具有共享状态(With shared-state)”是指在这台机器上存储的状态是共享的,对每个人都是开放的。

以太坊实现了区块链的这个范例。

以太坊模型说明

以太坊的本质就是一个基于交易的状态机(transaction-based state machine)。在计算机科学中,一个 状态机 是指可以读取一系列的输入,然后根据这些输入,会转换成一个新的状态出来的东西。

根据以太坊的状态机,我们从创世纪状态(genesis state)开始。这差不多类似于一片空白的石板,在网络中还没有任何交易的产生状态。当交易被执行后,这个创世纪状态就会转变成最终状态。在任何时刻,这个最终状态都代表着以太坊当前的状态。

以太坊的状态有百万个交易。这些交易都被“组团”到一个区块中。一个区块包含了一系列的交易,每个区块都与它的前一个区块链接起来。

为了让一个状态转换成下一个状态,交易必须是有效的。为了让一个交易被认为是有效的,它必须要经过一个验证过程,此过程也就是挖矿。挖矿就是一组节点(即电脑)用它们的计算资源来创建一个包含有效交易的区块出来。

任何在网络上宣称自己是矿工的节点都可以尝试创建和验证区块。世界各地的很多矿工都在同一时间创建和验证区块。每个矿工在提交一个区块到区块链上的时候都会提供一个数学机制的“证明”,这个证明就像一个保证:如果这个证明存在,那么这个区块一定是有效的。

为了让一个区块添加到主链上,一个矿工必须要比其他矿工更快的提供出这个“证明”。通过矿工提供的一个数学机制的“证明”来证实每个区块的过程称之为工作量证明(proof of work)。

证实了一个新区块的矿工都会被奖励一定价值的奖赏。奖赏是什么?以太坊使用一种内在数字代币-以太币(Ether)作为奖赏。每次矿工证明了一个新区块,那么就会产生一个新的以太币并被奖励给矿工。

你也许会在想:什么能确保每个人都只在区块的同一条链上呢?我们怎么能确定不会存在一部分矿工创建一个他们自己的链呢?

前面,我们定义了区块链就是一个具有共享状态的交易单机。使用这个定义,我们可以知道正确的当前状态是一个全球真相,所有人都必须要接受它。拥有多个状态(或多个链)会摧毁这个系统,因为它在哪个是正确状态的问题上不可能得到统一结果。如果链分叉了,你有可能在一条链上拥有10个币,一条链上拥有20个币,另一条链上拥有40个币。在这种场景下,是没有办法确定哪个链才是最”有效的“。

不论什么时候只要多个路径产生了,一个”分叉“就会出现。我们通常都想避免分叉,因为它们会破坏系统,强制人们去选择哪条链是他们相信的链。

为了确定哪个路径才是最有效的以及防止多条链的产生,以太坊使用了一个叫做“GHOST协议(GHOST protocol.)”的数学机制。

GHOST = Greedy Heaviest Observed Subtree

简单来说,GHOST协议就是让我们必须选择一个在其上完成计算最多的路径。一个方法确定路径就是使用最近一个区块(叶子区块)的区块号,区块号代表着当前路径上总的区块数(不包含创世纪区块)。区块号越大,路径就会越长,就说明越多的挖矿算力被消耗在此路径上以达到叶子区块。使用这种推理就可以允许我们赞同当前状态的权威版本。

现在你大概对区块链是什么有个理性的认识,让我们在再深入了地解一下以太坊系统主要组成部分:

账户(accounts)

状态(state)

损耗和费用(gas and fees)

交易(transactions)

区块(blocks)

交易执行(transaction execution)

挖矿(mining)

工作量证明(proof of work)

在开始之前需要注意的是:每当我说某某的hash, 我指的都是KECCAK-256 hash, 以太坊就是使用这个hash算法。

账户

以太坊的全局“共享状态”是有很多小对象(账户)来组成的,这些账户可以通过消息传递架构来与对方进行交互。每个账户都有一个与之关联的状态(state)和一个20字节的地址(address)。在以太坊中一个地址是160位的标识符,用来识别账户的。

这是两种类型的账户:

外部拥有的账户,被私钥控制且没有任何代码与之关联

合约账户,被它们的合约代码控制且有代码与之关联

外部拥有账户与合约账户的比较

理解外部拥有账户和合约账户的基本区别是很重要的。一个外部拥有账户可以通过创建和用自己的私钥来对交易进行签名,来发送消息给另一个外部拥有账户或合约账户。在两个外部拥有账户之间传送的消息只是一个简单的价值转移。但是从外部拥有账户到合约账户的消息会激活合约账户的代码,允许它执行各种动作。(比如转移代币,写入内部存储,挖出一个新代币,执行一些运算,创建一个新的合约等等)。

不像外部拥有账户,合约账户不可以自己发起一个交易。相反,合约账户只有在接收到一个交易之后(从一个外部拥有账户或另一个合约账户接),为了响应此交易而触发一个交易。我们将会在“交易和消息”部分来了解关于合约与合约之间的通信。

因此,在以太坊上任何的动作,总是被外部控制账户触发的交易所发动的。

账户状态

账户状态有四个组成部分,不论账户类型是什么,都存在这四个组成部分:

nonce:如果账户是一个外部拥有账户,nonce代表从此账户地址发送的交易序号。如果账户是一个合约账户,nonce代表此账户创建的合约序号

balance: 此地址拥有Wei的数量。1Ether=10^18Wei

storageRoot: Merkle Patricia树的根节点Hash值(我们后面在解释Merkle树)。Merkle树会将此账户存储内容的Hash值进行编码,默认是空值

codeHash:此账户EVM(以太坊虚拟机,后面细说)代码的hash值。对于合约账户,就是被Hash的代码并作为codeHash保存。对于外部拥有账户,codeHash域是一个空字符串的Hash值

世界状态

好了,我们知道了以太坊的全局状态就是由账户地址和账户状态的一个映射组成。这个映射被保存在一个叫做Merkle Patricia树的数据结构中

Merkle Tree(也被叫做Merkle trie)是一种由一系列节点组成的二叉树,这些节点包括:

在树底的包含了源数据的大量叶子节点

一系列的中间的节点,这些节点是两个子节点的Hash值

一个根节点,同样是两个子节点的Hash值,代表着整棵树

树底的数据是通过分开我们想要保存到chunks的数据产生的,然后将chunks分成buckets,再然后再获取每个bucket的hash值并一直重复直到最后只剩下一个Hash:根Hash。

这棵树要求存在里面的值(value)都有一个对应的key。从树的根节点开始,key会告诉你顺着哪个子节点可以获得对应的值,这个值存在叶子节点。在以太坊中,key/value是地址和与地址相关联的账户之间状态的映射,包括每个账户的balance, nonce, codeHash和storageRoot(storageRoot自己就是一颗树)。

同样的树结构也用来存储交易和收据。更具体的说,每个块都有一个头(header),保存了三个不同Merkle trie结构的根节点的Hash,包括:

状态树

交易树

收据树

在Merkle tries中存储所有信息的高效性在以太坊中的“轻客户端”和“轻节点”相当的有用。记住区块链就是一群节点来维持的。广泛的说,有两种节点类型:全节点和轻节点。

 1/7    1 2 3 4 5 6 下一页 尾页