Skip to content

Commit ecaf6c2

Browse files
authored
Merge pull request #3 from change-code-io/dev
Second major draft of MVP knowledgebase
2 parents 58b2b19 + 4903328 commit ecaf6c2

14 files changed

+289
-55
lines changed

change-credits/cc-minting.md

+36-20
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ label: Minting Change Credits
33
order: -2
44
---
55

6-
Because Change Credits are only minted following confirmation of realized, tangible, and verifiable impact, there the process by which these assets are created follows a number of steps and involves multiple types of actors.
6+
Because Change Credits are only minted following confirmation of realized, tangible, and verifiable impact, the process by which these assets are created follows a number of steps and involves multiple types of actors.
77

8-
### Participants
8+
## Participants
99

1010
Good Generator
1111
: A Good Generator is the implementing organization responsible for seeing the planned impact results achieved. It is through the actions of this entity, often an NGO or social enterprise, that positive externalities are produced. Because contributions and funds can be seamlessly fractionalized and divided, a Good Generator can also be a collection of multiple contributors working collaboratively.
@@ -19,43 +19,59 @@ Partner
1919
Verifier
2020
: Verifiers exist to both validate, measure, and quantify any impact produced. Verifiers are defined by the Good Generator of the project with a focus on local context and relevant expertise. Verification can be conducted by a single individual or organization or the responsibility can be dispersed through a set of Verifiers with a specified quorum required.
2121

22-
### Minting Flow
22+
## Minting Flow
2323

2424
```mermaid
2525
sequenceDiagram
2626
actor Verifier
2727
actor Good Generator
2828
actor Change Code
2929
Good Generator-->Change Code: propose impact goal for review
30+
participant EAS
3031
create participant hypercert (ERC1155)
3132
Good Generator->>hypercert (ERC1155): mint impact goal
3233
actor Change Code
33-
create participant Token Bound Account (ERC6551)
34-
Change Code->>Token Bound Account (ERC6551): deploy treasury account
35-
actor partner
34+
create participant Treasury Account (ERC6551)
35+
Change Code->>Treasury Account (ERC6551): deploy treasury account
36+
actor Partner
3637
loop
37-
partner->>Token Bound Account (ERC6551): send $
38-
Token Bound Account (ERC6551)->>partner: mint IOUs (ERC20)
39-
Token Bound Account (ERC6551)->>Good Generator: remit funding received
38+
Partner->>Treasury Account (ERC6551): send $
39+
Treasury Account (ERC6551)->>Partner: mint IOUs (ERC20)
40+
Treasury Account (ERC6551)->>Good Generator: remit funding received
4041
end
42+
Good Generator-->Good Generator: implement project
4143
loop
42-
Good Generator-->Good Generator: implement project
43-
Good Generator->>hypercert (ERC1155): submit evidence
44-
Verifier--xhypercert (ERC1155): review evidence
45-
Change Code--xhypercert (ERC1155): assign token quantity
46-
Change Code->>Token Bound Account (ERC6551): mint Change Credits (ERC721)
44+
Good Generator->>EAS: publish claim attestation
45+
Verifier--xEAS: review evidence
46+
Verifier->>EAS: publish verification attestation
47+
Change Code->>Treasury Account (ERC6551): mint Change Credits (ERC721)
4748
end
4849
Loop
49-
partner->>Token Bound Account (ERC6551): return IOUs
50-
Token Bound Account (ERC6551)->>partner: receive Change Credits
50+
Partner->>Treasury Account (ERC6551): return IOUs
51+
Treasury Account (ERC6551)->>Partner: receive Change Credits
5152
end
5253
```
5354

5455
The above sequence diagram overviews how Change Credits are created. While the system supports alternative flows to facilitate various forms of financing, we can consider this base form to have x steps.
5556

56-
1. The Good Generator submits an impact goal and plan for review by Change Code, as part of their onboarding process. Once approved to mint via the Changescape, the Good Generator mints their hypercert, signalling the beginning for their project.
57-
2. After the projects' hypercert has been deployed, Change Code deploys an associated Token Bound Account (TBA) to act as a treasury for the project to receive funds into and mint tokens from.
57+
1. The Good Generator submits an impact goal and plan for review by Change Code, as part of their onboarding process. Once approved to mint via the Changescape, the Good Generator mints their hypercert, signaling the beginning for their project.
58+
2. After the projects' hypercert has been deployed, Change Code deploys an associated Token Bound Account (ERC6511) to act as a treasury for the project to receive funds into and mint tokens from.
5859
3. Partners begin contributing funds into the project's TBA in exchange for IOUs redeemable for Change Credits once the latter begin to be minted. These funds are then remitted to an account from which the Good Generator can spend to cover the costs of their work. This process can be done in an open-ended asynchronous manner, with funds being contributed to the project through the project's lifespan.
59-
4. As the Good Generator carries out their work to produce impact, they periodically submit evidence for review. This evidence is stored as records tied to their original hypercert and can be accessed by specified Verifiers.
60+
4. As the Good Generator carries out their work to produce impact, they periodically submit evidence for review. This evidence is published via the Ethereum Attestation Service (EAS). These claims are then reviewed and approved or rejected by Verifiers.
6061
5. Once evidence is confirmed by Verifiers, Change Code intakes the data provided to assign a quantity of Change Credits to be created and mints them via the project's TBA.
61-
6. With Change Credits minted and available via the TBA, the project's Partners can redeem their IOUs and receive their proportional share of Change Credits.
62+
6. With Change Credits minted and available via the TBA, the project's Partners can redeem their IOUs and receive their proportional share of Change Credits.
63+
64+
## Change Credit Ownership
65+
66+
Beyond forming the economic basis for [Mutual Money](../mutual-money/currency-minting.md), Change Credits create a special relationship between Partners and the Good Generators they back. As can be seen in the [schema](../data-schemas/change-credits-spec.md) for Change Credits, contributions to project's are represented as NFTs, meaning that each contribution, regardless of size, still creates a single token. The reasoning behind this decision is, at least in part, a statement of values from Change Code that all contributions matter and should be recognized.
67+
68+
When it comes to the rights conferred to Change Credit holders (Partners), each project's Good Generator is required to specify. They can choose to select and calibrate any (or all) of the following.
69+
70+
##### Voting Power
71+
Good Generators can use Change Credits to include their Partners in decision making processes. These can be small decisions or large decisions, implemented on a one-time or ongoing basis. Additionally, Good Generators can select how to allocate voting power. Each NFT holder can be given a single vote or alternatively the `Balance` can be used so that Partners representing larger economic interest are given larger influence.
72+
73+
##### Exclusive Access
74+
It is not uncommon for organizations producing positive externalities host events, whether social, cultural, or academic, where attendance is in high demand. Change Credits can be used to grant access to these events.
75+
76+
##### Credit Retirement
77+
Certain Good Generators may be social enterprises, capable of producing both profit and positive externalities, or may be engaged in various forms of blended finance. In either case, there will be Good Generators who may be both capable of and interested in offering an economic incentive to further entice Partners to support their positive work. One means to realize this alignment is through Change Credit [retirement](./cc-retirement.md).

change-credits/cc-retirement.md

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
---
2+
label: Change Credit Retirement
3+
order: -4
4+
---
5+
6+
When a Good Generator is able concurrently generate positive impact and traditional revenue, an opportunity emerges to further align interests between themselves and their Partners. These social enterprises may leverage Change Credits to jump start their work in producing green energy, developing affordable housing, lowering the cost of healthcare or education, or achieving almost any other means of positive change that can also produce revenue.
7+
8+
A more traditional model for these social enterprises would be to offer equity or debt from their organizations where the positive impact is seen and structured as merely an ancillary benefit. The shortcoming in such a model is that there is no economic value ascribed to the impact externality itself, but the cost is still present. Imagine a company that made tables and chairs but could only sell its tables, while being expected to produce and distribute its chairs without payment. Would this company be able to effectively compete for capital against a business that produced and sold only tables without the deadweight of chair production.
9+
10+
The Changescape is different. Inside the Changescape, positive externalities are seen as economic goods unto themselves. In support of this paradigm shift, instead of selling equity or debt with *blended returns*, social enterprises can instead commit funds to repurchase and retire their Change Credits.
11+
12+
## Retirement Flow
13+
14+
```mermaid
15+
sequenceDiagram
16+
actor Good Generator
17+
participant Treasury Account
18+
actor Partner
19+
Good Generator->>Treasury Account: fund for retirement
20+
Partner-->Treasury Account: signal interest in retirement
21+
Treasury Account->>Partner: distribute funds and update Change Credit
22+
```
23+
24+
The above sequence diagram offers an overview of the steps of Change Credit retirement, which is described in greater detail across 6 steps.
25+
26+
1. Before any of the above interactions take place, the Good Generator may optionally specify a target or even guaranteed amount of funds that will be used to repurchase and retire its Change Credits. This target can be published as part of deploying the project inside the Changescape or may simply be disseminated through the organizations usual channels communication.
27+
2. Once funds are available (and after Change Credits have already begun to be distributed), the Good Generator would remit funds into the project's Treasury Account.
28+
3. With funds available in the account, the Good Generator must specify how retirement will occur--declaring the price they are willing to pay for each Change Credit received and optionally setting a maximum fraction of each Change Credit that may be retired.
29+
4. Partners holding Change Credits may now signal themselves as interested in retirement, optionally setting their own maximum retirement portion.
30+
5. As Partners signal interest in retirement, the Treasury Account automatically distributes funds and updates the `Balance` and `Retirement` values of participating Change Credits accordingly.

change-credits/foundations.md

+31-4
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,13 @@ Before expanding on the architecture and processes involved in Change Credits di
1313

1414
### Hypercerts
1515

16-
Hypercerts are on-chain, tokenized claims of positive impact. To be more precise, hypercerts represent *claims* of *work* done toward some beneficial outcome, be that work toward social or environmental impact or the building of a public good.
16+
Hypercerts are on-chain, tokenized claims of positive impact. To be more precise, hypercerts represent *claims* of *work* to be done toward some beneficial outcome, be that work toward social or environmental impact or the building of a public good.
1717

18-
A complete list of the on-chain token data and off-chain metadata included in a hypercert can be found in the [documentation](https://hypercerts.org/docs/implementation/metadata). Importantly for our purposes and designs, there is no included support for verification that the work was completed or efficacious. This will therefore be addressed using another foundation public good, the Ethereum Attestation Service (EAS). However, the hypercerts specification does include a field for a list of contributors. Change Credits takes advantage of this encoding to record contributions of the actual work being done, while tracking *financial partners* through ownership of Change Credits themselves.
18+
!!!
19+
It is worth noting that the relationship between Hypercerts and the status of positive impact is not currently settled. Some usages lean toward only representing work already done while other implementations represent plans for future work as Hypercerts instead. Inside the Change Code implementation, we will default to the latter interpretation, with Hypercerts issued as a way to commit to future work.
20+
!!!
21+
22+
A complete list of the on-chain token data and off-chain metadata included in a hypercert can be found in the [documentation](https://hypercerts.org/docs/implementation/metadata). Importantly, for our purposes and designs, there is no included support for verification that the work was completed or efficacious. This will therefore be addressed using another foundation public good, the Ethereum Attestation Service (EAS). However, the hypercerts specification does include a field for a list of contributors. Change Credits takes advantage of this encoding to record contributions of the actual work done, while tracking *financial partners* through ownership of Change Credits themselves.
1923

2024
### Ethereum Attestation Service (EAS)
2125

@@ -28,11 +32,34 @@ While not tokens themselves (more on that [here](https://docs.attest.org/docs/co
2832
To maintain maximum compatibility across existing wallets and infrastructure, the Change Credits architecture leverages only broadly accepted ERC token standards. Change Credits themselves are minted as NFTs (non-fungible tokens) through the ERC721 standard.
2933

3034
+++ ERC721
31-
ERC721 is the most widely adopted token standard for NFTs. The standard is well tested, and enjoys near universal support across wallet implementations.
35+
ERC721 is the most widely adopted token standard for NFTs. The standard is well-tested, and enjoys near-universal support across wallet implementations.
3236
+++ ERC1155
3337
Hypercerts adhere to the ERC1155 standard for semi-fungible tokens. This mixed standard, existing in the divide between fungible and non-fungible tokens, offers ideal flexibility for the unique requirements of the hypercerts standard.
3438
+++ ERC20
3539
ERC20 tokens are fully fungible and well suited for liquidity and open exchange. IOUs issued in anticipation of Change Credits are minted as ERC20 tokens to support the emergence of free exchange by holders who may wish to access liquidity.
3640
+++ ERC6551
3741
Referred to as "token bound accounts" (TBAs), ERC6551 tokens function as a form of smart contract wallet where an account is simultaneously able hold or mint tokens itself and be considered a token (an NFT more specifically) in its own right. Change Code leverages TBAs to serve as *treasury accounts* for the receipt of funds into projects and the minting of Change Credits.
38-
+++
42+
+++
43+
44+
### Network Infrastructure
45+
46+
To maximize the reach of our work and do our best to always meet changemakers where they are, the Changescape is designed as a cross-chain or multi-chain protocol. Leveraging shared tools and being available to existing communities across different ecosystems is among our most important design considerations.
47+
48+
#### Blockchain
49+
50+
##### Optimism
51+
Initial smart contracts for the Changescape are being deployed onto the Optimism L2 mainnet. The Optimism community has demonstrated a deep commitment toward positive impact, both inside of and beyond climate specific initiatives. Moreover, the technology involved in the [OP Stack](https://docs.optimism.io/stack/getting-started) is among the most closely aligned with the the Ethereum core and its roadmap prioritizes key pieces of the Ethereum ecosystem that are critical to Change Code, such as [EAS](https://docs.attest.org/docs/quick--start/contracts#optimism).
52+
53+
##### Celo
54+
For years the Celo blockchain stood out as the largest layer 1 blockchain network focused around positive impact. The network is currently undergoing a transition to enter the Optimism orbit as a part of the upcoming Optimism [Superchain](https://docs.optimism.io/stack/explainer). Change Code is closely following the advances of both [Celo](https://forum.celo.org/t/clabs-proposes-migrating-celo-to-an-ethereum-l2-leveraging-the-op-stack/7902) and the Superchain to eventually migrate our primary deployments when the time is right.
55+
56+
##### Aztec
57+
While not currently emphasized in many circles focused on ReFi (regenerative finance) or public goods, the issue of privacy is something that we view as central to our long term vision and needs. It is often neglected that working for the benefit of all is a privilege and that while it may be safe for those in the *West* or the *Global North* to advance climate initiatives, engage in investigative journalism, or attempt to advocate for peace, many are not as fortunate. There are many situations in which climate action can be and is met with threats and physical violence, where educating women or ethnic minorities can make one a target of ideologues, or where it is impossible to mediate for peace without being at risk from extremists on either side of the divide.
58+
59+
For these reasons and many more, Change Code has a long term interest in the use of zero-knowledge and other privacy preserving technology. We are actively researching to eventually upgrade our protocol to support project deployments where any identifying information about participants can be publicly shielded while still enabling robust verification. [Aztec](https://docs.aztec.network/), together with it's smart contract language Noir, presents the ideal route to achieve this vision.
60+
61+
#### Interoperability
62+
63+
Beyond any choices for which networks may be used to deploy the *logic* for the Changescape, is the question of where various tokens--IOUs, Change Credits, and Mutual Money--may be accessed. To make Change Credit tokens accessible across chains, while avoiding centralized bridges and potential honeypots which can be drained by attackers, Change Code is integrating [LayerZero](https://layerzero.network/how-it-works) for cross-chain token transfers.
64+
65+
While this list will grow overtime, Change Code is currently prioritizing building connections to make our tokens available on Arbitrum and Solana as both chains have substantial ReFi and public goods communities.

0 commit comments

Comments
 (0)