Skip to content

Commit

Permalink
feat: List addresses from mangrove-deployments and context-addresses …
Browse files Browse the repository at this point in the history
…(WIP)
  • Loading branch information
espendk committed Dec 20, 2023
1 parent 7085424 commit 15cc7d2
Show file tree
Hide file tree
Showing 4 changed files with 181 additions and 143 deletions.
Original file line number Diff line number Diff line change
@@ -1,144 +1,79 @@
<!-- GENERATED DO NOT EDIT - see addresses-to-md.js -->
## Polygon Mainnet

### Mangrove
## Core contract addresses

```txt
0x9a58de548212F65c5406e46563372Ee6DcC0aC43
```
| Contract | Version | Polygon Testnet - Mumbai |
| --- | :---: | --- |
| Mangrove | 2.0.1 | `0x80cd6Ef14c23dD3957FD5629141a9d7028557c39` |
| MgvOracle | 2.0.1 | `0xC0fB136768e4b7725d674B8Bcd366A5dc2b5F976` |
| MgvReader | 2.0.1 | `0x26d24Dd4aFcB9D1cD30baf804Fa22aFa643327CD` |

### MgvOracle

```txt
0x692c15efcA8AABCda9511641F6ed9702d3f4cfb4
```
## Strats contract addresses

### MgvReader
| Contract | Version | Polygon Testnet - Mumbai |
| --- | :---: | --- |
| AaveKandelSeeder | 1.0.0 | `0xC56CEc2A5912B49AAacEc0F391471Aeb4eb8D9D2` |
| AavePooledRouter | 1.0.0 | `0xF147995331B1511D5fA7c196fA3466d647142C5e` |
| KandelLib | 1.0.0 | `0xD68d9707895543244C7C48F0821e445826E12cd1` |
| KandelSeeder | 1.0.0 | `0x68A1778E4D08D8f6De35323a9040791CE8E9EF4C` |
| MangroveOrder-Router | 1.0.0 | `0x983d34A6163F00D5DfDCC3f21ff70cECa2a8643D` |
| MangroveOrder | 1.0.0 | `0x6469064C68B1Bd06861dabD20dF835Fa71Dff695` |

```txt
0x07e5a2DCf82D7b5b8ab684d9b40842E174e49908
```

### MgvCleaner
## Token addresses

```txt
0xa52ba5E5199bE4fD363B163bDe567606589eD2E2
```
### Arbitrum One

### MangroveOrder
| Symbol | Mangrove ID | Address | Comment |
| --- | --- | --- | --- |
| DAI | `DAI.e` | `0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1` | DAI bridged from Ethereum using Arbitrum's canonical bridge. |
| USDC | `USDC.` | `0xaf88d065e77c8cC2239327C5EDb3A432268e5831` | Native USDC by Circle. |
| | `USDC.e` | `0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8` | USDC bridged from Ethereum using Arbitrum's canonical bridge. |
| USDT | `USDT.e` | `0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9` | USDT bridged from Ethereum using Arbitrum's canonical bridge. |
| WETH | `WETH.e` | `0x82aF49447D8a07e3bd95BD0d56f35241523fBab1` | WETH bridged from Ethereum using Arbitrum's canonical bridge. |

```txt
0xcf4ec117bc38d7D0fE8678B511Ff6a212c76d60B
```

### MangroveOrder-Router
### Ethereum Mainnet

```txt
0x6b08Cc8290302CB4659D7cEDa7016BEa20852D59
```
| Symbol | Mangrove ID | Address | Comment |
| --- | --- | --- | --- |
| WETH | `WETH.` | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | |

### KandelSeeder

```txt
0xA48B36E01919472fcdA56CAD574433BeCB7A87C5
```
### Goerli Testnet

### AaveKandelSeeder
| Symbol | Mangrove ID | Address | Comment |
| --- | --- | --- | --- |
| DAI | `DAI.` | `0xD77b79BE3e85351fF0cbe78f1B58cf8d1064047C` | Test DAI on Goerli. |
| USDC | `USDC.` | `0x3a034FE373B6304f98b7A24A3F21C958946d4075` | Unverified test USDC on Goerli. |
| WETH | `WETH.` | `0x695364ffAA20F205e337f9e6226e5e22525838d9` | Unverified test WETH on Goerli. |

```txt
0xded8E2fac702646dafE51d496d1217A837b0a424
```

### AavePooledRouter
### Polygon Mainnet

```txt
0xa92737e6917d4d76Fed72027Ccbf1E06094d65Bd
```
| Symbol | Mangrove ID | Address | Comment |
| --- | --- | --- | --- |
| DAI | `DAI.e` | `0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063` | Bridged DAI from Ethereum. Likely bridged by Polygon's FxPortal/Mapper. |
| PxMATIC | `PxMATIC.` | `0xba6fBacEeeE55D2d657Eb26023C64002e23Af5E8` | Test MATIC deployed by Mangrove DAO |
| PxUSDC | `PxUSDC.` | `0xB70041dC246412E0DCE34bd788062E969276E737` | Test USDC deployed by Mangrove DAO |
| USDC | `USDC.` | `0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359` | Native USDC by Circle. |
| | `USDC.e` | `0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174` | Bridged USDC from Ethereum. Not issued by Circle. Likely bridged by Polygon's FxPortal/Mapper. |
| USDT | `USDT.e` | `0xc2132D05D31c914a87C6611C10748AEb04B58e8F` | Bridged USDT from Ethereum. Not issued by Tether. Likely bridged by Polygon's FxPortal/Mapper. |
| WBTC | `WBTC.e` | `0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6` | Bridged WBTC from Ethereum. Likely bridged by Polygon's FxPortal/Mapper. |
| WETH | `WETH.e` | `0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619` | Native ETH bridged from Ethereum. Likely bridged by Polygon's FxPortal/Mapper. |

### ERC20 addresses

* WETH: `0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619`
* USDC: `0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174`
* DAI: `0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063`
* PxUSDC: `0xB70041dC246412E0DCE34bd788062E969276E737`
* PxMATIC: `0xba6fBacEeeE55D2d657Eb26023C64002e23Af5E8`
### Polygon Testnet - Mumbai

## Polygon Testnet - Mumbai

### Mangrove

```txt
0xd1805f6Fe12aFF69D4264aE3e49ef320895e2D8b
```

### MgvReader

```txt
0x82dA8C07b1E17eBDE8853405E11D89b410ec58E6
```

### MgvCleaner

```txt
0x2A36f6293bB1F35c84655DB5e6E34604EFCf739d
```

### MgvOracle

```txt
0x8F8ff080cA0554b02BFC36A5aD465954416271eF
```

### KandelSeeder

```txt
0xb4A9Ac8Ae5b405193271A0e62682c9be47d578B9
```

### AaveKandelSeeder

```txt
0x0295a7f3093Fb656d982B6E2c52B07699aDA9594
```

### MangroveOrder

```txt
0x756fAc8bb6fb96A3b005ad7b3337052aE69aAf65
```

### MangroveOrder-Router

```txt
0xADdF5388C695e3F23A2509AA73677ED4a219f834
```

### AavePooledRouter

```txt
0xB3ba79DB150E8650efa5c534EEaf6404a25Fdf00
```

### WMATIC

```txt
0x193163EeFfc795F9d573b171aB12cCDdE10392e8
```

### WBTC

```txt
0xf402f6197d979F0A4cba61596921a3d762520570
```

### USDT

```txt
0xe8099699aa4A79d89dBD20A63C50b7d35ED3CD9e
```

### ERC20 addresses

* WETH: `0xD087ff96281dcf722AEa82aCA57E8545EA9e6C96`
* USDC: `0xe9DcE89B076BA6107Bb64EF30678efec11939234`
* DAI: `0xF14f9596430931E177469715c591513308244e8F`
| Symbol | Mangrove ID | Address | Comment |
| --- | --- | --- | --- |
| CRV | `CRV.T/AAVEv3` | `0x2bbF1f48a678d2f7c291dc5F8fD04805D34F485f` | AAVE v3 testnet CRV |
| DAI | `DAI.T/AAVEv3` | `0xc8c0Cf9436F4862a8F60Ce680Ca5a9f0f99b5ded` | AAVE v3 testnet DAI |
| | `DAI.T/MGV` | `0x5b67e3fa6f8AF1ca80C78102B8c039a40B96689E` | Test DAI deployed by Mangrove DAO |
| USDC | `USDC.T/MGV` | `0xe9259C5B6936Ee6439654171AFd674b31a533985` | Test USDC deployed by Mangrove DAO |
| USDT | `USDT.T/MGV` | `0xe8099699aa4A79d89dBD20A63C50b7d35ED3CD9e` | Test USDT deployed by Mangrove DAO |
| WBTC | `WBTC.T/AAVEv3` | `0x2Fa2e7a6dEB7bb51B625336DBe1dA23511914a8A` | AAVE v3 testnet WBTC |
| | `WBTC.T/MGV` | `0xf402f6197d979F0A4cba61596921a3d762520570` | Test WBTC deployed by Mangrove DAO |
| WETH | `WETH.T/MGV` | `0x406bF0fcE108dD8864627EC6816AaFF8336f8231` | Test WETH deployed by Mangrove DAO |
| WMATIC | `WMATIC.T/MGV` | `0x193163EeFfc795F9d573b171aB12cCDdE10392e8` | Test WMATIC deployed by Mangrove DAO |
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@
"@docusaurus/module-type-aliases": "^2.0.0",
"@ethersproject/abi": "^5.4.7",
"@ethersproject/providers": "^5.4.7",
"@mangrovedao/context-addresses": "^1.0.0",
"@mangrovedao/mangrove-deployments": "^1.0.0",
"@nomicfoundation/hardhat-chai-matchers": "^1.0.0",
"@nomicfoundation/hardhat-network-helpers": "^1.0.0",
"@nomicfoundation/hardhat-toolbox": "^2.0.0",
Expand Down
112 changes: 91 additions & 21 deletions scripts/addresses-to-md.js
Original file line number Diff line number Diff line change
@@ -1,33 +1,103 @@
const fs = require('fs');
const { writeFileSync } = require('fs');
const { getAllErc20s } = require('@mangrovedao/context-addresses');
const { getCoreContractsVersionDeployments, getStratsContractsVersionDeployments } = require('@mangrovedao/mangrove-deployments');

const relevantERC20 = [ "WETH", "DAI", "USDC", "PxMATIC", "PxUSDC" ];
const chainNames = {
1: "Ethereum Mainnet",
5: "Goerli Testnet",
137: "Polygon Mainnet",
42161: "Arbitrum One",
80001: "Polygon Testnet - Mumbai",
};

const networks = [
{ id: "matic", name: "Polygon Mainnet" },
{ id: "maticmum", name: "Polygon Testnet - Mumbai" },
];
function contractsVersionDeploymentsToTable(contractsVersionDeployments) {
// contract -> versionDeployments
const contracts = {};

const chainIds = new Set();
for (const versionDeployments of contractsVersionDeployments) {
contracts[versionDeployments.deploymentName ?? versionDeployments.contractName] = versionDeployments;
for (const [chainId, addresses] of Object.entries(versionDeployments.networkAddresses)) {
if (!chainNames[chainId]) {
throw new Error(`Chain ID ${chainId} not found in chainNames`);
}
chainIds.add(chainId);
}
}

let headerSeparator = "| --- | :---: ";
let md = `| Contract | Version `;
for (const chainId of chainIds) {
md += `| ${chainNames[chainId]} `;
headerSeparator += `| --- `;
}
md += `|\n`;
md += headerSeparator + `|\n`;
for (const [contractName, versionDeployments] of Object.entries(contracts)) {
md += `| ${contractName} | ${versionDeployments.version} `;
for (const chainId of chainIds) {
const addresses = versionDeployments.networkAddresses[chainId];
if (addresses) {
md += `| \`${addresses.primaryAddress}\` `;
} else {
md += `| `;
}
}
md += `|`;
md += "\n";
}

return md;
}

const main = async () => {
let md = "<!-- GENERATED DO NOT EDIT - see addresses-to-md.js -->";

networks.forEach(network => {
const deployed = require(`@mangrovedao/mangrove-core/addresses/deployed/${network.id}.json`);
const context = require(`@mangrovedao/mangrove-core/addresses/context/${network.id}.json`);
md += "\n\n## Core contract addresses\n\n";
md += contractsVersionDeploymentsToTable(getCoreContractsVersionDeployments());

md += "\n\n## Strats contract addresses\n\n";
md += contractsVersionDeploymentsToTable(getStratsContractsVersionDeployments());

md += "\n\n## Token addresses";

// chain name -> [symbol -> [instanceId -> Erc20NetworkInstance]]
const tokensPerNetwork = {};
for (const [tokenId, erc20] of Object.entries(getAllErc20s())) {
for (const [chainId, erc20Instances] of Object.entries(erc20.networkInstances)) {
let tokens = tokensPerNetwork[chainNames[chainId]];
if (!tokens) {
tokensPerNetwork[chainNames[chainId]] = tokens = {};
}
let instances = tokens[erc20.symbol];
if (!instances) {
tokens[erc20.symbol] = instances = {};
}

let mdDeployed = `\n## ${network.name}\n\n`;

deployed.filter(x => !relevantERC20.includes(x.name)).forEach(nameAndAddress => {
mdDeployed = `${mdDeployed}### ${nameAndAddress.name}\n\n\`\`\`txt\n${nameAndAddress.address}\n\`\`\`\n\n`;
});
for (const [instanceId, erc20Instance] of Object.entries(erc20Instances)) {
instances[instanceId] = erc20Instance;
}
}
}

let mdERC20 = `### ERC20 addresses\n\n`;
context.concat(deployed).filter(x => relevantERC20.includes(x.name)).forEach(nameAndAddress => {
mdERC20 = `${mdERC20}* ${nameAndAddress.name}: \`${nameAndAddress.address}\`\n`;
});
md = md + mdDeployed + mdERC20;
});
for (const chainName of Object.keys(tokensPerNetwork).sort()) {
const tokens = tokensPerNetwork[chainName];
md += `\n\n### ${chainName}\n\n`;

fs.writeFileSync("docs/contracts/technical-references/_contract-addresses-raw.md",md);
md += `| Symbol | Mangrove ID | Address | Comment |\n`;
md += `| --- | --- | --- | --- |\n`;
for (const symbol of Object.keys(tokens).sort()) {
const instances = tokens[symbol];
let first = true;
for (const instanceId of Object.keys(instances).sort()) {
const erc20Instance = instances[instanceId];
md += `| ${first ? symbol : ""} | \`${instanceId}\` | \`${erc20Instance.address}\` | ${erc20Instance.comment ?? ""} |\n`;
first = false;
}
}
}

writeFileSync("docs/developers/contracts/technical-references/_contract-addresses-raw.md",md);

}

Expand Down
31 changes: 31 additions & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2859,6 +2859,15 @@ __metadata:
languageName: node
linkType: hard

"@mangrovedao/context-addresses@npm:^1.0.0":
version: 1.0.0
resolution: "@mangrovedao/context-addresses@npm:1.0.0"
dependencies:
semver: ^7.5.4
checksum: 5936896f7da364458b38b7281f618334fd4d5b09a9df80a56993fddd2d106774d3f47e66401479275afbf18464d34c72642c0c46a513c8790cabe2bb24bba89a
languageName: node
linkType: hard

"@mangrovedao/mangrove-core@npm:1.5.4":
version: 1.5.4
resolution: "@mangrovedao/mangrove-core@npm:1.5.4"
Expand All @@ -2873,6 +2882,15 @@ __metadata:
languageName: node
linkType: hard

"@mangrovedao/mangrove-deployments@npm:^1.0.0":
version: 1.0.0
resolution: "@mangrovedao/mangrove-deployments@npm:1.0.0"
dependencies:
semver: ^7.5.4
checksum: f14ee79993b4efb9d7b3aea00f858d67d1eaf765f4ef9cf3faa8662a98772c038fcff81b2c0f6631b0785d39cfcf055cb1c02ae0f9c887729a1652f205464866
languageName: node
linkType: hard

"@mangrovedao/mangrove-strats@npm:0.0.2-2":
version: 0.0.2-2
resolution: "@mangrovedao/mangrove-strats@npm:0.0.2-2"
Expand Down Expand Up @@ -11832,7 +11850,9 @@ __metadata:
"@docusaurus/theme-mermaid": ^2.2.0
"@ethersproject/abi": ^5.4.7
"@ethersproject/providers": ^5.4.7
"@mangrovedao/context-addresses": ^1.0.0
"@mangrovedao/mangrove-core": 2.0.0-3
"@mangrovedao/mangrove-deployments": ^1.0.0
"@mangrovedao/mangrove-strats": 0.0.2-2
"@mangrovedao/mangrove.js": ^1.4.0
"@mdx-js/react": ^1.6.22
Expand Down Expand Up @@ -15187,6 +15207,17 @@ __metadata:
languageName: node
linkType: hard

"semver@npm:^7.5.4":
version: 7.5.4
resolution: "semver@npm:7.5.4"
dependencies:
lru-cache: ^6.0.0
bin:
semver: bin/semver.js
checksum: 12d8ad952fa353b0995bf180cdac205a4068b759a140e5d3c608317098b3575ac2f1e09182206bf2eb26120e1c0ed8fb92c48c592f6099680de56bb071423ca3
languageName: node
linkType: hard

"send@npm:0.18.0":
version: 0.18.0
resolution: "send@npm:0.18.0"
Expand Down

0 comments on commit 15cc7d2

Please sign in to comment.