Ранее для компиляции смарт контрактов рекомендовалось использовать инструмент 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.id/@atticlab
Telegram Chat: https://t.me/atticlabeosb
Telegram channel: https://t.me/eos_atticlab
Github: https://github.com/atticlab
@atticlab, поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за количество опубликованных постов
Вы можете нажать на бейдж, чтобы увидеть свою страницу на Доске Почета.
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
Чтобы поддержать вашу работу, я также проголосовал за ваш пост!