Ethereum-utvecklare förlitar sig vanligtvis på Infura eller Alchemy för enkel åtkomst till Ethereum-noder. GetBlock är ett attraktivt alternativ som ger multi-chain-stöd, en generös fri nivå och utmärkt stabilitet. I den här handledningen kommer du att upptäcka hur man migrerar en Truffle + web3.js backend från Infura / Alchemy till GetBlock. Jag kommer snabbt att täcka varför du ska byta leverantörer och sedan detaljera varje steg: Anmäl dig till GetBlock, För att få en RPC-endpoint att återställa trollet, Testning av web3-anslutning löpande utplaceringar, och jämförelse av räntegränser och övervakning av skillnader. Du behöver ett befintligt Ethereum DApp-projekt med Truffle och Node.js installerat. Jag antar att du har använt Infura eller Alchemy (med ett projekt-ID eller API-nyckel) och har en mnemonisk eller privat nyckel tillgänglig för distribution. Prerequisites: Varför byta från Infura eller Alchemy till GetBlock? GetBlock allows you to connect to not just Ethereum but 55+ blockchain networks using JSON-RPC, REST, and WebSocket APIs. This allows you to use Ethereum, Bitcoin, BNB Smart Chain, Polygon, Solana, and a lot of others with one platform. Infura and Alchemy, meanwhile, have a shorter list of networks supported (Infura supports Ethereum primarily and some networks like IPFS or certain L2s, and Alchemy supports Ethereum and some chains but not BSC specifically). If your DApp can be more than Ethereum, the broad multi-chain support of GetBlock is a huge plus. Multi-chain support. Each of these providers has free plans, but their limitations and models are different. Infura's free plan conventionally provided around 50,000 requests per day (now measured as 3 million daily credits with some rate limiting). Alchemy's free tier offers up to 100 million compute units a month (Alchemy measures different RPC calls as different "compute units"). GetBlock's free tier is very developer-friendly: it offers 50,000 requests a day (reset daily) with a limit of 5 requests a second. Practically, 50k daily calls are sufficient for development and small DApps, and you can always upgrade in case you need more. The free plan is indeed free ("zero fees") and still allows access to all supported chains. The key takeaway here is that GetBlock's free plan should be more than sufficient for typical dev and testing demands. Generous free tier. GetBlock offers a 99.9% uptime guarantee with a stable 24/7 connection to blockchain networks. That is, you can expect a highly stable service for your DApp backend. Stability is also what Infura and Alchemy are famous for, but GetBlock's infrastructure is built to be rock-solid and scalable. Many developers appreciate the fact that GetBlock provides both shared nodes (with usage limits) and dedicated nodes for heavier workloads, so you have a way to scale up. The correct answer is that the platform is highly reliable, so you won't see variations in network uptime when you switch over – possibly except for better performance in certain instances. Stability and uptime. Slutligen har GetBlocks instrumentpanel några bra övervaknings- och analysfunktioner, som vi kommer att komma till snart. Steg 1: Registrera ett GetBlock-konto Det första steget är att registrera dig för ett gratis GetBlock-konto: Navigate to the GetBlock website and click on "Sign Up" (or directly visit the GetBlock dashboard sign-up page). You have a few sign-up options: Email/Password. Sign up using email and choose a password. Social Login. Use Google or GitHub to sign up immediately. Web3 Wallet. You can even sign up by connecting a MetaMask wallet (no email required). This is a great option for developers who are already set up on MetaMask. Välj din föredragna metod och fortsätt med instruktionerna (t.ex. verifiera din e-post om du valde e-postregistrering). Du borde ha ditt GetBlock-konto inom en minut eller två. Obs. GetBlock instrumentpanelen är där du kommer att hantera dina API-ändpunkter, övervaka användning och justera inställningar. Gå vidare och titta runt när du har loggat in. Du kommer att se ditt användar-ID i kontoinställningarna (användbart om du någonsin behöver stöd), men viktigare, du kommer att konfigurera projektändpunkter nästa. Steg 2: Få din GetBlock RPC Endpoint (API-nyckel och URL) Kontot skapades, du behöver nu skapa en RPC-ändpunkt för Ethereum-nätverket (eller vilket nätverk du behöver). Detta kommer att ge dig en HTTP-URL (och motsvarande WebSocket-URL om det behövs) som du kommer att använda i stället för Infura/Alchemy. Skapa en ny slutpunkt: I GetBlock Dashboard, hitta knappen "Skapa en slutpunkt" eller "Lägg till en ny slutpunkt". Select the blockchain network. As in our case, choose Ethereum from the list of available protocols. Then select the network type: For Ethereum Mainnet, choose Mainnet. For a testnet, choose the specific test network (GetBlock now supports Ethereum Sepolia). Tillhandahålla ett namn / etikett för denna endpoint (t.ex. "MyDApp Ethereum Mainnet") för att göra det lättare för dig att hålla reda på om du konfigurerar mer än en endpoint. Klicka på Skapa eller bekräfta. instrumentpanelen genererar dina slutpunktsdetaljer. Efter skapandet bör du se en RPC-URL för din slutpunkt. GetBlock kan visa dig en WebSocket-URL (börjar med wss://) för samma slutpunkt, och när din ansökan kräver WebSockets (för prenumerationer eller levande händelser), kan du använda det. Lagra din GetBlock API-nyckel säkert. Kompromissa inte med den i offentlig repos eller klientkod. Bästa praxis är att lagra den som en miljövariabel eller konfigurera filen utanför källkontrollen. Det viktiga . Du har nu en GetBlock endpoint URL och API-nyckel, redo att använda. Steg 3: Ändra Truffle-konfigurationen för att använda GetBlock Din (eller Om du använder Infura eller Alchemy kan konfigurationen ha sett ut så här för ett nätverk: truffle-config.js truffle.js 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 ... }; Vårt mål är att ersätta Infura-URL med GetBlock-URL (och på samma sätt för alla Alchemy-URL).Den goda nyheten är att GetBlocks RPC fungerar på samma sätt - du tillhandahåller en endpoint-URL och din plånbokleverantör. Om ditt Truffle-projekt inte redan använder (det är troligt att, om du har distribuerat via Infura/Alchemy), installera den med . This library allows Truffle to sign transactions with your keys and send them through the remote node. Installera HDWalletProvider. @truffle/hdwallet-provider npm install @truffle/hdwallet-provider ändra Lägg till din GetBlock API-nyckel till dina miljövariabler (till exempel i en Arkiv Set Se också till att din mnemoniska eller privata nyckel är i en env var (t.ex. eller Till exempel, för att använda Ethereum Sepolia testnet via GetBlock: truffle-config.js .env GETBLOCK_API_KEY=<your_key_here> MNEMONIC PRIVATE_KEY 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 ... }; Den viktigaste förändringen är URL: vi använde Med vår query parameter. Now, whenever you run Truffle with the nätverk, det kommer att routera genom GetBlock istället för Infura. Om du vill konfigurera Mainnet, kan du lägga till ett liknande avsnitt: https://eth.getblock.io/... ?api_key= sepolia 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 } Var noga med att ersätta med rätt för ditt nätverk (Ethereum mainnet är 1, Sepolia är 11155111, etc.) Spara dina ändringar i din konfigurationsfil. network_id The är vad användningen här, men GetBlock stöder också inbäddning av nyckeln i vägen (som du kan se i några exempel). Båda är likvärdiga. Det är mer typiskt att använda frågeparametern och är lätt att hantera strängmallar. Notera att. https://eth.getblock.io/<network>/?api_key=.. Steg 4: Installera och testa web3.js med GetBlock Innan du skickar ut dina kontrakt är det en bra idé att kontrollera att allt är korrekt konfigurerat. Truffle Console. Run (or the name of the network you specified). This will launch a console with Web3 available interactively. Try running something as a test, such as this: . If everything is properly set up, this should display the current block number on that network via GetBlock. If you get a response, your connection is solid! truffle console --network sepolia await web3.eth.getBlockNumber() Node.js Script. Alternatively, you could test using web3.js in a standalone script. First, make sure you have web3 installed ( ), then create a simple script like below to get the latest block number: 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)); Glöm inte att ladda dina miljövariabler (du kan lägga till på toppen och definiera GETBLOCK_API_KEY i din .env). . If it prints a block number, you have successfully connected to GetBlock via web3.js. require('dotenv').config(); node test-getblock.js Ovanstående test använder ett enkelt läsningssamtal ( Du kan försöka mer, till exempel hämta ett block eller en kontosaldo, för att ytterligare bekräfta att saker och ting fungerar. eth_getBlockNumber const latestBlock = await web3.eth.getBlock('latest'); console.log("Latest block info:", latestBlock); Om något är fel (t.ex. du fångar ett autentiseringsfel), kontrollera din API-nyckel i URL: n är korrekt och den fria gränsen för ditt konto har inte överskridits (extremt osannolikt med bara några begäranden). Om du tidigare har använt Alchemy's eller Infuras web3-leverantör i kod (dvs. Alchemy erbjuder en Web3-klient eller SDK med anpassade metoder), byter du till GetBlock kommer du fortfarande att använda de grundläggande Web3-metoderna. För typ . Steg 5: Kör Truffle migrationer och tester på GetBlock Och slutligen, det verkliga testet - att distribuera dina kontrakt och värd din DApp med GetBlock som din backend-leverantör. Distribuera kontrakt normalt med Truffle, men instruera det att distribuera på det nätverk du skapade för GetBlock. Utveckling av kontrakt. truffle migrate --network sepolia Truffle kommer att sammanställa dina kontrakt (om de inte redan är sammanställda) och sedan använda HDWalletProvider för att sända de distributionstransaktioner på GetBlock RPC. Du bör kunna visa utgången i konsolen av transaktionerna skickade, mottagna bekräftelser, etc. Processen är densamma som det var med Infura / Alchemy - den enda skillnaden bakom kulisserna är nodens URL. När du distribuerar till Ethereum mainnet, se till att du har en rimlig mängd ETH tillgänglig i ditt distributionskonto och uppmärksamma gaspriserna. (Gör din Upplevelsen ska vara densamma som Infuras: GetBlock är helt enkelt att vidarebefordra dina signerade transaktioner till Ethereum-nätverket. truffle migrate --network mainnet mainnet Om du har Truffle-tester eller skript som åberopar dina kontrakt kan du också testa dem på nätverket som erbjuds av GetBlock: och löpande tester. truffle test --network sepolia Detta kommer att köra din testpaket på GetBlock-ändpunkten. Testtransaktioner (t.ex. ett kontraktfunktionskall på dina utplacerade kontrakt) kommer att vidarebefordras över GetBlocks nod. Återigen bör du inte se någon skillnad i beteende. Med några få undantag är RPC-endpoint-omkoppling inte tänkt att påverka Ethereums beteende. Om dina migrationer eller tester gick bra på Infura/Alchemy, bör de fungera bra på GetBlock. Alla standard JSON-RPC-samtal stöds för GetBlock (t.ex. att distribuera kontrakt, läsa status, skicka transaktioner, händelseförfrågningar) – det är en fullständig node-tjänst. Om ett JSON-RPC-samtal tas bort av någon anledning kommer GetBlocks dokument vanligtvis att indikera det, men enkla samtal som att distribuera ( för att ringa ( ), ta emot kvitton, etc., är alla tillgängliga. Det förväntade beteendet. eth_sendRawTransaction eth_call Grattis! Din DApps backend är nu på GetBlock! Din migration är klar. Dina web3-samtal utnyttjar GetBlocks infrastruktur och dina smarta kontrakt är levande. Hantera API-nycklar, räntegränser och övervakning på GetBlock Att byta leverantör handlar inte bara om att uppdatera webbadresser – det är också nödvändigt att veta om det finns skillnader i hur användningen spåras samt att övervaka din DApps prestanda på den nya leverantören. Infura använde ett projekt-ID i URL-adressen; Alchemy använde API-nycklar ganska ofta i formuläret inbäddat i URL-adressen också (eller en anpassad domän). GetBlocks tillvägagångssätt är också detsamma – du kommer att ha en åtkomsttoken (API-nyckel) och du lägger till detta till RPC-URL-adressen. På en funktionell nivå behöver din applikation inte göra din nyckel göra något ovanligt annat än att inkludera den i endpoint-URL. API nyckel setup. Det finns gränser per leverantör på den fria nivån: Gränsvärden och genomströmning. GetBlock Free Tier. 50,000 compute units per day and max 5 requests per second. In practice, 1 simple RPC call ≈ 1 CU (more complex calls like logs could be more counted, as with Alchemy's system). The 5 RPS restriction will make you not burst more than 5 requests in the same second on free tier. If so, subsequent calls may be refused with a rate-limit response. For all but the most busy DApps, 5 RPS is fine while developing – but if your backend scripts are making lots of concurrent calls, you may need to rate-limit them or consider switching to a more expensive plan (the one after this offers 25 RPS). Infura. Infura's free tier was circa 100k requests/day historically and since their new configuration, it's 6 million credits/day throughput of up to 2,000 credits/sec (which is roughly the equivalent of perhaps ~2000 simple calls/sec). Infura's generous free plan RPS is very kind, but note the fact that not all calls are 1 credit (some big calls are more credits). Either way, if your DApp wasn't hitting Infura's limits, it likely won't hit GetBlock's either, by similar scale. Alchemy. Alchemy's 100M free tier monthly of compute units is significant as well. They have no hard RPS fee, but intense usage will consume those compute units quickly. Alchemy bills calls (e.g., a simple ETH call might be 0.5 CU, a complex one 10 CUs, etc.). If you weren’t close to 100M units, you should be fine switching to 50k/day (≈1.5M/month) on GetBlock for dev. If 50k/day is not enough (e.g., if you are running a production app on a free plan – not typical), you might have to move to GetBlock's paid plans which offer much higher monthly CUs. En annan fantastisk aspekt av GetBlock är dess instrumentpanel med fullständig analys. På huvudsidan av instrumentpanelen får du en översikt över din nuvarande plan, återstående CU för dagen, din nuvarande RPS-tröskel och kumulativa förfrågningar som gjorts under de senaste 24 timmarna. Detta låter dig omedelbart veta om du når din dagliga gräns. Dessutom, i dina slutpunkters "Statistik" eller "Analytics" -flik, ger GetBlock diagram och nedbrytningar av: Övervakning av användning. Antal förfrågningar över tid Svarsstatus (så att du kan se om det fanns några fel) Method call distribution (vilka RPC-metoder du ringer mest) Eventuella avslag på räntegränsen (om du träffar RPS-gränsen) Övervakning av dessa mätvärden rekommenderas starkt, särskilt när du övergår. Till exempel, om du har skrivit ett skript av misstag som översvämmar nätverket med samtal, kommer instrumentpanelen att visa en ökning av begäran volym eller till och med några 429 räntegräns svar. Detta är där du vill optimera dina DApp backend-samtal. Infura och Alchemy erbjuder också instrumentpaneler, men fördelen med GetBlock är att du kan spåra all din användning av flera kedjor från en enda plats. I händelse av att den fria planen inte är tillräcklig (kanske din app expanderar) har GetBlock enkla uppgraderingar – Starter plan (~50M CUs / månad, ~1.6M / dag, 25 RPS) och Pro plan (600M / månad, 200 RPS). Du kan uppgradera direkt från instrumentbrädan. Men under utvecklingen kommer du sannolikt inte att behöva detta. Observera också att oanvända dagliga CUs i den fria planen inte transporteras (de återställer dagligen), så det är inte värt att spara samtal – använd bara vad du behöver. Handlingens gränser . GetBlock gratis plan innehåller stöd för upp till 2 åtkomsttokens (ändpunkter). Det betyder att du kan skapa en för mainnet, en för testnet, dvs. - hålla dina projekt eller miljöer isolerade. Varje endpoint kommer att ha sin egen API-nyckel och användarspårning. Detta är jämförbart med Infuras "Project ID per projekt" -metod. Det är en bra praxis att ha separata slutpunkter för dev jämfört med produktion så att du kan spåra användning oberoende. Flera olika slutpunkter. Bästa praxis för sömlös migration Här är vad jag rekommenderar dig: Maintain environment variables. Place your API keys and secrets (mnemonic/private key) in an file or in your system environment, not in source code. This makes switching endpoints easier and more secure. .env Test on a testnet first. While switching providers, attempt to deploy on a test network (Sepolia) with the help of GetBlock before working on mainnet. This makes sure that your setup is right. After confirmation, you can shift your mainnet setup. Compare behavior. It is a good idea to do some sanity checks after migration – i.e., get a known contract's data via Infura and via GetBlock and compare that the results are identical. They should be, since both are reading from Ethereum, but this can give confidence that GetBlock is in full sync (GetBlock does run full nodes, so it should be). WebSockets (if required). If your backend relies on WebSocket subscriptions (i.e., listening to events), GetBlock does offer that too. Simply use the URL in a Web3 WebsocketProvider. Ensure that your plan covers the throughput your subscriptions require (the same RPS limits apply to websockets). The majority of developers, however, use WebSockets in the frontend (with a library like MetaMask or Alchemy's subscription API). In purely backend contexts, WebSockets are less common, but it’s good to know GetBlock has the option. wss://go.getblock.io/xxxxxxx No frontend changes. Since this migration is backend-facing, your frontend (if you have one) doesn't have to change. If you were using MetaMask to connect to a testnet using Infura, you can still do so – MetaMask does not require GetBlock for connecting users (though GetBlock can also provide custom RPC endpoints for MetaMask). The separation of concerns (frontend vs. backend) remains. Slutsats Genom att följa den här handledningen har du nu migrerat din Ethereum DApp backend från Infura/Alchemy till GetBlock. Din Truffle-konfiguration pekar nu på GetBlocks RPC, och du kan distribuera kontrakt och göra web3.js-samtal genom GetBlock på samma sätt som du kunde tidigare. Migration kommer inte att ändra funktionen hos din DApp, men det positionerar dig för att enkelt lägga till ytterligare blockchains eller öka användningen utan att köra dina egna noder.