區塊鏈基礎 -- 筆記
Blockchain
https://andersbrownworth.com/blockchain/
Hash 雜湊 : SHA256
https://andersbrownworth.com/blockchain/hash
不管什麼內容丟進去,最後出來長度都一樣,都是 256 bits
用 16 進位表示的話長得會像是 ‘e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855’
Block 區塊
https://andersbrownworth.com/blockchain/block
- Block : 第幾個 block
- Nonce : 加進去讓最後算出的 Hash Value 是 4 個 0 開頭
- Data : 放的資料
4 個 0 開頭 : valid
‘0000f727854b50bb95c054b39c1fe5c92e5ebcfa4bcb5dc279f56aa96a365e5a’
Mine :找出某個 Nonce 值,讓算出來的 hash value 是 4 個 0 開頭
Blockchain 區塊鏈
https://andersbrownworth.com/blockchain/blockchain
- Block : 第幾個 block
- Nonce : 加進去讓最後算出的 hash value 是 4 個 0 開頭
- Data : 你放的資料
- 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
- Block : 第幾個 block
- Nonce : 加進去讓最後算出的 hash value 是 4 個 0 開頭
- Tx : Transactions (交易)
- Prev : 指向前一個 block
不會被竄改過去的系統
沒有紀錄帳戶的金額,只有記錄金流
所以現在遇到了一個問題 : 他真的有這些錢嗎?
Coinbase Transactions
https://andersbrownworth.com/blockchain/coinbase
- Block : 第幾個 block
- Nonce : 加進去讓最後算出的 hash value 是 4 個 0 開頭
- Coinbase :
- Tx :
- 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