開髮用於分散式滑板車租賃的軟件。 誰說這很容易?

在這篇文章中,我將討論我們如何嘗試在智慧合約上建立去中心化的滑板車租賃,以及為什麼我們仍然需要集中式服務。

開髮用於分散式滑板車租賃的軟件。 誰說這很容易?

這一切是如何開始的

2018年XNUMX月,我們參加了一場專門針對物聯網和區塊鏈的黑客馬拉松。 我們的團隊選擇了共享滑板車作為一個想法,因為我們有一輛來自本次黑客馬拉松贊助商的滑板車。 原型看起來像一個行動應用程序,可讓您透過 NFC 啟動踏板車。 從行銷的角度來看,這個想法得到了一個關於開放生態系統「光明未來」的故事的支持,在這個生態系統中,任何人都可以成為租戶或房東,所有這些都基於智能合約。

我們的利害關係人非常喜歡這個想法,他們決定將其轉變為在展覽上展示的原型。 在 2019 年世界移動大會和博世互聯世界上進行了多次成功演示後,決定與真實用戶(德國電信員工)一起測試踏板車租賃。 因此我們開始發展一個成熟的 MVP。

拄著拐杖的區塊鏈

我認為沒有必要解釋舞台上展示的項目和真人使用的項目之間的區別。 在六個月內,我們必須將粗糙的原型變成適合飛行員的東西。 然後我們就明白了「痛苦」的意思。

為了使我們的系統去中心化和開放,我們決定使用以太坊智能合約。 選擇落在這個去中心化線上服務平台上,因為它很受歡迎並且能夠建立無伺服器應用程式。 我們計劃按如下方式實施我們的專案。

開髮用於分散式滑板車租賃的軟件。 誰說這很容易?

但不幸的是,智能合約是虛擬機器在交易時執行的程式碼,它無法取代成熟的伺服器。 例如,智能合約無法執行待處理或規劃的操作。 在我們的專案中,這不允許我們像大多數現代汽車共享服務那樣實施每分鐘的租賃服務。 因此,我們在完成交易後,在不確定用戶是否有足夠的錢的情況下,從用戶那裡扣除了加密貨幣。 這種方法僅適用於內部試點,當然,在設計成熟的生產專案時會增加問題。

除上述所有因素外,還包括平臺本身的潮濕。 例如,如果您編寫邏輯與ERC-20代幣不同的智慧合約,您將遇到錯誤處理問題。 通常,如果輸入不正確或我們的方法無法正常工作,我們會收到錯誤代碼作為回應。 就以太坊而言,除了執行此功能所花費的天然氣量之外,我們無法獲得任何其他資訊。 Gas 是一種必須用於交易和計算的貨幣:代碼中的操作越多,您支付的費用就越多。 因此,要了解程式碼不起作用的原因,您首先要透過模擬所有可能的錯誤來測試它,並將消耗的氣體硬編碼為錯誤代碼。 但如果您更改程式碼,此錯誤處理將會中斷。

此外,如果不使用儲存在雲端某處的金鑰,幾乎不可能創建一個與區塊鏈誠實配合的行動應用程式。 儘管存在誠實錢包,但它們不提供用於簽署外部交易的介面。 這意味著您不會看到本機應用程序,除非它具有內建的加密錢包,而用戶對此幾乎不信任(我不會信任它)。 結果我們這裡也不得不抄近路。 智能合約被交付到私有以太坊網絡,錢包是基於雲端的。 但儘管如此,我們的用戶還是體驗到了去中心化服務的所有“樂趣”,即每次租賃期間多次長時間等待交易。

所有這些都引導我們走向這個架構。 同意,這與我們的計劃有很大不同。

開髮用於分散式滑板車租賃的軟件。 誰說這很容易?

王牌:自我主權身份

如果沒有去中心化的身份,你就無法建立一個完全去中心化的系統。 自我主權身分(SSI)負責這部分,其本質是你丟掉中心化的身分提供者(IDP)並將所有資料和責任分配給人們。 現在,用戶決定他需要什麼數據以及與誰共享這些數據。 所有這些資訊都位於使用者的裝置上。 但對於交換,我們需要一個去中心化的系統來儲存加密證據。 SSI 概念的所有現代實作都使用區塊鏈作為儲存。

“這和洞裡的王牌有什麼關係?” - 你問。 我們在柏林和波昂推出了對我們自己的員工進行內部測試的服務,我們遇到了德國工會形式的困難。 在德國,公司被禁止監控員工的行動,而工會對此進行控制。 這些限制結束了用戶身份資料的集中存儲,因為在這種情況下我們會知道員工的位置。 同時,我們也忍不住去檢查,因為滑板車有被偷的可能。 但由於自我主權身份,我們的用戶可以匿名使用該系統,並且踏板車本身在開始租賃之前會檢查他們的駕駛執照。 因此,我們儲存了匿名用戶指標;我們沒有任何文件或個人資料:它們都包含在司機本身的裝置上。 因此,多虧了 SSI,我們專案中的問題的解決方案甚至在出現之前就已經準備好了。

該設備給我帶來了問題

我們自己沒有實現自我主權身份,因為它需要密碼學的專業知識和大量時間。 相反,我們利用合作夥伴 Jolocom 的產品,並將他們的行動錢包和服務整合到我們的平台中。 不幸的是,該產品有一個顯著的缺點:主要開發語言是 Node.js。

這種技術堆疊極大地限制了我們對踏板車內建硬體的選擇。 幸運的是,在專案一開始,我們就選擇了 Raspberry Pi Zero,充分利用了成熟的微型電腦的所有優勢。 這使我們能夠在滑板車上運行龐大的 Node.js。 此外,我們還使用現成的工具透過 VPN 進行監控和遠端存取。

總之

儘管有種種「痛苦」和問題,該計畫還是啟動了。 並非一切都按我們的計劃進行,但確實可以透過租賃踏板車來騎乘它們。

是的,我們在設計架構時犯了一些錯誤,這些錯誤不允許我們將服務完全去中心化,但即使沒有這些錯誤,我們也很難創建一個無伺服器平台。 編寫另一個加密金字塔是一回事,而編寫一個成熟的服務則完全是另一回事,在服務中您需要處理錯誤、解決邊界情況並執行待處理的任務。 我們希望最近出現的新平台將更加靈活和功能強大。

來源: www.habr.com

添加評論