diff --git a/config.toml.dist b/config.toml.dist index 9b6befa..a399b5e 100644 --- a/config.toml.dist +++ b/config.toml.dist @@ -18,7 +18,6 @@ max_body_size_bytes = 10485760 max_concurrent_rpcs = 1000 # Server log level log_level = "info" -use_juno_data_source = true # or false, based need, also to toggle the usage of Juno as a data source for block fetching. [redis] # URL to a Redis instance. diff --git a/go.mod b/go.mod index 17151a5..bb6ce37 100644 --- a/go.mod +++ b/go.mod @@ -4,21 +4,22 @@ go 1.22.0 require ( github.com/BurntSushi/toml v1.3.2 - github.com/NethermindEth/juno v0.10.0 + github.com/NethermindEth/juno v0.11.5 github.com/charmbracelet/log v0.3.1 github.com/cockroachdb/pebble v1.1.0 github.com/ethereum/go-ethereum v1.13.14 + github.com/gocql/gocql v1.6.0 github.com/keep-starknet-strange/nori v0.0.0-20240226191213-2cac95cf09cf github.com/rabbitmq/amqp091-go v1.9.0 + github.com/test-go/testify v1.1.4 golang.org/x/crypto v0.21.0 golang.org/x/exp v0.0.0-20240119083558-1b970713d09a - gotest.tools v2.2.0+incompatible ) require ( + github.com/nats-io/nats.go v1.33.1 github.com/nats-io/nkeys v0.4.7 // indirect github.com/nats-io/nuid v1.0.1 // indirect - github.com/nats-io/nats.go v1.33.1 ) @@ -56,9 +57,9 @@ require ( github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect - github.com/google/go-cmp v0.5.9 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/gorilla/websocket v1.5.1 // indirect + github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect @@ -67,13 +68,15 @@ require ( github.com/klauspost/compress v1.17.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect + github.com/libp2p/go-libp2p v0.32.2 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect github.com/mmcloughlin/addchain v0.4.0 // indirect github.com/muesli/reflow v0.3.0 // indirect github.com/muesli/termenv v0.15.2 // indirect - github.com/nats-io/nats.go v1.33.1 + github.com/multiformats/go-multistream v0.5.0 // indirect + github.com/multiformats/go-varint v0.0.7 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect @@ -86,15 +89,17 @@ require ( github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/rs/cors v1.10.1 // indirect github.com/shirou/gopsutil v3.21.11+incompatible // indirect + github.com/spf13/pflag v1.0.5 // indirect github.com/stretchr/testify v1.8.4 // indirect github.com/supranational/blst v0.3.11 // indirect github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect - github.com/test-go/testify v1.1.4 // indirect github.com/tklauser/go-sysconf v0.3.13 // indirect github.com/tklauser/numcpus v0.7.0 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/xaionaro-go/weightedshuffle v0.0.0-20211213010739-6a74fbc7d24a // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.26.0 // indirect golang.org/x/mod v0.14.0 // indirect golang.org/x/net v0.21.0 // indirect golang.org/x/sync v0.6.0 // indirect @@ -102,6 +107,7 @@ require ( golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.17.0 // indirect google.golang.org/protobuf v1.32.0 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect rsc.io/tmplfunc v0.0.3 // indirect ) diff --git a/go.sum b/go.sum index 3bb74c7..34cff8b 100644 --- a/go.sum +++ b/go.sum @@ -2,10 +2,12 @@ github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8 github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0= +github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= -github.com/NethermindEth/juno v0.10.0 h1:vJZVqsu0a156nYEPChxOeIsyzm8BgdIDWa+3BsamJ+w= -github.com/NethermindEth/juno v0.10.0/go.mod h1:DHYH4xaEYO4FVQR7T5B6WRH4bt+MZpJkTcJN1UEsfw8= +github.com/NethermindEth/juno v0.11.5 h1:Mgqgz0hqSHYqEiti9zaEc0dpgGNtZpvINQ3axp55JMk= +github.com/NethermindEth/juno v0.11.5/go.mod h1:Zc/Zh3OSmu3MTLPtnEehKRReyJ6PCwvUYXIh313PbMU= github.com/NethermindEth/starknet.go v0.6.1 h1:c01dczL8Tau8Y0Xqg1jpDmjhCfkkt0UyCgUMyZCJVVc= github.com/NethermindEth/starknet.go v0.6.1/go.mod h1:V6qrbi1+fTDCftETIT1grBXIf+TvWP/4Aois1a9EF1E= github.com/VictoriaMetrics/fastcache v1.12.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bwt3uRKnkZU40= @@ -20,8 +22,14 @@ github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiE github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932 h1:mXoPYz/Ul5HYEDvkta6I8/rnYM5gSdSV2tJ6XbZuEtY= +github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932/go.mod h1:NOuUCSz6Q9T7+igc/hlvDOUdtWKryOrtFyIVABv/p7k= github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE= github.com/bits-and-blooms/bitset v1.13.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/bits-and-blooms/bloom/v3 v3.6.0 h1:dTU0OVLJSoOhz9m68FTXMFfA39nR8U/nTCs1zb26mOI= +github.com/bits-and-blooms/bloom/v3 v3.6.0/go.mod h1:VKlUSvp0lFIYqxJjzdnSsZEw4iHb1kOL2tfHTgyJBHg= +github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= +github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= @@ -100,6 +108,8 @@ github.com/go-redis/redis/v8 v8.11.4 h1:kHoYkfZP6+pe04aFTnhDH6GDROa5yJdHJVNxV3F4 github.com/go-redis/redis/v8 v8.11.4/go.mod h1:2Z2wHZXdQpCDXEGzqMockDpNyYvi2l4Pxt6RJr792+w= github.com/go-redsync/redsync/v4 v4.10.0 h1:hTeAak4C73mNBQSTq6KCKDFaiIlfC+z5yTTl8fCJuBs= github.com/go-redsync/redsync/v4 v4.10.0/go.mod h1:ZfayzutkgeBmEmBlUR3j+rF6kN44UUGtEdfzhBFZTPc= +github.com/gocql/gocql v1.6.0 h1:IdFdOTbnpbd0pDhl4REKQDM+Q0SzKXQ1Yh+YZZ8T/qU= +github.com/gocql/gocql v1.6.0/go.mod h1:3gM2c4D3AnkISwBxGnMMsS8Oy4y2lhbPRsH4xnJrHG8= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= @@ -111,6 +121,7 @@ github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrU github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -126,6 +137,8 @@ github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= +github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed h1:5upAirOpQc1Q53c0bnx2ufif5kANL7bfZWcc6VJWJd8= +github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -157,6 +170,8 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= +github.com/libp2p/go-libp2p v0.32.2 h1:s8GYN4YJzgUoyeYNPdW7JZeZ5Ee31iNaIBfGYMAY4FQ= +github.com/libp2p/go-libp2p v0.32.2/go.mod h1:E0LKe+diV/ZVJVnOJby8VC5xzHF0660osg71skcxJvk= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= @@ -172,6 +187,10 @@ github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= +github.com/multiformats/go-multistream v0.5.0 h1:5htLSLl7lvJk3xx3qT/8Zm9J4K8vEOf/QGkvOGQAyiE= +github.com/multiformats/go-multistream v0.5.0/go.mod h1:n6tMZiwiP2wUsR8DgfDWw1dydlEqV3l6N3/GBsX6ILA= +github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= +github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= github.com/nats-io/nats.go v1.33.1 h1:8TxLZZ/seeEfR97qV0/Bl939tpDnt2Z2fK3HkPypj70= github.com/nats-io/nats.go v1.33.1/go.mod h1:Ubdu4Nh9exXdSz0RVWRFBbRfrbSxOYd26oF0wkWclB8= github.com/nats-io/nkeys v0.4.7 h1:RwNJbbIdYCoClSDNY7QVKZlyb/wfT6ugvFCiKy6vDvI= @@ -224,6 +243,10 @@ github.com/rs/cors v1.10.1 h1:L0uuZVXIKlI1SShY2nhFfo44TYvDPQ1w4oFkUJNfhyo= github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI= github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= @@ -256,6 +279,10 @@ github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFi github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -327,6 +354,8 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -336,7 +365,5 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= -gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= diff --git a/indexer.exe b/indexer.exe deleted file mode 100644 index ab8b8ed..0000000 Binary files a/indexer.exe and /dev/null differ diff --git a/internal/dispatcher/rabbitmq_test.go b/internal/dispatcher/rabbitmq_test.go index 44c130e..78c9750 100644 --- a/internal/dispatcher/rabbitmq_test.go +++ b/internal/dispatcher/rabbitmq_test.go @@ -6,7 +6,7 @@ import ( "testing" "time" - "gotest.tools/assert" + "github.com/test-go/testify/assert" ) func TestRabbitMQDispatcher(t *testing.T) { @@ -33,10 +33,10 @@ func TestRabbitMQDispatcher(t *testing.T) { time.Sleep(1 * time.Second) err := rabbitmqPublisher.Publish(topic, []byte(message)) - assert.NilError(t, err) + assert.Nil(t, err) err = rabbitmqPublisher.Publish(topic, []byte(message2)) - assert.NilError(t, err) + assert.Nil(t, err) time.Sleep(2 * time.Second) diff --git a/internal/starknet/felt_test.go b/internal/starknet/felt_test.go index 33153b0..f29735e 100644 --- a/internal/starknet/felt_test.go +++ b/internal/starknet/felt_test.go @@ -4,7 +4,7 @@ import ( "testing" "github.com/carbonable-labs/indexer/internal/starknet" - "gotest.tools/assert" + "github.com/test-go/testify/assert" ) func TestFeltFromUint(t *testing.T) { diff --git a/internal/storage/scylladb.go b/internal/storage/scylladb.go index e5a6ffe..829d63d 100644 --- a/internal/storage/scylladb.go +++ b/internal/storage/scylladb.go @@ -64,7 +64,7 @@ func (s *ScyllaStorage) Scan() ([]gocql.UUID, [][]byte, error) { // NewScyllaStorage creates a new instance of ScyllaStorage. func NewScyllaStorage() (*ScyllaStorage, error) { - cluster = gocql.NewCluster("127.0.0.1") + cluster := gocql.NewCluster("127.0.0.1") //cluster.Hosts = append(cluster.Hosts, "127.0.0.2", "127.0.0.3") // Add more addresses to the cluster. cluster.Keyspace = "index_keyspace" cluster.Authenticator = gocql.PasswordAuthenticator{ diff --git a/internal/synchronizer/synchronizer.go b/internal/synchronizer/synchronizer.go index b33268f..14bfaff 100644 --- a/internal/synchronizer/synchronizer.go +++ b/internal/synchronizer/synchronizer.go @@ -8,25 +8,24 @@ import ( "strconv" "time" + "github.com/NethermindEth/juno/clients/feeder" "github.com/carbonable-labs/indexer/internal/starknet" "github.com/carbonable-labs/indexer/internal/storage" "github.com/charmbracelet/log" - "github.com/NethermindEth/juno/pkg/client" ) -func Run(ctx context.Context, client *starknet.FeederGatewayClient, storage storage.Storage, errCh chan<- error) { - s := NewSyncronizer(client, storage) +func Run(ctx context.Context, client *starknet.FeederGatewayClient, storage storage.Storage, errCh chan<- error, useJuno bool) { + s := NewSynchronizer(client, storage, useJuno) s.Start(ctx) errCh <- nil } type Synchronizer struct { - storage storage.Storage - client *starknet.FeederGatewayClient - msgch chan *starknet.GetBlockResponse - junoClient *client.Client // Juno client - msgch chan *starknet.GetBlockResponse + storage storage.Storage + client *starknet.FeederGatewayClient + junoClient *feeder.Client + msgch chan *starknet.GetBlockResponse } func (s *Synchronizer) Start(ctx context.Context) { @@ -81,16 +80,22 @@ func (s *Synchronizer) storeBlock(block *starknet.GetBlockResponse) { } } - func (s *Synchronizer) FetchBlock(blockNumber uint64) (*starknet.GetBlockResponse, error) { - if s.useJunoDataSource { - if junoBlock, err := s.junoClient.GetBlock(context.Background(), blockNumber); err == nil { - I am assuming junoClient.GetBlock returns a *starknet.GetBlockResponse or similar - return junoBlock, nil - } else { - log.Error("Failed to fetch block from Juno, falling back to local cache and StarkNet feeder gateway", "error", err) - } + if s.junoClient != nil { + if junoBlock, err := s.junoClient.Block(context.Background(), strconv.Itoa((int)(blockNumber))); err == nil { + // return junoBlock, nil + block := starknet.GetBlockResponse{ + BlockHash: junoBlock.Hash.ShortString(), + BlockNumber: junoBlock.Number, + ParentBlockHash: junoBlock.ParentHash.ShortString(), + StateRoot: junoBlock.StateRoot.String(), + } + + return &block, nil + } else { + log.Error("Failed to fetch block from Juno, falling back to local cache and StarkNet feeder gateway", "error", err) } + } key := []byte(fmt.Sprintf("BLOCK#%d", blockNumber)) if s.storage.Has(key) { block := s.storage.Get(key) @@ -145,11 +150,15 @@ func (s *Synchronizer) getLatestBlock() (uint64, error) { return num, nil } -func NewSynchronizer(client *starknet.FeederGatewayClient, storage storage.Storage, junoClient *client.Client) *Synchronizer { - return &Synchronizer{ - client: client, - storage: storage, - junoClient: junoClient, - msgch: make(chan *starknet.GetBlockResponse), - } +func NewSynchronizer(client *starknet.FeederGatewayClient, storage storage.Storage, useJuno bool) *Synchronizer { + var junoClient *feeder.Client = nil + if useJuno { + junoClient = feeder.NewClient("https://free-rpc.nethermind.io/mainnet-juno") + } + return &Synchronizer{ + client: client, + storage: storage, + junoClient: junoClient, + msgch: make(chan *starknet.GetBlockResponse), + } } diff --git a/main.go b/main.go index 7f411bd..2eba763 100644 --- a/main.go +++ b/main.go @@ -2,6 +2,7 @@ package main import ( "context" + "flag" "fmt" "net" "net/http" @@ -53,7 +54,9 @@ func main() { blockDatasource := datasourceFlag.Validation() blockDatasource.SyncBlock(ctx, 123) - // g, ctx := errgroup.WithContext(ctx) + // The --use-juno flag. + useJuno := flag.Bool("use-juno", false, "Set to true to use Juno as a datasource") + flag.Parse() // Set up logger with a default INFO level in case we fail to parse flags. // Otherwise the final critical log won't show what the parsing error was. @@ -101,27 +104,12 @@ func main() { cancel() // cancel the context }() - var junoClient *juno.Client // Placeholder for Juno client type -if config.UseJunoDataSource { - junoClient = juno.NewClient() // An instance of the Juno client -} - - // Run synchronizer go func() { fmt.Println(welcomeMessage) - if err := runSynchronizer(ctx); err != nil { + if err := runSynchronizer(ctx, *useJuno); err != nil { log.Error("synchronizer exited with error", "err", err) cancel() // Optionally cancel the context on error - synchronizer := synchronizer.NewSynchronizer(client, storage, junoClient) // Updated to pass junoClient - errCh := make(chan error) - - synchronizer.Run(ctx, errCh) - - select { - case err := <-errCh: - return err - } } }() @@ -144,14 +132,14 @@ func setLoadLoadBalancerConfig(path string) (*nori.Config, error) { return config, nil } -func runSynchronizer(ctx context.Context) error { +func runSynchronizer(ctx context.Context, useJuno bool) error { fmt.Println(welcomeMessage) client := starknet.NewSepoliaFeederGatewayClient() storage := storage.NewPebbleStorage() errCh := make(chan error) - synchronizer.Run(ctx, client, storage, errCh) + synchronizer.Run(ctx, client, storage, errCh, useJuno) select { case err := <-errCh: