@@ -5,9 +5,9 @@ import { lazyFunction, lazyObject } from 'hardhat/plugins'
5
5
import { getAddressBook } from '../cli/address-book'
6
6
import { loadContracts } from '../cli/contracts'
7
7
import { getItemValue , readConfig } from '../cli/config'
8
- import { Account , GREOptions , NamedAccounts } from './type-extensions'
8
+ import { GREOptions , NamedAccounts } from './type-extensions'
9
9
import fs from 'fs'
10
- import { Signer , VoidSigner } from 'ethers'
10
+ import { SignerWithAddress } from '@nomiclabs/hardhat- ethers/signers '
11
11
12
12
// Graph Runtime Environment (GRE) extensions for the HRE
13
13
extendEnvironment ( ( hre : HardhatRuntimeEnvironment ) => {
@@ -33,36 +33,40 @@ extendEnvironment((hre: HardhatRuntimeEnvironment) => {
33
33
'allocationExchangeOwner' ,
34
34
]
35
35
36
- const getTestAccounts = async ( ) : Promise < Account [ ] > => {
37
- const accounts = [ ]
38
- const signers : Signer [ ] = await hre . ethers . getSigners ( )
36
+ const getTestAccounts = async ( ) : Promise < SignerWithAddress [ ] > => {
37
+ // Get list of privileged accounts we don't want as test accounts
38
+ const namedAccounts = await getNamedAccounts ( )
39
+ const blacklist = namedAccountList . map ( ( a ) => {
40
+ const account = namedAccounts [ a ] as SignerWithAddress
41
+ return account . address
42
+ } )
43
+ blacklist . push ( ( await getDeployer ( ) ) . address )
39
44
40
- // Skip deployer and named accounts
41
- for ( let i = namedAccountList . length + 1 ; i < signers . length ; i ++ ) {
42
- accounts . push ( { signer : signers [ i ] , address : await signers [ i ] . getAddress ( ) } )
43
- }
44
- return accounts
45
+ // Get signers and filter out blacklisted accounts
46
+ let signers : SignerWithAddress [ ] = await hre . ethers . getSigners ( )
47
+ signers = signers . filter ( ( s ) => {
48
+ return ! blacklist . includes ( s . address )
49
+ } )
50
+
51
+ return signers
45
52
}
46
53
47
- // Returns void signers. Upgrades to signer on loca networks.
48
54
const getNamedAccounts = async ( ) : Promise < NamedAccounts > => {
49
- const namedAccounts = namedAccountList . reduce ( ( acc , name ) => {
55
+ const namedAccounts = namedAccountList . reduce ( async ( accountsPromise , name ) => {
56
+ const accounts = await accountsPromise
50
57
const address = getItemValue ( readConfig ( graphConfigPath , true ) , `general/${ name } ` )
51
-
52
- if ( chainId === '1337' ) {
53
- const signer = hre . ethers . provider . getSigner ( address )
54
- acc [ name ] = { signer, address : address }
55
- } else {
56
- const signer = new VoidSigner ( address )
57
- acc [ name ] = { signer, address : signer . address }
58
- }
59
-
60
- return acc
61
- } , { } as NamedAccounts )
58
+ accounts [ name ] = await hre . ethers . getSigner ( address )
59
+ return accounts
60
+ } , Promise . resolve ( { } as NamedAccounts ) )
62
61
63
62
return namedAccounts
64
63
}
65
64
65
+ const getDeployer = async ( ) => {
66
+ const signer = hre . ethers . provider . getSigner ( 0 )
67
+ return hre . ethers . getSigner ( await signer . getAddress ( ) )
68
+ }
69
+
66
70
return {
67
71
addressBook : lazyObject ( ( ) => getAddressBook ( addressBookPath , chainId ) ) ,
68
72
graphConfig : lazyObject ( ( ) => readConfig ( graphConfigPath , true ) ) ,
@@ -71,10 +75,7 @@ extendEnvironment((hre: HardhatRuntimeEnvironment) => {
71
75
) ,
72
76
getNamedAccounts : lazyFunction ( ( ) => getNamedAccounts ) ,
73
77
getTestAccounts : lazyFunction ( ( ) => getTestAccounts ) ,
74
- getDeployer : lazyFunction ( ( ) => async ( ) => {
75
- const signer = hre . ethers . provider . getSigner ( 0 )
76
- return { signer, address : await signer . getAddress ( ) }
77
- } ) ,
78
+ getDeployer : lazyFunction ( ( ) => getDeployer ) ,
78
79
}
79
80
}
80
81
} )
0 commit comments