如何为1.3.0版编写EOS Smart合同!

推荐使用eosiocpp仪器,以符合EOSIO安装随附的智能合约要求。 尽管eosiocpp在1.3.0版本的智能合约编译和.abi文件下仍然可用,但仍建议使用新的EOSIO合约开发工具包(EOSIO.CDT)进行进一步维护(此功能将在以后的版本中进行改进)。

EOSIO合同开发工具包在单独的存储库中提供。

请按照以下步骤进行安装:

git clone-递归 https://github.com/eosio/eosio.cdt

cd eosio.cdt

要运行构建并设置所有必要的关联,首先需要指定CORE_SYMBOL EOSIO区块链。 启动测试网络时,默认情况下不应使用EOS名称,只需运行./eosio_build.sh [CORE_SYMBOL SYS。 默认情况下]您可以在文件«CMakeLists.txt»中检查CORE_SYMBOL_NAME。 可以通过EOSIO操作从软件目录[bydefaultactioneos]来设置CORE_SYMBOL。/eosio_build.sh-s EOS [用于丛林测试网]。

./build.sh SYS固件./build.sh EOS

-此过程可能需要很长时间。

将eosio.cdt核心安装到目录/usr/local/eosio.cdt中,并在/ usr / local / bin的仪器上建立符号链接,以进行更好的锻炼

须藤./install.sh

交互的主要工具包eosio-cpp — C ++编译器

eosio-cc — C编译器

eosio-ld —链接器

eosio-abigen — ABI生成器。

要将智能合约的源.cpp文件编译为.wasm格式并生成.abi,您可以一步执行[从该directory.cpp文件通过设置其方式]

eosio-cpp new_contract.cpp -o new_contract.wasm — abigen

一个选项-abigen,将指定eosio-cpp在[不创建此选项文件new_contract.wasm的情况下]之后运行eosio-abigen。 如果使用参数-o将输出文件表示为.wasm(例如new_contract.wasm),则eosio-cpp将向ABI报告具有相同.abi名称的文件创建。

该步骤将创建两个文件new_contract.wasm和new_contract.abi

与eosiocpp生成器ABI相比,eosio-abigen具有样式属性C ++ 11和GNU来声明操作和表,也就是说,在生成.abi文件之前,您需要标记file.cpp中的所有操作和表。以下方式。

宣布为ABI生成采取行动的方法:

[[eosio :: action]]

void action_name(account_name user){

//一些

}

__attribute __((eosio_action))

无效action_name(account_name用户){

//一些

}

声明用于ABI生成表的方法:

struct [[eosio :: table]] table_name {

uint64_t account_name;

/ *其他字段* /

};

struct __attribute __((eosio_table))table_name {

uint64_t account_name;

/ *其他字段* /

};

您应该在文件末尾指定EOSIO_ABI,以传输智能合约的类名称以及所有操作。 因此,通过添加此信息,可以使.cpp文件与Shell ISM EOSIO兼容。

EOSIO_ABI(class_name,(action1)(action2)(action3))

注意:通过eosio-abigen生成的文件ABI可能并非严格正确。 .abi文件的进一步检查,控制和更正将使您的智能合约正常运行。

部署和更新与上一个类似。

跟着我们!

网站:https://attic.tech/

推特:https://twitter.com/atticlab_it

脸书:https://www.facebook.com/atticlab/

Reddit:https://www.reddit.com/r/atticlabeosb/

Steemit:https://steemit.com/eos/@attic-lab

媒介:https://medium.com/eosatticlab

Golos:https://golos.io/@atticlab

电报聊天:https://t.me/atticlabeosb

电报频道:https://t.me/eos_atticlab

GitHub:https://github.com/atticlab