Standardisation of announcements in DAPPs and services on Ethereum network. This ERC provides proposed mechanics to increase the quality of service provided by DAPP developers and service providers, by setting a framework for announcements. Be it transitioning to a new smart contract or just freezing the service for some reason.
Abstract
The proposed ERC defines format on how to post announcements about the service as well as how to remove them. It also defines mechanics on posting permissions and human friendly interface.
Motivation
Currently there are no guidelines on how to notify the users of the service status in the DAPPs. This is especially obvious in ERC20 and it’s derivates. If the service is impeded by any reason it is good practice to have some sort of guidelines on how to announce that to the user. The standardisation would also provide traceability of the service’s status.
Specification
Structures
Announcer
Stores information about the announcement maker. The allowedToPost stores posting permissions and is used for modifiers limiting announcement posting only to authorised entities. The name is used for human friendly identifier of the author to be stored.
structAnnouncer{boolallowedToPost;stringname;}
Announcement
Stores information about the individual announcement. The human friendly author identifier is stored in author. Ethereum address associated with the author is stored in authorAddress. The announcement itself is stored in post.
Sets posting permissions of the address _newAnnouncer to _postingPrivileges and can also be used to revoke those permissions. The _posterName is human friendly author identificator used in the announcement data.
Removes an announcement with _messageNumber announcement identifier and rearranges the mapping so there are no empty slots. The _removalReason is used to update users if the issue that caused the announcement is resolved or what are the next steps from the service provider / DAPP development team.
Every time there is a new announcement it should be advertised in this event. It holds the information about author author and the announcement istelf message.
eventNewAnnouncement(stringauthor,stringmessage)
Removed announcement
MUST trigger when an announcement is removed.
Every time an announcement is removed it should be advertised in this event. It holds the information about author author, the announcement itself message, the reason for removal or explanation of the solution reason and the address of the entity that removed the announcement remover.
The proposed solution was designed with UX in mind . It provides mechanics that serve to present the announcements in the user friendly way. It is meant to be deployed as a Solidity smart contract on Ethereum network.
Test Cases
The proposed version is deployed on Ropsten testnet all of the information can be found here.