Skip to content

Commit 62f051a

Browse files
authored
Update README.md
1 parent 8287575 commit 62f051a

File tree

1 file changed

+41
-3
lines changed

1 file changed

+41
-3
lines changed

README.md

+41-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,30 @@
11
# Ethereum Distribution System
22

3-
The Ethereum Distribution System (EDS) is a open and decentralized, fully on-chain distribution system for Ethereum smart contracts.
4-
EDS maps functionality, expressed as bytecode, to on-chain locations, using a global non-permissioned singleton indexer contract. Using this index, EDS provides developers with a built in system for [Semver](http://semver.org/) versioning, managing multiple versions and distribution of their smart contracts. System provisions for generic interfaces for distributors, developers and installers, each with their own responsibilities and constraints.
3+
The Ethereum Distribution System (EDS) is an open and decentralized, fully on-chain distribution (factory) system for Ethereum smart contracts.
4+
Using EDS enables developers to publish and reuse each other's code in a trustless manner. Built-in system for [semantic versioning](http://semver.org/), managing versions and combining into higher level distributions allows developers to avoid using upgradability patterns, instead relying on version control.
5+
6+
System provisions for generic interfaces for distributors, developers and installers, each with their own responsibilities and constraints.
7+
8+
## Why is EDS Important?
9+
10+
- It enables developers to efficiently reuse each other's code, effectively reducing the number of needed deployment artifacts in order to get projects going.
11+
12+
- It enables distributors to act as a source of trust for users, packing the global permissionless domain of available packages into a distributor entity specific instantiation that may be parametrized in predictable ways.
13+
14+
- It enables security firms to attest for security of deployed code and revoke such signatures in O(1) for every instance in case of vulnerabilities.
15+
16+
- It enables users (smart accounts) to manage their trusted distributions and distributors while delegating runtime security as needed.
17+
18+
- It paves the door for a better, more performant Ethereum ecosystem, provisioning software abstracted features such as objects passing between same distribution instances. (e.g., don’t need approve for ERC20 transfers between such)
519

620
## Overview
721

8-
This system acts as generalized and efficient factory which is designed in one-fits-all principle. It achieves this by referring bytecode instead of location, enabling code queries by bytecode hash (`address.codehash`). Developers when interacting with the system first must register their bytecode to the code indexer contract. After that, they may create a distribution contract that links multiple various required code hashes in one place. If the developer wants to manage multiple versions of the same resource, they can create a repository contract to add own index on top of global. In order to provide functionality to users, developers may pack their code to Distributions, which have hardcoded instructions for instantiation. Such hardcoded bytecode later can be itself consumed by Distributors, which are responsible for determining custom instantiation arguments and initializer interfaces that will wrap the Distribution. Finally, Installers are used by end-users to manage resources and permissions
22+
This system acts as generalized and efficient factory which is designed in one-fits-all principle. It achieves this by referring bytecode instead of location, enabling code queries by bytecode hash (`address.codehash`). Developers when interacting with the system first must register their bytecode to the code indexer contract which is defined by [ERC7744](https://eips.ethereum.org/EIPS/eip-7744).
23+
After that, they may create a distribution contract that links multiple various required code hashes in one place.
24+
25+
If the developer wants to manage multiple versions of the same resource, they can create a _Repository_ contract to add own index on top of global.
26+
27+
In order to provide functionality to users, developers may pack their code to _Distributions_, which have hardcoded instructions for instantiation. Such hardcoded bytecode later can be itself consumed by Distributors, which are responsible for determining custom instantiation arguments and initializer interfaces that will wrap the Distribution. Finally, Installers are used by end-users to manage resources and permissions
928

1029
### Key Features
1130

@@ -75,3 +94,22 @@ pnpm test # Run tests
7594
Examples of distributions usage can be found in [src/distributions](src/distributions) directory.
7695
Examples of repositories usage can be found in [src/repositories](src/repositories) directory.
7796
Examples of distributors usage can be found in [src/distributors](src/distributors) directory.
97+
98+
Larger example of usage can be found in [Rankify project repo](https://github.com/peeramid-labs/contracts)
99+
100+
101+
## Support || Contribute
102+
103+
If you want to support this project, please click "sponsor" button, or see our gitcoin page:
104+
https://explorer.gitcoin.co/#/projects/0xd4427d0ffc2b8f58c4ef28410deed1158a7d5e405d6cd5bedb0487441d2ba452
105+
106+
107+
108+
You can reach out us on Discord: https://discord.gg/EddGgGUuWC
109+
110+
111+
112+
113+
114+
115+

0 commit comments

Comments
 (0)