Author

Topic: A mechanism for voting on changes in Mastercoin protocol (Read 3576 times)

legendary
Activity: 1358
Merit: 1003
Ron Gross
This is on the roadmap, but we do not have a spec for that yet, no.
Pull requests welcome.
legendary
Activity: 1666
Merit: 1010
he who has the gold makes the rules
is this being developed somewhere?  i don't see it in the main repo
sr. member
Activity: 297
Merit: 250

Committees tend to really screw things up. Debate and compromise destroy every well laid plan. 

Thanks for this life lesson.
hero member
Activity: 874
Merit: 1000
Proof of Stake is not the way. The creator of Mastercoins has too many Mastercoins to allow Proof of Stake to work.
OK - so some moron who has just 1 MSC gets as much voting power as JR?  Brilliant. 

I am going to divide my 1000 MSC onto 1000 addresses so I have the most vote and I am going to vote that Luckybit be excluded from all further proceedings. 

'Proof of Stake' - favors those with a greater stake.  WTF is complex about that?  JR doesn't even have 33% any longer.  If fact, I think his present voting position is too low.  I think he should be CEO with absolute veto power.  Committees tend to really screw things up. Debate and compromise destroy every well laid plan. 

I am very worried about guys like LuckyBit trying to wrestle into more power than is warranted.  Let's give everyone an IQ test and weigh their vote pro rata with shares by their intelligence.  That will safely neuter his big ideas.
legendary
Activity: 1358
Merit: 1003
Ron Gross
Sorry, I replied on the wrong thread Sad

Here's another feature which may be in the 1.2 version of the spec if people like it: Proof of Stake voting

https://bitcointalksearch.org/topic/m.3524354

A comment about protocol version:

I would like us all, Willett include, to do changes changes in pieces, and not in bulk.
I believe Willett is currently working on a big pull request for "1.2". This is not the best way to develop software (or specs for this matter).

Instead of one big pull requets that is either accepted or not, let's separate each change to its own pull requests and/or github branch. This will help us all move faster.

We could still have a process of versioning the spec (we don't have to!). If we choose to version it, the the process of deciding on a version would be just that we (= Willett) designate a specific point on the master branch as "1.2", and tag it appropriately.

We need to include some way to propose votes, and to allow the proposer to set a time period.
I propose we add a new message to the protocol: Request Vote.
This message will currently be free of charge (except underlying btc costs). In the future we might want to add a certain price at vote requests, because otherwise anyone will be able to spam vote requests ... we can decide on what a good price for this vote later. We can have the vote request cost go to 1Exodus. Note that I'm not talking about a cost required in order to vote, but a cost required to publish a vote request. Alternative mechanisms to prevent spam are also possible.

Whoever initiated the vote request needs to set a few parameters:

1. Time frame until the voting closes.
2. Percent of stake required for a decision. This should be at least > 50% of all potential votes. The percentage is never out of the people who actually voted - I think we should, at least for now, treat abstaining from voting just like voting "No". Regardless, we might want to have some votes have a higher degree of consensus than 50% like 60 or 70% of all mastercoin holders. Whoever creates the vote request should be able to decide this.

Proof of stake voting is a wonderful feature.
This can provide a secure fully decentralized source of data streams for asset prices.
The price would be an emergent property of a long series of binary votes adjusting it up and down by a small amount.
There are strong incentives for honest reporting because:
a) The mastercoin owners have a strong incentive to maintain accurate data streams. Such accurate datastreams could allow mastercoinUSD (though the plan needs tweaking) and successful implementation of mastercoinUSD would lead the coin to take on tremendous value.
b) individual capacity to influence outcomes is too limited to profit meaningfully from manipulation

Yeah, I've been toying with ideas like that. I think it's too early but that's definitely a valid direction to explore!
I suggest starting a dedicated thread to discuss that.
legendary
Activity: 1260
Merit: 1031
Rational Exuberance
Ron asked me to spec out what this might look like. If this is acceptable, it could go into the 1.2 version of the spec:

  • Mastercoin websites will have a "voting" section for each currency and smart property.
    • Owning a currency or property allows you to vote on issues related to how that currency or property should be run.
  • The voting section will list issues which are available to vote on, as well as feature requests, in descending order of popularity, and the current vote tally for each
  • Mastercoin messages needed for voting are:
    • Create new issue (title and what the options are, such as YES/NO or A/B/C/D)
    • Vote on issue (address X votes NO on currency Y issue Z)
      • Weight of vote is proportional to the amount of currency or property owned by that address (proof of stake)
    • Create a new feature request (title and description)
    • Vote on feature (address X supports feature Z on currency Y) - also weighted by ownership
      • A single address may only support one feature, and may only vote in one direction, however . . .
      • A user may split their vote by using multiple addresses
  • When some or all property is transferred out of an address which has voted, the votes of the transferred property are invalidated (this allows the owner of the new address to vote again)
  • Votes are advisory votes only, and are enforced by social contract, rather than by the protocol itself

As an example, the Mastercoin foundation will be issuing memberships at some point as a smart property. Owners of those memberships can vote on issues related to the governance of the Mastercoin foundation. Similarly, Mastercoins themselves will have a voting section.
legendary
Activity: 1358
Merit: 1003
Ron Gross
I sincerely hope you don't abstain from any votes.
I trust your judgement as the product lead and visionary, and would value your input and vote on any core decisions.
legendary
Activity: 1260
Merit: 1031
Rational Exuberance
Proof of stake is the way to go, and I'm not saying that because I have the largest stake! If the goal is to increase MasterCoin value by choosing the best features, you want people who own MasterCoins to do the voting.

I've said before that if we set up feature voting I'd be willing to abstain, in order to avoid accusations that I'm some kind of protocol dictator. Right now I'm making protocol decisions because we can't all go in different directions, but I'd be happy to get out of the way if the community had voting set up.

It would be trivial to add a MasterCoin message for "suggest/support feature". We could then parse those messages to display the features with the highest number of MasterCoins supporting them Smiley

As Ron said on our main thread, it might be best if I don't personally make the decision to proceed with distributed e-commerce, given it's many potential uses for illegal goods and services!

Although, actually, I've been giving a lot of thought to distributed e-commerce, and I think I see the potential for great good in it as well. For that reason, I'll probably rev the spec with a proposed set of message formats for that feature at some point.
legendary
Activity: 1358
Merit: 1003
Ron Gross
Bitcoin isn't democratic but it's supposed to be. Why would anyone support it if it doesn't try to be?

Democracy doesn't require you lose anonymity or decentralization. Anonymity doesn't even exist and is an illusion. Bitcoin is pseudo-anonymous and was not designed to be anonymous. And not everyone thinks it should be anonymous.

Decentralization? If you're going with Proof of Stake voting you're centralizing the power but saying that is decentralization? I'm saying decentralized power through democracy which means you cannot have Proof of Stake based voting because that will produce a central authority of massive stakeholders who rule over everyone else.

On what grounds you say that "Bitcoin is supposed to be democratic"?
Did you have a secret chat with Satoshi that I don't know about?
Bitcoin is what it is, and Mastercoin is what it is. Fair in some sense (every $ counts the same way), but not democratic.

PoS is the best decentralized voting mechanism I can think of, I'm open to hear other constructive ideas for "fairer" voting mechanisms, provided they do not compromise the anonymity or other features of Mastercoin.
hero member
Activity: 714
Merit: 510
Then Mastercoin is a corporation, the voting group is a syndicate, and it should be taxed.
You can't adopt tax free status without having an actual democracy. An actual democracy means 1 vote per head.

Dacoinminster has too many Mastercoins to convince anyone that it is decentralized. It's more decentralized than Ripple but cannot compete with Colored Coin. Mastercoin is as much a corporation as Ripple and the foundation cannot remain tax free unless it acts like a foundation and not a corporation. A foundation has members and members are all equals.

Any anonymous system can be corrupted by coercion. Any anonymous system of voting doesn't allow anyone to know who voted or if the votes are even legitimate. If you want to just let whoever has the coins at that time to vote on the direction of Mastercoin then go ahead, but don't make it part of the Mastercoin foundation and don't be surprised if a bunch of corporations end up owning Mastercoin as a protocol because they buy all the Mastercoins and tame it.

Verification is important if you want an actual democracy. If you're trying to be fair with your votes then each member should get a vote. If you're not trying to be fair then just let dacoinminster have complete control and not bother with voting. Voting gives only the illusion that he is relinquishing control when his votes are worth more than the average vote.

I'm not a tax lawyer. The foundation is composed of a board that isn't paid a salary.
The board has been trusted with the initial mastercoins and bitcoins in 1Exodus, and its job is to spend them for the benefit of all mastercoin users. I'll leave to tax lawyers the question of whether this qualifies as a tax-free organization or not.

It completely goes around colored coins - CC is one small feature, mastercoin is an entire new, evoling layer.
Just like the Bitcoin Foundation doesn't dictate the evolution of Bitcoin, the Mastercoin Foundation doesn't dictate the evolution of mastercoin.

Democracy isn't the goal, just like Bitcoin isn't democratic. The goal is to be fair - democracy is one route to this fairness, but it would force us to sacrifice anonymity and decentralization, so it is not going to happen.

Bitcoin isn't democratic but it's supposed to be. Why would anyone support it if it doesn't try to be?

Democracy doesn't require you lose anonymity or decentralization. Anonymity doesn't even exist and is an illusion. Bitcoin is pseudo-anonymous and was not designed to be anonymous. And not everyone thinks it should be anonymous.

Decentralization? If you're going with Proof of Stake voting you're centralizing the power but saying that is decentralization? I'm saying decentralized power through democracy which means you cannot have Proof of Stake based voting because that will produce a central authority of massive stakeholders who rule over everyone else.

legendary
Activity: 1358
Merit: 1003
Ron Gross
Then Mastercoin is a corporation, the voting group is a syndicate, and it should be taxed.
You can't adopt tax free status without having an actual democracy. An actual democracy means 1 vote per head.

Dacoinminster has too many Mastercoins to convince anyone that it is decentralized. It's more decentralized than Ripple but cannot compete with Colored Coin. Mastercoin is as much a corporation as Ripple and the foundation cannot remain tax free unless it acts like a foundation and not a corporation. A foundation has members and members are all equals.

Any anonymous system can be corrupted by coercion. Any anonymous system of voting doesn't allow anyone to know who voted or if the votes are even legitimate. If you want to just let whoever has the coins at that time to vote on the direction of Mastercoin then go ahead, but don't make it part of the Mastercoin foundation and don't be surprised if a bunch of corporations end up owning Mastercoin as a protocol because they buy all the Mastercoins and tame it.

Verification is important if you want an actual democracy. If you're trying to be fair with your votes then each member should get a vote. If you're not trying to be fair then just let dacoinminster have complete control and not bother with voting. Voting gives only the illusion that he is relinquishing control when his votes are worth more than the average vote.

I'm not a tax lawyer. The foundation is composed of a board that isn't paid a salary.
The board has been trusted with the initial mastercoins and bitcoins in 1Exodus, and its job is to spend them for the benefit of all mastercoin users. I'll leave to tax lawyers the question of whether this qualifies as a tax-free organization or not.

It completely goes around colored coins - CC is one small feature, mastercoin is an entire new, evoling layer.
Just like the Bitcoin Foundation doesn't dictate the evolution of Bitcoin, the Mastercoin Foundation doesn't dictate the evolution of mastercoin.

Democracy isn't the goal, just like Bitcoin isn't democratic. The goal is to be fair - democracy is one route to this fairness, but it would force us to sacrifice anonymity and decentralization, so it is not going to happen.
hero member
Activity: 714
Merit: 510
Well, Mastercoin won't work if Willet will have 51% of all coins long term.
The economical stability of the system requires that the coins become more distributed anyway ... so I believe that a sort of PoS system is indeed the correct solution (the system doesn't necessarily need to award new coins to voters, although it's a cool incentive to encourage everyone to vote ... even without new coin generation, just a voting structure based on ownership is good enough).
You can do that but that is not democracy. Mastercoin would be a corporation at best and inherent all of the mistakes, flaws, and issues that many people have with the current ways of doing things. I think Proof of Stake does not work very well if it's supposed to be a democracy or for community decision making. It does work fine if the goal is to maximize profit because if the goal is only to make Mastercoin as valuable as possible and nothing else what you have then is a Mastercoin syndicate and not a foundation. That syndicate should be taxed.
One-vote-per-user just isn't going to work. Mastercoin, just like Bitcoin, cannot be tied to regulation, centralization, and thus identity-verification.
Then Mastercoin is a corporation, the voting group is a syndicate, and it should be taxed.
You can't adopt tax free status without having an actual democracy. An actual democracy means 1 vote per head.

Not going to happen. Mastercoin is and will remain decentralized, and will become more decentralized as Willet's coin ownership dilutes (he himself stated him losing 50% as one of the milestones of the project).
Dacoinminster has too many Mastercoins to convince anyone that it is decentralized. It's more decentralized than Ripple but cannot compete with Colored Coin. Mastercoin is as much a corporation as Ripple and the foundation cannot remain tax free unless it acts like a foundation and not a corporation. A foundation has members and members are all equals.
What sort of gaming to you fear if it's anonymous?
It will be controled by its users in proportion to how they have a stake in the coin.
Otherwise you could hire a million Chinese people that don't have anything to do with Mastercoin to spam the voting process, just like the gold-farmers of today. It's just not a good system.

Any anonymous system can be corrupted by coercion. Any anonymous system of voting doesn't allow anyone to know who voted or if the votes are even legitimate. If you want to just let whoever has the coins at that time to vote on the direction of Mastercoin then go ahead, but don't make it part of the Mastercoin foundation and don't be surprised if a bunch of corporations end up owning Mastercoin as a protocol because they buy all the Mastercoins and tame it.

Verification is important if you want an actual democracy. If you're trying to be fair with your votes then each member should get a vote. If you're not trying to be fair then just let dacoinminster have complete control and not bother with voting. Voting gives only the illusion that he is relinquishing control when his votes are worth more than the average vote.
legendary
Activity: 1358
Merit: 1003
Ron Gross
Everyone, please check out this thread about a new core meta-feature I want to include in Mastercoin - voting on changes.

The Mastercoin protocol will continue to evolve, and currently there is no clear way to evolve the protocol in a decentralized manner. I think it's essential that nobody, including client developers and members of the Mastercoin Foundation, have any kind of control over the protocol. Its users should vote on any desired protocol change using a Proof Of Stake like system.
Do not use Proof of Stake. Use code based voting http://people.eng.unimelb.edu.au/vjteague/PGD.pdf

Each member of the foundation should be verified. Their votes should be tied to their real world identity. Each member should receive a code sheet to their smartphone or mailing address. That sheet should allow them to vote pseudo-anonymously in elections so that no one will know who they voted for or what but every member would be equal and capable of voting. Proof of Stake would create a situation where dacoinminster would own most of the coins and the system would be gamed by him or whomever else owns most of the coins.

An additional solution, create a vote coin for each specific vote. Require any verified member of the Mastercoin foundation to purchase each coin for each vote. This would ensure that each member receives only one vote and then set up an address where they all send the coins to. If they vote one way it should say yes and another way it should say no. This could be stored as a transaction and decoded to determine which way they voted. The addition of the code sheet would make it so no one could figure out who votes for what, just the amount of verified members who voted and for what.

The tokens would be limited to the exact number of members in the Mastercoin foundation. It could not be gamed because each member would only be able to vote once per election. Each member would have to purchase a vote coin so the voting would not be free, but it should be cheap. Tokens would either be heads or tails to represent the way they voted. In the future it could include heads, tails, or unsure. This could all be done by fuzzy logic. Each token would be unique and counting the votes would happen in real time.

Existing code-based voting schemes are not going to work, because they require verification and are still centralized.

The purpose is to take control of the protocol away from the Foundation as well and into the community.
legendary
Activity: 1358
Merit: 1003
Ron Gross
BTW, sorry for spreading misinformation, Willet does not hold >50% of all coins ... I forgot that we passed this milestone a while back.

... Proof of Stake would create a situation where dacoinminster would own most of the coins and the system would be gamed by him or whomever else owns most of the coins. ...
Just to correct one misconception about mastercoin that I've seen mentioned a few times; JR's personal investment did not purchase the majority of total coin supply.  JR holds the largest investment absolutely, but he does not own most of the coins.

For specifics (hope you don't mind me posting this JR but it's a matter of public record for anyone who cares to look) JR purchased ~175,195 MSC (ref) and the total coin supply is ~619,478 MSC.  JR thus purchased and holds roughly 28% of the coins created during the minting process.
legendary
Activity: 1358
Merit: 1003
Ron Gross
Proof of Stake is not the way. The creator of Mastercoins has too many Mastercoins to allow Proof of Stake to work.
Instead it should be code based voting and based around actual digital signatures tied to real people. That would mean you'd have to use some verified account to vote. You could be pseudo-anonymous but if the account is verified then its one vote per verified user of Mastercoin.

Well, Mastercoin won't work if Willet will have 51% of all coins long term.
The economical stability of the system requires that the coins become more distributed anyway ... so I believe that a sort of PoS system is indeed the correct solution (the system doesn't necessarily need to award new coins to voters, although it's a cool incentive to encourage everyone to vote ... even without new coin generation, just a voting structure based on ownership is good enough).

One-vote-per-user just isn't going to work. Mastercoin, just like Bitcoin, cannot be tied to regulation, centralization, and thus identity-verification.

If its completely anonymous it will be gamed. If it's Proof of Stake and anonymous then for all we know dacoinminster could game it himself.
Voting has to be both coercion resistant, pseudo-anonymous, verified, and it should be impossible for anyone to figure out who you voted for.

Code based coercion resistant voting makes this possible. Each verified user would receive a code sheet to their smart phone or mailing address which they can use to vote. This would require that every legitimate member of the foundation and democracy reveal their identity at some point, but those identities would not have to be tied to any specific addresses so they would still be pseudo-anonymous. The system would not keep track of who votes for what, it would just tally the votes everyone made. A user defined coin called a vote coin could be created to initiate a vote or poll and individuals who are verified members of the Mastercoin foundation could purchase those coins which would be limited in generation to the exact amount of verified members in an organization. These coins would actually just be tokens to promote the pseudo-anonymity of the process.

For more information http://people.eng.unimelb.edu.au/vjteague/PGD.pdf

Not going to happen. Mastercoin is and will remain decentralized, and will become more decentralized as Willet's coin ownership dilutes (he himself stated him losing 50% as one of the milestones of the project).

What sort of gaming to you fear if it's anonymous?
It will be controled by its users in proportion to how they have a stake in the coin.
Otherwise you could hire a million Chinese people that don't have anything to do with Mastercoin to spam the voting process, just like the gold-farmers of today. It's just not a good system.
hero member
Activity: 714
Merit: 510
I believe that in the medium range (say in the next 6 months), we need to decide, formalize and code a distributed voting mechanism for changes in the Mastercoin protocol. I will copy a similar post I made in our lonely Google group:

Quote
I think that above everything else, MasterCoin is an infrastructure with yet unknown capabilities. As one of the first tasks in the MasterCoin protocol, I would like us to implement a way for MasterCoin holders to vote on protocol changes (hardforks).

Before proposing a way to evolve MasterCoin past forking changes, I'd like to explain how MasterCoin can have forks, even though it's not really mined. MasterCoin 1.0 was defined in Willet's original whitepaper ... but Willet is not the master of MasterCoin. If everyone in the world except Willet decides to add feature X to MasterCoin and call that "MasterCoin 1.1", then this will be the de-facto new MasterCoin. The new MasterCoin can contain new operations and transaction types that Willet's original spec does not support, and so the two "worldviews" of MasterCoin 1.0 and MasterCoin 1.1 will diverge - in other words, when we let the MasterCoin 1.0 program parse the Bitcoin blockchain, and also let the new MasterCoin 1.1 program parse the same blockchain, they will disagree on the balance each address contains (1.1 might even contain new types of addresses unrecognizable by 1.0)

With Bitcoin, there is a clear, decentralized way for miners to vote on protocol changes - by hash power. In MasterCoin, there are no miners (well, they're hidden in the Bitcoin layer and are irrelevant to MasterCoin).

I propose the following protocol that MasterCoin can use to control its own evolution:

1. We build one reference implementation of MasterCoin 1.0
2. We now encode the hash of the git commit for the reference implementation of MasterCoin 1.0 in MasterCoin's own code, forming MasterCoin 1.0.1. Everyone starts running MasterCoin 1.0.1.
3. Whenever there is a desire to add a forking change to MasterCoin, anyone can publish a protocol change request into the MasterCoin network using a special message (the message contains a URL of a repository and a git commit hash within that repo).
4. Owners of MSC can vote whether they approve a particular valid fork request (a fork request is valid if its git commit hash is a descendant.of the currently accepted master hash.
5. Once more than 50% of all MSC have voted on a particular fork, it becomes the new standard, and everyone should upgrade to the new client (or else, they will be stuck on the wrong side of the fork).

(The above assumes that Willet will control less than 50% of all MSC).

BTW the above kind of reminds me the rules of Nomic ... it can get quite crazy.

I suspect there are other easier way to implement this, feel free to butt in.

Proof of Stake is not the way. The creator of Mastercoins has too many Mastercoins to allow Proof of Stake to work.
Instead it should be code based voting and based around actual digital signatures tied to real people. That would mean you'd have to use some verified account to vote. You could be pseudo-anonymous but if the account is verified then its one vote per verified user of Mastercoin.

If its completely anonymous it will be gamed. If it's Proof of Stake and anonymous then for all we know dacoinminster could game it himself.
Voting has to be both coercion resistant, pseudo-anonymous, verified, and it should be impossible for anyone to figure out who you voted for.

Code based coercion resistant voting makes this possible. Each verified user would receive a code sheet to their smart phone or mailing address which they can use to vote. This would require that every legitimate member of the foundation and democracy reveal their identity at some point, but those identities would not have to be tied to any specific addresses so they would still be pseudo-anonymous. The system would not keep track of who votes for what, it would just tally the votes everyone made. A user defined coin called a vote coin could be created to initiate a vote or poll and individuals who are verified members of the Mastercoin foundation could purchase those coins which would be limited in generation to the exact amount of verified members in an organization. These coins would actually just be tokens to promote the pseudo-anonymity of the process.

For more information http://people.eng.unimelb.edu.au/vjteague/PGD.pdf
legendary
Activity: 1358
Merit: 1003
Ron Gross
I believe that in the medium range (say in the next 6 months), we need to decide, formalize and code a distributed voting mechanism for changes in the Mastercoin protocol. I will copy a similar post I made in our lonely Google group:

Quote
I think that above everything else, MasterCoin is an infrastructure with yet unknown capabilities. As one of the first tasks in the MasterCoin protocol, I would like us to implement a way for MasterCoin holders to vote on protocol changes (hardforks).

Before proposing a way to evolve MasterCoin past forking changes, I'd like to explain how MasterCoin can have forks, even though it's not really mined. MasterCoin 1.0 was defined in Willet's original whitepaper ... but Willet is not the master of MasterCoin. If everyone in the world except Willet decides to add feature X to MasterCoin and call that "MasterCoin 1.1", then this will be the de-facto new MasterCoin. The new MasterCoin can contain new operations and transaction types that Willet's original spec does not support, and so the two "worldviews" of MasterCoin 1.0 and MasterCoin 1.1 will diverge - in other words, when we let the MasterCoin 1.0 program parse the Bitcoin blockchain, and also let the new MasterCoin 1.1 program parse the same blockchain, they will disagree on the balance each address contains (1.1 might even contain new types of addresses unrecognizable by 1.0)

With Bitcoin, there is a clear, decentralized way for miners to vote on protocol changes - by hash power. In MasterCoin, there are no miners (well, they're hidden in the Bitcoin layer and are irrelevant to MasterCoin).

I propose the following protocol that MasterCoin can use to control its own evolution:

1. We build one reference implementation of MasterCoin 1.0
2. We now encode the hash of the git commit for the reference implementation of MasterCoin 1.0 in MasterCoin's own code, forming MasterCoin 1.0.1. Everyone starts running MasterCoin 1.0.1.
3. Whenever there is a desire to add a forking change to MasterCoin, anyone can publish a protocol change request into the MasterCoin network using a special message (the message contains a URL of a repository and a git commit hash within that repo).
4. Owners of MSC can vote whether they approve a particular valid fork request (a fork request is valid if its git commit hash is a descendant.of the currently accepted master hash.
5. Once more than 50% of all MSC have voted on a particular fork, it becomes the new standard, and everyone should upgrade to the new client (or else, they will be stuck on the wrong side of the fork).

(The above assumes that Willet will control less than 50% of all MSC).

BTW the above kind of reminds me the rules of Nomic ... it can get quite crazy.

I suspect there are other easier way to implement this, feel free to butt in.
Jump to: