// Start starts the SequencerTracker
func (st *Tracker) Start(parentCtx context.Context) {
st.startOnce.Do(func() {
ctx, cancel := context.WithTimeout(parentCtx, st.timeout)
defer cancel()
addr, err := st.em.TrustedSequencer(ctx)
if err != nil {
log.Fatalf("failed to get sequencer addr: %v", err)
return
}
log.Infof("current sequencer addr: %s", addr.Hex())
st.setAddr(addr)
url, err := st.em.TrustedSequencerURL(ctx)
if err != nil {
log.Fatalf("failed to get sequencer addr: %v", err)
return
}
log.Infof("current sequencer url: %s", url)
st.setUrl(url)
if st.trackChanges {
log.Info("sequencer tracking enabled")
go st.trackAddrChanges(parentCtx)
go st.trackUrlChanges(parentCtx)
}
})
}
分析
当TrackSequence设置为true时,会在TrackSequencerPollInterval间隔内,检查L1合约内的TrustedSequencer地址和URL是否有变更,并更新本地
场景
因为TrustedSequencer地址和URL变更频率很低,默认情况下TrackSequence可以设置为false,对比变更比较频繁的场景,可以将TrackSequence改为true
注:当cdk-data-availability服务重启时,会自动对齐配置
版权属于:区块链中文技术社区 / 转载原创者
本文链接:https://bcskill.com/index.php/archives/1985.html
相关技术文章仅限于相关区块链底层技术研究,禁止用于非法用途,后果自负!本站严格遵守一切相关法律政策!