Skip to content

Commit 8dbb4ba

Browse files
committed
fix: Avail blobID back to block height + extrinsic index
1 parent 62bda07 commit 8dbb4ba

File tree

3 files changed

+17
-21
lines changed

3 files changed

+17
-21
lines changed

availda/availda.go

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -207,9 +207,11 @@ out:
207207
}
208208

209209
var dataProofResp DataProofRPCResponse
210+
var extIndex int
210211
for idx, e := range block.Block.Extrinsics {
211212
// Look for our submitted extrinsic in the block
212213
if ext.Signature.Signature.AsEcdsa.Hex() == e.Signature.Signature.AsEcdsa.Hex() {
214+
extIndex = idx
213215
resp, err := http.Post("https://goldberg.avail.tools/api", "application/json",
214216
strings.NewReader(fmt.Sprintf("{\"id\":1,\"jsonrpc\":\"2.0\",\"method\":\"kate_queryDataProofV2\",\"params\":[%d, \"%#x\"]}", idx+1, blockHash))) //nolint: noctx
215217
if err != nil {
@@ -235,15 +237,8 @@ out:
235237
}
236238
}
237239
dataProof := dataProofResp.Result.DataProof
238-
239-
extBytes, err := json.Marshal(ext)
240-
if err != nil {
241-
return nil, nil, fmt.Errorf("cannot marshal extrinsic", err)
242-
}
243-
// Strip string of any leading or following quotes
244-
extBytes = []byte(strings.Trim(string(extBytes), "\""))
245240
// NOTE: Substrate's BlockNumber type is an alias for u32 type, which is uint32
246-
blobID := makeID(uint32(block.Block.Header.Number), string(extBytes))
241+
blobID := makeID(uint32(block.Block.Header.Number), extIndex)
247242
blobIDs := make([]da.ID, 1)
248243
blobIDs[0] = blobID
249244

@@ -313,20 +308,21 @@ func (a *DAClient) GetAccountNextIndex() (types.UCompact, error) {
313308
var accountNextIndex AccountNextIndexRPCResponse
314309
err = json.Unmarshal(data, &accountNextIndex)
315310
if err != nil {
316-
return types.NewUCompactFromUInt(0), fmt.Errorf("cannot unmarshal account next index", err)
311+
return types.NewUCompactFromUInt(0), fmt.Errorf("cannot unmarshal account next index:%w Response: %s", err, data)
317312
}
318313

319314
return types.NewUCompactFromUInt(uint64(accountNextIndex.Result)), nil
320315
}
321316

322317
// makeID creates a unique ID to reference a blob on Avail
323-
func makeID(blockHeight uint32, extHash string) da.ID {
318+
func makeID(blockHeight uint32, extIndex int) da.ID {
324319
// Serialise height and leaf index to binary
325320
heightLen := 4
326321
heightBytes := make([]byte, heightLen)
327322
binary.LittleEndian.PutUint32(heightBytes, blockHeight)
328-
idBytes := append(heightBytes, []byte(extHash)...)
329-
return da.ID(idBytes)
323+
extIndexBytes := make([]byte, 4)
324+
binary.LittleEndian.PutUint32(extIndexBytes, uint32(extIndex))
325+
return da.ID(append(heightBytes, extIndexBytes...))
330326
}
331327

332328
// SplitID returns the block height and leaf index from a unique ID

cmd/blob-server/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func main() {
6868

6969
server := NewBlobServer()
7070
// Initialise all DA clients
71-
err = server.Daasher.InitClients(ctx, []daash.DALayer{daash.Avail, daash.Celestia, daash.Eigen}, "./avail-config.json", authToken)
71+
_, err = server.Daasher.InitClients(ctx, []daash.DALayer{daash.Avail, daash.Celestia, daash.Eigen}, "./avail-config.json", authToken)
7272
if err != nil {
7373
fmt.Printf("failed to build DA clients: %v", err)
7474
return

daash.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ func NewDABuilder() *DABuilder {
4545
}
4646

4747
// Initiates a new DAManager with clients from the sepcified DA layers
48-
func (d *DABuilder) InitClients(ctx context.Context, layers []DALayer, availConfigPath string, celestiaAuthToken string) error {
48+
func (d *DABuilder) InitClients(ctx context.Context, layers []DALayer, availConfigPath string, celestiaAuthToken string) (*DABuilder, error) {
4949
if len(layers) == 0 {
50-
return fmt.Errorf("no da layers provided")
50+
return nil, fmt.Errorf("no da layers provided")
5151
}
5252

5353
for _, layer := range layers {
@@ -61,29 +61,29 @@ func (d *DABuilder) InitClients(ctx context.Context, layers []DALayer, availConf
6161
}, backoff.WithMaxRetries(backoff.NewExponentialBackOff(), 5))
6262
if err != nil {
6363
log.Println("❌ Failed to initialise Avail DA client")
64-
return fmt.Errorf(" Failed to create avail client: %v", err)
64+
return nil, fmt.Errorf(" Failed to create avail client: %v", err)
6565
}
6666
log.Println("🟢 Avail DA client initialised")
6767
d.Clients[Avail] = avail
6868

6969
case Celestia:
7070
if celestiaAuthToken == "" {
7171
fmt.Println("AUTH_TOKEN is not set")
72-
return fmt.Errorf("celestia auth token is not set")
72+
return nil, fmt.Errorf("celestia auth token is not set")
7373
}
7474
// We use a random pre-set hex string for namespace rn
7575
namespace := "9cb73e106b03d1050a13"
7676
celestia, err := celestiada.New(ctx, CelestiaClientUrl, celestiaAuthToken, namespace, -1)
7777
if err != nil {
78-
return err
78+
return nil, err
7979
}
8080
log.Println("🟢 Celestia DA client initialised")
8181
d.Clients[Celestia] = celestia
8282

8383
case Eigen:
8484
eigen, err := eigenda.New("disperser-goerli.eigenda.xyz:443", time.Second*90, time.Second*5)
8585
if err != nil {
86-
return err
86+
return nil, err
8787
}
8888
d.Clients[Eigen] = eigen
8989
log.Println("🟢 Eigen DA client initialised")
@@ -93,8 +93,8 @@ func (d *DABuilder) InitClients(ctx context.Context, layers []DALayer, availConf
9393
log.Println("🟢 Mock DA client initialised")
9494

9595
default:
96-
return fmt.Errorf("invalid da layer provided: %s", layer)
96+
return nil, fmt.Errorf("invalid da layer provided: %s", layer)
9797
}
9898
}
99-
return nil
99+
return d, nil
100100
}

0 commit comments

Comments
 (0)