Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 5 additions & 10 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,13 @@ FROM golang:1.23-alpine AS builder

RUN apk add --no-cache gcc musl-dev git

ENV GOPRIVATE=github.com/goatnetwork/tss
ARG GITHUB_TOKEN
RUN echo "machine github.com login ${GITHUB_TOKEN} password x-oauth-basic" > ~/.netrc && \
chmod 600 ~/.netrc

WORKDIR /app

COPY go.mod go.sum ./
RUN go mod download

# Copy everything including vendor directory
COPY . .
RUN CGO_ENABLED=1 go build -o /goat-relayer ./cmd

# Build with vendor mode (no network required)
RUN CGO_ENABLED=1 go build -mod=vendor -o /goat-relayer ./cmd

FROM alpine:3.18

Expand All @@ -25,4 +20,4 @@ COPY --from=builder /goat-relayer /app/goat-relayer

EXPOSE 8080 50051 4001

CMD ["/app/goat-relayer"]
CMD ["/app/goat-relayer"]
23 changes: 23 additions & 0 deletions cmd/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"syscall"

"github.com/btcsuite/btcd/rpcclient"
"github.com/goatnetwork/goat-relayer/internal/awsutil"
"github.com/goatnetwork/goat-relayer/internal/bls"
"github.com/goatnetwork/goat-relayer/internal/btc"
"github.com/goatnetwork/goat-relayer/internal/config"
Expand Down Expand Up @@ -41,6 +42,7 @@ type Application struct {

func NewApplication() *Application {
config.InitConfig()

// Allow BTC_RPC to be either host:port or full URL so TLS can be inferred.
rpcHost := config.AppConfig.BTCRPC
disableTLS := true
Expand Down Expand Up @@ -73,6 +75,10 @@ func NewApplication() *Application {
if rpcPass == "" {
rpcPass = "x"
}
// For AWS SigV4, force HTTPS
if config.AppConfig.BTCAWSSigV4 {
disableTLS = false
}
// create bitcoin client using btc module connection
connConfig := &rpcclient.ConnConfig{
Host: rpcHost,
Expand All @@ -87,6 +93,23 @@ func NewApplication() *Application {
log.Fatalf("Failed to start bitcoin client: %v", err)
}

if config.AppConfig.BTCAWSSigV4 {
if err := awsutil.AttachSigV4Signer(
bclient,
config.AppConfig.BTCAWSRegion,
config.AppConfig.BTCAWSService,
config.AppConfig.BTCRPC_USER,
config.AppConfig.BTCRPC_PASS,
os.Getenv("AWS_SESSION_TOKEN"),
); err != nil {
log.Fatalf("Failed to enable AWS SigV4 signing: %v", err)
}

if err := awsutil.PrimeBitcoindBackendVersion(bclient); err != nil {
log.Fatalf("Failed to detect bitcoind version: %v", err)
}
}

dbm := db.NewDatabaseManager()
state := state.InitializeState(dbm)
libP2PService := p2p.NewLibP2PService(state)
Expand Down
2 changes: 2 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ go 1.23.8
toolchain go1.24.3

require (
github.com/aws/aws-sdk-go v1.40.45
github.com/btcsuite/btcd v0.25.0
github.com/btcsuite/btcd/btcutil v1.1.6
github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0
Expand Down Expand Up @@ -107,6 +108,7 @@ require (
github.com/iancoleman/strcase v0.3.0 // indirect
github.com/improbable-eng/grpc-web v0.15.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/jmhodges/levigo v1.0.0 // indirect
github.com/kelindar/simd v1.1.2 // indirect
github.com/libp2p/go-yamux/v5 v5.0.1 // indirect
Expand Down
7 changes: 7 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj
github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A=
github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU=
github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/aws/aws-sdk-go v1.40.45 h1:QN1nsY27ssD/JmW4s83qmSb+uL6DG4GmCDzjmJB4xUI=
github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q=
github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o=
Expand Down Expand Up @@ -550,6 +552,10 @@ github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkr
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U=
github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ=
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
Expand Down Expand Up @@ -1174,6 +1180,7 @@ golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
Expand Down
Loading