@pendle/core-v2 0.16.5-testnet-daily → 0.16.5-testnet

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.
@@ -44,7 +44,7 @@ abstract contract PendleGaugeControllerBaseUpg is
44
44
  uint128 incentiveEndsAt;
45
45
  }
46
46
 
47
- uint128 internal constant WEEK = 1 days;
47
+ uint128 internal constant WEEK = 1 weeks;
48
48
 
49
49
  address public immutable pendle;
50
50
  IPMarketFactory public immutable marketFactory;
@@ -49,7 +49,7 @@ abstract contract VotingControllerStorageUpg is IPVotingController {
49
49
  }
50
50
 
51
51
  uint128 public constant MAX_LOCK_TIME = 104 weeks;
52
- uint128 public constant WEEK = 1 days;
52
+ uint128 public constant WEEK = 1 weeks;
53
53
  uint128 public constant GOVERNANCE_PENDLE_VOTE = 10**24;
54
54
 
55
55
  IPVeToken public immutable vePendle;
@@ -21,13 +21,13 @@ import "../libraries/WeekMath.sol";
21
21
  * + No other transaction is allowed to write on sidechain storage
22
22
  */
23
23
 
24
- abstract contract VotingEscrowTokenBase is IPVeToken {
24
+ abstract contract VotingEscrowTokenBase is IPVeToken {
25
25
  using VeBalanceLib for VeBalance;
26
26
  using VeBalanceLib for LockedPosition;
27
27
 
28
- uint128 public constant WEEK = 1 days;
28
+ uint128 public constant WEEK = 1 weeks;
29
29
  uint128 public constant MAX_LOCK_TIME = 104 weeks;
30
- uint128 public constant MIN_LOCK_TIME = 1 days;
30
+ uint128 public constant MIN_LOCK_TIME = 1 weeks;
31
31
 
32
32
  VeBalance internal _totalSupply;
33
33
  uint128 public lastSlopeChangeAppliedAt;
@@ -3,7 +3,7 @@
3
3
  pragma solidity 0.8.17;
4
4
 
5
5
  library WeekMath {
6
- uint128 internal constant WEEK = 1 days;
6
+ uint128 internal constant WEEK = 7 days;
7
7
 
8
8
  function getWeekStartTimestamp(uint128 timestamp) internal pure returns (uint128) {
9
9
  return (timestamp / WEEK) * WEEK;
@@ -155,7 +155,7 @@ contract BulkSeller is IPBulkSeller, Initializable, TokenHelper, ReentrancyGuard
155
155
 
156
156
  // ----------------- BulkSeller management -----------------
157
157
 
158
- function increaseReserve(uint256 netTokenIn, uint256 netSyIn) external onlyMaintainer {
158
+ function increaseReserve(uint256 netTokenIn, uint256 netSyIn) external payable onlyMaintainer {
159
159
  BulkSellerState memory state = readState();
160
160
 
161
161
  state.totalToken += netTokenIn;
@@ -240,11 +240,20 @@ contract BulkSeller is IPBulkSeller, Initializable, TokenHelper, ReentrancyGuard
240
240
 
241
241
  function _depositToken(uint256 netTokenDeposit) internal returns (uint256 netSyFromToken) {
242
242
  _safeApprove(token, SY, netTokenDeposit);
243
- return IStandardizedYield(SY).deposit(address(this), token, netTokenDeposit, 0);
243
+ uint256 nativeToDeposit = token == NATIVE ? netTokenDeposit : 0;
244
+ return
245
+ IStandardizedYield(SY).deposit{ value: nativeToDeposit }(
246
+ address(this),
247
+ token,
248
+ netTokenDeposit,
249
+ 0
250
+ );
244
251
  }
245
252
 
246
253
  function _redeemSy(uint256 netSyRedeem) internal returns (uint256 netTokenFromSy) {
247
254
  _transferOut(SY, SY, netSyRedeem);
248
255
  return IStandardizedYield(SY).redeem(address(this), netSyRedeem, token, 0, true);
249
256
  }
257
+
258
+ receive() external payable {}
250
259
  }
@@ -58,6 +58,8 @@ contract BulkSellerFactory is
58
58
 
59
59
  syToBulkSeller[token][SY] = bulk;
60
60
 
61
+ emit BulkSellerCreated(token, SY, bulk);
62
+
61
63
  return bulk;
62
64
  }
63
65
 
@@ -119,8 +119,8 @@ library BulkSellerMathCore {
119
119
 
120
120
  function setRate(
121
121
  BulkSellerState memory state,
122
- uint256 rateTokenToSy,
123
122
  uint256 rateSyToToken,
123
+ uint256 rateTokenToSy,
124
124
  uint256 maxDiff
125
125
  ) internal pure {
126
126
  if (
@@ -2,6 +2,8 @@
2
2
  pragma solidity 0.8.17;
3
3
 
4
4
  interface IPBulkSellerFactory {
5
+ event BulkSellerCreated(address indexed token, address indexed sy, address indexed bulk);
6
+
5
7
  event UpgradedBeacon(address indexed implementation);
6
8
 
7
9
  function get(address token, address SY) external view returns (address);
@@ -3,6 +3,7 @@ pragma solidity 0.8.17;
3
3
 
4
4
  import "../core/BulkSeller/BulkSellerMathCore.sol";
5
5
  import "../core/BulkSeller/BulkSeller.sol";
6
+ import "hardhat/console.sol";
6
7
 
7
8
  // upgradable bla bla
8
9
  contract BulkSellerOffchain {
@@ -20,17 +21,34 @@ contract BulkSellerOffchain {
20
21
  address token = bulk.token();
21
22
 
22
23
  {
23
- uint256 hypoTotalToken = state.totalToken +
24
- state.calcSwapExactSyForToken(state.totalSy);
24
+ uint256 hypoTotalToken = state.totalToken + state.totalSy.mulDown(state.rateSyToToken);
25
25
  uint256 netSyFromToken = IStandardizedYield(SY).previewDeposit(token, hypoTotalToken);
26
26
 
27
27
  rateTokenToSy = netSyFromToken.divDown(hypoTotalToken);
28
28
  }
29
29
 
30
30
  {
31
- uint256 hypoTotalSy = state.totalSy + state.calcSwapExactTokenForSy(state.totalToken);
31
+ uint256 hypoTotalSy = state.totalSy + state.totalToken.mulDown(state.rateTokenToSy);
32
32
  uint256 netTokenFromSy = IStandardizedYield(SY).previewRedeem(token, hypoTotalSy);
33
+ rateSyToToken = netTokenFromSy.divDown(hypoTotalSy);
34
+ }
35
+ }
33
36
 
37
+ function calcCurrentRatesWithAmount(
38
+ IPBulkSeller bulk,
39
+ uint256 hypoTotalToken,
40
+ uint256 hypoTotalSy
41
+ ) external view returns (uint256 rateTokenToSy, uint256 rateSyToToken) {
42
+ address SY = bulk.SY();
43
+ address token = bulk.token();
44
+
45
+ {
46
+ uint256 netSyFromToken = IStandardizedYield(SY).previewDeposit(token, hypoTotalToken);
47
+ rateTokenToSy = netSyFromToken.divDown(hypoTotalToken);
48
+ }
49
+
50
+ {
51
+ uint256 netTokenFromSy = IStandardizedYield(SY).previewRedeem(token, hypoTotalSy);
34
52
  rateSyToToken = netTokenFromSy.divDown(hypoTotalSy);
35
53
  }
36
54
  }
@@ -22,7 +22,7 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
22
22
  using VeBalanceLib for LockedPosition;
23
23
 
24
24
  uint128 public constant MAX_LOCK_TIME = 104 weeks;
25
- uint128 public constant MIN_LOCK_TIME = 1 days;
25
+ uint128 public constant MIN_LOCK_TIME = 1 weeks;
26
26
 
27
27
  struct TokenAmount {
28
28
  address token;
@@ -575,7 +575,7 @@ library MarketApproxPtOutLib {
575
575
  {
576
576
  uint256 netSyRemaining = a.totalSyIn - netSyIn;
577
577
  uint256 newTotalPt = a.market.totalPt.Uint() - guess;
578
- uint256 netTotalSy = comp.totalAsset.Uint() + netSyIn - netSyFee;
578
+ uint256 netTotalSy = a.market.totalSy.Uint() + netSyIn - netSyFee;
579
579
 
580
580
  // it is desired that
581
581
  // netPtFromSwap / newTotalPt = netSyRemaining / netTotalSy
@@ -5,13 +5,13 @@
5
5
  "lzEndpoint": "0x93f54D755A063cE7bB9e6Ac47Eccc8e33411d706",
6
6
  "treasury": "0x243b7CFD29AcAF9cDe98C1958902FAA3B1F095D5",
7
7
  "PENDLE": "0xB7609dec1C926204c3B67345cbCd54bc4aa7a940",
8
- "yieldContractFactory": "0xfD5EDf66bf3A2E5c2fBd5d4be243c5802e699b6a",
9
- "marketFactory": "0x6aE219f9B761D8D94780FE0F3EC7Ab4151842dBD",
10
- "bulkSellerFactory": "0x41Ff51bE13A3f606AF44A221a901D9eF49E79d87",
11
- "router": "0xfE8240eDA45C83E1734f4961B188dC47160E2061",
12
- "routerStatic": "0x8507b5BCB3FCFF52bA9A3B88cC5cD2135EF313f1",
13
- "vePendle": "0x8391B95F016FFE2a4c32F69B4363ca55470fDfe1",
14
- "senderEndpoint": "0x8E7E8bdbaA68bDCcAFC3586d7fDa43bb1310Ec71",
15
- "votingController": "0xD6d778846B2d4A013d44fAF346FcdFa34b58E222",
16
- "gaugeController": "0x2324819386c3867494c7654Bdc0B6D93B6FecD13"
8
+ "yieldContractFactory": "0xC39Efc7bb273B75B75471167Cb0EB4D3D41398a8",
9
+ "marketFactory": "0xa28B2445C8e1751733e75e6794971AEEA4806F45",
10
+ "bulkSellerFactory": "0x9f45D5A34CC9Bcb3AB4ee464bE768E30B5e627f8",
11
+ "router": "0x129be7922B733b0F06cb4f0f47B6b4a12710a312",
12
+ "routerStatic": "0x699665c3fA37FF59cACd913EAaB56CEFA66C339E",
13
+ "vePendle": "0x74E578b27aD53f23387b9Dcb7902F7Def6D4dB7c",
14
+ "senderEndpoint": "0xa87c479d77040d1c5433b9cD3b88b2B562A7cb10",
15
+ "votingController": "0x0b24c845feF83f8403EEF3922F3B53a05182512A",
16
+ "gaugeController": "0xf0cFb8781F17d51523922Ace5eB69a4b42e35a15"
17
17
  }
@@ -0,0 +1,9 @@
1
+ {
2
+ "symbol": "SY-qiAVAX",
3
+ "SY": "0x7bd149FFD976F366af864B2F9585016FD0386A3F",
4
+ "expiry": 1675382400,
5
+ "PT": "0x9156bf2494F7DaaBAE2Ec919513217Dc9a2535aD",
6
+ "YT": "0x12CBF941d14823160e606BdaA7eA4f351251A9cF",
7
+ "market": "0x94f1997DA3ea57875ab97747d2bF744c6895A0AD",
8
+ "bulkSeller": "0xc64c1A2DCbA6bB38DA23a4C2b9Ca76005508719A"
9
+ }
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "symbol": "SY-qiUSDC",
3
- "SY": "0xFFc4208cC825baD56909C7fbff63BB43286D4c67",
3
+ "SY": "0x922FD937e7C59E58F2E425260fb21Ddc8486BcDE",
4
4
  "expiry": 1675382400,
5
- "PT": "0x7354104DCE0cED4Bbf6c7798a9D52Adb1340B1c0",
6
- "YT": "0x869BD2A765c43a9811cc9a8B2ABCE5C78a0aa004",
7
- "market": "0x3Ca64162AD9A6D25B37c67FF4b474cb925d2cCA9"
5
+ "PT": "0x3cBf269875C4eFf9374AF93e736f3c3487cEA993",
6
+ "YT": "0x8700D3bb93E21dEAcB84c006106B3b914Cca32e2",
7
+ "market": "0x20A564b60A21c107eAC5FbFea54D4Aad6db452A1"
8
8
  }
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "symbol": "SY-qiWETH",
3
- "SY": "0xC4907BBd480F53Ae5dA80F723975F8c2125783eC",
3
+ "SY": "0xF82E799c78B53c814dBf101431cC24F121Fa1098",
4
4
  "expiry": 1669852800,
5
- "PT": "0xa1da6AFaE358135b1e9E43aCF0C00d0E2A501F84",
6
- "YT": "0x818dd5ad650B064A5314F6df60CDdC2a63272b58",
7
- "market": "0xAc92B8B795f9DBb784e97fC69cDBF4167621D458"
5
+ "PT": "0xEAa59b2532D7e49b6f8CAC1b4AdAb6a6F868C7eB",
6
+ "YT": "0xb899c25fF3c73127F0B96aDAb9997a703C3Fd88D",
7
+ "market": "0xA9905Bd9d4813a78c4F9Ed4Ba285b49DE50F7406",
8
+ "bulkSeller": "0x6A9908669a0D751EE2d8706155eC7CbB0291f09E"
8
9
  }
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "deployer": "0x1FcCC097db89A86Bfc474A1028F93958295b1Fb7",
3
3
  "network": 80001,
4
- "splitter": "0x335289ccb76C1A11aDB82E2aa2ab39a83DdcC49a",
4
+ "splitter": "0x07D39E2025Fd0B1F0065FE39172df246f063BB15",
5
5
  "lzEndpoint": "0xf69186dfBa60DdB133E91E9A4B5673624293d8F8",
6
- "treasury": "0xdC1b3B6b2091a3bB2c7439005A24F33a9A4f87Be",
7
- "PENDLE": "0x7b5b5105dFBacc2A84d00406FEa5B454a73979a4",
8
- "yieldContractFactory": "0xeC1AF9aA4801E44879c5cB800887478d98De37c0",
9
- "marketFactory": "0xA91817a07A7A8020972E5115196f59E347C35b99",
10
- "bulkSellerFactory": "0xd58F19344c4D695Be5452aAa6AfFa82bc5db51Ba",
11
- "router": "0x4f3A7a07A968B67F1f9692b70242f10E665d38Ad",
12
- "routerStatic": "0xA5C923c03ad1012CDDCD51D348659991F614eA17",
13
- "receiverEndpoint": "0xa0c3840e5FD27f3C51bda5f0b6a75738ddeB6062",
14
- "vePendle": "0x1367c812418c67895C2474169F6753272be8B5f4",
15
- "gaugeController": "0x98F5Ff866AAfF8A4109380CE2dC02CA6644AD81d"
6
+ "treasury": "0x47F77E3fAC652E05FFEB7E8E1cEf69E775628B24",
7
+ "PENDLE": "0x5FDA5b3b05B2884F9f028550069B9D321E84814A",
8
+ "yieldContractFactory": "0x8B3C5BD39E6B82272eCf0d6828D458536dc44dea",
9
+ "marketFactory": "0xf963474FAe462B06B026DE500f605B3578B66c66",
10
+ "bulkSellerFactory": "0xcdFfe971e3dE61f94450C56e140E3b2E0d7597CF",
11
+ "router": "0x60e5F58005b326ecA0cf9c96528781567973d7B0",
12
+ "routerStatic": "0xf159EC6647659eD86a67eb0B1131595c2EE086c2",
13
+ "receiverEndpoint": "0x57D55237374b0D1AFdac5E25F16A4EE5C57A627c",
14
+ "vePendle": "0x89Cec94a14FAB1cb27C1A5cd32af05ef448d9829",
15
+ "gaugeController": "0x8a6c59A80aA3Bbf32E7b3F0C359Eb528Cf6f7288"
16
16
  }
@@ -0,0 +1,8 @@
1
+ {
2
+ "symbol": "SY-qiUSDC",
3
+ "SY": "0x95867d15D0a6F77E32c684022D97e882A71Bd630",
4
+ "expiry": 1675382400,
5
+ "PT": "0x9d9381D466e46525eDDac3a3dC71EC64C3c3d87c",
6
+ "YT": "0xa693a38f9261Ee45040EB2b8125D8B718b83f491",
7
+ "market": "0x90326785175652D74a0AA35Af8fb86819513D939"
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "symbol": "SY-qiWETH",
3
+ "SY": "0x501E089e6BD6b78e6E435C15118E52c665931850",
4
+ "expiry": 1669852800,
5
+ "PT": "0x5a6049e6dB4032Dfa7A27b4071DB6C4a5A9A4707",
6
+ "YT": "0x885AdC68FC7F5715A32eb03eA1c6F17F396c715A",
7
+ "market": "0xc86283109a074E8021a50717e3d86D3f78184b18"
8
+ }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@pendle/core-v2",
3
3
  "description": "Core smart contracts of Pendle Protocol.",
4
4
  "license": "BUSL-1.1",
5
- "version": "0.16.5-testnet-daily",
5
+ "version": "0.16.5-testnet",
6
6
  "homepage": "https://pendle.finance",
7
7
  "keywords": [
8
8
  "pendle",