Skip to content

Commit 7fe43b8

Browse files
authored
Merge pull request #961 from graphprotocol/mde/sam-contract-deployments
chore: SAM deployments
2 parents bcf6957 + 19faf45 commit 7fe43b8

15 files changed

+126
-90
lines changed

packages/contracts/addresses-staging.json

+19-19
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,25 @@
203203
"runtimeCodeHash": "0xd853da2001c213dd00d674114c254f18a7b5a36aabc5452fb492b9b4faf2faa9",
204204
"txHash": "0xf868871475dc711c5c03818b16a922f740bc2fc314d24586df2255161a907422"
205205
}
206+
},
207+
"SubgraphAvailabilityManager": {
208+
"address": "0xF00AA63f1a8eE67BAD135759eC7a6542b1d56a8f",
209+
"constructorArgs": [
210+
"0x72ee30d43Fb5A90B3FE983156C5d2fBE6F6d07B3",
211+
"0x00b9d319E3D09E83c62f453B44354049Dd93a345",
212+
"3",
213+
"300",
214+
[
215+
"0xb4d396a40BB976118Bb2c9DB9C5539e65c7Fe64A",
216+
"0x633259dB4A33DB664d4C3Fa57BEc45E5030131E2",
217+
"0x9FC436A69E290227b99A9CE0468a1b9D73068E80",
218+
"0xC9b90ab0B9cA63fDBfB46f66BE813ea94561614d",
219+
"0xf3B8F917EcFA569089CF6A0988F9a9F5155cEF83"
220+
]
221+
],
222+
"creationCodeHash": "0xc34842fa42ee2f21e3a435b52fa69a122a5de795448faa890fbc63d4838f45da",
223+
"runtimeCodeHash": "0xe6c0ccd0b0514dd55e58806b1c84f09805dd6202985722579c11d7e252df6b8d",
224+
"txHash": "0x5c1dd91c76e547fe31a5df822353b50e93eb795b915aac0ea8f8364229e9c29c"
206225
}
207226
},
208227
"11155111": {
@@ -424,25 +443,6 @@
424443
"runtimeCodeHash": "0x3cb8a7336234c7826c8f5a437ad2c6615c2e4b4201096a49cb6876264ac47182",
425444
"txHash": "0xf0765b7fe12702a7de3644bb1bcd6549bce1b8b738f2136e94bf39d10521b3e3"
426445
}
427-
},
428-
"SubgraphAvailabilityManager": {
429-
"address": "0x8fa39178Bdf76aca23635FF343BeeED7aA1D45ec",
430-
"constructorArgs": [
431-
"0x559081D91F5Ff43dfE51A07C216F8E6893805B35",
432-
"0x9a86322dEa5136C74ee6d1b06F4Ab9A6bB2724E0",
433-
"5",
434-
"300",
435-
[
436-
"0x840daec5dF962D49cf2EFd789c4E40A7b7e0117D",
437-
"0x840daec5dF962D49cf2EFd789c4E40A7b7e0117D",
438-
"0x840daec5dF962D49cf2EFd789c4E40A7b7e0117D",
439-
"0x840daec5dF962D49cf2EFd789c4E40A7b7e0117D",
440-
"0x840daec5dF962D49cf2EFd789c4E40A7b7e0117D"
441-
]
442-
],
443-
"creationCodeHash": "0x70ff001c11d5120782503f0d129f388d8800571f7e9dfbc81bbff048e3a58444",
444-
"runtimeCodeHash": "0x237aca4c61c6d9b391322c0b24e2d26d9d540787507c6d30c474c86866b15dea",
445-
"txHash": "0xf68af53d379c9ffbfa4794d5226fcd92e95bbce7017f5eefaacd147d0f5f40bc"
446446
}
447447
}
448448
}

packages/contracts/addresses.json

+38
Original file line numberDiff line numberDiff line change
@@ -790,6 +790,25 @@
790790
"creationCodeHash": "0xbfc20ab9b880712ab90b5dec9d2a14c724b0bf7c20f02ede8ea76610bd41b6ef",
791791
"runtimeCodeHash": "0xd7fdd744c7a88993435a2978876b1e4341c5e0fb4d611011bb56e8738ab2485d",
792792
"txHash": "0xcc449d1ca1007fba76b25e987ea0d39164acf4027c10c40bd669ede1c65dc569"
793+
},
794+
"SubgraphAvailabilityManager": {
795+
"address": "0x1cB555359319A94280aCf85372Ac2323AaE2f5fd",
796+
"constructorArgs": [
797+
"0x8C6de8F8D562f3382417340A6994601eE08D3809",
798+
"0x971B9d3d0Ae3ECa029CAB5eA1fB0F72c85e6a525",
799+
"3",
800+
"300",
801+
[
802+
"0xdcAA0a094F2Eb7cF7f73248EE64217D59B7B938d",
803+
"0xBD9dc46cb1dd9F31dCbF0617c2Dd5f77A21dB8e8",
804+
"0x16eAd4088d4308a7A4E0F7a1455ed56CDf1AC8AA",
805+
"0x61923453906Eadc15fc1F610B8D1b67bc27658c2",
806+
"0x10eb33C5E2fb6c7a37B110Cc4930d03A9e4C4D09"
807+
]
808+
],
809+
"creationCodeHash": "0xc34842fa42ee2f21e3a435b52fa69a122a5de795448faa890fbc63d4838f45da",
810+
"runtimeCodeHash": "0x52fcfd39c6ab3cf5ed4a736bc38eb1153d73c8cf1ca9e23370badc7843467ab4",
811+
"txHash": "0x2eb44036d157e39c56377403029aebde4961028b404fc8c3f4cadc0f299d06dd"
793812
}
794813
},
795814
"421613": {
@@ -1221,6 +1240,25 @@
12211240
"creationCodeHash": "0x20cd202f7991716a84c097da5fbd365fd27f7f35f241f82c529ad7aba18b814b",
12221241
"runtimeCodeHash": "0x5f396ffd54b6cd6b3faded0f366c5d7e148cc54743926061be2dfd12a75391de",
12231242
"txHash": "0x2cefbc169b8ae51c263d0298956d86a397b05f11f076b71c918551f63fe33784"
1243+
},
1244+
"SubgraphAvailabilityManager": {
1245+
"address": "0x71D9aE967d1f31fbbD1817150902de78f8f2f73E",
1246+
"constructorArgs": [
1247+
"0x72ee30d43Fb5A90B3FE983156C5d2fBE6F6d07B3",
1248+
"0x1F49caE7669086c8ba53CC35d1E9f80176d67E79",
1249+
"3",
1250+
"300",
1251+
[
1252+
"0x5e4e823Ed094c035133eEC5Ec0d08ae1Af04e9Fa",
1253+
"0x5aeE4c46cF9260E85E630ca7d9D757D5D5DbaFD6",
1254+
"0x7369Cf2a917296c36f506144f3dE552403d1e1f1",
1255+
"0x1e1f84c07e0471fc979f6f08228b0bd34cda9e54",
1256+
"0x711aEA1f358DFAf74D34B4B525F9190e631F406C"
1257+
]
1258+
],
1259+
"creationCodeHash": "0xc34842fa42ee2f21e3a435b52fa69a122a5de795448faa890fbc63d4838f45da",
1260+
"runtimeCodeHash": "0x3907d0fe5a1fa28fee51100e57a3b193dfcee6720163067011e787262b1749bb",
1261+
"txHash": "0xb00751b4dc1c0603fe1b8b9ae9de8840ad1c29b42489c5bb267d80b10ae44ef0"
12241262
}
12251263
},
12261264
"11155111": {

packages/contracts/config/graph.arbitrum-hardhat.yml

+9-7
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@ general:
22
arbitrator: &arbitrator "0xFFcf8FDEE72ac11b5c542428B35EEF5769C409f0" # Arbitration Council
33
governor: &governor "0x22d491Bde2303f2f43325b2108D26f1eAbA1e32b" # Graph Council
44
authority: &authority "0xE11BA2b4D45Eaed5996Cd0823791E0C93114882d" # Authority that signs payment vouchers
5-
availabilityOracle: &availabilityOracle "0xd03ea8624C8C5987235048901fB614fDcA89b117" # Subgraph Availability Oracle
5+
availabilityOracles: &availabilityOracles # Subgraph Availability Oracles
6+
- "0xd03ea8624C8C5987235048901fB614fDcA89b117"
7+
- "0xd03ea8624C8C5987235048901fB614fDcA89b117"
8+
- "0xd03ea8624C8C5987235048901fB614fDcA89b117"
9+
- "0xd03ea8624C8C5987235048901fB614fDcA89b117"
10+
- "0xd03ea8624C8C5987235048901fB614fDcA89b117"
611
pauseGuardian: &pauseGuardian "0x95cED938F7991cd0dFcb48F0a06a40FA1aF46EBC" # Protocol pause guardian
712
allocationExchangeOwner: &allocationExchangeOwner "0x3E5e9111Ae8eB78Fe1CC3bb8915d5D461F3Ef9A9" # Allocation Exchange owner
813

@@ -131,7 +136,7 @@ contracts:
131136
- fn: "setIssuancePerBlock"
132137
issuancePerBlock: "114155251141552511415" # per block increase of total supply, blocks in a year = 365*60*60*24/12
133138
- fn: "setSubgraphAvailabilityOracle"
134-
subgraphAvailabilityOracle: *availabilityOracle
139+
subgraphAvailabilityOracle: "${{SubgraphAvailabilityManager.address}}"
135140
- fn: "syncAllContracts"
136141
AllocationExchange:
137142
init:
@@ -151,11 +156,8 @@ contracts:
151156
pauseGuardian: *pauseGuardian
152157
SubgraphAvailabilityManager:
153158
init:
154-
governor: "${{Env.deployer}}"
159+
governor: *governor
155160
rewardsManager: "${{RewardsManager.address}}"
156161
executionThreshold: 5
157162
voteTimeLimit: 300
158-
oracles: [*availabilityOracle, *availabilityOracle, *availabilityOracle, *availabilityOracle, *availabilityOracle]
159-
calls:
160-
- fn: "transferOwnership"
161-
owner: *governor
163+
oracles: *availabilityOracles

packages/contracts/config/graph.arbitrum-localhost.yml

+9-7
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@ general:
22
arbitrator: &arbitrator "0x4237154FE0510FdE3575656B60c68a01B9dCDdF8" # Arbitration Council
33
governor: &governor "0x1257227a2ECA34834940110f7B5e341A5143A2c4" # Graph Council
44
authority: &authority "0x12B8D08b116E1E3cc29eE9Cf42bB0AA8129C3215" # Authority that signs payment vouchers
5-
availabilityOracle: &availabilityOracle "0x7694a48065f063a767a962610C6717c59F36b445" # Subgraph Availability Oracle
5+
availabilityOracles: &availabilityOracles # Subgraph Availability Oracles
6+
- "0x7694a48065f063a767a962610C6717c59F36b445"
7+
- "0x7694a48065f063a767a962610C6717c59F36b445"
8+
- "0x7694a48065f063a767a962610C6717c59F36b445"
9+
- "0x7694a48065f063a767a962610C6717c59F36b445"
10+
- "0x7694a48065f063a767a962610C6717c59F36b445"
611
pauseGuardian: &pauseGuardian "0x601060e0DC5349AA55EC73df5A58cB0FC1cD2e3C" # Protocol pause guardian
712
allocationExchangeOwner: &allocationExchangeOwner "0xbD38F7b67a591A5cc7D642e1026E5095B819d952" # Allocation Exchange owner
813

@@ -132,7 +137,7 @@ contracts:
132137
- fn: "setIssuancePerBlock"
133138
issuancePerBlock: "6036500000000000000" # per block increase of total supply, blocks in a year = 365*60*60*24/12
134139
- fn: "setSubgraphAvailabilityOracle"
135-
subgraphAvailabilityOracle: *availabilityOracle
140+
subgraphAvailabilityOracle: "${{SubgraphAvailabilityManager.address}}"
136141
- fn: "syncAllContracts"
137142
AllocationExchange:
138143
init:
@@ -152,11 +157,8 @@ contracts:
152157
pauseGuardian: *pauseGuardian
153158
SubgraphAvailabilityManager:
154159
init:
155-
governor: "${{Env.deployer}}"
160+
governor: *governor
156161
rewardsManager: "${{RewardsManager.address}}"
157162
executionThreshold: 5
158163
voteTimeLimit: 300
159-
oracles: [*availabilityOracle, *availabilityOracle, *availabilityOracle, *availabilityOracle, *availabilityOracle]
160-
calls:
161-
- fn: "transferOwnership"
162-
owner: *governor
164+
oracles: *availabilityOracles

packages/contracts/config/graph.arbitrum-sepolia.yml

+14-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@ general:
22
arbitrator: &arbitrator "0x1726A5d52e279d02ff4732eCeB2D67BFE5Add328" # EOA (TODO: update to a multisig)
33
governor: &governor "0x72ee30d43Fb5A90B3FE983156C5d2fBE6F6d07B3" # EOA (TODO: update to a multisig)
44
authority: &authority "0x49D4CFC037430cA9355B422bAeA7E9391e1d3215" # Authority that signs payment vouchers
5-
availabilityOracle: &availabilityOracle "0x5e4e823Ed094c035133eEC5Ec0d08ae1Af04e9Fa" # Subgraph Availability Oracle
5+
availabilityOracles: &availabilityOracles # Array of Subgraph Availability Oracles
6+
- "0x5e4e823Ed094c035133eEC5Ec0d08ae1Af04e9Fa"
7+
- "0x5aeE4c46cF9260E85E630ca7d9D757D5D5DbaFD6"
8+
- "0x7369Cf2a917296c36f506144f3dE552403d1e1f1"
9+
- "0x1e1f84c07e0471fc979f6f08228b0bd34cda9e54"
10+
- "0x711aEA1f358DFAf74D34B4B525F9190e631F406C"
611
pauseGuardian: &pauseGuardian "0xa0444508232dA3FA6C2f96a5f105f3f0cc0d20D7" # Protocol pause guardian
712
allocationExchangeOwner: &allocationExchangeOwner "0x72ee30d43Fb5A90B3FE983156C5d2fBE6F6d07B3" # Allocation Exchange owner
813

@@ -131,7 +136,7 @@ contracts:
131136
- fn: "setIssuancePerBlock"
132137
issuancePerBlock: "6036500000000000000" # per block increase of total supply, blocks in a year = 365*60*60*24/12
133138
- fn: "setSubgraphAvailabilityOracle"
134-
subgraphAvailabilityOracle: *availabilityOracle
139+
subgraphAvailabilityOracle: "${{SubgraphAvailabilityManager.address}}"
135140
- fn: "syncAllContracts"
136141
AllocationExchange:
137142
init:
@@ -149,3 +154,10 @@ contracts:
149154
- fn: "syncAllContracts"
150155
- fn: "setPauseGuardian"
151156
pauseGuardian: *pauseGuardian
157+
SubgraphAvailabilityManager:
158+
init:
159+
governor: *governor
160+
rewardsManager: "${{RewardsManager.address}}"
161+
executionThreshold: 5
162+
voteTimeLimit: 300
163+
oracles: *availabilityOracles

packages/contracts/config/graph.hardhat.yml

-10
Original file line numberDiff line numberDiff line change
@@ -158,13 +158,3 @@ contracts:
158158
controller: "${{Controller.address}}"
159159
calls:
160160
- fn: "syncAllContracts"
161-
SubgraphAvailabilityManager:
162-
init:
163-
governor: "${{Env.deployer}}"
164-
rewardsManager: "${{RewardsManager.address}}"
165-
executionThreshold: 5
166-
voteTimeLimit: 300
167-
oracles: [*availabilityOracle, *availabilityOracle, *availabilityOracle, *availabilityOracle, *availabilityOracle]
168-
calls:
169-
- fn: "transferOwnership"
170-
owner: *governor

packages/contracts/config/graph.localhost.yml

-10
Original file line numberDiff line numberDiff line change
@@ -159,13 +159,3 @@ contracts:
159159
controller: "${{Controller.address}}"
160160
calls:
161161
- fn: "syncAllContracts"
162-
SubgraphAvailabilityManager:
163-
init:
164-
governor: "${{Env.deployer}}"
165-
rewardsManager: "${{RewardsManager.address}}"
166-
executionThreshold: 5
167-
voteTimeLimit: 300
168-
oracles: [*availabilityOracle, *availabilityOracle, *availabilityOracle, *availabilityOracle, *availabilityOracle]
169-
calls:
170-
- fn: "transferOwnership"
171-
owner: *governor

packages/contracts/config/graph.sepolia.yml

-10
Original file line numberDiff line numberDiff line change
@@ -159,13 +159,3 @@ contracts:
159159
controller: "${{Controller.address}}"
160160
calls:
161161
- fn: "syncAllContracts"
162-
SubgraphAvailabilityManager:
163-
init:
164-
governor: "${{Env.deployer}}"
165-
rewardsManager: "${{RewardsManager.address}}"
166-
executionThreshold: 5
167-
voteTimeLimit: 300
168-
oracles: [*availabilityOracle, *availabilityOracle, *availabilityOracle, *availabilityOracle, *availabilityOracle]
169-
calls:
170-
- fn: "transferOwnership"
171-
owner: *governor
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,26 @@
11
import { expect } from 'chai'
22
import hre from 'hardhat'
33
import { isGraphL2ChainId } from '@graphprotocol/sdk'
4+
import { NamedAccounts } from '@graphprotocol/sdk/gre'
45

56
describe('[L1] RewardsManager configuration', () => {
67
const graph = hre.graph()
78
const { RewardsManager } = graph.contracts
89

9-
before(function () {
10+
let namedAccounts: NamedAccounts
11+
12+
before(async function () {
1013
if (isGraphL2ChainId(graph.chainId)) this.skip()
14+
namedAccounts = await graph.getNamedAccounts()
1115
})
1216

1317
it('issuancePerBlock should match "issuancePerBlock" in the config file', async function () {
1418
const value = await RewardsManager.issuancePerBlock()
1519
expect(value).eq('114693500000000000000') // hardcoded as it's set with a function call rather than init parameter
1620
})
21+
22+
it('should allow subgraph availability oracle to deny rewards', async function () {
23+
const availabilityOracle = await RewardsManager.subgraphAvailabilityOracle()
24+
expect(availabilityOracle).eq(namedAccounts.availabilityOracle.address)
25+
})
1726
})

packages/contracts/test/e2e/deployment/config/l2/rewardsManager.test.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import hre from 'hardhat'
44

55
describe('[L2] RewardsManager configuration', () => {
66
const graph = hre.graph()
7-
const { RewardsManager } = graph.contracts
7+
const { RewardsManager, SubgraphAvailabilityManager } = graph.contracts
88

99
before(function () {
1010
if (isGraphL1ChainId(graph.chainId)) this.skip()
@@ -14,4 +14,9 @@ describe('[L2] RewardsManager configuration', () => {
1414
const value = await RewardsManager.issuancePerBlock()
1515
expect(value).eq('6036500000000000000') // hardcoded as it's set with a function call rather than init parameter
1616
})
17+
18+
it('should allow subgraph availability manager to deny rewards', async function () {
19+
const availabilityOracle = await RewardsManager.subgraphAvailabilityOracle()
20+
expect(availabilityOracle).eq(SubgraphAvailabilityManager.address)
21+
})
1722
})
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,13 @@
11
import { expect } from 'chai'
22
import hre from 'hardhat'
3-
import { NamedAccounts } from '@graphprotocol/sdk/gre'
43

54
describe('RewardsManager configuration', () => {
65
const {
7-
getNamedAccounts,
86
contracts: { RewardsManager, Controller },
97
} = hre.graph()
108

11-
let namedAccounts: NamedAccounts
12-
13-
before(async () => {
14-
namedAccounts = await getNamedAccounts()
15-
})
16-
179
it('should be controlled by Controller', async function () {
1810
const controller = await RewardsManager.controller()
1911
expect(controller).eq(Controller.address)
2012
})
21-
22-
it('should allow subgraph availability oracle to deny rewards', async function () {
23-
const availabilityOracle = await RewardsManager.subgraphAvailabilityOracle()
24-
expect(availabilityOracle).eq(namedAccounts.availabilityOracle.address)
25-
})
2613
})

packages/contracts/test/unit/rewards/subgraphAvailability.test.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import { ethers } from 'hardhat'
66

77
import type { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers'
88

9-
import { SubgraphAvailabilityManager } from '../../build/types/SubgraphAvailabilityManager'
10-
import { IRewardsManager } from '../../build/types/IRewardsManager'
9+
import { SubgraphAvailabilityManager } from '../../../build/types/SubgraphAvailabilityManager'
10+
import { IRewardsManager } from '../../../build/types/IRewardsManager'
1111

1212
import { NetworkFixture } from '../lib/fixtures'
1313

@@ -64,7 +64,6 @@ describe('SubgraphAvailabilityManager', () => {
6464
fixture = new NetworkFixture(graph.provider)
6565
contracts = await fixture.load(governor)
6666
rewardsManager = contracts.RewardsManager as IRewardsManager
67-
console.log('Llega hasta aca?')
6867
const deployResult = await deploy(DeployType.Deploy, governor, {
6968
name: 'SubgraphAvailabilityManager',
7069
args: [governor.address, rewardsManager.address, executionThreshold, voteTimeLimit, oracles],

packages/sdk/src/deployments/network/deployment/contracts/list.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ export const GraphNetworkSharedContractNameList = [
1313
'RewardsManager',
1414
'DisputeManager',
1515
'AllocationExchange',
16-
'SubgraphAvailabilityManager',
1716
] as const
1817
export const GraphNetworkOptionalContractNameList = [
1918
'IENS',
@@ -35,6 +34,7 @@ export const GraphNetworkL2ContractNameList = [
3534
'L2GNS',
3635
'L2Staking',
3736
'L2GraphTokenGateway',
37+
'SubgraphAvailabilityManager',
3838
] as const
3939

4040
export const GraphNetworkContractNameList = [

packages/sdk/src/deployments/network/deployment/contracts/load.ts

+2
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import type {
4141
L2GNS,
4242
L2Curation,
4343
StakingExtension,
44+
SubgraphAvailabilityManager,
4445
} from '@graphprotocol/contracts'
4546
import { ContractList } from '../../../lib/types/contract'
4647
import { loadArtifact } from '../../../lib/deploy/artifacts'
@@ -63,6 +64,7 @@ export interface GraphNetworkContracts extends ContractList<GraphNetworkContract
6364
GraphCurationToken: GraphCurationToken
6465
StakingExtension: StakingExtension
6566
IENS?: IENS
67+
SubgraphAvailabilityManager: SubgraphAvailabilityManager
6668

6769
// Only L1
6870
L1GraphToken?: GraphToken

0 commit comments

Comments
 (0)