撰寫 Qubic 智能合約的非官方指南
這份非官方指南提供了開發 Qubic 智能合約的概述,詳細說明了關鍵功能、內存分配和測試程序,以確保穩健和高效的部署。
Qsilver · 2024 年 6 月 27 日。
簡介
歡迎來到撰寫 Qubic 智能合約(SC)的非官方指南。本指南旨在提供如何在 Qubic 生態系統中開發和實施智能合約的清晰且簡明的概述,這些內容來自於核心 QPI 文件。
Qubic 智能合約概述
目前,撰寫 SC 的主要文件是 GitHub 上的 QPI 文件。QPI 代表 Qubic 程序接口,類似於 API(應用程序接口),但特定於 Qubic。
QPI 文件包括:
- 禁止字符:沒有乘法或除法運算符,沒有預處理指令。
- 核心代碼結構:
- 5000 行代碼:定義從單位位到具有數百萬元素的數組的每種類型的變量大小。
- 1000 行代碼:管理各種隊列和相關數據類型以實現高效的數據處理。
- 最後幾百行:啟用對 Qubic 網絡狀態的訪問。
QPI 的關鍵功能
以下是 QPI 提供的一些基本功能:
id arbitrator() const;
id computor(uint16 computorIndex) const; // [0..675]
uint8 day() const; // [1..31]
uint8 dayOfWeek() const; // [0..6]
uint16 epoch() const; // [0..9'999]
bit getEntity() const; // 如果實體已找到,返回“true”否則返回“false”
uint8 hour() const; // [0..23]
sint64 invocationReward() const;
id invocator() const; // 返回觸發此合約的用戶/合約的 ID;如果沒有,則返回 NULL_ID
template <typename T> id K12(const T& data) const;
uint16 millisecond() const; // [0..999]
uint8 minute() const; // [0..59]
uint8 month() const; // [1..12]
id nextId(const id& currentId) const;
sint64 numberOfPossessedShares() const;
id originator() const; // 返回觸發整個調用鏈的用戶的 ID;如果沒有,則返回 NULL_ID
uint8 second() const; // [0..59]
bit signatureValidity() const;
uint32 tick() const; // [0..999'999'999]
uint8 year() const; // [0..99] (0 = 2000, 1 = 2001, …, 99 = 2099)
這意味著什麼?
Qubic 智能合約是圖靈完備的,這意味著您可以實現幾乎任何計算邏輯。但是,某些限制確保 SC 在高度隔離和安全的環境中運行。
內存分配
SC 使用靜態內存分配模型,其中所有內存必須預先分配。此設計對於在 1GB RAM 限制內有效管理數據結構至關重要。儘管此限制預計未來會翻倍,但它仍然是固定分配,這需要仔細規劃內存使用。
庫使用
目前,您無法在 SC 中使用外部庫;所有必要的代碼必須直接包含在源代碼中。隨著時間的推移,隨著越來越多的 SC 合併各種庫,這些庫可能會在其他 SC 中公開使用。
交易和 RCF 網絡消息
每個 SC 都有一個從公鑰派生的唯一地址,合約 ID 是最低的 64 位。SC 通過發送到此地址的交易進行調用,inputData
指定操作。此外,可以使用 RCF 網絡消息查詢 SC 的狀態。
示例:空投 SC
一個空投 SC 可以遍歷數據集,並在每筆 SC 交易中以一個 tick 的速度將 QU 或代幣分發給每個地址。當前限制為每個 tick 1024 次交易,這可能導致每個 tick 最多 5 億次轉移。實際吞吐量取決於 SC 的複雜性。
如何測試您的 SC
- 開發您的 SC:編寫和調試您的智能合約代碼。
- 更新 qubic-cli:確保您的 SC 交易和 RCF 功能已集成。
- 創建測試網核心更新:將您的 SC 集成到測試網環境中。
- 運行測試:使用 qubic-cli 查詢您的測試網節點並驗證 SC 的性能。
- 壓力測試:執行負載測試和自動化測試以確保穩定性。
- 提交審批:完成調試後,提交您的 SC 以獲得法定人數批准,然後進行首次公開募股。
通過遵循這些步驟,您可以確保您的智能合約是穩健、高效的,並準備好在 Qubic 網絡中部署。祝您編程愉快!
閱讀 Qsilver 的「非官方」系列
要獲取最新更新,加入 Valis Discord、在 X 上關注我們,並將我們的部落格加入書籤。
← 上一頁