目前TON完全缺乏開發(fā)人員社區(qū),而Fift(TON的智能合約語言)與通用語言的底層方法大不相同。
項目競賽是吸引新開發(fā)人員和建立社區(qū)的好方法,也可以解決缺少文檔和案例的問題。我們決定從比賽的角度總結比賽期間和比賽后發(fā)生的所有事情。
技術文檔缺乏
(FunC)沒有funC(類似于C的智能合約語言)的文檔。 這是一個問題,因為大多數(shù)TON競賽任務都要求您編寫智能合約。 FunC —是將使用的主要語言,可用于編寫智能合約。
使用它比使用Fift要容易得多。 但是由于缺乏相關技術文檔(根本沒有文檔),每個人都需要去分析并嘗試理解使用funC。
crypto/smartcontract
其實并沒有那么難,但是需要花上幾天的時間去學習就可以毫無困難地開始使用funC編寫了。
(基本知識)使用funC編寫智能合約時-您需要了解如何部署和編譯智能合約以及如何使用自變量調用函數(shù)-基礎知識。有趣的是,沒有關于此的任何詳細信息,也沒有完整的步驟案例。
我們感謝TON給出的一個小小的指導方針,它確實幫助了我們,但它仍然是相當具有挑戰(zhàn)性的。
關于競賽任務
我們要突出顯示5個任務中的兩個。異步支付通道和同步支付通道。 那么什么是支付通道?
支付通道-一種在鏈外(區(qū)塊鏈之外)在2個交易方之間發(fā)送交易的方法,以使其更快、更便宜、更個性化。雙方在區(qū)塊鏈上都有自己的帳戶。
此外還有一個特殊的智能合約,可以在支付通道開放時存儲兩方的存款。您可以彼此之間以您存入的金額發(fā)送交易。
當您需要提款時-您將使用特殊數(shù)據(jù)調用智能合約,這將在下面討論。
代理商A和代理商B向智能合約發(fā)送硬幣,進行存款以在它們之間建立支付通道。
打開付款通道時-您需要從雙方將資金存入智能合約。
A向B發(fā)送交易并將付款通道的狀態(tài)從(a,b)變更為新的
如果付款通道已打開-您可以開始以每秒超過10萬筆交易的速度相互發(fā)送交易。
重要的是要了解所有事情都是在鏈下發(fā)生的,有一天您將需要與交易對方達成協(xié)議并從智能合約中提取資金。
(在同步支付通道上從A到B的練下交易的可視化表示)
我們假設各方都可以作弊以撤回所有資金。 因此各方都需要證明自己要提取的款項屬于他們。
為了證明這一點-他們將需要發(fā)送每個伙伴的簽名,以正確證明狀態(tài)(sum A,sum B和其他一些信息)。如果我們在談論同步支付通道-我們有一個狀態(tài)。
A無法連續(xù)向B發(fā)送多個交易。每個新狀態(tài)都需要雙方(A和B)的簽名。 因此當A向B發(fā)送交易時,A需要創(chuàng)建一個狀態(tài),該狀態(tài)將更改屬于A和B的金額,使用私鑰對該狀態(tài)進行簽名,然后將新的狀態(tài)和簽名發(fā)送給B。此狀態(tài)并將簽名發(fā)送回A。
僅在確認交易狀態(tài)之后。 之后A不能在B之前發(fā)送另一筆交易。 A需要等待B創(chuàng)建新狀態(tài)。 因此它稱為同步通道。
(在異步支付渠道上從A到B的鏈下交易的可視化表示)
在異步支付通道中,每個交易對手都有自己的狀態(tài)組。每個狀態(tài)包括A從B接收的數(shù)量,A發(fā)送給B的事務數(shù)量,B發(fā)送給A的數(shù)量,B發(fā)送給A的事務數(shù)量。
在這種情況下,A和B無需等待確認 他們只需要發(fā)送一個已簽名狀態(tài)。
這兩個通道中最困難的部分是提款過程。智能合約需要檢查各方是否提供了正確的數(shù)據(jù)以提取資金。
我們需要檢查狀態(tài)的簽名,而且狀態(tài)是最新的。 可能是各方之間的沖突,并且智能合約需要根據(jù)規(guī)則(最新狀態(tài))進行解決。 必須防止將相同的數(shù)據(jù)發(fā)送到不同的支付通道,并且如果參與者之一不提供任何信息,我們也需要解決這種情況。
所有這些都必須用funC編寫并經過充分測試以確保安全。聽起來很有挑戰(zhàn)性。
解決方案和競爭對手
大多數(shù)提交內容都是多簽名錢包和DNS解析器。 但是其中有幾個具有支付通道。 顯然支付通道是最復雜的任務,因此解決方案將更少,并且提供這些解決方案的大多數(shù)團隊將比其他團隊更強大。
下一步是什么?
目前大約有10至20個具有足夠技能和知識的團隊可以開始構建TON的基礎架構。 我們認為大多數(shù)成功的ETH解決方案將由這些團隊轉移到TON。TON競賽確實可以改變與TON合作的團隊數(shù)量,從而改變了現(xiàn)狀。
責任編輯;zl
評論