Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a Discover delegates page to the delegates section #1828

Open
Korben3 opened this issue Mar 18, 2019 · 0 comments

Comments

@Korben3
Copy link

commented Mar 18, 2019

Description of the problem

The DPOS system is an important part of Lisk. Forging delegates must be chosen carefully to ensure a stable and trustworthy blockchain.

Currently it's very difficult for most lisk owners to find out more information about active delegates and to decide which ones to vote for. Information is scattered across multiple sites, chat rooms and social websites. It's also hard for delegates to reach the many owners of lisk and share their campaign info.

Suggested solution

Most lisk owners use the Lisk hub desktop wallet to access their lisk and perform transactions. This makes it the best place for adding a feature that allows people to discover delegates.

I suggest changing the Delegates section and adding a Discover delegates option as shown in the screenshot below.

delegate_01overview

Available sorting methods:

  • All: The available delegates sorted by rank, voted and not voted.
  • Voted: Delegates who received the users vote. Normal rank sorting.
  • Not voted: Delegates who have not received the users vote. Normal rank sorting.
  • Discover delegates: A random sort of the current 101 delegates + every standby delegate that submitted its delegateInfo link to the blockchain. It serves no purpose to include standby delegates that are not actively looking for a forging position. And we don't want to rule out any of the current forging delegates. Everytime the Discover delegates link is clicked the list will be sorted in a new random order.

Delegate detail page:

After clicking on a delegate it will take the user to the Delegate details page. Which shows more information about the delegate. A personal message and perhaps additional statistics like vote weight, productivity or account age.

delegate_02details

Technical:

For a personal message to appear we must solve the following steps:

  • Add message, allow the delegate to add a message.
  • Edit message, allow the delegate to add a new updated message.
  • Retrieve message, the message must be easily and quickly retrieved.
  • Remove message, the message will no longer be shown.

Add message:

The current data field of 64 bytes is too small to provide enough info. My proposal is to let delegates send a transaction to their own account containing a specific code. Part of this code is a link to a simple text file hosted by the delegate or someone they trust.

This makes sure that if a server of a delegate hosting the text file becomes unreachable, it does not affect other delegates information. It's 'decentralized'.

The following code must be placed in the data field of a tx sent and received by the delegate:

delegateInfo: <link url>

64 bytes should be enough to hold the identifier, delegateInfo:, and the url to the text file.

examples:
delegateInfo: https://korben3.com/delegateInfo.txt
delegateInfo: https://lisk.example.com/data/delegateInfo.txt

Edit message:

A messaged can be changed by simply changing the text file on the server. Or by sending a new transaction with the identifier and pointing to a new address, since only the latest tx with the code is retrieved.

Retrieve message:

There are two steps to retrieve the message. When the Delegate details page is loaded, it makes an API call to a lisk node. The result of the call will contain a link to a textfile which is subsequently retrieved and shown to the users.

This following API call will retrieve the latest link to the delegate information textfile, other previously submitted identifiers are ignored.:
https://testnet.lisk.io/api/transactions?senderId=7134531444980378449L&limit=1&offset=0&sort=timestamp%3Aasc&data=delegateInfo:%25

Remove message:

A message can be removed by deleting delegateInfo.txt from the server, resulting in a 'not found' error. Or by sending a new tx to their own account without a link delegateInfo:.

Message specifications:

To make sure the delegate info is retrieved fast, save and looks good, certain specifications must be defined.

  • Limit to 700 bytes, we don't want to overwhelm the user and place a big wall of text and the text file should small enough to be quickly retrieved. 700 should be enough to include various information like contributions, sharing reward, pool affiliation, etc.
  • Character encoding of UTF-8, allows for a wide range of characters and even emoji. Lisk hub will know what to expect and does not have to deal with various encodings.
  • No hyperlinks allowed, to keep the user from clicking on unsafe links and avoid possibly damaging code, links will be non-clickable and shown as text.
  • The text file should be called delegateInfo.txt, it's descriptive and the .txt extension is mandatory.
  • Some formatting coding is allowed, for instance BOLD and italic to empathize certain words or subjects.

Discover delegates

Implementing an easy method for voters to discover delegates will benefit the current lisk system and future sidechains.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
2 participants
You can’t perform that action at this time.