11

This is a question about Blockchain in general, not about Bitcoin as a currency on top of Blockchain technology.

Let's say I want to issue a vote on top of, lets say, multichain. I would issue an asset called "voting_right". Let's say I have 1000 participants, so I create 1000 voting rights and send each participant address one voting right. Everyone can either transfer their vote to somebody else or directly to a vote option.

I don't have given anyone mining permissions, because I don't want anyone to "illegally" earn voting rights. On the other side, I require miners to collect the votes into blocks and prevent double-voting.

  • Can there be a Blockchain without miners?
  • If no, what I am assuming, is there any danger if I, let's say create two mining-enabled multichain nodes (with 0 reward), 100% controlled by me? How can others trust me?
  • To answer the other part of your question, can you please clarify what you mean by "mining"? Is it proof-of-work mining? Or are you just referring to nodes doing the needed verification and gossiping to achieve consensus? – Alin Tomescu Jul 19 '16 at 2:37
  • Just to note that the scenario you described can be implemented easily using, say Counterparty, without any risk of miners illegally getting any of the voting tokens. The miners' rewards are different from the asset/token you want to create. – karask Jul 19 '16 at 20:51
  • related: bitcoin.stackexchange.com/q/44409/5406 – Murch Jul 20 '16 at 16:42
15

I don't know anything about Multichain so I'm not sure if this is the answer you're looking for, but here's one answer that might help you.

The interesting thing about proof-of-work (Nakamoto) blockchains is that they enable a constantly-changing set of unknown nodes on the internet to achieve consensus under certain assumptions about the adversary (i.e., the good guys are more "powerful" than the bad guys).

Before Bitcoin, no one knew how to do this (AFAIK) and all consensus algorithms required that the participants were known and that 2/3 of them were honest. Typically, an admission control process was used to decide who could participate and who couldn't. This was, for the most part, a human process.

Now, blockchains solve this very hard problem of permissionless consensus: How can you agree on a log of operations among N participants as they leave and join the system, without an admission control process? The answer: Use a little bit of economics to incentivize participants to behave correctly, no matter who they are (i.e., Bitcoin).

Now, with this understanding of the hard problem Nakamoto blockchains solve, you can image that a system such as the one you propose (if I understand it correctly), where users have to trust you to correctly dictate consensus, is not that interesting nor useful. It is well known how to achieve consensus with trust: just use any Byzantine agreement protocol and keep 2/3 of your nodes honest.

I am not sure if I properly understood your question and your system, so I hope this answer is not completely useless to you.

6

The other answers explain the problem that mining solves -- of the many possible valid blockchains, which is the one that everyone can agree on? Proof of work solves this -- the valid chain that took the most work to produce is the one that everyone agrees on.

There are other solutions. Note that some of these may not be sufficiently secure for some use cases, and it's very easy to implement these things incorrectly and not get the security you require.

For private or permissioned blockchains, PBFT can be used. With this scheme, "miners" are chosen when the system is set up. "Miners" can be added or removed by agreement of the existing "miners". Rather than using proof of work, the "miners" in this scheme agree on the valid blockchain. In one scheme, those "miners" who are currently operating rotate in getting a turn to create a block. The other "miners" sign that block so that everyone knows its valid. This kind of system cannot make forward progress unless a majority of miners are operating and will not function reliably unless at least 2/3 of miners aren't malicious.

For public blockchains that have a native cryptographic asset, proof of stake can be used. This is much like the scheme above except that those who hold the native asset are allowed to "mine". Bond schemes can be used such that proof of incorrect operation by a "miner" forfeits their bond.

Schemes such as Ripple's consensus algorithm can be used. This works much like the PBFT scheme except that it doesn't require strict agreement on the "miners". This makes it suitable for use on public/permissionless systems.

5

I'd like to add my own answer and remark that Alin Tomescu's answer does a good job of explaining the problem proof of work solves, so I won't go into those details.

The concept you describe could work. The problem is it makes no sense to use a blockchain to do this. Since your concept requires trust in the original issuer there's no reason for a blockchain to exist. The point of a blockchain is to provide a trustless, publicly verifiable and distributed ledger of transactions. As each block is added to the blockchain without a consensus algorithm such as proof of work mining where miners have incentive to not rewrite transactions, how does the network decide which blockchains are correct? For instance if I connect to one of the nodes in your network what's to stop that node from feeding me an incorrect version of your blockchain (on in which it didn't spend it's vote)? The only way I think this can work is if the original issuer signs each block with their private key that the public can then verify as being correct.

The concept you describe could easily and much more simply be implemented using a central database (you can make it publicly accessible as well) where you record the signed votes of your members in one table and in another table members can transfer votes to other members by using their vote to sign the transaction. In this scenario you are the certificate authority who issues the voting certificates to your members. You and the public can verify the votes in the database with a certificate chain that you make publicly available. This allows the individual voters to remain anonymous in their voting decisions, but still verifiable that their votes were made with a certificate signed by the central authority (the one person we are required to trust). Using a central database also prevents the problem of not knowing which chain is correct.

Basically, making use of a blockchain and removing the trustless factor can easily work, but it's slower and completely overkill for the job. If you don't need a trustless system, then simply use the efficient tools we have already built for trusted networks.

I really hope I've understood your question correctly and have provided a helpful answer.

-2

Mining is still a murky concept to me. Mining, as I understand it, is used to verify and secure unconfirmed transactions. Based on what I've read, for Bitcoin it seems to mean that when a transaction occurs it is unconfirmed until a new block is verified. My assumption has always been that the block is not "written" until both unconfirmed transactions are in the queue AND a block has been "mined" with a bundle of unconfirmed transactions.

If “mining” sounds like a process which extracts value from Bitcoin, nothing could be further from the truth!

Miners are the backbone of the Bitcoin network:

Without miners, the network would collapse and lose all value.

The role of miners is to secure the network and to process every Bitcoin transaction.

Miners achieve this by solving a computational problem which allows them to chain together blocks of transactions (hence Bitcoin’s famous “blockchain”).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.