logo

BACKGROUND

There is a situation in the market when offers prevail over the demand and most of the offers are pretty the same. You may ask what we are talking about, here is the answer: have a look at https://etherscan.io/ and compare codes of first 100 tokens. Amazing isn't it? Unique projects can be counted on the fingers of one hand (thanks God not Freddy Krueger’s ??). All other projects have nothing more than the standard ERC 20 code and this is sad. Most of these projects do not bring up value nor add it to the entire crypto-community; people have a negative opinion on what is happening, the market is in the red area. Very few traders can trade within bearish trend, and everyone wonders what will happen to Bitcoin.

In its turn, new interesting projects are able to give the market a new breath of fresh air and boost to new heights. After all, we heard a lot, that price of Ethereum dropped due to the large number of scam ICOs. The rest of the market suffers for the same reason. You can sit and wait for the moment when scammers are no longer profitable by issuing scam projects. Alternatively, one can create interesting and honest projects establishing the level to separate from them. On your own create necessary market conditions with which scam projects will die out and, at the same time, keep Bitcoin or Ethereum rates up.

And…as usual the words are sweet but what is the reality? In fact, all is harder than one can imagine. In current situation trust gaining objective is not just, so to say, difficult but a little harder than to get over that fairy ice wall from popular fantasy story. Actually, one won’t get over it unless try…so we need to try it. Preparation, equipment, tools and only goal ahead…only thing – don’t look down.


INTRO

Let’s imagine a company managed by stockholders. The more shares you have the more influence power you have on the company. Basically, we meet this approach throughout all spheres of life. We have rights for: vote, freedom, in general, such rules that ensure the protection of the dignity and freedom of each individual person. So it turns out that as a part of society you take part in its life.

Otherwise we can observe crypto community: there are “devs” and “hamsters”. First make money on the second and there is no alternative to cooperate. Well yes, there are major traders, probably. Rumors say there are three whales supporting the market. There were projects, which became big ones thanks to the community, but where are they now? The same location as the whole market is – at the bottom. How did they get there? Did not find mutual understanding, quarreled, wanted to go on different ways of development, generally failed to make the joint decision. After all, there is no tool to make this decision legitime.

Here we face a challenge how to make this kind of decision legitime. Actually, there is no need to go far for the solution. Use Blockchain! (Voting possibility will be established using it). This solution is as simple as ultimately appropriate. Remember at the beginning of the section we talked about a company and shares, so consider that the tokens will act as shares, and holders as shareholders. Looks interesting? – However, Dev can have an unlimited source of shares – How to protect the shareholders? Dev shall not be considered as shareholder in the contract. Basically, Dev won’t possess tokens. Tokens are to be issued only at demand and immediately go to Exchanges for sale. Even more, only those tokens may vote which are on holders’ wallets but not on Exchanges. This way the joint decisions will be ultimately legitime.


CONCEPT

  • The essense is to manage the project by holders, where number of tokens held equals to number of votes holder has.
  • Topic to vote can be brought up by any holder. Wallet developer shall not be subject to voting right.
  • Originally, Dev issues some number of tokens to cover its expenses and further project support.
  • All the rest of project life is managed by voting whereas holders bring up topics to vote.


VOTING RULES:

1. Any holder can bring up a suggestion to vote.

2. Further development and marketing suggestions can be brought up.

3. Suggestion is to be put up in details on forum thread and the voting is done via contract to avoid high fee for transaction.

4. Each suggestion/offer must contain the Goal (Idea) and ways/vision to achieve it.
P.S. No need to waste your time and money for suggestion like pricing equal to 10btc without real roadmap how to reach it. Suggestions like “we won’t just sell lower” won’t work. Unfortunately, you won’t be heard at least by All holders.

5. Based on that, your offers should not contain directions to the market participants, as long as there is no tool to trace it.

6. Rules can and will be amended.


HOW IT WORKS (CODE SAMPLES WITH DESCRIPTION)

The contract contains the basic code for ERC-20 standard required to work on Exchanges.
Added SafeMath library to save transactions costs for calculations.
Entire contract code is publicly available at etherscan.io
Below provided are the most important extracts from the code with detailed descriptions.
Independence and reliability of voting is provided by a closed structure for each voting:

Code:
struct stSuggestion {
string  text; //Voting text
uint256 total_yes; //Vote "for"
uint256 total_no; //Vote "against"
uint256 timeStop; //time to vote end
bool finished; // Flag to indicate completed voting
uint voters_count; //Total voters
mapping(uint => address) voters_addrs; //Wallets addresses of voters
mapping(address  => uint256) voters_value; //Number of votes from each wallet
    }

All voting items are kept in special list:
Code:
mapping (uint => stSuggestion) suggestions;

Main functions of contract:
Code:
addSuggestion
Creates new voting item and remembers text and date stated by user.
Remaining voting parameters are forcibly reset:
suggestions[newID].text = s;
suggestions[newID].total_yes = 0;
suggestions[newID].total_no  = 0;
suggestions[newID].timeStop =  now + forDays * 1 days;
suggestions[newID].finished = false;
suggestions[newID].voters_count = 0;

Terminates tokens user spent for voting suggestion:
balances[msg.sender] = balances[msg.sender].sub(Price);
totalSupply = totalSupply.sub(Price);
getSuggestion
Returns publicly available voting information by ordinal number. Nobody can get the addresses of the voters, not even the developer:
return (
            suggestions[id].text,
            suggestions[id].total_yes,
            suggestions[id].total_no,
            suggestions[id].timeStop,
            suggestions[id].finished,
            suggestions[id].voters_count
            );
finishSuggestion
This function will close the voting and return tokens to addresses of the voters:
   
For each voter
for ( i = 1; i <= suggestions[id].voters_count; i++){
addr = suggestions[id].voters_addrs[i];
val  = suggestions[id].voters_value[addr];
balances[addr] = balances[addr].add( val ); // Return tokens to voter
totalSupply = totalSupply.add( val ); // Notify contract that tokens are back to flow
}
function Vote
Allows to vote. It is required to specify voting number, quantity of votes and vote status "For" or "Against"

if (MyVote)
suggestions[id].total_yes += Value; //Votes "For"
else
suggestions[id].total_no  += Value; // Votes "Against"

//Remember who voted and with how many tokens
suggestions[id].voters_count++;
suggestions[id].voters_addrs[ suggestions[id].voters_count ] = msg.sender;
suggestions[id].voters_value[msg.sender] = suggestions[id].voters_value[msg.sender].add(Value);
balances[msg.sender] = balances[msg.sender].sub(Value); // Withdraw tokens from user
totalSupply = totalSupply.sub(Value); //Notify contract that votes taken from flow

Additional functions for working with the contract through API:
Code:
setSuggPrice - set a price for placing a vote suggestion
getListSize - returns number of voting suggestions in contract
isSuggestionNeedToFinish - checks if voting needs to be ended


ROADMAP

Pending implementation via vote system. Suggest, discuss, implement and verify voting system for vitality!)))


CONCLUSION

Will be issued later. First, need to observe how this project will move on. There is hope that the project will be developing with interest and excitement, ideally, with no devs active involvement but with participants enthusiasm. We are eager to watch the result of all efforts!