hasq / dev

5 stars 2 forks source link

How does voting work? #1

Open dsernst opened 8 years ago

dsernst commented 8 years ago

In your leaflet, under _Hasq as Shareholder Registry_, you mention this use case:

Using the Hasq mechanism, the shareholders can vote with their shares while staying anonymous and retaining full control over their shares.

How does this work? I've looked all over your site and accompanying material but can't find the answer.

mazonka commented 8 years ago

Suppose that all shares of a company are represented by Hasq tokens. All tokens are known, for example named as c1, c2, c3, …, c99, c100. Each shareholder has control (owns) over one or more individual token. When a vote is required every shareholder sets the data on each token to an answer in a predefined format; for example, c1: question1-yes, c2:question1-no, and so on. The administrator checks the last records and data on each token and counts the votes. This also can be verified because the records are public, but who owns each token is unknown. Let me know if I should explain this in more detail. Thanks.

dsernst commented 8 years ago

Very interesting.

  1. How are the tokens distributed to the shareholders while ensuring that who owns each token is unknown?
  2. How does each shareholder "set the data on each token"? Wouldn't this involve a network request that all could see, revealing their IP?
mazonka commented 8 years ago
  1. Initially when shares are created, they are distributed among the shareholders. This must be done somehow with greater or smaller level of anonymity. Later, however, when a token representing a share is modified (more records are added) there is no way to know who owns the token; because each new record introduces a new key which can be owned either by the original person or someone else.
  2. For example, "Tokenswap" is implemented so the user connects to the server by TCP. The client side can be an Internet browser or a simple TCP script which would use Hasq network commands. Indeed IP of the client is revealed. But the client only sends information (a new record) when making a transaction. So any one-directed connection will work in this case, for example a UDP packet. Our plans are to add UDP and SMTP (email) protocols. In this case a simple script can send a UDP packet or an anonymous email must be used. UDP implementation is trivial; SMTP is a little bit more complex. We have not yet implemented that functionality because we considered them at lower priority. At the end a TCP connection can be partially anonymised by proxies or TOR.