Author Topic: BTS Governance step 1: Basic stake polling  (Read 10091 times)

0 Members and 1 Guest are viewing this topic.

Offline arhag

  • Hero Member
  • *****
  • Posts: 1214
    • View Profile
    • My posts on Steem
  • BitShares: arhag
  • GitHub: arhag
Oh, that delay stuff is all for anonymity purposes, now I'm catching up with you.

Actually the delay / snapshot stuff is not about anonymity. It is because I suspect properly calculating the voting power in control of the different users will take some time to do. Given a snapshot of the BTS stake devoted to a user and the delegation graph between users, it will take some time to compute how much voting power each user should have. In particular it is the delegation aspect that adds computational complexity (solving a linear system). See this blog post for some details.

The rows of that adjacency matrix correspond to how a particular user delegates their voting power to other users. The sum of the values in any given row in the matrix should be less than or equal to one. If it is less than one, then the difference is meant to be sent back to the user that the row corresponds to (remember there can be no cycles in the graph). Refering to the blog, the 1s as the last terms of the left hand side of the linear system represent the initial voting weight given to each user before delegation. In this case they each have the same weight, but in our case the weight would be determined by the BTS stake devoted to each user. Anyway solving for the voting power of each user requires solving a linear system where the number of rows is the number of users (also, I don't get why that blog calls it an eigenproblem when it is actually not because of the column of 1s).

So using the first example problem in that blog, the first step of the solution is to solve the linear system which gives A = 1, B = 2, C = 3 since A delegated its entire vote to B who delegated its entire vote to C who didn't delegate the vote to anyone else. But to conserve the total voting power, we then need to calculate the voting power controlled by each user after this delegation process. This means the difference between 1 and the sum of the values in each row of the adjacency matrix needs to be used to determine how much of the linear system solutions is actually in control of each user. So the final answer to how much voting power each user should have is given here.

Let's take a more complicated example. Say Alice, Bob, Charlie, and Dan are users in the system. Alice and Bob both have 1000 BTS devoted to their account. Charlie has 0 BTS devoted to his account. And Dan has 10,000 BTS devoted to his account. Alice decides to give 50% of her voting power to Bob because she trusts him but also wants to maintain the other half of her voting power for herself. Bob decides to give up all of his voting power split equally between Charlie and Dan because he thinks they are best suited to make decisions on his behalf and he doesn't want to spend time thinking through various proposals or camps. Charlie chooses to keep all of his voting power to himself. Dan chooses to give Charlie 10% of his voting power but keeps the other 90% to himself. Assuming we order things in alphabetical order, the adjacency matrix now looks like this, the solution to the linear system is this, and the voting power in control of each person at the end of this delegation process is this.

Notice that calculating the voting power in control of each user requires solving a linear system where the number of rows is equal to the number of users (or more accurately the number of vertices in the delegation graph). This cannot be solved during a HTTP GET request. In fact, it could take considerable time to solve as the number of users gets big. For this reason, I think this should be done in the background asynchronously with the most recent snapshot (snapshot of the latest devoted BTS stake and delegation graph). Once it is done, it should run again immediately afterwards using the most recent snapshot. This way there are computers in the background constantly solving linear systems (as long as there have been changes to the devotion or delegation graph of course) computing the most recent state of voting power for each user. In the mean time, another set of computers can use the most recently computed voting power in control of users and the way they have voted on issues (or the camps they have joined) to calculate the aggregate voting power in support of a certain issue or camp. These cached results are what the website will refer to when providing the website browsers the numerical voting results on issues/camps in response to HTTP GET requests.


I will try to find the time to write about the details of my voting system proposals more formally in a separate document. Then people can look through it, ask for clarification, correct things, make suggestions, and then eventually you can merge those as desired into your own documents.

« Last Edit: November 04, 2014, 04:00:18 am by arhag »

Offline Brent.Allsop

  • Sr. Member
  • ****
  • Posts: 242
    • View Profile
    • Canonizer.com

Hi arhag

Oh, that delay stuff is all for anonymity purposes, now I'm catching up with you.

I am going to continue to work on better understanding exactly what you are talking about, with the goal of adding some  psuedo code to the wiki Google design document mentioned:

https://docs.google.com/document/d/1uWpw93xlJk3qwqNAaiwvMeQmXkjUt7e8rco17DOP8UA/edit

You could probably add specific pseudo code better and faster than I, so please you, or anyone, feel free to help me specify exactly what we need to do for this.



Offline Brent.Allsop

  • Sr. Member
  • ****
  • Posts: 242
    • View Profile
    • Canonizer.com

Hi arhag

It looks like great minds think alike.  Most of this, especially the infinite delegation stuff, is identical to what canonizer.com already does, or is planned, except for a few minor details.  And there are some things you are talking about that I don’t understand yet.

I am not quite sure why you would want to slow things down, and do not know what the eigenvalue problem is, nore why you would need multiple snapshots of the data.

Perhaps you could be a bit more specific about design details, and include them in the collaborative design document we are working on.  In other words, maybe more like pseudo code level specifications.

https://docs.google.com/document/d/1uWpw93xlJk3qwqNAaiwvMeQmXkjUt7e8rco17DOP8UA/edit

Offline fluxer555

  • Hero Member
  • *****
  • Posts: 749
    • View Profile
arhag, what would it take to get you to work full time for BitShares?

Offline arhag

  • Hero Member
  • *****
  • Posts: 1214
    • View Profile
    • My posts on Steem
  • BitShares: arhag
  • GitHub: arhag
Great, so are you going to take the initiative and add a "One BTS One Vote" algorithm into the list of Canonizer algorithms as well as the tools necessary to verify the signatures to allow users to prove stake ownership?

Absolutely.  It would definitely be possible to get this to do everything being proposed, and I will do everything in my power to code this and make it happen.


I must warn everyone that I have a full time job, and have other commitments, so the amount of time I can commit to this is limited.  If others could step up and help with this, we could get it up and running much faster.  There is quite a large list of things that need to be done to get this functional.

I have other commitments as well but I am happy to freely discuss and iterate on the foundation and architectural design of the system I would like to see created. I discuss some of this architecture in this post. The end product of all of this beyond the website itself would be to develop the minimum open source software needed that can communicate with a trusted client using the RPC interface, as well as changes to the client itself, to facilitate any website to create a voting/governance system based on one bts = one vote. The architecture and specifications would also be designed so that the website could optionally provide all the necessary cryptographically-signed proof that it logs to the public so that they can use their client and these open source tools to verify the accumulated votes for any specific issue/topic/camp. I would also support a few delegates to fund the development of these open source tools and the necessary changes to the client (no hard fork changes needed).


Currently, we do the canonization process in real time, every time someone loads the page.  I'd think we should be able to have a cashed snapshot of the block chain share ownership being constantly updated, and continue doing this in real time.

Yes, I don't think it should (can?) be done in real time. Here is how I view things happening on the servers of a site like Canonizer that is modified to support this type of BTS voting. The databases on the servers would regularly take certain snapshots of data as it is either updated in real time or computed from a prior snapshot. There would be five classes of snapshots:
  • BTS stake devoted to each user on the website.
  • Delegation of voting power of users on the website to each other.
  • Voting decision by each user on the website for each issue (or camp) on the website.
  • BTS voting power controlled by each user on the website.
  • The accumulated BTS votes for each issue (or camp) on the website.

The website would have a client running on the servers to gain read-only access to the BTS blockchain/database. People can register users on the website and associate a public key to that user (they locally generate and safely store the private key). Users can optionally associate themselves to a BTS TITAN name if they wish. To do so they need to mutually link the accounts by signing a statement of the link by both the Account key on the blockchain (requires BTS client support) and the private key meant for the user on the website.

Users can at any time update the devotion to their user. Doing so requires signatures from keys that are allowed to vote for (currently that also includes the ability to spend) the unspent BTS balances sitting on the blockchain. This also requires BTS client support. I imagine a simplified process where a link (bts URI scheme) on the website launches the client with a request to update devotion to a user. The client then prompts the user to select all TITAN accounts whose current BTS balances they want to devote to the website user. The user makes the selection and presses the OK button which causes the client to make all the necessary signatures and then feed this data to the website using a HTTPS GET request. The website then gets this data, verifies the signatures are good using its RPC access to the blockchain/database (the data should follow some standard specification and the actual verification should be done by the common open source tools), and updates the BTS balances devoted to the particular website user. The website also needs to use its access to the client to get notified whenever an unspent BTS balance that was used to devote to a user is spent on the blockchain (this requires changes to the client and new RPC APIs). The website can then update the BTS balances devoted to a particular website user if some previously devoted stake now becomes invalid since it was spent to another address. All of these updates to the current devoted stake for each website user is happening in real time.

What is also happening in real time are the changes by the website users in how they delegate their voting power and how they vote on the various issues or which camps they support. Users can split their voting power as they wish to any number of other users on the website. This forms a graph where the vertices are the users and the directed edges are the delegation of voting power. It is important to avoid cycles in this graph (so it should be DAG, directed acyclic graph). Thus the request to change a user's delegation of voting power is submitted to the server, but the change doesn't actually occur in the database until the website confirms it is valid (it does not create cycles). The servers check for cycles and if they exist the update is cancelled and the user is provided with an appropriate error message explaining the issue. The user's request to change the issues they vote for or camps they support should quickly succeed without failure on the other hand. In both cases, the requests need to be timestamped and signed using the user's website private key (this is important to allow later validation by anyone).

Every once in a while the server will take a snapshot of the existing databases storing the information about the current BTS balances devoted to each user and the current delegation structure between users. This would be a class 1 and 2 snapshot. At the same time, the server would also take a snapshot of the database storing the voting decisions of each user, which would be a class 3 snapshot. The server can then proceed to calculate the BTS voting power controlled by each user and then the accumulate BTS votes for each issue.

After the class 1 and 2 snapshot, the server can use this information from the snapshot to construct the adjacency matrix for the eigenvalue problem that solves for the BTS voting power controlled by each user. The server can then proceed to solve that eigenvalue problem. All of this is happening in parallel to the normal operation of the server including the updates being made to the BTS stake devoted to each user and the delegation of voting power between users (hence the need for the class 1 and 2 snapshots). Once the eigenvalue problem has been solved, the server then caches those results (class 4 snapshot), and uses them along with the class 3 snapshot to calculate the accumulated BTS votes on each issue (which it also then caches with the class 5 snapshot). The server can then repeat this process again with a new class 1 and 2 snapshot of the current state.

While the previous process is occurring, the server can also provide a less accurate but more recent update to the accumulated BTS votes on each issue. Say the class 1 and 2 snapshots occurred at time t1. A class 3 snapshot also occurred at time t1. These snapshots eventually lead to the class 4 snapshot for the data taken at time t1 and then quickly thereafter a class 5 snapshot for the data taken at time t1. Once that is done, the server can then take a new class 1, 2, and 3 snapshot at time t2 and repeat the process. However, while the server is computing this information (the eigenvalue problem can take some time) it can make use of the class 4 snapshot for the data taken at time t1 along with a more recent class 3 snapshot to get an estimate of what the class 5 snapshot will be. The server can first use the class 3 snapshot at time t2 and the class 4 snapshot for the data taken at time t1 to calculate an estimated class 5 snapshot for the data taken partly at time t1 and partly at time t2. Once that is done, the server can then repeat this process using a new class 3 snapshot taken at time t3. This will generate an estimated class 5 snapshot for the data taken partly at time t1 and partly at time t3. You can imagine this can repeat for a while (say until time t5) before the eigenvalue problem has been solved and a new class 4 snapshot for data taken at time t2 is available. The server would then calculate a class 5 snapshot for data taken at time t2, but then it would also calculate an estimated class 5 snapshot for data partly taken at time t2 and partly taken at time t6. The server would then also take a new class 1 and 2 snapshot at time t6 to repeat the eigenvalue problem.

I imagine the previous paragraph was pretty confusing and I should try to better clarify it later. But the point is that the server can do many things in parallel, and at any given time it has two types of the most recent voting results for each issue. One type is the very accurate but older one which are the accurate results as determined if someone were to take a snapshot of the blockchain at a certain time as well as a snapshot of the delegation and voting decisions of the website users at the same time, and then determine the consensus from that data. All the information for calculating this should be stored by the server so that it can be provided to users who can then use it to prove the validity of the consensus reached. The other type is an estimate of the consensus that will eventually be properly calculated in the next complete snapshot. While less accurate (since the voting power in control of each user may have changed but not yet reflected in their voting consensus) it is also more recent. I think the website should show the recent results of both types next to the issues/camps they refer to, along with the snapshot dates that the calculations were using.


True, the text and structures of the camps, and such, would be centrally controlled and run on a server, but anyone would be able to validate any of the votes for these camps with appropriate tools, any time.  And that is the only thing that really needs to be on the block chain, at least to get started.  And my understanding is that the "vote" stuff being developed already does what we need.

So with the system I described as long as the website stored and makes available on request the signed BTS balances devoting to particular users for all valid unspent BTS balances at the time of the snapshot, and the users' most recent (up to the limit of the snapshot date) signed requests for updates to their delegation and voting decisions, then all of that information along with the information accessible from the blockchain would be enough for users to independently verify the voting results on any issue (or the amount of support behind any camp). Obviously there would need to be some standard specification for all of this and an open source client that users can run to do all the necessary calculations using the provided data to derive the consensus results.

Also in my view the voting decisions by the users would follow the standard specification of voting with approval on a particular unique issue represented by a hash. Different websites could use this fundamental construct to represent different things. For example the hash respresenting the issue can be split into three hashes: a hash of the concatenation of the hash representing the issue and the string "upvote"; a hash of the concatenation of the hash representing the issue and the string "downvote"; and, a hash of the concatenation of the hash representing the issue and the string "neutral". That allows this fundamental construct of approving an issue to be extended to an upvote/downvote of an issue (the most recent approval is the one that counts so that it wouldn't be possible to have both an upvote and a downvote). An upvote/downvote on a hash that represents a proposal could be interpreted as yea/nay on the proposal to determine whether the proposal should be accepted by the community. An upvote/downvote on a hash of a post could be used to determine its score in a style similar to Reddit. An upvote of a hash of a camp (with all relevant text included as part of the hash to prevent people from changing the meaning of the camp by editing the text after people vote) could be interpreted as the user supporting (or joining) that camp, while a more recent neutral vote could represent removing support of a camp they previously supported (leaving a camp). The hash extension concept can be expanded to have hashes representing any of the options of a poll (including the option of not voting for anything) where these hashes all ultimately depend on the hash of the data representing the poll. All kinds of possibilities exist. At the most general level the hash could simply be a hash of a ballot which itself includes the hash of an election. These ballots can then contain whatever information necessary to come to a consensus on the results of the election. And this method allows anyone who has the desire (assuming they can get access to all of the most recent, up to the limit of some snapshot deadline of course, raw signed data necessary from the websites or peers) to verify the results of all of these consensus systems independently using open source running on their computers. With enough skeptical people taking the time to do this and sounding the alarms if something is clearly wrong, most users can instead just trust the convenient results the website provides for most things and only bother to verify it themselves if it is a particularly important or controversial consensus result.


A "One share, one vote" canonization algorithm would definitely be the priority, but it would be great to enhance that so we could do things like bias the vote so people with fewer shares could have more of a vote, bias vote towards expertise/reputation, and anything else anyone would propose and we could build a near unanimous consensus around.

That is the beauty of the vote delegation system and liquid democracy. Someone with zero BTS could still get considerable voting power if they can convince the BTS stakeholders to delegate their voting power to him because they trust him to make smart decisions on their behalf that will grow the value of their stake. This person could even be paid by tips by these people to further incentivize him to do a good job and even use that income to grow his stake in BTS which even better aligns his incentives (and this system would allow users to optionally prove the amount of stake they have in their control by the way). And of course the stakeholders could always change the delegation of their stake at any time so the trusted user would know that he would lose that voting power if he makes decisions that go against the interests of the people delegating their voting power to him.

But ultimately the voting power needs to be derived from some initial source. If we want the source to be objective rather than subjective (so that we can actually come to a consensus), it cannot be based on how much each user is trusted because that is entirely subjective. It has to either come from: 1 BTS = 1 vote; 1 person = 1 vote (with trusted third-parties verifying who a unique person is); or some authority declaring by fiat what the voting weight of each user is. The last option is problematic for many reasons but one fundamental issue with it is the issue of how we even determine that authority figure in the first place. The second option also requires some trust in verifying the uniqueness of a human being (although that can be worked around to some extent). The second option is good for democracy applications that the voting DAC can be used for, but it is a bad idea for deciding the direction of a DAC since the stake of the DAC, the value of which will be affected by these decisions, are not uniformly distributed to each human being. I would imagine the second strategy can play a very important role in government and democracy related functions as well as perhaps determining the cultural zeitgeist through ranking regular discussion using Reddit style upvotes/downvotes, but it shouldn't be used to determine the strategic business decisions of a DAC (such as determining dilution caps or which marketing effort to spend the diluted BTS on). For those types of DAC decisions, I would say the most fair and sensible thing to do is to use the 1 BTS = 1 vote model but also allow the delegation of voting power as I described in this post so that people who trust others to make better decisions on their behalf can do so.


Offline Brent.Allsop

  • Sr. Member
  • ****
  • Posts: 242
    • View Profile
    • Canonizer.com
I have created a wikiable google doc to facilitate the collaborative specification of exactly what should be done for this, and how to get it done, starting with the original specifications by toast.

https://docs.google.com/document/d/1uWpw93xlJk3qwqNAaiwvMeQmXkjUt7e8rco17DOP8UA/edit

I have some capital I am willing to commit to this project to pay or reward people for contributions.  I can pay in either BitUSD, BTS, Bitcoin, Canonizer.com shares, or whatever people would like.  So if anyone knows of anyone that might be able to help with this, please point them in our direction.

We specifically need help with the design and implementation of the Blockchain process that can collect the verified Bitshare ownership data, in a way that can be verified by anyone at any time.  If anyone is more familiar with this process and could help get me up to speed, please contact me.

And if people could periodically bump this thread, so more people will be aware of what we are doing, that would be a big help.




Offline Brent.Allsop

  • Sr. Member
  • ****
  • Posts: 242
    • View Profile
    • Canonizer.com
Great, so are you going to take the initiative and add a "One BTS One Vote" algorithm into the list of Canonizer algorithms as well as the tools necessary to verify the signatures to allow users to prove stake ownership?

Absolutely.  It would definitely be possible to get this to do everything being proposed, and I will do everything in my power to code this and make it happen.

I must warn everyone that I have a full time job, and have other commitments, so the amount of time I can commit to this is limited.  If others could step up and help with this, we could get it up and running much faster.  There is quite a large list of things that need to be done to get this functional.

Currently, we do the canonization process in real time, every time someone loads the page.  I'd think we should be able to have a cashed snapshot of the block chain share ownership being constantly updated, and continue doing this in real time.

True, the text and structures of the camps, and such, would be centrally controlled and run on a server, but anyone would be able to validate any of the votes for these camps with appropriate tools, any time.  And that is the only thing that really needs to be on the block chain, at least to get started.  And my understanding is that the "vote" stuff being developed already does what we need.

A "One share, one vote" canonization algorithm would definitely be the priority, but it would be great to enhance that so we could do things like bias the vote so people with fewer shares could have more of a vote, bias vote towards expertise/reputation, and anything else anyone would propose and we could build a near unanimous consensus around.

















« Last Edit: November 02, 2014, 01:25:48 pm by Brent.Allsop »

Offline toast

  • Hero Member
  • *****
  • Posts: 4001
    • View Profile
  • BitShares: nikolai
Canonizer would be fine if it did what I describe in the OP
Do not use this post as information for making any important decisions. The only agreements I ever make are informal and non-binding. Take the same precautions as when dealing with a compromised account, scammer, sockpuppet, etc.

Offline fluxer555

  • Hero Member
  • *****
  • Posts: 749
    • View Profile
I have to admit Brent, whenever I used to see you plug your Canonizer website I'd sigh thinking "there he goes again...". But this time it seems relevant. This could actually be useful in this context..

Offline arhag

  • Hero Member
  • *****
  • Posts: 1214
    • View Profile
    • My posts on Steem
  • BitShares: arhag
  • GitHub: arhag
In my opinion, we need more than a simple voting system, we need to be able to build consensus.

For example, let us say the entire community is in the camp that we should not dilute.  Let us say that some expert, like The bytemaster, or whoever, is the first person to realize we should dilute by X amount to accomplish Y.  Of course, if you do the vote at that moment, The bytemaster will be the only one that even knows about this new idea.

The issue then becomes, we need a tool we can all use, so that it is very easy and efficient for leaders like The bytemaster to get the entire heard educated and on board.  You need to measure how many people get on board, for what reasons, and how many people are not YET on board.  The system has to be able to know, concisely and quantitatively what is holding everyone else up.  The focus needs to be on negotiating things until you can make everyone happy.  And you can not hope to make everyone, or at least the most people possible, happy, if nobody knows, concisely and quantitatively, what that is.

The problem with traditional voting system or petitions to sign, is they can’t change to build consensus, so they tend to destroy consensus and polarize people.  Once the first person checks a box, or signs a petition, nothing can change – and THAT is the problem.  David Chalmers did a now infamous traditional survey of philosophers of mind.  He decided the possible choices everyone could check, and then asked everyone to take the survey.  People spent forever saying things like when person X voted for Y, they really meant Z, and stuff like that.  It just added to everyone’s miss perception that there was no consensus in this field.

Yet, when the consensus building system at Canonizer.com was employed, to date everyone has achieved a 75% popular consensus for the “Representational Qualia Camp” http://canonizer.com/topic.asp/88/6 and a near unanimous expert consensus for this camp.  The only disagreements are the much less important things represented concisely and quantitatively, in the sub camps.  And as I pointed out in the initial constitution thread, the philosophy of mind crowd is a far more diverse crowd than the Bitshares community.

Great, so are you going to take the initiative and add a "One BTS One Vote" algorithm into the list of Canonizer algorithms as well as the tools necessary to verify the signatures to allow users to prove stake ownership? You would also need to have the accumulated score for each camp dynamically adjust everyday even without any camp changing occurring since BTS stake ownership can change on the blockchain and thus each user's stake voting power can fluctuate minute to minute. Then maybe someone else can modify the BitShares client to provide a three-click system of providing these signatures: the first click on a website launches the client with a request to provide signatures of all current valid BTS balances which will get associated to a specific website user name; the second click is to select the BTS account for which to provide the balance signatures (multiple clicks to select multiple accounts are also acceptable); and the third click is to confirm and have the client open the web browser with a HTTPS GET request to the website providing all the information it needs to know to update the user's voting power.

Obviously this isn't a great system since it would require trusting a third-party website to not fake the votes. The long term solution is to build all of this into the Vote DAC. But that is a long ways off and we could benefit from having a crude solution as soon as possible. This would be to just poll the users in a more accurate way than this forum's polls. Implementing actual hard fork changes to the blockchain would still require the 75% consensus voting mechanism on the blockchain that bytemaster has planned.

BTW, to the devs, it would also be really great if we had multisig as described here so that the hot client could update the voting power (and also change their votes for delegates) without exposing the important private keys on an online computer which could allow hackers to steal all of their funds.
« Last Edit: November 01, 2014, 11:32:09 pm by arhag »

Offline Brent.Allsop

  • Sr. Member
  • ****
  • Posts: 242
    • View Profile
    • Canonizer.com
In my opinion, we need more than a simple voting system, we need to be able to build consensus.

For example, let us say the entire community is in the camp that we should not dilute.  Let us say that some expert, like The bytemaster, or whoever, is the first person to realize we should dilute by X amount to accomplish Y.  Of course, if you do the vote at that moment, The bytemaster will be the only one that even knows about this new idea.

The issue then becomes, we need a tool we can all use, so that it is very easy and efficient for leaders like The bytemaster to get the entire heard educated and on board.  You need to measure how many people get on board, for what reasons, and how many people are not YET on board.  The system has to be able to know, concisely and quantitatively what is holding everyone else up.  The focus needs to be on negotiating things until you can make everyone happy.  And you can not hope to make everyone, or at least the most people possible, happy, if nobody knows, concisely and quantitatively, what that is.

The problem with traditional voting system or petitions to sign, is they can’t change to build consensus, so they tend to destroy consensus and polarize people.  Once the first person checks a box, or signs a petition, nothing can change – and THAT is the problem.  David Chalmers did a now infamous traditional survey of philosophers of mind.  He decided the possible choices everyone could check, and then asked everyone to take the survey.  People spent forever saying things like when person X voted for Y, they really meant Z, and stuff like that.  It just added to everyone’s miss perception that there was no consensus in this field.

Yet, when the consensus building system at Canonizer.com was employed, to date everyone has achieved a 75% popular consensus for the “Representational Qualia Camp” http://canonizer.com/topic.asp/88/6 and a near unanimous expert consensus for this camp.  The only disagreements are the much less important things represented concisely and quantitatively, in the sub camps.  And as I pointed out in the initial constitution thread, the philosophy of mind crowd is a far more diverse crowd than the Bitshares community.
« Last Edit: November 01, 2014, 10:57:55 pm by Brent.Allsop »

Offline Pheonike

Let's call it the Community Consensus Mechanism v 0.1

Offline roadscape

2) Make a curated list of issues. Request a signature on (issue_id, decision) for each balance from users.
    A utility to create these signatures in bulk in a standard format is needed.

Don't we just need a wallet command for this? Or are you referring to making a 3rd party tool?
http://cryptofresh.com  |  witness: roadscape

zerosum

  • Guest
One thing I think it would be really great to have implemented ASAP would be a reddit style forum where people upvote and downvote with their stake (that they register by completing a cryptographic challenge at account creation or after). This would allow us to measure support for pretty much anything, even tiny issues, and it would make it easy for people to rapidly make many small variations of the same proposal/concept/idea and have stakeholders be able to conveniently rate all of them.

I think you should contact Agent86 directly with your proposal. He was very eager to implement something very similar on account level, a month or so ago.

As per my own take on the issues - we should drop all them stupid assets and stuff and concentrate on this only.


That does sound useful.
Exactly!, but Isn't this the point?

« Last Edit: November 01, 2014, 10:28:35 pm by tonyk2 »

Offline matt608

  • Hero Member
  • *****
  • Posts: 878
    • View Profile
One thing I think it would be really great to have implemented ASAP would be a reddit style forum where people upvote and downvote with their stake (that they register by completing a cryptographic challenge at account creation or after). This would allow us to measure support for pretty much anything, even tiny issues, and it would make it easy for people to rapidly make many small variations of the same proposal/concept/idea and have stakeholders be able to conveniently rate all of them.

Great idea. Very doable.

We wouldn't even need usernames.. votes and comments are just signed with a stake.


That does sound useful.

Having usernames makes it easier to judge comments and vote on them, I like to see who is making the comment so I can use my rough estimation of their intelligence + integrity (their general history) as a factor in judging what they are saying.

One problem might be if a large stakeholder downvotes a comment then it could get immediately buried (if it was done like reddit) without the chance to acruu upvotes.  Maybe there should be a brief time period (e.g. 1 hour, or 1 day?) after a comment before the votes take effect in terms of burying stuff no one likes and re-arranging popular stuff to the top.  Keep it in chronological order until that time period passes?  That's just for comments, for polls it could show up immediately.  Just a thought...
« Last Edit: November 01, 2014, 10:26:31 pm by matt608 »