Skip to content

Commit

Permalink
Merge pull request #6 from euler-xyz/refactor
Browse files Browse the repository at this point in the history
add specification, update files to conform, add products.json, verifi…
  • Loading branch information
conwayconstar authored Sep 12, 2024
2 parents 724c415 + 3956483 commit 36fea35
Show file tree
Hide file tree
Showing 8 changed files with 323 additions and 54 deletions.
25 changes: 25 additions & 0 deletions .github/workflows/verify.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Verify schema

on:
pull_request:
branches:
- master

jobs:
verify:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: 18

- name: Install dependencies
run: npm install

- name: Run verify.js
run: node verify.js
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
/node_modules
/package-lock.json
.idea
76 changes: 48 additions & 28 deletions 1/entities.json
Original file line number Diff line number Diff line change
@@ -1,30 +1,50 @@
{
"0xcAD001c30E96765aC90307669d578219D4fb1DCe": {
"name": "Euler DAO Multisig",
"logo": "euler.svg",
"description": "The Euler DAO is the organisation responsible for the creation of the Euler lending/borrowing platform."
},
"0x184d597Be309e11650ca6c935B483DcC05551578": {
"name": "Re7 Labs Euler Multisig",
"logo": "re7labs.png",
"description": "Re7 Labs is the innovation arm of digital asset investment firm Re7 Capital, taking the practical experience of DeFi risk management to on-chain vaults."
},
"0x05591B3aFE2239Ff3669BCfD715815d2ba8A24a4": {
"name": "Apostro",
"logo": "apostro.png"
},
"0xf726311F85D45a7fECfFbC94bD8508a0A39958c6": {
"name": "Apostro Multisig",
"logo": "apostro.png"
},
"0x2e571f334fe06A6a2741dd0E4cb5Bc7C1F8Af808": {
"name": "Alterscope Multisig",
"logo": "alterscope_wb.svg",
"description": "Alterscope provides the platform for processing and modelling risk in real-time across chains, protocols, and liquidity pools. Whether you're a protocol or an investment firm, we've got you covered."
},
"0x66301F68E8EdE19C0EcD1AB0b3Ee6FdE9cb143Fb": {
"name": "Dinero Protocol Timelock Controller",
"logo": "dinero.svg",
"description":"The yield baseplate of Ethereum. Providing a suite of products that scale yield for protocols and users."
}
"euler-dao": {
"name": "Euler DAO Multisig",
"logo": "euler.svg",
"description": "The Euler DAO is the organisation responsible for the creation of the Euler lending/borrowing platform.",
"url": "https://euler.finance/",
"addresses": {
"0xcAD001c30E96765aC90307669d578219D4fb1DCe": "Euler DAO Multisig"
},
"social": {
"twitter": "eulerfinance",
"youtube": "EulerFinance",
"discord": "https://discord.euler.finance/",
"telegram": "eulerfinance_official",
"github": "euler-xyz"
}
},
"re7-labs": {
"name": "Re7 Labs",
"logo": "re7labs.png",
"description": "Re7 Labs is the innovation arm of digital asset investment firm Re7 Capital, taking the practical experience of DeFi risk management to on-chain vaults.",
"addresses": {
"0x184d597Be309e11650ca6c935B483DcC05551578": "Re7 Labs Euler Multisig"
}
},
"apostro": {
"name": "Apostro",
"logo": "apostro.png",
"addresses": {
"0x05591B3aFE2239Ff3669BCfD715815d2ba8A24a4": "Apostro Timelock",
"0xf726311F85D45a7fECfFbC94bD8508a0A39958c6": "Apostro Multisig"
}
},
"alterscope": {
"name": "Alterscope",
"logo": "alterscope_wb.svg",
"description": "Alterscope provides the platform for processing and modelling risk in real-time across chains, protocols, and liquidity pools. Whether you're a protocol or an investment firm, we've got you covered.",
"addresses": {
"0x2e571f334fe06A6a2741dd0E4cb5Bc7C1F8Af808": "Alterscope Multisig"
}
},
"dinero": {
"name": "Dinero",
"logo": "dinero.svg",
"description": "The yield baseplate of Ethereum. Providing a suite of products that scale yield for protocols and users.",
"addresses": {
"0x66301F68E8EdE19C0EcD1AB0b3Ee6FdE9cb143Fb": "Dinero Protocol Timelock Controller"
}
}
}
45 changes: 45 additions & 0 deletions 1/products.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{
"euler-dao-base": {
"name": "EulerDAO Base Vaults",
"description": "A cluster of basic, conservative vaults governed by the EulerDAO, originally for the purpose of hosting a capture-the-flag contest.",
"entity": "euler-dao",
"url": "https://gov.euler.finance/proposal/?id=0x01c571faf0b69cd7714d154013c7a8f8081c7287900c95ce709c9f7c8890bbbc",
"vaults": [
"0xD8b27CF359b7D15710a5BE299AF6e7Bf904984C2",
"0xbC4B4AC47582c3E38Ce5940B80Da65401F4628f1",
"0x797DD80692c3b2dAdabCe8e30C07fDE5307D48a9",
"0x313603FA690301b0CaeEf8069c065862f9162162"
]
},
"re7-labs-basic": {
"name": "Re7 Labs Basic Cluster",
"entity": "re7-labs",
"vaults": [
"0x67e4e4e73947257Ca62D118E0FBC56D06f11d96F",
"0xc41252D4F61D25658cD83Cc39942c49776E1B0C5",
"0xeE8693c11acE62839bB96beaE86696c1e78Aba3F",
"0x27052EA5E307B6e8566D9eE560231C6742a6c03c",
"0x82c710B9B225B43C0c90f097DB31f5f10a7F86FA",
"0x631D8E808f2c4177a8147Eaa39a4F57C47634dE8",
"0xa992d3777282c44ee980E9B0ca9Bd0c0E4f737aF",
"0xc40A68b5E536632b6572283F996B830B34607d01"
]
},
"apostro-lido-ecosystem": {
"name": "Apostro Lido Ecosystem",
"entity": "apostro",
"vaults": [
"0x315F93a074D0948E4D068e98a34092750ea8A38C",
"0xf9a23b059858CdD0e3ED0DDE89864BB82B88aa19"
]
},
"alterscope-genesis": {
"name": "Alterscope Genesis",
"entity": "alterscope",
"vaults": [
"0x3f29460AaCdE3d6Ae0156aB1f8685bd21Eb37074",
"0x0E88544bf60bbc748FA542B79e9aE3Cf18Db7F75",
"0x1926f5Bb9ed68BA83255fB219828a90Bd9F40771"
]
}
}
52 changes: 26 additions & 26 deletions 1/vaults.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,91 +2,91 @@
"0xD8b27CF359b7D15710a5BE299AF6e7Bf904984C2": {
"name": "EulerDAO Base WETH",
"description": "A conservative WETH vault collateralized by other vaults in the EulerDAO cluster and escrow vaults.",
"entity": "0xcAD001c30E96765aC90307669d578219D4fb1DCe"
"entity": "euler-dao"
},
"0xbC4B4AC47582c3E38Ce5940B80Da65401F4628f1": {
"name": "EulerDAO Base wstETH",
"description": "A conservative wstETH vault collateralized by other vaults in the EulerDAO cluster and escrow vaults.",
"entity": "0xcAD001c30E96765aC90307669d578219D4fb1DCe"
"entity": "euler-dao"
},
"0x797DD80692c3b2dAdabCe8e30C07fDE5307D48a9": {
"name": "EulerDAO Base USDC",
"description": "A conservative USDC vault collateralized by other vaults in the EulerDAO cluster and escrow vaults.",
"entity": "0xcAD001c30E96765aC90307669d578219D4fb1DCe"
"entity": "euler-dao"
},
"0x313603FA690301b0CaeEf8069c065862f9162162": {
"name": "EulerDAO Base USDT",
"description": "A conservative USDT vault collateralized by other vaults in the EulerDAO cluster and escrow vaults.",
"entity": "0xcAD001c30E96765aC90307669d578219D4fb1DCe"
"entity": "euler-dao"
},
"0x67e4e4e73947257ca62d118e0fbc56d06f11d96f": {
"0x67e4e4e73947257Ca62D118E0FBC56D06f11d96F": {
"name": "Re7 Labs Basic WETH",
"description": "A WETH vault collateralized by other vaults in the Re7 Labs Basic Cluster.",
"entity": "0x184d597Be309e11650ca6c935B483DcC05551578"
"entity": "re7-labs"
},
"0xc41252d4f61d25658cd83cc39942c49776e1b0c5": {
"0xc41252D4F61D25658cD83Cc39942c49776E1B0C5": {
"name": "Re7 Labs Basic wstETH",
"description": "A wstETH vault collateralized by other vaults in the Re7 Labs Basic Cluster.",
"entity": "0x184d597Be309e11650ca6c935B483DcC05551578"
"entity": "re7-labs"
},
"0xee8693c11ace62839bb96beae86696c1e78aba3f": {
"0xeE8693c11acE62839bB96beaE86696c1e78Aba3F": {
"name": "Re7 Labs Basic tBTC",
"description": "A tBTC vault collateralized by other vaults in the Re7 Labs Basic Cluster.",
"entity": "0x184d597Be309e11650ca6c935B483DcC05551578"
"entity": "re7-labs"
},
"0x27052ea5e307b6e8566d9ee560231c6742a6c03c": {
"0x27052EA5E307B6e8566D9eE560231C6742a6c03c": {
"name": "Re7 Labs Basic USDC",
"description": "A USDC vault collateralized by other vaults in the Re7 Labs Basic Cluster.",
"entity": "0x184d597Be309e11650ca6c935B483DcC05551578"
"entity": "re7-labs"
},
"0x82c710b9b225b43c0c90f097db31f5f10a7f86fa": {
"0x82c710B9B225B43C0c90f097DB31f5f10a7F86FA": {
"name": "Re7 Labs Renzo ezETH",
"description": "A ezETH vault collateralized by other vaults in the Re7 Labs Renzo Cluster.",
"entity": "0x184d597Be309e11650ca6c935B483DcC05551578"
"entity": "re7-labs"
},
"0x631d8e808f2c4177a8147eaa39a4f57c47634de8": {
"0x631D8E808f2c4177a8147Eaa39a4F57C47634dE8": {
"name": "Re7 Labs Renzo pzETH",
"description": "A pzETH vault collateralized by other vaults in the Re7 Labs Renzo Cluster.",
"entity": "0x184d597Be309e11650ca6c935B483DcC05551578"
"entity": "re7-labs"
},
"0xa992d3777282c44ee980e9b0ca9bd0c0e4f737af": {
"0xa992d3777282c44ee980E9B0ca9Bd0c0E4f737aF": {
"name": "Re7 Labs Renzo WETH",
"description": "A WETH vault collateralized by other vaults in the Re7 Labs Renzo Cluster.",
"entity": "0x184d597Be309e11650ca6c935B483DcC05551578"
"entity": "re7-labs"
},
"0xc40a68b5e536632b6572283f996b830b34607d01": {
"0xc40A68b5E536632b6572283F996B830B34607d01": {
"name": "Re7 Labs Renzo wstETH",
"description": "A wstETH vault collateralized by other vaults in the Re7 Labs Renzo Cluster.",
"entity": "0x184d597Be309e11650ca6c935B483DcC05551578"
"entity": "re7-labs"
},
"0x315F93a074D0948E4D068e98a34092750ea8A38C": {
"name": "Apostro Lido Ecosystem USDC",
"description": "Part of the Lido ecosystem cluster. This vault offers A-grade safety with the lowest insolvency risk. Risk manager: apostro.xyz.",
"entity": "0x05591B3aFE2239Ff3669BCfD715815d2ba8A24a4"
"entity": "apostro"
},
"0xf9a23b059858CdD0e3ED0DDE89864BB82B88aa19": {
"name": "Apostro Lido Ecosystem WETH",
"description": "Part of the Lido ecosystem cluster. This vault offers A-grade safety with the lowest insolvency risk. Risk manager: apostro.xyz.",
"entity": "0x05591B3aFE2239Ff3669BCfD715815d2ba8A24a4"
"entity": "apostro"
},
"0x3f29460AaCdE3d6Ae0156aB1f8685bd21Eb37074": {
"name": "Alterscope USDC Genesis",
"description": "Part of the Alterscope Genesis Cluster, offering safety and low risk through collateralized vaults—powered by Alterscope’s expertise.",
"entity": "0x2e571f334fe06A6a2741dd0E4cb5Bc7C1F8Af808"
"entity": "alterscope"
},
"0x0E88544bf60bbc748FA542B79e9aE3Cf18Db7F75": {
"name": "Alterscope WETH Genesis",
"description": "Part of the Alterscope Genesis Cluster, offering safety and low risk through collateralized vaults—powered by Alterscope’s expertise.",
"entity": "0x2e571f334fe06A6a2741dd0E4cb5Bc7C1F8Af808"
"entity": "alterscope"
},
"0x1926f5Bb9ed68BA83255fB219828a90Bd9F40771": {
"name": "Alterscope wstETH Genesis",
"description": "Part of the Alterscope Genesis Cluster, offering safety and low risk through collateralized vaults—powered by Alterscope’s expertise.",
"entity": "0x2e571f334fe06A6a2741dd0E4cb5Bc7C1F8Af808"
"entity": "alterscope"
},
"0xBe4089616039eC3F7361B7058d92a90246ee86e0": {
"name": "Dinero Protocol WETH",
"description": "A WETH vault collateralized by apxETH by Dinero Protocol.",
"entity": "0x66301F68E8EdE19C0EcD1AB0b3Ee6FdE9cb143Fb"
"entity": "dinero"
}
}
59 changes: 59 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Euler Labels

This repository contains a database of metadata about [Euler Vault Kit](https://docs.euler.finance/euler-vault-kit-white-paper/) vaults and related entities. This metadata is used to augment the [Euler dApp](https://app.euler.finance) UI by showing human-readable identifiers alongside vaults, and providing the information necessary to render custom pages for governors and packaged lending products.

If you have created a vault and wish to have it included in this database, please read the rest of this file, fork the repo, and create a pull request.

## Schema

Each network has a directory, named after its numeric `chainId`. For example, the Ethereum mainnet data is stored in directory `1/`.

Inside each network's directory are JSON files that correspond to the following schemas. All keys are optional unless indicated as required.

### `entities.json`

Each entry in this object corresponds to a company, organisation, or other entity. Each key is an **entity ID**, which is a unique string per entity. It should be in "URL slug" format (lowercase ASCII letters or numbers, separated by `-` characters).

* `name`: Full, official name of the entity. (Required)
* `logo`: The filename of a logo stored in the `logo/` directory.
* `description`: Long-form description of the entity, displayed on the entity's page.
* `url`: Website where users can learn more about the entity.
* `addresses`: An object that indicates addresses controlled by this entity. Each key is a checksumed hex address, and each value is a human-meaningful description of what this address represents.
* `social`: An object that indicates social media handles controlled by this entity. Each key is a name of a social media system, and each value is the entity-specific username/handle.

### `vaults.json`

Each entry in this object represents a vault. Each key is the 20-byte ethereum address, in checksumed hex format. Each vault has the following keys:

* `name`: Name of the vault for display purposes, for example in table views. Maximum 40 characters. (Required)
* `description`: Long-form description of the vault displayed on the vault's dedicated page.
* `entity`: An entity ID that refers to the organisation responsible for governing and/or creating this vault, or a list of entity IDs if the vault is joint-managed.

### `products.json`

Each entry in this object corresponds to a lending product, which is primarily a grouping of vaults under a particular branding umbrella. Each key is the **product ID**, which is a unique string per product. It should be in "URL slug" format (lowercase ASCII letters or numbers, separated by `-` characters).

* `name`: Official name of the product. (Required)
* `description`: Long-form description of the product, displayed on the product's page.
* `entity`: An entity ID that refers to the organisation responsible for governing and/or creating this vault, or a list of entity IDs if the vault is joint-managed.
* `url`: Website where users can learn more about the product.
* `logo`: The filename of a logo stored in the `logo/` directory.
* `vaults`: An array of the vault addresses (in checksumed hex format) that comprise the product. Each vault must exist in the `vaults.json` file.


## Logos

Logos exist in the `logo/` directory, and should satisfy the following properties:

* SVG format
* Square-shaped



## Verification

Before making your pull request, please ensure that `verify.js` succeeds:

apt install -y npm jq
npm i
node verify.js
6 changes: 6 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"dependencies": {
"ethers": "^6.13.2",
"image-size": "^1.1.1"
}
}
Loading

0 comments on commit 36fea35

Please sign in to comment.