標題:索羅班的例子
已發表: 真實
描述:透過簡單的範例介紹 Soroban 上的智能合約程式。
標籤: stellarchallenge、soroban、stellar、web3
封面圖:https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6dey0yf8esp0lztlxl8x.png
在探索新的智能合約語言時,在學習語法和資料類型之後,最好的方法之一是透過範例、樣板檔案並探索各種策略來實現您在先前的語言中可以完成的操作。在 Web3 領域,有一些策略被證明是有效的。
Openzeppelin 庫格式
Scaffold(「插入 ETH、Stark、Soroban」)格式
「智能合約語言」舉例
工廠合約+嚮導和生成器
我們可以輕鬆地將它們分為魔力像限中的“Bootstrappers”-“Boilerplate”-“Libraries”,這些不同的策略使您能夠使用新的智能合約語言快速從0 - 1
。
不用說,基於專案的學習是精通 Soroban 的最有效方法,就像任何其他智能合約語言或一般程式語言一樣。然而,Soroban 帶來的艱鉅挑戰,尤其是對於來自 Solidity 等更廣泛使用的智能合約語言的開發人員來說,乍一看令人生畏的外觀。對於那些不熟悉 Rust 的人來說,Soroban 的語法和概念可能顯得陌生且令人難以接受,從而造成了巨大的進入障礙。儘管 Soroban 可能提供潛在的好處,但這種不熟悉和感知的複雜性導致區塊鏈開發人員堅持使用他們更熟悉的語言。
我們透過範例建立了 Soroban,這是一個綜合資源,旨在幫助開發人員,特別是那些從 Solidity 等其他智能合約語言過渡的開發人員,透過基於專案的方法學習和採用 Soroban。
{% 嵌入 https://vimeo.com/1000201613 %}
熟悉度:幫助開發人員找到其他智能合約語言中眾所周知的概念的實現
開發人員體驗:為出色的 DX 提供互動式且使用者友好的文件瀏覽器
簡單性:保持範例片段乾淨、簡單,並專注於核心概念
Integrated Playground:允許開發人員探索、修改和嘗試範例合約
人工智慧輔助變體:使用人工智慧助理產生範例合約的自訂變體
<
放在一邊>
💡 然而,在保持雄心勃勃的目標的同時,試圖將世界融入索羅班也面臨一些挑戰。本質上是著眼於更流行的區塊鏈生態系統及其範式,以適應如何編寫 Stellar 上的智能合約
EVM 有ZERO_ADDRESS
的概念,用於燃燒代幣和 NFT 並執行許多修改器功能,然而,這與 Soroban 的上下文無關,在 Soroban 中ZERO_ADDRESS
是無用的,而不是修改器,模組是首選
Solidity 是最受歡迎的智慧合約語言,它使用繼承作為可擴展性的一種形式,但這不適用於 Soroban,因為您可以透過將&env
傳遞到函數來存取主機環境,從而獲得主機所需的一切。這意味著在 Soroban 中我們更喜歡函陣列合而不是繼承。
對於我們團隊中的一些人來說,這是我們第一次涉足 Soroban 生態系統,即使是曾在 EVM 生態系統中負責協議和團隊建設的 DevRel 角色的Koha也同意 Soroban 更令人興奮🤣。必須適應更流行的智慧合約語言的標準/系統是很無聊的。
在達到這一點之前,我們為實現我們的目標進行了多次嘗試。我們的第一次嘗試 - AI 程式碼產生器正在建立一個自訂 GPT 來學習 Soroban並取得範例合約
{% 嵌入 https://vimeo.com/1000261124?share=copy %}
💡 為了實現這個最初的里程碑,我們必須使用一流開發人員文件的文件來訓練自訂 GPT。為了實現這一目標,我們編寫了一個簡單的 scraper 腳本來獲取開發人員文件並將其分塊到文字檔案中,請參閱我們的github 儲存庫以了解 scraper 實作。
{% github https://github.com/kohasummons/crawler %}
然而,經過幾次測試執行後,我們意識到這個GPT 並不能真正很好地理解JTBD(待完成的工作),並且當被要求執行更高級的指令(例如生成特定類型合約和測試)時,仍然會出現rust
幻覺。
對於 AI 程式碼產生器,我們發現了一些選項,例如kapa.ai ,但經過進一步探索,我們意識到該實作有其局限性,因為它只能滿足文件搜尋和建議。
這也意味著我們無法避免自己手動整理範例並逐一審查每個出版物。
經過這麼多次試驗和錯誤,我們決定最好的方法是自己手動策劃每個示例合約,並訓練/微調一個名為“Soroboy”的示例生成器模型 - Soroboy 將與 GPT 不同,因為這次它將位於範例智能合約頁面的上下文中。
我們首先在Notion 工作區中整理所有合約範例,並追蹤其 Okashi 遊樂場連結。這意味著從核心概念開始並產生基線合同,這是一個很好的起點。
當使用者造訪我們的範例網站時,他們可以與 Soroboy 進行對話,以在該頁面上產生合約範例的變體。
在下面的範例中,Soroboy 能夠產生具有多個所有者而不是一個所有者的only_owner
合約的變體
To achieve this, we have to manually curate soroban contracts ourselves, review them exploration on this front focuses on training an AI model on examples, so that it can leverage that for contextual exploration, our idea around this is something that generates variations of an existing合約.工作流程是這樣的。
以現有的 Soroban 為例
根據某個用例輸入提示修改合約
根據上下文和新的“用例”指令產生新的範例程式碼
<
放在一邊>
💡 為了實現這一點,我們使用了 Vector 儲存庫LanceDB ,它是一個用Rust建構的記憶體資料庫,並使用 [Apache-Arrow 資料格式] 進行緊湊儲存。
Lance 非常適合這種探索,因為所有向量嵌入都是可以在 github 上追蹤的簡單檔案。請參閱我們的碎布嵌入,以了解其外觀。
對於生成功能,API 呼叫目前路由到 OpenAI GPT-4o。為了能夠將 AI 模組注入到文件頁面中,我們必須實作一個自訂的 React 函式庫和 API 伺服器來管理其互動。
我們最終執行的幾件不屬於我們最初計劃的事情是將 Okashi 遊樂場嵌入到文件網站中。
如果您查看我們的根概念資料庫,您會注意到我們所有的文件頁面在準備時都有自己的Okashi遊樂場。我們選擇 Okashi 是因為它使用起來非常簡單,而且我們不必使用自己的Cargo.toml
維護大量範例合約儲存庫
這對於測試和探索非常有用,在該專案的開發過程中,我們的團隊想知道如果我們的用戶可以簡單地以codesandbox
方式編譯和執行這些合約,他們的體驗會是什麼樣的。
Okashi 是我們的首選,但是 Okashi 有一些限制,我們希望維護者能夠提供支援以極大地改進 DX
複製:我們能否將 Okashi 上的合約複製到我們自己的工作區或任何地方?
可嵌入的小部件:我們可以將 Okashi 的 iframe 版本作為小部件注入到任何網站上嗎?
如果您看一下我們網站上的簡單Soroban 循環範例。您會注意到頁面中嵌入了一個 Okashi 小部件。事實上,所有頁面內部都有一個 Okashi 小工具。我們能夠透過編寫一個custom_proxy_server
來做到這一點,該伺服器充當我們的網站和 Okashi 之間的中間件。
{% github https://github.com/koolamusic/okashi-proxy %}
該伺服器只是簡單地轉譯 Okashi 請求,以便我們可以獲得 Okashi 的完整 DOM 物件並修改視圖以適應我們的 Widget 功能。
我們認為這是一種駭客行為——一種實現我們目的的相當粗暴的方式,它使我們能夠為這個專案提供預期的體驗。我們已經在 Discord 上聯繫了 Morgan 和 Okashi 團隊,希望我們能引起他們的注意,並將其作為 Okashi 的一個功能
事後看來,我認為我們低估了為了實現這個專案的核心目標我們需要做多少工作,我們製作的一些文物是
Stellar 網站抓取工具 - https://github.com/kohasummons/crawler
Okashi 代理伺服器 - https://github.com/koolamusic/okashi-proxy/
OpenAI API 伺服器(不是開源的“API 金鑰和環境位於儲存庫中😂”
Soroban 範例文件網站 - https://sorobanexamples.xyz
ChatGPT 上的 Soroban 自訂 GPT - https://chatgpt.com/g/g-oW0Pjt0tu-soroban-v1
專案儲存庫 — 請參閱概念資料庫
所有合約範例的向量嵌入
Soroban 是一種令人驚嘆的智能合約語言,我們打算繼續維護這個專案,並探索 Soroban 並用它建立新專案。
Monorepo:在接下來的幾週內,我們將努力將所有程式碼工件合併到一個 monorepo 中,以改進程式碼組織和對每個模組的貢獻,從而增強 Soroban by Examples 的體驗和交付。
多語言支援:整合完成後,我們將致力於整合另外 3 種語言“西班牙語、法語和普通話”,希望得到社區的支持
我們這個專案的目標除了提高 Soroban 生態系統的可發現性並展示許多簡單的用例和樣板文件,供探索 Soroban 生態系統的開發人員和個人可以與之互動。還將推出
DevRel 諮詢服務,用於在生態系統內建立 DevTools 的開發人員文件,以改善建置針對開發人員的產品的團隊的 DX。我們團隊的成員已經在 EVM 和 Move 區塊鏈內建構的專案中擔任 DevRel 角色 [插入專案名稱和協議]
Soroban諮詢:為將恆星生態系統作為首選區塊鏈的組織和創始人提供諮詢服務,以在恆星內部建立創新解決方案
改進頁面上渲染範例的使用者體驗,這樣我們就可以有遊樂場和靜態文字的選項卡,這樣顯示遊樂場就成為像 AI 助理一樣的選擇加入功能
用於 AI 的記憶體模組可保留新產生的程式碼以用於學習目的、微調和發布新的範例用例
人工智慧世代的計量使用。出於永續發展的目的,我們可能會將 AI 生成限制為每天 100 代,基本上目標是使我們的 OpenAI 支出降至每天最多 5 美元,並每 24 小時重置一次。
我們從生態系統內的專案中獲得了許多靈感,這些專案突破了 Soroban 的可能性界限。
恆星索羅班範例:
Coinfabrik Stellar 範例
數學索羅班
iMath 索羅班
AMM DEX 索羅班
實例的可靠性
開羅的例子
恆星資產代幣遊樂場
甘西
Soroban Rust SDK 文件 https://docs.rs/soroban-sdk/21.5.0/soroban\_sdk/index.html