Это продолжение учебника 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