BlockChain and Contract
Github
前言
有鑑於現在世界過度中心化,像是資料透過HTTPS協議存於某數據中心、資金交由銀行管理,抑或合約交給第三方機構授權或存放,皆充滿安全疑慮及資料保存問題。故本組決定藉 Google Solution Challenge的機會,利用區塊鏈的特性改善傳統合約存儲的缺點,達到安全、省時、省力之功效,同時思考如何實際幫助社會
App介紹
名稱 :
與你相鏈
後端流程概要:

實現:
框架 :
flutter
語言 :
前端 / 後端 / 智能合約 : dart / Firebase / solidity
額外技術 :
Google Cloud Platform
實際操作流程 :
- 若有甲乙兩方欲上傳合約,在甲方選定好欲上傳檔案、填完資料後,會進入兩階段驗證,需待乙方同意其正確性後,再由甲方進行上鏈。此過程結合Firebase,達到資料暫存、寄發通知及驗證階段同步的功能,並透過API抓取簽署及上鏈時間。如此一來,使用者可以清楚得知各項所需資訊。
(下圖為操作流程)

- 檔案會先上傳至IPFS。IPFS利用hash加密每個檔案並採P2P儲存模式,可視為去中心化且較為安全的HTTPS。上傳成功後,後端會將回傳值CID(可用來找尋在IPFS上的檔案)及其餘資料儲存在每個合約專屬的NFT,並進行上鏈。如此一來,在區塊鏈(我們使用Goerli測試鏈)即可查詢到相關檔案。在App內,也可透過mint到的區塊編號,查詢自己的合約內容。

選擇此主題原因
在12月深入研究區塊鏈時,我發現現今相關應用不外乎圍繞其三大特性:不可竄改、去中心化、公開透明。首先,藉由如同Linked List的結構,每個區塊連接並紀錄上個區塊加密過的時間戳記,以實現可溯源性,同時結合最長鏈共識,達到難以竄改(但不排除51%攻擊的可能性)。又由於使用分散式帳本技術,所有節點(電腦)都存有相關鏈及資料,使整體運作模式更加安全。最後,最重要的「智能合約」讓一切交易自動運行,省去了許多傳統交易上的不便。 有何事物能藉區塊鏈的特性來改善?「儲存合約」可謂相當合適。傳統簽署合約需要第三方機構驗證,才能使其具有效益,如右下圖。然而運用智能合約,簽約人可以省去第三方機構介入,減少繁瑣的sop,過程便利且安全。當資料被上鏈,代表雙方權利已被保障,若未來發生糾紛,即可用鏈上資料維護自身權益。 此外,此專案另外目的為解決SDGs(聯合國永續發展目標)中的 (10) Reduced inequality 和 (16) Peace, justice and strong institutions。透過此App,可使雙方合約人得到應有的保障。若規模擴大,甚至可以效法國外公司與法院合作,使判決更公平、糾紛更易解決。
綜合心得
現今製作App已不足為奇,透過網路相關資訊,一臺電腦即象徵無限可能。因此開發產品的意義便來到「如何解決根本問題,而非錦上添花」,與何種技術結合、怎麼結合及如何落地應用才是所要深入探討之處。身為小組長,我秉持這樣的精神帶領組員查閱眾多相關文獻,才選定此主題。然而確定方向後,也曾疑惑過──將合約存於鏈上真的有意義嗎? 傳統合約的效益及保存倚賴「信任」。這種人們習以為常、直覺簡單的方式,在過去看似安全,但在科技發展迅速且事物複雜化的今日,其實充滿危險。尤其在FTX破產事件後,其負面影響已無所遁形。 因此,我們認為此專案的執行還是有其重要性。 在技術層面上,結合區塊鏈技術於開發App後,難度提升不少,雖不須自行開創或引用演算法至程式內,但在整體資料傳遞、畫面切換、美觀、資料庫運用,甚至是將資料轉換成JSON格式、為每個合約製作簡易NFT並上鏈等,以及改善最為人知的UI、UX,讓使用者「願意」,並「放心」操作,可說是不同層面的困難。最印象深刻的是,在引入別人寫好的資源包時發生兩者以上不相容的問題,一再考驗我的應變和debug能力。 這次的經驗讓我認識到,新科技雖易擴大權力和經濟的不平等,卻也可能幫助傳統弱勢重新握有捍衛自身的籌碼。我決定未來不僅要開發出具便利性的軟體,更要透過技術的力量,消弭社會上的不平等。