比特币的锁定脚本与解锁脚本

锁定脚本:这笔钱发送给A(包含A的共钥);

解锁脚本:我是A,这笔钱是我的;

 

锁定脚本:我要验证你的身份;

解锁脚本:这个是我用我的私钥签名的上一笔交易信息的签名;

 

矿工:

1、使用解锁脚本关联的公钥的地址的hash信息与锁定脚本的地址hash比较;

2、如果一致;

3、获取共钥,使用公钥+上一笔交易信息+解锁脚本的私钥签名结果进行验签;

4、验签通过,说明这笔钱是A的,可以使用这笔钱。

 

总结:

1、锁定脚本包含验签过程;

2、解锁脚本包含签名过程;

3、矿工负责整合资源完成验签。

4、签名的原信息为上一笔交易的交易信息。

 

难点:

1、签名与验签倒置;

2、锁定脚本中只包含验签函数。只是打包到交易数据中,等到下一次交易时,由矿工使用。

 

https://blog.csdn.net/wen294299195/article/details/80220651

 

 

下图,是一笔交易的完整过程。这里面交易有两种类型,一种是Coinbase交易,也就是挖矿奖励的比特币,由于没有发送人,所以比较特殊。另一种就是我们常见的普通交易了,包含输入和输出的。

20180317215503_69483.png

 

https://bbs.huaweicloud.com/blogs/d4c97558190611e89fc57ca23e93a89f

 

 

解锁脚本:<Sig> <PubKey>  

解锁脚本是由签名与公钥组成,这就保证了必须拥有私钥的用户才能对某一笔交易进行解锁。

 

锁定脚本:OP_DUP OP_HASH160 <PubkeyHash> OP_EQUALVERIFY OP_CHECKSIG                   

锁定脚本是由一连串堆栈命令和公钥哈希组成,公钥哈希即RIPEMD160(SHA256(公钥)),大小20字节;由第二节的知识可知比特币地址实际是由该公钥Hash进行Base58check编码而来,所以必须拥有该地址的私钥才能将锁定脚本解锁。

 

 

http://www.cryptocapitalism.center/bitcoin-crash-course/

 

Bitcoin’s two most basic scripts: ‘ScriptPubKey’ locks bitcoin into the recipient’s wallet, and ‘ScriptSig’ unlocks the funds by checking the digital signature

scriptsig_scriptpubkey_lock_unlock.png

 

posted @ 2018-11-01 17:38  zzfx  阅读(2666)  评论(0编辑  收藏  举报