Skip to content

Commit 45f536e

Browse files
authored
Merge pull request #77 from blinklabs-io/feat/datum-format-update
feat: update datum format in resolver
2 parents 53dcc35 + aefebb3 commit 45f536e

File tree

3 files changed

+29
-22
lines changed

3 files changed

+29
-22
lines changed

go.mod

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ module github.com/blinklabs-io/cdnsd
33
go 1.20
44

55
require (
6-
github.com/blinklabs-io/gouroboros v0.62.0
6+
github.com/blinklabs-io/cardano-models v0.1.0
7+
github.com/blinklabs-io/gouroboros v0.64.0
78
github.com/blinklabs-io/snek v0.15.0
89
github.com/dgraph-io/badger/v4 v4.2.0
910
github.com/kelseyhightower/envconfig v1.4.0
@@ -29,10 +30,10 @@ require (
2930
github.com/x448/float16 v0.8.4 // indirect
3031
go.opencensus.io v0.22.5 // indirect
3132
go.uber.org/multierr v1.10.0 // indirect
32-
golang.org/x/crypto v0.14.0 // indirect
33+
golang.org/x/crypto v0.15.0 // indirect
3334
golang.org/x/mod v0.13.0 // indirect
3435
golang.org/x/net v0.17.0 // indirect
35-
golang.org/x/sys v0.13.0 // indirect
36+
golang.org/x/sys v0.14.0 // indirect
3637
golang.org/x/tools v0.14.0 // indirect
3738
google.golang.org/protobuf v1.31.0 // indirect
3839
)

go.sum

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
22
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
3-
github.com/blinklabs-io/gouroboros v0.62.0 h1:vfTjXeIbrc4aLr0svKXNZbAujM2VWh6PU8MBOlZaf5c=
4-
github.com/blinklabs-io/gouroboros v0.62.0/go.mod h1:D5YJka8EyVmiXNMbRvjH23H9lNMLA4+qSlNNC/j7R0k=
3+
github.com/blinklabs-io/cardano-models v0.1.0 h1:tgSAuo8V8cXDeDf4OrevY3Aj5AIJSjI1DINAOrQeda0=
4+
github.com/blinklabs-io/cardano-models v0.1.0/go.mod h1:XYJvY5XE6vTKbVVK1YqUq615T/bUoeavcc9zG25M8Os=
5+
github.com/blinklabs-io/gouroboros v0.64.0 h1:8wm1blxhE+qI/GElc3/pmi3YoI3jepEEPFJK6LkP/JE=
6+
github.com/blinklabs-io/gouroboros v0.64.0/go.mod h1:fph4LBNmSliMxt5ut40lXqqbZHWmXjT6p7o1hCyDEbQ=
57
github.com/blinklabs-io/snek v0.15.0 h1:opj+apWge2ujHIDiFrI08P6rW7gUeKRsNXzje8UCjx4=
68
github.com/blinklabs-io/snek v0.15.0/go.mod h1:9pR+B/oQ/bf+G6tB4NnA6x0i10+ucDixpHc0LzF6500=
79
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
@@ -74,8 +76,8 @@ go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
7476
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
7577
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
7678
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
77-
golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc=
78-
golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
79+
golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA=
80+
golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g=
7981
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
8082
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
8183
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
@@ -108,8 +110,8 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w
108110
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
109111
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
110112
golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
111-
golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
112-
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
113+
golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q=
114+
golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
113115
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
114116
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
115117
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=

internal/indexer/indexer.go

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@ package indexer
88

99
import (
1010
"encoding/hex"
11+
"strings"
1112

1213
"github.com/blinklabs-io/cdnsd/internal/config"
1314
"github.com/blinklabs-io/cdnsd/internal/logging"
1415
"github.com/blinklabs-io/cdnsd/internal/state"
1516

17+
models "github.com/blinklabs-io/cardano-models"
1618
"github.com/blinklabs-io/gouroboros/cbor"
1719
ocommon "github.com/blinklabs-io/gouroboros/protocol/common"
1820
"github.com/blinklabs-io/snek/event"
@@ -156,26 +158,28 @@ func (i *Indexer) handleEvent(evt event.Event) error {
156158
for _, txOutput := range eventTx.Outputs {
157159
datum := txOutput.Datum()
158160
if datum != nil {
159-
if _, err := datum.Decode(); err != nil {
161+
var dnsDomain models.CardanoDnsDomain
162+
if _, err := cbor.Decode(datum.Cbor(), &dnsDomain); err != nil {
160163
logger.Warnf(
161164
"error decoding TX (%s) output datum: %s",
162165
eventCtx.TransactionHash,
163166
err,
164167
)
165-
return err
168+
// Stop processing TX output if we can't parse the datum
169+
continue
166170
}
167-
datumFields := datum.Value().(cbor.Constructor).Fields()
168-
domainName := string(datumFields[0].(cbor.ByteString).Bytes())
171+
domainName := string(dnsDomain.Origin)
169172
nameServers := map[string]string{}
170-
for _, record := range datumFields[1].([]any) {
171-
recordConstructor := record.(cbor.Constructor)
172-
nameServer := string(
173-
recordConstructor.Fields()[0].(cbor.ByteString).Bytes(),
174-
)
175-
ipAddress := string(
176-
recordConstructor.Fields()[1].(cbor.ByteString).Bytes(),
177-
)
178-
nameServers[nameServer] = ipAddress
173+
for _, record := range dnsDomain.Records {
174+
// NOTE: we're losing information here, but we need to revamp the storage
175+
// format before we can use it. We're also making the assumption that all
176+
// records are for nameservers
177+
switch strings.ToUpper(string(record.Type)) {
178+
case "A", "AAAA":
179+
nameServers[string(record.Lhs)] = string(record.Rhs)
180+
default:
181+
continue
182+
}
179183
}
180184
if err := state.GetState().UpdateDomain(domainName, nameServers); err != nil {
181185
return err

0 commit comments

Comments
 (0)