Author Topic: Can BitShares negotiate in order to construct optimal proposals prior to voting?  (Read 2456 times)

0 Members and 1 Guest are viewing this topic.

Offline hadrian

  • Sr. Member
  • ****
  • Posts: 467
    • View Profile
  • BitShares: hadrian
Hadrian, I applaud your forward thinking. I haven't seen nearly enough of that around here lately. Aside from NameNarWhal's registration initiative that is  ;)

The dev staff is probably too busy to think about this now. What we need is to come up with a list of such issues in a single thread, and elsewhere, in a different thread we can discuss them. A locked sticky that only the mods can add / edit, with content culled from anywhere else an issue is raised, like your OP here. I would title that item as Proposal Procedures.

Vikram mentioned elsewhere he would update the migration page of the website if additions & clarifications are needed. I don't think this falls into that category, I think it's a bit different animal, tho it clearly is related to migration to 2.0. I see it as a gap that needs some serious thought and consideration.

IMO you're spot on in thinking it's not such a simple thing to implement a workable system, especially as you point out if we have far more users with potentially divergent ideas of governance. It strikes to the core of how DPoS 2.0 will function. There are some fundamental decisions that must be made first, like how many Delegates are required and what the actual fee schedule for their registration will be and what qualifications they must have. Who knows who is even interested in becoming an unpaid Delegate under DPoS 2.0?

BM said in a mumble that the devs would be the initial set of Delegates until others are voted into place, and that they (CNX) does not want to be in those positions after some (as yet undefined) conditions are met. In my view there are still many things like this that we haven't begun to talk about, and we could really use a systematic approach to doing so.

Leadership to organize all of these things and focus our attention so they can be identified, discussed and resolved would sure be welcome. Perhaps it's too early for that, but I don't think so. It just seems to be an area of little concern at the moment though, at least I don't see much concern expressed like this.

Just who would be the ideal party to do this? Who have you seen in the community that has demonstrated leadership traits and organization skills that could guide such an effort? Chime in with your favorite candidate and tell us why you think he would be a good choice for this role.

I like what you're suggesting Thom. There are many people capable of doing this. My guess is there would be a problem finding somebody with the time to do it. Would anyone reading this like to put their name forward for such a role, please? Maybe we could entice someone by asking people directly. How about you, Thom? :P

Maybe there could be regular think-tank sessions using the mumble facility set up by @fuzzy? This may be an efficient way to get various issues discussed. If the timezone thing's a problem people could submit subjects for discussion along with ideas for solutions on this forum. After the mumble, someone could write up a summary to be posted on this forum, so people can assess and comment on any conclusions.

edit: even if people can't make it to a mumble session, they may find it very interesting to listen to a recording. It may give people 'food for thought' and could inspire someone to come up with a great solution to improve BitShares.
« Last Edit: June 18, 2015, 01:31:46 pm by hadrian »
https://metaexchange.info | Bitcoin<->Altcoin exchange | Instant | Safe | Low spreads

Offline starspirit

  • Hero Member
  • *****
  • Posts: 948
  • Financial markets pro over 20 years
    • View Profile
  • BitShares: starspirit
As I understand it, proposals are added to a list of all the other proposals. Every day the reserve-pool pays out to #1 on the list until #1 proposal has been funded. Then #2, #3...
If every proposal has a very small budget perhaps 100 proposals will be funded that day, but if #1 is a mega-project then any other proposals may lack funding.
Is there a name for this proposal list?
Quote
- Budgets - Is there proposed to be a budget limit per project, or a limit on the rate at which any project can draw funds? For example, are draw rates >1 current delegate envisaged?
Could you clarify what you mean by the bold?
I think projects are paid out in list-order, as above. Proposals set their own funding needs and only recieve them if they are ranked high enough on the list and there are still funds left to be paid from the reserve pool that block/day/week?
To clarify my meaning: Suppose a project needs 3 developers working full time for a month. It would be best to release 3-delegates worth of funding continuously over the month, rather than release the full budget up-front, or spread 1-delegates worth over 3 months. Can it be finessed like this? Even better for large projects I think, although more complex, would be payment on agreed milestones - perhaps a trusted member or group acting as "project supervisor" could authorise this release.

Offline Permie

  • Hero Member
  • *****
  • Posts: 606
  • BitShares is the mycelium of the financial-earth
    • View Profile
  • BitShares: krimduss
As I understand it, proposals are added to a list of all the other proposals. Every day the reserve-pool pays out to #1 on the list until #1 proposal has been funded. Then #2, #3...
If every proposal has a very small budget perhaps 100 proposals will be funded that day, but if #1 is a mega-project then any other proposals may lack funding.
Is there a name for this proposal list?

Quote
- Proposers: Who will be able to make proposals? Will they require at least the support of a designated developer or CNX?
I would hope that anyone would be able to make a proposal, assuming there is a fee to commit it to the blockchain. If a proposal gets zero votes it doesn't really matter, does it? More proposals = more fees. I can see that there may be so many proposals that it might be harder to choose but perhaps a 'best of' list only includes proposals that meet a threshold % chance of success. By list I mean an off-chain(?) place to view and read proposals, not 'the list' of ranked proposals that the reserve-pool pays out to.

Quote
- Quality: Do minimum information standards need enforcement in the proposal, or let the community be free to decide the quality of each proposal?
I would be wary of any censorship. If the community abhors poor grammar then the market will push proposers to spell-check etc.
Unless these minimum standards can be implemented with a bot to check that important information like timelines and funding schedules are included. If proposals exist as a hash of content on the blockchain then I can't see how this would be possible.

Quote
- Budgets - Is there proposed to be a budget limit per project, or a limit on the rate at which any project can draw funds? For example, are draw rates >1 current delegate envisaged?
Could you clarify what you mean by the bold?
I think projects are paid out in list-order, as above. Proposals set their own funding needs and only recieve them if they are ranked high enough on the list and there are still funds left to be paid from the reserve pool that block/day/week?

Quote
- Killing a project - Is the idea that incomplete projects can only be removed by a veto system, rather than simply falling off a list due to voter apathy?
I think the idea is that an unwanted proposals are simply voted down the list. This allows proposal-funding to be 100% determined by shareholder vote.
I've thought about my previous suggestion of an early-termination clause and I don't think it can work. A bad actor who doesn't want to see super-mega-feature implemented in bts could then pay a fee to stop the work - not desirable for bts.

Quote
- Accountability - Can payments be contingent upon meeting prescribed delivery milestones in the project terms?
A committee of delegates or human oracles would be needed for this. Is this the intended function of delegates now? I'm not really sure what they (don't) get paid for.

Quote
- Voter Apathy - How do we deal with lack of voting interest in projects? Can we delegate to voting blocs, or elect a default voter? Can we use dynamic account permissions to do this?
I'd like to know how votes are calculated.
Say only 1% of the network actually votes. Would the consensus reached by these 1% be applied to the whole network, or would the blockchain wait indefinitely until more votes are cast? Is there a threshold % of voters required?

I would assume that if delegates can publish slates to vote for other delegates then they would also be able to publish dynamic slates of worker proposals too.
If delegates do end up performing these oracle duties how can we ensure there are minimal conflicts of interest? Will delegates be allowed to publish a worker proposal?
JonnyBitcoin votes for liquidity and simplicity. Make him your proxy?
BTSDEX.COM

Offline starspirit

  • Hero Member
  • *****
  • Posts: 948
  • Financial markets pro over 20 years
    • View Profile
  • BitShares: starspirit
This discussion is very useful. I think that on-chain tools should be as simple and minimalist as possible to achieve the goal, especially in the beginning as we learn from the process. Here are some of my initial questions:

- Proposers: Who will be able to make proposals? Will they require at least the support of a designated developer or CNX?
- Quality: Do minimum information standards need enforcement in the proposal, or let the community be free to decide the quality of each proposal?
- Budgets - Is there proposed to be a budget limit per project, or a limit on the rate at which any project can draw funds? For example, are draw rates >1 current delegate envisaged?
- Killing a project - Is the idea that incomplete projects can only be removed by a veto system, rather than simply falling off a list due to voter apathy?
- Accountability - Can payments be contingent upon meeting prescribed delivery milestones in the project terms?
- Voter Apathy - How do we deal with lack of voting interest in projects? Can we delegate to voting blocs, or elect a default voter? Can we use dynamic account permissions to do this?



Offline hadrian

  • Sr. Member
  • ****
  • Posts: 467
    • View Profile
  • BitShares: hadrian
I think most of the tools should exist outside of the blockchain.

That said I see two major features that the blockchain can provide to help with this: simple approval/disapproval voting on items and voting on intervals for a parameter.

The first would just be using stake to vote on an item, such as a non-binding proposal (which can be as simple as a hash of some content) submitted to the blockchain, and having the blockchain tally the results for total approval and total disapproval.

But this feature could also be used by stakeholders not just to vote whether to support a proposal or not (or a particular option of a poll), but also to delegate their votes (again in a non-binding way) to other accounts for a specific issue. For example, imagine we want to choose N people to represent us in a debate regarding some change to the blockchain protocol. Candidates give their views on the issue on some platform (maybe the forum or maybe something more organized), register their representative for that issue on the blockchain, and stakeholders vote for the candidate they think best represents them on this issue. We can then agree that by a certain time we take a snapshot of the rankings and choose the top N representatives by total approval (ignoring disapproval). Each of them receive a weight equal to their approval divided by the total approval of all N representatives (so the weights of all N representatives sum to 1). Then these N representatives can debate it out on the forum, or better off-chain tools built for the purpose, and even have their own voting done on certain issues (in the case of voting, their votes are weighted by the weight value they were assigned from the rankings).

Then, they come up with a few different proposal models to implement (although certain parameters, which are not intended to be dynamically adjustable, in the model might still be left undefined). Those proposal models are registered as voting items on the blockchain and the stakeholders once again vote on the model they prefer best. Perhaps this time we rank by net vote and may also have a rule that the top ranked model needs to have a net vote above some threshold or else we need to go back to the drawing board.

Now with the model selected, there might need to be certain parameter values that still need to be determined. These are integer values representing fixed point numbers with some level of precision. One common parameter used in these type of proposals might be the cost that the stakeholders are willing to pay to the dev group described in the proposal model to implement the blockchain functionality described in the proposal model. So, this is where that second type of voting comes in. The blockchain would have this other type of voting in which stakeholders can supply two integers (a lower bound and an upper bound) along with the ID of the topic they are voting on. The nodes indexing the blockchain can then compute a distribution where the horizontal axis is the integer value and the vertical axis is the total approval votes supporting that integer value. This functionality can allow everyone to see what value for the parameter in question is most desirable to the stakeholders or, in other cases, the minimum (or maximum) value that a large enough fraction of the stakeholders support.

Finally, with the parameter values for the proposal model decided, the proposal model can be transformed into a fully fleshed out official proposal which is written up and submitted to the blockchain as a voting item to see if it will get the necessary approval to carry through with the changes (for example developing the necessary code to implement the changes described in the proposal). In the case where blockchain pay is necessary to carry out the proposal, the voting item might be a worker proposal which in some sense is binding (although only in the sense that the worker gets paid for the work but not binding in that the implementation may not necessarily actually get adopted through a hard fork). Of course, when it comes to actually hard forking (more binding changes), the protocol requirements for stakeholder approval of the hard forking change still need to be satisfied before the hard fork can actually happen.

Elected representatives are involved in the best off-blockchain solution I've thought of so far, also. I think it's the most elegant way to have an effective 'discussion' once an initiative gets to a certain point. I imagine first there would be a broad discussion between the community at large. This would be somewhat messy, but would allow good ideas to surface and would give some useful indications of possible directions in which to head. Then individuals (or even organised bodies) who want to be representatives could put forward a manifesto, and we could vote for them. Then following the methods you outlined above it would enable a less messy debate between representatives, before bringing proposals back for more voting, etc...

Maybe, if the voting mechanisms are sophisticated enough on the blockchain, there could be some very useful functionality to further tighten up consensus on the proposals (as described by permie, for example).
https://metaexchange.info | Bitcoin<->Altcoin exchange | Instant | Safe | Low spreads

Offline Thom

Hadrian, I applaud your forward thinking. I haven't seen nearly enough of that around here lately. Aside from NameNarWhal's registration initiative that is  ;)

The dev staff is probably too busy to think about this now. What we need is to come up with a list of such issues in a single thread, and elsewhere, in a different thread we can discuss them. A locked sticky that only the mods can add / edit, with content culled from anywhere else an issue is raised, like your OP here. I would title that item as Proposal Procedures.

Vikram mentioned elsewhere he would update the migration page of the website if additions & clarifications are needed. I don't think this falls into that category, I think it's a bit different animal, tho it clearly is related to migration to 2.0. I see it as a gap that needs some serious thought and consideration.

IMO you're spot on in thinking it's not such a simple thing to implement a workable system, especially as you point out if we have far more users with potentially divergent ideas of governance. It strikes to the core of how DPoS 2.0 will function. There are some fundamental decisions that must be made first, like how many Delegates are required and what the actual fee schedule for their registration will be and what qualifications they must have. Who knows who is even interested in becoming an unpaid Delegate under DPoS 2.0?

BM said in a mumble that the devs would be the initial set of Delegates until others are voted into place, and that they (CNX) does not want to be in those positions after some (as yet undefined) conditions are met. In my view there are still many things like this that we haven't begun to talk about, and we could really use a systematic approach to doing so.

Leadership to organize all of these things and focus our attention so they can be identified, discussed and resolved would sure be welcome. Perhaps it's too early for that, but I don't think so. It just seems to be an area of little concern at the moment though, at least I don't see much concern expressed like this.

Just who would be the ideal party to do this? Who have you seen in the community that has demonstrated leadership traits and organization skills that could guide such an effort? Chime in with your favorite candidate and tell us why you think he would be a good choice for this role.

« Last Edit: June 18, 2015, 12:54:42 am by Thom »
Injustice anywhere is a threat to justice everywhere - MLK |  Verbaltech2 Witness Reports: https://bitsharestalk.org/index.php/topic,23902.0.html

Offline hadrian

  • Sr. Member
  • ****
  • Posts: 467
    • View Profile
  • BitShares: hadrian
Proposals, or proposal proposals could all be as modular as possible.
Time to complete:
Cost(/day/person/task):
Conditions (in the event of death/failed concept/arrest):
X:
Y:
Z:

Perhaps with an early-termination clause so that bts members can pay a fee to sever the contract for any reason.

I'm not sure how complex the voting system can go, but what about each major section of the proposal can be individually voted on (optionally)? A straight forward 'yes' vote should simply vote 'yes' to every sub-section of the proposal.
That way a proposal that ultimately receives a 'no' can inspect each sub-section of their proposal and find the main condition that is meeting resistance, change it and then resubmit.

Yep, sounds good. I wonder how in depth we can go.

I think logic gates may well be necessary for certain kinds of voting.

I want to be able to vote 'conditionally', such that I vote 'yes' to sub-section X, but ONLY IF section Z is implemented, et cetera.

There must be some solid ideas or plans in place behind the scenes with the devs at this stage of the game. I'd love to know what's 'on the cards'...

Have I missed this subject somewhere on the forum, or has it not been discussed?
https://metaexchange.info | Bitcoin<->Altcoin exchange | Instant | Safe | Low spreads

Offline arhag

  • Hero Member
  • *****
  • Posts: 1214
    • View Profile
    • My posts on Steem
  • BitShares: arhag
  • GitHub: arhag
I think most of the tools should exist outside of the blockchain.

That said I see two major features that the blockchain can provide to help with this: simple approval/disapproval voting on items and voting on intervals for a parameter.

The first would just be using stake to vote on an item, such as a non-binding proposal (which can be as simple as a hash of some content) submitted to the blockchain, and having the blockchain tally the results for total approval and total disapproval.

But this feature could also be used by stakeholders not just to vote whether to support a proposal or not (or a particular option of a poll), but also to delegate their votes (again in a non-binding way) to other accounts for a specific issue. For example, imagine we want to choose N people to represent us in a debate regarding some change to the blockchain protocol. Candidates give their views on the issue on some platform (maybe the forum or maybe something more organized), register their representative for that issue on the blockchain, and stakeholders vote for the candidate they think best represents them on this issue. We can then agree that by a certain time we take a snapshot of the rankings and choose the top N representatives by total approval (ignoring disapproval). Each of them receive a weight equal to their approval divided by the total approval of all N representatives (so the weights of all N representatives sum to 1). Then these N representatives can debate it out on the forum, or better off-chain tools built for the purpose, and even have their own voting done on certain issues (in the case of voting, their votes are weighted by the weight value they were assigned from the rankings).

Then, they come up with a few different proposal models to implement (although certain parameters, which are not intended to be dynamically adjustable, in the model might still be left undefined). Those proposal models are registered as voting items on the blockchain and the stakeholders once again vote on the model they prefer best. Perhaps this time we rank by net vote and may also have a rule that the top ranked model needs to have a net vote above some threshold or else we need to go back to the drawing board.

Now with the model selected, there might need to be certain parameter values that still need to be determined. These are integer values representing fixed point numbers with some level of precision. One common parameter used in these type of proposals might be the cost that the stakeholders are willing to pay to the dev group described in the proposal model to implement the blockchain functionality described in the proposal model. So, this is where that second type of voting comes in. The blockchain would have this other type of voting in which stakeholders can supply two integers (a lower bound and an upper bound) along with the ID of the topic they are voting on. The nodes indexing the blockchain can then compute a distribution where the horizontal axis is the integer value and the vertical axis is the total approval votes supporting that integer value. This functionality can allow everyone to see what value for the parameter in question is most desirable to the stakeholders or, in other cases, the minimum (or maximum) value that a large enough fraction of the stakeholders support.

Finally, with the parameter values for the proposal model decided, the proposal model can be transformed into a fully fleshed out official proposal which is written up and submitted to the blockchain as a voting item to see if it will get the necessary approval to carry through with the changes (for example developing the necessary code to implement the changes described in the proposal). In the case where blockchain pay is necessary to carry out the proposal, the voting item might be a worker proposal which in some sense is binding (although only in the sense that the worker gets paid for the work but not binding in that the implementation may not necessarily actually get adopted through a hard fork). Of course, when it comes to actually hard forking (more binding changes), the protocol requirements for stakeholder approval of the hard forking change still need to be satisfied before the hard fork can actually happen.

Offline Permie

  • Hero Member
  • *****
  • Posts: 606
  • BitShares is the mycelium of the financial-earth
    • View Profile
  • BitShares: krimduss
Proposals, or proposal proposals could all be as modular as possible.
Time to complete:
Cost(/day/person/task):
Conditions (in the event of death/failed concept/arrest):
X:
Y:
Z:

Perhaps with an early-termination clause so that bts members can pay a fee to sever the contract for any reason.

I'm not sure how complex the voting system can go, but what about each major section of the proposal can be individually voted on (optionally)? A straight forward 'yes' vote should simply vote 'yes' to every sub-section of the proposal.
That way a proposal that ultimately receives a 'no' can inspect each sub-section of their proposal and find the main condition that is meeting resistance, change it and then resubmit.
JonnyBitcoin votes for liquidity and simplicity. Make him your proxy?
BTSDEX.COM

Offline hadrian

  • Sr. Member
  • ****
  • Posts: 467
    • View Profile
  • BitShares: hadrian

My love,
can you dumb it down to 1-2 sentences that even I can comprehend?
Thanks. kisses, hugs stc.

I don't think I can my dear, my brain is kersozzled with sleep deprivation. I can't think straight thanks to demands of a new person. I don't mean a new lover, I mean a new infant.

You see image under my name? I actually look like that now after these last three weeks of weathering! :o

Are you telling me that I've unknowingly posted a load of drivel?

Anyway, I'm just of to duckduckgo "stc." which I saw in your reply.
https://metaexchange.info | Bitcoin<->Altcoin exchange | Instant | Safe | Low spreads

Offline tonyk

  • Hero Member
  • *****
  • Posts: 3308
    • View Profile
Just as an example, if BitShares were to consider paying an entity to do some work for it, how should this work? It's not ideal to be offered just one proposal by the entity and to have the community simply vote 'yes' or 'no'. Wouldn't BitShares benefit from being able to negotiate and suggest alterations to the terms before submitting a proposal (or sets of options) for voting? I'm trying to imagine various ways in which BitShares may be able to negotiate and assemble proposals prior to the community voting on them. I see that this may become very difficult in the future as BitShares grows, unless we have a solid mechanism for implementing the process.

At the moment the community is very small and this forum, along with the hangouts, are obvious arenas for discussion. This makes it relatively easy to discuss various aspects and come up with solid proposals, around which we can reach agreement. In the future if BitShares really expands, the landscape could be much more diverse, with no real consensus on where we should come in order to properly discuss issues.

Obviously the blockchain will be capable of offering voting functionalities, so we can easily vote on proposals. My issue is though, how will the proposals be assembled? In real world business there can be much back and forth, tweaking, haggling, swapping in and out of various conditions etc. This is otherwise known as negotiation. This can be a complicated procedure which can end up with a handful of possible proposals which can then be voted on. Do we need the ability to negotiate so that we can come up with a select few viable options prior to voting?

Is there a nice, clean, efficient way to address this issue entirely on the blockchain? Or will we need to maintain some kind of commonly agreed communication method outside of the blockchain, so that we can effectively engage with one-another prior to putting up proposals for voting?

To put it another way, it's a bit like voting on the polls on this bitsharestalk forum. How many times have you thought, "I want to vote, but none of the options is quite right. I need to propose a tweak to the options before I can vote in good conscience". Surely we need to avoid this problem when it comes to voting on fundamental issues once BitShares 2.0 is up and running.

How is this going to work, especially when it comes to voting on things with many factors or variables?

Is what I'm describing a real issue, am I understanding it correctly, and have there been solutions already suggested?

My love,
can you dumb it down to 1-2 sentences that even I can comprehend?
Thanks. kisses, hugs stc.
Lack of arbitrage is the problem, isn't it. And this 'should' solves it.

Offline hadrian

  • Sr. Member
  • ****
  • Posts: 467
    • View Profile
  • BitShares: hadrian
Just as an example, if BitShares were to consider paying an entity to do some work for it, how should this work? It's not ideal to be offered just one proposal by the entity and to have the community simply vote 'yes' or 'no'. Wouldn't BitShares benefit from being able to negotiate and suggest alterations to the terms before submitting a proposal (or sets of options) for voting? I'm trying to imagine various ways in which BitShares may be able to negotiate and assemble proposals prior to the community voting on them. I see that this may become very difficult in the future as BitShares grows, unless we have a solid mechanism for implementing the process.

At the moment the community is very small and this forum, along with the hangouts, are obvious arenas for discussion. This makes it relatively easy to discuss various aspects and come up with solid proposals, around which we can reach agreement. In the future if BitShares really expands, the landscape could be much more diverse, with no real consensus on where we should come in order to properly discuss issues.

Obviously the blockchain will be capable of offering voting functionalities, so we can easily vote on proposals. My issue is though, how will the proposals be assembled? In real world business there can be much back and forth, tweaking, haggling, swapping in and out of various conditions etc. This is otherwise known as negotiation. This can be a complicated procedure which can end up with a handful of possible proposals which can then be voted on. Do we need the ability to negotiate so that we can come up with a select few viable options prior to voting?

Is there a nice, clean, efficient way to address this issue entirely on the blockchain? Or will we need to maintain some kind of commonly agreed communication method outside of the blockchain, so that we can effectively engage with one-another prior to putting up proposals for voting?

To put it another way, it's a bit like voting on the polls on this bitsharestalk forum. How many times have you thought, "I want to vote, but none of the options is quite right. I need to propose a tweak to the options before I can vote in good conscience". Surely we need to avoid this problem when it comes to voting on fundamental issues once BitShares 2.0 is up and running.

How is this going to work, especially when it comes to voting on things with many factors or variables?

Is what I'm describing a real issue, am I understanding it correctly, and have there been solutions already suggested?
https://metaexchange.info | Bitcoin<->Altcoin exchange | Instant | Safe | Low spreads