Мигрирование вашего дапда из Infura/Alchemy в GetBlock: пошаговое руководство

Мигрирование вашего дапда из Infura/Alchemy в GetBlock: пошаговое руководство

18 июня 2025 г.

Разработчики Ethereum обычно полагаются на Infura или Alchemy для легкого доступа к узлам Ethereum. GetBlock-это привлекательная альтернатива, которая обеспечивает многоцепочечную поддержку, щедрый бесплатный уровень и отличную стабильность. В этом уроке вы обнаружите, как перенести бэкэнд Truffle + Web3.js от Infura/Alchemy в GetBlock. Я быстро расскажу, почему вы должны переключить поставщиков, а затем подробно описать каждый шаг:

  • Запись на GetBlock,
  • получение конечной точки RPC,
  • повторно сконфигурировать трюфель,
  • тестирование подключения Web3,
  • Запуск развертывания, и
  • Сравнение предела скорости и различия в мониторинге.

Предварительные условия:Вам нужен существующий проект Ethereum Dapp с трюфелем и установлен Node.js. Я предполагаю, что вы использовали Infura или Alchemy (с идентификатором проекта или ключом API) и имеете мнемонический или закрытый ключ, доступный для развертывания. Начнем!

Зачем переключаться с infura или алхимии, чтобы получить Block?

  • Многоцепочечная поддержка.GetBlock позволяет вам подключаться не только к Ethereum, но и 55+ сетям блокчейна, используя API JSON-RPC, REST и WebSocket. Это позволяет вам использовать Ethereum, Bitcoin, Bnb Smart Chain, Polygon, Solana и многие другие с одной платформой. Тем временем Infura и Alchemy имеют более короткий список поддерживаемых сетей (Infura поддерживает Ethereum, прежде всего, и некоторые сети, такие как IPFS или некоторые L2S, и Alchemy поддерживает Ethereum и некоторые сети, но не BSC, в частности). Если ваш DAPP может быть больше, чем Ethereum, широкая многоцелевая поддержка GetBlock является огромным плюсом.

  • Щедрый бесплатный уровень.У каждого из этих поставщиков есть свободные планы, но их ограничения и модели различны. Бесплатный план Infura условно предоставляется около 50 000 запросов в день (в настоящее время измеряется как 3 миллиона ежедневных кредитов с некоторым ограничением ставки). Бесплатный уровень Alchemy предлагает до 100 миллионов вычислительных единиц в месяц (алхимия измеряет различные вызовы RPC в качестве различных «вычислительных единиц»). Бесплатный уровень GetBlock очень удобен для разработчиков: он предлагает 50 000 запросов в день (сброс ежедневно) с пределом 5 запросов в секунду. Практически 50 тысяч ежедневных звонков достаточно для разработки и небольших дапсов, и вы всегда можете обновить, если вам нужно больше. Бесплатный план действительно бесплатный («нулевые сборы») и по -прежнему допускает доступ ко всем поддерживаемым цепочкам. Ключевым выводом здесь является то, что бесплатный план GetBlock должен быть более чем достаточным для типичных требований DEV и тестирования.

  • Стабильность и время безотказной работы.GetBlock предлагает гарантию времени безотказной работы на 99,9% со стабильным круглосуточным соединением с сетями блокчейна. То есть вы можете ожидать очень стабильный сервис для вашего бэкэнда DAPP. Стабильность-это также то, чем известны Infura и Alchemy, но инфраструктура GetBlock создана для того, чтобы быть каменной и масштабируемой. Многие разработчики ценят тот факт, что GetBlock предоставляет как общие узлы (с ограничениями использования), так и выделенные узлы для более тяжелых рабочих нагрузок, поэтому у вас есть способ масштабироваться. Правильный ответ заключается в том, что платформа очень надежна, поэтому вы не увидите вариации времени безотказной работы сети при переключении - возможно, за исключением лучшей производительности в определенных случаях.

Наконец, Dashboard's Getblock обладает отличными возможностями мониторинга и аналитики, которые мы доберемся в ближайшее время. Теперь у нас есть почему, давайте продолжим с как.

Шаг 1: Зарегистрируйтесь для учетной записи GetBlock

Первоначальный шаг - зарегистрироваться для бесплатной учетной записи GetBlock:

  • Перейдите на веб-сайт GetBlock и нажмите «Зарегистрироваться» (или непосредственно посетите страницу регистрации приборной панели GetBlock). У вас есть несколько вариантов регистрации:
    • Электронная почта/пароль. Зарегистрируйтесь, используя электронную почту и выберите пароль.
    • Социальный вход. Используйте Google или GitHub, чтобы немедленно зарегистрироваться.
    • Web3 кошелек. Вы даже можете зарегистрироваться, подключив кошелек Metamask (не требуется электронная почта). Это отличный вариант для разработчиков, которые уже созданы на Metamask.

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

Примечание. Приборная панель GetBlock - это то, где вы будете заниматься своими конечными точками API, мониторинг использования и настройки настроек. Иди вперед и оглянись вокруг, как только вы зарегистрировались. Вы увидите свой идентификатор пользователя в настройках учетной записи (полезно, если вам когда -либо нужна поддержка), но, что более важно, вы будете настраивать конечные точки проекта.

Шаг 2: Получите конечную точку GetBlock RPC (API -ключ и URL)

Созданная учетная запись, теперь вам нужно создать конечную точку RPC для сети Ethereum (или любую сеть, которая вам нужна). Это предоставит вам URL -адрес HTTP (и соответствующий URL -адрес WebSocket, если это необходимо), который вы будете использовать вместо Infura/Alchemy.

Создайте новую конечную точку:

  • На приборной панели GetBlock найдите кнопку «Создать конечную точку» или «Добавить новую конечную точку». Нажмите на него, чтобы начать создавать новое соединение.
  • Выберите сеть блокчейна. Как и в нашем случае, выберите Ethereum из списка доступных протоколов. Затем выберите тип сети:
    • Для Ethereum Mainnet выберите Mainnet.
    • Для тестовой сети выберите конкретную тестовую сеть (GetBlock теперь поддерживает Ethereum Sepolia).
  • При желании предоставьте имя/метку для этой конечной точки (например, «MyDapp Ethereum Mainnet»), чтобы вам было легче отслеживать, если вы настраиваете более одной конечной точки.
  • Нажмите «Создать или подтвердить». Панель инструментов будет генерировать детали вашей конечной точки.

После создания вы должны увидеть URL RPC для вашей конечной точки. Это должно выглядеть как -то вроде:

Скопировать этот URL; Вы будете передавать его в свою трюфельную конфигурацию. GetBlock может показать вам URL -адрес webSocket (начиная с wss: //) для той же конечной точки, и когда ваше приложение требует Webockets (для подписок или живых событий), вы можете использовать это. В нашем уроке мы будем использовать конечную точку HTTP.

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

Теперь у вас есть URL -адрес конечной точки GetBlock и ключ API, готовые к использованию. Теперь давайте вставим это в трюфель.

Шаг 3: Измените конфигурацию трюфеля, чтобы использовать GetBlock

Твойtruffle-config.js(илиtruffle.jsВ старых версиях) вы настраиваете настройки сети. Если использовать Infura или алхимию, ваша конфигурация могла бы выглядеть примерно так для сети:

require('dotenv').config();
const HDWalletProvider = require('@truffle/hdwallet-provider');

const INFURA_PROJECT_ID = process.env.INFURA_PROJECT_ID;
const MNEMONIC = process.env.MNEMONIC;  // or a private key

module.exports = {
  networks: {
    ropsten: {
      provider: () =>
        new HDWalletProvider(MNEMONIC, `https://ropsten.infura.io/v3/${INFURA_PROJECT_ID}`),
      network_id: 3,
      gas: 5500000,
      confirmations: 2,
      timeoutBlocks: 200,
      skipDryRun: true
    },
    // ... other networks ...
  },
  // ... other Truffle config ...
};

Наша цель - заменить URL -URL на URL GetBlock (и аналогично любым URL -адресам алхимии). Хорошей новостью является то, что RPC GetBlock работает так же - вы предоставляете URL -адрес конечной точки и поставщика кошелька.

Установите hdwalletprovider.Если ваш трюфельный проект еще не использует@truffle/hdwallet-provider(Вероятно, если вы развернулись через Infura/Alchemy), установите его сnpm install @truffle/hdwallet-providerПолем Эта библиотека позволяет трюфелу подписывать транзакции с помощью ключей и отправлять их через удаленный узел.

Модифицироватьtruffle-config.jsПолем Добавьте свой ключ API GetBlock в переменные среды (например, в.envНабор файловGETBLOCK_API_KEY=<your_key_here>) Также убедитесь, что ваш мнемонический или частный ключ находится в Env Var (например,MNEMONICилиPRIVATE_KEY) Затем обновите конфигурацию сети. Например, для использования Ethereum Sepolia testnet через GetBlock:

require('dotenv').config();
const HDWalletProvider = require('@truffle/hdwallet-provider');

const PRIVATE_KEY = process.env.PRIVATE_KEY;               // your wallet private key (hex string, no 0x)
const GETBLOCK_KEY = process.env.GETBLOCK_API_KEY;         // your GetBlock API key

module.exports = {
  networks: {
    sepolia: {
      provider: () => new HDWalletProvider(
        PRIVATE_KEY,
        `https://eth.getblock.io/sepolia/?api_key=${GETBLOCK_KEY}`
      ),
      network_id: 11155111,    // Sepolia network ID
      gas: 5500000,            // Gas limit, adjust as needed
      confirmations: 2,        // # of blocks to wait between deployments (optional)
      timeoutBlocks: 200,      // # of blocks before a deployment times out (optional)
      skipDryRun: true         // Skip dry run before migrations (recommended for public nets)
    },
    // ... other networks (mainnet, etc) ...
  },
  // ... rest of config ...
};

Вот и все! Ключевое изменение - URL: мы использовалиhttps://eth.getblock.io/...с нашим?api_key=Параметр запроса. Теперь, когда вы запускаете трюфель сsepoliaСеть, он будет проходить через GetBlock вместо Infura. Если вы хотите настроить Mainnet, вы можете добавить аналогичный раздел:

    mainnet: {
      provider: () => new HDWalletProvider(
        PRIVATE_KEY,
        `https://eth.getblock.io/mainnet/?api_key=${GETBLOCK_KEY}`
      ),
      network_id: 1,
      gas: 5500000,
      gasPrice: 20e9,   // e.g., 20 Gwei (you may adjust according to network conditions)
      confirmations: 2,
      timeoutBlocks: 200,
      skipDryRun: true
    }

Обязательно замените правильнымnetwork_idДля вашей сети (Mainnet Ethereum - 1, Сеполия - 11155111 и т. Д.). Сохраните изменения в вашем файле конфигурации.

Примечание.Аhttps://eth.getblock.io/<network>/?api_key=..Это то, что здесь использует, но GetBlock также поддерживает встраивание ключа в путь (как вы можете увидеть в некоторых примерах). Оба эквивалентны. Это более типично использовать параметр запроса и легко справиться с шаблонами строк.

Шаг 4: развертывание и тестирование web3.js с GetBlock

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

  • Трюфельная консоль. Бегатьtruffle console --network sepolia(или имя указанной вами сети). Это запустит консоль с доступным веб -3, интерактивно. Попробуйте запустить что -нибудь в качестве теста, например,:await web3.eth.getBlockNumber()Полем Если все правильно настроено, это должно отображать текущий номер блока в этой сети через GetBlock. Если вы получите ответ, ваше соединение солидно!

  • Node.js Script. В качестве альтернативы вы можете проверить, используя Web3.JS в автономном сценарии. Во -первых, убедитесь, что у вас установлен Web3 (npm install web3), затем создайте простой сценарий, как ниже, чтобы получить последний номер блока:

// test-getblock.js
const Web3 = require('web3');
const RPC_URL = `https://eth.getblock.io/sepolia/?api_key=${process.env.GETBLOCK_API_KEY}`;
const web3 = new Web3(RPC_URL);

web3.eth.getBlockNumber()
  .then(num => console.log("Latest block number:", num))
  .catch(err => console.error("Error connecting to GetBlock:", err));

Не забудьте загрузить переменные среды (вы можете добавитьrequire('dotenv').config();Вверху и определите getblock_api_key в вашем .env). Запустить этот сценарийnode test-getblock.jsПолем Если он печатает номер блока, вы успешно подключились к GetBlock через Web3.js.

Приведенный выше тест использует простой вызов чтения (eth_getBlockNumber) Вы можете попробовать больше, например, извлечение блока или баланс счета, чтобы еще больше подтвердить, что все работает. Например:

const latestBlock = await web3.eth.getBlock('latest');
console.log("Latest block info:", latestBlock);

Все эти запросы проходят через узел GetBlock. Если что -то не так (например, вы ловите ошибку аутентификации), проверьте свой ключ API в URL -адресу, а свободный предел вашей учетной записи не был превышен (крайне маловероятно, что с несколькими запросами).

Профессиональный совет.Если вы ранее использовали поставщика Alchemy's или Infura Web3 в коде (то есть Alchemy предлагает клиент Web3 или SDK с пользовательскими методами), переключение на GetBlock будет означать, что вы все равно будете использовать фундаментальные методы Web3. GetBlock-обычный поставщик узлов, поэтому Web3.JS говорит с ним через стандартные вызовы Ethereum JSON-RPC.

Шаг 5: Запустите трюфельные миграции и тесты на GetBlock

И, наконец, реальный тест - развертывание ваших контрактов и размещение вашего DAPP с помощью GetBlock в качестве поставщика бэкэнд.

Развертывание контрактов.Развернуть контракты обычно с трюфелем, но поручите его развернуть в сети, которую вы создали для GetBlock. Например:

truffle migrate --network sepolia

Truffle составит ваши контракты (если они еще не скомпилированы), а затем используйте HdwalletProvider для трансляции транзакций развертывания в RPC GetBlock. Вы должны быть в состоянии просматривать вывод в консоли отправленных транзакций, полученных подтверждений и т. Д. Процесс такой же, как и с Infura/Alchemy - единственная разница за кулисами - URL узла.

При развертывании в Ethereum Mainnet убедитесь, что у вас есть разумная сумма ETH, доступная на вашем счете развертывателя, и обратите внимание на цены на газ. Команда миграции будетtruffle migrate --network mainnet(Сделай свойmainnetКонфигурация точка GetBlock). Опыт должен быть таким же, как и Infura: GetBlock просто пересылает ваши подписанные транзакции в сеть Ethereum.

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

truffle test --network sepolia

Это запустит ваш тестовый набор в конечной точке GetBlock. Тестирование транзакций (например, вызов функции контракта на развернутые контракты) будет передаваться на узле GetBlock. Опять же, вы не должны видеть никакой разницы в поведении.

Ожидаемое поведение.За некоторыми исключениями, переключение конечной точки RPC не должно влиять на поведение Ethereum. Если ваши миграции или тесты работали нормально на Infura/Alchemy, они должны работать нормально на GetBlock. Все вызовы JSON-RPC по умолчанию поддерживаются для GetBlock (например, развертывание контрактов, состояние чтения, отправка транзакций, запросы на события)-это полная служба узлов. Если вызов JSON-RPC когда-либо удален по любой причине, документы GetBlock обычно указывают на это, но простые звонки, такие как развертывание (eth_sendRawTransaction), звонки (eth_call), полученные квитанции и т. Д., Все доступны.

Поздравляю! Бэкэнд вашего DAPP теперь на GetBlock! Ваша миграция сделана. Ваши звонки Web3 используют инфраструктуру GetBlock, а ваши умные контракты живут.

Обработка клавиш API, ограничения по цене и мониторинг на GetBlock

Изменение поставщиков - это не только вопрос обновления URL -адресов - также необходимо знать, существуют ли различия в том, как отслеживается использование, а также мониторинг производительности вашего DAPP на новом поставщике. Есть несколько моментов, которые нужно помнить, когда вы переходите от Infura/Alchemy на GetBlock.

Настройка ключа API.Infura использовала идентификатор проекта в URL; Алхимия использовала клавиши API довольно чаще в форме, встроенной в URL -адрес (или пользовательский домен). Подход GetBlock также такой же - у вас будет токен доступа (ключ API), и вы добавите это в URL -адрес RPC. На функциональном уровне ваше приложение не должно заставлять ваш ключ делать что -то необычное, кроме как включать его в URL -адрес конечной точки. Аналогичным образом, поскольку вы закрепили свой идентификатор проекта Infura или ключ API API API Secure GetBlock (храните в переменной среды, а не код на стороне клиента).

Оценить ограничения и пропускная способность.На свободном уровне есть пределы на провале:

  • Получить бесплатный уровень. 50 000 вычислительных единиц в день и максимум 5 запросов в секунду. На практике 1 простой вызов RPC ≈ 1 куб (более сложные вызовы, такие как журналы, могут быть более подсчитаны, как и в случае с системой Алхимии). Ограничение 5 RPS заставит вас не разорвать более 5 запросов в ту же секунду на бесплатном уровне. Если это так, последующие вызовы могут быть отказаны с ответом ограничения. Для всех, кроме самых занятых DAPP, 5 RPS в порядке при разработке, но если ваши сценарии бэкэнд делают много одновременных вызовов, вам может потребоваться ограничить их или рассмотреть вопрос о переходе на более дорогой план (тот, который после этого предлагает 25 RP).

  • Infura. Бесплатный уровень Infura был исторически около 100 тыс. Запрос/день, и с момента их новой конфигурации это 6 миллионов кредитов в день пропускной способности до 2000 кредитов/сек (что примерно эквивалентно, возможно, ~ 2000 простых вызовов/сек). Щедрый бесплатный плана Ufura очень добрый, но обратите внимание на тот факт, что не все вызовы - 1 кредит (некоторые большие звонки - это больше кредитов). В любом случае, если ваш DAPP не попал в пределы Infura, он, вероятно, не попадет в GetBlock, по аналогичным масштабам.

  • Алхимия. 100 -метровый свободный уровень в ежемесячном уровне вычислительных подразделений также является значительным. У них нет жесткой платы за RPS, но интенсивное использование быстро потребляет эти вычислительные устройства. Алхимия вызовет вызовы (например, простой вызов ETH может быть 0,5 куб. Если вы не были близки к 100 м, вам должно быть хорошо переключаться на 50 тысяч/день (≈1,5 м/месяц) на GetBlock для Dev. Если 50 тысяч/день недостаточно (например, если вы запускаете производственное приложение по бесплатному плану - не типично), вам, возможно, придется перейти на платные планы GetBlock, которые предлагают гораздо более высокий ежемесячный CUS.

Мониторинг использования.Другим удивительным аспектом GetBlock является его панель с полной аналитикой. На главной странице вашей панели инструментов вы получаете обзор своего текущего плана, оставшиеся CUS для дня, ваш текущий порог RPS и кумулятивные запросы, взятые за последние 24 часа. Это дает вам немедленно узнать, достигаете ли вы свой ежедневный лимит. Кроме того, на вкладке ваших конечных точек "Статистика" или "Analytics" GetBlock предоставляет диаграммы и разбивки:

  • Количество запросов с течением времени
  • Статусы ответа (чтобы вы могли видеть, есть ли ошибки)
  • Распределение вызовов метода (какие методы RPC вы называете больше всего)
  • Любые лимитные отказа

Мониторинг этих показателей настоятельно рекомендуется, особенно когда вы переходите. Например, если вы написали сценарий по ошибке, который затопляет сеть вызовов, на панели панели будет показано увеличение объема запроса или даже около 429 ответов с ограниченными показателями. Здесь вы хотели бы оптимизировать бэкэнд -вызовы вашего DAPP. Infura и Alchemy также предлагают панели мониторинга, но преимущество GetBlock заключается в том, что вы можете отслеживать все свое использование с несколькими цепками из одного места.

Обработка ограничений.Если бесплатного плана недостаточно (возможно, ваше приложение расширяется), GetBlock имеет простые обновления - план стартера (~ 50 млн. CUS/месяц, ~ 1,6 млн/день, 25 RPS) и Pro Plan (600 м/месяц, 200 RP). Вы можете обновиться прямо с приборной панели. Но во время разработки вам вряд ли это понадобится. Также обратите внимание, что неиспользованная ежедневная CUS в бесплатном плане не переносится (они сбрасываются ежедневно), поэтому не стоит экономить звонки - просто используйте то, что вам нужно.

Несколько конечных точек.Бесплатный план GetBlock включает в себя поддержку до 2 токенов доступа (конечные точки). Это означает, что вы можете создать один для Mainnet, один для Testnet, то есть - держать свои проекты или среды изолированными. Каждая конечная точка будет иметь свой собственный ключ API и отслеживание использования. Это сопоставимо с подходом Infura «ID Project Per Project». Хорошая практика - иметь отдельные конечные точки для Dev и производства, чтобы вы могли отслеживать использование независимо.

Лучшие практики для бесшовной миграции

Вот что я рекомендую вам:

  • Поддерживать переменные окружающей среды. Поместите свои клавиши API и секреты (мнемоника/личный ключ) в.envфайл или в вашей системной среде, а не в исходном коде. Это делает переключение конечных точек проще и более безопасным.

  • Сначала тест на тестовой сети. Переключая поставщиков, попытайтесь развернуть в тестовой сети (Sepolia) с помощью GetBlock, прежде чем работать над MainNet. Это гарантирует, что ваша установка правильная. После подтверждения вы можете изменить настройку MainNet.

  • Сравнить поведение. Это хорошая идея, чтобы сделать некоторые проверки здравомыслия после миграции - то есть получить данные известного контракта через Infura и getBlock и сравнить, что результаты идентичны. Они должны быть, поскольку оба читают из Ethereum, но это может придать уверенность в том, что GetBlock находится в полной синхронизации (GetBlock действительно работает в полных узлах, так что это должно быть).

  • ВЕБ -ОКОК (если это необходимо). Если ваш бэкэнд опирается на подписки WebSocket (то есть, прослушивание событий), GetBlock действительно предлагает это. Просто используйтеwss://go.getblock.io/xxxxxxxURL в Web3 WebSocketProvider. Убедитесь, что ваш план покрывает пропускную способность, которую требуют ваши подписки (те же ограничения RPS применимы к веб -окетам). Большинство разработчиков, однако, используют WebSockets на фронте (с библиотекой, такой как Metamask или API подписки Алхимии). В чисто бэкэнд -контекстах веб -питания встречаются реже, но приятно знать, что у GetBlock есть такая возможность.

  • Нет изменений фронта. Поскольку эта миграция складывается на обратной стороне, ваш фронт (если у вас есть) не нужно меняться. Если вы использовали Metamask для подключения к Testnet с использованием Infura, вы все равно можете сделать это - Metamask не требует getBlock для подключения пользователей (хотя GetBlock также может предоставить пользовательские конечные точки RPC для Metamask). Разделение проблем (Frontend vs. Backend) остается.

Заключение

Следуя этому учебному пособию, вы теперь перенесли свой бэкэнд Ethereum Dapp от Infura/Alchemy, чтобы GetBlock. Ваша трюфельная конфигурация теперь указывает на RPC GetBlock, и вы можете развернуть контракты и делать вызовы web3.js через GetBlock так же, как и раньше. Миграция не изменит функцию вашего DAPP, однако она позволяет вам легко добавлять дополнительные блокчейны или повысить использование без собственных узлов.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE