DAO-account in Alpress

TL;DR

Introduction

Alpress is a self-governing publication platform based on ENS + IPFS + smart contracts. You can read more about Alpress here.

Alpress is currently in MVP stage. The MVP offers full functionality for private authors. This functionality is not final and may be changed based on DXdao feedback. The easiest way to see Alpress functionality is either to watch this video, or try Alpress MVP yourself (instructions).

The first partnership vertical in Almonit’s proposal to DXdao contains two items.

  1. Finalize Alpress MVP to its first mainnet version hence creating a platform for DXdao members to maintain decentralized blogs.
  2. Add “DAO-accounts” functionality to Alpress, such that DXdao itself has an account in Alpress where the project releases its official publication.

The rest of the document describes the “DAO-accounts” functionality we propose to build for DXdao.

Overview

The core of this proposal is that DAO-accounts will be managed by a list of authorized authors.

DAO proposals would be needed in two cases.

  1. Opening DAO account in Alpress, this includes buying the domain of the DAO blog. Alternatively, Individual DAO members can open but the domain themselves, then transfer the ownership to DAO.
  2. Managing access list of authors who are operating the DAO account.

Authors from the access list can write, modify and remove articles.

There is almost no risk to the DAO meaning if an author’s account is compromised, the author is simply removed from the access list upon successful voting based on DAO proposal. The only downside can be a temporarily bad publication in the DAO blog, which would consecutively be removed by one of the other authors.

AccessList contract

Almonit will create an AccessList contract for DAOs to manage a list of authors with authorized access to platforms. This contract is general and could be used in the future for many other purposes besides Alpress DAO account.

Below is a sketch for the AccessList contract signatures.

interface AccessList {

    // Logged when granting access to a new user .
    event AccessGranted(address user);

    // Logged when revoking access of an existing user .
    event AccessRevoked(address user);

    // grants access to a user
    function grantAccess(address user) external;
    
    // revokes access to a user
    function revokeAccess(address user) external;
    
    // check if a user has access
    function hasAccess(address user) external view returns (bool);
}

Opening a DAO-account

Opening a DAO account will be done by invoking Alpress contract. For this we add the following function to Alpress contract:

function buyDAO(string calldata name, address accessList) external payable

The function would include, in addition to the name of the account itself, also an address of an AccessList contract which manages the list of people who operate the blog.

A DAO-account for DXdao can be opened in one of two ways:

  1. Creating DXdao proposal, once voted positive it calls the buyDAO function or,
  2. Opening the account by a DXdao member then transferring the ownership to DXdao.

We assume the second way would actually be preferred as it is simpler and does not contain any risk to DXdao.

Granting/revoking access

DXdao can grant and revoke access using DAO proposals.

Publishing, editing, and removing articles

To work with the DAO blog, authors with access would need to log in to the system as “DAO authors”. Once they are logged in, the functionality is the same as for private authors’ accounts.

The login process would check if the author is on the access list of the DAO.

There are a few possibilities for UX:

  1. Dedicated DAO-account login page. The user would need to enter the DAO name and press login. Next Alpress would check if the user is in the access list of DAO and if yes would refer it to the editing page.
  2. Login would take place at the same page where private author accounts is i.e., alpress.eth. There will be a flag to mark for users who want to login in DAO-accounts.