|
|
|
|
|
by saurik
4414 days ago
|
|
That's the wrong repository: that's a front-end (a UI written using angular); the backend repository (which could be said to be an open-source implementation of chain.com) is the one I link below. All this package does is provide a node.js wrapper for the bitcoind API. Almost all of the code (in both repositories) is project boilerplate or data marshaling: everything even remotely difficult is just "run bitcoind". I maintain it would be difficult to get locked in to a service like this just because it isn't open source: it isn't that difficult to rewrite. https://github.com/bitpay/insight-api As for "resource intensive", I was thinking memory, disk space, and network connectivity: the reason these services are valuable is because the blockchain is 18GB at this point, so downloading it to clients or even storing it at all on some clients, is at minimum "egregiously painful" and sometimes "pretty much impossible". If you want to be able to answer tons of different kinds of questions about transactions with low latency you are likely going to be storing this information with a number of specialized indexes, further increasing the database size requirement. However, "people" is also a valuable point, but no: having an open source project doesn't solve that; if you make a program that uses bitcoin, you either have to download and manipulate the blockchain locally (which sounds awesome, and is arguably half the point of bitcoin to many reasonable people, but in practice is not realistic or even possible in many if not most interesting situations) or use a service. You can either run your own service or use someone else's. I enjoy running services: I accept that most people do not ;P. Instead, they would rather use a hosted API such as this one (or any of the numerous existing alternatives to this one) so they don't have to have people maintaining servers. |
|
If a service needs to have a wallet connected to the network without the resources for storing the entire blockchain, they can just use a SPV [0] client like BitcoinJ to set bloom filters on their peers. They then get a stream of trustless information that's only relevant to the wallet at hand. You end up with a local service that's faster, completely under your control, and has a tiny resource footprint. You could happily run that a device like an iPhone, no problem.
[0]: https://en.bitcoin.it/wiki/Scalability#Simplified_payment_ve...