區塊鏈 && 以太坊

超入門

By   Kyle Mo

webui-webui-69584f67df-xg6td

webui-pdf-email-scheduler-66867958c-dlgmc

webui-pdf-email-worker-6bd8965b45-62hrz

WebUI API

webui-pdf-email-webui-86cf64b594-dv2dz

區塊鏈是什麼?

​區塊鏈  !== 比特幣

可以先這麼認知區塊鏈

  • ​去中心化
  • 資料不可篡改
  • 分散式帳本,記錄著所有交易紀錄

比特幣

​2008年,由“中本聰”發布比特幣白皮書

中本聰是誰?

一個人?

一個組織?

有許多人自稱中本聰,如今仍沒有結果

(除非有個人出現,並且可以用第一個創世區塊來轉帳,就可以證明身份)

比特幣

  • 基於區塊鏈技術的去中心化虛擬貨幣
  • 唯一的功能: 讓全世界任兩個人的交易可以即時發生(不用兌換外幣等繁瑣過程)
  • 稱作第一代區塊鏈
  • 安全漏洞
  • 交易速度慢(全球每秒7筆交易
  • 限制總量2100萬顆
  • 挖礦機制
  • SHA-256雜湊演算法

區塊 && 鏈 && 節點 &&網絡

交易 Transaction

區塊鏈是一個分散式帳本,是由一筆一筆交易組成,對區塊鏈上的資料產生改變都算是一個交易(Transaction),而多筆交易會包含在一個區塊裡,而無數個包含交易的區塊串連再一起則行成區塊鏈。

區塊組成

一個區塊有以下幾個重要元素(當然不只這些):

  • ​Prev Hash
  • Nonce
  • Data(Tx)
  • Hash
  • TimeStamp

區塊生命週期

挖礦

還記得前面提到區塊中會有一個 Nonce 嗎?

它就像是 counter ,礦工會迭代 Nonce 的值,看誰先讓區塊的 Hash 值前面出現4個0,即為挖礦成功,區塊成功上鏈,挖礦成功的礦工獲得挖礦獎勵。

讓我們用簡單一點的方式來理解(實際上沒有那麼簡單)

區塊驗證範例

節點

在區塊鏈分散式帳本的系統中,節點(node)是提供、 維護「共同總帳」的單位 ,不同的節點之間以網狀的方式相互連結,成為獨立自主的電腦網路,這個概念我們也可以稱之為「去中心化」。

節點

整個區塊鏈就像是一個共享的分散式總帳,由多個參與的運算節點來共同維護,每個節點也各自擁有一份完整的帳本備份(完整個區塊鏈資料),而其中的每個區塊,就像是帳本的其中一頁,記錄好幾筆不同的交易資訊,這些紀錄都無法經由其中一個節點來竄改。

節點

Geth

從比較常見的例子來說,還記得紅極一時的 BitTorrent (BT),它伴隨了當年仍是窮學生的時光,我們用它來抓一些大型檔案,它的特色是若下載同一檔案的人越多,下載該檔案的速度越快,因為在下載檔案的同時,我們也變成了傳遞這個檔案的節點。所以當我們執行 Geth 之後,本機就會開始去下載區塊鏈的資料,就會變成以太坊網路中的一個節點。

錢包 Wallet

錢包 

主要由公鑰與私鑰組成,公鑰相對於 email,是對外公開的,私鑰相對於密碼,擁有私鑰才能對該錢包做操作。

公鑰

私鑰

對稱式加密

非對稱式加密

錢包種類

區塊鏈錢包有分很多種,像是是否有網路連線,保持網路連線的錢包稱「熱錢包」,而只有在使用時才會連線其他時間處於離線狀態的錢包稱為「冷錢包」。在交易所系統下的錢包稱為「中心化錢包」,建立在交易所系統上,由交易所統一管理,假設交易所網站關閉,存在交易所的加密資產也無法取回,中心化錢包是全部錢包中最危險的一個。

區塊鏈專有名詞

  • ICO
  • 三角悖論
  • 51%攻擊
  • 女巫攻擊
  • 雙重支付
  • 礦池
  • 軟硬分岔
  • 共識算法

ICO

所謂ICO,全稱Initial Coin Offering,意思是“數字貨幣首次公開募資”,概念拷貝自股票市場IPO,是指企業或非企業組織在區塊鏈技術的支持下發行代幣,向投資人募集虛擬貨幣(一般為比特幣、以太坊)的融資活動。

三角悖論

比特幣與乙太坊的選擇就是安全與去中心化(放棄效能)

51%攻擊

當全世界的節點超過一半都是壞人,就有足夠算力可以竄改交易

(發生機率極低)

女巫攻擊

女巫攻擊(Sybil Attack), 是一種在線網路安全系統威脅,是指個人試圖通過創建多個帳户身份,
多個節點或電腦坐標從而控制網絡。

這原理跟創建多個個人社交媒體帳户一樣的- 簡單。

 

避免方式:提高創造節點的成本,要達成女巫攻擊幾乎要花費天價

雙重支付(雙花攻擊)

有洗過 line 貼圖嗎?

即同一筆數位貨幣可以被花用兩次以上

 

加密貨幣比特幣使用了工作量證明(PoW)來避免受信任第三方的需求。交易被記錄於公開的區塊鏈上,防止任何人雙重支付,除非企圖攻擊者能控制全網路超過50%的運算能力(即前面提到的51%攻擊)。

礦池 Pool

一群算力沒那麼強的人聚集成一個礦池,提升挖礦成功的機率,得到的挖礦獎勵再等分給礦池的礦工。

軟硬分岔

硬分岔:

  • 舊版不承認新版
  • 新版遵循舊版規則延伸
  • 通常是非常大的變化

ex: 以太坊經典 && 以太坊

 

軟分岔:

  • 舊版承認新版
  • 新版遵循舊版規則延伸
  • 通常是版本的升級

 

共識算法

以太坊 Ethereum

  • 去中心化應用程式 Dapp

  • 以太幣

  • 以太虛擬機 Ethereum Virtual Machine

  • 智能合約

  • 第二代區塊鏈

如何與以太坊互動?

一般人與開發者: MetaMask

 

開發者: Web3 API

 

Ganache

truffle

Tool

 

Solidity程式語言撰寫,語法類似 JavaScript,懂 Ts 的人更能輕易上手,可以把它想成前後端架構的資料庫(當然不能真的這樣想),當我們要對乙太坊的資料
做變動都需要透過合約
來達成。

智能合約

智能合約

contract

ABI

Bytecode

compile

instance

deploy

 

專案 demo

deck

By oldmo860617

deck

  • 346