美文网首页
【区块链网络】

【区块链网络】

作者: michaelYH | 来源:发表于2018-07-25 20:35 被阅读0次

    1.非对称加密:公钥与私钥

     加密与解密需要两把钥匙,一把公钥和一把私钥,由于加密和解密需要两个不同的秘钥,故称为非对称加密。支付的可靠性,就是依靠非对称加密技术。

    2.公钥是通过私钥是可以计算出的,私钥是比特币的主人。

    3.私钥的格式

    原始私钥是32字节,也就是256位2进制数字,换成16进制就是64位长度。

    WIF格式:5开头

    WIF-compressed格式:K或L开头

    官方推荐以WIF-compressed压缩格式作为私钥。

    4.椭圆曲线算法

    RSA、ECC......

    椭圆曲线算法是不可逆的,很容易向一个方向计算,但是不可以向反方向倒推。

    5.BASE64、BASE58Check

    Base64就是一种基于64个可打印字符表示二进制数据的方法。

    6.比特币地址

    比特币地址:是26位至34位数字和字母组成的字符串。

    私钥==>椭圆曲线==>公钥==>SHA256==>RIPEMD160==>BASE58check==>比特币地址

    7.私钥、公钥、比特币地址的关系

    private-key===>public-key===>bitcoin address

    8.数字签名ECDSA

    数字摘要+非对称加密

    9.UTXO(unspend transaction outputs)

    钱包也有数据库:leveldb

    UTXO的最小值为聪,是不可分割的价值单位,一个UTXO只能在一次交易中作为整体被消耗。

    未被交易的交易索引:检查inputs中的交易的txn是否在未被支付交易索引中即可。

    UTXO1 UTXO2

    钱包会自动选择unspend transaction outputs

    10.流程

    发起比特币转账,将交易广播到全网;最近的节点,会进行验证,如果交易信息没有问题,进行全网广播。

    挖矿节点接到交易后先将其放进入本地内存池,进行一些基本验证,判断是否属于UTXO。如果验证通过,则将该笔交易放入未确认交易池,等待被打包;如果未通过验证,则被认为是无效交易,直接放弃,不会被打包。

    未确认交易池是所有交易数据的集合,这些交易已经被比特币节点验证,但未被确认。

    挖矿节点在比拼算力的同时,还需要及时验证每笔交易,更新自己的“未确认交易池”。矿工挖矿前,将从“未确认交易池”中抽取“未确认交易”进行打包。

    有时交易不能被及时打包,是因为“未确认交易池”中交易太多,每个区块能记录交易数有限,这就造成了区块链拥堵。

    比特币交易验证

    比特币协议规定,申报交易时,除了交易金额,转出比特币的一方还必须提供以下数据。

    1.上一笔交易的HASH

    2.本次交易双方的地址

    3.支付方的公钥

    4.支付方的私钥生成的数字签名

    验证交易是否属实

    1.找到上一笔交易,确认支付方的比特币来源

    2.算出支付方的公钥的指纹,确认与支付方的地址一致,从而保证公钥属实。【公钥与地址】

    3.使用公钥去解开数字签名,保证签名属实,私钥属实。

    经过以上三步,就可以认定这笔交易是真实的。

    相关文章

      网友评论

          本文标题:【区块链网络】

          本文链接:https://www.haomeiwen.com/subject/jfpmmftx.html