开发示例合约
我们已经搭建私链并启动节点连接私链,本节我们将继续带领开发者配置环境、编写,并编译一个 NEP17 合约。
本节内容适用于多平台,如 Windows,macOS, 和 Ubuntu。
下载开发工具
-
下载并安装 Visual Studio Code
-
下载并安装 .NET 6.0 SDK
-
打开系统命令行,执行命令查看是否成功安装 SDK。
dotnet --list-sdks
如成功安装, 屏幕将显示 SDK 版本号。
安装合约模板
Neo3.SmartContract.Templates 包含最新的合约编译器以及一个 hello contract 模板,推荐安装最新版:
dotnet new -i Neo3.SmartContract.Templates
创建合约项
-
新建一个名为
Nep17
的目录作为合约项目。 -
通过命令行进入
Nep17
目录,并执行以下命令,使用合约模板生成代码文件dotnet new neo3-contract
此时
Nep17
目录下会自动创建以目录名命名的文件,Nep17.cs 和 Nep17.csproj 。如果要指定文件名,可使用参数 -n, 例如
dotnet new neo3-contract -n tokenA
编写 NEP17代码
很多开发者比较关心如何在 Neo 公链上发布自己的合约资产,下面我们就在私链上一步步实现。
-
从 GitHub 上下载 NEP17 示例 中的所有 .cs 文件并放到
Nep17
目录下。 -
删除原模板生成的文件 Nep17.cs。
-
运行 VS Code,根据提示安装 C# extension。
-
打开
Nep17
目录中的 Nep17 模板文件,参考前文 编写 NEP17 代码 。
相对于 Neo Legacy 来说, Neo N3 的 NEP17 合约模板有以下改动:
-
在智能合约类上方添加了自定义特性:
[DisplayName("Token Name")] [ManifestExtra("Author", "Neo")] [ManifestExtra("Email", "dev@neo.org")] [ManifestExtra("Description", "This is a NEP17 example")] [SupportedStandards("NEP-17")] [ContractPermission("*", "onNEP17Payment")] public class NEP17 : SmartContract ……
-
将 Transfer 事件改为首字母大写
-
移除了 Name 方法
-
添加了 _deploy 方法,合约部署后会立即执行
-
添加了 Update、Destroy 方法
-
所有 Crowdsale 方法都在 NEP17.Crowdsale.cs 文件中,开发者可以根据需要选择是否使用该文件
-
在 Transfer 方法中调用接收方的 onNEP17Payment 方法
-
实现 onNEP17Payment 以便在收到 NEP17 资产时自动执行智能合约
-
智能合约开发框架有了较大的改动。详情请参考 智能合约 API 。
更多信息,请参考 NEP-17 。
编译合约文件
编写完成后输入以下命令编译当前合约:
dotnet build
合约项目下的 bin\sc
目录将生成对应的合约文件。
更多参考
关于合约编写的更多内容,可参考 合约编写
要了解 Neo N3 合约编写的变动,请参考 N3 合约变动