A smart contract is a computer protocol intended to digitally facilitate, verify, or enforce the negotiation or performance of a contract. Smart contracts allow the performance of credible transactions without third parties. Smart Contracts are self-executing contractual states, stored on the blockchain, which nobody controls and therefore everyone can trust. Etc...
So what exactly can these be used for other than for what ordinary paper contracts are used? What does it mean to build an app with this? Is this just about developing digital wallets/baskets or what?
Yes, I am this stupid when it comes to this subject. I would really appreciate if somebody could direct me to an article/video/book that would explain the thing from the practical point of view for a plain old application developer having zero understanding of what's this all about.
You're right. I also cannot think of anything useful that "smart" contracts can accomplish that a normal contract cannot. Also, wtf does "apps" mean? Can I run this "app" on my phone? Is it like instagram?
You probably live in one of the less corrupt countries in the world, where the public record the ownership you hold over your house won’t disappear over night.
More than 4 billion people don’t, and even those of us who do, should probably use our non-corrupt climate to implement these anti-corruption use cases while our political leadership isn’t corrupt. I mean, even if we never turn to corruption it’s infinitely easier to implement when you don’t need it.
Aside from that private sectors like container shipping desperately need a secure and global way to authenticate container ownership. Shipping the piece of paper that will let you pick up a container at a dock is currently more expensive than shipping the container itself, because anyone with that paper can steal your stuff.
Or what about making sure consumers know that they are actually buying your brand and not a copy?
That being said, most of those use cases won’t be decentralized. Maersk isn’t going to utilize public nodes, they’ll run their own.
> You probably live in one of the less corrupt countries in the world, where the public record the ownership you hold over your house won’t disappear over night.
In sufficiently corrupt countries they don't even have to disappear, they just can be either ignored easily or proclaimed illegitimate. A blockchain record saying you own something means nothing in countries where these are not legally recognized and I don't know any where they are (but Estonia, perhaps) and especially in corrupt countries where police and judges do whatever they are told by particular people rather than the law, the evidence or whatever. Also, a person can just come and beat the secret key out of you and submit whatever transactions he wants to the actual blockchain in countries like that.
I understand that even Estonia requires a manual process, with two witnesses at site to a property transaction. Then the question becomes how you digitize this on the blockchain?
I don't think the point is to do things that regular contracts can't. Instead imagine doing all of the things that they can do, but without the need for lawyers or court rooms or even governments.
Once you drop those constraints, the door opens for all kinds of applications that would be too slow or complex to execute on government infrastructure.
For example, I could configure my vehicle to keep track of pothole locations, and then every time it swerved to avoid one I put 25 cents worth of cryptocurrency into a wallet with an associated smart contract that says: this money goes to anybody who fixed the pothole.
Later, somebody fixes it and notifies the smart contract of their claim against my reward.
Next time I'm near that pothole, my vehicle either inspects is or prompts me to, and if it seems fixed, the fixer gets the money.
Without smart contracts it's difficult for the would-be fixer to know that the promised money even exists, and to be sure I'll actually deliver.
Now maybe the app above needs to be tweaked to include somebody who is a trusted pot-hole inspector who goes around doing the inspections (in exchange for a cut). Maybe that trust comes from the fact that they wrote the app in the first place.
The point is, you can have apps that make decisions in a way that can't be tampered with. Want to withdraw your pothole donation? Too bad, the contract is the only software that can move funds out of that wallet. The only way to unlock them is to find somebody to fix the pothole.
That's something that would be difficult to ensure without a smart contract.
Forget the word “smart”. A contract is just code that is run by all the nodes in a P2P system to achieve outcomes that everyone can agree on. Add in some crypto to make it impossible for anyone except the author of the code to modify it, and to ensure that the code all runs in the right sequence.
And what can this be used for? I can hardly imagine any real-world application for this but distributed calculations like Folding@home, SETI@home, password cracking, DDoS-ing etc. And I totally can't imagine what can this have to do with a GUI framework like vue.js.
None of the above, it is not made for computation intensive tasks (it would be extremely inefficient and expensive). You can make crypto kitties though.
many classes of transactions and economic activities that require the facilitation of real-world middlemen (drafting & enforcing contracts, coordinating buyers & sellers, etc) can be turned into something that exists entirely on the network and automated. a straightforward example is a gambling pool that exist purely in software, on no particular device.
vue.js is just for a pretty frontend for the apps.
Is there a reasonably simple (and reasonably documented) yet reasonably usable free open-source application of this kind available to study?
By the way, can I use the blockchain as a decentralized replacement for a database (e.g. instead of MongoDB/CouchDB) for my app so that all the data submitted (provided it's lightweight immutable semantic data, i.e. "facts" accompanied with small (never bigger than 256 symbols, usually smaller) amounts of parameters) will be stored in the blockchain? If yes, where do I get started (without having any blockchain experience to the moment)? Is there some kind of tutorial that would explain this vue-ethereum-ipfs things (the README.md of the repo by the links makes near-zero sense to me but I am eager to develop a "multiplayer" VUE app that would store its data "nowhere and everywhere")?
you could take a look at openbazaar, which (as far as i know) is the leading decentralized market software currently being developed. it uses cryptocurrency for payments and ipfs as a filesystem.
you surely could use the blockchain as a database, because you can attach small amounts of arbitrary data to blocks[1], but it would be very inefficient (transaction fees!). something like ipfs is probably a better solution.
i'm not a software developer, i just think this stuff is really cool and follow projects. someone with more technical chops could definitely give you some better pointers! i do have this bookmarked, though: https://dappsforbeginners.wordpress.com/
The important properties here are immutability, transparency and authentication. This could be done by a centralized server. For instance by keeping an append-only log with signed voting records which is regularly published, where each entry contains previous entry ID. Like git...
But how do you know that the centralized server does not override all records to tamper the evidence? Append-only log is useless if the actor choose to override all logs.
So you need a neutral third party to keep the records in case the centralized server does the malicious behaviour.
This can be done, I admit. But in a corrupt society, it is hard to find a neutral and trusted party.
Other way is using blockchain to record the logs and incentivize the miners to maintain the nodes. You can not bribe the cryptography.
In theory smart contacts remove the need for law & lawyers to enforce contracts. In practice any useful contract will need some data that isn't present in blockchain, from 3rd party providers/oracles. It is nice solution for gambling - if you bet on future blockchain state, since betting on sport events need an oracle that will provide smart contract with sport event results.