Детерминированность
Детерминированность (от лат. determinans — определяющий) — определённость.
Детерминированность может подразумевать определяемость для конкретного алгоритма. Под жёсткой детерминированностью процессов в мире понимается то, что у каждого следствия есть строго определённая причина. В таком смысле детерминированность является антонимом случайности.
Но детерминированность не всегда равна предопределённости. Например, может быть детерминированность будущим, когда субъект предполагает, что цели на будущее определяют его поведение в настоящем.
Детерминированность в решении какой-либо практической задачи или в алгоритме означает, что способ решения задачи определён однозначно в виде последовательности шагов. На любом из них не допускаются никакие двусмысленности или недомолвки.
При применении алгоритма к одним и тем же исходным данным должен получаться всегда один и тот же результат, поэтому, например, процесс преобразования информации, в котором участвует бросание монеты, не является детерминированным и не может быть назван алгоритмом. |
Детерминированность в блокчейне
В технологии блокчейн детерминизм алгоритмов важен при создании и выполнении смарт-контрактов.
Децентрализация и отсутствие доверия в блокчейне возможны потому, что каждый узел в цепочке проверяет каждую транзакцию, согласует текущие состояния системы и создает новый блок детерминированным образом. Например, когда новый пользователь создает кошелёк в блокчейне, пользователю необходимо дождаться синхронизации кошелька с текущим состоянием блокчейна. Когда кошелек синхронизирован, пользователь может взаимодействовать, отправлять и получать средства. Этот процесс следует тем же правилам и создаёт действительную запись транзакций для каждого пользователя (узла). И любой узел в сети может подтвердить эту транзакцию.
Смарт-контракт должен быть детерминированным, потому что каждый узел сети должен быть способен выдавать один и тот же результат, когда для метода вводятся одни и те же входные данные. Если выполнение смарт-контракта на разных узлах дает разные выходные данные, то это нарушает протокол консенсуса, и смарт-контракт становится бесполезным.
Таким образом, смарт-контракты должны быть детерминированными и избегать недетерминированных функций.