Что такое смарт-контракт
Чем он отличается от обычной программы
Тремя свойствами, и у каждого есть своя цена.
Он детерминирован
Одни и те же входные данные всегда дают один и тот же результат, на каждой машине, поддерживающей сеть. Именно это позволяет тысячам независимых участников согласиться с итогом, не доверяя друг другу.
Он неизменяем
После публикации код не отредактировать. Ошибка остаётся навсегда, а исправление означает публикацию нового контракта и уговоры всех перейти на него.
Он исполняется сам
Ни один посредник не решает, выполнились ли условия. Если код говорит, что средства освобождаются, они освобождаются.
Почему это работает в обе стороны
Последнее свойство и есть привлекательность вместе с опасностью в одном предложении. Жаловаться некому, когда код делает то, что в нём написано, вместо того, что задумывалось.
Пример, которым вы уже пользуетесь
USDT это смарт-контракт. USDC тоже, и любой токен, не являющийся собственной монетой сети, тоже.
Контракт ведёт реестр того, у кого сколько, и правила перемещения между держателями. Отправляя USDT, вы вызываете функцию этого контракта, и поэтому перевод стоит больше газа, чем отправка нативной монеты сети: контракт должен отработать.
Этим же объясняется, почему один и тот же токен ведёт себя как отдельный актив в каждой сети. Есть один контракт в Ethereum, другой в TRON, третий в Solana, и друг о друге они не знают ничего. Вот механизм, стоящий за границей сетей, на которой теряются средства при отправке через неё.
Чем он не работает и где ломается
Чем смарт-контракт не работает
Юридическим договором. Название неудачное и путает людей по-настоящему.
Правовое соглашение исполняется через суд, его можно толковать, оспаривать и признавать недействительным. Смарт-контракт просто исполняется. У него нет понятия умысла, справедливости или исключительных обстоятельств, и ни один судья не отменит корректно проведённую им транзакцию.
Часть схем сочетает обе вещи: правовой документ регулирует отношения, а код отвечает за механику. Такое сочетание работает. Считать код правовым инструментом не работает.
Где лежит риск
В коде, и статистика тут не успокаивает.
Ошибки в опубликованных контрактах стоили миллиарды долларов, а неизменяемость, делающая контракты надёжными, делает их ошибки постоянными. Мосты между сетями оказались самой атакуемой категорией из всех по простой причине: за сложным кодом там лежат крупные балансы.
Аудит снижает риск, не убирая его. Проверенный контракт просматривали люди, искавшие проблемы, и это лучше, чем ничего, и заметно меньше, чем гарантия.
При чём тут приём платежей
Меньше, чем можно подумать, и об этом стоит знать.
Платёжный шлюз, принимающий обычный перевод, никакого собственного контракта не задействует. Клиент отправляет, сеть записывает, мерчант получает зачисление. Контракты появляются в самих токенах, и это неизбежно и к текущему моменту хорошо проверено.
Существуют и более замысловатые схемы, где платёж держится в эскроу кодом контракта до выполнения условий. Они решают настоящие задачи и добавляют описанный выше риск, и большинству бизнесов, принимающих криптовалюту, трогать их незачем.