美文网首页
如何使用CasperLabs编写AssemblyScript智能

如何使用CasperLabs编写AssemblyScript智能

作者: 十万灯佛 | 来源:发表于2020-10-18 16:18 被阅读0次

CasperLabs维护@casperlabs/contract以允许开发人员使用AssemblyScript创建智能合约。程序包源位于主CasperLabs存储库中。

安装

对于每个智能合约,有必要创建一个项目目录并对其进行初始化。

mkdir project

cd project

npm init

该过程提示有关项目的各种详细信息;您可以按照自己的意愿回答问题,但可以放心地默认所有设置,除非应遵循的约定 。npm initnameyour-contract-name

然后在项目目录中安装程序集脚本和此程序包。

npm install --save-dev assemblyscript@0.9.1

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

作者郑重申明:截至发文时,作者与文中提及项目皆不存在任何利益关系。

相关文章

网友评论

      本文标题:如何使用CasperLabs编写AssemblyScript智能

      本文链接:https://www.haomeiwen.com/subject/sgscmktx.html