kopia lustrzana https://github.com/bugout-dev/dao
Added Terminus documentation
rodzic
b3542c1050
commit
b28afa2556
|
@ -0,0 +1,87 @@
|
|||
# Terminus: Decentralized authorization
|
||||
|
||||
<img src="https://s3.amazonaws.com/static.simiotics.com/dao/terminus-ufo.png" width="250"/>
|
||||
|
||||
Terminus is a smart contract which any application can use to track user permissions on Ethereum-based blockchains.
|
||||
|
||||
Applications create pools of tokens which represents levels of access to their functionality.
|
||||
When a blockchain address attempts to use any particular functionality of such an application, the application
|
||||
checks the token balance of that address to understand whether or not the address is authorized to
|
||||
access the desired functionality.
|
||||
|
||||
Applications can elect to make the tokens in their authorization pools tradable. This allows their users
|
||||
to trade their access on free, decentralized markets like Open Sea.
|
||||
|
||||
Applications can also choose whether or not tokens from their authorization pools get burned when they are
|
||||
used. This allows them to create authorization pools for limited-use resources (e.g. NFT whitelists)
|
||||
or for renewable resources (e.g. badges in blockchain games).
|
||||
|
||||
The Terminus interface is an extension of the [ERC1155 multi-token interface](https://eips.ethereum.org/EIPS/eip-1155).
|
||||
|
||||
## Benefits
|
||||
|
||||
### Open markets for authorization
|
||||
|
||||
Because Terminus implements the `ERC1155` interface, Terminus authorization tokens can be traded on open
|
||||
markets.
|
||||
|
||||
This is good for users because purchasing access to an application is no longer a sunk cost. It introduces
|
||||
a sense of liquidity to the notion of access.
|
||||
|
||||
For authorizing applications which elect to make their tokens tradable:
|
||||
1. The market for authorization tokens is the best possible price discovery mechanism for their product
|
||||
or service.
|
||||
2. They can forecast usage of their application based on the activity of their authorization tokens on
|
||||
the market.
|
||||
3. They operate much closer to capacity because users who are no longer engaged with the application can now
|
||||
make their authorization available to those with intent to use it.
|
||||
|
||||
#### Example: NFT whitelists
|
||||
|
||||
Even on popular NFT projects, fewer than 50% of the whitelisted addresses typically exercise their whitelist
|
||||
privileges. Getting on an NFT whitelist generally requires some effort on the part of a user -- it is
|
||||
something they have to compete for. If they then do not exercise those privileges -- because they lack
|
||||
the means or the interest -- it represents a total waste of that effort.
|
||||
|
||||
If an NFT project used Terminus to manage its whitelist, these users could sell their whitelist access
|
||||
on Open Sea, making their effort worthwhile. This would benefit the NFT project, too, by guaranteeing
|
||||
engaged demand for their tokens.
|
||||
|
||||
### Operationally simple
|
||||
|
||||
Managing authorizations on a smart contract is not easy, especially if those authorizations heavily
|
||||
involve state.
|
||||
|
||||
The only purpose of Terminus is to manage authorizations and authorization state. This means that, over time,
|
||||
it will achieve maximal security and minimal gas overhead for this task.
|
||||
|
||||
Terminus exposes its functionality through the simple ERC1155 interface, which makes it very easy to integrate with.
|
||||
|
||||
Terminus comes with a web interface, which makes it easy for a team to inspect and manage their authorization
|
||||
pools collaboratively.
|
||||
|
||||
### Transparent
|
||||
|
||||
Checking whether an address is authorized to perform an action only requires an `ERC1155` `balanceOf`
|
||||
call against the relevant Terminus authorization pool.
|
||||
|
||||
This means that it is transparent to both the application and the user whether or not they have permission
|
||||
to do something on the application.
|
||||
|
||||
Users can inspect the configuration of each pool to understand the authorization semantics - for example,
|
||||
if their authorization tokens are burned on use or if they persist.
|
||||
|
||||
## The Terminus smart contract
|
||||
|
||||
Our reference implementation of Terminus is also the one we are using in production. It is implemented
|
||||
as a facet on an [EIP2535 proxy](https://eips.ethereum.org/EIPS/eip-2535).
|
||||
|
||||
The entrypoint to understanding Terminus functionality is the [`TerminusFacet`](../contracts/terminus/TerminusFacet.sol).
|
||||
|
||||
## Status and roadmap
|
||||
|
||||
Terminus is currently live on the [Polygon Mumbai testnet](../operations/README.md) and is being used by
|
||||
our earliest adopters.
|
||||
|
||||
We are currently building our roadmap. Our immediate priorities can be found in this repository's issues
|
||||
using the `terminus` tag: https://github.com/bugout-dev/dao/issues?q=is%3Aissue+is%3Aopen+label%3Aterminus
|
Ładowanie…
Reference in New Issue