【汇新云】为大家定期更新文章,【汇新云】IT人的产业链平台


GitHub 网站在程序员心目中的地位不言而喻,这个基于 Git 的托管网站可以说是开源的风向标。 我们 GitHub 中的 Git repo 中还可以找到 2005 年 4 月 8 日 Linus Torvalds 提交的 第一版 代码。

正是 GitHub 网站在全球的成功运营,加密数字货币开源项目才会以爆发性的增长。这个世界上最顶尖的程序员都在为这些开源项目提交 PR,这种社区式连接的力量,是无法衡量的。我们可以在 GitHub 上看到 Bitcoin、Ethereum、EOS 等项目的最新更新状态,每天都有无数的程序员为这些项目添砖加瓦。加密数字货币的共识,很大一部分来自 GitHub 社区。

题图来自: © EarlGrey / Migrate to Qcloud Git Server / codingpy.com

那 Git 究竟是什么呢?简单讲就是一个 分布式版本控制软件。如果用三句话阐述什么是 Git 运行原理,那就是:[1]

生成修改过的文件

生成当前目录 tree 文件,关联当前状态文件

生成 commit 文件,关联到当前目录 tree 文件,并记下父 commit

我们来试着理解这句话。当我们在 GitHub 创建一个新项目再 git clone 到本地(当然也可以本地 git init 初始化项目),把本地的代码放到这个目录,然后我们要怎么样提交到 GitHub 呢?我们在配置相应的 SSH 公钥之后,会执行如下的几个步骤来提交到 GitHub:

git add -A .

git commit -m “[Blockchain] …”

git push origin master

简单讲就是,先本地提交,累积几次后再一次 push 到 remote。本次提交会关联到上一次提交,这跟区块链的 chain 是不是有些类似?比如本次提交的标志为 ab88b43,上一次提交的标志为 297f29a,那么本次提交的信息里就会有 parent commit 297f29a。这种类似链条的记录,是不是变得可追溯了啊?版本控制最重要的是什么,就是可追溯,如果某次错误提交,还可以回腿到历史版本。同样,可追溯也是区块链的重要特性。

再者,区块链的特性是分布式的,而 Git 天然就是分布式的,不过 Git 是依赖文件系统。GitHub 助力全球化协作,并且代码或者文档一旦提交到 GitHub,这个操作将是无法撤销的。GitHub 本身会将其网站上的 repo 利用分布式存储做好容灾;如果某程序员 clone 该 repo,只要它不删除,将会永久存储在自身的电脑,除非自身电脑文件系统崩溃;如果某程序员 fork 该 repo,只要它的账户不被删除,这个 repo 将永久保留在它的账户之下;另外,某个 repo fork、clone 次数越多,被摧毁的概率也就越低;再者,某个 repo 即使最近一次操作清空了所有的代码,还可以通过 git log 恢复。这样一分析,科学上网的 GitHub repo 将是 野火烧不尽,春风吹又生。

大部分业内大咖的文章都存放在 GitHub,读者会被删吗?最近一天世界的一篇关于微信的文章很有趣,不妨 看看。

另外,区块链的另一个特性是不可篡改,也就是只能 INSERT。Git 呢?GitHub 托管的 repo 里的内容本身是可以修改的,然而这个 commit 历史却是无法修改的。每一次 commit 都有唯一标志,本次 commit 会有 parent commit 的信息。Git 产生的 log 也可以通区块链数据库进行类比。

也就是说,Git 是简化的 blockchain,用 Git 来理解区块链,这个事情是不是特别有趣?

参考

[1] douban.com (2013-07-18). 三句话的 git internal. Retrieved from https://www.douban.com/note/289253352.


好区块链,拥抱新未来:

区块链产品经理(点击入驻),和圈内人士混个脸熟。

从 Git 到区块链相关推荐

  1. 区块链随想录——一种设想中的公链架构

    原本,这篇文章的标题是<区块链所预示的未来,需要什么样的基础设施?>,后来我反复想了好久,突然有一个有趣的念头紧紧的拽住了我,于是我完全沉迷其中无法自拔,只能放弃原来的写作内容与提纲,而是 ...

  2. 区块链 — 默克尔树

    文章目录 默克尔树 生成过程 应用场景 在区块链中的应用 默克尔树 默克尔树(又叫哈希树)是一种典型的二叉树结构,有一个根节点.一组中间节点和一组叶节点组成.默克尔树最早由 Merkle Ralf 在 ...

  3. 区块链概况:什么是区块链

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 区块链技术自身仍然在飞速发展中,目前还缺乏统一的规范和标准. wikipedia 给出的定义为: A blockchai ...

  4. 区块链3.0:拥抱EOS

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. EOS是当下最火的区块链技术,被社会广泛看好为下一代区块链3.0.不同于以太坊的学习,EOS的主语言是C++,本文作为E ...

  5. 区块链兼容以太坊智能合约

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 引言 随着区块链技术以及应用的普及,越来越多的区块链出现在大众视野中.由于区块链技术的开源特性,任何公司和个人都可以方便 ...

  6. 区块链c端应用小程序_区块链如何真正起作用? 我建立了一个应用程序向您展示。...

    区块链c端应用小程序 by Sean Han 通过肖恩·韩 区块链如何真正起作用? 我建立了一个应用程序向您展示. (How does blockchain really work? I built ...

  7. 区块链智能合约solidity入门

    想知道更多关于区块链技术知识,请百度[链客区块链技术问答社区] 链客,有问必答!! 使用ubuntu系统安装ethereum开发环境 安装 Nodejs sudo apt-get update sud ...

  8. 区块链100讲:EOS环境安装和智能合约部署实战

    2019独角兽企业重金招聘Python工程师标准>>> 1 硬件配置 操作系统要求 1.Amazon 2017.09 and higher 2.Centos 7 3.Fedora 2 ...

  9. 以太坊区块链_以太坊区块链搭建与使用(一)-私有链

    步骤 一.下载go语言,并配置环境变量 //以太坊源代码依赖的编译与运行环境 二.通过git clone以太坊源码(go-ethereum),并编译 一.go安装 step1:下载 官方(一般打不开) ...

最新文章

  1. 菜鸟,大牛,教主的区别
  2. windows快捷启动命令
  3. 解决 echarts柱状图x轴数据隔一个显示
  4. 对现代软件工程开发看法
  5. React Native实现一个带筛选功能的搜房列表(2)
  6. 浅入深出被人看扁的逻辑回归!
  7. Volley网络请求框架简析——Android网络请求框架(三)
  8. SpringCloud 从菜鸟到大牛之八 服务容错 Hystrix
  9. Android 封装handler,Android 异步通信原理机制-- handler
  10. 网页左右怎么划分_UI基础汇总——网页设计规范
  11. 关于IE、Firefox、Opera页面呈现异同(转载)
  12. 照相长度测试软件,拍张照片就知道你的长度了,还要什么测量工具!
  13. Android 系统应用开发实战
  14. 【C++学习笔记】标准库类型vector
  15. 如何用一句话激怒互联网人?
  16. asp.net 大型商家联盟会员积分消费管理系统,带微信和文档【源码分享】
  17. 跨境电商生态大会在深举办 连连支付母公司发布新平台“LianLian Link”
  18. [Git] Git整理(四) git rebase 的使用
  19. 泛娱乐生态倒逼,各大视频为何抢位3D动画?
  20. mysql 单表关联_MySQL 基础之 单表、多表联查

热门文章

  1. Excel表格文本/数字/科学计数法的格式转换问题
  2. Chrome插件的使用
  3. 2021年制冷与空调设备运行操作考试题及制冷与空调设备运行操作证考试
  4. 古老而神秘的龙泉寺,缘何成为互联网圈里的圣地
  5. 表格的属性、表格的合并及表单
  6. HTML 表格合并(表格合并行属性 rowspan 将多行合并成一行)
  7. 使用IDEA连接本地数据库
  8. Ubuntu 修改DNS
  9. 修炼系列(八),你真的会写注释吗
  10. 硬件实现声音信号压缩