×
Grow Open Source Bounties Hackathons Grants Quests Kudos
Back to Grants

any.sender - no more stuck transactions!

0xaFaBa30769374EA0F971300dE79c62Bf94B464d5

Last Update: 4 months ago

CATEGORIES

Infra_Tech

LAST MATCH ROUND

3,476 DAI

FINAL MATCH

ALL TIME FUNDING

26,925 DAI

113 CONTRIBUTORS

Description

{"ops":[{"attributes":{"background":"transparent","color":"#000000"},"insert":"any.sender - no more stuck transactions!"},{"attributes":{"header":1},"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":" "},{"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":"What is any.sender? "},{"attributes":{"header":2},"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":" "},{"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":"any.sender is a financially accountable and non-custodial API that takes care of the entire transaction infrastructure. The user can send any.sender its transaction via the API and the service takes care of bumping the fee, dealing with reorgs, and handling any nonce problems. This makes transaction sending (and confirmation) easy. "},{"insert":"\n\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":"Project demo "},{"attributes":{"header":2},"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":" "},{"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":"We hacked meta-mask (black-tie) to use the any.sender service and "},{"attributes":{"background":"transparent","color":"#000000","link":"https://www.youtube.com/watch?v=dOHlvRAXrXY&feature=youtu.be"},"insert":"recorded a video"},{"insert":".\n\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":"In the demo, we were testing the develop-friendliness of our experimental client library which takes care of all replay protection & managing the user’s proxy contract wallet. Thanks to the any.sender infrastructure, we cleaned up chunks of the meta-mask interface so the user no longer had to deal with setting a gas price or nonces. They just authorise the transaction and shortly afterwards receive a confirmation that it was accepted."},{"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":" "},{"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":"Overall, it is a great example of how easy it is for wallet providers to adopt the any.sender API. "},{"insert":"\n\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":"Who is the team behind any.sender? "},{"attributes":{"header":2},"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":" "},{"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000","bold":true},"insert":"Patrick McCorry "},{"attributes":{"background":"transparent","color":"#000000"},"insert":"is the CEO & co-founder of anydot. He was previously an Assistant Professor at King’s College London in Cryptocurrencies & Security Engineering and left academia in July 2019 to focus on anydot full-time. In the past, he has organised several well-received workshops on scaling cryptocurrencies, taught a 10-week crypto class with 300+ attendees and released popular open-source software."},{"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":" "},{"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000","bold":true},"insert":"Chris Buckland"},{"attributes":{"background":"transparent","color":"#000000"},"insert":" is the CTO and co-founder of anydot. He led a software development team at an academic publishing company for 7 years and has an MSc in Physics from Imperial College London. He has co-authored research papers on state channels and mixnets for Ethereum & worked at Consensys on an institutional custody product before setting up anydot in August 2018. "},{"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":"  "},{"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":"The wind of change"},{"attributes":{"header":2},"insert":"\n"},{"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":"Initially we focused on building a financially accountable watchtower PISA for off-chain and layer-2 protocols. But we soon realized there were some problems:"},{"insert":"\n\n"},{"attributes":{"background":"transparent","color":"#000000","bold":true},"insert":"EVM is not ready. "},{"attributes":{"background":"transparent","color":"#000000"},"insert":"Due to the limitation of block.blockhash() in EVM, it is impossible to build a financially accountable watchtower without intrusive (and unreasonable) changes on the target contract. "},{"attributes":{"background":"transparent","color":"#000000","link":"https://medium.com/anydot/verified-history-the-missing-block-hashes-9edbfa9dbe1"},"insert":"We documented the issues here. "},{"attributes":{"list":"bullet"},"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000","bold":true},"insert":"Relaying, not watching."},{"attributes":{"background":"transparent","color":"#000000"},"insert":" We realised the most difficult component of a watchtower is not watching for events, but building a reliable relayer that can guarantee transaction delivery to the network, especially when the network is heavily congested. "},{"attributes":{"list":"bullet"},"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000","bold":true},"insert":"Beyond just off-chain."},{"attributes":{"background":"transparent","color":"#000000"},"insert":" The technology stack we are building was not just useful for off-chain protocols, but most smart contracts on Ethereum. "},{"attributes":{"list":"bullet"},"insert":"\n"},{"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":"Together as a team we decided to rethink our strategy on what to build and how to create a clear message for why it is useful. This led to re-naming the company from PISA Research to anydot and focusing on building the transaction relayer. We called it any.sender as a twist on msg.sender and to highlight that it works for any smart contract."},{"insert":"\n\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":"Just like PISA, we prioritised a financially accountable and non-custodial service. This is because: "},{"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000","bold":true},"insert":"Custody is a Liability. "},{"attributes":{"background":"transparent","color":"#000000"},"insert":"It is easier from both a technical & regulatory standpoint to run a service that never has access to the user’s funds. Vitalik’s blog is a good explainer on why.  "},{"attributes":{"list":"bullet"},"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000","bold":true},"insert":"Skin-in-the-game contract."},{"attributes":{"background":"transparent","color":"#000000"},"insert":" Most people think skin-in-the-game means aligning a financial incentive for a positive outcome, but really it means owning your own risk and the downside that comes with that. By making an on-chain financial commitment that can be slashed if we deliver a poor quality of service, we can own that risk. (Plus, it does not impact the developer experience whatsoever)."},{"attributes":{"list":"bullet"},"insert":"\n"},{"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":"At the time of writing this report, I am proud to say as a team we have delivered:"},{"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000","bold":true},"insert":"any.sender is live. "},{"attributes":{"background":"transparent","color":"#000000"},"insert":"Our financially accountable and non-custodial relayer is live on mainnet,"},{"attributes":{"list":"bullet"},"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000","bold":true},"insert":"Novel replay protection. "},{"attributes":{"background":"transparent","color":"#000000"},"insert":"We have proposed for the meta-mask contest and further implemented open-source wallet contracts with novel replay protection for concurrent meta-transactions."},{"attributes":{"list":"bullet"},"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000","bold":true},"insert":"Easy to use libraries. "},{"attributes":{"background":"transparent","color":"#000000"},"insert":"Client libraries that takes care of deploying & managing the wallet contract while using the any.sender service,"},{"attributes":{"list":"bullet"},"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000","bold":true},"insert":"Fix the EVM."},{"attributes":{"background":"transparent","color":"#000000"},"insert":" We have proposed "},{"attributes":{"background":"transparent","color":"#000000","link":"https://github.com/anydotcrypto/metatransactions/blob/12fcf12b29def78fc46a8c02eb47bf549f6148c4/docs/EIP-proposal.md"},"insert":"one of several EIPs"},{"attributes":{"background":"transparent","color":"#000000"},"insert":" for solving the msg.sender problem for all relayers. "},{"attributes":{"list":"bullet"},"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000","bold":true},"insert":"Prepared for Black Thursday"},{"attributes":{"background":"transparent","color":"#000000"},"insert":". Battle-tested the any.sender service on Ropsten by congesting the network & processing over 1 million transactions "},{"attributes":{"background":"transparent","color":"#000000","link":"https://ropsten.etherscan.io/address/0x9b4fa5a1d9f6812e2b56b36fbde62736fa82c2a7"},"insert":"here"},{"attributes":{"background":"transparent","color":"#000000"},"insert":" and "},{"attributes":{"background":"transparent","color":"#000000","link":"https://ropsten.etherscan.io/address/0xa404d1219ed6fe3cf2496534de2af3ca17114b06"},"insert":"here"},{"attributes":{"background":"transparent","color":"#000000"},"insert":". "},{"attributes":{"list":"bullet"},"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000","bold":true},"insert":"Provably fair prize draw."},{"attributes":{"background":"transparent","color":"#000000"},"insert":" Launched any.sender with a "},{"attributes":{"background":"transparent","color":"#000000","link":"https://github.com/anydotcrypto/cyberdice"},"insert":"CyberDice 2.0 competition"},{"attributes":{"background":"transparent","color":"#000000"},"insert":" that relied on a BLS beacon from the league of entropy. "},{"attributes":{"list":"bullet"},"insert":"\n"},{"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":"We have one integration that should go live shortly and surprisingly we did not need to support the team at all (in fact; they did a pull request to amend our docs). We are working with two other projects to help them adopt any.sender, so hopefully we can validate the usefulness of any.sender when we have a few more integrations. "},{"insert":"\n\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":"Getting started with the service is easy."},{"attributes":{"header":2},"insert":"\n"},{"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":"We have two video tutorials:"},{"insert":"\n\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":"Getting started with the "},{"attributes":{"background":"transparent","color":"#000000","link":"https://twitter.com/paddypisa/status/1275869482959769602"},"insert":"any.sender client in 10 minutes,"},{"attributes":{"list":"bullet"},"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":"Getting started with the "},{"attributes":{"background":"transparent","color":"#000000","link":"https://www.youtube.com/watch?v=THRJuaQZYTw&feature=youtu.be"},"insert":"any.sender experimental wallet contract library in 10 minutes."},{"attributes":{"list":"bullet"},"insert":"\n"},{"insert":"\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":"At a high level, the user can simply deposit funds into our Relay contract and after 35 confirmations they can use this balance on the service. They can craft their transaction and send it to the any.sender API. There are no API keys and no requirements to modify their contract. The only assumption for any.sender is that the user’s transaction is processed via their wallet contract and this is only the case if the target is using msg.sender. Given the rise of wallet contracts with Gnosis Safe, Argent and the work towards account abstraction, it is a good assumption to make. "},{"insert":"\n\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":"Best of all, we have prioritised self-custody for any.sender and we never have access to the user’s primary funds. "},{"insert":"\n\n"},{"attributes":{"background":"transparent","color":"#000000","bold":true},"insert":"What would we do differently next time?"},{"attributes":{"background":"transparent","color":"#000000"},"insert":" I think our biggest mistake in 2019 was focusing on a fundraise before implementing our product and testing whether it has product-market fit. Generally, pitching to VCs takes a significant amount of time and diverts your attention from working on your product. We decided to ignore a fund raise and just focus on getting any.sender to mainnet. Now that it is live, we can focus on extending the service with additional features and support new projects with production-ready transaction infrastructure out of the box. "},{"insert":"\n\n"},{"attributes":{"background":"transparent","color":"#000000"},"insert":"We received a grant from Consensys to work on PISA and this helped us go the extra mile to work out the wider problem we were solving. We want to take this opportunity to thank them alongside some of the grant sessions they provided to the teams involved :) "},{"insert":"\n\n"}]}

Wall of Love

  • 6 x 😍 love the mission of your project
  • 4 x 💪 keep up the great work
  • 3 x 🙌 Great Job
  • 1 x 👍 i appreciate you
  • 1 x Good luck, from a fellow ConsenSys grant project!
  • Show More

    Activity Feed