区块链之虚拟币传奇

签名验证逻辑代码

账户地址(公钥):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

 

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

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

区块就是一系列交易信息的打包,只需要验证最后一个区块的有效性即可验证整条链的真实性

工作量证明

所以,创建区块就是猜谜游戏。一般来说,用户需要汇总所有要添加的交易信息和其他一些重要数据,然后同时进行哈希运算。由于数据集不变,需添加一个变量信息。否则,输出的哈希值会始终保持一致。这个变量数据称为“随机数”。

只要每次试着改变随机数,就会得出不同的哈希值。这一过程就是所谓的“挖矿”。

总而言之,挖矿就是收集区块链数据并借助随机数进行哈希运算,直至找到特定哈希值的过程。如果得出的哈希值符合协议设定条件,即可在网络中发布新区块。与此同时,其他网络参与者可更新自己的区块链,纳入新区块。

 

 以太坊

 

 

 有人欠你钱,在现实生活中需要去司法机关各种上诉,中间还存在着一些黑幕啥的

有没有一种办法,把现实生活中的场景也变得足够的去中心化,也就是完全脱离个人因素,让大家认可这个规则,让这个规则无条件地执行下去,这个规则=智能合约

 

 以太坊的愿景是创建一个无法停止,抗屏蔽(审查)和自我维持的去中心化平台

智能合约能表达规则明确,不受主观因素影响的业务

智能合约能表达规则不轻易修改的业务

如果业务的规则,经常变化,同样是无法通过智能合约编写的,因为智能合约小程序一旦写完,运行在以太坊平台,是无法通过软件升级去进行规则更新的

 

posted @ 2023-04-18 16:04  CentKiller  阅读(142)  评论(0编辑  收藏  举报