@@ -614,10 +614,8 @@ contract GNS is GNSV2Storage, GraphUpgradeable, IGNS, Multicall {
614
614
if (newVersionExists) {
615
615
vSignal = vSignalTotal.div (2 );
616
616
617
- vSignal = _checkBancorThreshold (subgraphData.versions[VersionType.New], vSignal);
618
-
619
- tokens = curation ().burn (
620
- subgraphData.versions[VersionType.New].subgraphDeploymentID,
617
+ (tokens, vSignal) = _tryBurn (
618
+ subgraphData.versions[VersionType.New],
621
619
vSignal,
622
620
_tokensOutMin
623
621
);
@@ -631,16 +629,14 @@ contract GNS is GNSV2Storage, GraphUpgradeable, IGNS, Multicall {
631
629
vSignal = vSignalTotal.sub (vSignal);
632
630
}
633
631
634
- vSignal = _checkBancorThreshold (subgraphData.versions[VersionType.Current], vSignal);
635
-
636
- tokens = tokens.add (
637
- curation ().burn (
638
- subgraphData.versions[VersionType.Current].subgraphDeploymentID,
639
- vSignal,
640
- _tokensOutMin
641
- )
632
+ (uint256 currentTokens , ) = _tryBurn (
633
+ subgraphData.versions[VersionType.Current],
634
+ vSignal,
635
+ _tokensOutMin
642
636
);
643
637
638
+ tokens = tokens.add (currentTokens);
639
+
644
640
// Update version vSignal
645
641
subgraphData.versions[VersionType.Current].vSignal = subgraphData
646
642
.versions[VersionType.Current]
@@ -1079,26 +1075,25 @@ contract GNS is GNSV2Storage, GraphUpgradeable, IGNS, Multicall {
1079
1075
}
1080
1076
1081
1077
/**
1082
- * @dev Check if signal is below threshold for calculateSaleReturn function
1078
+ * @dev Try curation.burn, if it fails burn all vSignal
1083
1079
* @param _version Version data
1084
1080
* @param _vSignal Version signal
1081
+ * @param _tokensOutMin Expected minimum amount of tokens to receive
1085
1082
*/
1086
- function _checkBancorThreshold (Version storage _version , uint256 _vSignal )
1087
- internal
1088
- view
1089
- returns (uint256 )
1090
- {
1091
- try
1092
- BancorFormula (bondingCurve).calculateSaleReturn (
1093
- _version.vSignal,
1094
- curation ().getCurationPoolTokens (_version.subgraphDeploymentID),
1095
- curation ().getCurationPoolReserveRatio (_version.subgraphDeploymentID),
1096
- _vSignal
1097
- )
1098
- returns (uint256 ) {
1099
- return _vSignal;
1083
+ function _tryBurn (
1084
+ Version storage _version ,
1085
+ uint256 _vSignal ,
1086
+ uint256 _tokensOutMin
1087
+ ) internal returns (uint256 , uint256 ) {
1088
+ try curation ().burn (_version.subgraphDeploymentID, _vSignal, _tokensOutMin) returns (
1089
+ uint256 tokens
1090
+ ) {
1091
+ return (tokens, _vSignal);
1100
1092
} catch {
1101
- return _version.vSignal;
1093
+ return (
1094
+ curation ().burn (_version.subgraphDeploymentID, _version.vSignal, _tokensOutMin),
1095
+ _version.vSignal
1096
+ );
1102
1097
}
1103
1098
}
1104
1099
}
0 commit comments