Ethereum-kehittäjät luottavat tyypillisesti Infuraan tai Alchemyyn Ethereum-solmuihin pääsyn helpottamiseksi. GetBlock on houkutteleva vaihtoehto, joka tarjoaa moniketjuista tukea, antelias ilmainen taso ja erinomainen vakaus. Tässä opetusohjelmassa löydät, miten voit siirtää Truffle + web3.js backendin Infura / Alchemyistä GetBlock. Kerron nopeasti, miksi sinun pitäisi vaihtaa palveluntarjoajia ja yksityiskohtaisesti jokaisen vaiheen: Kirjaudu sisään GetBlock, RPC:n päätepisteen hankkiminen uudelleen konfiguroimalla trolli, Web3 -yhteyksien testaus käynnissä olevia käyttöönottoja, ja Korkojen vertailua ja erojen tarkkailua. Tarvitset olemassa olevan Ethereum DApp -projektin, jossa on Truffle ja asennettu Node.js. Oletan, että olet käyttänyt Infuraa tai Alchemyä (hankkeen ID:n tai API-avaimen kanssa) ja sinulla on käytettävissäsi mnemoninen tai yksityinen avain käyttöönottoon. Prerequisites: Miksi vaihtaa Infura tai Alchemy 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. Lopuksi GetBlockin ohjauspaneelissa on erinomaiset valvonta- ja analyyttiset ominaisuudet, joihin pääsemme pian. Vaihe 1: Rekisteröidy GetBlock-tilille Ensimmäinen askel on rekisteröidä ilmainen GetBlock-tili: 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. Valitse haluamasi menetelmä ja noudata ohjeita (esim. vahvistaa sähköpostiosoitteesi, jos olet valinnut sähköpostin kirjautumisen). Sinun pitäisi saada GetBlock-tilisi minuutissa tai kahdessa. Huomautus. GetBlock-paneeli on paikka, jossa voit käsitellä API-päätteitä, seurata käyttöä ja säätää asetuksia. Mene eteenpäin ja katso ympärillesi, kun olet kirjautunut sisään. Näet käyttäjätunnuksesi tiliasetuksissa (hyödyllistä, jos tarvitset tukea), mutta mikä tärkeintä, voit määrittää projektin päätepisteet seuraavaksi. Vaihe 2: Hanki GetBlock RPC Endpoint (API-avain ja URL) Kun olet luonut tilin, sinun on nyt luotava RPC-pääte Ethereum-verkkoon (tai mihin tahansa verkkoon tarvitset). Tämä antaa sinulle HTTP-osoitteen (ja tarvittaessa vastaavan WebSocket-osoitteen), jota käytät Infura / Alchemy: n sijasta. Luo uusi päätepiste: Löydä GetBlock-paneelista "Luo päätepiste" tai "Lisää uusi päätepiste" -painike. 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). Optionally provide a name/label for this endpoint (e.g., "MyDApp Ethereum Mainnet") to make it easier for you to keep track in case you configure more than one endpoint. Klikkaa Luo tai vahvista. Ohjauspaneeli luo päätepisteesi yksityiskohdat. Luomisen jälkeen sinun pitäisi nähdä RPC-URL-osoite päätepisteellesi. GetBlock voi näyttää sinulle WebSocket-URL: n (alkaen wss://) samalle päätepisteelle, ja kun sovelluksesi vaatii WebSocketsia (tilauksille tai live-tapahtumille), voit käyttää sitä. Tallenna GetBlock-API-avain turvallisesti. Älä sitoudu siihen julkiseen repos- tai asiakaspuoliseen koodiin. Paras käytäntö on tallentaa se ympäristömuuttujaksi tai konfiguroida tiedosto lähdekoodin ulkopuolella. Näytän ympäristömuuttujilla seuraavassa vaiheessa. Tärkeää Sinulla on nyt GetBlock-päätteen URL-osoite ja API-avain, valmiina käytettäväksi. Vaihe 3: Vaihda Truffle Configuration käyttää GetBlock Sinun (tai Jos käytät Infura tai Alchemy, konfigisi olisi voinut näyttää tältä verkossa: 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 ... }; Tavoitteenamme on korvata Infura-URL GetBlock-URL-osoitteella (ja vastaavasti kaikkiin Alchemy-URL-osoitteisiin). Hyvä uutinen on, että GetBlockin RPC toimii samalla tavalla – annat päätelaitteen URL-osoitteen ja lompakon tarjoajan. Jos Truffle-projektiasi ei vielä käytetä (todennäköisesti, jos olet asentanut sen Infura/Alchemy kautta), asenna se Tämän kirjaston avulla Truffle voi allekirjoittaa transaktioita avaimilla ja lähettää ne etäisyyden kautta. Käynnistä HDWalletProvider. @truffle/hdwallet-provider npm install @truffle/hdwallet-provider muutos Lisää GetBlock API -avain ympäristömuuttujiin (esimerkiksi Tiedosto Set Varmista myös, että mnemoninen tai yksityinen avain on env varissa (esim. tai Esimerkiksi Ethereum Sepolia testnetin käyttämiseksi GetBlockin kautta: 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 ... }; Tärkein muutos on URL: me käytettiin Meidän kanssa kyselyparametri. Nyt, aina kun käynnistät Trufflen verkko, se reitittää GetBlock sijaan Infura. Jos haluat konfiguroida Mainnet, voit lisätä samanlainen osio: 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 } Varmista, että korvaat oikealla verkkoasi varten (Ethereum mainnet on 1, Sepolia on 11155111, jne.). network_id Sillä on mitä käyttää täällä, mutta GetBlock tukee myös avaimen upottamista polkuun (kuten näet joissakin esimerkeissä). Molemmat ovat vastaavia. Se on tyypillisempää käyttää kyselyn parametriä ja on helppo käsitellä string-malleja. Muistiinpanoja . https://eth.getblock.io/<network>/?api_key=.. Vaihe 4: Käytä ja testaa web3.js GetBlockilla Ennen kuin lähetät sopimuksesi, on hyvä tarkistaa, että kaikki on määritetty oikein. 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)); Älä unohda ladata ympäristömuuttujia (voit lisätä yläreunassa ja määritä GETBLOCK_API_KEY .env-kohdassa). Jos se tulostaa lohkon numeron, olet onnistuneesti muodostanut yhteyden GetBlock via web3.js. require('dotenv').config(); node test-getblock.js Yllä olevassa testissä käytetään yksinkertaista lukukeskustelua ( Voit yrittää enemmän, kuten hankkia lohkon tai tilin saldon, vahvistaaksesi edelleen, että asiat toimivat. eth_getBlockNumber const latestBlock = await web3.eth.getBlock('latest'); console.log("Latest block info:", latestBlock); Jos jokin on vialla (esim. saat todentamisvirheen), tarkista, että URL-osoitteen API-avain on oikea ja tilisi vapaata rajaa ei ole ylittynyt (erittäin epätodennäköistä vain muutamalla pyynnöllä). Jos olet aiemmin käyttänyt Alchemy: n tai Infuran web3-palveluntarjoajaa koodissa (eli Alchemy tarjoaa Web3-asiakkaan tai SDK: n, jossa on räätälöityjä menetelmiä), siirtyminen GetBlockiin tarkoittaa, että käytät edelleen perustavanlaatuisia Web3-menetelmiä. Tyypin puolesta Vaihe 5: Suorita Truffle Migrations ja testit GetBlock Ja lopuksi todellinen testi - sopimusten käyttöönotto ja DAppin isännöinti GetBlockin kanssa backend-palveluntarjoajana. Levitä sopimuksia normaalisti Trufflen kanssa, mutta kehota sitä levittämään GetBlockille luotuun verkkoon. Sopimusten toteuttaminen . truffle migrate --network sepolia Truffle kokoaa sopimuksesi (jos niitä ei ole jo koottu) ja käyttää sitten HDWalletProvideria lähettämään käyttöönottotoiminnot GetBlock RPC: lle. Sinun pitäisi pystyä katsomaan lähetettyjen transaktioiden, vastaanotettujen vahvistusten konsolin tulokset jne. Prosessi on sama kuin Infura/Alchemy - ainoa ero kohtausten takana on solmun URL. Kun käytät Ethereum mainnet -verkkoa, varmista, että käytettävissäsi on kohtuullinen ETH-määrä käyttäjätililläsi ja kiinnitä huomiota kaasun hintoihin. Tee omasi Kokemuksen pitäisi olla sama kuin Infuran: GetBlock yksinkertaisesti lähettää allekirjoitetut transaktiot Ethereum-verkkoon. truffle migrate --network mainnet mainnet Jos sinulla on Truffle-testejä tai skriptejä, jotka vetoavat sopimuksiisi, voit testata niitä myös GetBlockin tarjoamassa verkossa: Käynnissä olevat testit. truffle test --network sepolia Tämä käynnistää testauspaketin GetBlockin päätepisteessä. Testausliiketoimet (esimerkiksi sopimustoimintojen soittaminen käyttöönotettuihin sopimuksiin) välitetään GetBlockin solmun yli. Muutamia poikkeuksia lukuun ottamatta, RPC-päätteiden kytkemisen ei pitäisi vaikuttaa Ethereumin käyttäytymiseen. Jos siirtymät tai testit sujuivat hyvin Infura/Alchemy, niiden pitäisi toimia hyvin GetBlockissa. Kaikki oletusarvoiset JSON-RPC-puhelut tuetaan GetBlockissa (esim. Sopimusten käyttöönotto, tilan lukeminen, tapahtumien lähettäminen, tapahtumakysely) – se on täysi solmupalvelu. Jos JSON-RPC-puhelu poistetaan jostain syystä, GetBlockin asiakirjat yleensä osoittavat sen, mutta yksinkertaiset puhelut, kuten käyttöönotto ( Puhelimet ( ), vastaanottaa kuitit jne., ovat kaikki käytettävissä. Odotettu käyttäytyminen eth_sendRawTransaction eth_call Onnittelut! DAppin backend on nyt GetBlockissa! Siirtymisesi on valmis. web3-puhelut hyödyntävät GetBlockin infrastruktuuria ja älykkäät sopimuksesi ovat elossa. Käsittele API-avaimia, hintarajoituksia ja seurantaa GetBlockissa Palveluntarjoajien vaihtaminen ei ole pelkästään URL-osoitteiden päivittämistä – on myös välttämätöntä tietää, onko käytön seurannassa eroja sekä seurata DAppin suorituskykyä uudella palveluntarjoajalla. Infura käytti projektitunnusta URL-osoitteessa; Alchemy käytti API-avaimia useammin myös URL-osoitteeseen upotetussa muodossa (tai mukautetussa verkkotunnuksessa). GetBlockin lähestymistapa on myös sama – sinulla on käyttöoikeusmerkki (API-avain) ja lisäät tämän RPC-URL-osoitteeseen. Toiminnallisella tasolla sovelluksesi ei tarvitse tehdä avaimestasi mitään epätavallista muuta kuin sisällyttää se päätelaitteen URL-osoitteeseen. API avain asennus. Vapaalla tasolla on palveluntarjoajan rajoituksia: Rajoitukset ja läpäisy. 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. Toinen hämmästyttävä osa GetBlock on sen ohjauspaneeli, jossa on täydellinen analyysi. Ohjauspaneelisi pääsivulla saat yleiskuvan nykyisestä suunnitelmasta, jäljellä olevista CU: stä päivälle, nykyisestä RPS-kynnyksestäsi ja kumulatiivisista pyynnöistä, jotka on tehty viimeisten 24 tunnin aikana. Tämä antaa sinulle välittömän tiedon siitä, saavutatko päivittäisen rajan. Lisäksi päätelaitteesi "Tilastot" tai "Analytics" -välilehdessä GetBlock tarjoaa kaavioita ja murto-osia: Käytön seuranta . Pyyntöjen määrä ajan myötä Vastaustilanne (joten voit nähdä, onko virheitä) Menetelmäpuhelun jakelu (mitä RPC-menetelmiä soitat eniten) Mikä tahansa korkojen raja-arvo hylätään (jos saavutat RPS-rajan) Monitoring these metrics is highly recommended, especially as you transition. For example, if you wrote a script by mistake that floods the network with calls, the dashboard will show an increase in request volume or even some 429 rate-limit responses. This is where you would want to optimize your DApp's backend calls. Infura and Alchemy also offer dashboards, but the advantage with GetBlock is that you can track all your multi-chain usage from a single place. In case the free plan isn't sufficient (maybe your app is expanding), GetBlock has easy upgrades – Starter plan (~50M CUs/month, ~1.6M/day, 25 RPS) and Pro plan (600M/month, 200 RPS). You can upgrade directly from the dashboard. But during development, you will not likely need this. Also note that unused daily CUs in free plan aren't carried over (they reset daily), so it isn't worth saving calls – just use what you need. Käyttäytymisen rajoitukset . GetBlock Free -suunnitelma sisältää tuen jopa kahdelle pääsyn tokenille (päätteille). Tämä tarkoittaa, että voit luoda yhden mainnetille, yhden testnetille eli pitää projektisi tai ympäristösi erillään. Jokaisella päätepisteellä on oma API-avain ja käytön seuranta. Tämä on verrattavissa Infuran "Project ID per project" -lähestymistapaan. On hyvä käytäntö olla erillisiä päätepisteitä kehittäjälle verrattuna tuotantoon, jotta voit seurata käyttöä itsenäisesti. Useita päätepisteitä Parhaat käytännöt saumattomalle maahanmuutolle Tässä mitä suosittelen sinulle: 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. Johtopäätös Seuraamalla tätä opetusohjelmaa, olet nyt siirtänyt Ethereum DApp backend Infura / Alchemy GetBlock. Truffle konfiguraatio nyt osoittaa GetBlockin RPC, ja voit ottaa käyttöön sopimuksia ja tehdä web3.js puhelut GetBlock samalla tavalla kuin ennen.