NEO 编程日活动:编写智能合约
周六参加了 NEO区块链编程日-用python来写智能合约,记录下。
环境准备
docker 安装 neo-privatenet
sudo apt install docker.io
sudo docker pull cityofzion/neo-privatenet
sudo docker run --rm -d --name neo-privatenet -p 20333-20336:20333-20336/tcp -p 30333-30336:30333-30336/tcp cityofzion/neo-privatenet
docker 镜像体积比较大,国内下载速度慢的话可以用 DaoCloud 加速器。
neo-python 项目初始化
这是 neo 的 python sdk,需要 python 3.6 及以上版本,ubuntu 18.04 自带的即可满足,否则可选择 ppa 安装:
sudo apt install software-properties-common python-software-properties
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.6 python3.6-dev python3.6-venv python3-pip libleveldb-dev libssl-dev g++
拉取项目并创建 Python 虚拟环境:
git clone https://github.com/CityOfZion/neo-python.git
cd neo-python
sudo apt install python3-pip
pip3 install virtualenv
virtualenv -p python3 venv
source venv/bin/activate
pip install -r requirements.txt
pip install -e .
愉快地玩耍
输入 np-prompt -p
进入 neo 命令行,开始各项操作。
比如打开 neo-python 项目根目录自带的钱包,默认密码为 coz
:
neo> open wallet neo-privnet.sample.wallet
[password]> ***
Opened wallet at neo-privnet.sample.wallet
neo>
写智能合约
CityOfZion/python-smart-contract-workshop 项目包含了四个例子,注释里也有详细说明。可以把这四个文件复制到 neo-python 里,逐个尝试下。config deug on
打开调试信息显示。
build&test
写完 .py
文件先 build and test,
如:build 4-domain.py test 0710 05 True False query ["test.com"]
,build 命令格式:build path/to/file.py test {input_params} {return_type} {needs_storage} {needs_dynamic_invoke} param1 param2 etc..
import
引入 build 产生的 .avm
文件:import contract 4-domain.avm 0710 05 True False
之后输入 各项信息及密码:
[Contract Name] > domain
[Contract Version] > 1
[Contract Author] > tt
[Contract Email] > aaa@bbb.com
[Contract Description] > test domain
记录下 hash 便于后续调用,也可以用 contract search
命令查找智能合约。
编译和发布智能合约需要消耗 GAS
,GAS
和 NEO
是 neo 区块链里面的俩种通货。
use
testinvoke xxxxxx query ["test.com"]
,其中xxxxxx 表示 contract hash。