Nope! We do not currently have an Alchemy token sale but our users will be the first to know if we ever do 😉
Alchemy is currently a private company, if you're interested in investing, tweet out why you're interested and tag us @AlchemyPlatform.
If you are completely new to the blockchain space, you should check out our Blockchain 101 guide to learn more about the ins and outs of the technology behind blockchain, and the advantages of decentralization.
If you already know some blockchain stuff and are ready to dip your toes in development here are three great tutorials to check out:
No, we will never store your private keys, in fact, we never even see them since we only accept signed transactions. This also means we cannot sign and send transactions for you. For help on how to send transactions using Alchemy, check out this guide.
Generally "already known" means the transaction is on the node and is in a pending state. A good solution here is to double check that your transaction nonces are correct and that there aren't any currently pending transactions in your mempool.
Unfortunately, this is a fixed timeout configured by geth so we are unable to change it. This typically occurs with expensive or heavy
eth_calls . The best workaround is to break up your eth_call into smaller bites to ensure they don't get timed out.
If you run into your capacity limit, we recommend switching on autoscale which will allow your app to continue functioning with on-demand compute.
Archive data is free and available for all of our customers, no additional set up necessary!
A transaction object will have a block number associated with it, the block number is Ethereum's measure of time, however, if you want a standard timestamp you can easily get that by making a call to
eth_getBlockByNumber and specifying the
blockNumber field. Here is an example request. If you only have the transaction hash, you can get the full object by making a request to
You can! While we don't allow a single email to be on multiple teams due to UX concerns, one thing you can do is invite the user by appending a + to their email. For example, a user with email [email protected] could use [email protected] and [email protected] to be on two different teams, while still getting all their emails to one inbox!
In order to ensure maximum reliability for your calls, you can make
eth_getLogs requests with up to a 2K block range and no limit on the response size. You can also request any block range with a cap of 10K logs in the response.
If you need to pull logs frequently, we recommend using WebSockets to push new logs to you when they are available.
Join our discord and post in the #feature-request channel!
Glad you asked! We've built a bunch of higher level APIs to make your life as an Ethereum developer much easier. With our enhanced APIs you can access things like token balances and information, transaction history for given addresses, notifications about transaction activity, and more. Check out the full list here.
Alchemy's servers are currently located on US East, however we serve production traffic from 99% of countries in the world and see great latency in all regions.
Alchemy currently supports Geth and OpenEthereum node clients.
Great question! We've spent years developing an enhanced infrastructure and distributed node system to get the most consensus on the canonical block in the fastest amount of time. We'll only publish information if it's agreed upon by many of our nodes.
We do support compressed response payloads by using a Content-Encoding of gzip on all our responses.
Compute units are a way of measuring the resources it takes to serve your traffic, we implemented this to make sure pricing is sustainable and cost-effective as you scale. Check out this blog post for the reason we decided to implement a compute unit system.
You can see a breakdown of each method and its associated compute unit here.
A super easy way to distinguish between these two addresses is by calling eth_getCode, which will return contract code if it's a contract and nothing if it's a wallet. Here's an example of both using our composer tool:
Alchemy supports EIP-1898, which adds
blockHash to all JSON-RPC methods that accept a default block parameter. By allowing methods with a block number parameter to also accept a block hash parameter, EIP-1898 protects against re-orgs.
For instance, if a user executes
eth_call for block number 10000, but the network undergoes a re-org causing the block 10000 to change, it is unclear if the call evaluated at the old block or the new one.
The Alchemy free tier includes ~4,000,000 requests each month with free archive data access and the growth tier (with capped capacity) includes ~6,000,000 requests each month also with free archive data access. However, Alchemy uses a compute unit model instead of request limiting so this number will fluctuate depending on which requests you're making.
Large request headers will return errors even on methods that should be very small.
You may not always know exactly what headers you are sending in an API call. If you have a global wrapper or a wrapper that is very far up your import tree, then you may not even know that it is adding headers to your requests.
As an example, the Honeycomb Trace wrapper will add extremely large
X-Honeycomb-Trace headers to every request you send. This will show up on our end as
Request header exceeds LimitRequestFieldSize: X-Honeycomb-Trace and will be returned to you as a
Size of a request header field exceeds server limits error.
In general you should avoid such global wrappers. If you want to trace a request then add the headers as-needed.
Don't worry, we got you. Check out our support page for plenty of options!