Skip to content

Commit 3dbed17

Browse files
committed
spec cleanup
1 parent 8316ed9 commit 3dbed17

File tree

6 files changed

+64
-20
lines changed

6 files changed

+64
-20
lines changed

change-credits/cc-minting.md

+2
Original file line numberDiff line numberDiff line change
@@ -62,3 +62,5 @@ The above sequence diagram overviews how Change Credits are created. While the s
6262
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.
6363

6464
## Change Credit Ownership
65+
66+
As detailed [here], a key utility of Change

data-schemas/change-credits-spec.md

+41-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,46 @@
11
---
2-
label: Change Credits Specification
2+
label: Change Credits
33
order: -4
44
---
55

6-
Change Credits are non-fungible (NFT) tokens implemented according to the ERC721 standard, the most commonly used NFT standard in web3.
6+
Change Credits are non-fungible (NFT) tokens implemented according to the ERC721 standard, the most commonly used NFT standard in web3. The motivation to use non-fungible tokens, used most commonly as digital collectibles or as tools to control membership access, is two fold.
77

8-
To define a inside the Changescape, the following specifications are made:
8+
First, Good Generators may elect to confer invitations to events or provide partner only forms of communication or community. These uses of "token gating" are well solved by NFTs as they provide clearest binary between partners (those who hold a project's NFT) and others. The second consideration for constructing Change Credits as NFTs is admittedly more abstract. While there is no ignoring the fact that larger contributions to projects can have a larger impact, it is important to emphasize and embrace the idea that simply partnering for impact in the first place and at any level of contribution is the most important step one can take.
9+
10+
Change Credits are implemented as follows:
11+
12+
`Name` | CC | \{Good Generator\} \{Index\}
13+
: The token name assigned to each set of Change Credits always begins with "CC". This is then followed by the name of the Good Generator and an index. The purpose of the index is to differentiate between different projects from one Good Generator.
14+
15+
`Symbol` | CC-\{ProjectID\}
16+
: The abbreviated token symbol begins "CC-IOU" and is followed by a project ID, where the project ID is composed of the unique ID assigned to the project's Good Generator followed by the project's index value.
17+
18+
`tokenURI`
19+
: The `tokenURI` sets the IPFS link to the metadata (defined below) with further details of the NFT. The Change Credit implementation includes the [`ERC721URIStorage`](https://docs.openzeppelin.com/contracts/5.x/api/token/erc721#ERC721URIStorage) extension so that each instance of token in the set can have its own unique metadata.
20+
21+
`Metadata`
22+
: Included here is the json schema for the metadata stored at the NFT's `tokenURI`. The first 4 properties are included to comply with the metadata structure set by NFT marketplaces and viewers such as [OpenSea](https://docs.opensea.io/docs/metadata-standards).
23+
```json
24+
{
25+
"description": "{A description, not exceeding 200 characters, of the work accomplished by the project}",
26+
"external_url": "{Unique Changescape URL}",
27+
"image": "{link to Hypercert Image URL}",
28+
"name": "CC | {Good Generator} {Index} {Serial #}",
29+
"attributes": [
30+
{
31+
"display_type": "number",
32+
"trait_type": "Contribution",
33+
"value": "{Total value of the contribution behind the Change Credit}"
34+
},
35+
{
36+
"display_type": "number",
37+
"trait_type": "Retirement",
38+
"value": "{Portion of the Change Credit that has already been retired by the Good Generator}"
39+
},
40+
{
41+
"display_type": "number",
42+
"trait_type": "Redemption",
43+
"value": "{Portion of the Change Credit that has already been redeemed by the holder}"
44+
}]
45+
}
46+
```

data-schemas/hypercerts.md

+11-11
Original file line numberDiff line numberDiff line change
@@ -7,39 +7,39 @@ Change Code leverages the Hypercerts protocol, itself developed from the ERC1155
77

88
## ERC1155 Fields
99

10-
Name | `CC Hypercert | {Good Generator} {Index}`
10+
`Name` | CC Hypercert | \{Good Generator\} \{Index\}
1111
: The Hypercert name mirrors the name used for a project's IOUs. The concept of an index is again used to support single organizations working across multiple initiatives.
1212

13-
Description
13+
`Description`
1414
: A description, not exceeding 200 characters, of the work to be done by the project.
1515

16-
Image
16+
`Image`
1717
: While the image field is required by the Hypercerts standard, we do not believe a single immutable image to be valuable for the purposes of serious impact validation. To satisfy this requirement, the Changescape backend will automatically generate and provide an image to satisfy the requirement.
1818

1919
## Hypercert Dimensions
2020

21-
work_scope
21+
`work_scope`
2222
: A list of tasks to be done by the project. In development parlance this is a list of *outputs*--e.g. # of solar panels installed, kilos of supplies, $ of direct aid, # of vaccines.
2323

24-
work_timeframe
24+
`work_timeframe`
2525
: The time period during which the project work is to be carried out. In line with the Hypercerts standard, this is represented as an ordered pair of UTC timestamps.
2626

27-
impact_scope
27+
`impact_scope`
2828
: Inside the Changescape `impact scope` is used to refer thematically to projects by category. For example, the [UN Sustainable Development Goals (SDGs)](https://sdgs.un.org/goals) or the [Ecological Benefits Framework (EBF)](https://ebfcommons.org/lex-icons/). Because the Hypercerts data is only aspirational, it would be premature to immutably publish indicators, which are instead reserved to be published only once verified inside Change Credits.
2929

30-
impact_timeframe
30+
`impact_timeframe`
3131
: The time period during which impact *outcomes* will be measured and calculated. For Hypercerts inside the Changescape, the start time is set equal to the start time for the `work_timeframe` while the end time is set for the end of the work period plus five (5) years. Again this data is represented as an ordered pair of UTC timestamps.
3232

33-
contributors
33+
`contributors`
3434
: A list of participants (organizations) that are contributing to the work done in the project. Each element in the list is composed of an on-chain address, a name, and a weight. The purpose of the weight is to signal relative contribution and may optionally be used to weight distributions among contributors.
3535

36-
rights
36+
`rights`
3737
: As of version 1.0 of the Hypercerts standard, this value can only be set to *public display*. As it is a required field, Change Code simply applies the default value but does not otherwise use this information.
3838

39-
hidden_properties
39+
`hidden_properties`
4040
: In development
4141

42-
## Example Hypercert Dimensions
42+
## Sample Hypercert Dimensions
4343

4444
```json
4545
"hypercert": {

data-schemas/ious.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,18 @@ order: -2
55

66
IOUs are implemented as ERC20 (fungible) tokens, to maximize both compatibility with existing tools and to streamline the transferability of IOUs before they are redeemed for Change Credits.
77

8-
To define a batch of IOUs inside the Changescape, the following specifications are made:
8+
IOUs are minted according the the below specification:
99

10-
Name | `CC IOU | {Good Generator} {Index}`
10+
`Token Name` | CC IOU | \{Good Generator\} \{Index\}
1111
: The token name assigned to each batch of IOUs always begins with "CC IOU". This is then followed by the name of the Good Generator and an index. The purpose of the index is to differentiate between different projects from one Good Generator.
1212

13-
Symbol | `CC-IOU-{ProjectID}`
13+
`Token Symbol` | CC-IOU-\{ProjectID\}
1414
: The abbreviated token symbol begins "CC-IOU" and is followed by a project ID, where the project ID is composed of the unique ID assigned to the project's Good Generator followed by the project's index value.
1515

16-
Total Supply
17-
: The supply of a project's IOUs will vary over its lifecycle. Initially, Change Code will mint a target number of tokens as specified in the project's minted hypercert. As IOUs are redeemed for Change Credits, the IOUs returned to the TBA are subsequently burned.
16+
`Total Supply`
17+
: The supply of a project's IOUs will vary over its lifecycle. Initially, a target number of tokens as specified in the project's hypercert will be minted and held in the project's token bound account. As IOUs are redeemed for Change Credits, the IOUs returned to the TBA are subsequently burned.
1818

19-
Supply Cap
19+
`Supply Cap`
2020
: IOUs are implemented including the `ERC20Capped` extension. As such, the Good Generator can specify that the supply of all IOUs is capped at the initial supply set in their target.
2121

2222
For more information regarding the ERC20 token standard, we refer you to documentation maintained by OpenZeppelin [here](https://docs.openzeppelin.com/contracts/5.x/api/token/erc20).

mutual-money/currency-minting.md

Whitespace-only changes.

mutual-money/index.yml

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
icon: container
2+
expanded: true
3+
order: -4
4+
label: Mutual Money

0 commit comments

Comments
 (0)