V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
miaozaiye
V2EX  ›  分享发现

Git 和 区块链的相似性和差异性比较

  •  
  •   miaozaiye · 2018-02-25 22:19:58 +08:00 · 4825 次点击
    这是一个创建于 2497 天前的主题,其中的信息可能已经有所发展或是发生改变。

    偶尔看到 温国兵 写的 从 Git 到区块链,觉得很有意思,但还有点意犹未尽。

    于是打算仔细分析一下。

    一、相似性

    1. 分布式

    Git 确保每个代码仓库在本地保留完整的项目库,而不仅仅是自己在工作的这个分支和自己的提交历史。同时也保留了最近这次 pull 下来后的所有快照和索引信息。

    区块链上,每个节点在本地保存完整数据库,而不仅仅是自己的交易信息。

    1. 可追溯性

    Git commit 链上,每个 commit 对象都包含父级对象(上一次 commit 的对象,除了第一个 commit ),对之前的记录全部可追溯。

    区块链上,每个区块都包含前一个区块的索引(除了创世区块),可以追溯之前所有有效交易。

    1. 不可篡改

    Git 的 commit 链中,每个对象本身在存储前都计算校验和,然后以校验和来引用。一旦修改,校验和就会不对, 这意味着不可能在 Git 不知情时更改任何文件内容或目录内容。

    Git 用以计算校验和的机制叫做 SHA-1 散列( hash,哈希)。 这是一个由 40 个十六进制字符( 0-9 和 a-f )组成字符串,基于 Git 中文件的内容或目录结构计算出来。SHA-1 哈希看起来是这样:

    24b9da6552252987aa493b52f8696cd6d3b00373

    区块链中,每个区块包含上个区块 ID,本区块 ID 两个 SHA-256 散列,这两个散列都是基于区块内容计算出来。一旦修改内容,则散列将变化,和其他节点的链不一致,最终不能加入到最长链中,因此无法真正篡改内容。

    二、差异性

    集体共识和中央节点意志: 1 - 区块链是基于集体共识( POW/POS)来 merge,形成最长链,最长链即为主链。

    2 - 而 Git 体系里,通过仓库托管平台来进行多节点合作时,是平台项目的管理者掌握了 merge 的权力,体现的是中央节点的意志。

    1. 密码学

    1 - 比特币区块链中,密码学主要用到了以下方式

    在比特币区块链的整个体系中,大量使用了公开的加密算法,如 Merkle Tree 哈希数算法,椭圆曲线算法、哈希算法、对称加密算法及一些编码算法。各种算法在比特币区块链中的作用如下:

    a)哈希算法

    比特币系统中使用的两个哈希函数分别是:1.SHA-256,主要用于完成 PoW (工作量证明)计算; 2.RIPEMD160,主要用于生成比特币地址。

    b)Merkle 哈希树

    基于哈希值的二叉树或多叉树,在计算机领域,Merkle 树大多用来进行完整性验证处理,在分布式环境下,其进行完整性验证能大量减少数据传输和计算的复杂程度。

    c)椭圆曲线算法

    比特币中使用基于 secp256k1 椭圆曲线数学的公钥密码学算法进行签名与验证签名,一方面可以保证用户的账户不被冒名顶替,另一方面保证用户不能否认其所签名的交易。用私钥对交易信息签名,矿工用用户的公钥验证签名,验证通过,则交易信息记账,完成交易。

    d)对称加密算法

    比特币官方客户端使用 AES (对称分组密码算法)加密钱包文件,用户设置密码后,采用用户设置饿密码通过 AES 对钱包私钥进行加密,确保客户端私钥的安全。

    e)Base58 编码

    Base58 是比特币使用的一种独特的编码方式,主要用于产生比特币的钱包地址,其类似于古典密码学里的置换算法机制,目的是为里增加可读性,把二进制的哈希值变成了我们看到的地址“ 177rNLTxYAaXqTrrJPRsQNxvR9a1gF5P3K ”。

    2 - Git:主要用了 SSH 秘钥来进行远程登录验证,用了 SHA-1 来进行代码内容校验和。

    SSH 是 Secure Shell 的缩写,由 IETF 的网络工作小组( Network Working Group )所制定,是一种专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

    SSH 传输的过程如下: (1)远程主机收到用户的登录请求,把自己的公钥发给用户。 (2)用户使用这个公钥,将登录密码加密后,发送回来。 (3)远程主机用自己的私钥,解密登录密码,如果密码正确,允许用户登录。

    参考:

    1.https://zhuanlan.zhihu.com/p/33644436

    2.区块链中的密码学

    7 条回复    2018-02-27 17:42:02 +08:00
    huiyifyj
        1
    huiyifyj  
       2018-02-25 22:23:05 +08:00 via Android
    这两样竟然有可比性🤔,
    惊了。
    445141126
        2
    445141126  
       2018-02-25 22:24:17 +08:00
    技术都是相通的
    fengchang
        3
    fengchang  
       2018-02-25 22:49:23 +08:00
    别说,真的很像
    Rorysky
        4
    Rorysky  
       2018-02-26 16:00:55 +08:00
    有意思的分享
    picasso250
        5
    picasso250  
       2018-02-26 18:13:20 +08:00
    IPFS 白皮书中也讲到了这个
    nullcoder
        6
    nullcoder  
       2018-02-27 11:20:40 +08:00
    是的都是用到了 merkle tree.
    qf19910623
        7
    qf19910623  
       2018-02-27 17:42:02 +08:00
    你咋不说数据结构中的链表和区块链很像
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2852 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 06:17 · PVG 14:17 · LAX 22:17 · JFK 01:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.