Introducing the Block Producer Transparency & Accountability Dashboard - EOS SoCal

in #eosio7 years ago

Introduction

We introduce the Block Producer Transparency and Accountability Dashboard, a tool we are developing to allow us at EOS SOCAL, a proud block producer candidate, to offer full transparency and accountability to EOS token holders as it relates to our use and allocation of block production token rewards. This dashboard would be publicly available and accessible on our website for anyone to view and audit in real time.

Further we offer to make this tool available, open source, to any block producer who wishes to utilize and customize this tool to their own structure, to similarly offer transparency and accountability. We also invite others to help further develop and improve its functionality through a collaboration on GitHub.

Background

The EOSIO public blockchain set to launch June 2018 uses DPOS consensus algorithm that allows EOS token holders to select block producers through a continuous approval voting system that ensures token holders maintain control.

These elected block producers are awarded a certain amount of new tokens by the EOSIO software, via inflation, every time they produce a block. The amount of tokens rewarded is determined by the median of the desired pay published by all elected block producers, not to exceed a hard cap configurable by token holders.

The token rewards serve to help block producers cover costs of block production which may include server and personnel, as well as other costs that may differ between elected block producers, depending on their operational and ownership structure, as well as community benefit provided.

Examples of community benefit:

  • Developer/user awareness and education
  • Developer/support and resources
  • Incubation of third party dApps
  • Development of community benefit dApps and tools
  • Informational studies and content

Since token holders delegate those who they believe are most suitable to take on the role of block production through voting, we believe it is the responsibility of block producers to offer full transparency and accountability to token holders.

We believe this is important in keeping block producers honest and accountable given that block production is a community benefit for the EOS community as a whole.

Functionality and Features Under Development

This tool is designed to tag EOS token transactions with parameters to allow otherwise unidentifiable transactions to be organized into charts, financial reports and more. This allows block producers to provide as much level of transparency as they'd like to token holders and make block producers accountable for campaign promises in such areas as commitments to community benefit.

With this dashboard, anyone will be able to view in real time:

  • Charts that allow quick visualization of the "waterfall" of rewards usage, expenditures and allocation of net earnings.
  • Financial statements such as token based "Profit & Loss" for a given period.
  • Auditable detailed transaction ledger reconciled to the original account wallet that received token rewards.
  • Customizable reports.

Sample Chart

Sample Financial Statement (In EOS Tokens, Not Fiat)

Sample Transaction Ledger

How It Works

This tool utilizes the memo area available in EOS token transactions to allow block producers to specify the purpose of each token transfer by adding highly-customizable parameters that can be used to organize and categorize transactions for the purpose of reporting financial and organizational expenditures and token allocations.

Each entry on the memo area of a transaction should be structured as a valid JSON object. Samples of such memos include:


{"type": "expense", "class": "technical", "category": "server", "account": "hardware upgrades", "detail": "replacing power supply"}

{"type": "expense", "class": "administrative", "category": "personnel", "account": "administrator", "detail": "bi-weekly salary for john doe"}

{"type": "expense", "class": "community benefit", "subclass": "meetups", "category": "G & A", "account": "rent", "detail": "Hotel conference hall venue on march 20, 2018"}

A full transfer done using cleos would be as follows:


Cleos transfer eosocal account.1 62123 '{"type": "expense", "class": "community benefit", "subclass": "meetups", "category": "G & A", "account": "rent", "detail": "Hotel conference hall venue on march 20, 2018"}'

Things to note:

  • Keys and values of the parameters can be fully customized by each BP so they are not forced to change workflow in order to accommodate this transparency initiative.
  • Amounts are displayed in EOS tokens and not fiat. Since some expenses cannot be paid in tokens, a transaction sent to an exchange to liquidate tokens into local currency can still be tagged with parameters indicating its purpose.

Open Source Collaboration and Future Possibilities

We invite all block producers use this tool and all passionate contributors to help further develop it as a community benefit. Through a collaborative effort, we hope this tool will evolve into a feature-rich tool that could serve in the future to establish a standard level of expected transparency and accountability of all block producers.

EOS SOCAL is in process of developing this this tool for its own use, however, our hope is that the community will continue to further build and improve, for the benefit of the community at large.

Current Stack

  • Frontend: Vue.js, specifically Nuxt.js
  • Blockchain Connection: eosjs
  • Style: Sass

Immediate Roadmap

  • Refactor code -- initial commit is a "Just Make it Work" iteration and needs cleaning
  • Modularize implementation so any BP can quickly make the transparency dashboard accommodate their own unique workflow and bookkeeping
  • Make the dashboard look and feel more useful
  • Create an easy-to-use form consisting of dropdowns and inputs so that a BP making manual transactions can easily generate a valid JSON-ready memo

Possible Future Features

  • Save fetched data to a local database for quicker processing
  • Use historical token value data to translate to fiat values
  • Date range based reports
  • Exportable into Quickbooks or other accounting software
  • Advanced financial statements such as Balance Sheets
  • What else?

Please join us on in our Telegram channel for discussions around this project:
https://t.me/eossocal

Github repository with initial commit available here:
https://github.com/EOSoCal/bp-transparency

Conclusion

By developing the Block Producer Transparency and Accountability Dashboard, we aim to offer our own transparency and accountability to token holders and hope to inspire similar standards among other block producers.

Further, we hope this tool will become a collaboration between community contributors to ultimately help develop it as a feature-rich tool that all block producers can utilize, and potentially in the future its use may be demanded by token holders.

Sort:  

Great jobs guys! This is an excellent initiative to help drive transparency for block producers and token holder. We will be integrating this into our website soon. Thanks for putting time into this much needed resource for the EOS ecosystem!

Thank you fellow bp candidates! Happy to hear that you plan to be equally transparent and accountable.

Looks great guys we look forward to using it when we get voted in here at EOS UK. Maybe it could be modified to compare all BPs against one another too and generate a rolling average for us all to try and measure against.

We will look to contribute to the code post launch and see if we can help. I am thinking that the current BP candidate listing could be improved to help make it easier for voters to compare all BPs and asses transparency, so many ideas, just limited time and resources until we all get this thing live!

See you on launch day!

Rog
logo final portrait 200x180.png

Hi EOS UK, thanks for chiming in. It would be interesting, and not too difficult to aggregate the data from the dashboards of all block producers into a bp portal as you suggest. Would be great to have you guys contribute to making all this possible. There's also current initiatives between several community members and bps to develop a more robust bp portal. Please reach out when ready to contribute and we'll get you in the loop.

great Initiative and certainly a boost for bp transparency. if i may add a suggestion, i would certainly like to see an additional chart for bp ownership structure...

Thanks! And Great suggestion... We as block producers don't mind disclosing ownership structure. That can be easily done with the existing functionality by tagging allocations of net earnings, for example - class: "equity distribution", memo: "john smith" - (with proper formatting) and then graphing it. And possibly some tokens may stay in the main account as retained earnings for operating capital.

Awesome, thank you for considering this, it certainly helped improve transparency for all bps!

Keep up the good work guys/gals

Thanks for the interesting post. As a token holder I’m looking forward to voting for a block producer.

Thank you for this important work!
It very well may become a critical tool on keeping BP community honest and transparent!

very cool !^ ,^

Hi there, the tool looks really nice, so giving it a spin. I've changed the endpoint to your mainnet endpoint as the sample one looked like a test endpoint. Getting an exception, which indicates that your endpoint needs to be configured first. Is that right, or am I doing something wrong? I'd appreciate any pointers. Thanks!

{ statusCode: 404,
  path: '/_nuxt/cfeb69e407c55f28b668.hot-update.json',
  message: 'This page could not be found' }
api error => http://public.eosocal.io/v1/account_history/get_transactions {"account_name":"eossocalprod"} { Error: {"code":404,"message":"Not Found","error":{"code":0,"name":"exception","what":"unspecified","details":[]}}
    at /home/ralf/dev/bp-transparency/node_modules/eosjs-api/lib/apigen.js:102:23
    at process._tickCallback (internal/process/next_tick.js:68:7) status: 404, statusText: 'Not Found' }
{ Error: {"code":404,"message":"Not Found","error":{"code":0,"name":"exception","what":"unspecified","details":[]}}
    at /home/ralf/dev/bp-transparency/node_modules/eosjs-api/lib/apigen.js:102:23
    at process._tickCallback (internal/process/next_tick.js:68:7) status: 404, statusText: 'Not Found' }

 ERROR 

  Error: {"code":404,"message":"Not Found","error":{"code":0,"name":"exception","what":"unspecified","details":[]}}
  
  - apigen.js:102 
    [bp-transparency]/[eosjs-api]/lib/apigen.js:102:23
  
  - next_tick.js:68 process._tickCallback
    internal/process/next_tick.js:68:7