EOS生态社区区块链研习社区块链研究

EOSForce主网智能合约上传与注意事项

2018-10-27  本文已影响5人  EOS原力

本文为EOSForce.io主网智能合约教程系列文章,

全教程目录如下。

一、EOSForce主网智能合约概览:

需要的知识

通讯模型

ABI宏及应用

多索引数据库编程接口

命名规范

C++/C编程接口

二、EOSForce主网智能合约教程:

智能合约起步

EOSFORCEIO Token 合约介绍

多索引表示例

在 EOSFORCEIO 上创建一个 Token

合约中随机化

升级系统合约

怎样写 ABI 文件

三、EOSForce主网智能合约上传与注意事项:

合约编译上传流程

与联盟EOS的不同,与合约迁移注意事项

全文详细内容也可登陆官网查看:

https://eosforce.github.io/Documentation/#/zh-cn/toc/eosforce_contract

合约编译上传流程

account='你的合约账号' eosiocpp=./build/tools/eosiocpp 

#eosiocpp工具路径,可由eosforce项目编译后产生 contract_path='你的合约源码路径' 

# 编译

$eosiocpp -g contract.abi $contract_path/contract.hpp $eosiocpp -o contract.wasm $contract_path/contract.cpp 

# 上传 

leos wallet unlock --password '钱包密码' cleos -u https://w1.eosforce.cn set abi $account contract.abi cleos -u https://w1.eosforce.cn set code $account contract.wasm

与联盟EOS的不同点&合约迁移注意事项

1. transfer 转账

transfer转账消息监听,或合约内EOS系统代币transfer转账操作,使用的合约账号code是‘eosio’,而不是‘eosio.token’。 因为原力的EOSC是在系统合约内,与‘eosio.token’合约是分离的。token代币逻辑不变。

eg:合约内inline action转账

action(permission_level{_self, N(active)}, N(eosio), N(transfer),std::make_tuple(_self, to, quantity, std::string("")))         .send();

注:进行合约内转账,合约账号的active权限需要授权给eosio.code账号。

account='你的合约账号' PK='合约账户公钥' cleos set account permission $account active '{"threshold": 1,"keys": [{"key":"'$PK'", "weight":1}],"accounts": [{"permission":{"actor":"'$account'","permission":"eosio.code"},"weight":1}]}' owner -p $account'@owner'

2. 合约审核与手续费机制

免除了内存、CPU、NET的购买与使用操作。仅对action设置资源限制。 合约内对multi_index表emplace()\modify()操作的资源使用者payer参数,可以设置为0或_self本合约账号。

目前开发者开发完成智能合约后,需提交至eos原力开发者委员会进行审核。委员会对合约进行安全性审核,并对每个action通过评估设置合理手续费与资源限制后,此合约才能正常使用。

开发者需set code 、set abi上传合约。

详情可加入‘原力主网dapp开发群’微信群进行咨询。

3. 出块速度

对于依赖时间的合约,需要注意的是我们是三秒出一个块。

4. 延迟交易暂未开放

暂定下次主网升级开放支持

END

上一篇下一篇

猜你喜欢

热点阅读