git clone 一部分 從 Git 到區塊鏈

2021-10-11 08:44:21 字數 1979 閱讀 1142

文/robin

本文由幣乎(

)優質內容計畫支援。

這是「區塊鏈技術指北」的第 24 篇文章。

github **在程式設計師心目中的地位不言而喻,這個基於 git 的託管**可以說是開源的風向標。我們 github 中的 git repo 中還可以找到 2005 年 4 月 8 日 linus torvalds 提交的 第一版 **。

正是 github **在全球的成功運營,加密數字貨幣開源專案才會以爆發性的增長。這個世界上最頂尖的程式設計師都在為這些開源專案提交 pr,這種社群式連線的力量,是無法衡量的。我們可以在 github 上看到 bitcoin、ethereum、eos 等專案的最新更新狀態,每天都有無數的程式設計師為這些專案添磚加瓦。加密數字貨幣的共識,很大一部分來自 github 社群。

那 git 究竟是什麼呢?簡單講就是乙個分布式版本控制軟體。如果用三句話闡述什麼是 git 執行原理,那就是:[1]

我們來試著理解這句話。當我們在 github 建立乙個新專案再 git clone 到本地(當然也可以本地 git init 初始化專案),把本地的**放到這個目錄,然後我們要怎麼樣提交到 github 呢?我們在配置相應的 ssh 公鑰之後,會執行如下的幾個步驟來提交到 github:

簡單講就是,先本地提交,累積幾次後再一次 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 將是野火燒不盡,春風吹又生

另外,區塊鏈的另乙個特性是不可篡改,也就是只能 insert。git 呢?github 託管的 repo 裡的內容本身是可以修改的,然而這個 commit 歷史卻是無法修改的。每一次 commit 都有唯一標誌,本次 commit 會有 parent commit 的資訊。git 產生的 log 也可以通區塊鏈資料庫進行模擬。

也就是說,git 是簡化的 blockchain,用 git 來理解區塊鏈,這個事情是不是特別有趣?

參考

個人部落格,

知乎,steemit,[

medium,[

原創不易,讀者可以通過如下途徑打賞,虛擬貨幣、美元、法幣均支援。

測試只是一部分

對於很多測試人員來說,測試相關的內容是工作的全部,這是我們的視角。但是換個角度也許就不是這樣。首先我們工作的地方大部分是商業組織,是某個公司,開發某類產品或者提供某類服務,也就是business。所以從組織的層級往上看,到了一定的級別,其實看到的是業務 產品等東西,當然他們也關心我們技術和競爭對手的...

Laravel 一部分總結

1.使用命令自動建立model層 進入所在目錄 php artisan make model test 2增刪改查 toarray 將資料變成陣列 public functionusertest 增 預設有兩個字段,可以在model層關閉,或者在表中新增 public timestamps fals...

測試只是一部分

對於很多測試人員來說,測試相關的內容是工作的全部,這是我們的視角。但是換個角度也許就不是這樣。首先我們工作的地方大部分是商業組織,是某個公司,開發某類產品或者提供某類服務,也就是business。所以從組織的層級往上看,到了一定的級別,其實看到的是業務 產品等東西,當然他們也關心我們技術和競爭對手的...