BETA: While any.sender is fast approaching production readiness, we still consider it in beta and the latest release is v0.4 beta. We recommend using any.sender with small funds and non-critical transactions.
The daily average fee on Ethereum has risen from 10-15 gwei to 80+ gwei. We built any.sender to help the community navigate the high-fee season, but we did not expect it to arrive so soon. We have reduced the any.sender fee to 2% of the final gas cost to ensure we are helping you save money. Please see Pricing for more information.
We have released two new features for any.sender:
- Direct transaction. The relay transaction is sent directly to the target contract and the gas overhead of using any.sender is reduced from 45k gas to 0 gas!
- Status API. To keep track of your relayed transaction, we now have a status service API to support fetching the list of published Ethereum transactions alongside the gas price issued for each transaction.
Finally, any.sender is still non-custodial and never has access to your primary funds.
The any.sender service is a simple and efficient way of sending transactions to Ethereum.
Its API handles the entire transaction process on behalf of the user, so they don't have to battle with nonces or gas prices. The service is held accountable by a smart contract to ensure either the user's transaction is mined before a block deadline or compensation is paid out.
any.sender endeavours to save precious development time by handling all edge cases for transaction delivery and getting it mined reliably. You, the user, can simply focus on making your dapp great and we'll take care of getting transactions mined on time, every time.
Essential features:
- Simple API. Interact with any.sender over a REST api to get up and running in minutes.
- No more lost transactions. The service monitors and progressively bumps the fee for all pending transactions, ensuring your transaction gets mined on time, every time.
- Delegated fees via meta-transactions. The service allows DApps to pay gas fees for their users, meaning their customers no longer need ETH to interact with their DApp.
- Plug & play. Designed with extensibility in mind, the any.sender service can be made to work with any smart contract.
- No gas overhead. any.sender is the only relayer with 0 gas overhead.
Advanced features:
- Re-org safety. We monitor transactions many blocks after they are mined, so even deep re-orgs won't shake us from ensuring your transaction gets confirmed.
- Congestion safe. any.sender tracks network gas prices and adjusts fees as needed. If you really need your transaction to be mined, even network congestion won't stop you.
- Concurrent in-flight transactions. Users can submit several transactions at a time, without the worry of previous transactions getting stuck.
- Smart-contract enforced accountability. Although any.sender's raison d'etre is to never miss a transaction, we offer accountable transactions such that if any.sender fails to deliver the promised quality of service, then it must issue compensation to the customer or get slashed.
We recommend trying any.sender on the Ropsten network and to get started we are happy to supply you with some Ropsten ETH via our chatroom. There are three ways to start using any.sender:
-
The Client takes care of crafting the relay transaction and sending it up to any.sender. The example walkthrough shows how to wrap a contract to natively use any.sender when sending a transaction. It is the simplest and easiest way to use any.sender, but it does have a dependency on ethersjs. We recommend using this client.
-
The Gnosis Safe Client works the same way as the client, except that it proxies all requests via a Gnosis Safe wallet. This means that target contracts that authenticate based on
msg.sender
will see the Gnosis wallet as the sender. The library takes care of deploying the contract and makes it easy to send transactions. It also supports sending batch transactions. -
The Core Client is a light-weight wrapper around the API to take care of basic functionality of sending a transaction via any.sender. Use this client as a raw wrapper for the API.
-
The Experimental Client takes care of deploying and managing a minimal wallet contract on behalf of the signer. It auto-deploys the wallet contract when the first transaction is issued & takes care of all replay protection. It currently supports our MetaTx library and we plan to support Gnosis Safe.
Here is a super-quick example on how to get started using the core-client library.
-
Install the client lib
npm i @any-sender/client
-
Use your favourite wallet to top up balance with any.sender. Send funds directly to our relay contract address to top up gas credit. See payments for more details.
-
Connect an ethersjs Signer or Contract to a any.sender, and relay transactions!
import { any } from "@any-sender/client"; const userWallet = new ethers.Wallet("<priv key>", provider); const anyUserWallet = any.sender(connectedUser); const relayReceipt = await anyUserWallet.any.sendTransaction({ to: "<address>", data: "<data>", }); const transactionReceipt = await relayReceipt.wait();
import { any } from "@any-sender/client"; const userWallet = new ethers.Wallet("<priv key>", provider); const erc20 = new ethers.Contract("<address>", "<abi>", userWallet); const anyErc20 = any.sender(erc20); const relayReceipt = await anyErc20.transfer("<recipient>", 10); const transactionReceipt = await relayReceipt.wait();
For more information, check out the client libraries that we support.
- Overview of any.sender
- API
- Dev tools
- Client library
- Core client library
- Experimental client library
- Payments
- Contracts
- Accountability guarantees
- Transaction inclusion
Ropsten | Mainnet | |
---|---|---|
API | https://api.anydot.dev/any.sender.ropsten | https://api.anydot.dev/any.sender.mainnet |
Receipt signer | 0xe41743Ca34762b84004D3ABe932443FC51D561D5 | 0x02111c619c5b7e2aa5c1f5e09815be264d925422 |
Relay contract | 0x9b4FA5A1D9f6812e2B56B36fBde62736Fa82c2a7 | 0x9b4FA5A1D9f6812e2B56B36fBde62736Fa82c2a7 |
Adjudicator contract | 0xAa517b16cAADc44b542c843AAfcaf274f6965016 | 0xAa517b16cAADc44b542c843AAfcaf274f6965016 |
Lockable deposit contract | 0xc617c0Fb33B7B6413b60beaB1bA0979Ae3166f54 | 0xc617c0Fb33B7B6413b60beaB1bA0979Ae3166f54 |