基於星雲鏈開發智慧型合約和DApp

2021-09-13 19:04:26 字數 1271 閱讀 6315

在你即將開始開發之前,我的建議是先看一下官方部落格發布的幾篇文章,這些文章我會在後文中的「開發教程」下列出。除了看官方教程學習之外,你還應該準備好開發相關的工具,其中最重要的就是「星雲 web 錢包」了,因為它是用來建立錢包、部署合約、執行合約函式進行除錯的工具。

開發的基本流程可以大致分為「編寫合約」——「部署合約」——「測試合約」——「編寫前端頁面」——「修改合約」這五個步驟。

在編寫合約之前,請大致過一遍星雲的「智慧型合約」相關 api,以便更好地熟悉相關介面進行合約的編寫,合約的編寫難度不高,需要注意的是,在合約中和轉賬數值相關的,都是使用的基本單位 wei,並且都是整數,很多人會以 nas 作為單位編寫相關邏輯導致出現一些錯誤。

合約編寫完成之後,使用 web 錢包,將右上角的「mainnet」改為「testnet」,然後選擇「合約」——「部署」將你的合約部署到測試網中進行測試,部署合約需要花費一定的 gas,你可以在官網領取測試用的 nas 到你的錢包中用於部署測試。

在你要編寫前端頁面和你部署的合約進行互動前,你可能會用到以下兩個庫:

這兩個庫分別是對星雲 api 的封裝以及專門用於發起交易的庫,其中後者可以和瀏覽器錢包外掛程式進行互動,可以喚起錢包發起交易等。

關於 nebpay.js 和瀏覽器錢包外掛程式的互動,這裡給大家劃乙個重點,要好好看一下瀏覽器錢包外掛程式的例子,特別是「這乙個例子」裡的第 85 ~ 97 行,getaccount這個方法是用於直接從錢包外掛程式中獲取當前使用者的,因為當時沒有好好看例子,不知道有這個方法,於是乎在我開發的第乙個應用時就用了個蹩腳的實現方式,就是在合約中編寫乙個getaccount的方法,然後在需要直接獲取使用者當前錢包外掛程式中解鎖的錢包位址時,通過 nebpay.js 的simulatecall方法模擬呼叫,從而獲取到當前使用者的位址。這個教訓告訴我們,要好好地看文件和例子!

var yourcontract = function () );

};yourcontract.prototype = ,

setsuperuser: function(address) else

}};module.exports = yourcontract;

合約開發中難免會遇上需要轉入和轉出代幣的需求,在這種時候尤其要注意做好相關的記錄和判斷,乙個使用者往合約中轉入多少代幣,滿足何種條件後他可以從中取走多少代幣,在合約中都應該有相關的屬性去記錄,以及在轉出時判斷轉出的金額是否是其所應得的,否則會出現使用者盜刷合約中的代幣的情況,請牢牢地記住一條編碼原則:永遠不要相信使用者的輸入。

基於星雲鏈的智慧型合約與Dapp(二) 執行星雲鏈

創世區塊 在啟動星雲鏈之前,我們必須定義創世區塊的配置檔案。創世區塊配置 我們可以在原始碼根目錄conf default genesis.conf下,找到乙個完整的創世區塊配置例項。meta consensus 預分配的代幣 token distribution 配置檔案 我們在啟動乙個星雲節點前,...

區塊鏈智慧型合約開發小記

使用 python和 solidity語言,drf框架開發智慧型合約的一些踩坑記錄。compile source和compile standard方法都無法import 檔案進行編譯,提示找不到檔案,使用compile files方法吧。compile files 方法裡面合約路徑不能有冒號,使用相...

阿希鏈 智慧型合約開發環境搭建

asch智慧型合約支援在macos ubuntu 和windows三種平台下進行開發。基本安裝步驟如下 由於asch智慧型合約開發環境基於node.js及vscode為搭建,除了基礎依賴環境與系統平台相關外其餘部分在不同平台上類似。故基礎依賴環境分系統介紹,其餘部分統一介紹。基礎依賴環境主要包括 包...