Сравнение
Сравнение TVM в TON и Tycho
TON и Tycho совместимы на уровне TVM, поэтому модель исполнения совпадает. Tycho использует отдельную реализацию TVM, которая написана на Rust.
Разница проявляется только в отдельных opcode и связанных с ними правилах:
- В Tycho реализована защита от replay-атак между сетями. Отдельных действий от разработчика не требуется, но полезно понимать, как это влияет на
CHKSIGNUиCHKSIGNS. Подробнее см. Проверка подписи в TON и Tycho. - В Tycho не реализована BLS-криптография на уровне TVM.
Opcode
| Opcode | Tycho | TON |
|---|---|---|
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 отсутствуют.