Как подключиться к узлу блокчейна с помощью библиотеки Web3.py

27 июля 2023

Зачем мне нужно подключаться к узлу?

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

web3.py — это библиотека Python для подключения к этим узлам. Он не запускает свой собственный узел внутри.

Как выбрать, какой узел использовать?

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

Одно из ключевых решений — использовать локальный узел или размещенный узел.

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

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

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

Вы можете найти список программного обеспечения узла на ethereum.org.

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

Варианты размещенных узлов также можно найти на ethereum.org. Вы можете подключиться к размещенному узлу, как если бы это был локальный узел, с некоторыми оговорками. Он не может (и не должен) размещать закрытые ключи для вас, а это означает, что некоторые распространенные методы, например, w3.eth.send_transaction() недоступны напрямую. Чтобы отправлять транзакции на размещенный узел, прочитайте Работа с локальными закрытыми ключами.

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

Могу ли я использовать MetaMask в качестве узла?

MetaMask не является узлом. Это интерфейс для взаимодействия с узлом. Грубо говоря, это то, что вы получите, если превратите web3.py в расширение для браузера.

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

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

К какой сети мне следует подключиться?

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

Однако, если вы хотите протестировать эти вещи без использования реального эфира, вам необходимо подключиться к тестовой сети. Есть несколько тестовых сетей на выбор; просмотреть список на ethereum.org.

Каждая сеть имеет свою версию эфира. Основной сетевой эфир, естественно, должен быть куплен, но тестовый сетевой эфир обычно доступен бесплатно. См. Как получить эфир для моей тестовой сети?

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