区块链之虚拟币传奇

发布时间 2023-04-18 16:06:50作者: CentKiller

签名验证逻辑代码

账户地址(公钥):2A39CBa2390FDe
账户地址 私钥:378sknJhidhLIqdngalket
公钥 私钥可以互相加密解密

签名过程:
hash('{"付款地址":"2A39CBa2390FDe","收款地址":"AAC9CBa239aFcc","金额":"1btc"}') = 8aDB23CDEA6
#将交易信息hash加密为交易摘要
sign("8aDB23CDEA6","378sknJhidhLIqdngalket") = 3cdferdadgadg
#可以将sign理解为使用私钥对交易摘要进行加密


验证过程:
verify("3cdferdadgadg","2A39CBa2390FDe") = 8aDB23CDEA6 
#因为私钥公钥可以互相加解密,所以这里利用公钥就可以解密出加密过的交易摘要
if(verify("3cdferdadgadg","2A39CBa2390FDe") 
    == hash('{"付款地址":"2A39CBa2390FDe","收款地址":"AAC9CBa239aFcc","金额":"1btc"}')):
    #写入账本
    #广播
else:
    #donothing

工作量证明

交易的有效性验证就是签名验证逻辑代码里面提到的内容

一条链路由此形成:但是里面没加随机数,应该还有随机数