🎉 #Gate Alpha 第三届积分狂欢节 & ES Launchpool# 聯合推廣任務上線!
本次活動總獎池:1,250 枚 ES
任務目標:推廣 Eclipse($ES)Launchpool 和 Alpha 第11期 $ES 專場
📄 詳情參考:
Launchpool 公告:https://www.gate.com/zh/announcements/article/46134
Alpha 第11期公告:https://www.gate.com/zh/announcements/article/46137
🧩【任務內容】
請圍繞 Launchpool 和 Alpha 第11期 活動進行內容創作,並曬出參與截圖。
📸【參與方式】
1️⃣ 帶上Tag #Gate Alpha 第三届积分狂欢节 & ES Launchpool# 發帖
2️⃣ 曬出以下任一截圖:
Launchpool 質押截圖(BTC / ETH / ES)
Alpha 交易頁面截圖(交易 ES)
3️⃣ 發布圖文內容,可參考以下方向(≥60字):
簡介 ES/Eclipse 項目亮點、代幣機制等基本信息
分享你對 ES 項目的觀點、前景判斷、挖礦體驗等
分析 Launchpool 挖礦 或 Alpha 積分玩法的策略和收益對比
🎁【獎勵說明】
評選內容質量最優的 10 位 Launchpool/Gate
Move創始人揭祕:Sui Move如何助力Web3產品開發
專訪Move語言創始人:爲什麼Sui Move智能合約語言適合構建Web3產品?
近日,我們與Mysten Labs的首席技術官、Move編程語言創始人Sam Blackshear進行了交談,討論了他爲什麼開發Sui Move這種新的智能合約編程語言、Sui能夠擴展的功能以及去中心化技術對構建者的好處。
以下爲本次採訪內容:
Q1、首先,您能概述一下編程語言是什麼,開發者在選擇編程語言時最關注的品質是什麼,以及是什麼推動您開發自己的編程語言嗎?
編程語言是一種與計算機進行友好、安全、高效和明確交互的工具。對計算機來說,這一點尤爲重要。我們不能用自然語言與計算機交流,因爲自然語言的整個意義在於豐富性和表達能力。當你用稍微不同的語氣或選擇細微不同的方式來表達詞匯時,你的句子或段落意思就會完全不同。
而在編程語言中,最重要的是具備精確定義的語義。當你編寫一個程序時,你清楚它將要做什麼。如果你對它進行微小的調整,你知道這個變化會產生什麼結果。這一點在多個層面上都需要保持,比如你可以用一種源語言編寫代碼,它有一種含義,然後被轉換爲其他形式表示,那它也應該具有相同的含義,直到觸達機器的處理模塊也是這樣。
我認爲,與自然語言不同,編程語言的本質是針對特定領域或特定任務的。否則只用一種編程語言,就可以完成所有任務。但之所以存在多種編程語言,是因爲你不可能在所有領域都表現得很好。它們正在努力針對特定的問題領域進行目標定位,並且專注於解決這些問題。舉個例子,如果你看看我們用來編寫Sui區塊鏈和在Mysten進行的大部分其他系統工作的Rust編程語言,它專注於編寫既快速又高性能的代碼,同時保證安全性。它讓你能夠接觸到內存、線程結構或並發等底層細節,但不會像之前的語言(如C或C++)那樣讓你在其中犯錯。
因此,Move的故事與此非常類似。當我創造它時,並不是爲了創造一種新的語言。你之前提到開發者在一種語言中尋找什麼。他們會問,"這個語言對我想要完成的任務是否適用?"但我認爲可能更重要的是,"這種語言是否有一個龐大的社區?是否有很多可用的數據庫?是否有很多程序員在使用?是否有良好的教育資源?"這些都非常重要,因此創造一種新語言的門檻必須非常高,即使這種語言本身更好,但是如果它沒有這些因素,那麼它的優勢就沒有意義。從零開始建立一個龐大而充滿活力的社區是非常困難的。
Q2、您能分享更多關於Move的開發情況嗎?
Move起源於Facebook的Libra項目。我當時的任務不是創建一種新的語言,而是"Libra需要有智能合約,所以找出我們應該做什麼。"我看了各種各樣的東西。我們能在EVM中使用Solidity嗎?我們是否應該使用常規的通用語言,比如WASM或JVM,並將其用於Libra?還是應該創建我們自己的東西?
決定創建我們自己的東西是基於對現有智能合約的研究,了解程序員試圖做什麼,以及某些語言在幫助他們的地方和讓他們失望的地方。我的結論是,在很多情況下,現有的智能合約語言確實讓他們失望。
這一點可以從Solidity糟糕的安全記錄中清楚地看出,但更基本的是,這些智能合約不是非常傳統的程序類型。Solidity並不是爲現在人們所做的事情而構建的語言。我不是要批評它,因爲它是第一種智能合約語言,它還不知道人們想用它做什麼。一旦你看到人們試圖用它做什麼,我認爲很明顯,你需要一組不同的抽象和編程工具,而Solidity語言提供不了。
所以這些智能合約非常簡單,它們基本上做兩件事情。它們定義了資產的類型,包括何時可以轉移資產、你可以用它們做什麼、誰可以讀取它們、誰可以寫入它們的規則。並且檢查訪問控制策略,確定誰擁有該資產,誰被允許使用它,誰被允許對其進行操作。一切都圍繞着資產,你希望這些資產具有與物理資產相同的屬性。如果我把東西交給你,那麼你應該擁有它,我就不再擁有它了。
智能合約中有所有權和所有權轉讓的概念,但在計算機上,一切都只是數位和字節,並且可以自由復制。而且,你知道,這些概念在現實世界並不存在。因此,你希望有一種語言能夠爲你提供有關所有權和同質化的良好抽象。就像在現實世界中一樣,但無需強迫程序員重新發明它。你希望獲得基本的安全保證。
這就是Move的作用以及爲什麼我們最終創建了這種新的語言。這些任務對於智能合約編程來說是基本的。它們很難在其他語言中重新創建,包括現有的智能合約語言,我們希望圍繞提供這些基本功能的整個語言進行設計,以便程序員可以安全高效地編寫代碼,而不必每次想編寫一些代碼時都重新發明輪子。
Q3、Sui使用了Move的一種變體,稱爲Sui Move。是什麼促使了這些變化?Sui Move的哪些特點非常適合在Web3中構建產品?
以下幾個因素促使了這些變化,其中一個是最初的Libra項目的目標是構建一個合規的支付網絡。因此,我們試圖設計Move作爲一種通用的語言。但我們還有意識地做了一些事情,因爲Libra希望具備限制條件。其中一個重要的事情是,他們不希望人們能夠將某些資產發送到任何地方。他們希望人們明確地創建一個帳戶,並在帳戶創建時設置一些規則,比如帳戶的所有者必須進行KYC認證。或者可能需要支付費用來創建帳戶,或者只能由擁有創建帳戶權限的一小部分人來創建帳戶。由於整個目的是Libra希望進行合規支付和合規智能合約,所以存在這些限制。但在更通用的Web3領域,情況恰恰相反。你不希望在基礎層面上進行合規,這是智能合約的概念。你希望事物盡可能自由,完全可以將某物發送到任何地址。然後你不應該進行顯式的帳戶創建,因爲這將阻塞各種用例。這是一個重要的因素。
另一個因素是,盡管我們在Move中專注於資產,但當時在Libra中我們並沒有考慮如何將資產的關注點引入交易本身。因此,當你到達交易層級時,你仍然只有這個API,其中你輸入數字和布爾值等不是資產的東西,然後在Move中,你使用這些數字來從帳戶中提取資產並進行其他操作。事實證明,你運行的大部分代碼都是這種令人討厭的記簿工作,其中包括取出這個東西,取出那個東西,取出其他東西,好的,我擁有了所有我想要的資產。它們在這裏,在我的工作室裏,現在我可以開始做一些有意義的事情了。然後在此過程的末尾,你可能會說:"好的,將這些資產放回這個帳戶,將它們放回那個帳戶,重新組織它們。
在Sui中,我們經過深思熟慮,如果每個程序都以這種方式開始和結束,我們是否可以將其抽象出來?因此,用於處理交易的邏輯將爲程序員完成此操作,從程序員的角度來看,他們只需準備好所需的資產,立即開始進行有趣的工作。這就是存在於Sui中的以對象爲中心的數據模型。在原始的Move中,我們擁有基於帳戶的數據模型,資產存儲在帳戶下,並且程序員必須明確地提取它們。而在Sui中,它們在進入交易的Move部分時,已經被Sui運行時獲取到資產。這對程序員來說更方便,因爲他們不需要進行所有這些之前和之後的記簿工作,而且這也是允許我們在不實際執行的情況下確定是否可以將一個交易與另一個交易並行運行、將Sui進行水平擴展以及更高效地進行其他一些操作的祕密武器。
我們還進行了其他一些非常有趣的工作,比如利用基於對象的數據模型進行可編程的交易塊。這是一個偏技術性的話題,我很樂意深入討論。但這兩個因素是導致與原始Move的分歧的主要動力。
Q4、能請您能分享更多關於可編程交易區塊及其功能的信息嗎?
我喜歡使用一個類比來解釋,其他區塊鏈就像一個購物中心的美食廣場。你想喫一份冰淇淋,你去冰淇淋攤位,拿出你的信用卡付款。但是如果你決定還想喫一個漢堡,然後你去漢堡攤位,再次付款。我不是個貪喫的人,但是如果我想喫八樣東西,我就必須進行八次單獨的交易。而Sui更像是一個自助餐,每個交易不只是一件事。一旦你支付了自助餐的費用,你可以做很多事情而無需額外花費。你可以喫冰淇淋,你可以喫漢堡,你可以將它們混在一起。
爲了讓這個概念更具體一點,在簡單的情況下,如果你要發送100個交易來鑄造100個NFT,你可以發送一個鑄造100個NFT的交易。這樣的成本與鑄造一個NFT的成本幾乎相同。你還可以進行異構交易打包,比如區塊中的第一個交易從你的多簽錢包中取出一個馬裏奧角色,而第二個交易則請求一個馬裏奧,然後允許你玩遊戲。如果你贏得遊戲並獲得獎杯,也許第三個交易會將獎杯放入一個與朋友共享的獎杯櫃中。很酷的是,可編程交易區塊允許程序員以這樣的方式編寫代碼,遊戲不必知道多簽錢包或馬裏奧的存儲方式,它也不必知道你的獎杯櫃或其實現方式。
可編程交易區塊由具有輸入和輸出對象的交易組成。如果你需要一個輸入對象,可以獲得該對象,而無需關心它來自哪裏,然後將其輸出傳遞給需要它的對象,同樣也無需關心它將傳遞給哪裏。在其他區塊鏈中,耦合性更強,因此遊戲必須與多簽錢包和獎杯櫃進行集成,或者它們都必須實現一些共同的接口並具有更強的耦合性。Sui使得所謂的臨時組合變得更加容易。就像,如果管道匹配,我們可以在一個交易中完成。
Q5、那可編程交易區塊對於用戶來說有什麼好處呢?
對於用戶來說,可編程交易區塊的好處包括更低的gas費用,因爲你可以將所有操作打包到一個交易中,而不是進行單獨的交易。此外,需要批準的次數也會減少。如果你使用的系統需要交易批準,你只需要進行一次批準,然後它就會一次性完成所有操作。另外一個好處是原子性,如果你想做三件不同的事情,並且希望只有在前兩個操作成功後第三個操作才能成功,如果這些操作必須是獨立的交易,那麼你無法實現這一點。但是,如果你可以將它們都放在一個交易中,那麼你就可以輕鬆實現這一點。
Q6、我聽過您和其他人談論,在Sui上進行開發對於程序員來說是一次很棒的體驗,而且這很重要。對於有經驗的和新的Web3程序員開始使用Sui Move時,您有什麼軼事可以分享嗎?
對於那些來自其他Web3編程語言的開發者來說,他們在Move和Sui Move上的開發體驗確實更加高效,而且更安全。我剛剛參加了一個關於Bucket Protocol的播客節目,他們正在Sui上構建一個非常酷的