Skip to content

Commit f3fd912

Browse files
authored
Add flag to use AI ServiceRegistry contract address for Livepeer AI Subnet (#3186)
1 parent ff1f517 commit f3fd912

File tree

3 files changed

+25
-25
lines changed

3 files changed

+25
-25
lines changed

cmd/livepeer/livepeer.go

+1
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ func parseLivepeerConfig() starter.LivepeerConfig {
156156
cfg.HevcDecoding = flag.Bool("hevcDecoding", *cfg.HevcDecoding, "Enable or disable HEVC decoding")
157157

158158
// AI:
159+
cfg.AIServiceRegistry = flag.Bool("aiServiceRegistry", *cfg.AIServiceRegistry, "Set to true to use an AI ServiceRegistry contract address")
159160
cfg.AIWorker = flag.Bool("aiWorker", *cfg.AIWorker, "Set to true to run an AI worker")
160161
cfg.AIModels = flag.String("aiModels", *cfg.AIModels, "Set models (pipeline:model_id) for AI worker to load upon initialization")
161162
cfg.AIModelsDir = flag.String("aiModelsDir", *cfg.AIModelsDir, "Set directory where AI model weights are stored")

cmd/livepeer/starter/starter.go

+12-4
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ type LivepeerConfig struct {
9292
HttpIngest *bool
9393
Orchestrator *bool
9494
Transcoder *bool
95+
AIServiceRegistry *bool
9596
AIWorker *bool
9697
Gateway *bool
9798
Broadcaster *bool
@@ -199,6 +200,7 @@ func DefaultLivepeerConfig() LivepeerConfig {
199200
defaultTestTranscoder := true
200201

201202
// AI:
203+
defaultAIServiceRegistry := false
202204
defaultAIWorker := false
203205
defaultAIModels := ""
204206
defaultAIModelsDir := ""
@@ -298,10 +300,11 @@ func DefaultLivepeerConfig() LivepeerConfig {
298300
TestTranscoder: &defaultTestTranscoder,
299301

300302
// AI:
301-
AIWorker: &defaultAIWorker,
302-
AIModels: &defaultAIModels,
303-
AIModelsDir: &defaultAIModelsDir,
304-
AIRunnerImage: &defaultAIRunnerImage,
303+
AIServiceRegistry: &defaultAIServiceRegistry,
304+
AIWorker: &defaultAIWorker,
305+
AIModels: &defaultAIModels,
306+
AIModelsDir: &defaultAIModelsDir,
307+
AIRunnerImage: &defaultAIRunnerImage,
305308

306309
// Onchain:
307310
EthAcctAddr: &defaultEthAcctAddr,
@@ -706,6 +709,11 @@ func StartLivepeer(ctx context.Context, cfg LivepeerConfig) {
706709
CheckTxTimeout: time.Duration(int64(*cfg.TxTimeout) * int64(*cfg.MaxTxReplacements+1)),
707710
}
708711

712+
if *cfg.AIServiceRegistry {
713+
// For the time-being Livepeer AI Subnet uses its own ServiceRegistry, so we define it here
714+
ethCfg.ServiceRegistryAddr = ethcommon.HexToAddress("0x04C0b249740175999E5BF5c9ac1dA92431EF34C5")
715+
}
716+
709717
client, err := eth.NewClient(ethCfg)
710718
if err != nil {
711719
glog.Errorf("Failed to create Livepeer Ethereum client: %v", err)

eth/client.go

+12-21
Original file line numberDiff line numberDiff line change
@@ -167,18 +167,22 @@ type LivepeerEthClientConfig struct {
167167
Signer types.Signer
168168
ControllerAddr ethcommon.Address
169169
CheckTxTimeout time.Duration
170+
171+
// For the time-being Livepeer AI Subnet uses its own ServiceRegistry, so we define it here
172+
ServiceRegistryAddr ethcommon.Address
170173
}
171174

172175
func NewClient(cfg LivepeerEthClientConfig) (LivepeerEthClient, error) {
173176

174177
backend := NewBackend(cfg.EthClient, cfg.Signer, cfg.GasPriceMonitor, cfg.TransactionManager)
175178

176179
return &client{
177-
accountManager: cfg.AccountManager,
178-
backend: backend,
179-
tm: cfg.TransactionManager,
180-
controllerAddr: cfg.ControllerAddr,
181-
checkTxTimeout: cfg.CheckTxTimeout,
180+
accountManager: cfg.AccountManager,
181+
backend: backend,
182+
tm: cfg.TransactionManager,
183+
controllerAddr: cfg.ControllerAddr,
184+
checkTxTimeout: cfg.CheckTxTimeout,
185+
serviceRegistryAddr: cfg.ServiceRegistryAddr,
182186
}, nil
183187
}
184188

@@ -211,28 +215,15 @@ func (c *client) setContracts(opts *bind.TransactOpts) error {
211215

212216
glog.V(common.SHORT).Infof("LivepeerToken: %v", c.tokenAddr.Hex())
213217

214-
chainID, err := c.backend.ChainID(context.Background())
215-
if err != nil {
216-
glog.Errorf("Failed to get chain ID from remote ethereum node: %v", err)
217-
return err
218-
}
219-
220-
// TODO: This is a temporary setup for a separate AIServiceRegistry. Revise this when AI subnet merges with the mainnet.
221-
var serviceRegistryAddr ethcommon.Address
222-
arbitrumOneChainID := big.NewInt(42161)
223-
if chainID.Cmp(arbitrumOneChainID) == 0 {
224-
serviceRegistryAddr = ethcommon.HexToAddress("0x04C0b249740175999E5BF5c9ac1dA92431EF34C5")
225-
} else {
226-
serviceRegistryAddr, err = c.GetContract(crypto.Keccak256Hash([]byte("ServiceRegistry")))
218+
if c.serviceRegistryAddr == (ethcommon.Address{}) {
219+
c.serviceRegistryAddr, err = c.GetContract(crypto.Keccak256Hash([]byte("ServiceRegistry")))
227220
if err != nil {
228221
glog.Errorf("Error getting ServiceRegistry address: %v", err)
229222
return err
230223
}
231224
}
232225

233-
c.serviceRegistryAddr = serviceRegistryAddr
234-
235-
serviceRegistry, err := contracts.NewServiceRegistry(serviceRegistryAddr, c.backend)
226+
serviceRegistry, err := contracts.NewServiceRegistry(c.serviceRegistryAddr, c.backend)
236227
if err != nil {
237228
glog.Errorf("Error creating ServiceRegistry binding: %v", err)
238229
return err

0 commit comments

Comments
 (0)