Это продолжение учебника hello world, в котором рассказывается, как быстро создать и протестировать код смарт-контракта перед импортом.
Если вы еще не прошли через руководства по настройке hello world и dev environment, я предлагаю вам быстро просмотреть их, прежде чем продолжить эту публикацию.
Учебное пособие по смарт-контрактам Hello World
Учебное пособие по настройке среды разработки
В учебнике hello world мы рассмотрели шаги по отдельному созданию и импорту файла контракта. Это упражнение полезно, когда у вас есть код контракта, построенный до разумного уровня, и вы хотите протестировать его в своей частной сети. Однако есть гораздо более быстрый способ протестировать код контракта, даже не импортируя его!
В cli neo-python есть команда build
. Мы вызвали его в руководстве hello world, чтобы скомпилировать наш py
файл в avm
файл со следующей структурой:
build path/to/file.py
Хорошая новость заключается в том, что эта команда build
также принимает дополнительные параметры, которые объединяют контракт import
и testinvoke
.
build {path/to/file.py} test {input_types} {return_type} {needs_storage} {needs_dynamic_invoke} {test_param} ...
Как видите, она выглядит очень знакомой для команды contract import
, но также позволяет добавлять все аргументы в конец команды для запуска теста. Например:
build smartContracts/helloWorld.py test "" 01 False False
Обратите внимание, что команда ссылается на файл .py
, а не на файл .avm
, по сравнению с contract import
. Это потому, что он выполнит компиляцию и тестовый вызов нового .avm
в одной команде.
Давайте взглянем на чуть более интересный контракт для конкатенации строк.
from boa.builtins import concat
def Main(initialString, args):
result = initialString
for word in args:
if result == None:
result = word
else:
result = concat(result,' ')
result = concat(result,word)
print(result)
return result
Этот контракт принимает два аргумента, начальную строку и массив. Он выполняет итерацию по каждому элементу в массиве и объединяет каждое значение с начальной строкой. Затем это становится возвращаемым значением. Чтобы запустить это, мы можем использовать следующую команду:
build smartContracts/concat.py test 0710 07 False False sunshine ['hello','world','things','otherthings']
Вход принимает два аргумента: один имеет тип String, представленный 07
, другой - тип Array, представленный 10
, а возвращаемый тип будет String, представленный 07
. Полный список сопоставлений типов данных и байтов можно найти в официальной документации NEO.
Смарт-контракт NEO: типы параметров
Теперь, когда мы знаем, как использовать команду сборки с тестовым вызовом, теперь мы можем быстро итеративно разрабатывать и тестировать новый код без необходимости импортировать код контракта на каждом этапе!
Получайте лучшие предложения по программному обеспечению прямо в свой почтовый ящик
Если вы нашли этот урок полезным, сделайте пожертвование по адресу:
NEO/GAS/NEP5 tokens: AR8rRBxgWw5siKsp1dUmfTLy6QQTjcqoqB
ETH/ERC20 tokens: 0x575970777095575fDd12d9cD3B105b41D8DD1344
NANO/XRB: xrb_3rpmim57tqbrb8hhjfzm1x5uk135yhmgqoj7j7wsufpo53e3ad5k93ggy1cd
LTC: M8nZ7FwJXSMAkAfiGmTKjbB7MWpdwsp52d
BTC: 3LcA1ztxFjghexRNWPyGXA59VFU3gF4PTz
BCH: 1LXLiF7SjWGday6gm61hzbYHKbSAMevwXo