any.sender — first publicly accessible relayer with 0 gas overhead (and 2% fee)
tldr; any.sender is now the first third party relayer with a zero gas overhead and to help navigate the high-fee summer, we have reduced our own fee to 2% of the gas cost (gasUsed).
What is new?
It has been awhile since we posted an update about our progress with any.sender. We have been focused on delivering:
- Zero gas overhead. We have just released direct transactions that send the relay transaction directly to the target contract. As such, we are the first publicly accessible relay API that incurs no gas overhead to use.
- Status API. A new end-point that returns the list of published Ethereum transaction hashes (alongside its gas price) to track the transaction in real-time.
- 2% relay fees. To help navigate the high-fee storm this summer, we have temporarily reduced our relay fee to 2%. We are committed to helping you save money in the fee market.
- Gnosis Safe. We have incorporated Gnosis Safe into our client-side tooling (and our open-source meta-transaction library). You can now use an audited wallet contract for batching your transactions!
- Dev tools. A simple plug & play library to incorporate any.sender into your unit testing.
- Congestion safety. We continuously battle-test any.sender by congesting Ropsten and then spamming any.sender to outcompete it.
- Ordered transactions. any.sender sends transactions in the order they are received from the client.
To battle-test the any.sender implementation:
- Throughput performance. We have sent over 1 million transactions via any.sender in short succession and burst-like traffic. Some of the transaction load can be found in here (old), here (new), here, here and here.
- Congestion testing: We have burnt thousands of Ropsten ETH to congest the network (e.g. tens of thousands of 100+ gwei transactions) and then spammed any.sender to evaluate how well it out-competes other transactions on the network.
Both performance testing approaches has helped us find (and fix) significant back-end performance bottlenecks that are not publicly noticeable. One bottleneck was signing and verifying hundreds of signatures within the 14-second block interval. It was slowish as etherjs depends on the elliptic cryptography library and when we swapped it with secp256k1 it was at least 7x faster.
But the good news is that you shouldn’t need to notice as we strive to make our service reliable & performant with every new update.
Client-tooling is only getting better
Our recommended @any.sender/client library now simplifies the process down to to approximately ~3–4 lines of code:
const contract = new Contract("<address>", erc20Abi, signer);
const anyContract = any.sender(contract);
const relayReceipt = await anyContract.functions.transfer(
"<recipient address>",
"10",
{ gasLimit: 200000 }
);
const transactionReceipt = await relayReceipt.wait();
The code snippet takes the relay transaction, sends it up to any.sender, and then pings the Status API to watch for the transaction until it is confirmed.
There are two types of senders in the client library:
- any.sender(). It does not have a built-in wallet contract and you can plug in your own.
- any.senderGnosis(). It takes care of deploying the wallet contract for the signing key, handling the replay protection and wrapping the transaction such that it is sent via the wallet contract.
We have an experimental client library with our own wallet contract implementation & minimal universal forwarder. They will be included in the recommended client library after an audit. They have a similar gas cost (~26k gas per transaction) as Gnosis Safe, but supports more exotic replay protection for concurrent transactions and only costs 67k gas to deploy which is much cheaper to deploy.
Watch the escalator algorithm in real-time!
As seen above, check out the fee bumping of a transaction in real time. It includes the transaction hash, broadcast time and the gas price for the transaction. Only one of the Ethereum transactions can be confirmed in the blockchain.
We broadcast the transaction at the recommended safe-low and we gradually increase the fee overtime until it is accepted into the blockchain. Attempting to save you money while ensuring the transaction is confirmed quickly. If the fee escalator approach gets popular, then we can encourage downward pressure on fees and lower the network fees overall.
pTokens integration
Thanks to pTokens for announcing our first integration with them. They wrote a fantastic article that summarised the pain points of sending transactions to Ethereum and how any.sender solves that problem for them.
One quote I want to highlight from the article:
Delegating such a complex task to any.sender ensures the core pTokens system is kept as lean as possible — without compromising its security — and is therefore easier to audit and safer. Security and complexity do not typically get along.
It is the perfect example of a first-generation of a non-custodial service provider that can perform a task on behalf of a third party while never having custody over their primary funds.
That is it for now!
Thanks for checking out our latest update. I just want to finish with a small note.
We built any.sender as dealing with transaction delivery in Ethereum is really just painful. Lots can go wrong including:
- Picking the wrong fee (or the network fee quickly skyrockets),
- Dealing with queues of transactions (and organising the fees high-to-low),
- Detecting and re-broadcasting dropped transactions from the network.
That is a blog for another day. But we decided to offer any.sender as an API to make it as easy as possible for developers to plug & play to quickly adopt production-ready infrastructure.
The recent surge of high-fees was completely unexpected for us and that is why we have drastically reduced the any.sender fees from 20% to 2%.
I really do hope any.sender helps you build the next (and exciting) service on Ethereum and if it does; do share with us!