📜 [專欄新文章] A Secure State Channels Framework for Ethereum by Liam Horne 解析以太坊上的安全狀態通道
✍️ 田少谷 Shao
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Crosslink 第二天早上由 Liam Horne,狀態通道的主要開發團隊 L4 共同創辦人開場。本以為這場會提到筆者前一天晚上還看得霧煞煞的 Counterfactual ,沒想到這次的演講較為科普、以分享開發近況為主,也被以太坊基金會研究員 Chih-Cheng Liang 稱為最接地氣的一場!
何謂狀態通道?
比特幣的支付通道
若熟悉閃電網路,比特幣的支付通道是一個記錄支付行為的通道,只有開關通道時會接觸到區塊鏈。
假設A公司與B公司有頻繁的交易需求,兩方各自把 10 元放入支付通道中:
19:00 交易開始,兩方所擁有的錢: (10,10)
19:15 A->B 3元: (7,13)
20:10 B->A 7元: (14,6)
20:30 A->B 13元: (1,19)
21:45 B->A 4元: (5,15)
到了 21:45 時,交易結束,此時可以將交易結果 (5,15) 寫到區塊鏈上並分配結餘,而區塊鏈上有的紀錄就只有以下兩筆。
19:00 交易開始,兩方所擁有的錢: (10,10)
21:45 交易結束,兩方所擁有的錢: (5,15)
這代表著交易的結果能被記錄到區塊鏈上,卻大幅減少了要和區塊鏈互動的次數,不只可以降低交易雙方等待區塊鏈回應的次數與時間,也讓區塊鏈要處理的交易數量減少 。
以上只是提供一個很粗淺的例子,可以參考以下連結,精美圖示有助理解:
【動區專題】五分鐘看懂:圖說閃電網路 Ligntning Network
狀態通道 State Channel
由於狀態通道是在以太坊上,和比特幣的環境不同,所以實作方法不盡相同 (提示:UTXO),但本質上是相同的概念:只要牽涉到「狀態轉換 state-altering」,我們就能開一個通道讓交易參與者在通道中任意次數改變「狀態的值」,而最終將結果寫回區塊鏈上就好。
這邊我引用 Pelith 創辦人 Ping Chen 對於狀態通道精闢的解釋:
狀態通道通常是有別種邏輯疊在上面的通道 — 陳品
也就是說,相對於支付通道的邏輯就只是參與者虛擬貨幣的數量,狀態通道通常指的是該應用場景有自身的邏輯/規則。
舉例來說,在一遊戲中,玩家所擁有的虛寶就可以被視為是許多種狀態:遊戲中金幣及等級的是數值、但同時也是狀態;而 (0,1) 可以用來代表道具的擁有狀態 (沒有,有)。
假設一玩家 A 在遊戲中的起始狀態為 (電卷, 金牌, 鞍切, 金幣, 經驗值) = (0, 0, 0, 300, 1),隨著遊戲進行,虛寶/狀態的改變:
A 花費 100 金購買了金牌: (0, 1, 0, 200, 1)
A 首殺獲得 200 金、升兩等: (0, 1, 0, 400, 3)
A 花費 300 金用金牌合成了鞍切: (0, 0, 1, 100, 3) # 其實好像還要妖刀?xD
A 擊殺了 B 玩家,升一等: (0, 0, 1, 100, 4)
當玩家要登出、暫停遊戲時,最後的 (0, 0, 1, 100, 4) 就可以被更新到區塊鏈上,而下次登入時就會讀取這個區塊鏈上的狀態讓玩家繼續遊玩。
若了解了此例,就不難想像為什麼狀態通道被提出之時,遊戲以及虛擬貨幣的支付被視為最適合運用的兩個場景:給定參與者=玩家,在限定的場域中=遊戲,進行狀態的更新。
更多細節可以參考此一概念的提出人 Jeff Coleman 的解釋:點我
決策者 Mover
每一個狀態都有一位決策者,由通道中所有參與者輪流擔任。決策者透過對一狀態進行「簽署」來表達是否同意此狀態,也就是說狀態的正當性取決於當前的簽署是否來自正確的決策者。
狀態確認 Valid Transaction
狀態的先後順序是驗證狀態是否有效的方法。取決於應用的場景,有不同的實作方式。若簡單以一個計數器 counter 來實作,只要要求新狀態的計數值為舊狀態 +1,即可驗證。
state(N).counter + 1 == state(N+1).counter
關閉通道與終結性 Finality
當沒有更多交易或有參與者決定要結束交易時,只要全部參與者皆同意就可以關閉通道,ex: 給一 boolean 變數 isFinal,全部人都把自己的 isFinal 皆設為 true 就可以將通道關閉。
萬一有參與者半途消失了?Finality 終結性指的就是「每一個狀態都可以是最終的狀態」。假設部分參與者消失,只要有搭配的機制,例如:計時器,就一定會輪替到仍在線的人;即使參與者全部消失,當前的狀態因具備終結性,所以也能被提交為最終的狀態。
狀態通道實作的規劃與開發進程
Liam 將實作狀態通道的規劃劃分成上圖的六層:
Protocol & Contracts:
- State Progression Protocol
這邊就是上方的「決策者、狀態確認、關閉通道與終結性」。
除了以上所提及的內容,目前團隊也正在開發更方便的協議 Protocol Hardening:有別於交易的結束需要所有參與者的同意,目標是想做到「在特定時間內,任一參與者都能自行決定交易的推進或結束而不受其他參與者影響」。
- Channel Funding Protocol
此處是系統設計的另一個協議 Nitro Protocol,也就是如何開「子通道」,可以參考以下連結:
Nitro Protocol
Client & Hub:
- Client & Protocol Engine
這部分是講 Client 端彼此之間會傳送什麼訊息來進行溝通。
https://specs.counterfactual.com/en/latest/protocols/install-virtual-app.html#the-installvirtualappparams-type
- Client API & Wire Protocol
以下的 Github 專案就是將上方三部分的協議內容實作到網頁端:
counterfactual/monorepo
目前第一版的狀態通道已正在運行了,詳見下方額外學習資源的 Connext。Liam 列出了一些實作第二版時必須納入考量的點:
Robustly store states (i.e., guarantee no accidental money loss)
Automatic detection and responding to challenges
Ability to launch challenges directly with in-browser hooks
Go-to production quality hub software for apps and businesses to use
Browser Wallet UX:
- Wallet Integrations
這些是將狀態通道實作於現存的各種 Wallet 時,需要新增的內容:
https://github.com/counterfactual/monorepo/blob/d3b06b42710c0b7dd93839033cb43da9ac6e0a28/packages/types/src/node.ts
- Wallet UI
最後則是區塊鏈、也是所有新技術能否被廣泛使用的大哉問:該如何設計才能讓使用者有良好的體驗?
在此 Liam 提出實作 Wallet 時可以考慮的要點:
How should a user interact with a state channel?
What are the best patterns for acquiring user consent?
How much does the user have to trust the app?
To what extent can your channel wallet protect you?
What policies should a channel wallet be able to enforce?
額外學習資源
Liam 在本場演講及 Panel Discussion 中,都很鼓勵大家一起跳進來當開發者。他的大致建議如下:看懂相關文章、開發的要求 specs,就可以試著做做看。卡住的時候就到以下連結的討論區詢問他們,包含 Liam 在內的開發人員都會在上面回答問題:
State Channels - A community of state channels researchers from bitcoin, ethereum, and other blockchains
狀態通道的 Github:
State Channels
已成功實作第一版狀態通道的 Connext 專案:
Where will I be able to use v2.0 of Connext?
讓筆者看得霧煞煞的 Counterfactual ,可以進一步提升狀態通道的效率:
Counterfactual: Generalized State Channels on Ethereum
結語
本次演講實為筆者綜觀 Liam 在 Youtube 上的影片後,他對狀態通道最簡單、親民的一次演講,主要著重於介紹開發的進程、應注意的要點,也提供了初探此議題的新手很多學習資源、推坑大家加入開發的建議!
其實陳昶吾博士也曾於 Taipei Ethereum Meetup 詳細介紹過此議題(閃電網路為主),有興趣者可以看以下影片來得到更完整的認識:
最後,如果我的文章有幫助到你/妳,可以看看我的其他文章,歡迎大家一起交流 :)
田少谷 Shao - Medium
一如往常,感謝 Yahsin Huang 及 Chih-Cheng Liang 幫忙審稿,辛苦了!也特別感謝 Ping Chen 耐心回答素未蒙面的我的問題!!
A Secure State Channels Framework for Ethereum by Liam Horne 解析以太坊上的安全狀態通道 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
同時也有1部Youtube影片,追蹤數超過1萬的網紅鍾日欣,也在其Youtube影片中提到,我是JC老師 電腦相關課程授課超過6000小時的一位 Photoshop 課程講師 由於實在太多同學像我反映希望可以有線上課程學習 所以就決定錄製一系列的 Photoshop 線上影片教學 而且不加密、不設限、不販售,就是純分享 希望可以幫助到有需要的朋友們 這系列 Photoshop 教學影片...
雙切開關圖示 在 Huawei Mobile Facebook 的精選貼文
HUAWEI MediaPad M3 (4G版)開放更新囉!
這次的更新讓你的MediaPad M3 (4G版)帶來更強勁的性能!趕緊來更新吧 🎈
👉開放更新時間:
從今日起陸續開放,預計12 月28日開放全網。
👉OTA開放版本:
版本升級從From BTV-DL09C209B011(Android 6.0 版本) & BTV-DL09C209B307(Android 7.0 版本) 到 BTV-DL09C209B308 (Android 7.0 版本)
👉升級內容通知:
親愛的使用者,安卓 7.0 系統升級帶來了全新變化,本次升級是為搭配安卓 7.0 版本的 EMUI 系統升級,系統版本號將升級至 EMUI 5.0。
EMUI 5.0 全新 UI,源自愛琴海的純淨藍白設計,介面互動簡潔靈動;更強勁的性能,讓平板運行更流暢。
🌸優化內容 🌸
• 更簡潔的互動介面
全新 UI,整體色調與動畫效果靈感源自藍白相間的愛琴海;介面操作簡化,大部分的操作可在三步驟內完成;保留安卓系統原有的程式集桌面
• 更強勁的性能
系統運行更流暢,瀏覽海量圖片、網頁、搜尋查詢快人一步
• 通知欄
最佳化設計,快捷開關與通知合一,減少跳轉操作;長按通知可快速隱藏通知訊息;卡片式立體呈現,節省空間
• 立體層疊式工作管理員
各任務立體層疊式呈現,上下滑動,流暢動感,左右滑動刪除任務
• 相機
新增外掛程式化管理功能,非常用模式則以外掛程式形式呈現
• 聯絡人
新增個人名片定制功能;新增名片主動分享功能,可透過快速分享、藍牙、Facebook 等各種方式進行分享;全域搜尋框和螢幕鎖定介面新增掃一掃,掃描新增聯絡人更方便
• 郵件
最佳化收件箱未讀標記;最佳化左滑功能表,可對郵件快速刪除、標星、標記已讀或未讀
• 設定
新增建議設定項,根據設備目前狀態,給您推薦未完成的關鍵設定項,讓您的平板更符合您的習慣;
新增桌面程式集功能,開啟後,將桌面非系統預設應用程式圖示隱藏於主介面的程式集鍵中,還您清爽整潔的桌面;
新增設定程式集功能,雙層及更深層路徑,可直接返回設定主介面,切換一步到位;
新增緊急資訊,可新增諸如姓名、血型等資訊,以便緊急連絡人在螢幕鎖定介面查看此資訊
新增護眼模式相關功能,可手動調節螢幕色溫,有助於緩解眼睛疲勞
⚠更新注意事項⚠
1. 本次更新不會刪除您的使用者資料,但仍建議您在更新前做好資料備份。
2. 更新完成後系統將重新開機,請您耐心等待 5 分鐘左右。
3. 更新過程中,如果遇到任何問題,請洽詢華為客戶服務專線 0800-888-575。
4. 為了讓用戶更新過程更順暢,本次採批次更新,請耐心等候,若逾時尚未收到更新通知,請洽華為客戶服務專線0800-888-575。
5.EMUI 5.0 操作方式有較大變化,可能會影響您的使用習慣,詳細操作可進入「會員服務」查閱使用手冊。
雙切開關圖示 在 Huawei Mobile Facebook 的最佳解答
HUAWEI MediaPad M3開放更新囉
這次的更新超豐富,趕快讓你的M3平板更佳優化吧!
👉開放更新時間:
從今日起陸續開放,預計7月17日全網開放。
👉升級通知內容:
親愛的使用者,安卓 7.0 系統升級帶來了全新變化,本次升級是為搭配安卓 7.0 版本的 EMUI 系統升級,系統版本號將升級至 EMUI 5.0。
EMUI 5.0 全新 UI,源自愛琴海的純淨藍白設計,介面互動簡潔靈動;更強勁的性能,讓平板運行更流暢。
👉【推薦】
• 更簡潔的互動介面
全新 UI,整體色調與動畫效果靈感源自藍白相間的愛琴海;介面操作簡化,大部分的操作可在三步驟內完成;保留安卓系統原有的程式集桌面。
• 更強勁的性能
系統運行更流暢,瀏覽海量圖片、網頁、搜尋查詢快人一步。
👉【瞭解更多】
• 通知欄
最佳化設計,快捷開關與通知合一,減少跳轉操作;長按通知可快速隱藏通知訊息;卡片式立體呈現,節省空間。
• 立體層疊式工作管理員
各任務立體層疊式呈現,上下滑動,流暢動感,左右滑動刪除任務。
• 相機
新增外掛程式化管理功能,非常用模式則以外掛程式形式呈現。
• 聯絡人
新增個人名片定制功能;新增名片主動分享功能,可透過快速分享、藍牙、Facebook 等各種方式進行分享;全域搜尋框和螢幕鎖定介面新增掃一掃,掃描新增聯絡人更方便。
• 郵件
最佳化收件箱未讀標記;最佳化左滑功能表,可對郵件快速刪除、標星、標記已讀或未讀。
• 設定
新增建議設定項,根據設備目前狀態,給您推薦未完成的關鍵設定項,讓您的平板更符合您的習慣。
新增桌面程式集功能,開啟後,將桌面非系統預設應用程式圖示隱藏於主介面的程式集鍵中,還您清爽整潔的桌面。
新增設定程式集功能,雙層及更深層路徑,可直接返回設定主介面,切換一步到位。
新增緊急資訊,可新增諸如姓名、血型等資訊,以便緊急連絡人在螢幕鎖定介面查看此資訊。
新增護眼模式相關功能,可手動調節螢幕色溫,有助於緩解眼睛疲勞。
👉【升級前注意事項】
1. EMUI 5.0 操作方式有較大變化,可能會影響您的使用習慣,詳細操作可進入華為官網「技術支援」查閱產品手冊。
2. 本次更新不會刪除您的資料,但建議您在升級前做好資料備份。
3. 如果在更新期間遇到任何問題,請記錄下設備相關資訊,並洽詢華為客戶服務專線0800-888-575。
4. 升級完成後系統重新開機,請耐心等待 10 分鐘左右,升級成功後平板桌面顯示 EMUI 5.0 預設主題。
5. 由於部分第三方應用程式與Android 7.0不相容,因此升級後可能會出現第三方應用程式無法正常使用的情況。建議您在Google應用程式市集搜尋下載該應用程式的最新版本。
6. 此版本可以還原至 EMUI 4.1 官方穩定版本,還原過程會清除使用者資料。詳細資訊,請撥打客戶服務專線0800-888-575諮詢。
雙切開關圖示 在 鍾日欣 Youtube 的最佳解答
我是JC老師
電腦相關課程授課超過6000小時的一位 Photoshop 課程講師
由於實在太多同學像我反映希望可以有線上課程學習
所以就決定錄製一系列的 Photoshop 線上影片教學
而且不加密、不設限、不販售,就是純分享
希望可以幫助到有需要的朋友們
這系列 Photoshop 教學影片
是由初學到深入,專為初學者設計
後半部進階內容與範例並非一般商業用途
而是針對 Photoshop 與 3ds Max 之間的整合教學
包含無縫貼圖製作、建築合成調色、室內設計合成調色、遊戲貼圖製作方面
如果這部影片對你有幫助的話,請幫我按個讚,給我點鼓勵
也多分享給需要的朋友們喔~
Photoshop CC 2020 線上教學影片目錄:http://bitly.com/2u0WwWG
Photoshop CC 2020 線上教學影片範例下載:http://bitly.com/2FTNygJ
JC-Design 網站:http://jc-d.net/
JC-Design 粉絲團:https://www.facebook.com/jcdesigntw/
JC-Design LINE ID:@umd7274k
---------------------------------------------------------------------------------------------------
圖層:
● 圖層就像是堆疊的透明玻璃紙,可供您在其中建立影像。您可以看穿某個圖層的透明區域,直接看到下面的圖層。您可以個別處理每個圖層
● Photoshop 圖層的運作方式,就好像是將一張張透明片堆疊在一起。您可以透過圖層的透明區域,看到下面的圖層。而且,就好像在一疊透明片中抽換透明片的前後位置一樣,您可以根據圖層的內容來排列圖層的位置。您還可以變更圖層的不透明度,讓圖層變得稍微透明些。
● Photoshop 中的「圖層」面板會列出影像中的所有圖層、圖層群組和圖層效果。您可以使用「圖層」面板顯示及隱藏圖層、建立新圖層,以及使用圖層群組。您也可以在「圖層」面板選單中存取其他指令和選項。
● 圖層類型
▲ 背景圖層、影像圖層、文字圖層、填滿圖層、調整圖層
● 背景圖層:
▲ 不可移動,不能有透明度,雙點兩下可轉為一般圖層
▲ 轉換背景與 Photoshop 圖層
▲ 將背景轉換為 Photoshop 圖層:請在「圖層」面板中按兩下「背景」。
▲ 將 Photoshop 圖層轉換為背景:選取圖層。選擇「圖層 /新增 / 圖層背景」。
● 圖層按鈕
▲ 刪除圖層
▲ 新增圖層
▲ 群組圖層
▲ 圖層不透明度
▲ 圖層連結
▲ 圖層鎖定
▲ 圖層填滿
▲ 圖層混合模式
▲ 圖層樣式
▲ 填色調整同層
▲ 圖層遮罩
● 群組圖層
▲ 新建群組
▲ 巢狀式群組
● 複製 Photoshop 圖層
▲在「圖層」面板中選取一個圖層或群組。
▲執行下列任一項作業:
▲將圖層或群組拖移至「建立新圖層」按鈕 。
▲從「圖層」選單或「圖層」面板選單中,選擇「複製圖層」或「複製群組」。輸入圖層或群組的名稱,然後按一下「確定」。
● 圖層操作
▲圖層順序
▲圖層開關
▲圖層刪除
▲圖層命名
▲圖層合併
▲圖層平面化
● 圖層鎖定
▲ 鎖定透明像素
▲鎖定影像像素
▲ 鎖定位置
▲ 防止自動嵌套進
▲全部鎖定
● 圖層移動
▲自動選取圖層
▲圖層混合模式
● 圖層樣式
▲Photoshop 提供各式各樣可更改圖層內容外觀的效果,例如陰影、光暈和斜角。
▲圖層效果會連結到圖層內容。當您移動或編輯圖層內容時,相同的效果會套用至修改後的內容。例如,如果您將陰影套用到文字圖層,然後又新增文字,陰影就會自動加到新增的文字。
▲圖層樣式是指套用至圖層或圖層群組的一個或多個效果。您可以套用 Photoshop 所提供的其中一個預設樣式,或者也可以使用「圖層樣式」對話框建立自訂樣式。
▲圖層效果圖示 會顯示在「圖層」面板中圖層名稱的右邊。您可以在「圖層」面板中展開樣式,以檢視或編輯構成此樣式的效果。
▲您可在單一圖層樣式中套用多種效果。此外,有些效果的多個範例可以包含圖層樣式。
---------------------------------------------------------------------------------------------------
==延伸線上教學連結==
Photoshop CC 2017 線上教學影片目錄:http://bit.ly/2A9PH3B
3ds Max 2015 線上教學影片目錄:http://bitly.com/2dUGqn3
AutoCAD 2015 2D 線上教學影片目錄:http://bitly.com/2dUGm6Y
TQC AutoCAD 2008 2D 線上教學影片目錄:http://bitly.com/2dUGQtB