lastmjs / query-ethereum

MIT License
0 stars 0 forks source link

Validation #16

Open lastmjs opened 4 years ago

lastmjs commented 4 years ago

Round 1, started early February 2019

I reached out to maybe 10-15 people directly, I've posted on Twitter, and on Reddit. About 5 people have responded directly to me, saying generally that the idea is a good one and looks useful. They were all non-developers, and all expressed the same concern: this looks like it's for developers. Most didn't seem to think it would apply to them as non-developers. One person did think it would apply to him, but mentioned that more documentation or something needs to be done to help non-developers.

Some tech-minded people replied to Tweets. They asked how this is different from The Graph, and two people have asked for direct use-cases (DSR deposits and what you would have earned on DeFi protocols if you had invested early). Tweets get a handful of likes when I post updates.

Also, I posted on r/ethereum. The upvote number is 11, 100% upvoted. I also got picked up on Week in Ethereum, and apparently it was one of the most clicked items: https://twitter.com/evan_van_ness/status/1229862064400850944

With all of this feedback, I'd say we have passed round 1 of validation. This project looks useful/valuable, and I should continue building it out. The next steps seem to me to be adding transactions and events, and building out the capabilities for the use cases that have been requested so far. I should also add analytics to the website, and tutorials or documentation of some kind. A landing page perhaps. I also would like to move to Lambda for scalability, and increase the power of the geth node if necessary. I would like to make sure that it is up-to-date, not 30 minutes behind. Also, I would like to add pricing data. Chainlink seems like a great solution for the past yearish of data (essentially it launched in June 2019). More historical data will have to be obtained from elsewhere, though the main APIs seem to have bad terms.

Round 2 of validation will commence during the implementation of these next features.

lastmjs commented 4 years ago

Round 2

Round 2 will commence during and after implementation of the feedback from round 1. I will start tracking actual usage with something like Google Analytics. If usage is high enough, it might then be time to start experimenting with price. Really, since my primary short-term goal is to create a business that can support me, the real validation comes when people pay. Round 2, if validation passes, will probably lead to the payments integration. I'm thinking of accepting only USDC at first, to make taxes simple. My initial plan is to make the last month of data available for free. The last year will be available for $5 per month, the last 3 years for $10 per month, and all data for $15 per month. I can start with these prices and see if I get any takers. I can increase these prices later on, and perhaps allow firstcomers to keep their original pricing indefinitely.

The system will work as follows, perhaps there is an easier way, but we'll see. There will be a special query for requesting an account id. That id will be an Ethereum address. The server will generate an address and private key. If necessary, I can store the private key and address in the database. Using the private key I will be able to transfer the funds to my own wallet or Coinbase to cash out. I can send them the address, and have them include the address in the Authorization: Bearer header thing. Boom, done. On every request, I can check for the timestamps of the data they are returning, and if anything is outside of the bounds they have paid for (I can do a request to my node to check their balance), then I will reject the transaction.

Now, having a bunch of private keys sitting in a database doesn't sound like the best idea. What would be really nice, would be to create some kind of multi-signature scheme. So I could have one private key, which I would store securely offline and only as an encrypted environment variable in the Lambda function. This private key would be able to do a multisignature with the generated private key for the address given to the user. This would allow funds to be sent to the address, but I could immediately burn the private key (just not persist it anyway and have it be garbage collected), and my private key would be able to access those funds at any time. Then, I would only have to store the public addresses for all users. At any time, I could then run a script that would transfer all of the USDC to my own accounts. I would still have to pay for gas, and perhaps account for that with capital gains. But the USDC would be alright. People will probably want DAI as well...I suppose that will be fine. I'll need to deal with automating the taxes eventually anyway. This should work :)

If it is too complicated or scary for people to send money to the address given to them, perhaps I can integrate with Wyre or Moonpay. Also, I will need some simple terms, and will need to block embargoed countries from transacting with me. Should be simple enough