区块链技术中的名词解释(三)

发布日期:2024-03-24 来源:半岛官网登录入口网址

  区块链技术从比特币、以太币到数字收藏品,再到各种数据“上链”,区块链技术可谓风光无限,不仅仅出现在中,还逐渐走入百姓的生活中。但是,对于区块链是什么呢?似乎90%的人无法说清楚。下面解释一下区块链技术中常用的名词。北京木奇移动技术有限公司,专业的软件外包研发企业,欢迎交流合作。

  是由Yonatan Sompolinsky 和 Aviv Zohar在2013年12月引入的创新。幽灵协议提出的动机是当前快速确认的块链因为区块的高作废率而受到低安全性困扰;因为区块需要花一段时间(设为t)扩散至全网,如果矿工A挖出了一个区块然后矿工B碰巧在A的区块扩散至B之前挖出了另外一个区块,矿工B的区块就会作废并且没有对网络安全作出贡献。此外,这里还有中心化问题:如果A是一个拥有全网30%算力的矿池而B拥有10%的算力,A将面临70%的时间都在产生作废区块的风险而B在90%的时间里都在产生作废区块。因此,如果作废率高,A将简单地因为更高的算力份额而更有效率,综合这两个因素,区块产生速度快的块链很可能会引起一个矿池拥有实际上能够控制挖矿过程的算力份额。

  默克尔树是一种二叉树,由一组叶节点、一组中间节点和一个根节点构成。最下面的大量的叶节点包含基础数据,每个中间节点是它的两个子节点的哈希,根节点也是由它的两个子节点的哈希,代表了默克尔树的顶部。默克尔树的目的是允许区块的数据可以零散地传送:节点可以从一个源下载区块头,从另外的源下载与其有关的树的其它部分,而依然能够确认所有的数据都是正确的。之所以如此是因为哈希向上的扩散:如果一个恶意用户尝试在树的下部加入一个伪造的交易,所引起的改动将导致树的上层节点的改动,以及更上层节点的改动,最后导致根节点的改动以及区块哈希的改动,这样协议就会将其记录为一个完全不同的区块(几乎能肯定是带着不正确的工作量证明的)。

  区块链从本质上而言是一种分布式账本技术。传统的账本,通常会以数据库的形式,集中存储在银行或公司的服务器节点上。而在区块链的网络中,每个节点都会保有一份完整的账本,且所有节点的账本内容完全一致。每个节点都能够准确的通过自己本地的账本去查找交易,也可以往账本中添加交易。

  这样就带来了一个问题,如果所有节点同时一起写入账本数据,那么肯定数据会不一致。因此就需要一种机制来保证区块链中的每一区块只能由一个节点来负责写入,并且让所有其他节点一致认同这次写入。如何选出写入账本数据的节点,这就是共识机制。

  实用拜占庭容错协议(PBFT,Practical Byzantine Fault Tolerance)是Miguel Castro (卡斯特罗)和Barbara Liskov(利斯科夫)在1999年提出来的,解决了原始拜占庭容错算法(即上文中的口头协议)效率不高的问题,将算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行。

  PBFT算法的结论是n=3f+1 n是系统中的总节点数,f是允许发生故障的节点数。换句话说,如果这个系统允许出现f个故障,那么这个系统必须包括n个节点,才能解决故障。这和上文口头协议的结论一样,或者这么说,PBFT是优化了口头协议机制的效率,但是结论并未改变。

  由于ASIC矿机被大量运用在比特币的挖矿过程中,所以假如慢慢的出现其他基于hash运算达到共识的区块链,则很容易受到原本服务于比特币的ASIC矿机攻击。因此Ethereum在设计其PoW共识算法的时候,就意识到应该让算法在普通的个人电脑上运行更有优势,从而避免被ASIC进行攻击。

  以上的PoW和PoS的挖矿过程,是全网所有节点共同参与的,每一时刻都有成千上万个节点同时去争取产出下一个block,因此会时有发生区块链分叉(fork)的问题。即同一时刻,两个节点同时产出了next block,但由于网络时延的问题,block产出的时候两个节点并不知道有其他节点已经产出了另一个block,因此这两个block都被发布到了网络中。[5]中对分叉的问题有详细的描述,能够直接进行参考。

  正是由于分叉的存在,block的产出时间间隔不能太短。各区块链通过动态调整的挖矿难度,将block时间间隔稳定在自己期望的水平。例如最初比特币的间隔是10分钟,后续的以太坊是15秒左右。如果时间间隔进一步调短(即降低挖矿难度),分叉问题就会大量显现,不利于共识的达成和系统的稳定。

  该术语指的是离线保存比特币。当比特币的私钥被创建,同时将该私钥存储在安全的离线环境时,就实现了冷存储。冷存储对于任何比特币持有者来说是重要的。在线计算机在黑客面前是脆弱的,不应该被用于存储大量的比特币。

  比特币2.0开源协议允许开发者在比特币区块链之上,利用它的超越货币的功能创建数字资产。

  当网络中的许多节点,通常是大部分节点,都拥有相同的本地验证的最长区块时,称为共识。不要与共识规则混淆。

  全网中每新增2016个区块,全网难度将重新计算,该新难度值将依据前2016个区块的哈希算力而定。

  使整个网络的计算力大致每10分钟产生一个区块所需要的难度数值即为难度目标。

  双重支付是成功支付了1次以上的情况。比特币通过对添加到区块中的每笔交易做验证来防止双重支付,确保交易的输入没有被支付过。

  椭圆曲线数字签名算法(ECDSA)是比特币使用的加密算法,以确保资金只能被其正确拥有者支付。

  随着难度增加,矿工通常在循环便利4亿次随机数值后仍未找到区块。因为coinbase脚本可以存储2到100字节的数据,矿工开始使用这个存储空间作为超额nonce空间,允许他们利用一个更大范围的区块头哈希值来寻找有效的区块。

  硬件钱包是一种特殊的比特币钱包,硬件钱包可以将用户的私钥存储在安全的硬件设备中。

  哈希锁是限制一个输出花费的限制对象,其作用一直持续到指定数据片段公开透露。哈希锁有一个有用的属性,那就是一旦任意一个哈希锁被公开打开,其他任何安全使用相同密钥的哈希锁也可以被打开。这使得可能创建多个被同意哈希锁限制的输出,这些支出将在同一时间被花费。

  层级确定性(HD)密钥创建和传输协议(BIP32),该协议允许按层级方式从父密钥创建子密钥。

  HD钱包种子或根种子是一个用于为HD钱包生成主私钥和主链码所需种子的潜在简短数值。

  哈希时间锁定合约(HTLC)是一类支付方式,其使用哈希锁和时间锁来锁定交易。解锁需要接收方提供通过加密支付证明承认在截止日期之前收到了支付,或者接收方丧失了认领支付的能力,此时支付金额将返回给支付方。

  充分了解你的账户(KYC,Know yourcustomer)是一个商业过程,用于认证和验证顾客的身份信息。也指银行对这些活动的监管。

  LevelDB是一个开源的硬盘键值对数据库。LevelDB是一个用于持久性绑定多个平台的轻量级、单用途的库。

  锁定时间(技术上来说是nLockTime)是交易的一部分,其表明该交易被添加至区块链中的最早时间或区块。

  比特币内存池是区块中所有交易数据的集合,这些交易已经被比特币节点验证,但为被确认。

  随机数是比特币区块中一个32位(4字节)的字段,在设定了该值后,才能计算区块的哈希值,其哈希值是以多个0开头的。区块中的其他字段值是不变的,因为他们有确定的含义。

  离线交易是区块链外的价值转移。当在链交易(通常简单来说就是一个交易)修改区块链并依赖区块来决定它的有效性时,离线交易则依赖其他方法来来记录和验证该交易。

  操作码来源于比特币脚本语言,通过操作码可以在公钥脚本或签名脚本中实现压入数据或执行函数的操作。

  开放资产协议是一个建立在比特币区块链纸上简单有效的协议。它允许用户创建资产的发行和传输。开放资产协议是颜色币概念的一个进化。

  一个用在OP_RETURN交易中的一种输出操作码。不要与OP_RETURN交易混淆。

  OP_RETURN在比特币核心0.9.0中默认的一种被传播和挖出的交易类型,在随后的版本中添加任意数据至可证明的未花费公钥脚本中,全节点中无需将该脚本存储至他们的UTXO数据库中。不要与OP_RETURN操作码混淆。

  交易输出(TxOut)是交易中的输出,交易输出中包含两个字段:1.输出值字段:用于传输0或更多聪;2.公钥脚本:用于确定这些聪需在满足什么样的条件的情况下才可花费。

  支付到比特币地址的交易包含支付公钥哈希脚本(P2PKH)。由P2PKH脚本锁定的交易输出能够最终靠给出由相应私钥创建的公钥和数字签名来解锁(消费)。

  P2SH是一种强大的、新型的、且能大大简化复杂交易脚本的交易类型而引入。利用P2SH,详细描述花费输出条件的复杂脚本(赎回脚本)将不会出现在锁定脚本中。相反,只有赎回脚本哈希包含在锁定脚本中。

  P2SH地址是基于Base58 编码的一个含有20 个字节哈希的脚本。P2SH地址采用“5”前缀。这导致基于Base58 编码的地址以“3”开头。P2SH 地址隐藏了所有的复杂性,因此,运用其进行支付的人将不会看到脚本。

  P2WPKH签名包含了与P2PKH花费相同的信息。但是签名信息放置于见证字段,而不是签名脚本字段中。公钥脚本也被修改了。

  P2WSH与P2SH的不同之处在于加密证据存放位置从脚本签名字段转变至见证字段,公钥脚本字段也被改变。

  在大多数特定含义下,纸钱包是一个包含所有必要数据的文件,这一些数据用于生成比特币私钥,形成密钥钱包。然而,人们通常使用该术语来表达以物理文件形式离线存储比特币的方式。第二个定义也包括纸密钥和可赎回编码。

  微支付通道和支付通道是 设计用于允许用户生成多个比特币交易,且无需提交所有交易至比特币区块链中。在一个典型的支付通道中,只有两个交易被添加至区块链中,但参与双方可以生成无限制或接近无限制数量的支付。

  每一个新区块中都有一定量新创造的比特币用来奖励算出工作量证明的矿工。现阶段每一区块有12.5比特币的奖励。

  RIPEMD-160是一个160位的加密哈希函数。RIPEMD-160是RIPEMD的加强版,其哈希计算后的结果是160位哈希值。通过RIPEMD-160加密期望能实现在未来的10年或更长时间都是安全的。

  比特币使用脚本系统来处理交易。脚本有着类Forth语言、简单、基于堆栈以及从左向右处理的特点。脚本故意限定为非图灵完备的,没有循环计算功能。

  脚本公钥或者公钥脚本是包含在交易输出中的脚本。该脚本设置了比特币花费需满足的条件。满足条件的数据可以由签名脚本提供。

  软分叉:软分叉是区块链中的一个短暂分叉,通常是由于矿工在不知道新共识规则的情况下,未对其使用节点进行升级而产生的。不要与分叉、硬分叉、软分叉或者Git分叉混淆。

  简化支付验证是在无需下载所有区块的情况对特定交易做验证的方法。该方法被用在一些比特币轻量级客户端中。

  旧块是那些被成功挖出,但是没有包含在当前主链上的区块,有很大的可能性是同一高度的其他区块优先扩展了区块链长度导致的。

  时间锁:时间锁是一种阻碍类型,用于严控一些比特币只能在将来某个特定时间和区块才能被支出。时间锁在很多比特币合约中起到了显著的作用,包括支付通道和哈希时间锁合约。返回搜狐,查看更加多


区块链技术中的名词解释(三)

发布日期:2024-03-24

  区块链技术从比特币、以太币到数字收藏品,再到各种数据“上链”,区块链技术可谓风光无限,不仅仅出现在中,还逐渐走入百姓的生活中。但是,对于区块链是什么呢?似乎90%的人无法说清楚。下面解释一下区块链技术中常用的名词。北京木奇移动技术有限公司,专业的软件外包研发企业,欢迎交流合作。

  是由Yonatan Sompolinsky 和 Aviv Zohar在2013年12月引入的创新。幽灵协议提出的动机是当前快速确认的块链因为区块的高作废率而受到低安全性困扰;因为区块需要花一段时间(设为t)扩散至全网,如果矿工A挖出了一个区块然后矿工B碰巧在A的区块扩散至B之前挖出了另外一个区块,矿工B的区块就会作废并且没有对网络安全作出贡献。此外,这里还有中心化问题:如果A是一个拥有全网30%算力的矿池而B拥有10%的算力,A将面临70%的时间都在产生作废区块的风险而B在90%的时间里都在产生作废区块。因此,如果作废率高,A将简单地因为更高的算力份额而更有效率,综合这两个因素,区块产生速度快的块链很可能会引起一个矿池拥有实际上能够控制挖矿过程的算力份额。

  默克尔树是一种二叉树,由一组叶节点、一组中间节点和一个根节点构成。最下面的大量的叶节点包含基础数据,每个中间节点是它的两个子节点的哈希,根节点也是由它的两个子节点的哈希,代表了默克尔树的顶部。默克尔树的目的是允许区块的数据可以零散地传送:节点可以从一个源下载区块头,从另外的源下载与其有关的树的其它部分,而依然能够确认所有的数据都是正确的。之所以如此是因为哈希向上的扩散:如果一个恶意用户尝试在树的下部加入一个伪造的交易,所引起的改动将导致树的上层节点的改动,以及更上层节点的改动,最后导致根节点的改动以及区块哈希的改动,这样协议就会将其记录为一个完全不同的区块(几乎能肯定是带着不正确的工作量证明的)。

  区块链从本质上而言是一种分布式账本技术。传统的账本,通常会以数据库的形式,集中存储在银行或公司的服务器节点上。而在区块链的网络中,每个节点都会保有一份完整的账本,且所有节点的账本内容完全一致。每个节点都能够准确的通过自己本地的账本去查找交易,也可以往账本中添加交易。

  这样就带来了一个问题,如果所有节点同时一起写入账本数据,那么肯定数据会不一致。因此就需要一种机制来保证区块链中的每一区块只能由一个节点来负责写入,并且让所有其他节点一致认同这次写入。如何选出写入账本数据的节点,这就是共识机制。

  实用拜占庭容错协议(PBFT,Practical Byzantine Fault Tolerance)是Miguel Castro (卡斯特罗)和Barbara Liskov(利斯科夫)在1999年提出来的,解决了原始拜占庭容错算法(即上文中的口头协议)效率不高的问题,将算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行。

  PBFT算法的结论是n=3f+1 n是系统中的总节点数,f是允许发生故障的节点数。换句话说,如果这个系统允许出现f个故障,那么这个系统必须包括n个节点,才能解决故障。这和上文口头协议的结论一样,或者这么说,PBFT是优化了口头协议机制的效率,但是结论并未改变。

  由于ASIC矿机被大量运用在比特币的挖矿过程中,所以假如慢慢的出现其他基于hash运算达到共识的区块链,则很容易受到原本服务于比特币的ASIC矿机攻击。因此Ethereum在设计其PoW共识算法的时候,就意识到应该让算法在普通的个人电脑上运行更有优势,从而避免被ASIC进行攻击。

  以上的PoW和PoS的挖矿过程,是全网所有节点共同参与的,每一时刻都有成千上万个节点同时去争取产出下一个block,因此会时有发生区块链分叉(fork)的问题。即同一时刻,两个节点同时产出了next block,但由于网络时延的问题,block产出的时候两个节点并不知道有其他节点已经产出了另一个block,因此这两个block都被发布到了网络中。[5]中对分叉的问题有详细的描述,能够直接进行参考。

  正是由于分叉的存在,block的产出时间间隔不能太短。各区块链通过动态调整的挖矿难度,将block时间间隔稳定在自己期望的水平。例如最初比特币的间隔是10分钟,后续的以太坊是15秒左右。如果时间间隔进一步调短(即降低挖矿难度),分叉问题就会大量显现,不利于共识的达成和系统的稳定。

  该术语指的是离线保存比特币。当比特币的私钥被创建,同时将该私钥存储在安全的离线环境时,就实现了冷存储。冷存储对于任何比特币持有者来说是重要的。在线计算机在黑客面前是脆弱的,不应该被用于存储大量的比特币。

  比特币2.0开源协议允许开发者在比特币区块链之上,利用它的超越货币的功能创建数字资产。

  当网络中的许多节点,通常是大部分节点,都拥有相同的本地验证的最长区块时,称为共识。不要与共识规则混淆。

  全网中每新增2016个区块,全网难度将重新计算,该新难度值将依据前2016个区块的哈希算力而定。

  使整个网络的计算力大致每10分钟产生一个区块所需要的难度数值即为难度目标。

  双重支付是成功支付了1次以上的情况。比特币通过对添加到区块中的每笔交易做验证来防止双重支付,确保交易的输入没有被支付过。

  椭圆曲线数字签名算法(ECDSA)是比特币使用的加密算法,以确保资金只能被其正确拥有者支付。

  随着难度增加,矿工通常在循环便利4亿次随机数值后仍未找到区块。因为coinbase脚本可以存储2到100字节的数据,矿工开始使用这个存储空间作为超额nonce空间,允许他们利用一个更大范围的区块头哈希值来寻找有效的区块。

  硬件钱包是一种特殊的比特币钱包,硬件钱包可以将用户的私钥存储在安全的硬件设备中。

  哈希锁是限制一个输出花费的限制对象,其作用一直持续到指定数据片段公开透露。哈希锁有一个有用的属性,那就是一旦任意一个哈希锁被公开打开,其他任何安全使用相同密钥的哈希锁也可以被打开。这使得可能创建多个被同意哈希锁限制的输出,这些支出将在同一时间被花费。

  层级确定性(HD)密钥创建和传输协议(BIP32),该协议允许按层级方式从父密钥创建子密钥。

  HD钱包种子或根种子是一个用于为HD钱包生成主私钥和主链码所需种子的潜在简短数值。

  哈希时间锁定合约(HTLC)是一类支付方式,其使用哈希锁和时间锁来锁定交易。解锁需要接收方提供通过加密支付证明承认在截止日期之前收到了支付,或者接收方丧失了认领支付的能力,此时支付金额将返回给支付方。

  充分了解你的账户(KYC,Know yourcustomer)是一个商业过程,用于认证和验证顾客的身份信息。也指银行对这些活动的监管。

  LevelDB是一个开源的硬盘键值对数据库。LevelDB是一个用于持久性绑定多个平台的轻量级、单用途的库。

  锁定时间(技术上来说是nLockTime)是交易的一部分,其表明该交易被添加至区块链中的最早时间或区块。

  比特币内存池是区块中所有交易数据的集合,这些交易已经被比特币节点验证,但为被确认。

  随机数是比特币区块中一个32位(4字节)的字段,在设定了该值后,才能计算区块的哈希值,其哈希值是以多个0开头的。区块中的其他字段值是不变的,因为他们有确定的含义。

  离线交易是区块链外的价值转移。当在链交易(通常简单来说就是一个交易)修改区块链并依赖区块来决定它的有效性时,离线交易则依赖其他方法来来记录和验证该交易。

  操作码来源于比特币脚本语言,通过操作码可以在公钥脚本或签名脚本中实现压入数据或执行函数的操作。

  开放资产协议是一个建立在比特币区块链纸上简单有效的协议。它允许用户创建资产的发行和传输。开放资产协议是颜色币概念的一个进化。

  一个用在OP_RETURN交易中的一种输出操作码。不要与OP_RETURN交易混淆。

  OP_RETURN在比特币核心0.9.0中默认的一种被传播和挖出的交易类型,在随后的版本中添加任意数据至可证明的未花费公钥脚本中,全节点中无需将该脚本存储至他们的UTXO数据库中。不要与OP_RETURN操作码混淆。

  交易输出(TxOut)是交易中的输出,交易输出中包含两个字段:1.输出值字段:用于传输0或更多聪;2.公钥脚本:用于确定这些聪需在满足什么样的条件的情况下才可花费。

  支付到比特币地址的交易包含支付公钥哈希脚本(P2PKH)。由P2PKH脚本锁定的交易输出能够最终靠给出由相应私钥创建的公钥和数字签名来解锁(消费)。

  P2SH是一种强大的、新型的、且能大大简化复杂交易脚本的交易类型而引入。利用P2SH,详细描述花费输出条件的复杂脚本(赎回脚本)将不会出现在锁定脚本中。相反,只有赎回脚本哈希包含在锁定脚本中。

  P2SH地址是基于Base58 编码的一个含有20 个字节哈希的脚本。P2SH地址采用“5”前缀。这导致基于Base58 编码的地址以“3”开头。P2SH 地址隐藏了所有的复杂性,因此,运用其进行支付的人将不会看到脚本。

  P2WPKH签名包含了与P2PKH花费相同的信息。但是签名信息放置于见证字段,而不是签名脚本字段中。公钥脚本也被修改了。

  P2WSH与P2SH的不同之处在于加密证据存放位置从脚本签名字段转变至见证字段,公钥脚本字段也被改变。

  在大多数特定含义下,纸钱包是一个包含所有必要数据的文件,这一些数据用于生成比特币私钥,形成密钥钱包。然而,人们通常使用该术语来表达以物理文件形式离线存储比特币的方式。第二个定义也包括纸密钥和可赎回编码。

  微支付通道和支付通道是 设计用于允许用户生成多个比特币交易,且无需提交所有交易至比特币区块链中。在一个典型的支付通道中,只有两个交易被添加至区块链中,但参与双方可以生成无限制或接近无限制数量的支付。

  每一个新区块中都有一定量新创造的比特币用来奖励算出工作量证明的矿工。现阶段每一区块有12.5比特币的奖励。

  RIPEMD-160是一个160位的加密哈希函数。RIPEMD-160是RIPEMD的加强版,其哈希计算后的结果是160位哈希值。通过RIPEMD-160加密期望能实现在未来的10年或更长时间都是安全的。

  比特币使用脚本系统来处理交易。脚本有着类Forth语言、简单、基于堆栈以及从左向右处理的特点。脚本故意限定为非图灵完备的,没有循环计算功能。

  脚本公钥或者公钥脚本是包含在交易输出中的脚本。该脚本设置了比特币花费需满足的条件。满足条件的数据可以由签名脚本提供。

  软分叉:软分叉是区块链中的一个短暂分叉,通常是由于矿工在不知道新共识规则的情况下,未对其使用节点进行升级而产生的。不要与分叉、硬分叉、软分叉或者Git分叉混淆。

  简化支付验证是在无需下载所有区块的情况对特定交易做验证的方法。该方法被用在一些比特币轻量级客户端中。

  旧块是那些被成功挖出,但是没有包含在当前主链上的区块,有很大的可能性是同一高度的其他区块优先扩展了区块链长度导致的。

  时间锁:时间锁是一种阻碍类型,用于严控一些比特币只能在将来某个特定时间和区块才能被支出。时间锁在很多比特币合约中起到了显著的作用,包括支付通道和哈希时间锁合约。返回搜狐,查看更加多