Монеты и сети

Смарт-контракт это: что он делает и где его риски

Основы Также известно как что такое смарт контракт в блокчейне смарт контракт это как работает смарт контракт смарт контракт пример

Коротко

Смарт-контракт это программа, хранящаяся в блокчейне и запускающаяся, когда её кто-то вызывает. Никто не исполняет её по запросу и никто не может остановить на полпути: правила зафиксировались в момент публикации кода, и каждый участник сети вычисляет один и тот же результат.

Что такое смарт-контракт

Чем он отличается от обычной программы

Тремя свойствами, и у каждого есть своя цена.

Он детерминирован

Одни и те же входные данные всегда дают один и тот же результат, на каждой машине, поддерживающей сеть. Именно это позволяет тысячам независимых участников согласиться с итогом, не доверяя друг другу.

Он неизменяем

После публикации код не отредактировать. Ошибка остаётся навсегда, а исправление означает публикацию нового контракта и уговоры всех перейти на него.

Он исполняется сам

Ни один посредник не решает, выполнились ли условия. Если код говорит, что средства освобождаются, они освобождаются.

Почему это работает в обе стороны

Последнее свойство и есть привлекательность вместе с опасностью в одном предложении. Жаловаться некому, когда код делает то, что в нём написано, вместо того, что задумывалось.

Пример, которым вы уже пользуетесь

USDT это смарт-контракт. USDC тоже, и любой токен, не являющийся собственной монетой сети, тоже.

Контракт ведёт реестр того, у кого сколько, и правила перемещения между держателями. Отправляя USDT, вы вызываете функцию этого контракта, и поэтому перевод стоит больше газа, чем отправка нативной монеты сети: контракт должен отработать.

Этим же объясняется, почему один и тот же токен ведёт себя как отдельный актив в каждой сети. Есть один контракт в Ethereum, другой в TRON, третий в Solana, и друг о друге они не знают ничего. Вот механизм, стоящий за границей сетей, на которой теряются средства при отправке через неё.

Чем он не работает и где ломается

Чем смарт-контракт не работает

Юридическим договором. Название неудачное и путает людей по-настоящему.

Правовое соглашение исполняется через суд, его можно толковать, оспаривать и признавать недействительным. Смарт-контракт просто исполняется. У него нет понятия умысла, справедливости или исключительных обстоятельств, и ни один судья не отменит корректно проведённую им транзакцию.

Часть схем сочетает обе вещи: правовой документ регулирует отношения, а код отвечает за механику. Такое сочетание работает. Считать код правовым инструментом не работает.

Где лежит риск

В коде, и статистика тут не успокаивает.

Ошибки в опубликованных контрактах стоили миллиарды долларов, а неизменяемость, делающая контракты надёжными, делает их ошибки постоянными. Мосты между сетями оказались самой атакуемой категорией из всех по простой причине: за сложным кодом там лежат крупные балансы.

Аудит снижает риск, не убирая его. Проверенный контракт просматривали люди, искавшие проблемы, и это лучше, чем ничего, и заметно меньше, чем гарантия.

При чём тут приём платежей

Меньше, чем можно подумать, и об этом стоит знать.

Платёжный шлюз, принимающий обычный перевод, никакого собственного контракта не задействует. Клиент отправляет, сеть записывает, мерчант получает зачисление. Контракты появляются в самих токенах, и это неизбежно и к текущему моменту хорошо проверено.

Существуют и более замысловатые схемы, где платёж держится в эскроу кодом контракта до выполнения условий. Они решают настоящие задачи и добавляют описанный выше риск, и большинству бизнесов, принимающих криптовалюту, трогать их незачем.

Частые вопросы

Код в блокчейне, который исполняется сам при вызове по правилам, изменить которые потом нельзя.

Нет. Это программа. Правовая сила берётся из отдельного соглашения.

После публикации нет. Часть контрактов делают с механизмом обновления, и тогда снова появляется сторона, способная что-то менять.

Ethereum, Solana, BNB Chain, TON и большинство современных цепочек. Биткоин поддерживает лишь ограниченные сценарии.

Механизм надёжен. Конкретный контракт хорош настолько, насколько хорош его код, и аудит помогает без гарантий.

Адрес, по которому контракт опубликован в сети. Именно его добавляют в кошелёк, чтобы он начал видеть токен, который раньше не отображался.

Тот, кто его вызывает. Отправитель перевода токена оплачивает газ за работу контракта, и поэтому такой перевод дороже отправки нативной монеты.

Проверка кода независимой командой, которая ищет уязвимости и публикует отчёт. Наличие аудита снижает риск, а гарантий не даёт.

У опубликованных с исходниками да, через обозреватель блоков. Часть контрактов опубликована только скомпилированным кодом, и прочитать их сложнее.

Статья была полезной?

Смотрите также