比特币是一种电子货币,一种基于密码学的货币。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,版本号,当前时间戳,难度值,随机数和上面提到的默克尔的根。
五、如何防止伪造、篡改和重复支付。
这部分是理解比特币的重要部分。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发的,所谓的签名就是密文。
回到上面的场景,如果A想违约,只能从之前记录A-B10比特币消息的区块重新挖,做一个分支链。但是实际块已经前进了很多,他只能不停的追赶,同时主链也在前进。他一定比主链快。但是,几乎不可能,因为就算计算能力再大,平均出块速度也就10分钟。从非技术角度来说,如果一个人掌握了全网一半以上的计算能力,为什么不继续在主链挖矿?有钱人不应该甘于做贼。
六。总结
标签: 呈