owned this note
owned this note
Published
Linked with GitHub
# Myth Correction
[:point_up: To My Courses](/4B8EfN00SrisMcrKis_m9g)
Please feel free to translate to [other languages](/C9aeMLo3RZ2l3xhv0201Hg).
## 1. Cryptocurrency 的翻譯
Cryptocurrency 翻成==加密貨幣==應該是個翻譯的誤會,以訛傳訛,因為大部分的 cryptocurrency 並沒有加密,而僅是用了密碼學 (cryptography) 中的數位簽章技術。Bitcoin 被信任的來源之一應該是所有資料任何人都看得到,沒有加密,稱為加密貨幣會誤導。但若將 Cryptocurrency 稱為數位(或數碼)貨幣又會過寬,如 Ripple 是數位貨幣,但主要是用資料庫技術,不是用密碼學技術。 [Wikipedia](https://zh.wikipedia.org/wiki/%E5%AF%86%E7%A2%BC%E8%B2%A8%E5%B9%A3) 中也譯為密碼貨幣,語意有點怪,因為這貨幣也不全是密碼做的,也不是用來賣密碼的。稱為虛擬貨幣也不對, 因為這種貨幣有真的貨幣功能,並非只在虛擬遊戲中使用。稱為數位簽章貨幣太長也自我設限,因為將來也許採用更新的編碼技術。密碼學早期著重在加解密技術,後期發展出數位簽章技術,統稱為 cryptography,不過稱為密碼學貨幣還是怪。日文翻作==暗号通貨==,也沒有加密的意涵。在沒有公認更好的翻譯出現之前,也許用原文或 CC 幣好一點,一定要翻譯寧願選==密碼貨幣==,有時縮寫成==密幣==也不錯,如密幣行業、密幣交易所。其實==塊託貨幣==音譯意譯俱佳!

> [name=薛智文][time=Fri, Sep 21, 2018 1:11 PM]
Need to add (即期)支票, 準備金, NFT, 密碼資產 (CryptoAsset)
> [name=薛智文][time=Thu, Dec 2, 2021 1:08 AM]
## 2. 公鏈的交易內容公開性
目前大部分公鏈的交易內容,包含轉帳與智能合約,其內容都是任何人上網就拿得到的未加密公開資訊,不一定要透過 blockchain.info 或 etherscan 才看得到,只不過比特幣這類以比特幣位址為轉出單位的交易,只要該位址盡量不要重複使用,就可以達到使用者匿名的作用,而乙太幣這類以帳戶為轉出單位的交易是比較偏向實名易暴露隱私的作法。
## 3. Myth : Blockchain是不可竄改的
> [name=Tony]
Blockchain上之資料其實不是百分之百不會被竄改的。理論上,在有夠多的node串通起來的情況下是可以達到竄改blockchain這件事的,只要這些多數的node都認證被篡改的block為合法,那就是竄改成功了。不過實際上一個足夠多人在使用的blockchain是不太可能達到大多數人都聯合起來要做假的,所以就實際上來說只要nodes數目足夠多,被竄改的機率將會非常低,進一步讓大家可以相信。現有的PoW中挖礦的機制就是為了吸引夠多人來參與Blockchain中的驗證而發明出來的。
> [name=薛智文] 竄改的意思是改變內容,因為鏈結之前的區塊,區塊的內容是非常難竄改的,充其量只能置換一區塊之後的合法區塊。
### 最終性
指交易確認後就不可竄改。
## 4. 區塊鏈一定有區塊嗎?談談 IOTA
- [name=Eason]

其實有「沒有區塊的區塊鏈」,就是 IOTA,在 IOTA 中,透過 Hash 相連接的單位不再是區塊,而是交易。
> 可以說 IOTA 的區塊就是交易本身
(下圖為一筆 IOTA 的交易)

當使用者要發起一個交易時,該交易中必須確認網路上尚未被 Confirm 的兩個交易,並且把那兩個交易的 Hash 包含在交易訊息中,再做一個低難度的 PoW。而為了確保交易被清算,每隔一定的長度,IOTA 就會生成 Milestone,來作為未來來產生交易時的橋接點。交易只要被 MileStone 連接了,就算是上鏈成功(Confirm)。
IOTA 這樣的設計被稱作 Tangle,是一個有向無環圖。將所有交易透過 Hash 串接在一起,達到區塊鏈的效果。其特色是理論 TPS 無上限,因為交易多,被確認的交易也多,Milestone 生成的速度就快。[在測試網路的壓力測試中,IOTA 的 TPS 能達到 1250](https://www.crypto-news-flash.com/iota-comnet-testnet-reaches-1250-tps-in-stress-test/)。
> 下圖為一部分的 Tangle 經視覺化處理後的樣子
> 紅色是 Milestone
> 綠色是已被 Confirm 的交易,即已經被連接到 Milestone
> 藍色是尚未被連接到 Milestone 的交易
> 交易之間的細線,就是有 Hash 的關聯

不過 IOTA 這樣的設計是否能夠被稱為區塊鏈,其實有待商確,因為其已經把最重要的元素,即「區塊」捨去,而且在 IOTA 官網也沒有提到 IOTA 是「區塊鏈」,只提到 IOTA 是一個分散式帳本解決方案(DLT)。
DLT 沒有不好,其實現在很多問題 DLT 就夠了,然而,很多區塊鏈新創,依舊使用 IOTA ,並且說自己是在使用區塊鏈解決方案,或者是 IOTA 相關論文發布時,也會說自己是在發區塊鏈技術的論文。是不是要稱 IOTA 為「區塊鏈」,似乎是見仁見智。
在現實中,因為 IOTA 使用量並不高,因此交易被確認的速度平均約為十五分鐘左右,而且會出現自己的交易沒有被其他交易確認,最終無法上鏈的情況。
> 故不盡知用兵之害者,則不能盡知用兵之利也。
> [name=孫子兵法]
> > 兵如是,技術亦如是,
> > 技術各有利弊,要選適合的使用。
> > 我說了些 IOTA 的缺點,
> > 不代表他不能用,只是要看情況做使用而已。
> > [name=Eason]
> [name=薛智文] 區塊是同步的最小單位, 一區塊內可以只含一個交易, 像 IOTA 一樣. IOTA 的問題不只這些. 零手續費也不是很完美, 還有 MCMC 也不是完整的方案。是不是區塊只是觀點不同,非迷思。
## 5. 運用區塊鏈儲存的資料一定正確嗎?
- [name=第四組2020]
區塊鏈雖能確保資料在傳遞過程中不被竄改,但並沒有辦法驗證作為源頭的資料是否正確,是導致現今區塊鏈無法普遍應用在各行業的主因。舉例來說: 某物流公司運用區塊鏈技術來記錄貨物從發出到接受過程中的所有資訊,然而若運送人員作假標示成已出貨,因區塊鏈無法驗證源頭資料,使客戶無從知曉鏈上資訊的真實性。
---
## 6. 區塊鏈一定要去中心化嗎?
- [name=第五組2020]
區塊鏈可以去中心化,但不是一定要去中心化。區塊鏈真正的目的是要抗審查,而去中心化則是實現抗審查的手段與方法,要不要去中心化應該要視情況而定。因此,若區塊鏈的目的並非抗審查的話,則去中心化是不必要的。而在提到區塊鏈時,很多人常常會將「分散式賬本」與「去中心化」畫上等號,分散式賬本是指數據被儲存在不同地方,每個節點有一份副本,當新的共識達成時,所有節點都可以更新成新共識。一條區塊鏈一定會是分散式的,但分散式賬本並不一定是去中心化,分散式賬本可以是有許可權或無許可權的。舉例來說:公有鏈是任何人都可以參與的,不受任何身分限制,在交易的過程中,不需要透過中介機關的授權與審核,只要經過礦工驗證後,該交易就能成功。因此,公有鏈是需要去中心化的,因為參與的門檻極低,整條鏈必須不受任何中心化組織控制,由所有願意成為礦工的節點共同維護,才能防止整條鏈被獨裁壟斷(只有單一節點的那種公鏈就不討論)。而私有鏈就像是一個臉書中的私密社團,由於公司有非常多商業上的交易資料都是屬於機密,不希望讓所有不相干人士都有權限能夠瀏覽,只有在私密社團中的相關人士才能瀏覽其中的內容,因此只要參與社團的資格不是開放的話,都不能稱之為去中心化,這類應用的目的本來也就不是要抗審查,因此也就沒有去中心化的必要。
---
## 7. 區塊鏈完全匿名?
- [name=第六組2020]
雖然交易比特幣不像一般我們在創立行動支付帳戶時,被要求綁定個人身份以及信用卡帳戶,只需要使用比特幣地址以及特定產生的密碼即可。看似確保了交易人的身份以及交易紀錄不會被發現,賦予使用者使用此貨幣所帶來的絕對匿名性。不過實質上,像是目前相關的研究計畫「比特幣追蹤算法與洗錢防制措施」,就是將比特幣中的交易紀錄搜集起來,接著藉由這些洗錢的常見手法以及特性,來尋找某些帳戶的異常行為,將可疑帳戶找出,追蹤他們的交易紀錄,透過曾經與實名化之帳戶(使用者公開之比特幣地址)交易的資料,或許能夠從外部線索(使用者與匿名身份之聯絡紀錄)中找出惡意帳戶的真實身份,將其逮捕歸案。
---
## 8. 區塊鏈就是分散式的雲端資料庫?
- [name=第一組2020]
區塊鏈具有資料分散式儲存、資料不可(不易)竄改等特色,因此有些人會將區塊鏈類比於分散式資料庫,甚至認為可取代傳統資料庫這樣的誤解。
(1)區塊鏈上的資料使用雜湊運算,使得區塊鏈的資料難以修改,因此已經在帳本上的紀錄無法被刪除,這點跟資料庫的概念不一樣,因此關於歐盟提出的被遺忘權(right to be forgotten),在區塊鏈上很難實現,跟資料庫相比,資料庫的新增與刪除容易許多,以Google為例,它們提供了可申請的被遺忘權,並嘗試[移除](https://www.businessweekly.com.tw/focus/blog/3000283)這些資料。
(2)資料庫的擁有者通常為私人機構,資料需要有對應權限的人才能存取,區塊鏈的帳本是公開的,因此匿名和隱私的問題對於區塊鏈是一個困難的問題,但這點傳統資料庫可以容易實現。
(3)區塊鏈的寫入會有Garbage in Garbage out的問題,會難以驗證資料的真偽,相較於中心化的資料庫,權限管理者可以適度的干預資料的內容,但資料庫的話語權掌控在有權限者身上。
(4)為了處理雙十一的大量的交易量,2020年天貓[PolarDB](https://www.sohu.com/a/434392497_612370)的TPS高達1.4億次/秒(峰值),現有比特幣的TPS僅7,因此區塊鏈若不解決TPS過慢的問題,連一般的夜市都無法作到區塊鏈的交易。
(5)大部分提到區塊鏈的分散式特點時,都鮮少提到資料的預期增長問題,目前區塊鏈還沒真正大量運用,若有殺手級應用,勢必要解決資料成長的問題。以傳統資料庫的應用來說,可以透過封存的,將短期不會用到的資料以壓縮方式存放,因此區塊鏈也必須因應未來資料過大,而有對應的封存設計。
結論:雖然區塊鏈和資料庫都有存放資料的功能,但本質上兩者的應用是完全不相同,資料庫是很中心化的應用,通常應用於私人機構,而區塊鏈有兩大特點是傳統資料庫沒有的,自主與共享,因此兩者不能混為一談。
---
## 9. 使用區塊鏈就比較安全嗎? 討論分散式系統的挑戰
- [name=第三組2020]
區塊鏈的安全性,基本上是基於他的共識機制(互不相識的裝置提供信任)以及分散式系統(同步存有多份備份)。
但是分散式系統,目前已知的挑戰、攻擊其實不少。目前的區塊鏈機制的共識演算法,還無法達到很穩定、高信任度的共識機制以及解決同步問題,導致目前的區塊鏈系統尚無法被大量使用。
分散式系統遇到的挑戰有以下幾種:
* Consensus
* 根據Moore's law 每兩年計算能力會翻倍,區塊難度隨時間呈指數成長

* 因為計算能力呈線性成長,區塊鏈難度指數成長。因此雖然區塊鏈難度總會超越計算能力成長幅度,但是會有一段時間,算力可以輕易破解區塊鏈難度,因此有心人士可以利用這點在特定時間段進行攻擊。
* 同時若網絡中劇烈的少了很多計算能力,區塊創建速度會大大降低,所以有必要增加區塊難度
* Wallets
* 主要目的:保存私鑰
* 這些錢包故障或被攻擊,有些時候可能還能搶救(除非勾結)
* 以下可以協助不被破壞
* multi-signature address
* cloud storage system
* Smart Contracts vulnerabilities
* programming language weaknesses(Ethereum)
* 將區塊加到鏈上後,代碼錯誤會視永久性的
* solution:
* checking 審查機制=> 上鏈前對合約功能檢查
* 將智能合約限制效期,並公開
* Lightweight clients
* 僅包含區塊鏈
* 導致缺少很多重要信息ex.peers addresses & chain height
* 惡意節點會用偽造的鏈,說服lightweight它不是最長鏈
* several bloom filters 減少了安全性
* 為了減少bandwidth, light client 用 bloom filters 可能誤報
* adversary可以透過 filters 與client端 得知其 address
* 若遇到這個issue可能可使用anonymization 系統,例如:Tor,取改善
* Cryptography contravention
* ECDSA 和secp256k1 被認為是強大的加密方案, 但很快的可能將被private key harvesters 破解
* Attacks
這些攻擊場景可能在DLT上執行
* Transactions Security
* 區塊鏈安全取決於
* 加密方案
* keys management over the network網絡上的密鑰管理
* 使用digital signatures證實transactions 的真實性
* 每個交易都指向上一個交易。每個交易都在同級之間廣播以進行驗證
* =>使對手延遲消息傳遞
* 造成雙花
* 變成拒絕提供交易
* Moreover, a more recurrent example of exploitation consists in controlling the target user inbound and outbound connexions by implementing an eclipse attack.
* 通常在分叉過程中執行
* Spam attacks
寄垃圾郵件,使其他節點延遲。
* DDOS attacks
傳送大量request至其他節點,癱瘓他的運算能力,導致出塊延後。
* Malicious Contracts
* 智能合約無法處理code exception 和 procedures resturcturing(程序重組)
* 交易可能被delay或不準確
* 模擬 Re-entrancy 攻擊(使用Ganache)
* 在機器上有5個node 在 private blockchain上,並與Ethereum錢包簽署惡意智能合約(完成創建且已簽署)
目的:停止初始合約之前具有相同re-entry的功能
使用call function可以在他執行結束之前多次呼叫main contract,造成bugs
如圖,沒有花費就創建了合同(value=0.00ETH),而用戶損失了0.01ETH(Balance=99.99ETH)特定的gas被用在我們的PoC
只要攻擊者可以沒有代價的call function,這樣的行動會一直持續直到user的戶頭歸零或者是達到 [maximum call stack depth]

* Anonymity
* concept of channels
為了隔絕活動
不是每筆交易都用在鏈上
* 脫鏈最初構想:可擴展性目的有利於使用者保密性(users secrecies)
[Hyperledger network 或其他系統會創建私有鏈or聯盟鏈]
若執行得當,可characterize a state channel;若配置不好,會導致很多隱私及安全性問題
* 近期,ZK-SNARKs mechanisms 提供更多流程完整性和選擇性透明度,而不會損害隱私權
* Mining pools
* 加入礦池需要共識
採礦控制取決於hashing rates & number of confirmations.
* 在PoW共識中,這些參數不能減少風險
* 模擬:
針對比特幣網絡,允許攻擊者控制挖掘哈希的能力,從而進行其他惡意行為
* 模擬結果:
* 較低的確認金額將導致較高的風險水平 
* 擁有50%哈希值電力,對網路的控制及最長鏈的速度更快
* 這類型攻擊,例如:
* 特洛伊木馬竊取user machine power
* 使用 timestamp 依賴攻擊去操贈挖礦或新增Call stack depth限制並觸發gas限制循環
* Targeted DDoS attacks
* Timejacking attacks
#### Conclution
論文中概述了DLT的挑戰和攻擊場景。可視化PoW共識的風險。
DLT安全的程度,取決於私鑰被保護的安全程度
可能的對策:
* use recent timestamped address使用最近的timestamp
* utilizing it once使用次數限制
* inflicting衝突罰款
* connections filtering 連線過濾
* add time-outs to queries 新增timeout機制
* multiple auditing mechanisms多次審核機制
建議:
* 選擇最佳的model
* ex.法律,管理框架
#### Reference
J. Moubarak, E. Filiol and M. Chamoun, "On blockchain security and relevant attacks," 2018 IEEE Middle East and North Africa Communications Conference (MENACOMM), Jounieh, 2018, pp. 1-6, doi: 10.1109/MENACOMM.2018.8371010.(https://ieeexplore.ieee.org/abstract/document/8371010?casa_token=XsxSJxFQPAIAAAAA:QANqAZLvzR-YtqQJpjdB3wrpErByPCnXD_iYW8VhbJQU0VrW27Du4RARwsWV9tdcoE22sJoZH3k)