近日在學習區塊鏈相關的知識
但拜讀到一文章後,反而產生了困惑,跟所認知的「區塊鏈」有落差
對「區塊鏈」涉獵還在很初淺的階段,所以看各位先進、大神是否有指導或可以參考的方向
文章是財金資訊的90期季刊 (https://www.fisc.com.tw/TC/Knowledge?CAID=ffea3360-1dae-49f0-ae9a-ef64571057a2)
裡面的「如何建置一個實用的區塊鏈平台」主題 (https://www.fisc.com.tw/Upload/b0499306-1905-4531-888a-2bc4c1ddb391/TC/9006.pdf)
文章對於「區塊鏈」中心化與去中心化的說明
但我的想法,這不是比較像「分散式架構」,而非「區塊鏈」的去中心化,甚至只是範圍更大的集中式架構
還是可以把智能合約比做文章所說的中央化的概念?
文章44頁最後面所說的「POW 演算法」,是藉由比較兩個區塊被挖掘時的困難度,決定區塊的去留;困難度高的留下,困難度低的捨棄
但「區塊鏈」的新區塊,不是是已各節點誰先算出來決定嗎? 文章的說法無法體會
區塊鏈從一開始就是這樣發展的,至今也還沒改變過太多的系統架構,
管理=>集中 , 服務=>分散 ,雖然你給的文章說明的還算清楚,
但是其實也沒辦法把全部的東西都細講,裡面提到傳統銀行的部分沒有寫細節
所以你感覺不到差異,如果拿 區塊鏈 來比喻的話,傳統銀行剛好是顛倒的
傳統銀行
管理帳戶=>分散
, 提供服務=>集中
區塊鏈
管理帳戶=>集中
, 提供服務=>分散
如果將分散式架構導入傳統銀行只會是災難,我盡量縮短重點讓文章不要太長
以兩家銀行來說,假設A銀行是傳統銀行,B銀行是區塊鏈銀行
他們在台北與高雄各開一個服務據點,假如有個X客人到台北銀行存了100元
然後再到高雄銀行轉帳給Y客戶100元,從系統的觀點上來看這服務是怎麼運作的?
傳統銀行 管理帳戶=>分散
, 提供服務=>集中
高雄銀行系統沒有X客戶的資料(管理)=>
連線到台北銀行系統確認X客戶資訊(服務)=>轉帳到Y客戶(服務)
如果這時候在台北導入50個分散式系統,將 服務=>集中
變成 服務=>分散
高雄銀行系統沒有X客戶的資料=>連線到台北銀行系統確認X客戶資訊=>轉帳到Y客戶
台北銀行系統某台資料X客戶-100元Y帳戶+100元的資訊必須要同步到50台銀行系統內,
並且某台同步不成功的話,那請問執行轉帳Y客戶的步驟到底要不要算它成功?
這時候分散式架構不止幫不上忙反而還幫倒忙,
越多機器只是服務的接口穩定性越高沒錯,但是一旦牽扯到資訊同步就會完蛋
那將視角轉到 區塊鏈 上,看他怎麼解決的?
X客人到台北銀行存了100元=>寫入區塊鏈帳本(公開)=>高雄銀行區塊鏈帳本同步=>
客戶到高雄轉帳=>銀行系統有X客戶的資料=>執行X客戶-100元與Y帳戶+100元資訊=>
丟到台北50台銀行系統上執行=>超過半數以上執行的結果一致=>寫入區塊鏈帳本(公開)=>
X客戶轉帳交易完成。 要注意這邊從頭到尾沒有在交易(服務)的的部份做同步
區塊鏈的分散節點的作用除了服務不中斷以外,另外一個重點是防堵惡意串改(假資訊)
至於「POW 演算法」的部份,應該是寫錯的,並不是難度高的保留低的難度捨棄,
通常會被捨棄的,應該是同一區塊佔比數低的被捨棄,
假設今天區塊高度第十萬筆記錄好了,交易傳下去給十萬台節點計算,
出現了ABC結果3種,A結果有9.5萬台,B結果2000台,C結果3000台
這時候A結果寫入區塊鏈帳本(第十萬筆),B與C的結果就會被捨棄。
有很多大神都有發區塊鏈的文章,可以參考一下
https://ithelp.ithome.com.tw/search?search=區塊鏈&tab=article
關於 "管理=>集中" 這就是我的疑惑
那這樣不是就很像集中式架構(類似ERP),這樣有甚麼差別?
而區塊鏈一直再提去中心化,這樣不就是有點矛盾? 還是去中心化就是指服務去中心化?
厚厚 基本上,不要用傳統觀念看現在的服務,除非你打算從無到有,你以為ERP是集中式架構,但是你使用ERP服務的時候,你能確定它的資訊流、金流、物流是怎麼跑的嘛,當跨系統跨區域的時候,服務所需要的資訊絕對不會集中在某個地方給人存取,不同地方的資訊他需要一個協定來整合給使用者,這才是區塊鏈本身的核心架構,所有的系統都能去中心化,為何不,很大的原因都在於投入成本問題而已
厚厚其實區塊鏈最好是把前後端的觀念導入進去一起看,會比較好理解跟分析不同系統的優缺點,通常前端代表服務的接口(網頁或者是銀行櫃檯),後端負責處理前端接收到的資料(資料庫或者銀行裡面的金庫),前端在提供使用者服務的時候,也必須到後端去讀取目前這個使用者的資料,但是一般人是不會認為前後端是需要分開來看的東西。
謝謝兩位說明
但會舉例ERP或是所謂的核心系統,就是發現怎麼區塊鏈的架構好像現在的集中式(都會有個核心,但前台服務可以各自發展網站,利用API去核心進行中心資料的異動),還是這種已經不能算是集中式了
然區塊鏈一直強調的是去中心化,但實際上其實又是極度的中心化
也就是這樣一直不能體悟"去中心化"所要傳達的概念
區塊鏈的優點是當某個節點掛了 ( 例如 ERP主機 ),不代表這各節點經手的交易全部失效,或是進行中的交易跟著失效,使用者不會察覺目前得到的服務來自於哪各節點,但只要進行資料交換,交易一定會完成,而且被記錄,大致上是這樣的觀念,以往的中心化是要把資料都集中到某一個地方的主機上,但區塊鏈不是這樣的架構,它的資訊是分散而且同步的,因此要構成區塊鏈網路他需要的不只是一台主機,而是數個節點,而每個節點可能就是一個機房,包含著可觀數量的主機再運作,所以區塊鏈才會一直強調他的架構是去中心化,避免單一節點,單一主機的毀損或是資料正確性的不可驗證等等狀況造成資料或是服務的不可信任,使交易失敗,上面是個人認知,如有錯誤還請大神指正,相互學習。
厚厚我不知道你的ERP系統包含了多少前後端架構?
所以沒辦法將ERP導入區塊鏈解釋讓你了解,
如果用目前還在運作的比特幣區塊鏈好了,
其實每個節點都還包含了區塊鏈的帳本資料,
所以每個前端服務的節點都有後端資料在裡面,
只要你想要上線當區塊鏈的節點,
那你的第一步驟就是同步帳本,
只有你的帳本資料與區塊鏈帳本資料是一致的你的節點才能上線,
這也是為什麼很多人搞不懂到底哪裡集中? 哪裡去中心化? (分散),
集中的是區塊鏈帳本,它只能有一個,
但是帳本資料卻是分散在所有節點上都有一份可以用,
它就像電影魔鬼終結者裡面的天網一樣,
只要還有一個節點還活著,它本身的系統就不會死透,
而且還可以不斷的被複製出去產生新的節點出來,
只要有任何人還保存著比特幣系統的節點資料,
這個系統隨時都可以復活並且活得好好的,只是在節點數過少的情況下
比特區塊鏈它的資安防護就會破功,因為節點不夠多的時候,
可以簡單的竄改它的交易資訊。
感謝兩位指點,讓架構部分有點理解了
想另外請教,當有新的規則(或邏輯或規範...)
集中式很單純的是修改本身(核心)程式的邏輯
但區塊鏈是修改所謂的智能合約?
那這樣合約的異動也是通過POW去決定?
還是合約就是不可變的? 那這樣發行幣還能理解,但作為系統不是很不適合嗎(因為一定會有修改需求)?
智能合約是從乙太網區塊鏈出來的,
比特幣的區塊鏈不能是算智能合約,
簡單來說智能合約有分可異動與不可異動的部份
從用戶的部份來說不可異動的只能新增一次
新增之後再也無法修改,可異動的部份可以多次修改
至於你的程式碼在智能合約裡面越多代表你需要花費
越多的 (GAS FEE),也就是手續費,
現在乙太幣區塊鏈已從POW轉成POS了
但是邏輯不變,多數結果者寫入區塊鏈帳本
比特幣的區塊鏈目的是"去中心化金融系統"
乙太幣的區塊鏈目的是"去中心化的EVM虛擬機"
兩者一開始系統的目的是不同的,智能合約算是乙太網的東西
POW 演算法那段應該是想說明最長鏈原則
只要算出來的區塊都可以接上原本的鏈 造成暫時性的分岔(軟分岔)
但最終只會留下最長的鏈(困難度高)
https://academy.binance.com/zt/articles/what-is-blockchain-network-congestion