Я хочу создать программу (на виртуальной машине Ethereum), которая может получить доступ к некоторым данным при определенных условиях (только при авторизации). Итак, программа проверяет авторизацию, а затем (в конечном итоге) обращается к данным.
Что, если недобросовестный узел запустит другую программу, которая обращается к данным без проверки авторизации? Предлагает ли Ethereum некоторую защиту от узлов, которые хотят выполнить программу «в одиночку»? Или мне следует реализовать что-то, что позволит получить доступ к этим данным только в том случае, если большая часть узлов достигнет консенсуса?
Надеюсь понятно объяснил. Спасибо
Чтобы было ясно: у вас нет конфиденциальности в блокчейне.
Вы можете хранить некоторые данные в смарт-контракте, а затем предоставлять некоторые условия доступа. Но это ограничивает только данные, которые можно увидеть, вызвав код смарт-контракта.
Принцип работы блокчейна, по крайней мере, на данный момент, заключается в том, что каждый, кто занимается майнингом, имеет каждый бит информации о блокчейне, хранящийся на его диске. Таким образом, никто не мешает им просто зайти на диск и найти что-нибудь, хранящееся в блокчейне, без использования каких-либо вызовов функций или взаимодействия со смарт-контрактами.
Есть несколько методов, которые можно использовать для сокрытия информации в блокчейне, но на самом деле они не связаны с блокчейном. Блокчейн по умолчанию не обеспечивает никакой конфиденциальности.
Чтобы ответить на другой вопрос: если узел выполняет код, отличный от того, который хранится в смарт-контракте, он будет обнаружен сетью и не подтвердит выполнение.
Если ваши данные находятся в контракте, они могут быть прочитаны каждым узлом без запроса разрешения. Эфириум гарантирует только правильное изменение состояния, описанное в вашем контракте. Правильный означает, что он был инициирован транзакцией с достаточным количеством газа и что результат выполнения правильно опубликован в блокчейне. Это гарантировано, потому что каждый узел выполняет контракт для правильного майнинга блока. Таким образом, другие узлы увидят, что дерево состояний, сгенерированное злоумышленником, неверно, и отклонят блок как недействительный.
Роланд Кофлер