區塊鏈基礎 -- 筆記

Page content

Blockchain

https://andersbrownworth.com/blockchain/

Hash 雜湊 : SHA256

https://andersbrownworth.com/blockchain/hash

不管什麼內容丟進去,最後出來長度都一樣,都是 256 bits

用 16 進位表示的話長得會像是 ‘e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855’

Block 區塊

https://andersbrownworth.com/blockchain/block

  1. Block : 第幾個 block
  2. Nonce : 加進去讓最後算出的 Hash Value 是 4 個 0 開頭
  3. Data : 放的資料

4 個 0 開頭 : valid

‘0000f727854b50bb95c054b39c1fe5c92e5ebcfa4bcb5dc279f56aa96a365e5a’

Mine :找出某個 Nonce 值,讓算出來的 hash value 是 4 個 0 開頭

Blockchain 區塊鏈

https://andersbrownworth.com/blockchain/blockchain

  1. Block : 第幾個 block
  2. Nonce : 加進去讓最後算出的 hash value 是 4 個 0 開頭
  3. Data : 你放的資料
  4. Prev : 指向前一個 block

假如在 black # 3 資料被修改了,他的 nonce 需要整個重算,hash value 當然也變得不一樣,後面所有 block,由於有指向前面的 block,也要全部重算 (re-mine)

改越前面的 block 就要花越多計算去重算整條鏈

Distributed 分散式

https://andersbrownworth.com/blockchain/distributed

  • Peer A
  • Peer B
  • Peer C

不用確認整條 blockchain 上的值,只要看一下最新的 hash value,儘管也是 4 個 0 開頭,但他的值和其他人不一樣

Tokens

https://andersbrownworth.com/blockchain/tokens

  1. Block : 第幾個 block
  2. Nonce : 加進去讓最後算出的 hash value 是 4 個 0 開頭
  3. Tx : Transactions (交易)
  4. Prev : 指向前一個 block

不會被竄改過去的系統

沒有紀錄帳戶的金額,只有記錄金流

所以現在遇到了一個問題 : 他真的有這些錢嗎?

Coinbase Transactions

https://andersbrownworth.com/blockchain/coinbase

  1. Block : 第幾個 block
  2. Nonce : 加進去讓最後算出的 hash value 是 4 個 0 開頭
  3. Coinbase :
  4. Tx :
  5. Prev : 指向前一個 block

往前找有指定 Prev 雜湊值的 block,回溯之前的區塊,可以查詢任何一個錢幣的流向


Public / Private Keys and Signing 公私鑰與簽名

https://github.com/anders94/public-private-key-demo

產生 公鑰 / 私鑰

決定 private key (通常 random 產生,只有自己保留)

算出 public key (告訴網路上所有人)

過程

用 private key 簽署一則訊息

別人收到後用 public key 解

Data

Transaction (Money $ XX From 我的public key To 另一個人的 public key)

用我的 private key 簽

Message [ 多少錢 ] From [ A 的 public key ] To [ B 的 public key ]

用 A 的 private key 簽署產生 signature

別人會收到 這則 message 和 對應的 signature

用 public key 解出 signature 就知道有沒有被偷偷改過了

別人沒有你的 private key,所以沒辦法偽造正確的 signature