美文网首页
区块基础知识

区块基础知识

作者: 歌白梨 | 来源:发表于2018-07-26 01:00 被阅读12次

    哈希算法的本质:

    哈希函数输入可以是任意长的字符串
    函数输出是固定长度的
    函数计算过程具有一定的效率

    为保障哈希函数的安全性,区块链中的哈希函数的额外性质:

    1.抗冲突性:collission-resistance:不同输入很难产生相同输出
    2.信息隐藏:information hiding不可逆性:知道哈希函数的输出无法逆向推导出输入
    3.谜题友好型:puzzle friendly:输入变化一位输出变化也很大

    哈希算法的种类:

    MD5:输入不定长度,输出128bits
    SHA1:SHA家族第一代,用于TLS和SSL,已被攻破
    SHA2:SHA家族第二代,支持更长的信息摘要输出。如SHA224,SHA256,SHA384,SHA512,数字后缀为哈希摘要结果的长度
    SHA3:目前无明显弱点,如Keccak算法
    RIPEMD-160:160输出的加密算法,旨在代替128位哈希函数MD4,MD5和RIPEMD128

    merkle tree梅克尔树

    梅克尔树在不同的区块链系统中有不同的细节,但本质相同

    比特币中的梅克尔树又称二叉梅克尔树
    每一个区块都有自己的梅克尔树

    • 将区块中的交易哈希值两两组队计算出新的哈希
    • 一颗倒挂生长的树

    梅克尔树功能
    用于检验区块数据的完整性
    用于对SPV钱包进行支付验证

    存储hash的树
    起源于哈希列表 hash list,多层哈希列表点对点网络传输数据,不把数据集中于几台机器,而是从多个机器中下载数据
    为检验完整性把大文件分割成小数据块,损坏了则下载该数据块即可

    比如:BT。先下载可信hash列表的根hash,然后校验hash列表,再娇艳hash列表中的数据块

    以太坊:梅克尔树-帕特里夏树

    提高效率节点引入节点类型
    常规类型:空节点,叶子结点
    引入类型:扩展节点,分支节点


    梅克尔树作用
    1.验证交易完整性
    2.SPV简单支付验证

    • 大部分是普通用户,只有比特币投资及消费支付需求
    • 不运行全节点也可以验证支付,只需要保存所有的区块头即可
    • SPV充分利用梅克尔树结构,在寻找交易时,只需下载区块头而不是整个区块
    • 过滤掉大量不相关的数据,减少客户端不必要的下载量

    公开迷药算法,非对称加密算法
    两把钥匙:公钥,私钥
    公钥公开,私钥必须保密
    1.加密,需要保护信息,公钥加密,私钥解密
    2.数字签名,手写签名的计算机实现,私钥签名,公钥验证签名


    常见算法:

    1.RFA:最常见的公开秘钥算法
    最流行的公开秘钥算法
    公钥和私钥是一对质数
    难度基于大质数分解的难度

    缺点:
    产生麻烦
    秘钥长度较大,运算代价高,速度慢
    已被成功破解

    2.椭圆曲线 ECC
    难度基于椭圆曲线离散对数问题

    使用更小的迷药,存储空间小
    更高的安全性,
    常用语比特币中ECDSA(椭圆曲线数字签名)
    比特币使用了Secp 256k1标准定义特殊曲线和系列参数

    编码
    Base64:基于64歌可打印字符表示二进制数据,2^6=64,所以每6隔比特为一个单元,对于一个可打印字符。
    BAse58:Bitcoin使用,用于产生Bitcoin的钱包地址

    p2p网络协议
    1.发现节点,dnesseed,addr
    2.打通局域网,nat,upnp协议
    3.通信协议

    共识算法
    1.拜占庭将军问题
    2.PBFT算法
    RAFT算法
    POW

    密码学算法

    私钥-》椭圆曲线算法-》公钥-》Base58-》比特币地址

    UTXO

    相关文章

      网友评论

          本文标题:区块基础知识

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