11import Debug from 'debug' ;
2- import { getChainDefaults } from '../../common/utils/config.js' ;
2+ import { getId , getChainDefaults } from '../../common/utils/config.js' ;
33import IExecContractsClient from '../../common/utils/IExecContractsClient.js' ;
44import { EnhancedWallet } from '../../common/utils/signers.js' ;
55import { loadChainConf } from './fs.js' ;
@@ -8,27 +8,21 @@ import { getReadOnlyProvider } from '../../common/utils/providers.js';
88
99const debug = Debug ( 'iexec:chains' ) ;
1010
11- const CHAIN_ALIASES_MAP = {
12- 1 : 'mainnet' ,
13- 134 : 'bellecour' ,
14- } ;
15-
16- const CHAIN_NAME_MAP = {
17- 1 : { id : '1' } ,
18- mainnet : { id : '1' } ,
19- 134 : { id : '134' } ,
20- bellecour : { id : '134' } ,
21- } ;
22-
2311const createChainFromConf = (
2412 chainName ,
2513 chainConf ,
26- { bridgeConf, providerOptions, txOptions = { } } = { } ,
14+ {
15+ bridgeConf,
16+ providerOptions,
17+ txOptions = { } ,
18+ allowExperimentalNetworks = false ,
19+ } = { } ,
2720) => {
2821 try {
2922 const chain = { ...chainConf } ;
3023 const provider = getReadOnlyProvider ( chainConf . host , {
3124 providers : providerOptions ,
25+ allowExperimentalNetworks,
3226 } ) ;
3327
3428 chain . name = chainName ;
@@ -45,6 +39,7 @@ const createChainFromConf = (
4539 chain . bridgedNetwork = { ...bridgeConf } ;
4640 const bridgeProvider = getReadOnlyProvider ( bridgeConf . host , {
4741 providers : providerOptions ,
42+ allowExperimentalNetworks,
4843 } ) ;
4944 chain . bridgedNetwork . contracts = new IExecContractsClient ( {
5045 provider : bridgeProvider ,
@@ -63,26 +58,34 @@ const createChainFromConf = (
6358} ;
6459
6560export const loadChain = async (
66- chainName ,
61+ chainNameOrId ,
6762 { txOptions, spinner = Spinner ( ) } = { } ,
6863) => {
6964 try {
7065 const chainsConf = await loadChainConf ( ) ;
71- debug ( 'chainsConf' , chainsConf ) ;
66+ const { allowExperimentalNetworks } = chainsConf ;
7267 const providerOptions = chainsConf . providers ;
7368 let name ;
7469 let loadedConf ;
75- if ( chainName ) {
76- if ( chainsConf . chains [ chainName ] ) {
77- loadedConf = chainsConf . chains [ chainName ] ;
78- name = chainName ;
70+ if ( chainNameOrId ) {
71+ if ( chainsConf . chains [ chainNameOrId ] ) {
72+ loadedConf = chainsConf . chains [ chainNameOrId ] ;
73+ name = chainNameOrId ;
7974 } else {
80- const alias = CHAIN_ALIASES_MAP [ chainName ] ;
75+ const { name : alias } = getChainDefaults (
76+ getId ( chainNameOrId , {
77+ allowExperimentalNetworks,
78+ } ) ,
79+ {
80+ allowExperimentalNetworks,
81+ } ,
82+ ) ;
8183 if ( alias && chainsConf . chains [ alias ] ) {
8284 loadedConf = chainsConf . chains [ alias ] ;
8385 name = alias ;
8486 }
85- if ( ! name ) throw Error ( `Missing "${ chainName } " chain in "chain.json"` ) ;
87+ if ( ! name )
88+ throw Error ( `Missing "${ chainNameOrId } " chain in "chain.json"` ) ;
8689 }
8790 } else if ( chainsConf . default ) {
8891 if ( chainsConf . chains [ chainsConf . default ] ) {
@@ -96,11 +99,16 @@ export const loadChain = async (
9699 throw Error ( 'Missing chain parameter. Check your "chain.json" file' ) ;
97100
98101 const idConf = {
99- ...CHAIN_NAME_MAP [ name ] ,
100- ...( loadedConf . id && { id : loadedConf . id } ) ,
102+ id :
103+ loadedConf . id ||
104+ getId ( name , {
105+ allowExperimentalNetworks,
106+ } ) ,
101107 } ;
102108
103- const defaultConf = getChainDefaults ( idConf ) ;
109+ const defaultConf = getChainDefaults ( idConf . id , {
110+ allowExperimentalNetworks,
111+ } ) ;
104112
105113 debug ( 'loading chain' , name ) ;
106114 debug ( 'loadedConf' , loadedConf ) ;
@@ -120,18 +128,30 @@ export const loadChain = async (
120128 if ( chainsConf . chains [ bridgedChainNameOrId ] ) {
121129 bridgeLoadedConf = chainsConf . chains [ bridgedChainNameOrId ] ;
122130 } else {
123- const alias = CHAIN_ALIASES_MAP [ bridgedChainNameOrId ] ;
131+ const { name : alias } = getChainDefaults (
132+ getId ( bridgedChainNameOrId , {
133+ allowExperimentalNetworks,
134+ } ) ,
135+ {
136+ allowExperimentalNetworks,
137+ } ,
138+ ) ;
124139 if ( alias && chainsConf . chains [ alias ] ) {
125140 bridgeLoadedConf = chainsConf . chains [ alias ] ;
126141 }
127142 if ( ! bridgeLoadedConf )
128143 throw Error ( `Missing "${ name } " chain in "chain.json"` ) ;
129144 }
130145 const bridgeIdConf = {
131- ...CHAIN_NAME_MAP [ bridgedChainNameOrId ] ,
132- ...( bridgeLoadedConf . id && { id : bridgeLoadedConf . id } ) ,
146+ id :
147+ bridgeLoadedConf . id ||
148+ getId ( bridgedChainNameOrId , {
149+ allowExperimentalNetworks,
150+ } ) ,
133151 } ;
134- const bridgeDefaultConf = getChainDefaults ( bridgeIdConf ) ;
152+ const bridgeDefaultConf = getChainDefaults ( bridgeIdConf . id , {
153+ allowExperimentalNetworks,
154+ } ) ;
135155 debug ( 'bridgeLoadedConf' , bridgeLoadedConf ) ;
136156 debug ( 'bridgeDefaultConf' , defaultConf ) ;
137157 bridgeConf = {
@@ -150,6 +170,7 @@ export const loadChain = async (
150170 bridgeConf,
151171 providerOptions,
152172 txOptions,
173+ allowExperimentalNetworks,
153174 } ) ;
154175 spinner . info ( `Using chain ${ name } [chainId: ${ chain . id } ]` ) ;
155176 return chain ;
0 commit comments