星云计划——智能合约代码入门
卡酷少Wechat:13260325501
星云链上的智能合约类似于面向对象编程语言中的类,合约可能包含状态变量(持久化固定化的变量)以及可以修改这些变量的函数。星云链使用NVM(Nebulas Virtual Machine)作为合约的执行引擎。JavaScript(JS)是星云支持的第一种智能合约语言,还可以用typescript写,但本文主要介绍JS。
智能合约基本结构
- 完整的智能合约必须包含三个部分:
- 一个prototype原型
- 一个init函数,该函数会在合约部署时运行一次
- 一个module导出
- 以“_”开头的函数都为private私有函数。其他为pubilc公有(private或pubilic为函数可见性)
- 下面给出一个最基本的智能合约(各项内容为空的智能合约):
“use strict”;//严格语法模式
var BankVaultContract = function () {
// nothing
};
BankVaultContract.prototype = {//prototype原型
init: function() {//init方法
// nothing
}
};
module.exports = BankVaultContract;//导出
合约部署
- 只要开发者将自己开发的智能合约(无论用JS语言还是TS语言)发送到任意一个星云节点,该合约就会分配到一个全局唯一合约地址。举例合约地址类如下(可以在上篇文章查看如何获取的相关操作):
“contract_address”:n1qsgj2C5zmYzS9TSkPTnp15bhCCocRPwno
- 同时会得到一个txhash,可用于轮询合约部署状态。如果status=1,就意味着合约被成功部署。txhash如下:
{“result”:{“hash”:”2dd7186d266c2139fcc92446b364ef1a1037bc96d571f7c8a1716bec44fe25d8″,…,”status”:1}}
- 合约一旦部署成功就对所有用户可见,只要知道合约地址就可以查看。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。