比特币如何防止伪造交易记录?
(本文在观看李永乐老师视频讲解基础上整理)
防止伪造记录是比特币的一个重要特点,电子签名技术就是防伪的关键。
当一个比特币用户注册的时候会产生一个随机数,随之会产生一个私钥,紧接着生成公钥和地址。
接下来以“A转给B十个比特币”作为案例,看一下比特币的交易是如何防伪的。
Step1:A编写交易记录并对信息加密
Step2:A将“交易信息、公钥、地址”进行全网广播
Step3:全网对A广播出来的信息进行验证
验证的过程就是全网对广播出来的交易信息进行哈希运算,并得出一个摘要。然后用广播出来的公钥和密码进行解密,也得出一个摘要。
对这两个摘要进行对比,如果相同,信息为真,如果不同,信息为假。
以上就是比特币对信息验证的过程。
结语
1、? 比特币防伪采取了电子签名技术;
2、? 私钥加密,公钥解密;
3、? 对广播出来的信息,全网会进行信息验证,验证通过代表信息真实,否则信息伪造。
参考文献
[1]微博 @李永乐老师
比特币如何防止篡改
比特币网络主要会通过以下两种技术保证用户签发的交易和历史上发生的交易不会被攻击者篡改:
bitcoin私钥是如何产生的?
...签名,钱包,都是什么意思?我下载了一个bitcoin-0.8.5比特币客户端...
私钥就是你的银行卡密码,地址就是你的银行账号,但是私钥更重要,有了私钥可以推出地址,忘了私钥就啥都没了,签名就是个性化设置,加一道验证手续,钱包就是小atm机,更新完了就可以发,wallet文件保存好就没事情了,btc中国还行,可以买币。
比特币的加密(秘钥、地址、脚本验证)
https://www.cnblogs.com/zhaoweiwei/p/address.html
生成方式:
P2PKH的交易脚本
举个真实的例子:
ScriptSig:
PUSHDATA(72)[3045022100f8df16671995baaecab5a8d91fc3c78f22c156918cefb90dd1092fcd8578567d022041395667d7e99d131bffcb908904a2417cfb74b46df8bded2517a02beda0279701] PUSHDATA(33)
[021fc349da71680b2482e4c307adbd7aa2fc16d2cd564843ab873a8efff748d87b]
这里面的一个scriptSig由2部分组成,第一部分是签名,第二部分是公钥,PUSHDATA(N),表示要压入栈顶的byte,1个byte表示2个字符,PUSHDATA(72)表示压入144个字符
Output Scripts
HASH160 PUSHDATA(20)[d3ecd0e0d42d4b617767d9d1b966216c77ebb513] EQUAL
DUP HASH160 PUSHDATA(20)[7c45023433aea27b48251d4c5a52b1d73caba74e] EQUALVERIFY CHECKSIG
第二个找零output地址因为是P2PKH开头的,所以格式和描述的一样
https://www.hibtc.org/2428.html
结合多重签名一起使用
scriptSig: ..signatures...
scriptPubKey: OP_HASH160
表示一共有n个参与方,只要有m个参与方同意了这笔交易,则这笔交易就生效了,具体的规则是通过scriptHash里面的脚本内容决定的
m-of-n multi-signature transaction:
scriptSig: 0