Skip to content

Commit

Permalink
update: add Gnosis and small db changes
Browse files Browse the repository at this point in the history
  • Loading branch information
hdser committed Jul 3, 2024
1 parent 2662d33 commit b722e0f
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 13 deletions.
41 changes: 41 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
ARG GO_VERSION=1.22.5
FROM golang:${GO_VERSION}-bookworm as builder

# Install CA certificates
RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/*

# Set the working directory inside the container to /usr/src/app
WORKDIR /usr/src/app

# Copy the Go module files first to leverage Docker cache for dependency layers
COPY go.mod go.sum ./

# Run module download separately to also leverage caching of downloaded modules
RUN go mod download && go mod verify

# Copy the CSV file into a data directory within the builder stage
COPY ip_metadata.csv ./data/ip_metadata.csv

# Copy the rest of the application source code
COPY . .

# Build the application; output the binary to a known location
RUN go build -v -o /run-app .

# Expose port 9000 if it's being used by the application
EXPOSE 9000

# Final stage based on Debian Bookworm.
FROM debian:bookworm

# Install CA certificates in the final image to ensure they are present.
RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/*

# Copy the built executable from the builder stage
COPY --from=builder /run-app /usr/local/bin/run-app

# Copy the CSV and other data files from the builder stage to the runtime image
COPY --from=builder /usr/src/app/data /data

# Set the command to run the application
CMD ["/usr/local/bin/run-app"]
9 changes: 5 additions & 4 deletions clickhouse/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package clickhouse

import (
"context"
"crypto/tls"
//"crypto/tls"
"fmt"
"time"

Expand Down Expand Up @@ -64,9 +64,10 @@ func NewClickhouseClient(cfg *ClickhouseConfig) (*ClickhouseClient, error) {
Debugf: func(format string, v ...interface{}) {
log.Debug().Str("module", "clickhouse").Msgf(format, v)
},
TLS: &tls.Config{
InsecureSkipVerify: true,
},
// TLS is not configured
// TLS: &tls.Config{
// InsecureSkipVerify: true,
// },
})

if err != nil {
Expand Down
33 changes: 29 additions & 4 deletions config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,31 @@ func GetEthereumBootnodes() []*enode.Node {
return bootnodes
}

// Gnosis Bootnodes
var gnosisBootnodes []string = []string{
"enr:-Ly4QIAhiTHk6JdVhCdiLwT83wAolUFo5J4nI5HrF7-zJO_QEw3cmEGxC1jvqNNUN64Vu-xxqDKSM528vKRNCehZAfEBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpCCS-QxAgAAZP__________gmlkgnY0gmlwhEFtZ5SJc2VjcDI1NmsxoQJwgL5C-30E8RJmW8gCb7sfwWvvfre7wGcCeV4X1G2wJYhzeW5jbmV0cwCDdGNwgiMog3VkcIIjKA",
"enr:-Ly4QDhEjlkf8fwO5uWAadexy88GXZneTuUCIPHhv98v8ZfXMtC0S1S_8soiT0CMEgoeLe9Db01dtkFQUnA9YcnYC_8Bh2F0dG5ldHOIAAAAAAAAAACEZXRoMpCCS-QxAgAAZP__________gmlkgnY0gmlwhEFtZ5WJc2VjcDI1NmsxoQMRSho89q2GKx_l2FZhR1RmnSiQr6o_9hfXfQUuW6bjMohzeW5jbmV0cwCDdGNwgiMog3VkcIIjKA",
"enr:-Ly4QLKgv5M2D4DYJgo6s4NG_K4zu4sk5HOLCfGCdtgoezsbfRbfGpQ4iSd31M88ec3DHA5FWVbkgIas9EaJeXia0nwBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpCCS-QxAgAAZP__________gmlkgnY0gmlwhI1eYRaJc2VjcDI1NmsxoQLpK_A47iNBkVjka9Mde1F-Kie-R0sq97MCNKCxt2HwOIhzeW5jbmV0cwCDdGNwgiMog3VkcIIjKA",
"enr:-Ly4QF_0qvji6xqXrhQEhwJR1W9h5dXV7ZjVCN_NlosKxcgZW6emAfB_KXxEiPgKr_-CZG8CWvTiojEohG1ewF7P368Bh2F0dG5ldHOIAAAAAAAAAACEZXRoMpCCS-QxAgAAZP__________gmlkgnY0gmlwhI1eYUqJc2VjcDI1NmsxoQIpNRUT6llrXqEbjkAodsZOyWv8fxQkyQtSvH4sg2D7n4hzeW5jbmV0cwCDdGNwgiMog3VkcIIjKA",
"enr:-Ly4QCD5D99p36WafgTSxB6kY7D2V1ca71C49J4VWI2c8UZCCPYBvNRWiv0-HxOcbpuUdwPVhyWQCYm1yq2ZH0ukCbQBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpCCS-QxAgAAZP__________gmlkgnY0gmlwhI1eYVSJc2VjcDI1NmsxoQJJMSV8iSZ8zvkgbi8cjIGEUVJeekLqT0LQha_co-siT4hzeW5jbmV0cwCDdGNwgiMog3VkcIIjKA",
"enr:-KK4QKXJq1QOVWuJAGige4uaT8LRPQGCVRf3lH3pxjaVScMRUfFW1eiiaz8RwOAYvw33D4EX-uASGJ5QVqVCqwccxa-Bi4RldGgykCGm-DYDAABk__________-CaWSCdjSCaXCEM0QnzolzZWNwMjU2azGhAhNvrRkpuK4MWTf3WqiOXSOePL8Zc-wKVpZ9FQx_BDadg3RjcIIjKIN1ZHCCIyg",
"enr:-LO4QO87Rn2ejN3SZdXkx7kv8m11EZ3KWWqoIN5oXwQ7iXR9CVGd1dmSyWxOL1PGsdIqeMf66OZj4QGEJckSi6okCdWBpIdhdHRuZXRziAAAAABgAAAAhGV0aDKQPr_UhAQAAGT__________4JpZIJ2NIJpcIQj0iX1iXNlY3AyNTZrMaEDd-_eqFlWWJrUfEp8RhKT9NxdYaZoLHvsp3bbejPyOoeDdGNwgiMog3VkcIIjKA",
"enr:-LK4QIJUAxX9uNgW4ACkq8AixjnSTcs9sClbEtWRq9F8Uy9OEExsr4ecpBTYpxX66cMk6pUHejCSX3wZkK2pOCCHWHEBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpA-v9SEBAAAZP__________gmlkgnY0gmlwhCPSnDuJc2VjcDI1NmsxoQNuaAjFE-ANkH3pbeBdPiEIwjR5kxFuKaBWxHkqFuPz5IN0Y3CCIyiDdWRwgiMo",
}

// GetGnosisBootnodes returns the default Gnosis bootnodes in enode format.
func GetGnosisBootnodes() []*enode.Node {
bootnodes := make([]*enode.Node, len(gnosisBootnodes))
for i, enr := range gnosisBootnodes {
node, err := enode.Parse(enode.ValidSchemes, enr)
if err != nil {
panic(err)
}
bootnodes[i] = node
}
return bootnodes
}

type DiscConfig struct {
IP string
UDP int
Expand All @@ -45,17 +70,17 @@ var DefaultDiscConfig DiscConfig = DiscConfig{
UDP: 9000,
TCP: 9000,
DBPath: "",
ForkDigest: [4]byte{0x6a, 0x95, 0xa1, 0xa9},
ForkDigest: [4]byte{0x3e, 0xbf, 0xd4, 0x84},
LogPath: "discovery_events.log",
Bootnodes: GetEthereumBootnodes(),
Bootnodes: GetGnosisBootnodes(),
}

func (d *DiscConfig) Eth2EnrEntry() (enr.Entry, error) {
// currentSlot := slots.Since(genesisTime)
// currentEpoch := slots.ToEpoch(currentSlot)

// TODO: not hardcoded, use timestamp to calculate
nextForkVersion, nextForkEpoch, err := forks.NextForkData(286168)
nextForkVersion, nextForkEpoch, err := forks.NextForkData(16204388)
if err != nil {
return nil, fmt.Errorf("calculate next fork data: %w", err)
}
Expand Down Expand Up @@ -91,7 +116,7 @@ type NodeConfig struct {
var DefaultNodeConfig NodeConfig = NodeConfig{
PrivateKey: nil,
BeaconConfig: nil,
ForkDigest: [4]byte{0x6a, 0x95, 0xa1, 0xa9},
ForkDigest: [4]byte{0x3e, 0xbf, 0xd4, 0x84},
Encoder: encoder.SszNetworkEncoder{},
DialTimeout: 10 * time.Second,
ConcurrentDialers: 64,
Expand Down
17 changes: 12 additions & 5 deletions consumer/consumer.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ import (
"github.com/xitongsys/parquet-go/writer"
)

const basePath = "/data"

const BATCH_SIZE = 1024

type ConsumerConfig struct {
Expand Down Expand Up @@ -53,7 +55,8 @@ func RunConsumer(cfg *ConsumerConfig) {
log := log.NewLogger("consumer")

// Set up the sqlite database
db, err := sql.Open("sqlite3", "./validator_tracker.sqlite")
dbPath := fmt.Sprintf("%s/validator_tracker.sqlite", basePath)
db, err := sql.Open("sqlite3", dbPath)
if err != nil {
log.Error().Err(err).Msg("Error opening database")
}
Expand All @@ -64,7 +67,8 @@ func RunConsumer(cfg *ConsumerConfig) {
log.Error().Err(err).Msg("Error setting up database")
}

err = loadIPMetadataFromCSV(db, "ip_metadata.csv")
csvPath := fmt.Sprintf("%s/ip_metadata.csv", basePath)
err = loadIPMetadataFromCSV(db, csvPath)
if err != nil {
log.Error().Err(err).Msg("Error setting up database")
}
Expand All @@ -84,19 +88,22 @@ func RunConsumer(cfg *ConsumerConfig) {
}

// Create Parquet writer files
w_discovery, err := local.NewLocalFileWriter("discovery_events.parquet")
discoveryFilePath := fmt.Sprintf("%s/discovery_events.parquet", basePath)
w_discovery, err := local.NewLocalFileWriter(discoveryFilePath)
if err != nil {
log.Error().Err(err).Msg("Error creating discovery events parquet file")
}
defer w_discovery.Close()

w_metadata, err := local.NewLocalFileWriter("metadata_events.parquet")
metadataFilePath := fmt.Sprintf("%s/metadata_events.parquet", basePath)
w_metadata, err := local.NewLocalFileWriter(metadataFilePath)
if err != nil {
log.Error().Err(err).Msg("Error creating metadata events parquet file")
}
defer w_metadata.Close()

w_validator, err := local.NewLocalFileWriter("validator_metadata_events.parquet")
validatorFilePath := fmt.Sprintf("%s/validator_metadata_events.parquet", basePath)
w_validator, err := local.NewLocalFileWriter(validatorFilePath)
if err != nil {
log.Error().Err(err).Msg("Error creating validator parquet file")
}
Expand Down

0 comments on commit b722e0f

Please sign in to comment.