"A blockchain is a distributed database that allows direct transactions between two parties without the need of a central authority."
Which as a developer, I feel like I have a good handle on - but where I continually come up short is figuring out what I'd use such a data store for when building an application?
The article starts off calling blockchain tech "significant and disruptive technologies that came into existence since the inception of the Internet."
I'd love if someone had some examples of practical applications or uses that are being developed or could point me in the right direction.
So if it can’t do the first thing it promises it can do, maybe it becomes more like a Rube Goldberg machine than something that is meant to be useful/practical. The fact that people are praising CryptoKitties as a “practical application” seems to support the Rube Goldberg machine/toy theory.
There's a big difference between centralized influence and centralized control. The 2010 and 2013 examples were fairly homogeneous, because the changes were fairly obvious and reasonable, the thought leaders were widely trusted, and almost all the users followed them. But a large number of people didn't follow when Ethereum split (hence Ethereum Classic) or when Bitcoin split in 2017 (hence Bitcoin Cash).
Thought leaders like Satoshi and Vitalik can influence most of the community of their respective coins, but they can't force anyone to accept their blocks.
> So if it can’t do the first thing it promises it can do, maybe it becomes more like a Rube Goldberg machine than something that is meant to be useful/practical. The fact that people are praising CryptoKitties as a “practical application” seems to support the Rube Goldberg machine/toy theory.
The problem I think is that decentralized control is really the only thing that blockchains offer over existing data stores. If you don't care about decentralized control, existing distributed logs such as Datomic are superior to blockchain in every way.
I would go so far as to say that the vast majority of blockchain users fall into two categories:
1. People who don't understand decentralization. 2. People who don't care about decentralization but are riding the hype (whether they understand decentralization or not).
This is why so many "blockchain applications" look like Rube Goldberg machines:
1. People who don't understand decentralization use it to implement things that would be much better served by an existing distributed datastore such as Datomic. 2. People who are just riding hype don't need to implement anything serious to fool people. They can implement a Rube Goldberg machine and there will always be suckers who take it seriously as long as it ticks the "blockchain" hype tickbox.
Very few people actually understand decentralization AND care about it, and even fewer of those have the technical chops to implement them. So I think it will take time for more complex blockchain killer apps to emerge.
It's worth noting that the first simple blockchain application, cryptocurrency, has already had pretty immense effects on our society, from darknet markets to crypto exchanges. You can argue whether the uses people use cryptocurrency for are good, but you can't argue it isn't useful--it's just not complex (from a logical standpoint--it's just a ledger--obvously it's technically and socially complex).
With the same basic code base, I've built:
A basic asset tracking system. Think shipping containers.
A simple IoT API (logging sensor data).
A crude lap time tracker for racing drones. This would be easily shareable and loaded into different tracks to log your progress. I build racing drones as a hobby.
The really useful thing about the blockchain is that I can define a data structure and then design systems that consume it. Making the data portable.
Feel free to email me with questions. It's a fun tech to work with and simpler than people make it look.
PS: For more info on cryptokitties (and copycats collectibles), see the Awesome CryptoKitties page -> https://github.com/openblockchains/awesome-cryptokitties
PPS: A great way to learn about cryptokitties (and copycat collectibles) is to build your own version from scratch :-) see the (in-progress) open source copycats version (in ruby) -> https://github.com/openblockchains/copycats
So the benefit of this application vs a traditionally structured app (lets call it RESTKitties) is what?
That the external ledger of kitty creation and transfers is open and public for everyone? So you have more confidence that the central organization isn't manipulating the ecosystem in some nefarious way?
I am not sure if that is supposed to be sarcasm or not.
- they are database
- they are distributed
- everybody has the entire db
- it's transparent: everyone see the content
- it's temper proof
- it has a notion of temporality
- it has a notion of transactions, and each transaction has a unique id and an history
- transactions have authors, sources and destinations, with unique identifiers that can't be faked.
Hence it's a transaction based system that is a source of truth that can be audited from end to end by anybody.
So the only applications that are interesting for the blockchain are the ones mapping to this EXACT concept. Otherwise, you don't need a blockchain.
But because of the bubble, people are now using the blockchain for everything, since that gives visibility. I have friends myself that have projects making ICO just for that. And it works. Their product clearly didn't need a coin, but they raised several millions of euros to build their stuff.
Ok, so what kind of project DOES match the blockchain paradigm?
So money, obviously is a contender.
But voting systems as well.
Or a mix of both, such as betting (see the wagger project).
Compliance systems are another use case. E.G: make a public database of all plane inspections or food products origin.
Being decentralized doesn't mean blockchain systems don't have central authorities. The decentralized nature mean the data access (and potentially production) is not on a central system, which has great benefits. But as soon has you need human actions, you need something to tell them in which direction to go.
So you need a central authority for the part dealing with the humans.
E.G: for the voting system, something to register the citizen and produce the polls. For the betting system, something to introduce the bet results into the blockchain. Etc.
One alternative to that we are experimenting with currently as a community is the use masternodes (POS machines holding a lot of coins out of the market for a long period of time to show their commitment). It's basically an oligarchy.
The coin Polis is an example of that: they make proposals of things to finance, and each masternode vote yes or no for the proposal.
They are a lot of masternode coins, now, for various uses. Zencash uses them to distribute the messages of its chat system, wagger to introduce the data from bets into the chain, etc.
But most of the masternodes are just used to increase the ponzi effect (we build and host masternode for our clients as a service so we have a large sample of them on our servers).
I feel like a broken record when I point out yet again that this is a technical non-solution to a human problem. The same bad actors who would falsify inspection records or food origin information will have no issue simply falsifying it into the blockchain instead of whatever current system is used.
The problem with bad actors faking records has everything to do with the bad actors and nothing whatsoever to do with the mechanism by which the records are recorded. The blockchain solves absolutely nothing in these use cases.
I'm aware of sites that tell you whether you need a blockchain or not for your application, but they don't say what to use if only one or two of the requirements for a blockchain are not needed. What would a decentralized DNS strictly need if the notion of transaction wasn't required (but only the latest value)?
You should also tell people under what license you're releasing your changes :)
https://github.com/ltavag/blocks
Always love to see the interest here, I'm excited for the technology to become detached from Crypto speculation!
That's a pretty big "potentially" since many of those organizations use centralization as a defense against bad actors.
As a sidenote, I have been working in C++-land for a while now, and its really cool to see how the examples both contain a simple blockchain implementation along with the views for a Flask web UI in the same file. I wonder if there are web libraries available to do something similar in C++?