原创 默克爾樹特點及優缺點

在區塊鏈中,主要使用Merkle 樹來進行數據正確性的驗證。 特點 默克爾樹是一種樹,可以是二叉樹,也可以是多叉樹。 默克爾樹葉子節點的value是數據項的內容或者是數據項的哈希值; 非葉子節點的value根據其孩子節點的信息,然

原创 舉例說明 互斥鎖,讀寫鎖,自旋鎖

互斥鎖 共享資源的使用是互斥的,即一個線程獲得資源的使用權後就會將改資源加鎖,使用完後會將其解鎖,所以在使用過程中有其它線程想要獲取該資源的鎖,那麼它就會被阻塞陷入睡眠狀態,直到該資源被解鎖纔會別喚醒,如果被阻塞的資源不止一個,那

原创 基於工作量證明的密鑰交換與公鑰分發的方法

背景 在這個越來越不安全的網絡環境中,要想保證兩個節點間通信中的數據是安全的,通常需要混合使用公開密鑰算法(非對稱加密算法)來進行密鑰交換,然後使用對稱加密算法將數據加密,使用單向散列函數生成數據指紋,使用簽名算法生成數據簽名,然

原创 一種不依賴公開密鑰算法的密鑰交換(公鑰分發)方法

在這個越來越不安全的網絡環境中,要想保證兩個節點間通信中的數據是安全的,通常需要混合使用公開密鑰算法(非對稱加密算法)來進行密鑰交換,然後使用對稱加密算法將數據加密,使用單向散列函數生成數據指紋,使用簽名算法生成數據簽名,然後一起

原创 電影中的祕密分割

在看美國大片的時候,電影裏在動用核武器時通常需要多位高官依次輸入各自手中的密碼,才能啓動核武器,否則缺失任何一人的密碼都會啓動不成功。或者由總統一人通過核武器手提箱發送核武器打擊命令。 ​ 在上述場景中可以瞭解到,總

原创 Ubuntu 安裝 gcc 過程

因爲編譯源碼的時候需要用到6.0以上版本的gcc,而Ubuntu自帶gcc版本最大爲5.4。因此需要重新安裝一個高版本的gcc。 官方鏡像:http://ftp.tsukuba.wide.ad.jp/software/gcc/re

原创 減少新節點數據全同步花費時間的方法總結

背景 對於任何一條區塊鏈來說,隨着運行時間的增長,數據量的增加是不可避免的一件事。那對於新加入的節點來說,需要同步的歷史數據就會越來越多,同步數據花費的時間也會越來越長。這對於節點參與的積極性是有着不利的影響的。本文主要討論能夠減

原创 降低區塊鏈節點存儲佔用的方法總結

降低存儲佔用的方法總結 ​ 隨着區塊鏈的不斷運行,產生的數據越來越多,佔用的存儲也就越來越多。在這一點上,對於任何區塊鏈項目都是一樣的。在傳統的中心化項目裏,可以通過刪除歷史數據而降低對存儲佔用,保證在業務穩定的情況下,對存儲的佔

原创 Go 將複雜結構體struct轉換爲字符串string的簡單例子

以下是一個將複雜結構體轉化爲字符串的簡單例子 package main import ( "encoding/json" "fmt" ) type student struct { name string age i

原创 用隱私保護賬戶安全?NO!

        從PC時代到互聯網時代,再到移動互聯網時代,賬戶體系已經成了各個網站,APP的一個標準功能,也是衡量產品用戶數的標準!哪家產品要是沒有賬戶功能,估計都不好意思跟人打招呼。下載一個新的APP,打開主頁面,首先就是賬戶註冊,填

原创 賬戶越安全,數據越隱私?NO!

  從PC時代到互聯網時代,再到移動互聯網時代,賬戶體系已經成了各個網站,APP的一個標準功能,也是衡量產品用戶數的標準!哪家產品要是沒有賬戶功能,估計都不好意思跟人打招呼。下載一個新的APP,打開主頁面,首先就是賬戶註冊,填寫手機號

原创 solidity編譯邏輯與添加新指令介紹

本文目標 ​ 本文的主要目的 :1、瞭解solidity的基本編譯原理 2、通過示例的方式瞭解如何添加新的指令,不會涉及到solidity語言的語法講解。 solidity簡介 ​ solidity是智能合約的開發語言,是一種語法類

原创 賬號狀態存儲在MPT中的應用

關於MPT,這篇文章已經有很詳細的介紹了:https://ethfans.org/posts/merkle-patricia-tree-in-detail。 所以本文不聊MPT的相關內容,只聊聊賬號在MPT中是怎麼存儲的。 World

原创 快速同步之header數據處理源碼解析(二)

前文介紹了header是如何同步下來的,本文繼續介紹同步下來的header是如何處理的。 前文介紹header同步的時候有個fetchParts函數,當header數據同步下來後,會觸發deliveryCh事件,執行deliver(p

原创 leveldb數據庫的version介紹

之前分享了leveldb的相關操作,其中compaction操作會導致磁盤存儲文件的增加與刪除,那在查詢數據的時候是否會存在被查文件被刪掉的可能呢?答案是不會的,本文就來看看leveldb自身的版本控制。 我們從版本的結構,生成,使用