# 合约部署、调用和更新

# 智能合约IDE方式

# 1. 注册账户

访问测试网络在线钱包 (opens new window) 注册钱包帐户

# 2. 申领测试Token

注册完成后, 浏览器访问 https://testnet.gxchain.org/gxc/get_token?your_account_name申领测试币, 请将your_account_name 替换为你的测试网络帐户名

# 3. IDE下载

通过智能合约IDE,可以编写、编译、部署、调用智能合约。 点击下载 (opens new window)

# 4. 导入账户

先去步骤1中的在线钱包 (opens new window)找到自己的活跃权限私钥

再打开客户端,进入设置页面,导入账户

提示

密码不会上传到服务器,如果忘记需要移除账户重新导入

# 5. 选择模板工程

# 6. 编译

# 7. 部署

部署之前需要先解锁钱包

# 8. 调用

与部署一样,也需要先解锁钱包

# 本地命令行方式

# 1. GXChain源码编译

如果不想使用智能合约IDE工具,或者想构建一个更加稳定可靠的编译环境;可以本地编译GXChain程序,通过命令行方式编译、部署、调用智能合约;GXChain源码编译,目前支持ubuntu系统和mac系统:

# 2. 使用模板创建合约

使用gxx的模板创建一个helloworld合约

gxx -n helloworld

# 3. 编译合约,生成wast和abi

编译合约,生成wast和wasm文件

gxx -o helloworld/helloworld.wast helloworld/helloworld.cpp

生成abi文件

gxx -g helloworld/helloworld.abi helloworld/helloworld.cpp

# 4. 部署合约

需要开启cli_wallet,连接本地节点或者远程testnet节点

./programs/cli_wallet/cli_wallet -swss://testnet.gxchain.org --chain-id c2af30ef9340ff81fd61654295e98a1ff04b23189748f86727d0b26b40bb0ff4

导入钱包私钥

# 如果是新钱包,需要设置一个解锁密码,此处为mylocalpassword

new >>> set_password mylocalpassword

# 解锁
locked >>> unlock mylocalpassword

# 导入钱包私钥
unlocked >>> import_key your_account_name your_private_key

# 部署合约, 指定合约名为helloworld,发起的钱包帐户为your_accoutn_name, 0和0分别为vm type和vm version,./helloworld为wast/abi文件所在路径, GXC表示手续费资产类型,true表示发起广播
unlocked >>> deploy_contract helloworld your_account_name 0 0 ./helloworld GXC true

# 5. 调用合约

部署合约成功后,可以使用call_contract接口调用合约

unlocked >>> call_contract nathan helloworld null hi "{\"user\":\"zhuliting\"}" GXC true

# 6. 更新合约

// hello120301为合约名
unlocked >>> update_contract hello120301 zhao-123 /Users/zhaoxiangfei/code/contracts_work/example_contract_02/helloworld GXC true