У вас есть 2 компьютера. Один на 100% оффлайн и, следовательно, ему доверяют. Другое в сети. Закрытые ключи хранятся на автономном компьютере, и онлайн-компьютер не имеет к ним доступа. Есть ли способ подписать транзакцию с помощью офлайн-компьютера, а затем вручную (набрав клавиатуру) передать ее на онлайн-компьютер, чтобы он передал ее в блокчейн?
Мы в MyEtherWallet.com внедрили инструмент офлайн-транзакций именно для этого. В то время как большинство людей, которые являются фанатиками холодного хранения, знают командную строку и внутреннюю работу цены на газ и одноразового номера, это позволяет вам делать это через графический интерфейс.
Перейдите на вкладку «Оффлайн-транзакция» через свой онлайн-компьютер. Здесь вы будете генерировать текущую цену на газ и одноразовый номер.
Введите адрес ОТ в поле. Обратите внимание, что это адрес, ОТ которого вы отправляете, а не КОМУ. Это генерирует одноразовый номер и цену газа.
Перейдите на офлайн-компьютер. Введите АДРЕС КОМУ и СУММУ, которую вы хотите отправить.
Введите ЦЕНУ НА ГАЗ, как она была показана вам на вашем онлайн-компьютере на шаге № 1.
Значение GAS LIMIT по умолчанию равно 21000. Это покрывает стандартную транзакцию. Если вы отправляете на контракт или включаете дополнительные данные с вашей транзакцией, вам нужно будет увеличить лимит газа. Любой лишний газ будет возвращен вам.
Введите NONCE, как это было показано на вашем онлайн-компьютере на шаге № 1. Если хотите, введите некоторые данные. Данные необязательны. Если вы вводите данные, вам нужно будет включить более 21 000 лимита газа по умолчанию. Все данные в формате HEX. Выберите файл кошелька или введите/вставьте свой закрытый ключ и разблокируйте кошелек.
Нажмите кнопку «СОЗДАТЬ ПОДПИСАННУЮ ТРАНЗАКЦИЮ».
Поле под этой кнопкой будет заполнено вашей подписанной транзакцией. Скопируйте это и переместите обратно на свой онлайн-компьютер, или вы можете использовать предоставленный QR-код.
На своем онлайн-компьютере вставьте подписанную транзакцию в текстовое поле на шаге 3 и нажмите «ОТПРАВИТЬ ТРАНЗАКЦИЮ». Это будет транслировать вашу транзакцию.
В качестве альтернативы вы можете использовать другие службы для трансляции подписанной транзакции. В Etherscan есть поле, которое вы можете использовать для трансляции транзакций.
drcode на Reddit создал инструмент для декодирования подписанной транзакции, чтобы вы могли убедиться, что он делает то, что говорит.
К вашему сведению, все в MyEtherWallet почти на 100% отключено от сети. Единственное, что покидает ваш компьютер при отправке, это подписанная транзакция , которая генерируется вашим браузером. Мы также получаем одноразовый номер и цену газа, поэтому вы должны генерировать эти биты информации онлайн.
Я себе что-то подобное поставил. Я купил глупый простой ноутбук, на котором работает узел, который по понятным причинам не подключается к сети и никогда не был в сети. Я использую это устройство для подписи транзакций неофициальным методом RPC eth.signTransaction
. Затем вы берете результат этого метода и записываете его на USB-накопитель, перемещаете содержимое на другой компьютер и отправляете транзакцию с использованием файла eth.sendRawTransaction
.
Поскольку компьютер, находящийся в автономном режиме, не может определить одноразовый номер (он не имеет никакого состояния и будет думать, что одноразовый номер всегда равен 0), поэтому вы всегда должны сами указывать правильный одноразовый номер; это не так сложно, вам просто нужно сделать это eth.getTransactionCount(addr)
на компьютере, у которого есть доступ к Интернету.
Если вы можете установить Node.js
на свой автономный компьютер и скопировать некоторые файлы javascript (с зависимостями модулей, которые были получены на онлайн-компьютере с помощью npm
), то на ум приходят две похожие библиотеки. Любая из которых может быть использована для подписи необработанной транзакции.
Полученная транзакция представляет собой просто закодированную в шестнадцатеричном формате строку, которую можно скопировать с автономного компьютера, а затем передать в сеть Ethereum с любого онлайн-компьютера... либо с помощью локального узла Ethereum, либо отправив ее на один (или несколько) общедоступных серверов шлюза. который будет принимать и пересылать необработанные транзакции.
библиотеки :
общедоступные шлюзы Ethereum :
Я использую сейчас следующий метод. На отключенном от сети компьютере с проверенной загруженной версией myetherwallet и закрытым ключом, сохраненным в Keepass. У меня есть общедоступный адрес отправителя, доступный на моем смартфоне. На своем смартфоне на офлайн-странице mew я ввожу адрес отправителя, чтобы получить одноразовый номер и цену газа. Я вручную ввожу эти данные на моем автономном компьютере. Я ввожу адрес назначения на своем автономном компьютере (вы можете отсканировать его с помощью qr-пистолета), я генерирую транзакцию и подписываю ее. Я копирую и вставляю код в QtQr, чтобы создать QR-код. (По какой-то причине qr-код, сделанный из mew, был слишком маленьким) Я сканирую этот код своим смартфоном и транслирую его на etherscan или myetherwallet.
Создание базовых транзакций с использованием некоего эзотерического «автономного графического интерфейса» MyEtherWallet (который должен быть подключен к Интернету и, таким образом, является «онлайн-графическим интерфейсом», несмотря на вводящее в заблуждение название) не представляет особой ценности или достижения. Etherscan предоставлял эту функциональность задолго до MEW.
Что БЫЛО бы впечатляющим, так это возможность использовать интуитивно понятный / собственный графический интерфейс для отправки, обмена и взаимодействия с контрактами dApp (даже, возможно, через их веб-порталы), но вместо того, чтобы рисковать своими средствами, имея свой закрытый ключ ( также известное как хранилище ключей) на подключенном к Интернету компьютере (только с веб-диалоговым окном с кнопкой «ОК» между вашими средствами и злоупотреблением злоумышленником), имеющим только общедоступный адрес, используемый MEW и / или dApps, и они обеспечивают необработанные транзакции для копирования/загрузки для автономной подписи (любыми способами, никто не заботится о графическом интерфейсе на бэкэнде), а также возможность либо транслировать подписанную транзакцию, либо проверять, была ли/когда она была транслирована.
Я не знаю, почему сейчас это так излишне сложно. Почему MEW не позволяет мне просто указать свой общедоступный адрес ETH, чтобы использовать графический интерфейс на моем компьютере, подключенном к Интернету?
Микко Отамаа