Skip to content

Commit d435ebc

Browse files
feat: add drs version split between testnets and mainnet (#1243)
1 parent d97075f commit d435ebc

File tree

5 files changed

+57
-26
lines changed

5 files changed

+57
-26
lines changed

cmd/relayer/setup/setup.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ func installRelayerDependencies(
312312
return err
313313
}
314314

315-
drsInfo, err := firebaseutils.GetLatestDrsVersionCommit(drsVersion)
315+
drsInfo, err := firebaseutils.GetLatestDrsVersionCommit(drsVersion, hd.Environment)
316316
if err != nil {
317317
pterm.Error.Println("failed to retrieve latest DRS version: ", err)
318318
return err
@@ -326,6 +326,10 @@ func installRelayerDependencies(
326326
raCommit = drsInfo.WasmCommit
327327
}
328328

329+
if raCommit == "UNRELEASED" {
330+
return fmt.Errorf("rollapp does not support drs version: %s", drsVersion)
331+
}
332+
329333
rbi := dependencies.NewRollappBinaryInfo(
330334
raResp.Rollapp.GenesisInfo.Bech32Prefix,
331335
raCommit,

cmd/rollapp/drs/update/update.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,10 @@ func Cmd() *cobra.Command {
6262
pterm.Info.Println("Installing the latest version", err)
6363
}
6464

65-
drsInfo, err := firebaseutils.GetLatestDrsVersionCommit(drsVersion)
65+
drsInfo, err := firebaseutils.GetLatestDrsVersionCommit(
66+
drsVersion,
67+
rollerData.HubData.Environment,
68+
)
6669
if err != nil {
6770
pterm.Error.Println("Failed to get the latest commit:", err)
6871
return
@@ -76,6 +79,11 @@ func Cmd() *cobra.Command {
7679
raCommit = drsInfo.WasmCommit
7780
}
7881

82+
if raCommit == "UNRELEASED" {
83+
pterm.Error.Println("rollapp does not support drs version: " + drsVersion)
84+
return
85+
}
86+
7987
// if doesn't match, take latest as the reference
8088
// download the latest, build into ~/.roller/tmp
8189
if raCommit[:6] == cv {

cmd/rollapp/init/init.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ func Cmd() *cobra.Command {
188188
}
189189

190190
if !shouldSkipBinaryInstallation {
191-
_, _, err = dependencies.InstallBinaries(true, raRespMock)
191+
_, _, err = dependencies.InstallBinaries(true, raRespMock, env)
192192
if err != nil {
193193
pterm.Error.Println("failed to install binaries: ", err)
194194
return
@@ -241,7 +241,7 @@ func Cmd() *cobra.Command {
241241
}
242242

243243
start := time.Now()
244-
builtDeps, _, err := dependencies.InstallBinaries(false, *raResponse)
244+
builtDeps, _, err := dependencies.InstallBinaries(false, *raResponse, env)
245245
if err != nil {
246246
pterm.Error.Println("failed to install binaries: ", err)
247247
return

utils/dependencies/dependencies.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import (
2626
"github.com/dymensionxyz/roller/utils/rollapp"
2727
)
2828

29-
func InstallBinaries(withMockDA bool, raResp rollapp.ShowRollappResponse) (
29+
func InstallBinaries(withMockDA bool, raResp rollapp.ShowRollappResponse, env string) (
3030
map[string]types.Dependency,
3131
map[string]types.Dependency,
3232
error,
@@ -68,7 +68,7 @@ func InstallBinaries(withMockDA bool, raResp rollapp.ShowRollappResponse) (
6868

6969
drsVersion = strconv.Itoa(as.RollappParams.Params.DrsVersion)
7070
pterm.Info.Println("RollApp drs version from the genesis file : ", drsVersion)
71-
drsInfo, err := firebaseutils.GetLatestDrsVersionCommit(drsVersion)
71+
drsInfo, err := firebaseutils.GetLatestDrsVersionCommit(drsVersion, env)
7272
if err != nil {
7373
return nil, nil, err
7474
}
@@ -80,6 +80,10 @@ func InstallBinaries(withMockDA bool, raResp rollapp.ShowRollappResponse) (
8080
raCommit = drsInfo.WasmCommit
8181
}
8282

83+
if raCommit == "UNRELEASED" {
84+
return nil, nil, errors.New("rollapp does not support drs version: " + drsVersion)
85+
}
86+
8387
pterm.Info.Println(
8488
"Latest RollApp binary commit for the current DRS version: ",
8589
raCommit[:6],

utils/firebase/drs.go

Lines changed: 35 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66

77
"cloud.google.com/go/firestore"
88
firebase "firebase.google.com/go"
9-
"google.golang.org/api/iterator"
109
"google.golang.org/api/option"
1110
)
1211

@@ -20,7 +19,9 @@ type DrsVersionInfo struct {
2019
// GetLatestDrsVersionCommit
2120
// Fetch DRS version information using the nested collection path
2221
// Path format: versions/{version}/revisions/{revision}
23-
func GetLatestDrsVersionCommit(drsVersion string) (*DrsVersionInfo, error) {
22+
// Path format: /testnets/versions/{version}/revisions/{revision}/version-info
23+
// Path format: /mainnet/versions/{version}/revisions/{revision}/version-info
24+
func GetLatestDrsVersionCommit(drsVersion string, env string) (*DrsVersionInfo, error) {
2425
ctx := context.Background()
2526
conf := &firebase.Config{ProjectID: "drs-metadata"}
2627
app, err := firebase.NewApp(ctx, conf, option.WithoutAuthentication())
@@ -34,27 +35,41 @@ func GetLatestDrsVersionCommit(drsVersion string) (*DrsVersionInfo, error) {
3435
}
3536
defer client.Close()
3637

37-
// Fetch DRS version information using the nested collection path
38-
// Path format: versions/{version}/revisions/{revision}
39-
drsDoc := client.Collection("versions").
40-
Doc(drsVersion).
41-
Collection("revisions").
42-
OrderBy("timestamp", firestore.Desc).
43-
Limit(1).
44-
Documents(ctx)
45-
46-
doc, err := drsDoc.Next()
47-
if err == iterator.Done {
48-
return nil, err
38+
var rootCollection string
39+
if env == "mainnet" {
40+
rootCollection = "mainnet"
41+
} else {
42+
rootCollection = "testnets"
4943
}
50-
if err != nil {
51-
return nil, err
44+
45+
// Get the path to revisions
46+
versionsDoc := client.Collection(rootCollection).Doc("versions")
47+
drsVersionColl := versionsDoc.Collection(drsVersion)
48+
revisionsDoc := drsVersionColl.Doc("revisions")
49+
50+
fmt.Println(revisionsDoc.Path)
51+
52+
// Find the highest revision number by trying incrementing numbers
53+
var latestDoc *firestore.DocumentSnapshot
54+
for i := 1; ; i++ {
55+
doc, err := drsVersionColl.Doc("revisions").
56+
Collection(fmt.Sprintf("%d", i)).
57+
Doc("version-info").
58+
Get(ctx)
59+
if err != nil {
60+
// If we get an error, we've gone past the last valid revision
61+
break
62+
}
63+
latestDoc = doc
5264
}
5365

54-
var drsInfo DrsVersionInfo
55-
if err := doc.DataTo(&drsInfo); err != nil {
56-
return nil, fmt.Errorf("failed to parse DRS version info: %v", err)
66+
if latestDoc == nil {
67+
return nil, fmt.Errorf("no version-info documents found for version %s", drsVersion)
5768
}
5869

59-
return &drsInfo, nil
70+
var info DrsVersionInfo
71+
if err := latestDoc.DataTo(&info); err != nil {
72+
return nil, fmt.Errorf("failed to parse DRS version info: %v", err)
73+
}
74+
return &info, nil
6075
}

0 commit comments

Comments
 (0)