Привязка адресов учетных записей к узлам

Существует ли какая-либо процедура, позволяющая использовать учетные записи только на одном узле? Например, я запускаю узел Ethereum на устройстве: А. У меня две учетные записи. Если я запущу экземпляр geth на другом устройстве: B и скопирую содержимое хранилища ключей устройства: A на устройство: B, я смогу использовать эти учетные записи, если знаю пароли. Есть ли способ сделать эти учетные записи уникальными для устройства, т. е. эти учетные записи нельзя использовать на других устройствах. Могу ли я связать URI enode с адресом учетной записи, чтобы я мог идентифицировать устройство с именем учетной записи?

PS: я работаю на частном блокчейне

Ответы (1)

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

Текущие реализации Ethereum не позволяют этого (вы всегда можете подключиться к сети в качестве узла, если у вас есть его закрытый ключ (файл хранилища ключей и пароль)).

Вам нужно будет сделать привязку снаружи; например, путем создания сертификата TLS для хоста, у которого есть учетная запись. Сертификат свяжет этот адрес с определенными уникальными атрибутами хоста (уличный адрес, организация, домен и т. д.).

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

Обратите внимание, что все, что находится в цепочке блоков, общедоступно, поэтому его нельзя использовать для обмена конфиденциальными данными.

Редактировать:

Вы также можете взглянуть на разрешенные цепочки блоков, поскольку они могут предложить более доступное решение.