计算机控制系统程序链技术最早是由坎贝尔·哈勃和W.安德森·里斯内塔于1991年提出的,这两位研究人员希望实现两个文件格式天数戳不能被盗用的控制系统,但直到近20年后,随着2009年1月比特币的推出,计算机控制系统程序链才首次在现实世界中应用,大家所津津乐道的挖矿,其实就是在寻找两个合适的nonce有理数,使得如下表所示恒等式成立:
SHA256(SHA256($version+$hashPrevBlock+$hashMerkleRoot+ $timeStamp+ $target+ $nonce)) <= $target责任编辑就计算机控制系统程序链与身份验证位数汇率的基本知识做一下科学普及,该文会提到上面变量的含义。
定义与组织工作形式计算机控制系统程序链(Blockchain),从字面意思解读,即是几组用链(chain)串起来的计算机控制系统程序(block),加进那个情景,是指位数重要信息(block)在公共资料库(chain)的存储,一种分布式控制系统记帐控制系统(可用于位数身份验证汇率,例如,比特币),可能是自因特网以来最重要的发明,计算机控制系统程序包涵如下表所示三个部分:
买卖的相关重要信息,比如日期、天数、数额等买卖的合作方,这里存的不是真实身份重要信息,而是身份验证区别与其它计算机控制系统程序的重要信息(hash值)在比特币的计算机控制系统程序链中,两个计算机控制系统程序能存储最多1MB的数据为的是将两个计算机控制系统程序加入到那个计算机控制系统程序链,须要出现4件事情:。
买卖要出现在实际中,两个块会包涵很多个买卖买卖须要被查证当用网银网购的这时候,网银买卖中心会去查证你的亲笔签名(与申请信用卡时留的亲笔签名展开对照)或者通过公钥(只有使用者自己知道)来查证这次买卖的准确性对于计算机控制系统程序链而言,这项组织工作就平稳过渡给了计算机控制系统网络,当买卖出现后,那个计算机控制系统网络会迅速检查你的买卖是否按你所说的形式展开。
换句话说,他们会确认购买的细节,包括买卖的天数、数额和参加者买卖要被存储在计算机控制系统程序(block)中当买卖被查证后,买卖的数额、参加者的身份验证会被存在计算机控制系统程序中(和数以千计个其它买卖一起)包涵此买卖的计算机控制系统程序须要两个hash值,一旦两个计算机控制系统程序的大部份买卖都被查证(代表挖矿成功),就要给他两个惟一的CA,称为hash值,然后那个计算机控制系统程序就能被加进到计算机控制系统程序链中了。
手提包、私钥与私钥手提包(wallet):身份验证汇率(比特币)展开买卖的媒介,是计算机控制系统的两个程序,包涵一对惟一的key,即私钥和私钥,在第一次展开买卖的这时候产生私钥:授权使用者从账号中支出、提取、转移或展开任何其它买卖,在买卖该台到计算机控制系统程序链网络以后,用私钥对其展开身份验证,亲笔签名证明了私钥的大部份权,私钥须要妥为看管,遗失后,手提包里头的Coin将再也不会被寻回(64 由 0-9 or A-F组成的数组,必要时能保存在纸上,放到保险柜里头)。
按非线性和天数顺序存储,换句话说,新块总是被加进到计算机控制系统程序链的“尾端”比特币的计算机控制系统程序链,每一计算机控制系统程序在链上都有两个位置,叫做“度”,截至2020-04-1820:36 ,计算机控制系统程序的度已经超过626548极大增加计算机控制系统程序文本被修改、删掉的难度,这是因为每一计算机控制系统程序都包涵自己和以后计算机控制系统程序的hash值。
假设某个骇客更动了先前的两个计算机控制系统程序的文本,那么那个计算机控制系统程序和之后的大部份计算机控制系统程序的hash值单厢出现变化,为的是掩盖这次修改,他须要将这些计算机控制系统程序的hash值都重新算一下,而这会付出的代价,同时,每一计算机控制系统程序在计算机控制系统程序链网络中都有两个度,从而使得删掉某个计算机控制系统程序变得不可能。
Consensus Models 测试,计算机控制系统程序链网络要求计算机控制系统(使用者)求解两个复杂的计算数学问题来证明自己,当某台计算机控制系统解决了其中两个问题,它才有资格向计算机控制系统程序链中加进两个计算机控制系统程序,但是将计算机控制系统程序加进到计算机控制系统程序链的过程(俗称”挖矿“)并不容易,截止到2020年4月,比特币网络解决其中两个问题的几率约为15.5万亿分之一,为的是在那个几率下求解复杂的数学问题,计算机控制系统须要花费巨大的电力来运行程序。
Proof of Work 与 挖矿Proof of Work是许多身份验证汇率的基础,它描述了两个控制系统,那个控制系统须要付出不小但可行的努力来阻止对计算能力的轻率或恶意使用为几组比特币买卖生成任意hash值对现代计算机控制系统来说都是微不足道的,因此为的是把那个过程变成更像两个正经的组织工作,比特币网络设置了一定的难度,即为那个hash值设置了两个target,target越低,有效hash的集合就越小,生成两个hash就越困难。
由于给定的几组数据只能生成两个hash,矿工如何确保他们生成的hash小于等于target?它们通过加进两个称为nonce的有理数(number only used once )来改变输入的数据,一旦找到两个有效的hash,它就被该台到网络中,同时计算机控制系统程序被加进到计算机控制系统程序链中,找到那个nonce有理数的矿工就能获得位数汇率奖励,那个nonce有理数就是要解决的数学问题。
Bitcoin 计算机控制系统程序头包括如下表所示部分:

挖矿成功,当且仅当找到两个合适的nonce有理数,使得如下表所示恒等式成立(对于两个计算机控制系统程序而言,变量version、hashPrevBlock、hashMerkleRoot、timeStamp、target是固定不变的):
SHA256(SHA256($version+$hashPrevBlock+$hashMerkleRoot+ $timeStamp+ $target+ $nonce)) <= $target两个实际的Bitcoin的计算机控制系统程序重要信息:


包涵的买卖重要信息如下表所示(此计算机控制系统程序有2570个买卖,截取了其中2个):

51% Attact、Race Attack 与 Double-SpendingDouble-Spending意味着将同样的钱消费了两次,任意一种身份验证位数汇率,若不能解决Double-Spending问题,则没有人愿意使用,比特币能够存活这么久并且得到很多人的追捧,说明它已经解决了那个问题。
950元,不可能通过极短天数内连续购买2次来实现只扣一次的钱,银联(网银)买卖控制系统保证第二次买卖在第一次买卖完成后的基础上展开。
因Coin是一串位数(存在你本地),有可能通过拷贝两份从而达到消费两次的目的看一下比特币是如何解决那个问题的:

情景:某个买家将1个比特币通过私钥展开位数签
通常来说,第两个买卖会得到确认、并被矿工查证以便加到计算机控制系统程序链的下个计算机控制系统程序中,第二个买卖会被矿工判定为非法、得不到足够的确认,从而被移出网络由于网络存在延迟,这两个买卖可能同时被矿工从待确认池拿出来展开确认,从网络获得最大确认数的买卖将包涵在计算机控制系统程序链中,而另两个将被丢弃,从而会出现卖家A获取不到Coin,被卖家B获取到的情况。
对买家来说,第二次是重复消费,但是对卖家来说,不存在谁是真正Earning、谁是重复Earning,但是很明显,对卖家A不公平!解决办法:建议卖家等至少6个Confirmation,“6个Confirmation”是指在两个买卖被加进到计算机控制系统程序链之后,又加进了6个包涵其它若干买卖的计算机控制系统程序。
每一买卖、计算机控制系统程序都和前面的买卖、计算机控制系统程序有关联(基于hash)(所以,每次有新计算机控制系统程序加进到计算机控制系统程序链,都是对前面计算机控制系统程序中买卖的再次确认),买家要回去并反转这6个计算机控制系统程序中的大部份买卖才有可能Double-Spending他的Coin,而这在计算上是不可能的。
当卖家收到了6个Confirmation,他能肯定这不是买家发送的Double-Spending Coin下图是2020-04-25 10:31截的图,Height为627510的Confirmations是6,在他后面的计算机控制系统程序数目是5,包括所在计算机控制系统程序的一次确认,故是6个Confirmation:


51% Attack:如果攻击者以某种形式获得了网络51%的hash能力,则可能会出现Double-Spending,“hash能力”是指验证事务和计算机控制系统程序的计算能力,如果攻击者拥有此控制权,他能反转任何事务并创建两个私有计算机控制系统程序链,每一人单厢认为它是真实的。
但到目前为止,还没有出现这样的攻击,因为控制51%网络的成本非常高,并且一旦被发现,比特币的价值将瞬间归零,换句话说攻击者花了巨额的成本,换来的是零价值的东西,这也是两个悖论Race Attack:当攻击者将同一Coin快速连续地发
一旦完成了这两个买卖,这两个买卖单厢进入两个未确认的买卖池,无论哪两个买卖首先得到验证并得到6个确认将被接受,另两个将被丢弃作为两个卖家,你可能先得到6个确认,但如果攻击者先得到6个确认,那么你就不会收到你的Coin,这就是为什么说至少要等待6次确认。
优点与缺点 优点:通过消除验证过程中的人为参与提高准确性通过消除第三方验证降低买卖成本去中心化使得盗用变得困难买卖是安全、私有和高效的缺点:与挖矿相关的技术成本高每秒能够处理的买卖数量低,对于比特币网络而言,平均每10分钟产生两个计算机控制系统程序,每一计算机控制系统程序平均包括3000个左右的买卖。
因其私密性,可能会被用于非法活动容易受到骇客攻击实际应用 身份验证位数汇率,例如,比特币医疗记录,医疗保健提供商能利用计算机控制系统程序链安全地存储患者的医疗记录生成并签署病历后,能将其写入计算机控制系统程序链,为患者提供病历不可更动的证据和信心。
从产地到最终消费者,食品行业正在借助计算机控制系统程序链来追踪食品的路径和安全性以文本分发平台为中心的模式


