本文参考substrate官网给出的合约创建教程:https://docs.substrate.io/tutorials/smart-contracts/prepare-your-first-contract/

更新rust环境

更新rust环境:

rustup component add rust-src

验证是否安装了 WebAssembly :

rustup target add wasm32-unknown-unknown --toolchain nightly

如果已安装并且是最新的,该命令将显示类似于以下内容的输出:

info: component 'rust-std' for target 'wasm32-unknown-unknown' is up to date

安装cargo-contract工具

cargo-contract 是一个命令行工具,可以使用它来构建、部署和与 ink!合约交互。

添加 rust-src 编译器组件:

rustup component add rust-src

安装 cargo-contract(截至20230311,cargo-contract已更新至2.0版本,为配合本人项目,此处安装的是1.5版本,可根据自己要求选择版本进行安装)

cargo install --force --locked cargo-contract --version 2.0.0

安装过程中可能会遇到报错,尝试进行rustup更新,并再次安装:

rustup update

可以通过运行以下命令验证安装并学习可用的命令:

cargo contract --help

安装substrate合同节点

使用以下命令安装substrate合同节点:

cargo install contracts-node --git https://github.com/paritytech/substrate-contracts-node.git --tag v0.24.0 --force --locked

截至20230312最新的tag版本为0.24.0,若需下载最新版本,可在网址上找到最新的tag版本替代:https://github.com/paritytech/substrate-contracts-node/tags

安装过程中报如下错误: 按照提示安装protobuf-compiler:

sudo apt-get update

sudo apt-get install protobuf-compiler

安装过程中遇到无法连接github的问题,参考该文章成功解决:https://blog.csdn.net/voshv/article/details/127120400

安装结束后,使用以下命令检查是否安装成功:

substrate-contracts-node --version

创建智能合约项目

本节以“sharks”项目为例,创建一个智能合约项目

创建一个名为“sharks”的智能合约项目

cargo contract new sharks

使用vscode打开项目

cd sharks

code .

开启substrate合约节点

开启substrate合约节点:

substrate-contracts-node --log info,runtime::contracts=debug 2>&1

开启成功会显示如下图信息:

上传Ink!合约代码

不关闭substrate合约节点的终端,新建一个终端,编译该合约:

cd sharks

cargo +nightly contract build

编译过程中可能遇到以下报错:

报错1: 根据提示安装cargo-dylint即可:

cargo install cargo-dylint

报错2: 根据提示安装binaryen:

sudo apt-get install binaryen

部署合约 打开浏览器,访问: https://polkadot.js.org/apps/#/explorer 点击左上角图标: 在展开的菜单中点击development: 点击local node: 点击转换: 点击“合约”: 选择“upload & deploy code”: 找到需要部署的.contract文件: 点击继续: 设置完成后,点击部署: 部署成功:

调用已部署的ink!合约

相关阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。