比特币是一种电子货币,一种基于密码学的货币。2008年11月1日,中本聪发布了比特币白皮书,提出了去中心化的电子记账系统。我们平时的电子现金都是银行保管的,因为银行背后是国家信用。分散式电子会计系统是参与者常用的会计系统。比特币可以防止主权危机和信用风险。它的好处就不细说了,这个层面介绍的文章很多。本文主要从更深层次的技术原理的角度来介绍它们。
二。问题介绍假设有四个人叫ABCD,他们发起了三笔交易,A转入B10比特币,B转入C5比特币,C转入D2比特币。如果是传统的记账方式,这些交易都会记录在银行的系统里,这些信息都会被银行记录下来。我们相信银行不会随意增加、删除或修改一条交易记录,我们也不会关注有哪些交易。我们只关注自己的账户余额。比特币的记账方式是在ABCD中为每个人保留这样一个账本,记录上面的交易。如果大家的账本实时一致,ABCD就不再需要银行了。
比特币就是这么做的。每当有人发起交易,他就会向全网广播。全网有人会把一定时间内的交易打包记录在一个块上,然后把这些块一个个按顺序链接起来,这样就形成了一个链条。这就是所谓的区块链。
那么问题来了
1。我为什么要参加这个系统?为什么我要使用我自己的计算机资源来存储这些信息?
2。谁的记录为准?比如上面的账单订单,A用户可能是这个订单,但是B可能是另外一个订单,甚至B可能根本收不到C转账给D的消息。
3。如果比特币执行支付功能,保证了谁的钱都属于它,只有它的主人才能消费。
4。如何防止假冒、篡改、重复支付?打假就是验证每笔交易都是真的有人发的。比如,B可能会捏造一条消息说某某给我转了一笔钱,这是一条虚假消息,或者B说我给某人转了多少钱,实际上他没有那么多钱。我该怎么办?防篡改意味着B可能想要删除他曾经从区块链转账给某人的钱的记录,这样他的余额将增加。双重支付是指B只有10个比特币,他同时给C和D转了10个比特币,产生了双重费用。
三。为什么要记账?因为记账有奖励,记账有手续费收入,包块的人有系统的奖励。奖励方案是每十分钟生成一个区块,每生成一个区块将奖励一定数量的比特币。一开始是50 BTCs,4年后奖励25 BTCs,再4年减半,以此类推。这样的比特币会越来越少,越来越接近一个最大值。计算公式为:506243654(1 1/2 1/4 1/8…)2100万,其中50个比特币初始奖励,每小时6块,每天24小时,每年365天。前四年就是这样。
另外,记账奖励每笔交易都有一笔不小的手续费。每笔交易发起都会附带一定的手续费,给记账矿工。
四。谁会占上风?各节点通过工作量证明机制争夺记账权。他们计算一个非常复杂的数学问题,第一个计算的节点是下一个块的生产者。这道数学题太难了,没人能用脑子算出来。这是一种基于概率的方法。矿工们不得不遍历,猜测,并试图解决这个未知数。那么这道数学题到底是什么呢?以下细节。
4.1 Hash函数
Hash函数又称数字摘要或Hash函数,其特点是可以输入一个字符串生成另一个字符串,但如果输入不同,输出的字符串也会不同,不能从输出的字符串推导出输入。 举个简单的例子,1-100中的数字模块10可以被认为是一种哈希方法。例如,98=8,66=6,98和66是输入,模10是哈希函数,8和6是输出。在这个模型中,不可能通过6和8推断出输入是66和98,因为它可能是56和88,等等。当然,因为这个例子比较简单,所以一个优秀的哈希函数可以让输出不一样,哈希冲突的概率几乎为零。常见的哈希函数有很多,比如MD系列和SHA系列等。比特币采用SHA256算法,就是输入一个字符串,输出一个256位的二进制数。接下来是程序运行的结果。
通过程序结果可以看出,不同的输入源信息导致不同的结果(为方便起见,结果以64位十六进制表示)。就算橘子多了一个句号,也会完全不一样。同时,通过输出的十六进制字符串,无法推导出输入。对于比特币,只要知道SHA256的功能就可以了。如果有兴趣可以详细了解SHA256的具体算法。SHA256 C源代码消息需要邮件或私信。
4.2挖掘原理
首先介绍一下比特币各个区块的数据结构。每个块由块头和块体组成。
块包含采矿者收集的大量交易信息。图中假设块中包含8个事务,所有事务生成一棵默克尔树。默克尔树是一种数据结构,将叶节点成对哈希生成上层节点,上层节点再次哈希生成上层,直到最后生成一个根,这个尚力财经小编2022根叫做默克尔根。只有根保留在块头中,这样可以保存块头。
块头包含了父块的hash,版本号,当前时间戳,难度值,随机数和上面提到的默克尔的根。
假设区块链已经链接到某个区块,ABCD有四个节点在前十分钟收集了全网的一些交易信息。他们选择了大约4k个事务,打包它们,并生成了默克尔根。块头中的信息,也就是块哈希版本号时间戳难度值随机数默克尔根,形成了一个字符串str。通过两个哈希函数得到一个二进制数256,即SHA256 (SHA256 (STR))=10010011.总共256位。比特币要求生成结果的前N位必须为0,N为难度值。如果生成的二进制数不符合要求,则必须更改随机数的值并重新计算,直到计算出符合条件的结果。现在假设n是5,生成的二进制数一定是00000 …(共2尚力财经小编202256位)。一旦开采成功,矿工们就可以把消息广播到全网,其他矿工会基于这个区块继续开采。下一个块头中父块的哈希值是前一个块生成的00000…这个数。解这道数学题全靠运气。理论上,运气最好的矿工可能能够一次性算出结果,而运气不好的矿工可能永远也算不出来。但总的来说,如果一个矿工的计算能力越大,单位时间内的哈希次数就越多,短时间内挖掘成功的可能性就越大。那么n是怎么确定的呢?比特币的设计者希望,总体来说,平均每十分钟产生一个区块。总的来说,挖掘成功的概率是1/2 N,现在假设世界上有1W台矿机,每台矿机的计算能力是14T次/秒=1.410 ^ 13次/秒,单位次/秒称为哈希速率,10分钟需要600s,那么10分钟可以做810 ^ 19次哈希运算。从概率的角度来看,需要2 n次操作才能挖掘成功,可以列举如下因此,用这种方法,我们无法让自己的运气变好。我们只能提高计算能力,尽快算出结果。另外,需要模拟挖矿过程的C代码可以回复到邮箱,代码可以通过调整难度值来模拟比特币的挖矿算法,控制分块生成的速度。五、如何防止伪造、篡改和重复支付。
这部分是理解比特币的重要部分。5.1电子签名技术身份认证技术在生活中非常常见,如人脸识别、签名、指纹等。但这些方法在数字货币中并不安全,因为一旦数字化,都可以通过复制来伪造。所以比特币采用电子签名的方式。当你注册成为比特币用户时,系统会根据随机数生成一个私钥,私钥生成一个公钥,进而生成一个地址。私钥一定要保密,可以保存到你的硬盘上,也可以记录在你的脑子里,因为这个私钥是在相应地址使用比特币的唯一标识。一旦丢失,所有比特币都将无法使用。接下来是具体的转换过程。不感兴趣的话可以不看。只要知道随机数-私钥-公钥-钱包地址的过程,其中私钥可以加密一串字符而公钥可以解密,这就是不对称加密。这些算法的功能大体相同,只是具体算法不同。由于这些算法比较复杂,不如SHA265算法介绍的多,有兴趣可以多了解一下具体的算法。然而,对于比特币来说,很难找到答案。典型的算法是RSA,比特币使用椭圆曲线加密算法。转换过程(可选阅读,不影响理解)1。首先,使用随机数生成器生成一个私钥,它是一个256位的二进制数。私钥是不能公开的,相当于银行卡的密码。2。私钥通过SECP256K1算法生成公钥,secp 256k 1算法是一种椭圆曲线加密算法。其功能类似于RSA算法。通过一个已知的私钥,生成一个公钥,但是不能从公钥推导出私钥。3。和SHA256算法一样,RIPEMD160也是一种哈希算法。公钥的哈希值可以从公钥中获得,但公钥不能从哈希值推导出来。4。将一个字节的版本号连接到公钥hash的头部,然后对其进行两次SHA256运算,将结果的前四个字节作为公钥hash的校验值连接到其尾部。5。用BASE58对上一步的结果进行编码,得到钱包地址(相当于一个银行账户)。比如a1 ZP 1 EP 5 qgefi 2 DMP TTL 5 SLM V7 div FNA所以,通过上面的过程,我们可以总结出如下图所示的私钥、公钥、钱包之间的关系。可以看出,所有的值都可以通过私钥推导出来,公钥哈希和钱包地址可以通过BASE58和BASE58解码算法相互转换。
了解了公钥、私钥、地址等概念后,防伪验证的过程就很好理解了。当发起交易时,它对消息进行哈希处理以生成数字摘要,并用私钥对数字摘要进行加密以生成密码。之后,A将广播此交易消息、公钥和密码。消息的接收方首先散列交易信息以生成摘要1,然后用公钥解密密码以生成摘要2。这样,如果两个摘要相同,就说明这条消息确实是a发的,所谓的签名就是密文。
5.2平衡检查平衡的概念应该说是根深蒂固的。平衡是随着所谓的借贷记账法而产生的,也是目前银行常用的一种方法。统计一个人的交易记录后,计算出一个余额,但比特币没有这个概念,因为它采用UXTO模型记账。例如,A-B10比特币和B-C5比特币。对于第二次交易,B在发起本次交易时应注明第一次交易的信息,这样可以得知B已经收到A的10个比特币,说明满足发起第二次交易的条件。因此,检查比特币的余额是通过追溯的方法。上图描述了两笔交易。在交易10001中,B给c转了10个比特币,验证这个交易的过程是:先用B的公钥解密B的签名,然后和交易的具体内容进行比对(在B签名的左边)。如果相同,说明消息是B发的,再查10000。 这两点都满足,说明交易10001可以接受,否则拒绝。实际上,真实的交易要比这复杂得多,因为有可能是多个交易构成了输入。比如B-C20比特币是由多次交易A-B10和D-B10组成,那么之前的交易ID就是两个ID,甚至更多。这里为了描述简单,只列出一个交易。5.3双重支付A同时发了两条消息,同时给B和C转了10个比特币。当他实际上只有10个比特币时会发生什么?假设节点D首先接收转移的B10 BTC,然后接收转移的C10比特币。通过上面的验证方式,自然会排斥后一种。同时,节点E可能首先接收转移的C10 BTCs,然后接收转移的B10比特币,他自然会拒绝后者。至于最终哪笔交易会被清盘,就看D和E哪个先解决问题,成功挖矿了。5.4防止篡改假设A转账到B10比特币,但是他想把这个信息从区块链删除,这样大家就不知道这个东西的存在,可以默认。首先说一下最长链原理。假设某个街区后面的两个矿工同时开矿,或者因网络延迟产生分歧。这时候每个节点都会按照自己认为对的块去挖矿,只有下一个块才会产生。这时候就会有两条链子,但是一条长。比特币规定以链条最长为准。如果一个节点仍然固执地遵循短链,它就是在与大多数计算力量对抗。结果他挖的块不是所有人都认可的,会浪费时间和计算能力。
回到上面的场景,如果A想违约,只能从之前记录A-B10比特币消息的区块重新挖,做一个分支链。但是实际块已经前进了很多,他只能不停的追赶,同时主链也在前进。他一定比主链快。但是,几乎不可能,因为就算计算能力再大,平均出块速度也就10分钟。从非技术角度来说,如果一个人掌握了全网一半以上的计算能力,为什么不继续在主链挖矿?有钱人不应该甘于做贼。
六。总结
区块链不等同于比特币,比特币也不是区块链。区块链只是比特币使用的一种技术,可以启发我们。比特币的伟大之处在于其前所未有的区块链技术。区块链技术还可以应用于其他领域,这仍有待探索。比特币是区块链技术最成功的应用,但比特币本身存在很多问题。它想通过发行货币来挑战主权货币,这个动机有待商榷。此外,由于比特币的匿名性,只需要一个公钥或地址就可以进行交易,这为黑色产业提供了很好的平台。此外,比特币不是一个成熟的支付系统,存在吞吐量低、扩展性差的缺点。相关推荐:如何挖比特币(首页windows电脑挖)图文教程比特币算力如何影响BTC走势?比特币和以太坊等虚拟货币有什么区别?在货币交易所买比特币安全吗?币APP安全吗?比特币更难计算对矿工来说是好事还是坏事?力会对价格产生什么影响?以上是比特币原理详解(什么是比特币及挖矿原理)的详细内容。更多比特币原理知识分享,请关注Kuyi.com其他相关文章!
标签: 呈