Skip to content

TMP: MemberID module #2

Description

@Evert0x

TMP-2: MemberID


tmp: 2
title: Member control module
author: Evert Kors (@Evert0x)
discussions-to: #2
status: Draft
type: Module
created: 2021/01/09
requires (*optional):
replaces (*optional):


Simple Summary

Enable Member id's based on uint256 instead of member addresses. Members are able to upgrade their address.

Abstract

The following standard allows members to upgrade their working address while keeping the same member identifier.

Motivation

Upgrade ability of addresses is a valid use case.

Specification

Interface

interface IMemberID {
    event MemberAddressChanged(
        uint256 indexed memberID,
        address indexed previousAddress,
        address indexed newAddress
    );

    function upgradeAddress(address _oldAddress, address _newAddress) external;

    function getAddressByMember(uint256 _member)
        external
        view
        returns (address);

    function getMemberByAddress(address _address)
        external
        view
        returns (uint256);
}

Storage

    bytes32 constant MEMBER_ACCESS_STORAGE_POSITION = keccak256(
        "diamond.standard.member.access.storage"
    );

    struct MemberStorage {
        uint256 memberCounter;
        mapping(address => uint256) addressToMember;
        mapping(uint256 => address) memberToAddress;
    }

Rationale

Backwards Compatibility

Reference Implementation

https://github.com/Evert0x/MemberAccess

Security Considerations

Copyright

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions