It's been really fun learning about the crypto space while building Gravity and Middleman. As I've been working on these projects, I've been keeping a list of observations about what it's like to dev in the crypto space.
Here is the list:
- Wallets are a big barrier to entry. Most of the people who have visited gravity.cool did not have MetaMask or another browser wallet installed (for example if they visited from the mobile Twitter in-app browser). Some of them installed MetaMask, but then the process to initially set up MetaMask and transfer tokens to it can take over an hour, so ultimately it is too high a price to pay and the visitors drop off.
- After users create or update their gravatar with Gravity, they sometimes wait more than 24 hours for the transaction to be processed on chain. That's super frustrating for users - they updated their gravatar, they expect to be able to see that it's updated.
- For a web app to interact with a p2p network like IPFS, the web app needs to run a local IPFS node. This is a lot to ask for from developers, so instead developers point their web app to IPFS gateways like the one run by Infura. I am curious about the role network gateways will play in inter-network/inter-chain interoperability.
- I could not find an easy API for a developer to exchange one token to another. With existing exchange API's, if I want to send 1 ETH and get back the corresponding amount of FileCoin, I need to fetch recent ETH <> FileCoin trades, figure out what is the current exchange price, and then ask for an exchange at that price, and even then, it's not a guaranteed trade. This isn't impossible, but it's not the easy button I was hoping for. I think there is a big opportunity for whoever can build the dead simple swap API.
- Because this space deals with money, APIs that manage wallets or tokens can fall under the money transmitter regulation and need to do more regulatory work upfront to be able to operate in all 50 states. This costs $$$ to do all 50 states (it's hundreds of thousands of dollars in security deposits for each state), which means that there is a hurdle for small companies to start new projects and a moat for established institutions that have already jumped through these hoops or have the funds and staffing to do so.
- Like any new technology, there are lots of weird quirks in Solidity and the Web3 API where things do not work as they should. (A few examples: you cannot have a function in Solidity that has optional parameters, and there are pages of search results for why web3.getAccounts comes back empty even though the user is logged into their browser wallet).
- This one is obvious but wow it is crazy that after deploying a smart contract I can no longer make changes to the code or add new features.