Гайд по созданию смарт контрактов на EOS для версии 1.0.3
Ранее для компиляции смарт контрактов рекомендовалось использовать инструмент eosiocpp, который предоставляется с установкой EOSIO. Не смотря на то что eosiocpp не изъяли как планировалось в версии 1.3.0, для компиляции смарт контрактов и создания .abi файлов далее следует применять новый EOSIO Contract Development Toolkit (EOSIO.CDT) [последующие релизы будут улучшать именно этот].
EOSIO Contract Development Toolkit представлен в отдельном репозитории. Для установки следует выполнить следующие команды
git clone --recursive https://github.com/eosio/eosio.cdt
cd eosio.cdt
Чтобы выполнить build и установить все требуемые зависимости необходимо при запуске указать CORE_SYMBOL EOSIO blockchain. При запуске тестовой сети, вы не будете использовать имя EOS по умолчанию, просто запустив ./eosio_build.sh [по умолчанию указывается CORE_SYMBOL SYS. Можете проверить CORE_SYMBOL_NAME в файле «CMakeLists.txt»]. CORE_SYMBOL может быть настроен выполнив команду с директории программного обеспечения EOSIO [по умолчанию eos] ./eosio_build.sh -s EOS [используется для Jungle Testnet].
./build.sh SYS или ./build.sh EOS
--этот процесс может занять длительное время.
Установка core eosio.cdt в директорию /usr/local/eosio.cdt и symlinks на инструменты в /usr/local/bin для удобного использования
sudo ./install.sh
Основной набор инструментов, с которыми можно будет взаимодействовать eosio-cpp -- компилятор C ++
eosio-cc -- компилятор C
eosio-ld -- компоновщик
eosio-abigen -- генератор ABI.
Чтобы скомпилировать исходный .cpp файл вашего контракта в .wasm формат и сгенерировать .abi можно применить одну команду [с той же директории где находится .cpp файл или указав путь к нему]
eosio-cpp new_contract.cpp -o new_contract.wasm --abigen
Опция --abigen, скажет компилятору eosio-cpp запустить eosio-abigen после [без этой опции будет создан только new_contract.wasm файл]. Если имя выходного файла указано как файл .wasm с параметром -o (например, new_contract.wasm), то eosio-cpp сообщит генератору ABI о создании .abi с таким же именем.
Команда создаст два файла new_contract.wasm и new_contract.abi
В отличие от старого eosiocpp генератора ABI, eosio-abigen использует атрибуты стиля C++11 или GNU для объявления действий и таблиц. т.е перед генерацией .abi файла следует отметить все действия и таблицы в файле .cpp одним из следующих способов.
Способы объявления action для генерации ABI:
[[eosio::action]]
void action_name( account_name user ) {
// something
**}
**attribute((eosio_action))
void action_name( account_name user ){
// something
}
**
Способы объявления table для генерации ABI:
*struct [[eosio::table]] table_name {
uint64_t account_name;
/other fields */
};
struct attribute((eosio_table)) table_name {
uint64_t account_name;
/ other fields /
};
В конце файла следует прописать EOSIO_ABI, передав имя класса контракта, и все actions. Добавление этой информации сделает файл .cpp совместимым с интерпретатором ISM EOSIO.
EOSIO_ABI( class_name, (action1)(action2)(action3) )
Note: файл ABI, сгенерированный с использованием eosio-abigen, может быть не совсем корректен. Для правильной работы вашего смарт контракта следует понимать, проверять и по возможности корректировать .abi файл.
Deploy & Update смарт контрактов аналогично предыдущим версиям.
Follow us!
Website: https://attic.tech/
Twitter: https://twitter.com/atticlab_it
Facebook: https://www.facebook.com/atticlab/
Reddit: https://www.reddit.com/r/atticlabeosb/
Steemit: https://steemit.com/eos/@attic-lab
Medium: https://medium.com/eosatticlab
Golos: https://golos.io/@atticlab
Telegram Chat: https://t.me/atticlabeosb
Telegram channel: https://t.me/eos_atticlab
Github: https://github.com/atticlab