@curvefi/api 2.52.4 → 2.53.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +485 -2
- package/lib/constants/abis/circulating_supply.json +114 -0
- package/lib/constants/abis/voting_proposal.json +1086 -0
- package/lib/constants/aliases.js +3 -0
- package/lib/curve.js +8 -1
- package/lib/dao.d.ts +44 -0
- package/lib/dao.js +675 -0
- package/lib/external-api.d.ts +4 -10
- package/lib/external-api.js +33 -0
- package/lib/index.d.ts +53 -0
- package/lib/index.js +57 -0
- package/lib/interfaces.d.ts +66 -0
- package/lib/pools/PoolTemplate.d.ts +5 -1
- package/lib/pools/PoolTemplate.js +159 -59
- package/lib/utils.d.ts +1 -0
- package/lib/utils.js +26 -10
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1235,6 +1235,7 @@ import curve from "@curvefi/api";
|
|
|
1235
1235
|
// 0.000018613852077810 veCRV %
|
|
1236
1236
|
})()
|
|
1237
1237
|
```
|
|
1238
|
+
|
|
1238
1239
|
### Claim fees
|
|
1239
1240
|
```ts
|
|
1240
1241
|
import curve from "@curvefi/api";
|
|
@@ -1320,7 +1321,7 @@ import curve from "@curvefi/api";
|
|
|
1320
1321
|
// [ '0.3324', '0.8309' ]
|
|
1321
1322
|
await pool.userCrvApy();
|
|
1322
1323
|
// 0.3324
|
|
1323
|
-
await pool.
|
|
1324
|
+
await pool.userBoost();
|
|
1324
1325
|
// 1.0
|
|
1325
1326
|
|
|
1326
1327
|
await curve.boosting.createLock(10000, 365 * 4);
|
|
@@ -1646,6 +1647,36 @@ import curve from "@curvefi/api";
|
|
|
1646
1647
|
|
|
1647
1648
|
const poolAddress = await curve.stableNgFactory.getDeployedPlainPoolAddress(deployPoolTx);
|
|
1648
1649
|
// 0x0816bc9ced716008c88bb8940c297e9c9167755e
|
|
1650
|
+
|
|
1651
|
+
// Deploy gauge
|
|
1652
|
+
|
|
1653
|
+
const deployGaugeTx = await curve.stableNgFactory.deployGauge(poolAddress);
|
|
1654
|
+
// {
|
|
1655
|
+
// hash: '0x8bb0eb63430e6c522c30922a833fee263816ebc0f30367d53ecfe52e17b7c3a0',
|
|
1656
|
+
// type: 0,
|
|
1657
|
+
// accessList: null,
|
|
1658
|
+
// ...
|
|
1659
|
+
// }
|
|
1660
|
+
const gaugeAddress = await curve.stableNgFactory.getDeployedGaugeAddress(deployGaugeTx);
|
|
1661
|
+
// 0x1400e08f1d9f5bc90ae19acd4bf81beabc9e79de
|
|
1662
|
+
|
|
1663
|
+
//For sidechain
|
|
1664
|
+
const salt = '15'
|
|
1665
|
+
//salt - unical random string
|
|
1666
|
+
const deployGaugeSidechain = await curve.stableNgFactory.deployGaugeSidechain(poolAddress, salt);
|
|
1667
|
+
// ContractTransactionResponse {
|
|
1668
|
+
// provider: JsonRpcProvider {},
|
|
1669
|
+
// blockNumber: 17393463,
|
|
1670
|
+
// blockHash: '0x7f393493d7eb30b39aeef3118b51925426946eb83b72b18946f0da8c7bec40a0',
|
|
1671
|
+
// ...
|
|
1672
|
+
// }
|
|
1673
|
+
const gaugeSidechainAddress = await curve.stableNgFactory.getDeployedGaugeAddress(deployGaugeSidechain);
|
|
1674
|
+
// 0x60d3d7ebbc44dc810a743703184f062d00e6db7e
|
|
1675
|
+
//After that should be deployed mirror gauge on mainnet with same salt
|
|
1676
|
+
//const gaugeMirrorTx = await curve.stableNgFactory.deployGaugeMirror(sidechainId, salt);
|
|
1677
|
+
//const deployedGaugeMirrorAddress = await curve.stableNgFactory.getDeployedGaugeMirrorAddressByTx(gaugeMirrorTx);
|
|
1678
|
+
//OR
|
|
1679
|
+
//const deployedGaugeMirrorAddress = await curve.stableNgFactory.getDeployedGaugeMirrorAddress(sidechainId);
|
|
1649
1680
|
})()
|
|
1650
1681
|
```
|
|
1651
1682
|
|
|
@@ -1746,6 +1777,37 @@ import curve from "@curvefi/api";
|
|
|
1746
1777
|
// }
|
|
1747
1778
|
const poolAddress = await curve.factory.getDeployedMetaPoolAddress(deployPoolTx);
|
|
1748
1779
|
// 0xd3797c5da2cf2db453b995fb8f7a9199f4106ad9
|
|
1780
|
+
|
|
1781
|
+
// Deploy gauge
|
|
1782
|
+
|
|
1783
|
+
const deployGaugeTx = await curve.stableNgFactory.deployGauge(poolAddress);
|
|
1784
|
+
// {
|
|
1785
|
+
// hash: '0x37a53a08d6c71095de8c25bcd4a01b39beec35990f77c7b98355bd064511541f',
|
|
1786
|
+
// type: 0,
|
|
1787
|
+
// accessList: null,
|
|
1788
|
+
// ...
|
|
1789
|
+
// }
|
|
1790
|
+
|
|
1791
|
+
const gaugeAddress = await curve.stableNgFactory.getDeployedGaugeAddress(deployGaugeTx);
|
|
1792
|
+
// 0x326290a1b0004eee78fa6ed4f1d8f4b2523ab669
|
|
1793
|
+
|
|
1794
|
+
//For sidechain
|
|
1795
|
+
const salt = '15'
|
|
1796
|
+
//salt - unical random string
|
|
1797
|
+
const deployGaugeSidechain = await curve.stableNgFactory.deployGaugeSidechain(poolAddress, salt);
|
|
1798
|
+
// ContractTransactionResponse {
|
|
1799
|
+
// provider: JsonRpcProvider {},
|
|
1800
|
+
// blockNumber: 17393463,
|
|
1801
|
+
// blockHash: '0x7f393493d7eb30b39aeef3118b51925426946eb83b72b18946f0da8c7bec40a0',
|
|
1802
|
+
// ...
|
|
1803
|
+
// }
|
|
1804
|
+
const gaugeSidechainAddress = await curve.stableNgFactory.getDeployedGaugeAddress(deployGaugeSidechain);
|
|
1805
|
+
// 0x60d3d7ebbc44dc810a743703184f062d00e6db7e
|
|
1806
|
+
//After that should be deployed mirror gauge on mainnet with same salt
|
|
1807
|
+
//const gaugeMirrorTx = await curve.stableNgFactory.deployGaugeMirror(sidechainId, salt);
|
|
1808
|
+
//const deployedGaugeMirrorAddress = await curve.stableNgFactory.getDeployedGaugeMirrorAddressByTx(gaugeMirrorTx);
|
|
1809
|
+
//OR
|
|
1810
|
+
//const deployedGaugeMirrorAddress = await curve.stableNgFactory.getDeployedGaugeMirrorAddress(sidechainId);
|
|
1749
1811
|
```
|
|
1750
1812
|
|
|
1751
1813
|
### Deploy crypto pool
|
|
@@ -1900,4 +1962,425 @@ import curve from "@curvefi/api";
|
|
|
1900
1962
|
const underlyingBalances = await pool.stats.underlyingBalances();
|
|
1901
1963
|
// [ '30', '0.017647058823529412', '0.00111111' ]
|
|
1902
1964
|
})()
|
|
1903
|
-
```
|
|
1965
|
+
```
|
|
1966
|
+
|
|
1967
|
+
## DAO
|
|
1968
|
+
|
|
1969
|
+
### CRV lock & boosting
|
|
1970
|
+
```ts
|
|
1971
|
+
import curve from "@curvefi/api";
|
|
1972
|
+
|
|
1973
|
+
(async () => {
|
|
1974
|
+
await curve.init('JsonRpc', {}, { gasPrice: 0, maxFeePerGas: 0, maxPriorityFeePerGas: 0 });
|
|
1975
|
+
|
|
1976
|
+
await curve.dao.crvSupplyStats();
|
|
1977
|
+
// {
|
|
1978
|
+
// circulating: '937026089.656962436599201901',
|
|
1979
|
+
// locked: '777800358.954796137125672741',
|
|
1980
|
+
// total: '1714826448.611758573724874642',
|
|
1981
|
+
// veCrv: '651092771.450194341958195502',
|
|
1982
|
+
// averageLockTime: '3.3484'
|
|
1983
|
+
// }
|
|
1984
|
+
|
|
1985
|
+
await curve.dao.userCrv();
|
|
1986
|
+
// 1000000.0
|
|
1987
|
+
const lockAmount = 10000;
|
|
1988
|
+
await curve.dao.crvLockApprove(lockAmount);
|
|
1989
|
+
// [
|
|
1990
|
+
// '0x01a95eba620ce129262b3f11fc9e39d8473242c24579f4030a7d86aeeb5fbec6'
|
|
1991
|
+
// ]
|
|
1992
|
+
await curve.dao.crvLockIsApproved(lockAmount);
|
|
1993
|
+
// true
|
|
1994
|
+
curve.dao.calcCrvUnlockTime(365);
|
|
1995
|
+
// 1733961600000
|
|
1996
|
+
await curve.dao.createCrvLock(lockAmount, 365);
|
|
1997
|
+
// 0xcce6abef337aaef4ce95d44f50270c537197b5754a8fb8f148ccb83af5d4fab2
|
|
1998
|
+
await curve.dao.userVeCrv();
|
|
1999
|
+
// {
|
|
2000
|
+
// veCrv: '2495.771816336870150904',
|
|
2001
|
+
// veCrvPct: '0.000383319071017321',
|
|
2002
|
+
// lockedCrv: '10000.0',
|
|
2003
|
+
// unlockTime: 1733961600000
|
|
2004
|
+
// }
|
|
2005
|
+
|
|
2006
|
+
const pool = curve.getPool("3pool");
|
|
2007
|
+
await pool.depositAndStake([1000, 1000, 1000]);
|
|
2008
|
+
// 0x19dc2d8483d09bb1f7fac5a8c4f4a8b425c5ed43b75f6f86bb500dc5532713b6
|
|
2009
|
+
await pool.userBoost();
|
|
2010
|
+
// 1.0355
|
|
2011
|
+
await pool.userCrvApy();
|
|
2012
|
+
// 1.3849750259023168
|
|
2013
|
+
await pool.userFutureBoost();
|
|
2014
|
+
// 1.0355
|
|
2015
|
+
await pool.userFutureCrvApy();
|
|
2016
|
+
// 1.3847834623550341
|
|
2017
|
+
|
|
2018
|
+
await curve.dao.crvLockApprove(lockAmount);
|
|
2019
|
+
// [
|
|
2020
|
+
// '0xfa9130cc15b228f58e833527a5f51a2de16916ce091cca45cd21efb20b41836b'
|
|
2021
|
+
// ]
|
|
2022
|
+
await curve.dao.increaseCrvLockedAmount(lockAmount);
|
|
2023
|
+
// 0x5113d94edab7551acc1bc31721135fb3a897b836f241fff1618aa9e2dd074a62
|
|
2024
|
+
//
|
|
2025
|
+
// {
|
|
2026
|
+
// veCrv: '4991.53824200910306186',
|
|
2027
|
+
// veCrvPct: '0.000766634619176443',
|
|
2028
|
+
// lockedCrv: '20000.0',
|
|
2029
|
+
// unlockTime: 1733961600000
|
|
2030
|
+
// }
|
|
2031
|
+
//
|
|
2032
|
+
// Boost: 1.0355
|
|
2033
|
+
// APY: 1.3849750259023168
|
|
2034
|
+
// Future boost: 1.0709
|
|
2035
|
+
// Future APY: 1.4322087422285665
|
|
2036
|
+
|
|
2037
|
+
|
|
2038
|
+
const { unlockTime } = await curve.dao.userVeCrv();
|
|
2039
|
+
curve.dao.calcCrvUnlockTime(365, unlockTime);
|
|
2040
|
+
// 1765411200000
|
|
2041
|
+
await curve.dao.increaseCrvUnlockTime(365);
|
|
2042
|
+
// 0xfd51b54c871a87bcef4299d0cf64a0e23ed941f103d9ca2c9f7dccdd109c5eb3
|
|
2043
|
+
//
|
|
2044
|
+
// {
|
|
2045
|
+
// veCrv: '9977.839453323127514238',
|
|
2046
|
+
// veCrvPct: '0.001532453177660863',
|
|
2047
|
+
// lockedCrv: '20000.0',
|
|
2048
|
+
// unlockTime: 1765411200000
|
|
2049
|
+
// }
|
|
2050
|
+
//
|
|
2051
|
+
// Boost: 1.0355 <------- PAY ATTENTION
|
|
2052
|
+
// APY: 1.3849750259023168 <------- PAY ATTENTION
|
|
2053
|
+
// Future boost: 1.1418 <------- PAY ATTENTION
|
|
2054
|
+
// Future APY: 1.526957520361982 <------- PAY ATTENTION
|
|
2055
|
+
|
|
2056
|
+
// Checkpoint to adjust boost
|
|
2057
|
+
await pool.claimCrv();
|
|
2058
|
+
// 0x2dc4960bfdc9310dc773baf8a5a74942e1829591c65cc3b595b6e6fdf5e2b9bd
|
|
2059
|
+
//
|
|
2060
|
+
// Boost: 1.1418
|
|
2061
|
+
// APY: 1.527150636963076
|
|
2062
|
+
// Future boost: 1.1418
|
|
2063
|
+
// Future APY: 1.526957517882314
|
|
2064
|
+
|
|
2065
|
+
// --- 2 years time travel ---
|
|
2066
|
+
|
|
2067
|
+
await curve.dao.claimableFees();
|
|
2068
|
+
// 119.110532749090134743
|
|
2069
|
+
await curve.dao.claimFees();
|
|
2070
|
+
// 0x90354b4f8c144c194439b18b8c4a87b00b0b62847757d09faa4f475c1c8a12bf
|
|
2071
|
+
await curve.getBalances(['3crv']);
|
|
2072
|
+
// ['119.110532749090134743']
|
|
2073
|
+
|
|
2074
|
+
// CRV in wallet: 980000.0
|
|
2075
|
+
//
|
|
2076
|
+
// {
|
|
2077
|
+
// veCrv: '0.0',
|
|
2078
|
+
// veCrvPct: '0',
|
|
2079
|
+
// lockedCrv: '20000.0',
|
|
2080
|
+
// unlockTime: unlockTime: 1765411200000
|
|
2081
|
+
// }
|
|
2082
|
+
await curve.dao.withdrawLockedCrv();
|
|
2083
|
+
// CRV in wallet: 1000000.0
|
|
2084
|
+
// { veCrv: '0.0', veCrvPct: '0', lockedCrv: '0.0', unlockTime: 0 }
|
|
2085
|
+
})()
|
|
2086
|
+
```
|
|
2087
|
+
|
|
2088
|
+
### Gauge voting
|
|
2089
|
+
```ts
|
|
2090
|
+
import curve from "@curvefi/api";
|
|
2091
|
+
|
|
2092
|
+
(async () => {
|
|
2093
|
+
await curve.init('JsonRpc', {}, {gasPrice: 0, maxFeePerGas: 0, maxPriorityFeePerGas: 0});
|
|
2094
|
+
|
|
2095
|
+
const pool1 = curve.getPool("3pool");
|
|
2096
|
+
const pool2 = curve.getPool("gusd");
|
|
2097
|
+
await curve.dao.crvLockApprove(10000);
|
|
2098
|
+
await curve.dao.createCrvLock(10000, 365 * 2);
|
|
2099
|
+
|
|
2100
|
+
await curve.dao.getVotingGaugeList();
|
|
2101
|
+
// [
|
|
2102
|
+
// {
|
|
2103
|
+
// poolUrl: 'https://curve.fi/#/ethereum/pools/compound/swap',
|
|
2104
|
+
// network: 'ethereum',
|
|
2105
|
+
// gaugeAddress: '0x7ca5b0a2910b33e9759dc7ddb0413949071d7575',
|
|
2106
|
+
// poolAddress: '0xa2b47e3d5c44877cca798226b7b8118f9bfb7a56',
|
|
2107
|
+
// lpTokenAddress: '0x845838df265dcd2c412a1dc9e959c7d08537f8a2',
|
|
2108
|
+
// poolName: 'cDAI+cUSDC (0xA2B4…)',
|
|
2109
|
+
// totalVeCrv: '330001.909569364585795212',
|
|
2110
|
+
// relativeWeight: '0.0518882916913238',
|
|
2111
|
+
// isKilled: false
|
|
2112
|
+
// },
|
|
2113
|
+
// {
|
|
2114
|
+
// poolUrl: 'https://curve.fi/#/ethereum/pools/usdt/swap',
|
|
2115
|
+
// network: 'ethereum',
|
|
2116
|
+
// gaugeAddress: '0xbc89cd85491d81c6ad2954e6d0362ee29fca8f53',
|
|
2117
|
+
// poolAddress: '0x52ea46506b9cc5ef470c5bf89f17dc28bb35d85c',
|
|
2118
|
+
// lpTokenAddress: '0x9fc689ccada600b6df723d9e47d84d76664a1f23',
|
|
2119
|
+
// poolName: 'cDAI+cUSDC+USDT (0x52EA…)',
|
|
2120
|
+
// totalVeCrv: '6223.0651613181174816',
|
|
2121
|
+
// relativeWeight: '0.0',
|
|
2122
|
+
// isKilled: false
|
|
2123
|
+
// },
|
|
2124
|
+
//
|
|
2125
|
+
// ...
|
|
2126
|
+
//
|
|
2127
|
+
// ]
|
|
2128
|
+
await curve.dao.voteForGaugeNextTime(pool1.gauge);
|
|
2129
|
+
// 864000000
|
|
2130
|
+
await curve.dao.voteForGaugeNextTime(pool2.gauge);
|
|
2131
|
+
// 864000000
|
|
2132
|
+
await curve.dao.voteForGauge(pool1.gauge, 50); // 50%
|
|
2133
|
+
// 0x2397cc3d620595169567a2a45d4edd48b40862a3565613e7ac90d84a2179c068
|
|
2134
|
+
await curve.dao.voteForGauge(pool2.gauge, 50); // 50%
|
|
2135
|
+
// 0x4413cca88ea2e3d9d209fd1217117d3f167dc216113691b33f59c8cf880c99a3
|
|
2136
|
+
await curve.dao.voteForGaugeNextTime(pool1.gauge);
|
|
2137
|
+
// 1703346606000
|
|
2138
|
+
await curve.dao.voteForGaugeNextTime(pool2.gauge);
|
|
2139
|
+
// 1703346607000
|
|
2140
|
+
await curve.dao.userGaugeVotes();
|
|
2141
|
+
// {
|
|
2142
|
+
// gauges: [
|
|
2143
|
+
// {
|
|
2144
|
+
// userPower: '50.0',
|
|
2145
|
+
// userVeCrv: '2494.292356354596179115',
|
|
2146
|
+
// userFutureVeCrv: '2494.315742326215669361',
|
|
2147
|
+
// expired: false,
|
|
2148
|
+
// gaugeData: [Object]
|
|
2149
|
+
// },
|
|
2150
|
+
// {
|
|
2151
|
+
// userPower: '50.0',
|
|
2152
|
+
// userVeCrv: '2494.292356354596179115',
|
|
2153
|
+
// userFutureVeCrv: '2494.315742326215669361',
|
|
2154
|
+
// expired: false,
|
|
2155
|
+
// gaugeData: [Object]
|
|
2156
|
+
// }
|
|
2157
|
+
// ],
|
|
2158
|
+
// powerUsed: '100.0',
|
|
2159
|
+
// veCrvUsed: '4988.58471270919235823'
|
|
2160
|
+
// }
|
|
2161
|
+
|
|
2162
|
+
await curve.dao.increaseCrvUnlockTime(365 * 2);
|
|
2163
|
+
await curve.dao.userGaugeVotes();
|
|
2164
|
+
// {
|
|
2165
|
+
// gauges: [
|
|
2166
|
+
// {
|
|
2167
|
+
// userPower: '50.0',
|
|
2168
|
+
// userVeCrv: '2494.286252219639304545', <------- PAY ATTENTION
|
|
2169
|
+
// userFutureVeCrv: '4936.072662988301764545', <------- PAY ATTENTION
|
|
2170
|
+
// expired: false,
|
|
2171
|
+
// gaugeData: [Object]
|
|
2172
|
+
// },
|
|
2173
|
+
// {
|
|
2174
|
+
// userPower: '50.0',
|
|
2175
|
+
// userVeCrv: '2494.286252219639304545', <------- PAY ATTENTION
|
|
2176
|
+
// userFutureVeCrv: '4936.072662988301764545', <------- PAY ATTENTION
|
|
2177
|
+
// expired: false,
|
|
2178
|
+
// gaugeData: [Object]
|
|
2179
|
+
// }
|
|
2180
|
+
// ],
|
|
2181
|
+
// powerUsed: '100.0',
|
|
2182
|
+
// veCrvUsed: '4988.57250443927860909'
|
|
2183
|
+
// }
|
|
2184
|
+
// Adjust voting power
|
|
2185
|
+
await curve.dao.voteForGauge(pool1.gauge, 50); // 50%
|
|
2186
|
+
// 0x3390467cf45572ce591bc6291a18d909be2826b8e37e07e5a9bcc327a538e6cb
|
|
2187
|
+
await curve.dao.voteForGauge(pool2.gauge, 50); // 50%
|
|
2188
|
+
// 0x900f7c1fcf4fd04d0ebd7e9813452e0c5d5ee96b51aaa4ff11aac555accc474c
|
|
2189
|
+
await curve.dao.userGaugeVotes();
|
|
2190
|
+
// {
|
|
2191
|
+
// gauges: [
|
|
2192
|
+
// {
|
|
2193
|
+
// userPower: '50.0',
|
|
2194
|
+
// userVeCrv: '4987.4342021815414409', <------- PAY ATTENTION
|
|
2195
|
+
// userFutureVeCrv: '4936.071156773182535736', <------- PAY ATTENTION
|
|
2196
|
+
// expired: false,
|
|
2197
|
+
// gaugeData: [Object]
|
|
2198
|
+
// },
|
|
2199
|
+
// {
|
|
2200
|
+
// userPower: '50.0',
|
|
2201
|
+
// userVeCrv: '4987.4342021815414409', <------- PAY ATTENTION
|
|
2202
|
+
// userFutureVeCrv: '4936.071156773182535736', <------- PAY ATTENTION
|
|
2203
|
+
// expired: false,
|
|
2204
|
+
// gaugeData: [Object]
|
|
2205
|
+
// }
|
|
2206
|
+
// ],
|
|
2207
|
+
// powerUsed: '100.0',
|
|
2208
|
+
// veCrvUsed: '9974.8684043630828818'
|
|
2209
|
+
// }
|
|
2210
|
+
})()
|
|
2211
|
+
```
|
|
2212
|
+
|
|
2213
|
+
### Proposal voting
|
|
2214
|
+
```ts
|
|
2215
|
+
import curve from "@curvefi/api";
|
|
2216
|
+
|
|
2217
|
+
(async () => {
|
|
2218
|
+
await curve.init('JsonRpc', {}, {gasPrice: 0, maxFeePerGas: 0, maxPriorityFeePerGas: 0});
|
|
2219
|
+
|
|
2220
|
+
await curve.dao.crvLockApprove(10000);
|
|
2221
|
+
await curve.dao.createCrvLock(10000, 365 * 2);
|
|
2222
|
+
|
|
2223
|
+
await curve.dao.getProposalList();
|
|
2224
|
+
// [
|
|
2225
|
+
// {
|
|
2226
|
+
// voteId: 0,
|
|
2227
|
+
// voteType: 'PARAMETER',
|
|
2228
|
+
// creator: '0xbe286d574b1ea46f54955bd856821f84dfd20b2e',
|
|
2229
|
+
// startDate: 1597793388,
|
|
2230
|
+
// snapshotBlock: 10687053,
|
|
2231
|
+
// ipfsMetadata: 'First Parameter App Test Vote',
|
|
2232
|
+
// metadata: '',
|
|
2233
|
+
// votesFor: '9979599901699586154315',
|
|
2234
|
+
// votesAgainst: '33980416204516651932',
|
|
2235
|
+
// voteCount: 2,
|
|
2236
|
+
// supportRequired: '600000000000000000',
|
|
2237
|
+
// minAcceptQuorum: '150000000000000000',
|
|
2238
|
+
// totalSupply: '41117044156628562074952',
|
|
2239
|
+
// executed: true
|
|
2240
|
+
// },
|
|
2241
|
+
// {
|
|
2242
|
+
// voteId: 1,
|
|
2243
|
+
// voteType: 'PARAMETER',
|
|
2244
|
+
// creator: '0x431e81e5dfb5a24541b5ff8762bdef3f32f96354',
|
|
2245
|
+
// startDate: 1599399124,
|
|
2246
|
+
// snapshotBlock: 10808256,
|
|
2247
|
+
// ipfsMetadata: 'ipfs:QmdWcs2TZAPsHsnty3tzK4s3HqQDWxY1tdb6SHT3ErZzPY',
|
|
2248
|
+
// metadata: 'Update y pool A from 2000 to 1000, this will allow for a greater % of DAI in the pool',
|
|
2249
|
+
// votesFor: '687697469212361901850006',
|
|
2250
|
+
// votesAgainst: '0',
|
|
2251
|
+
// voteCount: 7,
|
|
2252
|
+
// supportRequired: '600000000000000000',
|
|
2253
|
+
// minAcceptQuorum: '150000000000000000',
|
|
2254
|
+
// totalSupply: '3688475140972975065815236',
|
|
2255
|
+
// executed: true
|
|
2256
|
+
// },
|
|
2257
|
+
//
|
|
2258
|
+
// ...
|
|
2259
|
+
//
|
|
2260
|
+
// ]
|
|
2261
|
+
await curve.dao.getProposal("PARAMETER", 21);
|
|
2262
|
+
// {
|
|
2263
|
+
// voteId: 21,
|
|
2264
|
+
// voteType: 'PARAMETER',
|
|
2265
|
+
// creator: '0xdedf3000d83bd3550d7d2080cc48a488c93a9442',
|
|
2266
|
+
// startDate: 1631370726,
|
|
2267
|
+
// snapshotBlock: 13205005,
|
|
2268
|
+
// ipfsMetadata: 'ipfs:QmUnYRTB1dUyz9QdX5GueQ6wfKG9J1b1m1RP7EXEYK2Yei',
|
|
2269
|
+
// metadata: '"Ramp A for the OUSD factory pool to 100. Ramping occurs over 1 week.',
|
|
2270
|
+
// votesFor: '138752972260900277168325110',
|
|
2271
|
+
// votesAgainst: '0',
|
|
2272
|
+
// voteCount: 8,
|
|
2273
|
+
// supportRequired: '600000000000000000',
|
|
2274
|
+
// minAcceptQuorum: '150000000000000000',
|
|
2275
|
+
// totalSupply: '273553555220479055026810944',
|
|
2276
|
+
// executed: true,
|
|
2277
|
+
// tx: '0x1daef794f61a1508956b35e037d57a40e60cd290b76b23f7ad251f8bf7fe1f68',
|
|
2278
|
+
// creatorVotingPower: 5.4902571991268546e+23,
|
|
2279
|
+
// script: 'Call via agent (0x4EEb3bA4f221cA16ed4A0cC7254E2E32DF948c5f):\n' +
|
|
2280
|
+
// ' ├─ To: 0x8CF8Af108B3B46DDC6AD596aebb917E053F0D72b\n' +
|
|
2281
|
+
// ' ├─ Function: ramp_A\n' +
|
|
2282
|
+
// " └─ Inputs: [('address', '_pool', '0x87650D7bbfC3A9F10587d7778206671719d9910D'), ('uint256', '_future_A', 100), ('uint256', '_future_time', 1632580319)]\n",
|
|
2283
|
+
// votes: [
|
|
2284
|
+
// {
|
|
2285
|
+
// tx: '0x84443bcf0893c9bbd95581df194be2ce746469c20e4235ec13b9cce157d6d387',
|
|
2286
|
+
// voteId: 21,
|
|
2287
|
+
// voter: '0x989aeb4d175e16225e39e87d0d97a3360524ad80',
|
|
2288
|
+
// supports: true,
|
|
2289
|
+
// stake: 9.280328082090111e+25
|
|
2290
|
+
// },
|
|
2291
|
+
// {
|
|
2292
|
+
// tx: '0x8d1d83db418a5ef9dd6953276e53b518fa1352ec0c9c342317794c6045841014',
|
|
2293
|
+
// voteId: 21,
|
|
2294
|
+
// voter: '0xf89501b77b2fa6329f94f5a05fe84cebb5c8b1a0',
|
|
2295
|
+
// supports: true,
|
|
2296
|
+
// stake: 8.664535170896875e+24
|
|
2297
|
+
// },
|
|
2298
|
+
//
|
|
2299
|
+
// ...
|
|
2300
|
+
///
|
|
2301
|
+
// ]
|
|
2302
|
+
// }
|
|
2303
|
+
await curve.dao.getProposal("OWNERSHIP", 244);
|
|
2304
|
+
// {
|
|
2305
|
+
// voteId: 244,
|
|
2306
|
+
// voteType: 'OWNERSHIP',
|
|
2307
|
+
// creator: '0x336c82e4f54e1a6a3adb1fb115c9a6ef3a2b2b11',
|
|
2308
|
+
// startDate: 1671455975,
|
|
2309
|
+
// snapshotBlock: 16218995,
|
|
2310
|
+
// ipfsMetadata: 'ipfs:QmXqpz9bruFwZJ6yAWGF7EUCinc4JWdR6JeghksW2LAJ3X',
|
|
2311
|
+
// metadata: 'Add gauge for GEAR/ETH pool',
|
|
2312
|
+
// votesFor: '359521266860508503522139751',
|
|
2313
|
+
// votesAgainst: '0',
|
|
2314
|
+
// voteCount: 71,
|
|
2315
|
+
// supportRequired: '510000000000000000',
|
|
2316
|
+
// minAcceptQuorum: '300000000000000000',
|
|
2317
|
+
// totalSupply: '563263606319370823403134500',
|
|
2318
|
+
// executed: true,
|
|
2319
|
+
// tx: '0x9550d32f016bfd724f76bdb794925a7ce93c71dd74c7363ff6094f4809c04103',
|
|
2320
|
+
// creatorVotingPower: 2.522832425326041e+21,
|
|
2321
|
+
// script: 'Call via agent (0x40907540d8a6C65c637785e8f8B742ae6b0b9968):\n' +
|
|
2322
|
+
// ' ├─ To: 0x2F50D538606Fa9EDD2B11E2446BEb18C9D5846bB\n' +
|
|
2323
|
+
// ' ├─ Function: add_gauge\n' +
|
|
2324
|
+
// " └─ Inputs: [('address', 'addr', '0x37Efc3f05D659B30A83cf0B07522C9d08513Ca9d'), ('int128', 'gauge_type', 0), ('uint256', 'weight', 0)]\n",
|
|
2325
|
+
// votes: [
|
|
2326
|
+
// {
|
|
2327
|
+
// tx: '0x0204eb0242be7f44a34dead65ef348b41fc703b825f2904d6cb720236fe2eaa2',
|
|
2328
|
+
// voteId: 244,
|
|
2329
|
+
// voter: '0x7a16ff8270133f063aab6c9977183d9e72835428',
|
|
2330
|
+
// supports: true,
|
|
2331
|
+
// stake: 2.651051910871892e+25
|
|
2332
|
+
// },
|
|
2333
|
+
// {
|
|
2334
|
+
// tx: '0x057871f3c1b679e532b3823517a1204a8ea3f69e021da8c79e397061ff23c789',
|
|
2335
|
+
// voteId: 244,
|
|
2336
|
+
// voter: '0x9b44473e223f8a3c047ad86f387b80402536b029',
|
|
2337
|
+
// supports: true,
|
|
2338
|
+
// stake: 2.6993403110632674e+25
|
|
2339
|
+
// },
|
|
2340
|
+
//
|
|
2341
|
+
// ...
|
|
2342
|
+
//
|
|
2343
|
+
// ]
|
|
2344
|
+
// }
|
|
2345
|
+
await curve.dao.voteForProposal("PARAMETER", 21, false);
|
|
2346
|
+
await curve.dao.voteForProposal("OWNERSHIP", 244, true);
|
|
2347
|
+
|
|
2348
|
+
await curve.dao.userProposalVotes();
|
|
2349
|
+
// [
|
|
2350
|
+
// {
|
|
2351
|
+
// voteId: 21,
|
|
2352
|
+
// voteType: 'PARAMETER',
|
|
2353
|
+
// creator: '0xdedf3000d83bd3550d7d2080cc48a488c93a9442',
|
|
2354
|
+
// startDate: 1631370726,
|
|
2355
|
+
// snapshotBlock: 13205005,
|
|
2356
|
+
// ipfsMetadata: 'ipfs:QmUnYRTB1dUyz9QdX5GueQ6wfKG9J1b1m1RP7EXEYK2Yei',
|
|
2357
|
+
// metadata: '"Ramp A for the OUSD factory pool to 100. Ramping occurs over 1 week.',
|
|
2358
|
+
// votesFor: '138752972260900277168325110',
|
|
2359
|
+
// votesAgainst: '0',
|
|
2360
|
+
// voteCount: 8,
|
|
2361
|
+
// supportRequired: '600000000000000000',
|
|
2362
|
+
// minAcceptQuorum: '150000000000000000',
|
|
2363
|
+
// totalSupply: '273553555220479055026810944',
|
|
2364
|
+
// executed: true,
|
|
2365
|
+
// userVote: 'no' <------- PAY ATTENTION
|
|
2366
|
+
// },
|
|
2367
|
+
// {
|
|
2368
|
+
// voteId: 244,
|
|
2369
|
+
// voteType: 'OWNERSHIP',
|
|
2370
|
+
// creator: '0x336c82e4f54e1a6a3adb1fb115c9a6ef3a2b2b11',
|
|
2371
|
+
// startDate: 1671455975,
|
|
2372
|
+
// snapshotBlock: 16218995,
|
|
2373
|
+
// ipfsMetadata: 'ipfs:QmXqpz9bruFwZJ6yAWGF7EUCinc4JWdR6JeghksW2LAJ3X',
|
|
2374
|
+
// metadata: 'Add gauge for GEAR/ETH pool',
|
|
2375
|
+
// votesFor: '359521266860508503522139751',
|
|
2376
|
+
// votesAgainst: '0',
|
|
2377
|
+
// voteCount: 71,
|
|
2378
|
+
// supportRequired: '510000000000000000',
|
|
2379
|
+
// minAcceptQuorum: '300000000000000000',
|
|
2380
|
+
// totalSupply: '563263606319370823403134500',
|
|
2381
|
+
// executed: true,
|
|
2382
|
+
// userVote: 'yes' <------- PAY ATTENTION
|
|
2383
|
+
// },
|
|
2384
|
+
// ]
|
|
2385
|
+
})()
|
|
2386
|
+
```
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"stateMutability": "nonpayable",
|
|
4
|
+
"type": "constructor",
|
|
5
|
+
"inputs": [],
|
|
6
|
+
"outputs": []
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"stateMutability": "nonpayable",
|
|
10
|
+
"type": "function",
|
|
11
|
+
"name": "add_contract",
|
|
12
|
+
"inputs": [
|
|
13
|
+
{
|
|
14
|
+
"name": "_contract",
|
|
15
|
+
"type": "address"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"outputs": []
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"stateMutability": "view",
|
|
22
|
+
"type": "function",
|
|
23
|
+
"name": "circulating_supply",
|
|
24
|
+
"inputs": [],
|
|
25
|
+
"outputs": [
|
|
26
|
+
{
|
|
27
|
+
"name": "",
|
|
28
|
+
"type": "uint256"
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"stateMutability": "nonpayable",
|
|
34
|
+
"type": "function",
|
|
35
|
+
"name": "set_admin",
|
|
36
|
+
"inputs": [
|
|
37
|
+
{
|
|
38
|
+
"name": "_new_admin",
|
|
39
|
+
"type": "address"
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
"outputs": []
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"stateMutability": "view",
|
|
46
|
+
"type": "function",
|
|
47
|
+
"name": "admin",
|
|
48
|
+
"inputs": [],
|
|
49
|
+
"outputs": [
|
|
50
|
+
{
|
|
51
|
+
"name": "",
|
|
52
|
+
"type": "address"
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"stateMutability": "view",
|
|
58
|
+
"type": "function",
|
|
59
|
+
"name": "CRV",
|
|
60
|
+
"inputs": [],
|
|
61
|
+
"outputs": [
|
|
62
|
+
{
|
|
63
|
+
"name": "",
|
|
64
|
+
"type": "address"
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"stateMutability": "view",
|
|
70
|
+
"type": "function",
|
|
71
|
+
"name": "contracts",
|
|
72
|
+
"inputs": [
|
|
73
|
+
{
|
|
74
|
+
"name": "arg0",
|
|
75
|
+
"type": "uint256"
|
|
76
|
+
}
|
|
77
|
+
],
|
|
78
|
+
"outputs": [
|
|
79
|
+
{
|
|
80
|
+
"name": "",
|
|
81
|
+
"type": "address"
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"stateMutability": "view",
|
|
87
|
+
"type": "function",
|
|
88
|
+
"name": "num_contracts",
|
|
89
|
+
"inputs": [],
|
|
90
|
+
"outputs": [
|
|
91
|
+
{
|
|
92
|
+
"name": "",
|
|
93
|
+
"type": "uint256"
|
|
94
|
+
}
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"stateMutability": "view",
|
|
99
|
+
"type": "function",
|
|
100
|
+
"name": "cached_contracts",
|
|
101
|
+
"inputs": [
|
|
102
|
+
{
|
|
103
|
+
"name": "arg0",
|
|
104
|
+
"type": "uint256"
|
|
105
|
+
}
|
|
106
|
+
],
|
|
107
|
+
"outputs": [
|
|
108
|
+
{
|
|
109
|
+
"name": "",
|
|
110
|
+
"type": "address"
|
|
111
|
+
}
|
|
112
|
+
]
|
|
113
|
+
}
|
|
114
|
+
]
|