部署与调用合约
在上节我们已编译好一个NEP17合约文件(NEP17.nef )和合约描述文件(NEP17.manifest.json ),本节我们将使用Neo-CLI部署并调用该合约。
部署合约
在 Neo-CLI 中,打开前面在 准备工作 里创建的钱包 0.json,输入部署合约命令 deploy <nefFilePath> [manifestFile]
,例如:
deploy NEP17.nef
或
deploy NEP17.nef NEP17.manifest.json
输入命令后,程序会部署NEP-17合约并且自动支付手续费。
neo> deploy NEP17.nef
Script hash: 0xb7f4d011241ec13db16c0e3484bdd5dd9a536f26
Gas: 10.1477624
Signed and relayed transaction with hash=0xe03aade81fb96c44e115a1cc9cfe984a9df4a283bd10aa0aefa7ebf3e296f757
更多部署信息请参考 部署智能合约 。
调用合约
部署完成后,使用 invoke 命令调用合约:
invoke <scriptHash> <operation> [contractParameters=null] [witnessAddress=null]
例如:
invoke 0xb7f4d011241ec13db16c0e3484bdd5dd9a536f26 symbol
成功执行后,屏幕输出如下信息:
Invoking script with: '10c00c046e616d650c14f9f81497c3f9b62ba93f73c711d41b1eeff50c2341627d5b52'
VM State: HALT
Gas Consumed: 0.0103609
Evaluation Stack: [{"type":"ByteArray","value":"VG9rZW5TeW1ib2w="}]
relay tx(no|yes):
其中:
-
VM State:
HALT
表示虚拟机执行成功,FAULT
表示虚拟机执行时遇到异常退出。 -
Evaluation Stack: 合约执行结果,如果 value 是字符串或 ByteArray,则是 Base64 编码后的结果。
-
你可以在 这里 进行数据格式转换
VG9rZW5TeW1ib2w=
=>TokenSymbol
。
更多智能合调用信息请参考 调用智能合约 。