从零入门区块链和比特币(第三期)

欢迎来到我的区块链与比特币入门指南!如果你对区块链和比特币感兴趣,但不知道从何开始,那么你来对地方了。本博客将为你提供一个简明扼要的介绍,帮助你了解这个领域的基础知识,并引导你进一步探索这个激动人心的领域。

感兴趣的话可以看看第一期👉从零入门区块链和比特币(第一期)👈

                                 第二期👉从零入门区块链和比特币(第二期)👈

目录

密码学知识简介

为什么传统加密解密不安全

非对称加密简介

如何生成交易账号

交易解读

比特币没有余额

UXTO = Unspent Transaction Output

交易输入

交易输出

案例: Alice发送1 btc给Bob,签名和公钥是Alic的,交易必须验证Alic能不能使用自己上笔交易获得的收入。

更多支付方式


密码学知识简介

为什么传统加密解密不安全

传统加密使用同一个密码加密解密,一旦密码泄漏就毫无安全性。 即使密码安全,但是利用统计学原理,配合计算机暴力计算,依然可以轻松破解。 密码每天变就安全了吗?每个字变密码都没用,恩尼格码表示我想静静。

非对称加密简介

加密解密使用不同的秘钥,加密的密码无法用来解密,必须成对使用。

通讯双方A/B分别生成自己的公钥/私钥对,把公钥发送给对方。A发送信息时使用B的公钥加密,并使用自己的私钥签名。

B收到消息后,用A的公钥检查签名是否是A发出,确认成功后,用私钥解密查看信息。

B用A的公钥加密信息,并用自己的私钥签名。

最大缺点是速度慢,效率大大低于常规的对称加密。 一些技巧

如何生成交易账号

  1. 生成256位(64字节)私钥: 这个私钥是通过随机数生成器生成的,通常以十六进制表示。

  2. 非对称算法生成公钥: 通过私钥,使用非对称算法(如椭圆曲线加密算法)可以生成对应的公钥。

  3. 计算公钥的SHA-256: 对公钥进行 SHA-256 哈希计算,得到一个长度为 32 字节的哈希值。

  4. 计算ripemd-160: 将第 3 步的 SHA-256 哈希结果再进行 RIPEMD-160 哈希计算,得到一个长度为 20 字节的哈希值。

  5. 在头上加上地址版本: 在第 4 步的结果前面添加一个字节,用于表示地址的版本信息。比特币主网的地址版本通常为 0x00

  6. 计算SHA-256: 对第 5 步的结果进行两次 SHA-256 哈希计算。

  7. 取第6步的前4个字节,也就是8个16进制个位数,也就是字符串前8位: 从第 6 步得到的结果中取出前四个字节,通常以十六进制表示。

  8. 把第7步的4个字节内容添加到第5步结果后面作为校验: 将第 7 步得到的四个字节追加到第 5 步的结果后面。

  9. 对第8步的结果做base58编码,得到最终地址: 将第 8 步的结果进行 Base58 编码,得到最终的比特币地址。

这个过程中,私钥和公钥用于数字签名和验证,而最终的比特币地址用于接收和发送比特币。

交易解读

比特币没有余额

UXTO = Unspent Transaction Output

先了解一下流水账

         交易1: 系统发工资50元给A

        交易2(使用交易1获得的50元)

                        向B买包烟话费30元

                        给自己找零发20元

        交易3(使用交易2获得的20元)

                         叫外卖向C支付5元

                         给自己找零15元

        A的账户余额由多少?

著名的10,000个BTC买披萨的交易: 

交易输入

         上一笔交易输出的hash,钱从哪里来。

         scriptSig: 用来解锁上一笔交易的scriptPubKey用于这次交易的消费

交易输出

        金额,单位(聪)

         scriptPubKey:等下一笔教育的scriptSig来解锁

案例: Alice发送1 btc给Bob,签名和公钥是Alic的,交易必须验证Alic能不能使用自己上笔交易获得的收入。

        输出T1(钱从哪里来): TX1输出的scriptPubKey:OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG

         输入T2(把T1的钱花掉): scriptSig:<签名> <公钥>

逐步执行验证脚本,合法花掉UXTO:

         实际验证脚本: <签名> <公钥> OP_DUP OP_HASH160 <pubKeyHash>         OP_EQUALVERIFY OP_CHECKSIG 常数入栈,栈内容:<签名> <公钥>

        OP_DUP复制栈顶元素,栈内容:<签名> <公钥> <公钥>

        OP_HASH160对栈顶元素计算Hash,栈内容:<签名> <公钥> <公钥哈希> 常数入栈,栈内容:<签名> <公钥> <公钥哈希> <pubKeyHash>

        OP_EQUALVERIFY OP_CHECKSIG检查栈顶元素是否相等,相等的话再比较签名。

更多支付方式

        支付到公钥(早期做法) scriptPubKey:<公钥> OP_CHECKSIG scriptSig:<签名>

        支付给任何人 scriptPubKey:<空> scriptSig:OP_TRUE

        永久销毁 scriptPubKey:OP_RETURN 直接返回,没法消费了。 签名消费(要求提供一段数据,hash后与<hash>相等。) scriptPubKey:OP_HASH256 <hash> OP_EQUAL scriptSig:<data>

结语:看我这么努力的份上,麻烦点赞收藏加关注,有问题在评论区call爆我,我一定会改的。谢谢!

  • 18
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值