We have used mainnet.cash's REST API to send 10,000 payments in 32 hours and survived to tell the tale!
Remember Mainnet?
That library thing that I have collected 750 BCH for using the awesome FlipStarter?
It's alive and kicking!
- We still have ~430 BCH left (57%), 3 people currently work on the project (not including me, I'm more or less just guiding/architecting the project as I'm busy with other work, so I'm not paid by Mainnet funds, only taking some money for servers, which are hosted very cheaply at Hetzner I think it's ~ €30/m + domain €30/yr).
- We have recently started to publish release notes, you can check it periodically to follow the project
- We have used the mainnet.cash's REST API for our new project and done 10,000 payments in the first 32 hours - no problems, no glitches, no losses, so it means that the API is much more stable than I expected
- To be clear about 10,000 payments: that was not a load test, that was the real project usage as required by users, we probably could have sent much faster if that was a load test
- I'm guilty of having some click-bait fun with the title... it was absolutely easy, nothing close to "surviving", not even close to what I had to go through in October 2019 doing the read.cash wallet - now THAT was surviving (selecting UTXOs by hand, calculating fees and change outputs, yuck!)
- We actually used
rest-unstable.mainnet.cashserver (don't do this!) and had no problems (you shouldn't though, you should run your own - it's not hard and doesn't require too many resources: Docker or node.js + about 100-200MB memory, no need to sync the blockchain). You shouldn't use rest-unstable, since you'll be sending the private key to our server, which is needless to say, a bad idea. I can tell you for sure that it's not logged/saved anywhere, but we're in crypto, you should not trust what I say and run your server instead. (We will actually even refuse to create saved wallet for BCH coins, but will save for Testnet coins, if you want - no such limitations with your own server)
- There were a few minor bugs that we have discovered in the process (like when change is dust - it should probably be automatically donated to miner, instead of being a fatal error) - no money was lost though
- We have a pretty new website (It's been up for a month I think), go check it out:
- Develop for Bitcoin Cash using Javascript in-browser or node.js, including: creating Mainnet/Testnet/Regtest wallets, sending money (using
USD,BCHorsatoshisas units), getting balances in the same units, waiting for transactions, generating and displaying QR codes, escrow contracts(warning - we're changing them a bit - we're adding nonces and we're moving them inside the contract, so be careful - ask me in PMs if you need help understanding the risks), CashScript (not documented yet, guilty, ashamed), RegTest wallets/transactions/balances/mining (local development unlimited coins), Testnet wallets/transactions/balances, optionally saved named wallets in user browser's IndexedDB (no need to store the private key manually), seed-based wallets, WIF-based wallets, currency conversion; done, but still integrating: message signing and verification; in the works: SLP tokens. - Develop using ANY language using the REST API and Websockets, including WebHooks for when transactions come and leave your wallet and everything listed above for JS, except the wallets are saved in PostgreSQL, not in the IndexedDB in the browser
- Automatically generated bindings for PHP, Python, Go published as packackes (you might find them useful or you might find it easier to just call the REST API yourself)
- Need another language generated bindings? You got it! See here at the end. You can ping me in PMs and we'll start building bindings for your language automatically (it's VERY easy thanks to Github Actions and OpenAPI generators)
- Develop for Bitcoin Cash using Javascript in-browser or node.js, including: creating Mainnet/Testnet/Regtest wallets, sending money (using
The bad news is that my understanding now that we certainly won't be able to do EVERYTHING I took to do here, because a) good developers ARE expensive, very expensive b) this stuff is hard - MUCH harder than I originally envisioned.
Even the smallest things that we did took forever to figure out how to do, then there was a ton of bugs, then we discovered that the underlying technology can't handle the scale, so we had to switch, then we discovered more bugs, conflicts and stupid things that take a few weeks when it should have taken a few hours, like dust... or consolidating too many outputs (5000+) or better error messages (how about "transaction refused: dust" - personally I find this terrible and ugly, because a new dev won't have any idea what that means and what to do about it).
So, we'll do a lot from our original proposal, clean up, polish up and (probably) will have to try another Flipstarter for a similar USD amount to finish up everything (will it be funded - that's up to the community to decide :) )
Mad props to: 2qx, pat and N (mainnet.cash developers), Jason Dreyzehner (@bitjson) for libauth, Jonathan Silverblood (@monsterbitar) for electron-cash library, Calin Culianu (@cculianu) for Fulcrum, JT Freeman for fountainhead.cash hosted services, ALL DONORS to the FlipStarter (esp. Roger Ver who sent 25% of the total amount, NO DRIFT CORRECTION!!!, darkbluebrilliance, majamalu, Grapefruit Trading, Pablo, molecular, toorik, Sea urchin, zveda, Henry Cashlitt, Blockchain.Poker, Georg Engelmann and otehrs!), Marc de Mesel (who inspired me to do the FlipStarter, whose money were sent in 10,000 payments and who has donated $25,000 separately for marketing of mainnet project, which 100% sadly just sits there untouched, waits until at least we get to version 1.0)
EDIT: typos
EDIT2: ...and of course the docs site went down for the first time ever :) Looking into it
EDIT3: Back up, whatever it was. Moved to static nginx, so it should be super stable from now on.
[link] [comments]