比特币客户端中的技术保障是什么?
用比特币进行交易,没有了第三方的监督和维护,交易的安全性、准确性和隐蔽性怎么保证?比特币账本信息准确性又如何保证?
答案其实就在你手里的账本上,这个账本其实就是比特币客户端,其中最重要的部分就是钱包及区块链信息,其他功能都是为这两项服务的。
先说钱包,顾名思义就是储存和使用比特币的工具,它保存着你的私钥和公钥并能生成收发比特币的地址。
私钥是由一串256位二进制的随机数字及字母组成后按BASE58编码后产生的32字节数字,这个256位随机数的总量已经超过了宇宙中原子的总数,所以基本可以确定是不会重复和猜想出来的。
公钥是由私钥进行了一次哈希运算生成的另一串数据,由公钥按下图再次进行密码学运算后,就是你的收钱地址。
私钥相当于你的私人印章,有了它你可以给别人发送你手里的比特币,所以私钥不可以给任何人。
公钥可以生成无数地址,地址是用来接收和发送比特币的,所以公钥相当于公司印章,可以应对你各种对外的事务。
但是公钥一般也不对外开放,因为别人知道了你的公钥是可以查看你所有地址里的财产,所以接收比特币时一般只提供地址就可以了。
在加密算法的帮助下私钥可以推导出公钥数据,公钥数据可以推导出地址,但却不能反推回去,这样就把个人信息的隐蔽性、准确性和安全性保证了。
目前很多人平时都是把私钥数据块放在U盘里不进行联网,这样就能以最安全的方式保存私钥了。
再说说区块链是什么,区块链确实就是一个个区块按照时间先后顺序链接起来的链条,比特币的区块链将这个时间定为平均10分钟,每平均10分钟生成的区块都包含两大块数据,一个是区块头、一个是这期间经确认的交易信息。
交易信息就指的是这十分钟之内交易的全部内容,而区块头就相当于一个标签,上面写着当前区块的版本号,前一个区块的区块头的哈希值、本区块的交易信息的哈希树根、时间戳、当前区块打包难度和用于挖矿的随机数。
版本号就是当前比特币客户端的版本号,而比特币的时间戳是一种确定打包区块时间的工具,是为了确认当前区块位置并增加篡改难度的编程技术。
哈希树根详细说就是使用哈希运算生成的梅克尔树根,是将本区块中的每一条交易信息进行哈希运算,再将哈希值每两个进行一次哈希,直到生成最后一个值就是梅克尔树根。
哈希运算的特性决定了输入内容不同,得到的结果也不同,所以如果任意交易信息的变换都会导致梅克尔树根的变化,由此可以减少区块头的体积,还可以保证能够快速验证区块头的正确性。
前一个区块的的哈希值是为了将本区块与前一个区块进行数据上的关联,以便将链条中每一个区块的位置完全固定,如果有人篡改其中部分数据势必要更改之后所有的区块内容,从而增加区块链内容的安全性。
区块链平均每十分钟更新一个区块内容,你的客户端也是实时更新的,如果你有段时间没上网了,客户端内容缺了很多怎么办?
没关系,你的客户端会与在线的其他相邻客户端沟通,找出准确的信息补充下就好了。
相比于传统数据库形式的存储结构,区块链结构能在新数据录入时不用对整个数据库进行验证运算,可以保证原有信息按照固定位置永久保留且可以快速定位,同时增加数据篡改攻击的难度。
![btcfans公众号](/assets/image/ic_qrcode_accround_endpage.png)
Scan QR code with WeChat