Skip to content

Commit 528dcd2

Browse files
committed
misc: add missing interfaces
1 parent 7df4a91 commit 528dcd2

File tree

9 files changed

+263
-82
lines changed

9 files changed

+263
-82
lines changed

contracts/discovery/GNS.sol

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import "@openzeppelin/contracts/math/SafeMath.sol";
66
import "../governance/Managed.sol";
77
import "../bancor/BancorFormula.sol";
88

9+
import "./IGNS.sol";
910
import "./erc1056/IEthereumDIDRegistry.sol";
1011

1112
/**
@@ -15,21 +16,11 @@ import "./erc1056/IEthereumDIDRegistry.sol";
1516
* Each version is associated with a Subgraph Deployment. The contract no knowledge of human
1617
* readable names. All human readable names emitted in events.
1718
*/
18-
contract GNS is Managed {
19+
contract GNS is Managed, IGNS {
1920
using SafeMath for uint256;
2021

2122
// -- State --
2223

23-
struct NameCurationPool {
24-
uint256 vSignal; // The token of the subgraph deployment bonding curve
25-
uint256 nSignal; // The token of the name curation bonding curve
26-
mapping(address => uint256) curatorNSignal;
27-
bytes32 subgraphDeploymentID;
28-
uint32 reserveRatio;
29-
bool disabled;
30-
uint256 withdrawableGRT;
31-
}
32-
3324
// Equates to Connector weight on bancor formula to be CW = 1
3425
uint32 private constant defaultReserveRatio = 1000000;
3526

@@ -191,7 +182,7 @@ contract GNS is Managed {
191182
/**
192183
* @dev Approve curation contract to pull funds.
193184
*/
194-
function approveAll() external onlyGovernor {
185+
function approveAll() external override onlyGovernor {
195186
graphToken().approve(address(curation()), uint256(-1));
196187
}
197188

@@ -200,7 +191,7 @@ contract GNS is Managed {
200191
* @notice Update the minimum vSignal amount to `_minimumVSignalStake`
201192
* @param _minimumVSignalStake Minimum amount of vSignal required
202193
*/
203-
function setMinimumVsignal(uint256 _minimumVSignalStake) external onlyGovernor {
194+
function setMinimumVsignal(uint256 _minimumVSignalStake) external override onlyGovernor {
204195
require(_minimumVSignalStake > 0, "Minimum vSignal cannot be 0");
205196
minimumVSignalStake = _minimumVSignalStake;
206197
emit ParameterUpdated("minimumVSignalStake");
@@ -211,7 +202,7 @@ contract GNS is Managed {
211202
* the name curators tokens while upgrading or deprecating and is configurable in parts per hundred.
212203
* @param _ownerFeePercentage Owner fee percentage
213204
*/
214-
function setOwnerFeePercentage(uint32 _ownerFeePercentage) external onlyGovernor {
205+
function setOwnerFeePercentage(uint32 _ownerFeePercentage) external override onlyGovernor {
215206
require(_ownerFeePercentage <= 100, "Owner fee must be 100 or less");
216207
ownerFeePercentage = _ownerFeePercentage;
217208
emit ParameterUpdated("ownerFeePercentage");
@@ -229,7 +220,7 @@ contract GNS is Managed {
229220
uint8 _nameSystem,
230221
bytes32 _nameIdentifier,
231222
string calldata _name
232-
) external onlyGraphAccountOwner(_graphAccount) {
223+
) external override onlyGraphAccountOwner(_graphAccount) {
233224
emit SetDefaultName(_graphAccount, _nameSystem, _nameIdentifier, _name);
234225
}
235226

@@ -243,7 +234,7 @@ contract GNS is Managed {
243234
address _graphAccount,
244235
uint256 _subgraphNumber,
245236
bytes32 _subgraphMetadata
246-
) public onlyGraphAccountOwner(_graphAccount) {
237+
) public override onlyGraphAccountOwner(_graphAccount) {
247238
emit SubgraphMetadataUpdated(_graphAccount, _subgraphNumber, _subgraphMetadata);
248239
}
249240

@@ -260,7 +251,7 @@ contract GNS is Managed {
260251
bytes32 _subgraphDeploymentID,
261252
bytes32 _versionMetadata,
262253
bytes32 _subgraphMetadata
263-
) external onlyGraphAccountOwner(_graphAccount) {
254+
) external override onlyGraphAccountOwner(_graphAccount) {
264255
uint256 subgraphNumber = graphAccountSubgraphNumbers[_graphAccount];
265256
_publishVersion(_graphAccount, subgraphNumber, _subgraphDeploymentID, _versionMetadata);
266257
graphAccountSubgraphNumbers[_graphAccount]++;
@@ -282,7 +273,7 @@ contract GNS is Managed {
282273
uint256 _subgraphNumber,
283274
bytes32 _subgraphDeploymentID,
284275
bytes32 _versionMetadata
285-
) external onlyGraphAccountOwner(_graphAccount) {
276+
) external override onlyGraphAccountOwner(_graphAccount) {
286277
require(
287278
isPublished(_graphAccount, _subgraphNumber),
288279
"GNS: Cannot update version if not published, or has been deprecated"
@@ -329,6 +320,7 @@ contract GNS is Managed {
329320
*/
330321
function deprecateSubgraph(address _graphAccount, uint256 _subgraphNumber)
331322
external
323+
override
332324
onlyGraphAccountOwner(_graphAccount)
333325
{
334326
require(
@@ -417,7 +409,7 @@ contract GNS is Managed {
417409
address _graphAccount,
418410
uint256 _subgraphNumber,
419411
uint256 _tokens
420-
) external {
412+
) external override {
421413
NameCurationPool storage namePool = nameSignals[_graphAccount][_subgraphNumber];
422414
require(namePool.disabled == false, "GNS: Cannot be disabled");
423415
require(
@@ -437,7 +429,7 @@ contract GNS is Managed {
437429
address _graphAccount,
438430
uint256 _subgraphNumber,
439431
uint256 _nSignal
440-
) external {
432+
) external override {
441433
address nameCurator = msg.sender;
442434
NameCurationPool storage namePool = nameSignals[_graphAccount][_subgraphNumber];
443435
uint256 curatorNSignal = namePool.curatorNSignal[nameCurator];
@@ -479,7 +471,7 @@ contract GNS is Managed {
479471
* @param _graphAccount Subgraph owner
480472
* @param _subgraphNumber Subgraph owners subgraph number which was curated on by nameCurators
481473
*/
482-
function withdraw(address _graphAccount, uint256 _subgraphNumber) external {
474+
function withdraw(address _graphAccount, uint256 _subgraphNumber) external override {
483475
NameCurationPool storage namePool = nameSignals[_graphAccount][_subgraphNumber];
484476
require(namePool.disabled == true, "GNS: Name bonding curve must be disabled first");
485477
require(namePool.withdrawableGRT > 0, "GNS: No more GRT to withdraw");
@@ -606,7 +598,7 @@ contract GNS is Managed {
606598
address _graphAccount,
607599
uint256 _subgraphNumber,
608600
uint256 _tokens
609-
) public view returns (uint256, uint256) {
601+
) public override view returns (uint256, uint256) {
610602
NameCurationPool memory namePool = nameSignals[_graphAccount][_subgraphNumber];
611603
uint256 vSignal = curation().tokensToSignal(namePool.subgraphDeploymentID, _tokens);
612604
uint256 nSignal = vSignalToNSignal(_graphAccount, _subgraphNumber, vSignal);
@@ -626,6 +618,7 @@ contract GNS is Managed {
626618
uint256 _nSignal
627619
)
628620
public
621+
override
629622
view
630623
returns (
631624
uint256,
@@ -653,7 +646,7 @@ contract GNS is Managed {
653646
address _graphAccount,
654647
uint256 _subgraphNumber,
655648
uint256 _vSignal
656-
) public view returns (uint256) {
649+
) public override view returns (uint256) {
657650
NameCurationPool memory namePool = nameSignals[_graphAccount][_subgraphNumber];
658651
uint256 vSignal = _vSignal;
659652

@@ -690,7 +683,7 @@ contract GNS is Managed {
690683
address _graphAccount,
691684
uint256 _subgraphNumber,
692685
uint256 _nSignal
693-
) public view returns (uint256) {
686+
) public override view returns (uint256) {
694687
NameCurationPool memory namePool = nameSignals[_graphAccount][_subgraphNumber];
695688
return
696689
BancorFormula(bondingCurve).calculateSaleReturn(
@@ -712,7 +705,7 @@ contract GNS is Managed {
712705
address _graphAccount,
713706
uint256 _subgraphNumber,
714707
address _curator
715-
) public view returns (uint256) {
708+
) public override view returns (uint256) {
716709
return nameSignals[_graphAccount][_subgraphNumber].curatorNSignal[_curator];
717710
}
718711

@@ -724,6 +717,7 @@ contract GNS is Managed {
724717
*/
725718
function isPublished(address _graphAccount, uint256 _subgraphNumber)
726719
public
720+
override
727721
view
728722
returns (bool)
729723
{

contracts/discovery/IGNS.sol

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
pragma solidity ^0.6.12;
2+
3+
interface IGNS {
4+
// -- Pool --
5+
6+
struct NameCurationPool {
7+
uint256 vSignal; // The token of the subgraph deployment bonding curve
8+
uint256 nSignal; // The token of the name curation bonding curve
9+
mapping(address => uint256) curatorNSignal;
10+
bytes32 subgraphDeploymentID;
11+
uint32 reserveRatio;
12+
bool disabled;
13+
uint256 withdrawableGRT;
14+
}
15+
16+
// -- Configuration --
17+
18+
function approveAll() external;
19+
20+
function setMinimumVsignal(uint256 _minimumVSignalStake) external;
21+
22+
function setOwnerFeePercentage(uint32 _ownerFeePercentage) external;
23+
24+
// -- Publishing --
25+
26+
function setDefaultName(
27+
address _graphAccount,
28+
uint8 _nameSystem,
29+
bytes32 _nameIdentifier,
30+
string calldata _name
31+
) external;
32+
33+
function updateSubgraphMetadata(
34+
address _graphAccount,
35+
uint256 _subgraphNumber,
36+
bytes32 _subgraphMetadata
37+
) external;
38+
39+
function publishNewSubgraph(
40+
address _graphAccount,
41+
bytes32 _subgraphDeploymentID,
42+
bytes32 _versionMetadata,
43+
bytes32 _subgraphMetadata
44+
) external;
45+
46+
function publishNewVersion(
47+
address _graphAccount,
48+
uint256 _subgraphNumber,
49+
bytes32 _subgraphDeploymentID,
50+
bytes32 _versionMetadata
51+
) external;
52+
53+
function deprecateSubgraph(address _graphAccount, uint256 _subgraphNumber) external;
54+
55+
// -- Curation --
56+
57+
function mintNSignal(
58+
address _graphAccount,
59+
uint256 _subgraphNumber,
60+
uint256 _tokens
61+
) external;
62+
63+
function burnNSignal(
64+
address _graphAccount,
65+
uint256 _subgraphNumber,
66+
uint256 _nSignal
67+
) external;
68+
69+
function withdraw(address _graphAccount, uint256 _subgraphNumber) external;
70+
71+
// -- Getters --
72+
73+
function tokensToNSignal(
74+
address _graphAccount,
75+
uint256 _subgraphNumber,
76+
uint256 _tokens
77+
) external view returns (uint256, uint256);
78+
79+
function nSignalToTokens(
80+
address _graphAccount,
81+
uint256 _subgraphNumber,
82+
uint256 _nSignal
83+
)
84+
external
85+
view
86+
returns (
87+
uint256,
88+
uint256,
89+
uint256
90+
);
91+
92+
function vSignalToNSignal(
93+
address _graphAccount,
94+
uint256 _subgraphNumber,
95+
uint256 _vSignal
96+
) external view returns (uint256);
97+
98+
function nSignalToVSignal(
99+
address _graphAccount,
100+
uint256 _subgraphNumber,
101+
uint256 _nSignal
102+
) external view returns (uint256);
103+
104+
function getCuratorNSignal(
105+
address _graphAccount,
106+
uint256 _subgraphNumber,
107+
address _curator
108+
) external view returns (uint256);
109+
110+
function isPublished(address _graphAccount, uint256 _subgraphNumber)
111+
external
112+
view
113+
returns (bool);
114+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
pragma solidity ^0.6.12;
2+
3+
interface IServiceRegistry {
4+
struct IndexerService {
5+
string url;
6+
string geohash;
7+
}
8+
9+
function register(string calldata _url, string calldata _geohash) external;
10+
11+
function unregister() external;
12+
13+
function isRegistered(address _indexer) external view returns (bool);
14+
}

contracts/discovery/ServiceRegistry.sol

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,16 @@
11
pragma solidity ^0.6.12;
22
pragma experimental ABIEncoderV2;
33

4+
import "./IServiceRegistry.sol";
5+
46
/**
57
* @title ServiceRegistry contract
68
* @dev This contract supports the service discovery process by allowing indexers to
79
* register their service url and any other relevant information.
810
*/
9-
contract ServiceRegistry {
11+
contract ServiceRegistry is IServiceRegistry {
1012
// -- State --
1113

12-
struct IndexerService {
13-
string url;
14-
string geohash;
15-
}
16-
1714
mapping(address => IndexerService) public services;
1815

1916
// -- Events --
@@ -26,7 +23,7 @@ contract ServiceRegistry {
2623
* @param _url URL of the indexer service
2724
* @param _geohash Geohash of the indexer service location
2825
*/
29-
function register(string calldata _url, string calldata _geohash) external {
26+
function register(string calldata _url, string calldata _geohash) external override {
3027
address indexer = msg.sender;
3128
require(bytes(_url).length > 0, "Service must specify a URL");
3229

@@ -38,7 +35,7 @@ contract ServiceRegistry {
3835
/**
3936
* @dev Unregister an indexer service
4037
*/
41-
function unregister() external {
38+
function unregister() external override {
4239
address indexer = msg.sender;
4340
require(isRegistered(indexer), "Service already unregistered");
4441

@@ -50,7 +47,7 @@ contract ServiceRegistry {
5047
* @dev Return the registration status of an indexer service
5148
* @return True if the indexer service is registered
5249
*/
53-
function isRegistered(address _indexer) public view returns (bool) {
50+
function isRegistered(address _indexer) public override view returns (bool) {
5451
return bytes(services[_indexer].url).length > 0;
5552
}
5653
}

0 commit comments

Comments
 (0)