如何使用CasperLabs編寫AssemblyScript智慧合約

買賣虛擬貨幣

casperlabs維護@casperlabs/contract以允許開發人員使用assemblyscript建立智慧合約。程式包源位於主casperlabs儲存庫中。

安裝

對於每個智慧合約,有必要建立一個專案目錄並對其進行初始化。

mkdir project

cd project

npm init

該過程提示有關專案的各種詳細資訊;您可以按照自己的意願回答問題,但可以放心地預設所有設定,除非應遵循的約定 。npm initnameyour-contract-name

然後在專案目錄中安裝程式集指令碼和此程式包。

npm install --save-dev [email protected]

npm install --save @casperlabs/contract

合約api文件

可以在https://www.npmjs.com/package/@casperlabs/contract上找到assemblyscript合同api文件。

用法

將彙編指令碼的指令碼條目新增到專案的package.json;請注意,合同名稱用於wasm檔案的名稱。

{

"name": "your-contract-name",

...

"scripts": {

"asbuild:optimized": "asc assembly/index.ts -b dist/your-contract-name.wasm --validate --optimize --use abort=",

"asbuild": "npm run asbuild:optimized",

...

},

...

}

在專案根目錄中,建立一個index.js包含以下內容的檔案:

const fs = require("fs");

const compiled = new webassembly.module(fs.readfilesync(__dirname + "/dist/your-contract-name.wasm"));

const imports = {

env: {

abort(_msg, _file, line, column) {

console.error("abort called at index.ts:" + line + ":" + column);

}

}

};

object.defineproperty(module, "exports", {

get: () => new webassembly.instance(compiled, imports).exports

});

assembly/tsconfig.json透過以下方式建立檔案:

{

"extends": "../node_modules/assemblyscript/std/assembly.json",

"include": [

"./**/*.ts"

]

}

智慧合約示例

建立一個assembly/index.ts檔案。這是合同程式碼必須去的地方。

您可以使用以下示例程式碼段演示一個非常簡單的智慧合約,該合約可以立即返回錯誤,如果在casperlabs平臺上執行該合約,則會將一條訊息寫入塊中。

//@ts-nocheck

import {error, errorcode} from "@casperlabs/contract/error";

// simplest possible feedback loop

export function call(): void {

error.fromerrorcode(errorcode.none).revert(); // errorcode: 1

}

如果您喜歡更復雜的第一份合同,可以在casperlabs github儲存庫中檢視示例合同以獲取啟發。

編譯到wasm 

要將合同編譯為wasm,請使用npm從專案根目錄執行asbuild指令碼。

npm run asbuild

如果構建成功,則dist根資料夾中將存在一個資料夾,該資料夾應位於your-contract-name.wasm

作者鄭重申明:截至發文時,作者與文中提及專案皆不存在任何利益關係。


免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;