由比特币区块链构成的去中心化的电子记账系统,实现了去中心化的功能,如何实现,且看下面:1.比特币和区块链详解比特币数字货币,基于区块链。区块链中本聪提出了一个概念:去中心化的电子记账系统去中心化:每个人的账本公开假设A,B,C,D四个人之间互相交易,每两个人之间的交易记录都会被其他人记
由比特币区块链构成的去中心化的电子记账系统,实现了去中心化的功能,如何实现,且看下面:
数字货币,基于区块链。
中本聪提出了一个概念:去中心化的电子记账系统
去中心化:每个人的账本公开
假设A,B,C,D四个人之间互相交易,每两个人之间的交易记录都会被其他人记录到。
把n(4k左右)个交易记录合成的账单称之为区块
账单多了之后,区块与区块链接起来,成为区块链
这种格局就形成了所谓的:电子记账
记账:中本聪规定每10分钟打一个新的区块包,打包成功的人会获得手续费和比特币奖励,比特币奖励最初为50个比特币,每四年折半。
中本聪规定,大约每10分钟打一个包。
每一个参与打包的都要做一个很难的数学题,谁先做出来谁就有权利打包(大白话一个一个数去尝试,尝试出来你就有权利)这也就是:挖矿。
密码学有个东西叫做hash函数,他的特点为:
一个任意长度的字符串可以通过运算转换为一个叫做摘要的东西。
正向运算转换很容易,反向很难
举例: hash运算有个很著名的算法SHA256
字符串:SHA256("awegagasdf") = "0100110111"(一共256位的0和1)
每个区块除了具体信息还包含一个头部。
假设区块链此时长度为5,此时有n个人要准备打新包,每个人都有账单
每个人手里都有一个字符串,大致组成为:
字符串 = 区块链最后一个块的头部信息+手里账单信息+时间戳+随机数
每个人对此字符串做两次hash运算
hash=sha256(sha256(字符串))
最后得到一个256位包含0和1的数。
什么样的人可以获得最后打包权利呢?
答:谁计算出来的hash的前m位都为0,那么谁就获得打包权利。
如何才能计算出来符合要求的hash呢?通过不断改变字符串里面的随机数进行尝试。
答:根据全世界的算力,调整m的难度。也就是说随着挖矿的人越来越多,m会越来越长。
在中心化交易的世界里,由银行和背后的国家来确保交易双方的身份。比如人脸、签名、指纹
在去中心化的世界里,通过电子签名来实现。
比特币用户在注册的时候,会生成一个随机数
随机数--> 私钥 --> 公钥 --> 地址
私钥必须保存好,它代表了你的资产,要保管好。
公钥和地址都是公开的。
如果你想别人给你钱,你把地址给他就可以了。
如果你要给别人钱,你把自己的地址和公钥给他。
特点:公钥反算不出来私钥。
使用:私钥可以对一串字符加密,公钥可以将私钥加密的数据解密。(非对称加密)
举例:A要付给B 10个比特币
存在两个问题:
我们知道区块链的概念,我们每个人都知道前面的所有区块的信息。当A说要支付10个BTC给B时,可以从前面的区块链检查,A所有的比特币交易记录,从而得知A的余额。
如果你余额足够,那么你广播的这条:你要支付B10个BTC的信息就会被打包,反之,大家会拒绝你这条消息。
第二个问题:
A同时广播:
消息1:A---(10BTC)---> B
消息2:A---(10BTC)---> C
当有人接收到第一条消息之后,会检查A的余额,不够的话会自然的拒绝第二条消息,同理其他先接收到第二条消息的也一样。
此时会有两部分人,分别将消息1和消息2打包到块里面,但是此时还没确认,大家都在打包挖矿做工作量证明。
假设一个幸运儿挖到了矿,那么他成功打包了一个新的区块,这个区块包含了消息1。
然后他将新区块链接到了最大的区块链上(公链)
此时在消息2上挖矿的人一看,上面有新块被打出来了,那么所以人都会放弃自己的块,站队到消息1的那个块。反之同理。
总结:我们接收到别人对我们的付款时,必须等到付款消息被打包,才是真的到账了。
是存在那么一种可能,同一时刻有两个幸运儿同时挖矿打包成功,此时会造成公链会分叉。
有两拨人会继续基于自己的分叉继续挖矿,总有一个时刻,某分叉:分叉1上会优先打出来一个包,分叉1为最长的区块链。此时分叉2的人会过来站队,放弃分叉2,区块链又回归到了一条链的状态。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!