工程師視角:什麼是區塊鏈的 Smart Contract?

「什麼是 Smart Contract 呢?Smart Contract 名字上聽起來很玄,如果你是第一次接觸區塊鏈的工程師,其實 Smart Contract 就是一個運行在區塊鏈 VM 上面的 instance。」
評論
Photo credit: @goran_ivos on Unsplash
評論

原文刊登於 Taipei Ethereum Meetup 的 Medium,INSIDE 依照 CC BY-SA 4.0 轉載。作者 Yuren Ju 為 Taipei Ethereum Meetup 社群成員,除了咖啡與旅遊外,也喜歡動手寫程式解決自己或別人在生活中遇到的疑難雜症,最新的興趣是探索區塊鏈的可能性。

投入區塊鏈社群以及產業一小段時間了,跟工程師朋友們聊到區塊鏈的去中心化架構時,朋友們多半是一頭霧水。今天想試著透過工程師們比較容易理解的角度來解釋一下區塊鏈領域經常被提到的一個名詞:Smart Contract (智慧合約或譯作智能合約)。希望有助於工程師朋友們了解區塊鏈技術。

先提醒一下以下的內容解釋的都是針對 Ethereum (以太坊) 區塊鏈,其他的區塊鏈不見得有 Smart Contract 的概念。

一般的程式如何被執行?

開始解釋 Smart Contract 前想來聊聊更基本的事情:一段程式是怎麼被執行的。當你寫了一段 Java、Python 或是 JavaScript 的程式,它會怎麼被執行呢? 假設我們在寫一個賣票程式,可能會需要一個 MeetupEvent 的類別 (Class),內容如下:

https://gist.github.com/yurenju/284cfb127a8ba9de07eb8e007acca317

這段 Java 程式的執行方式,一般來說源碼會經過 Java 編譯器轉譯成 Bytecode 之後,透過 JVM (Java Virtual Machine) 在電腦中執行。當這個程式在執行時 main() 將會建立一個類別的 instance event,此時這個 instance 將會儲存在記憶體裡面,並且可以透過我們定義的方法如 register()  操作這個 instance,直到整個程式結束。

不管是寫 Java, Python, JavaScript 或其他較為高階的語言,實作上的細節根據不同程式語言會有差異,但是大致上的情形都會是這樣,相信工程師們對這樣的運作架構也耳熟能詳。

Smart Contract

讓我們再回到我們的主題:什麼是 Smart Contract 呢?Smart Contract 名字上聽起來很玄,如果你是第一次接觸區塊鏈的工程師,其實:

Smart Contract 就是一個運行在區塊鏈 VM 上面的 instance。

更精確地來說,在 Ethereum Blockchain 上面 Smart Contract 運作在 Ethereum Virtual Machine (EVM) 上面。同樣的 MeetupEvent,我們改用 Smart Contract 的程式語言 solidity 重寫一次:

https://gist.github.com/yurenju/8598564c516facd734834a51df3fc191
https://gist.github.com/yurenju/8598564c516facd734834a51df3fc191

這段就是被稱作是「Smart Contract」的程式,你可以把它當作是一個類別 (class)。要使用這段程式的時候,它必須被部署 (deploy) 到區塊鏈上,上面這段程式會被創造出一個 instance,而這個 instance 將會被放在區塊鏈上。下圖這個 Ethereum VM 則會運行在每一個 Ethereum 節點上面。一旦合約部署成功時會得到一個地址,它就像記憶體位置一樣,取得這個位置後搭配正確的 interface 資訊就可以執行這個合約。

在區塊鏈上所有人都可以呼叫這個 smart contract 所開出來的函式 (function)。當然因為它就是一段程式,你也可以寫些邏輯來做權限控管。以我們這個程式的例子,可以執行的函式就是 register()。這樣說起來,除了 Smart Contract 是跑在區塊鏈上以外,其實他就是一個 instance,跟使用其他程式語言上的 class instance 沒有太大的差別。

而區塊鏈 VM 上跑的程式(也就是 Smart Contract)跟一般 VM 上跑的程式,最不一樣的地方就在於去中心化架構。

在一般程式的架構中,不管那個服務用了分散式運算、load balance 加上多台伺服器或是只在一台機器上面跑,本質上這些伺服器(或說是運算單元)全部都是由單一組織掌管,這樣的架構行之有年,也運作得很好。但這樣的架構下,如果你需要做任何「價值交換」的應用,免不了都要中間人的介入。

在以前只能當面交易的年代,所有東西都是一手交錢一手交貨。需要更方便與有效率的交易時,出現了掮客幫你轉交物品跟金錢的行業,當然這位中間人需要取得雙方的信任。

最終銀行、信用卡公司、金流公司類似的概念逐漸興起,使用者也需要信任銀行或信用卡公司時,這樣的模式才行得通,而搭建在上面的「信任」是國家透過合約、法律約束各式各樣的公司,一層一層的信任關係就這樣搭建起來。

你跟網路上的某人交易可以成功,其實背後是一層層的中間人與信任關係。

回到最根本之上,就是「信任」問題。而區塊鏈與 Smart Contract 則是試圖透過去中心化的架構來解決這問題。 不同於一般程式的中心化架構,在 Ethereum 區塊鏈中,如果你想要透過協助別人執行他們的 Smart Contract 獲得獎勵,你可以安裝 ethereum node 的軟體如 go-ethereum 或是 parity,並且開啟礦工模式即可。要成為一個礦工並不需要經過誰的同意,而當礦工在 Ethereum 區塊鏈會有挖礦獎勵回饋以及使用者給礦工的交易費。

如此一來 Ethereum 的去中心化節點網路就這樣建構起來了。當你部署一個 Smart Contract,或是發起一筆交易來改變區塊鏈內的狀態時,會需要付出交易費,這筆交易費最終則會由礦工收走作為獎勵之一。

更棒的是 Ethereum 區塊鏈是一個內建數位貨幣金流的平台,開發者可以非常容易的利用在區塊鏈上內建的數位貨幣金流系統來搭建各式各樣的去中心化應用 (Decentralized app, Dapp)。 你跟網路上的某人交易時,如果透過 Smart Contract 雙方先押了一筆保證金在合約裡面,是不是就可以在沒有中間人擔保的狀況下讓確認交易可以執行呢?內建數位貨幣金流系統,搭配上公開的 Smart Contract 內容(也就是源碼),以前透過現實生活的「合約」來解決的信任問題,就可以重新思考是否可以透過 Smart Contract 解決。

話說回來,區塊鏈跟 Smart Contract 都還在非常早期的發展,說不定現在發現的問題比解決的問題還要多(笑)。我不覺得區塊鏈是銀彈,突然之間就可以解決以往龐大複雜的問題。不過我真的很期待去中心化的思維可以回頭來思考我們已經做過的服務,有哪些可以再透過去中心化架構,提出新的解決方案。

如果你對 Ethereum 區塊鏈有興趣,不妨來參加 Taipei Ethereum Meetup,這是一個討論 Ethereum 區塊鏈的技術社群。我們每個月會有一次到兩次的技術分享,歡迎大家一起來研究去中心化的世界!

延伸閱讀:


零售業瘋跨域,深耕各式消費者的全零售時代到來!

PChome 24h 購物的 Z 世代及壯世代的用戶不斷增長,足見 PChome 24h 購物運用過去幾十年來的網路零售經驗穩紮穩打,以綜合型電商角色分眾溝通不同的消費者,豐富品牌風格調性,也把握客群黏著度。
評論
photo credit:爆米花數位
評論

根據資策會《 2021-2022 民生消費數據力大調查》報告,2022 年零售業在相關服務或產品的投資成長最大,從各個品牌的布局來看,這兩年零售業不斷推出新店型或是跨域結合,不管是原先產業別、市場、線上線下的界線都不斷被消弭,往全通路邁進。

跨產業-從女性搶攻家庭客 寶雅也賣五金、3C!

原先以美妝生活用品在女性市場打出一片天的寶雅,在去年也開始拓展旗下商品及服務,推出主打複合式居家用品的電商平台,更橫跨 3C 家電,此外更成立 Youtube 頻道《寶家 POYA HOME 》教導民眾如何運用商品自行解決居家修繕。

photo credit:Poyahome YouTube頻道
寶雅拓展觸角,從女性生活用品搶攻複合式居家用品市場,更開設 Youtube 頻道居家修繕教學。

跨市場-個人化需求激增 超商跨足生鮮快商務

看好個人化及小家庭需求,統一超商也開設 open now 便利快超市,以生鮮為主要販賣品項,擴大肉品、海鮮等生鮮商品,也與旗下 foodomo 串接外送服務,搶攻市區的生鮮需求,未來更可能複製類似店型更多進入社區。全家便利商店也跟進 711 開設社區生鮮便利新店型「 Famisuper 」,選址在台北市大安區及新竹竹北的住商混合都會區。新店型專攻小份量、易保存的生鮮商品,也配合都市生活習慣,包括冷凍法式料理及常溫酒櫃(紅酒、白酒、燒酒……)。另外近期也在板橋開設新店,更針對「快行動」、「懶商機」和「綠生活」等目標開發許多新服務,如首創 APP 訂便當功能,與在地商圈便當品牌合作,可以到全家取貨現做便當,除此之外也導入保溫餐食智能取貨櫃,讓保溫延長,不用擔心錯過用餐時段。此外也因疫情網購興盛,並開發了 EC 自助寄取功能,還有雙溫功能,讓民眾可以自助拿取包裹,減少等待時間。生鮮快商務市場越來越熱,零售商們也前仆後繼投入,紛紛針對都市型態消費推出新模式。

photo credit:shutterstock
為搶攻個人化及小家庭市場,統一超商與全家便利商店不斷開設新店型,也投入生鮮快商務市場。

跨線上線下-疫情渴望接觸 電商開店平台協助開拓全通路布局

電商開店平台 shopline 近期在台北誠品生活南西店開設實體概念店,集結30間人氣電商品牌,推出三個月快閃實體店,並根據不同波段推出不同主題,如第一波毛孩超市以寵物用品及品牌為主、第二波潮時尚伸展台以穿搭潮流品牌為主,第三波則以城市野餐為主題,販賣戶外露營野餐用品。此外各檔期也與公益團體合作,並搭配社群活動獲得 IP 贈品,企圖吸引更多消費者上門。一般消費者對於電商購買的疑慮就是沒有辦法接觸到實品, Shopline 的做法幫助電商品牌有實際接觸到消費者的機會,開發更多的消費者,對於品牌和電商平台而言是雙贏。

大型電商平台穩紮零售經驗 深耕跨域消費者

根據經濟部統計處的統計,電商市場的銷售成長率又優於整體零售業,原先以 3C 商品打下電商版圖的 PChome 24h 購物,近年來也不斷深耕各類消費者市場,根據內部觀察,35-44 歲的消費者躍升為今年消費最活躍的族群,年成長率近 30%;18-24 歲Z世代也有明顯成長,年成長率近 20%,2022 年整體消費者結構年輕化。掌握這些趨勢, PChome 24h購物也在接下來的檔期調整策略,深耕跨域消費者。以往用首創分會場的情境式購物吸引消費者,今年五月檔期又再進一步讓分會場界限消失,以不同角色類型的媽媽區分,給予消費者送禮建議,從 3C 到美妝通通都有,集結不同品類商品,在會場內也藉由產品跨域來滿足消費者不同需求!「520」5月20日檔期也將目標受眾擴及到所有想表達愛的對象,以柔性訴求來溝通跨域消費者,不同於過往市場單純向女性或媽媽背景的消費者喊話,有機會持續提升新客群。

photo credit:爆米花數位
PChome 24h 購物深耕各類消費族群,柔性訴求也是行銷溝通的重要策略之一。

除此之外, PChome 24h 購物今年也特別與皓式宅食工作室跨域合作,推出「藍帶主廚到你家」饗宴料理餐盒,讓消費者在今年母親節不用冒著疫情的危險出門慶祝,在家也能享受星級料理,滿足高消費族群的精緻味蕾。另外,也推出「 Lofi Mom 」特別企劃,將媽媽的叨念聲如「出來吃飯!」、「又把家當飯店!」等熟悉的語句融入 chill beats 中,搭配日系動畫並結合母親愛用好物進一步呈現商品,嶄新的跨域行銷手法令人耳目一新!

photo credit:爆米花數位
PChome 24h購物推出「Lofi Mom」特別企劃,結合媽媽的碎念及 Chill beats,引起異鄉遊子共鳴。

在這些操作下, PChome 24h 購物的 Z 世代及壯世代的用戶不斷增長,足見 PChome 24h 購物運用過去幾十年來的網路零售經驗穩紮穩打,以綜合型電商角色分眾溝通不同的消費者,豐富品牌風格調性,也把握客群黏著度。

無論是實體或是電商起家的零售業不斷在嘗試跨域,提供更多通路和服務,未來的全零售時代將會提供消費者什麼樣的新局面,讓我們拭目以待。

本文章內容由「爆米花數位」提供,經關鍵評論網媒體集團廣編企劃編審。