建立和編寫數位資產專案
您可以使用區塊鏈 App 產生器建立及編寫智能合約專案,以使用數位資產。
Besu 的區塊鏈應用程式建置工具會為 ERC-20 或 ERC-1155 權杖產生獨立的 Hardhat 專案。您可以選擇擴充功能中的權杖標準和支援的功能。Blockchain App Builder 中的編寫器功能會複製相符的 SDK、建立具體的 Universal Upgradeable Proxy Standard (UUPS) 權杖合約,以及新增部署和升級智能合約的指令碼。
使用編寫器功能來建立專案,其中記號 ABI 與帳戶合約衍生自明確的功能設定檔。它不會在建立專案時部署記號,也不會自動執行 npm install 命令
您必須先安裝 Besu 擴充的 Blockchain App Builder 並開啟 Visual Studio Code 工作區,才能建立及部署數位資產專案。若要部署產生的專案,必須安裝 Node.js 和 npm。您還需要一個可存取的 Hardhat 或 Besu 網路、一個能夠部署合約的帳戶,以及現有的治理合約和治理 UUID。
產生的部署指令碼需要 GOVERNANCE_ADDRESS 和 GOVERNANCE_UUID 環境變數。此編寫器功能會將此治理相關資訊環境連結至產生的帳戶和記號代理主機;部署啟用仍受設定的治理工作流程約束。
建立一個專案
- 開啟 Besu 區塊鏈 App 產生器活動列中的模組檢視。
- 選取開啟模組編寫器,然後選取模組編寫器頁籤。
- 在建立新硬件專案中,輸入專案名稱並選擇其上階資料夾。組合函數會使用下列目錄結構來建立專案:
<parent_folder>/<project_name>。專案名稱可包含英文字母、數字、句號、連字號及底線,但不可包含雙句號 (..)。專案名稱必須以字母或底線為開頭,且只能包含字母、數字及底線。目的地必須空白。compose 函數不會覆寫非空白的專案資料夾。
- 選取記號標準、組成模式及功能,如下節所述。
- 輸入「實體」合約名稱。例如,輸入 DepositToken 。
- 複查產生的組合預覽,然後選取產生套件。
專案產生成功時,擴充程式會將專案匯入合約檢視。
組合模式
- 嚴格組合模式:產生的權杖會繼承只公開所選選擇性功能的基準。若要新增組合期間未選取的任何功能,則需要進行實作升級。
- 產生的記號會繼承完整介面相容性基礎。程式實際執行組態可控制適用的行為,但更廣泛的方法表面仍會留在 ABI 中。
編寫 ERC-20 專案
- ERC-5892:標準存取控制後端。
- ERC-6617:以位元為基礎的存取控制後端。
接著,設定下表所述的功能。
| 輸入 | 值 | 備註 |
|---|---|---|
| 薄荷 | 已停用、直接、需要核准 | 需要核准才能新增要求 / 核准工作流程。 |
| 燒錄 | 已停用、直接、需要核准 | 需要核准才能新增要求 / 核准工作流程。 |
| 可保留 | 開啟或關閉 | 支援保留工作流程。 |
| 角色 | 開啟或關閉 | 自動啟用核准探勘、核准燒錄或可保留的工作流程,因為它們需要 NOTARY 授權。 |
| 每日限制 | 開啟或關閉 | 選取具有或不具有每日限制強制性的帳戶變異。 |
| 多層次核准 | 開啟或關閉 | 啟用帳戶與核准政策,以及執行核准排序的保留。它會自動啟用可保留的功能。 |
下列行為一律為 ERC-20 產生的設定檔的一部分:可移轉行為、委派作業、可暫停行為及治理核准流程。當撰寫函數自動啟用角色時,角色也是設定檔的一部分。
例如,直接提示的直接燒錄記號 (不含保留) 會產生嚴格的基礎 ERC20DirectMintBurnUpgradeable。啟用多層次核准會改為選取可保留的多層次核准庫,並部署額外的 ERC20MultiLevelApprovalHelperLib 程式庫。
編寫 ERC-1155 專案
ERC-1155 專案預設使用 ERC-5982 存取控制後端。選取一個資產類型:
- 有趣的權杖:有趣供應的權杖類別。
- 整個 NFT:非分數的 NFT 類別。
- 小數 NFT:具有小數所有權的 NFT 課程。
- 組合有趣和不可行的權杖:有趣的權杖和 NFT 的類別。
將直接微調和燒錄設定為啟用或停用 。ERC-1155 不支援採礦與燒錄核准。組成功能一律包括可傳輸行為、委派的操作員核准 (setApprovalForAll 和 isApprovedForAll)、可暫停行為、治理以及 ERC-5982 存取控制。
您可以啟用角色。對於 NFT 資產類型,您也可以啟用可鎖定的 NFT。有趣的記號無法使用鎖定功能,而且停用著色和燒錄功能時會停用鎖定功能。可分割 / 不可分割行為衍生自選取的資產類型,而不是個別輸入。不支援每日限制、可保留行為及多層級核准。
組合的 ERC-1155 輪廓即使您選取嚴格的組合,仍使用完整曲面 ERC1155CombinedTokenUpgradeable 底座。其他嚴格的設定檔則使用資產類型與 Mint/burn 特定基準。
產生的專案內容
撰寫函數會建立下列專案結構。
<project>/
├── contracts/
│ ├── obp-sdk/ # copied ERC-20 or ERC-1155 SDK source
│ └── <ContractName>/
│ ├── <ContractName>Upgradeable.sol
│ └── generated.manifest.json # selected profile and generated paths
├── scripts/
│ ├── deploy/<contract-name>/deploy-<contract-name>.ts
│ └── upgrade/
│ ├── upgrade-<contract-name>.ts
│ └── upgrade-<contract-name>-account.ts
├── .obp-bap/
│ ├── plugins/ # bundled Hardhat plugin archives
│ └── project.json # Composer project metadata
├── config/hardhat-env.ts
├── hardhat.config.ts
├── package.json
└── README.md位於 contracts/obp-sdk/ 下的 SDK 會複製到產生的專案中,並在產生後由專案擁有。資訊清單會記錄權杖標準、組成模式、選取的基礎與帳戶合約,以及完整的正規化功能設定檔
產生錯誤疑難排解
| 訊息或條件 | 解決方式 |
|---|---|
Select one identity-permission module |
請針對 ERC-20 選擇 ERC-5982 或 ERC-6617。 |
Contract name must start with a letter/underscore |
使用有效的實體 ID。 |
Project name is required 或不安全的名稱
|
提供不含路徑分隔符號或雙句點 (..) 的簡單專案名稱。 |
Choose a parent folder |
在編寫器中選擇一個絕對父目錄 。 |
| 目標資料夾已存在且不是空的 | 請選擇新專案名稱或空白目的地。compose 函數不會覆寫專案。 |
| ERC-1155 不支援以核准為基礎的採礦或燒錄 | 選擇「 Disabled (停用)」或「 Direct (直接)」代表 ERC-1155 採礦與燒錄。 |
GOVERNANCE_ADDRESS and GOVERNANCE_UUID are required |
請先設定這兩個值,再執行產生的部署指令碼。 |
產生合約專案之後,您可以使用合約檢視中的匯入專案來編譯、部署及開啟部署或執行表單。將產生的資訊清單保留在合約中;擴充工具可使用資訊清單將產生的權杖和帳戶 ABI 與選取的編寫器設定檔配對。