NEP-12: NewORG Standard (NRC-12)
|Title||NewORG Standard (NRC-12)|
|Author(s)||Evan Liu, Xia Wu, Lee Willson, Zhou Xiqiao, Yong Liu, Qu Jianwei|
Simple Summary #
NewOrg template standard represents the living organization in newton ecosystem and a new DAO paradigm for the next generation social governance and collaboration.
NewOrg methods and standard based on NewChain and smart contract technologies are defined as is:
- based on NewChain and its smart contract technologies.
- to replace the traditional limited corporation with new governance paradigm based on blockchain technologies.
- to define a set of meta rules for organization governance, and clarify the separation of these rules between NewChain layer and contract layer to implement: (1) business irrelative meta rules; (2) flexibility of neworg governance token; (3) anchoring all neworg to NewChain.
- compatible with staking nodes as well as NewForce incentivization model in current NewPay for easier migration.
- a complete open standard for any organization, institution, goverments to create NewOrg and transfer the centralized trust to the decentralized infrastructure and trust.
To replace the traditional limited corporation with new governance paradigm based on blockchain technologies, illustrated as below:
Meta Data #
The meta data functions are constant methods that returns information. Parameters all have a leading _.
returns the informaiton of the Org:
- _name, the name of the Org
- _type, the type of the Org
- 1 - Commercial Instituation
- 2 - Community Group
- 3 - Government Sector
- 4 - Non-profit Organization
- 5 - Developer Community
- _url, the website of the Org
- _managementFee, %, ranging 0-100, of mining profits that would be attributed to the Org owner
function orgInfo() public view returns (string _name, uint8 _type, string _description, string _contryRegion, string _url, uint8 _managementFee)
returns the total staking amount of NEW (unit: ISSAC) of the Org.
function totalStaking() public view returns (uint256 _amount)
returns the staking amount of a specific address which is a partner of the Org.
function stakingAmountOf(address _partner) public view returns (uint256 _amount)
returns the versionTag (e.g. “0.1.0”) of the Org.
function versionTag() public view returns (string _versionTag)
returns the owner address of the Org.
function owner() public view returns (address _owner)
returns the count of members of the Org.
function countOfMember() public view returns (uint256 _count)
returns if the given address is the member of the Org.
function isMember(address _person) returns (bool _isMember)
Interaction / Functions #
The interaction functions are methods that would change the states.
modifies the information of the Org (refer to orgInfo() above).
function modifyOrgInfo(string _name, uint8 _type, string _description, string _contryRegion, string _url, uint8 _managementFee)
increases the total staking amount for the caller itself.
function increaseStaking() payable
increases the staking amount for someone else.
funciton increaseStakingFor(address _stakeholder) payable
decreases the staking amount of the caller.
joins the Org (as the caller).
exits the Org (as the caller).
Asset Token Matrix #
Possible asset tokens could be formulated with the following Boston matrix:
Test Cases #
Org token is removed from the original version and it should be considered later.
Copyright and related rights waived via CC0.