Сравнение

Сравнение TVM в TON и Tycho

TON и Tycho совместимы на уровне TVM, поэтому модель исполнения совпадает. Tycho использует отдельную реализацию TVM, которая написана на Rust.

Разница проявляется только в отдельных opcode и связанных с ними правилах:

  • В Tycho реализована защита от replay-атак между сетями. Отдельных действий от разработчика не требуется, но полезно понимать, как это влияет на CHKSIGNU и CHKSIGNS. Подробнее см. Проверка подписи в TON и Tycho.
  • В Tycho не реализована BLS-криптография на уровне TVM.

Opcode

OpcodeTychoTON
SIGNDOMAIN
SIGNDOMAIN_POP
SIGNDOMAIN_PUSH
BLS_VERIFY
BLS_AGGREGATE
BLS_FASTAGGREGATEVERIFY
BLS_AGGREGATEVERIFY
BLS_G1_ADD
BLS_G1_SUB
BLS_G1_NEG
BLS_G1_MUL
BLS_G1_MULTIEXP
BLS_G1_ZERO
BLS_MAP_TO_G1
BLS_G1_INGROUP
BLS_G1_ISZERO
BLS_G2_ADD
BLS_G2_SUB
BLS_G2_NEG
BLS_G2_MUL
BLS_G2_MULTIEXP
BLS_G2_ZERO
BLS_MAP_TO_G2
BLS_G2_INGROUP
BLS_G2_ISZERO
BLS_PAIRING
BLS_PUSHR
CHKSIGNU
CHKSIGNS
Остальные

SIGNDOMAIN*

Опкоды SIGNDOMAIN* добавлены в Tycho для управления стеком доменов подписи:

  • SIGNDOMAIN кладёт на стек текущий домен подписи.
  • SIGNDOMAIN_POP делает то же самое и удаляет значение из стека доменов подписи.
  • SIGNDOMAIN_PUSH добавляет домен подписи в стек доменов подписи и делает его текущим.

BLS в Tycho TVM

В Tycho TVM не реализована BLS-криптография. Соответствующие опкоды BLS_*, которые доступны в TON, в Tycho отсутствуют.