Skip to content

feat: startup configuration #18

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 54 commits into from
Mar 6, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
d72a6d6
Allow coordinator to be set manually
mpetrun5 Jan 30, 2025
5c1de0a
Add manual coordinator test
mpetrun5 Feb 3, 2025
de6b2ef
Implement across message handler
mpetrun5 Feb 11, 2025
913ebd0
Send signature to all relayers
mpetrun5 Feb 11, 2025
21cbcfe
Implement signature cache to store generated signatures
mpetrun5 Feb 11, 2025
6eb268c
Speed up process coordination
mpetrun5 Feb 11, 2025
2ca060c
Implement signature cache to store generated signatures
mpetrun5 Feb 12, 2025
4d80bbd
Add signature cache tests
mpetrun5 Feb 12, 2025
084d5e3
Allow for coordinator to notify other relayers of an across message
mpetrun5 Feb 12, 2025
5205828
Reduce tss timeout
mpetrun5 Feb 12, 2025
54b76d6
Implement calculation of the unlock hash that matches on-chain implem…
mpetrun5 Feb 18, 2025
89733ba
Add across message handler tests
mpetrun5 Feb 24, 2025
bf72ba3
Merge branch 'main' into feat/across-message-handler
mpetrun5 Feb 24, 2025
d38887e
Update mocks to maintained version
mpetrun5 Feb 24, 2025
9cc32f0
Fix test race condition
mpetrun5 Feb 24, 2025
9627a80
Convert abi to constant
mpetrun5 Feb 25, 2025
a6f6b10
Use source chain id property from across data
mpetrun5 Feb 25, 2025
183b8fe
Use message destination as across deposit source
mpetrun5 Feb 25, 2025
692a7f8
Use coordinator from the host in message handler
mpetrun5 Feb 25, 2025
0dfaff1
Send across message result over the err chanel
mpetrun5 Feb 25, 2025
94dedf0
Return api errors as json
mpetrun5 Feb 25, 2025
ed8e2bb
Implement api serve function
mpetrun5 Feb 25, 2025
21582cd
Add signing handler tests
mpetrun5 Feb 25, 2025
6ff8c0c
Merge branch 'main' into feat/signing-api
mpetrun5 Feb 26, 2025
6e22f4e
Ignore valid json encode errors
mpetrun5 Feb 26, 2025
bbc8516
Enforce protocol type on the signing API
mpetrun5 Feb 26, 2025
a5cd4b9
Update signing url
mpetrun5 Feb 27, 2025
fbf2154
Implement signature cache subscribe
mpetrun5 Feb 27, 2025
be1e970
Implement status sse endpoint
mpetrun5 Feb 27, 2025
4c330da
Bump action cache action
mpetrun5 Mar 4, 2025
d2830db
Set chain id as uint64
mpetrun5 Mar 4, 2025
0332e17
Deprecate propstore
mpetrun5 Mar 4, 2025
72905a5
Add across pool address to config
mpetrun5 Mar 4, 2025
1e3942b
Make signature cache watch a separate function
mpetrun5 Mar 4, 2025
039ceb4
Add api addr to config
mpetrun5 Mar 4, 2025
672961d
Implement startup configuration
mpetrun5 Mar 4, 2025
28769e5
Remove uploader config
mpetrun5 Mar 4, 2025
60f1f9c
Bump golang version
mpetrun5 Mar 4, 2025
f88a64a
Add example config
mpetrun5 Mar 4, 2025
07539bd
Fix app startup
mpetrun5 Mar 4, 2025
5a3d65e
Fix across message infinite loop
mpetrun5 Mar 4, 2025
e874a4e
Merge branch 'main' into feat/startup-configuration
mpetrun5 Mar 5, 2025
4f1cd54
Fix across tests
mpetrun5 Mar 5, 2025
70ccbcd
Make test less flaky
mpetrun5 Mar 5, 2025
ce40214
Remove print
mpetrun5 Mar 5, 2025
50a3e31
Remove unnecessary waits
mpetrun5 Mar 5, 2025
585b095
Lint
mpetrun5 Mar 5, 2025
4828e19
Merge branch 'main' into feat/startup-configuration
mpetrun5 Mar 5, 2025
90ed52a
Ignore irrelevant coordinator errors
mpetrun5 Mar 5, 2025
22fcfb9
Try to execute tss process in spite of not notifying everyone
mpetrun5 Mar 5, 2025
eb2a537
Fix coordinator error assignemnt
mpetrun5 Mar 6, 2025
e92a74e
Add manual timeout to keygen
mpetrun5 Mar 6, 2025
4a56c94
Increase coordintor timeout in tests
mpetrun5 Mar 6, 2025
bcfcf4d
Increase tss process timeout
mpetrun5 Mar 6, 2025
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
10 changes: 5 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,18 @@
FROM alpine:3.6 as alpine
RUN apk add -U --no-cache ca-certificates

FROM golang:1.19 AS builder
FROM golang:1.23 AS builder
ADD . /src
WORKDIR /src
RUN cd /src && echo $(ls -1 /src)
RUN go mod download
RUN go build -ldflags "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=ignore -X github.com/sprintertech/sprinter-signing/app.Version=$(sed -n '0,/## \[\([0-9.]*\)\]/s/.*\[\([0-9.]*\)\].*/\1/p' CHANGELOG.md)" -o /bridge .
RUN go build -ldflags "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=ignore -X github.com/sprintertech/sprinter-signing/app.Version=$(sed -n '0,/## \[\([0-9.]*\)\]/s/.*\[\([0-9.]*\)\].*/\1/p' CHANGELOG.md)" -o /signing .

# final stage
FROM debian:stable-slim
COPY --from=builder /bridge ./
RUN chmod +x ./bridge
COPY --from=builder /signing ./
RUN chmod +x ./signing
RUN mkdir -p /mount
COPY --from=alpine /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/

ENTRYPOINT ["./bridge"]
ENTRYPOINT ["./signing"]
52 changes: 32 additions & 20 deletions api/handlers/signing_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,26 +24,23 @@ import (
type SigningHandlerTestSuite struct {
suite.Suite

handler *handlers.SigningHandler
msgChn chan []*message.Message
chains map[uint64]struct{}
}

func TestRunSigningHandlerTestSuite(t *testing.T) {
suite.Run(t, new(SigningHandlerTestSuite))
}

func (s *SigningHandlerTestSuite) SetupTest() {
ctrl := gomock.NewController(s.T())
defer ctrl.Finish()

chains := make(map[uint64]struct{})
chains[1] = struct{}{}

s.msgChn = make(chan []*message.Message, 1)
s.handler = handlers.NewSigningHandler(s.msgChn, chains)
s.chains = chains
}

func (s *SigningHandlerTestSuite) Test_HandleSigning_MissingDepositID() {
msgChn := make(chan []*message.Message)
handler := handlers.NewSigningHandler(msgChn, s.chains)

input := handlers.SigningBody{
Protocol: "across",
}
Expand All @@ -58,17 +55,20 @@ func (s *SigningHandlerTestSuite) Test_HandleSigning_MissingDepositID() {
recorder := httptest.NewRecorder()

go func() {
msg := <-s.msgChn
msg := <-msgChn
ad := msg[0].Data.(across.AcrossData)
ad.ErrChn <- fmt.Errorf("error handling message")
}()

s.handler.HandleSigning(recorder, req)
handler.HandleSigning(recorder, req)

s.Equal(http.StatusBadRequest, recorder.Code)
}

func (s *SigningHandlerTestSuite) Test_HandleSigning_InvalidChainID() {
msgChn := make(chan []*message.Message)
handler := handlers.NewSigningHandler(msgChn, s.chains)

input := handlers.SigningBody{
DepositId: &handlers.BigInt{big.NewInt(1000)},
Protocol: "across",
Expand All @@ -84,17 +84,20 @@ func (s *SigningHandlerTestSuite) Test_HandleSigning_InvalidChainID() {
recorder := httptest.NewRecorder()

go func() {
msg := <-s.msgChn
msg := <-msgChn
ad := msg[0].Data.(across.AcrossData)
ad.ErrChn <- fmt.Errorf("error handling message")
}()

s.handler.HandleSigning(recorder, req)
handler.HandleSigning(recorder, req)

s.Equal(http.StatusBadRequest, recorder.Code)
}

func (s *SigningHandlerTestSuite) Test_HandleSigning_ChainNotSupported() {
msgChn := make(chan []*message.Message)
handler := handlers.NewSigningHandler(msgChn, s.chains)

input := handlers.SigningBody{
DepositId: &handlers.BigInt{big.NewInt(1000)},
Protocol: "across",
Expand All @@ -110,17 +113,20 @@ func (s *SigningHandlerTestSuite) Test_HandleSigning_ChainNotSupported() {
recorder := httptest.NewRecorder()

go func() {
msg := <-s.msgChn
msg := <-msgChn
ad := msg[0].Data.(across.AcrossData)
ad.ErrChn <- fmt.Errorf("error handling message")
}()

s.handler.HandleSigning(recorder, req)
handler.HandleSigning(recorder, req)

s.Equal(http.StatusBadRequest, recorder.Code)
}

func (s *SigningHandlerTestSuite) Test_HandleSigning_InvalidProtocol() {
msgChn := make(chan []*message.Message)
handler := handlers.NewSigningHandler(msgChn, s.chains)

input := handlers.SigningBody{
DepositId: &handlers.BigInt{big.NewInt(1000)},
Protocol: "invalid",
Expand All @@ -136,17 +142,20 @@ func (s *SigningHandlerTestSuite) Test_HandleSigning_InvalidProtocol() {
recorder := httptest.NewRecorder()

go func() {
msg := <-s.msgChn
msg := <-msgChn
ad := msg[0].Data.(across.AcrossData)
ad.ErrChn <- fmt.Errorf("error handling message")
}()

s.handler.HandleSigning(recorder, req)
handler.HandleSigning(recorder, req)

s.Equal(http.StatusBadRequest, recorder.Code)
}

func (s *SigningHandlerTestSuite) Test_HandleSigning_ErrorHandlingMessage() {
msgChn := make(chan []*message.Message)
handler := handlers.NewSigningHandler(msgChn, s.chains)

input := handlers.SigningBody{
DepositId: &handlers.BigInt{big.NewInt(1000)},
Protocol: "across",
Expand All @@ -162,17 +171,20 @@ func (s *SigningHandlerTestSuite) Test_HandleSigning_ErrorHandlingMessage() {
recorder := httptest.NewRecorder()

go func() {
msg := <-s.msgChn
msg := <-msgChn
ad := msg[0].Data.(across.AcrossData)
ad.ErrChn <- fmt.Errorf("error handling message")
}()

s.handler.HandleSigning(recorder, req)
handler.HandleSigning(recorder, req)

s.Equal(http.StatusInternalServerError, recorder.Code)
}

func (s *SigningHandlerTestSuite) Test_HandleSigning_Success() {
msgChn := make(chan []*message.Message)
handler := handlers.NewSigningHandler(msgChn, s.chains)

input := handlers.SigningBody{
DepositId: &handlers.BigInt{big.NewInt(1000)},
Protocol: "across",
Expand All @@ -188,12 +200,12 @@ func (s *SigningHandlerTestSuite) Test_HandleSigning_Success() {
recorder := httptest.NewRecorder()

go func() {
msg := <-s.msgChn
msg := <-msgChn
ad := msg[0].Data.(across.AcrossData)
ad.ErrChn <- nil
}()

s.handler.HandleSigning(recorder, req)
handler.HandleSigning(recorder, req)

s.Equal(http.StatusAccepted, recorder.Code)
}
Expand Down
6 changes: 3 additions & 3 deletions api/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ func Serve(
statusHandler *handlers.StatusHandler,
) {
r := mux.NewRouter()
r.HandleFunc("POST /v1/chains/{chainId:[0-9]+}/signatures", signingHandler.HandleSigning)
r.HandleFunc("GET /v1/chains/{chainId:[0-9]+}/signatures/{depositId}", statusHandler.HandleRequest)
http.Handle("/", r)
r.HandleFunc("/v1/chains/{chainId:[0-9]+}/signatures", signingHandler.HandleSigning).Methods("POST")
r.HandleFunc("/v1/chains/{chainId:[0-9]+}/signatures/{depositId}", statusHandler.HandleRequest).Methods("GET")

server := &http.Server{
Addr: addr,
Handler: r,
ReadTimeout: time.Second * 10,
}
go func() {
Expand Down
Loading
Loading