From e5a8e14020ad7a5a3795eb96389b0c89fecfade1 Mon Sep 17 00:00:00 2001 From: Parya Rastegar Date: Sun, 7 Apr 2024 16:58:58 +0330 Subject: [PATCH 1/7] fix: seprate cobra and app init --- .gitignore | 3 +- cmd/broker.go | 19 +++++++++ cmd/consumer.go | 32 ++++++++++++++ {internal/cmd => cmd}/root.go | 0 cmd/worker.go | 32 ++++++++++++++ conf-broker.yaml | 59 ++++++++++++++++++++++++++ conf-consumer.yaml | 50 ++++++++++++++++++++++ conf-worker.yaml | 78 +++++++++++++++++++++++++++++++++++ internal/app/broker.go | 34 +++++++++++++++ internal/app/consumer.go | 48 +++++++++++++++++++++ internal/app/worker.go | 48 +++++++++++++++++++++ internal/cmd/broker.go | 45 -------------------- internal/cmd/consumer.go | 70 ------------------------------- internal/cmd/worker.go | 71 ------------------------------- internal/main.go | 4 +- 15 files changed, 405 insertions(+), 188 deletions(-) create mode 100644 cmd/broker.go create mode 100644 cmd/consumer.go rename {internal/cmd => cmd}/root.go (100%) create mode 100644 cmd/worker.go create mode 100644 conf-broker.yaml create mode 100644 conf-consumer.yaml create mode 100644 conf-worker.yaml create mode 100644 internal/app/broker.go create mode 100644 internal/app/consumer.go create mode 100644 internal/app/worker.go delete mode 100644 internal/cmd/broker.go delete mode 100644 internal/cmd/consumer.go delete mode 100644 internal/cmd/worker.go diff --git a/.gitignore b/.gitignore index deaf6354..7ff0257a 100644 --- a/.gitignore +++ b/.gitignore @@ -18,5 +18,6 @@ docker/pgadmin .clinic node_trace.* internal/bin -conf.*.private +**/conf.*.private +**/conf-*.yaml .idea \ No newline at end of file diff --git a/cmd/broker.go b/cmd/broker.go new file mode 100644 index 00000000..25c24bff --- /dev/null +++ b/cmd/broker.go @@ -0,0 +1,19 @@ +package cmd + +import ( + "github.com/KenshiTech/unchained/app" + "github.com/spf13/cobra" +) + +var brokerCmd = &cobra.Command{ + Use: "broker", + Short: "Run the Unchained client in broker mode", + Long: `Run the Unchained client in broker mode`, + Run: func(cmd *cobra.Command, args []string) { + app.Broker() + }, +} + +func init() { + rootCmd.AddCommand(brokerCmd) +} diff --git a/cmd/consumer.go b/cmd/consumer.go new file mode 100644 index 00000000..c8aa6519 --- /dev/null +++ b/cmd/consumer.go @@ -0,0 +1,32 @@ +package cmd + +import ( + "github.com/KenshiTech/unchained/app" + "github.com/KenshiTech/unchained/config" + "github.com/spf13/cobra" +) + +var consumerCmd = &cobra.Command{ + Use: "consumer", + Short: "Run the Unchained client in consumer mode", + Long: `Run the Unchained client in consumer mode`, + + PreRun: func(cmd *cobra.Command, args []string) { + config.App.Network.BrokerURI = cmd.Flags().Lookup("broker").Value.String() + }, + + Run: func(cmd *cobra.Command, args []string) { + app.Consumer() + }, +} + +func init() { + rootCmd.AddCommand(consumerCmd) + + consumerCmd.Flags().StringP( + "broker", + "b", + "wss://shinobi.brokers.kenshi.io", + "Unchained broker to connect to", + ) +} diff --git a/internal/cmd/root.go b/cmd/root.go similarity index 100% rename from internal/cmd/root.go rename to cmd/root.go diff --git a/cmd/worker.go b/cmd/worker.go new file mode 100644 index 00000000..f7818af9 --- /dev/null +++ b/cmd/worker.go @@ -0,0 +1,32 @@ +package cmd + +import ( + "github.com/KenshiTech/unchained/config" + "github.com/spf13/cobra" +) + +// workerCmd represents the worker command. +var workerCmd = &cobra.Command{ + Use: "worker", + Short: "Run the Unchained client in worker mode", + Long: `Run the Unchained client in worker mode`, + + PreRun: func(cmd *cobra.Command, args []string) { + config.App.Network.BrokerURI = cmd.Flags().Lookup("broker").Value.String() + }, + + Run: func(cmd *cobra.Command, args []string) { + + }, +} + +func init() { + rootCmd.AddCommand(workerCmd) + + workerCmd.Flags().StringP( + "broker", + "b", + "wss://shinobi.brokers.kenshi.io", + "Unchained broker to connect to", + ) +} diff --git a/conf-broker.yaml b/conf-broker.yaml new file mode 100644 index 00000000..6d7f65d7 --- /dev/null +++ b/conf-broker.yaml @@ -0,0 +1,59 @@ +log: debug +name: Tengu + +broker: + uri: wss://shinobi.brokers.kenshi.io + +rpc: + - name: ethereum + nodes: + - wss://eth-mainnet.blastapi.io/631e0038-c5c7-4fbf-afbd-47af4cb80699 + + - name: arbitrum + nodes: + - wss://arbitrum-one.blastapi.io/631e0038-c5c7-4fbf-afbd-47af4cb80699 + + - name: arbitrum_sepolia + nodes: + - wss://arbitrum-sepolia.blastapi.io/631e0038-c5c7-4fbf-afbd-47af4cb80699 + +plugins: + uniswap: + schedule: + arbitrum: 100ms + ethereum: 5s + + tokens: + - id: ethereum + name: ethereum + chain: ethereum + pair: "0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640" + delta: 12 + invert: true + unit: USDT + send: true + + - name: arbitrum + chain: ethereum + pair: "0x59354356Ec5d56306791873f567d61EBf11dfbD5" + delta: 0 + invert: false + unit: ETH + send: true + + - name: bitcoin + chain: ethereum + pair: "0x9db9e0e53058c89e5b94e29621a205198648425b" + delta: 2 + invert: false + unit: USDT + send: true + + # - name: kenshi + # chain: arbitrum + # pair: "0x68c685fd52a56f04665b491d491355a624540e85" + # delta: 0 + # invert: true + # unit: USDT + # cross: + # - ethereum diff --git a/conf-consumer.yaml b/conf-consumer.yaml new file mode 100644 index 00000000..c046c062 --- /dev/null +++ b/conf-consumer.yaml @@ -0,0 +1,50 @@ +log: debug +name: ROARRRR + +postgres: + url: postgresql://pouya:UNhoiB4nf1Sr@ep-bitter-dew-a2ficc37.eu-central-1.aws.neon.tech/unchained?sslmode=require + +rpc: + - name: ethereum + nodes: + - wss://eth-mainnet.blastapi.io/631e0038-c5c7-4fbf-afbd-47af4cb80699 + + - name: arbitrum + nodes: + - wss://arbitrum-one.blastapi.io/631e0038-c5c7-4fbf-afbd-47af4cb80699 + + - name: arbitrum_sepolia + nodes: + - wss://arbitrum-sepolia.blastapi.io/631e0038-c5c7-4fbf-afbd-47af4cb80699 + +plugins: + uniswap: + schedule: + arbitrum: 100ms + ethereum: 5s + + tokens: + - id: ethereum + name: ethereum + chain: ethereum + pair: "0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640" + delta: 12 + invert: true + unit: USDT + send: true + + - name: arbitrum + chain: ethereum + pair: "0x59354356Ec5d56306791873f567d61EBf11dfbD5" + delta: 0 + invert: false + unit: ETH + send: true + + - name: bitcoin + chain: ethereum + pair: "0x9db9e0e53058c89e5b94e29621a205198648425b" + delta: 2 + invert: false + unit: USDT + send: true diff --git a/conf-worker.yaml b/conf-worker.yaml new file mode 100644 index 00000000..d033698e --- /dev/null +++ b/conf-worker.yaml @@ -0,0 +1,78 @@ +log: debug +name: Shinobi + +postgres: + url: postgresql://pouya:UNhoiB4nf1Sr@ep-bitter-dew-a2ficc37.eu-central-1.aws.neon.tech/unchained?sslmode=require + +broker: + uri: wss://shinobi.brokers.kenshi.io + +rpc: + - name: ethereum + nodes: + - wss://eth-mainnet.blastapi.io/631e0038-c5c7-4fbf-afbd-47af4cb80699 + + - name: arbitrum + nodes: + - wss://arbitrum-one.blastapi.io/631e0038-c5c7-4fbf-afbd-47af4cb80699 + + - name: arbitrum_sepolia + nodes: + - wss://arbitrum-sepolia.blastapi.io/631e0038-c5c7-4fbf-afbd-47af4cb80699 + +plugins: + # logs: + # schedule: + # arbitrum: 100ms + # ethereum: 5s + + # events: + # - name: DAI + # chain: ethereum + # abi: ./abi/ERC20.json + # event: Transfer + # address: "0x6B175474E89094C44Da98b954EedeAC495271d0F" + # from: 19271250 + # step: 8 + # confirmations: 8 + # store: true + + uniswap: + schedule: + arbitrum: 100ms + ethereum: 5s + + tokens: + - id: ethereum + name: ethereum + chain: ethereum + pair: "0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640" + delta: 12 + invert: true + unit: USDT + send: true + + - name: arbitrum + chain: ethereum + pair: "0x59354356Ec5d56306791873f567d61EBf11dfbD5" + delta: 0 + invert: false + unit: ETH + send: true + + - name: bitcoin + chain: ethereum + pair: "0x9db9e0e53058c89e5b94e29621a205198648425b" + delta: 2 + invert: false + unit: USDT + send: true + + # - name: kenshi + # chain: arbitrum + # pair: "0x68c685fd52a56f04665b491d491355a624540e85" + # delta: 0 + # invert: true + # unit: USDT + # cross: + # - ethereum diff --git a/internal/app/broker.go b/internal/app/broker.go new file mode 100644 index 00000000..34a3b22a --- /dev/null +++ b/internal/app/broker.go @@ -0,0 +1,34 @@ +package app + +import ( + "github.com/KenshiTech/unchained/config" + "github.com/KenshiTech/unchained/constants" + "github.com/KenshiTech/unchained/crypto/bls" + "github.com/KenshiTech/unchained/ethereum" + "github.com/KenshiTech/unchained/log" + "github.com/KenshiTech/unchained/pos" + "github.com/KenshiTech/unchained/transport/server" + "github.com/KenshiTech/unchained/transport/server/websocket" +) + +func Broker() { + log.Start(config.App.System.Log) + log.Logger. + With("Version", constants.Version). + With("Protocol", constants.ProtocolVersion). + Info("Running Unchained | Broker") + + err := config.Load(configPath, secretsPath) + if err != nil { + panic(err) + } + + bls.InitClientIdentity() + + ethRPC := ethereum.New() + pos.New(ethRPC) + + server.New( + websocket.WithWebsocket(), + ) +} diff --git a/internal/app/consumer.go b/internal/app/consumer.go new file mode 100644 index 00000000..b7188d6c --- /dev/null +++ b/internal/app/consumer.go @@ -0,0 +1,48 @@ +package app + +import ( + "github.com/KenshiTech/unchained/config" + "github.com/KenshiTech/unchained/constants" + "github.com/KenshiTech/unchained/crypto/bls" + "github.com/KenshiTech/unchained/db" + "github.com/KenshiTech/unchained/ethereum" + "github.com/KenshiTech/unchained/log" + "github.com/KenshiTech/unchained/pos" + correctnessService "github.com/KenshiTech/unchained/service/correctness" + evmlogService "github.com/KenshiTech/unchained/service/evmlog" + uniswapService "github.com/KenshiTech/unchained/service/uniswap" + "github.com/KenshiTech/unchained/transport/client" + "github.com/KenshiTech/unchained/transport/client/handler" + "github.com/KenshiTech/unchained/transport/server" + "github.com/KenshiTech/unchained/transport/server/gql" +) + +func Consumer() { + log.Start(config.App.System.Log) + log.Logger. + With("Version", constants.Version). + With("Protocol", constants.ProtocolVersion). + Info("Running Unchained | Consumer") + + err := config.Load(configPath, secretsPath) + if err != nil { + panic(err) + } + + bls.InitClientIdentity() + + ethRPC := ethereum.New() + pos := pos.New(ethRPC) + db.Start() + + server.New( + gql.WithGraphQL(), + ) + + correctnessService := correctnessService.New(ethRPC) + evmLogService := evmlogService.New(ethRPC, pos) + uniswapService := uniswapService.New(ethRPC, pos) + + handler := handler.New(correctnessService, uniswapService, evmLogService) + client.Consume(handler) +} diff --git a/internal/app/worker.go b/internal/app/worker.go new file mode 100644 index 00000000..211c1db9 --- /dev/null +++ b/internal/app/worker.go @@ -0,0 +1,48 @@ +package app + +import ( + "github.com/KenshiTech/unchained/config" + "github.com/KenshiTech/unchained/constants" + "github.com/KenshiTech/unchained/crypto/bls" + "github.com/KenshiTech/unchained/ethereum" + "github.com/KenshiTech/unchained/log" + "github.com/KenshiTech/unchained/persistence" + "github.com/KenshiTech/unchained/pos" + "github.com/KenshiTech/unchained/scheduler" + correctnessService "github.com/KenshiTech/unchained/service/correctness" + evmlogService "github.com/KenshiTech/unchained/service/evmlog" + uniswapService "github.com/KenshiTech/unchained/service/uniswap" + "github.com/KenshiTech/unchained/transport/client" + "github.com/KenshiTech/unchained/transport/client/handler" +) + +func Worker() { + log.Start(config.App.System.Log) + log.Logger. + With("Version", constants.Version). + With("Protocol", constants.ProtocolVersion). + Info("Running Unchained | Worker") + + err := config.Load(configPath, secretsPath) + if err != nil { + panic(err) + } + + bls.InitClientIdentity() + + ethRPC := ethereum.New() + pos := pos.New(ethRPC) + badger := persistence.New(contextPath) + + correctnessService := correctnessService.New(ethRPC) + evmLogService := evmlogService.New(ethRPC, pos) + uniswapService := uniswapService.New(ethRPC, pos) + + scheduler.New( + scheduler.WithEthLogs(evmLogService, ethRPC, badger), + scheduler.WithUniswapEvents(uniswapService, ethRPC), + ) + + handler := handler.New(correctnessService, uniswapService, evmLogService) + client.Consume(handler) +} diff --git a/internal/cmd/broker.go b/internal/cmd/broker.go deleted file mode 100644 index 53b52b23..00000000 --- a/internal/cmd/broker.go +++ /dev/null @@ -1,45 +0,0 @@ -package cmd - -import ( - "github.com/KenshiTech/unchained/config" - "github.com/KenshiTech/unchained/constants" - "github.com/KenshiTech/unchained/crypto/bls" - "github.com/KenshiTech/unchained/ethereum" - "github.com/KenshiTech/unchained/log" - "github.com/KenshiTech/unchained/pos" - "github.com/KenshiTech/unchained/transport/server" - "github.com/KenshiTech/unchained/transport/server/websocket" - - "github.com/spf13/cobra" -) - -var brokerCmd = &cobra.Command{ - Use: "broker", - Short: "Run the Unchained client in broker mode", - Long: `Run the Unchained client in broker mode`, - Run: func(cmd *cobra.Command, args []string) { - log.Start(config.App.System.Log) - log.Logger. - With("Version", constants.Version). - With("Protocol", constants.ProtocolVersion). - Info("Running Unchained | Broker") - - err := config.Load(configPath, secretsPath) - if err != nil { - panic(err) - } - - bls.InitClientIdentity() - - ethRPC := ethereum.New() - pos.New(ethRPC) - - server.New( - websocket.WithWebsocket(), - ) - }, -} - -func init() { - rootCmd.AddCommand(brokerCmd) -} diff --git a/internal/cmd/consumer.go b/internal/cmd/consumer.go deleted file mode 100644 index 92f02c7e..00000000 --- a/internal/cmd/consumer.go +++ /dev/null @@ -1,70 +0,0 @@ -package cmd - -import ( - "github.com/KenshiTech/unchained/config" - "github.com/KenshiTech/unchained/constants" - "github.com/KenshiTech/unchained/crypto/bls" - "github.com/KenshiTech/unchained/db" - "github.com/KenshiTech/unchained/ethereum" - "github.com/KenshiTech/unchained/log" - "github.com/KenshiTech/unchained/pos" - correctnessService "github.com/KenshiTech/unchained/service/correctness" - evmlogService "github.com/KenshiTech/unchained/service/evmlog" - uniswapService "github.com/KenshiTech/unchained/service/uniswap" - "github.com/KenshiTech/unchained/transport/client" - "github.com/KenshiTech/unchained/transport/client/handler" - "github.com/KenshiTech/unchained/transport/server" - "github.com/KenshiTech/unchained/transport/server/gql" - "github.com/spf13/cobra" -) - -var consumerCmd = &cobra.Command{ - Use: "consumer", - Short: "Run the Unchained client in consumer mode", - Long: `Run the Unchained client in consumer mode`, - - PreRun: func(cmd *cobra.Command, args []string) { - config.App.Network.BrokerURI = cmd.Flags().Lookup("broker").Value.String() - }, - - Run: func(cmd *cobra.Command, args []string) { - log.Start(config.App.System.Log) - log.Logger. - With("Version", constants.Version). - With("Protocol", constants.ProtocolVersion). - Info("Running Unchained | Consumer") - - err := config.Load(configPath, secretsPath) - if err != nil { - panic(err) - } - - bls.InitClientIdentity() - - ethRPC := ethereum.New() - pos := pos.New(ethRPC) - db.Start() - - server.New( - gql.WithGraphQL(), - ) - - correctnessService := correctnessService.New(ethRPC) - evmLogService := evmlogService.New(ethRPC, pos) - uniswapService := uniswapService.New(ethRPC, pos) - - handler := handler.New(correctnessService, uniswapService, evmLogService) - client.Consume(handler) - }, -} - -func init() { - rootCmd.AddCommand(consumerCmd) - - consumerCmd.Flags().StringP( - "broker", - "b", - "wss://shinobi.brokers.kenshi.io", - "Unchained broker to connect to", - ) -} diff --git a/internal/cmd/worker.go b/internal/cmd/worker.go deleted file mode 100644 index 60977424..00000000 --- a/internal/cmd/worker.go +++ /dev/null @@ -1,71 +0,0 @@ -package cmd - -import ( - "github.com/KenshiTech/unchained/config" - "github.com/KenshiTech/unchained/constants" - "github.com/KenshiTech/unchained/crypto/bls" - "github.com/KenshiTech/unchained/ethereum" - "github.com/KenshiTech/unchained/log" - "github.com/KenshiTech/unchained/persistence" - "github.com/KenshiTech/unchained/pos" - "github.com/KenshiTech/unchained/scheduler" - correctnessService "github.com/KenshiTech/unchained/service/correctness" - evmlogService "github.com/KenshiTech/unchained/service/evmlog" - uniswapService "github.com/KenshiTech/unchained/service/uniswap" - "github.com/KenshiTech/unchained/transport/client" - "github.com/KenshiTech/unchained/transport/client/handler" - "github.com/spf13/cobra" -) - -// workerCmd represents the worker command. -var workerCmd = &cobra.Command{ - Use: "worker", - Short: "Run the Unchained client in worker mode", - Long: `Run the Unchained client in worker mode`, - - PreRun: func(cmd *cobra.Command, args []string) { - config.App.Network.BrokerURI = cmd.Flags().Lookup("broker").Value.String() - }, - - Run: func(cmd *cobra.Command, args []string) { - log.Start(config.App.System.Log) - log.Logger. - With("Version", constants.Version). - With("Protocol", constants.ProtocolVersion). - Info("Running Unchained | Worker") - - err := config.Load(configPath, secretsPath) - if err != nil { - panic(err) - } - - bls.InitClientIdentity() - - ethRPC := ethereum.New() - pos := pos.New(ethRPC) - badger := persistence.New(contextPath) - - correctnessService := correctnessService.New(ethRPC) - evmLogService := evmlogService.New(ethRPC, pos) - uniswapService := uniswapService.New(ethRPC, pos) - - scheduler.New( - scheduler.WithEthLogs(evmLogService, ethRPC, badger), - scheduler.WithUniswapEvents(uniswapService, ethRPC), - ) - - handler := handler.New(correctnessService, uniswapService, evmLogService) - client.Consume(handler) - }, -} - -func init() { - rootCmd.AddCommand(workerCmd) - - workerCmd.Flags().StringP( - "broker", - "b", - "wss://shinobi.brokers.kenshi.io", - "Unchained broker to connect to", - ) -} diff --git a/internal/main.go b/internal/main.go index 40cdfa4d..d7d0fe63 100644 --- a/internal/main.go +++ b/internal/main.go @@ -1,6 +1,8 @@ package main -import "github.com/KenshiTech/unchained/cmd" +import ( + "unchained/cmd" +) func main() { cmd.Execute() From 63b555f07ce32b4ee877f66c7fc0eb8ddf6d9ff6 Mon Sep 17 00:00:00 2001 From: Parya Rastegar Date: Mon, 8 Apr 2024 01:43:39 +0330 Subject: [PATCH 2/7] fix: remove unneccessry files --- .gitignore | 1 - Makefile | 24 +++++++------- conf-broker.yaml | 59 ----------------------------------- conf-consumer.yaml | 50 ----------------------------- conf-worker.yaml | 78 ---------------------------------------------- 5 files changed, 12 insertions(+), 200 deletions(-) delete mode 100644 conf-broker.yaml delete mode 100644 conf-consumer.yaml delete mode 100644 conf-worker.yaml diff --git a/.gitignore b/.gitignore index a6cf950f..4326d86f 100644 --- a/.gitignore +++ b/.gitignore @@ -20,5 +20,4 @@ node_trace.* internal/bin bin **/conf.*.private -**/conf-*.yaml .idea \ No newline at end of file diff --git a/Makefile b/Makefile index 217c72c2..e8890f87 100644 --- a/Makefile +++ b/Makefile @@ -1,22 +1,22 @@ prod: - GOOS=windows GOARCH=amd64 go build -o bin/unchained.windows.amd64.exe main.go - GOOS=darwin GOARCH=amd64 go build -o bin/unchained.darwin.amd64 main.go - GOOS=linux GOARCH=amd64 go build -o bin/unchained.linux.amd64 main.go + GOOS=windows GOARCH=amd64 go build -o bin/unchained.windows.amd64.exe ./cmd/main.go + GOOS=darwin GOARCH=amd64 go build -o bin/unchained.darwin.amd64 ./cmd/main.go + GOOS=linux GOARCH=amd64 go build -o bin/unchained.linux.amd64 ./cmd/main.go - GOOS=windows GOARCH=arm64 go build -o bin/unchained.windows.arm64.exe main.go - GOOS=darwin GOARCH=arm64 go build -o bin/unchained.darwin.arm64 main.go - GOOS=linux GOARCH=arm64 go build -o bin/unchained.linux.arm64 main.go + GOOS=windows GOARCH=arm64 go build -o bin/unchained.windows.arm64.exe ./cmd/main.go + GOOS=darwin GOARCH=arm64 go build -o bin/unchained.darwin.arm64 ./cmd/main.go + GOOS=linux GOARCH=arm64 go build -o bin/unchained.linux.arm64 ./cmd/main.go find bin -type f -exec chmod u+x {} \; strip: - GOOS=windows GOARCH=amd64 go build -ldflags "-w -s" -o bin/unchained.windows.amd64.exe main.go - GOOS=darwin GOARCH=amd64 go build -ldflags "-w -s" -o bin/unchained.darwin.amd64 main.go - GOOS=linux GOARCH=amd64 go build -ldflags "-w -s" -o bin/unchained.linux.amd64 main.go + GOOS=windows GOARCH=amd64 go build -ldflags "-w -s" -o bin/unchained.windows.amd64.exe ./cmd/main.go + GOOS=darwin GOARCH=amd64 go build -ldflags "-w -s" -o bin/unchained.darwin.amd64 ./cmd/main.go + GOOS=linux GOARCH=amd64 go build -ldflags "-w -s" -o bin/unchained.linux.amd64 ./cmd/main.go - GOOS=windows GOARCH=arm64 go build -ldflags "-w -s" -o bin/unchained.windows.arm64.exe main.go - GOOS=darwin GOARCH=arm64 go build -ldflags "-w -s" -o bin/unchained.darwin.arm64 main.go - GOOS=linux GOARCH=arm64 go build -ldflags "-w -s" -o bin/unchained.linux.arm64 main.go + GOOS=windows GOARCH=arm64 go build -ldflags "-w -s" -o bin/unchained.windows.arm64.exe ./cmd/main.go + GOOS=darwin GOARCH=arm64 go build -ldflags "-w -s" -o bin/unchained.darwin.arm64 ./cmd/main.go + GOOS=linux GOARCH=arm64 go build -ldflags "-w -s" -o bin/unchained.linux.arm64 ./cmd/main.go find bin -type f -exec chmod u+x {} \; diff --git a/conf-broker.yaml b/conf-broker.yaml deleted file mode 100644 index 6d7f65d7..00000000 --- a/conf-broker.yaml +++ /dev/null @@ -1,59 +0,0 @@ -log: debug -name: Tengu - -broker: - uri: wss://shinobi.brokers.kenshi.io - -rpc: - - name: ethereum - nodes: - - wss://eth-mainnet.blastapi.io/631e0038-c5c7-4fbf-afbd-47af4cb80699 - - - name: arbitrum - nodes: - - wss://arbitrum-one.blastapi.io/631e0038-c5c7-4fbf-afbd-47af4cb80699 - - - name: arbitrum_sepolia - nodes: - - wss://arbitrum-sepolia.blastapi.io/631e0038-c5c7-4fbf-afbd-47af4cb80699 - -plugins: - uniswap: - schedule: - arbitrum: 100ms - ethereum: 5s - - tokens: - - id: ethereum - name: ethereum - chain: ethereum - pair: "0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640" - delta: 12 - invert: true - unit: USDT - send: true - - - name: arbitrum - chain: ethereum - pair: "0x59354356Ec5d56306791873f567d61EBf11dfbD5" - delta: 0 - invert: false - unit: ETH - send: true - - - name: bitcoin - chain: ethereum - pair: "0x9db9e0e53058c89e5b94e29621a205198648425b" - delta: 2 - invert: false - unit: USDT - send: true - - # - name: kenshi - # chain: arbitrum - # pair: "0x68c685fd52a56f04665b491d491355a624540e85" - # delta: 0 - # invert: true - # unit: USDT - # cross: - # - ethereum diff --git a/conf-consumer.yaml b/conf-consumer.yaml deleted file mode 100644 index c046c062..00000000 --- a/conf-consumer.yaml +++ /dev/null @@ -1,50 +0,0 @@ -log: debug -name: ROARRRR - -postgres: - url: postgresql://pouya:UNhoiB4nf1Sr@ep-bitter-dew-a2ficc37.eu-central-1.aws.neon.tech/unchained?sslmode=require - -rpc: - - name: ethereum - nodes: - - wss://eth-mainnet.blastapi.io/631e0038-c5c7-4fbf-afbd-47af4cb80699 - - - name: arbitrum - nodes: - - wss://arbitrum-one.blastapi.io/631e0038-c5c7-4fbf-afbd-47af4cb80699 - - - name: arbitrum_sepolia - nodes: - - wss://arbitrum-sepolia.blastapi.io/631e0038-c5c7-4fbf-afbd-47af4cb80699 - -plugins: - uniswap: - schedule: - arbitrum: 100ms - ethereum: 5s - - tokens: - - id: ethereum - name: ethereum - chain: ethereum - pair: "0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640" - delta: 12 - invert: true - unit: USDT - send: true - - - name: arbitrum - chain: ethereum - pair: "0x59354356Ec5d56306791873f567d61EBf11dfbD5" - delta: 0 - invert: false - unit: ETH - send: true - - - name: bitcoin - chain: ethereum - pair: "0x9db9e0e53058c89e5b94e29621a205198648425b" - delta: 2 - invert: false - unit: USDT - send: true diff --git a/conf-worker.yaml b/conf-worker.yaml deleted file mode 100644 index d033698e..00000000 --- a/conf-worker.yaml +++ /dev/null @@ -1,78 +0,0 @@ -log: debug -name: Shinobi - -postgres: - url: postgresql://pouya:UNhoiB4nf1Sr@ep-bitter-dew-a2ficc37.eu-central-1.aws.neon.tech/unchained?sslmode=require - -broker: - uri: wss://shinobi.brokers.kenshi.io - -rpc: - - name: ethereum - nodes: - - wss://eth-mainnet.blastapi.io/631e0038-c5c7-4fbf-afbd-47af4cb80699 - - - name: arbitrum - nodes: - - wss://arbitrum-one.blastapi.io/631e0038-c5c7-4fbf-afbd-47af4cb80699 - - - name: arbitrum_sepolia - nodes: - - wss://arbitrum-sepolia.blastapi.io/631e0038-c5c7-4fbf-afbd-47af4cb80699 - -plugins: - # logs: - # schedule: - # arbitrum: 100ms - # ethereum: 5s - - # events: - # - name: DAI - # chain: ethereum - # abi: ./abi/ERC20.json - # event: Transfer - # address: "0x6B175474E89094C44Da98b954EedeAC495271d0F" - # from: 19271250 - # step: 8 - # confirmations: 8 - # store: true - - uniswap: - schedule: - arbitrum: 100ms - ethereum: 5s - - tokens: - - id: ethereum - name: ethereum - chain: ethereum - pair: "0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640" - delta: 12 - invert: true - unit: USDT - send: true - - - name: arbitrum - chain: ethereum - pair: "0x59354356Ec5d56306791873f567d61EBf11dfbD5" - delta: 0 - invert: false - unit: ETH - send: true - - - name: bitcoin - chain: ethereum - pair: "0x9db9e0e53058c89e5b94e29621a205198648425b" - delta: 2 - invert: false - unit: USDT - send: true - - # - name: kenshi - # chain: arbitrum - # pair: "0x68c685fd52a56f04665b491d491355a624540e85" - # delta: 0 - # invert: true - # unit: USDT - # cross: - # - ethereum From 9bb3de2741692fc3e9ce446f3dd3691147e6a349 Mon Sep 17 00:00:00 2001 From: Parya Rastegar Date: Fri, 12 Apr 2024 08:33:31 +0330 Subject: [PATCH 3/7] =?UTF-8?q?=F0=9F=90=9B=20fix(crypto):=20fix=20unused?= =?UTF-8?q?=20assining=20in=20evm=20init=20>>>=20=E2=8F=B0=2010m?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/crypto/ethereum/rpc.go | 3 ++- internal/crypto/identity.go | 13 +++++++------ internal/crypto/kosk/kosk.go | 1 + internal/pos/eip712.go | 3 ++- internal/pos/eip712/sign.go | 3 ++- internal/pos/pos.go | 5 +++-- internal/scheduler/logs/logs.go | 5 +++-- internal/scheduler/scheduler.go | 3 ++- internal/scheduler/uniswap/uniswap.go | 3 ++- internal/service/correctness/correctness.go | 3 ++- internal/service/evmlog/evmlog.go | 3 ++- internal/service/uniswap/uniswap.go | 5 +++-- internal/transport/client/conn/conn.go | 3 ++- 13 files changed, 33 insertions(+), 20 deletions(-) diff --git a/internal/crypto/ethereum/rpc.go b/internal/crypto/ethereum/rpc.go index dc7302cc..8b36ca18 100644 --- a/internal/crypto/ethereum/rpc.go +++ b/internal/crypto/ethereum/rpc.go @@ -3,9 +3,10 @@ package ethereum import ( "context" "fmt" - contracts2 "github.com/KenshiTech/unchained/internal/crypto/ethereum/contracts" "sync" + contracts2 "github.com/KenshiTech/unchained/internal/crypto/ethereum/contracts" + "github.com/KenshiTech/unchained/internal/config" "github.com/KenshiTech/unchained/internal/log" diff --git a/internal/crypto/identity.go b/internal/crypto/identity.go index 8ec713e3..b1b22c2c 100644 --- a/internal/crypto/identity.go +++ b/internal/crypto/identity.go @@ -3,6 +3,7 @@ package crypto import ( "crypto/ecdsa" "encoding/hex" + "github.com/KenshiTech/unchained/internal/address" "github.com/KenshiTech/unchained/internal/config" "github.com/KenshiTech/unchained/internal/crypto/bls" @@ -83,23 +84,23 @@ func WithEvmSigner() func(machineIdentity *MachineIdentity) error { return err } - address := ethCrypto.PubkeyToAddress(*publicKeyECDSA).Hex() + ethAddress := ethCrypto.PubkeyToAddress(*publicKeyECDSA).Hex() - evmSignerInstance := ðereum.EvmSigner{ + machineIdentity.Eth = ðereum.EvmSigner{ PublicKey: publicKeyECDSA, PrivateKey: privateKey, - Address: address, + Address: ethAddress, } if privateKeyRegenerated || config.App.Secret.EvmAddress == "" { - privateKeyBytes := ethCrypto.FromECDSA(evmSignerInstance.PrivateKey) + privateKeyBytes := ethCrypto.FromECDSA(machineIdentity.Eth.PrivateKey) config.App.Secret.EvmPrivateKey = hexutil.Encode(privateKeyBytes)[2:] - config.App.Secret.EvmAddress = evmSignerInstance.Address + config.App.Secret.EvmAddress = machineIdentity.Eth.Address } log.Logger. - With("Address", evmSignerInstance.Address). + With("Address", machineIdentity.Eth.Address). Info("EVM identity initialized") return nil diff --git a/internal/crypto/kosk/kosk.go b/internal/crypto/kosk/kosk.go index 864db140..8223dc0e 100644 --- a/internal/crypto/kosk/kosk.go +++ b/internal/crypto/kosk/kosk.go @@ -2,6 +2,7 @@ package kosk import ( "crypto/rand" + "github.com/KenshiTech/unchained/internal/crypto" "github.com/KenshiTech/unchained/internal/crypto/bls" diff --git a/internal/pos/eip712.go b/internal/pos/eip712.go index bfb9b4e2..f5cd6652 100644 --- a/internal/pos/eip712.go +++ b/internal/pos/eip712.go @@ -2,9 +2,10 @@ package pos import ( "context" + "math/big" + "github.com/KenshiTech/unchained/internal/crypto" "github.com/KenshiTech/unchained/internal/crypto/ethereum/contracts" - "math/big" "github.com/KenshiTech/unchained/internal/config" "github.com/KenshiTech/unchained/internal/log" diff --git a/internal/pos/eip712/sign.go b/internal/pos/eip712/sign.go index 6bd2e713..cf7195bc 100644 --- a/internal/pos/eip712/sign.go +++ b/internal/pos/eip712/sign.go @@ -2,9 +2,10 @@ package eip712 import ( "fmt" + "math/big" + "github.com/KenshiTech/unchained/internal/crypto/ethereum" "github.com/KenshiTech/unchained/internal/crypto/ethereum/contracts" - "math/big" "github.com/ethereum/go-ethereum/common/math" "github.com/ethereum/go-ethereum/crypto" diff --git a/internal/pos/pos.go b/internal/pos/pos.go index ccdef06f..e332f991 100644 --- a/internal/pos/pos.go +++ b/internal/pos/pos.go @@ -1,11 +1,12 @@ package pos import ( + "math/big" + "os" + "github.com/KenshiTech/unchained/internal/crypto" "github.com/KenshiTech/unchained/internal/crypto/ethereum" "github.com/KenshiTech/unchained/internal/crypto/ethereum/contracts" - "math/big" - "os" "github.com/KenshiTech/unchained/internal/address" "github.com/KenshiTech/unchained/internal/config" diff --git a/internal/scheduler/logs/logs.go b/internal/scheduler/logs/logs.go index 4557fb56..d80a4524 100644 --- a/internal/scheduler/logs/logs.go +++ b/internal/scheduler/logs/logs.go @@ -4,13 +4,14 @@ import ( "context" "errors" "fmt" - "github.com/KenshiTech/unchained/internal/crypto" - "github.com/KenshiTech/unchained/internal/crypto/ethereum" "math/big" "os" "sort" "strings" + "github.com/KenshiTech/unchained/internal/crypto" + "github.com/KenshiTech/unchained/internal/crypto/ethereum" + "github.com/KenshiTech/unchained/internal/config" "github.com/KenshiTech/unchained/internal/crypto/bls" "github.com/KenshiTech/unchained/internal/datasets" diff --git a/internal/scheduler/scheduler.go b/internal/scheduler/scheduler.go index bde35880..ef3051a5 100644 --- a/internal/scheduler/scheduler.go +++ b/internal/scheduler/scheduler.go @@ -1,10 +1,11 @@ package scheduler import ( - "github.com/KenshiTech/unchained/internal/crypto/ethereum" "os" "time" + "github.com/KenshiTech/unchained/internal/crypto/ethereum" + "github.com/KenshiTech/unchained/internal/persistence" "github.com/KenshiTech/unchained/internal/scheduler/uniswap" evmLogService "github.com/KenshiTech/unchained/internal/service/evmlog" diff --git a/internal/scheduler/uniswap/uniswap.go b/internal/scheduler/uniswap/uniswap.go index b2141105..4ab66559 100644 --- a/internal/scheduler/uniswap/uniswap.go +++ b/internal/scheduler/uniswap/uniswap.go @@ -2,11 +2,12 @@ package uniswap import ( "fmt" - "github.com/KenshiTech/unchained/internal/crypto/ethereum" "math/big" "os" "strings" + "github.com/KenshiTech/unchained/internal/crypto/ethereum" + "github.com/KenshiTech/unchained/internal/datasets" "github.com/KenshiTech/unchained/internal/config" diff --git a/internal/service/correctness/correctness.go b/internal/service/correctness/correctness.go index 7d80b2d1..02bdb8c6 100644 --- a/internal/service/correctness/correctness.go +++ b/internal/service/correctness/correctness.go @@ -2,10 +2,11 @@ package correctness import ( "context" - "github.com/KenshiTech/unchained/internal/crypto/ethereum" "sync" "time" + "github.com/KenshiTech/unchained/internal/crypto/ethereum" + "github.com/KenshiTech/unchained/internal/config" "github.com/KenshiTech/unchained/internal/crypto/bls" "github.com/KenshiTech/unchained/internal/crypto/shake" diff --git a/internal/service/evmlog/evmlog.go b/internal/service/evmlog/evmlog.go index 395a7210..775b6c2d 100644 --- a/internal/service/evmlog/evmlog.go +++ b/internal/service/evmlog/evmlog.go @@ -2,11 +2,12 @@ package evmlog import ( "context" - "github.com/KenshiTech/unchained/internal/crypto/ethereum" "math/big" "sync" "time" + "github.com/KenshiTech/unchained/internal/crypto/ethereum" + "github.com/KenshiTech/unchained/internal/address" "github.com/KenshiTech/unchained/internal/config" "github.com/KenshiTech/unchained/internal/constants/opcodes" diff --git a/internal/service/uniswap/uniswap.go b/internal/service/uniswap/uniswap.go index 0ba3e05d..50637110 100644 --- a/internal/service/uniswap/uniswap.go +++ b/internal/service/uniswap/uniswap.go @@ -3,14 +3,15 @@ package uniswap import ( "context" "fmt" - "github.com/KenshiTech/unchained/internal/crypto" - "github.com/KenshiTech/unchained/internal/crypto/ethereum" "math/big" "os" "strings" "sync" "time" + "github.com/KenshiTech/unchained/internal/crypto" + "github.com/KenshiTech/unchained/internal/crypto/ethereum" + "github.com/KenshiTech/unchained/internal/utils" "github.com/KenshiTech/unchained/internal/config" diff --git a/internal/transport/client/conn/conn.go b/internal/transport/client/conn/conn.go index baa4b23c..3b76f921 100644 --- a/internal/transport/client/conn/conn.go +++ b/internal/transport/client/conn/conn.go @@ -2,10 +2,11 @@ package conn import ( "fmt" - "github.com/KenshiTech/unchained/internal/crypto" "sync" "time" + "github.com/KenshiTech/unchained/internal/crypto" + "github.com/KenshiTech/unchained/internal/config" "github.com/KenshiTech/unchained/internal/constants" "github.com/KenshiTech/unchained/internal/constants/opcodes" From 9302d656a09b3eb3ffb65cfa112446a563ab95e9 Mon Sep 17 00:00:00 2001 From: Parya Rastegar Date: Fri, 12 Apr 2024 09:27:00 +0330 Subject: [PATCH 4/7] =?UTF-8?q?=F0=9F=93=9D=20docs(crypto):=20add=20some?= =?UTF-8?q?=20comments=20in=20crypto=20package=20>>>=20=E2=8F=B0=2010m?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/crypto/identity.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/internal/crypto/identity.go b/internal/crypto/identity.go index b1b22c2c..c01ab130 100644 --- a/internal/crypto/identity.go +++ b/internal/crypto/identity.go @@ -14,6 +14,7 @@ import ( ethCrypto "github.com/ethereum/go-ethereum/crypto" ) +// MachineIdentity holds machine identity and provide and manage keys type MachineIdentity struct { Bls *bls.BlsSigner Eth *ethereum.EvmSigner @@ -23,6 +24,7 @@ var Identity = &MachineIdentity{} type Option func(identity *MachineIdentity) error +// InitMachineIdentity loads all provided identities and save them to secret file func InitMachineIdentity(options ...Option) { for _, option := range options { err := option(Identity) @@ -46,6 +48,7 @@ func (i *MachineIdentity) ExportBlsSigner() *datasets.Signer { } } +// WithEvmSigner initialize and will add Evm keys to machine identity func WithEvmSigner() func(machineIdentity *MachineIdentity) error { return func(machineIdentity *MachineIdentity) error { var privateKey *ecdsa.PrivateKey @@ -107,6 +110,7 @@ func WithEvmSigner() func(machineIdentity *MachineIdentity) error { } } +// WithBlsIdentity initialize and will add Bls keys to machine identity func WithBlsIdentity() func(machineIdentity *MachineIdentity) error { return func(machineIdentity *MachineIdentity) error { machineIdentity.Bls = bls.NewIdentity() From 3b34b3b5cf4847cae2d66b0fdc36608870ea3470 Mon Sep 17 00:00:00 2001 From: Parya Rastegar Date: Fri, 12 Apr 2024 09:32:46 +0330 Subject: [PATCH 5/7] =?UTF-8?q?=F0=9F=90=9B=20fix(crypto):=20fix=20linters?= =?UTF-8?q?=20about=20comments=20>>>=20=E2=8F=B0=202m?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/crypto/identity.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/crypto/identity.go b/internal/crypto/identity.go index c01ab130..76bb1261 100644 --- a/internal/crypto/identity.go +++ b/internal/crypto/identity.go @@ -14,7 +14,7 @@ import ( ethCrypto "github.com/ethereum/go-ethereum/crypto" ) -// MachineIdentity holds machine identity and provide and manage keys +// MachineIdentity holds machine identity and provide and manage keys. type MachineIdentity struct { Bls *bls.BlsSigner Eth *ethereum.EvmSigner @@ -24,7 +24,7 @@ var Identity = &MachineIdentity{} type Option func(identity *MachineIdentity) error -// InitMachineIdentity loads all provided identities and save them to secret file +// InitMachineIdentity loads all provided identities and save them to secret file. func InitMachineIdentity(options ...Option) { for _, option := range options { err := option(Identity) @@ -48,7 +48,7 @@ func (i *MachineIdentity) ExportBlsSigner() *datasets.Signer { } } -// WithEvmSigner initialize and will add Evm keys to machine identity +// WithEvmSigner initialize and will add Evm keys to machine identity. func WithEvmSigner() func(machineIdentity *MachineIdentity) error { return func(machineIdentity *MachineIdentity) error { var privateKey *ecdsa.PrivateKey @@ -110,7 +110,7 @@ func WithEvmSigner() func(machineIdentity *MachineIdentity) error { } } -// WithBlsIdentity initialize and will add Bls keys to machine identity +// WithBlsIdentity initialize and will add Bls keys to machine identity. func WithBlsIdentity() func(machineIdentity *MachineIdentity) error { return func(machineIdentity *MachineIdentity) error { machineIdentity.Bls = bls.NewIdentity() From f266c4777f9e7af502b0706817c747080f5e5f2b Mon Sep 17 00:00:00 2001 From: Parya Rastegar Date: Sat, 13 Apr 2024 17:30:44 +0330 Subject: [PATCH 6/7] =?UTF-8?q?=F0=9F=90=9B=20fix(linters-services):=20add?= =?UTF-8?q?=20a=20new=20linter=20and=20fix=20dup=20in=20services=20>>>=20?= =?UTF-8?q?=E2=8F=B0=2030m?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .golangci.yml | 3 +-- internal/config/model.go | 2 +- internal/crypto/bls/identity.go | 14 +++++++------- internal/crypto/ethereum/rpc.go | 10 +++++----- internal/crypto/identity.go | 2 +- internal/db/db.go | 2 ++ internal/pos/eip712/sign.go | 16 ++++++++-------- internal/pos/pos.go | 2 +- internal/service/uniswap/uniswap.go | 13 ++----------- internal/transport/client/handler/correctness.go | 2 +- internal/transport/client/handler/event.go | 2 +- internal/transport/client/handler/price.go | 2 +- 12 files changed, 31 insertions(+), 39 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 235b4d0d..f0674989 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -121,7 +121,6 @@ linters-settings: tenv: all: true - linters: disable-all: true enable: @@ -173,7 +172,7 @@ linters: - predeclared - promlinter - reassign -# - revive + - revive - rowserrcheck - sqlclosecheck - stylecheck diff --git a/internal/config/model.go b/internal/config/model.go index 0af007d5..111d21a5 100644 --- a/internal/config/model.go +++ b/internal/config/model.go @@ -7,7 +7,7 @@ import ( // System struct hold the internal system configuration. type System struct { Name string `env:"SYSTEM_NAME" env-default:"Unchained" yaml:"name"` - Log string `env:"SYSTEM_LOG" env-default:"debug" yaml:"log"` + Log string `env:"SYSTEM_LOG" env-default:"info" yaml:"log"` ConfigPath string SecretsPath string diff --git a/internal/crypto/bls/identity.go b/internal/crypto/bls/identity.go index f69427a1..6cfe01bc 100644 --- a/internal/crypto/bls/identity.go +++ b/internal/crypto/bls/identity.go @@ -11,7 +11,7 @@ import ( bls12381_fr "github.com/consensys/gnark-crypto/ecc/bls12-381/fr" ) -type BlsSigner struct { +type Signer struct { Name string EvmAddress string SecretKey *big.Int @@ -22,8 +22,8 @@ type BlsSigner struct { g1Aff bls12381.G1Affine } -func NewIdentity() *BlsSigner { - b := &BlsSigner{ +func NewIdentity() *Signer { + b := &Signer{ SecretKey: new(big.Int), } @@ -49,15 +49,15 @@ func NewIdentity() *BlsSigner { return b } -func (b *BlsSigner) getPublicKey(sk *big.Int) *bls12381.G2Affine { +func (b *Signer) getPublicKey(sk *big.Int) *bls12381.G2Affine { return new(bls12381.G2Affine).ScalarMultiplication(&b.g2Aff, sk) } -func (b *BlsSigner) getShortPublicKey(sk *big.Int) *bls12381.G1Affine { +func (b *Signer) getShortPublicKey(sk *big.Int) *bls12381.G1Affine { return new(bls12381.G1Affine).ScalarMultiplication(&b.g1Aff, sk) } -func (b *BlsSigner) generateKeyPair() { +func (b *Signer) generateKeyPair() { // generate a random point in G2 g2Order := bls12381_fr.Modulus() sk, err := rand.Int(rand.Reader, g2Order) @@ -72,7 +72,7 @@ func (b *BlsSigner) generateKeyPair() { b.PublicKey = pk } -func (b *BlsSigner) Verify( +func (b *Signer) Verify( signature bls12381.G1Affine, hashedMessage bls12381.G1Affine, publicKey bls12381.G2Affine) (bool, error) { diff --git a/internal/crypto/ethereum/rpc.go b/internal/crypto/ethereum/rpc.go index 8b36ca18..65eefba9 100644 --- a/internal/crypto/ethereum/rpc.go +++ b/internal/crypto/ethereum/rpc.go @@ -5,7 +5,7 @@ import ( "fmt" "sync" - contracts2 "github.com/KenshiTech/unchained/internal/crypto/ethereum/contracts" + "github.com/KenshiTech/unchained/internal/crypto/ethereum/contracts" "github.com/KenshiTech/unchained/internal/config" @@ -54,20 +54,20 @@ func (r *Repository) RefreshRPC(network string) { func (r *Repository) GetNewStakingContract( network string, address string, - refresh bool) (*contracts2.UnchainedStaking, error) { + refresh bool) (*contracts.UnchainedStaking, error) { if refresh { r.RefreshRPC(network) } - return contracts2.NewUnchainedStaking(common.HexToAddress(address), r.Clients[network]) + return contracts.NewUnchainedStaking(common.HexToAddress(address), r.Clients[network]) } -func (r *Repository) GetNewUniV3Contract(network string, address string, refresh bool) (*contracts2.UniV3, error) { +func (r *Repository) GetNewUniV3Contract(network string, address string, refresh bool) (*contracts.UniV3, error) { if refresh { r.RefreshRPC(network) } - return contracts2.NewUniV3(common.HexToAddress(address), r.Clients[network]) + return contracts.NewUniV3(common.HexToAddress(address), r.Clients[network]) } func (r *Repository) GetBlockNumber(network string) (uint64, error) { diff --git a/internal/crypto/identity.go b/internal/crypto/identity.go index 76bb1261..174bb736 100644 --- a/internal/crypto/identity.go +++ b/internal/crypto/identity.go @@ -16,7 +16,7 @@ import ( // MachineIdentity holds machine identity and provide and manage keys. type MachineIdentity struct { - Bls *bls.BlsSigner + Bls *bls.Signer Eth *ethereum.EvmSigner } diff --git a/internal/db/db.go b/internal/db/db.go index 7fed2216..cb92273d 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -11,6 +11,8 @@ import ( "entgo.io/ent/dialect" entsql "entgo.io/ent/dialect/sql" + + // these imports are required for ent to work with postgres. _ "github.com/jackc/pgx/v5/stdlib" _ "github.com/lib/pq" ) diff --git a/internal/pos/eip712/sign.go b/internal/pos/eip712/sign.go index cf7195bc..5ce2859b 100644 --- a/internal/pos/eip712/sign.go +++ b/internal/pos/eip712/sign.go @@ -12,11 +12,11 @@ import ( "github.com/ethereum/go-ethereum/signer/core/apitypes" ) -type EIP712Signer struct { +type Signer struct { domain apitypes.TypedDataDomain } -func (s *EIP712Signer) bytesToUnchainedSignature(signature []byte) *contracts.UnchainedStakingSignature { +func (s *Signer) bytesToUnchainedSignature(signature []byte) *contracts.UnchainedStakingSignature { return &contracts.UnchainedStakingSignature{ V: signature[64], R: [32]byte(signature[:32]), @@ -24,7 +24,7 @@ func (s *EIP712Signer) bytesToUnchainedSignature(signature []byte) *contracts.Un } } -func (s *EIP712Signer) signEip712Message(evmSigner *ethereum.EvmSigner, data *apitypes.TypedData) (*contracts.UnchainedStakingSignature, error) { +func (s *Signer) signEip712Message(evmSigner *ethereum.EvmSigner, data *apitypes.TypedData) (*contracts.UnchainedStakingSignature, error) { domainSeparator, err := data.HashStruct("EIP712Domain", data.Domain.Map()) if err != nil { return nil, err @@ -50,7 +50,7 @@ func (s *EIP712Signer) signEip712Message(evmSigner *ethereum.EvmSigner, data *ap return s.bytesToUnchainedSignature(signature), nil } -func (s *EIP712Signer) SignTransferRequest(evmSigner *ethereum.EvmSigner, request *contracts.UnchainedStakingEIP712Transfer) (*contracts.UnchainedStakingSignature, error) { +func (s *Signer) SignTransferRequest(evmSigner *ethereum.EvmSigner, request *contracts.UnchainedStakingEIP712Transfer) (*contracts.UnchainedStakingSignature, error) { data := &apitypes.TypedData{ Types: Types, PrimaryType: "Transfer", @@ -68,7 +68,7 @@ func (s *EIP712Signer) SignTransferRequest(evmSigner *ethereum.EvmSigner, reques return s.signEip712Message(evmSigner, data) } -func (s *EIP712Signer) SignSetParamsRequest(evmSigner *ethereum.EvmSigner, request *contracts.UnchainedStakingEIP712SetParams) (*contracts.UnchainedStakingSignature, error) { +func (s *Signer) SignSetParamsRequest(evmSigner *ethereum.EvmSigner, request *contracts.UnchainedStakingEIP712SetParams) (*contracts.UnchainedStakingSignature, error) { data := &apitypes.TypedData{ Types: Types, PrimaryType: "SetParams", @@ -87,7 +87,7 @@ func (s *EIP712Signer) SignSetParamsRequest(evmSigner *ethereum.EvmSigner, reque return s.signEip712Message(evmSigner, data) } -func (s *EIP712Signer) SignSetNftPriceRequest(evmSigner *ethereum.EvmSigner, request *contracts.UnchainedStakingEIP712SetNftPrice) (*contracts.UnchainedStakingSignature, error) { +func (s *Signer) SignSetNftPriceRequest(evmSigner *ethereum.EvmSigner, request *contracts.UnchainedStakingEIP712SetNftPrice) (*contracts.UnchainedStakingSignature, error) { data := &apitypes.TypedData{ Types: Types, PrimaryType: "SetNftPrice", @@ -103,8 +103,8 @@ func (s *EIP712Signer) SignSetNftPriceRequest(evmSigner *ethereum.EvmSigner, req return s.signEip712Message(evmSigner, data) } -func New(chainID *big.Int, verifyingContract string) *EIP712Signer { - return &EIP712Signer{ +func New(chainID *big.Int, verifyingContract string) *Signer { + return &Signer{ domain: apitypes.TypedDataDomain{ Name: "Unchained", Version: "1.0.0", diff --git a/internal/pos/pos.go b/internal/pos/pos.go index e332f991..eddfa593 100644 --- a/internal/pos/pos.go +++ b/internal/pos/pos.go @@ -22,7 +22,7 @@ type Repository struct { votingPowers *xsync.MapOf[[20]byte, *big.Int] lastUpdated *xsync.MapOf[[20]byte, *big.Int] base *big.Int - eip712Signer *eip712.EIP712Signer + eip712Signer *eip712.Signer } func (s *Repository) GetTotalVotingPower() (*big.Int, error) { diff --git a/internal/service/uniswap/uniswap.go b/internal/service/uniswap/uniswap.go index 50637110..d323d83f 100644 --- a/internal/service/uniswap/uniswap.go +++ b/internal/service/uniswap/uniswap.go @@ -39,7 +39,7 @@ import ( ) const ( - OldBlockNumber = 96 + MaxBlockNumberDelta = 96 ) var DebouncedSaveSignatures func(key datasets.AssetKey, arg SaveSignatureArgs) @@ -123,7 +123,7 @@ func (u *Service) RecordSignature( if !historical { // TODO: this won't work for Arbitrum - if *blockNumber-info.Asset.Block > OldBlockNumber { + if *blockNumber-info.Asset.Block > MaxBlockNumberDelta { log.Logger. With("Packet", info.Asset.Block). With("Current", *blockNumber). @@ -179,10 +179,6 @@ func (u *Service) RecordSignature( return } - if !isMajority { - log.Logger.Debug("Not a majority") - } - reportLog := log.Logger. With("Block", info.Asset.Block). With("Price", info.Price.String()). @@ -207,11 +203,6 @@ func (u *Service) RecordSignature( With("Majority", fmt.Sprintf("%x", hash.Bytes())[:8]). Debug("Values") - DebouncedSaveSignatures( - info.Asset, - SaveSignatureArgs{Hash: hash, Info: info}, - ) - if debounce { DebouncedSaveSignatures( info.Asset, diff --git a/internal/transport/client/handler/correctness.go b/internal/transport/client/handler/correctness.go index b44f0b53..5b319328 100644 --- a/internal/transport/client/handler/correctness.go +++ b/internal/transport/client/handler/correctness.go @@ -39,4 +39,4 @@ func (h *consumer) CorrectnessReport(message []byte) { ) } -func (w worker) CorrectnessReport(message []byte) {} +func (w worker) CorrectnessReport(_ []byte) {} diff --git a/internal/transport/client/handler/event.go b/internal/transport/client/handler/event.go index 656b6184..e87d4b1c 100644 --- a/internal/transport/client/handler/event.go +++ b/internal/transport/client/handler/event.go @@ -40,4 +40,4 @@ func (h *consumer) EventLog(message []byte) { ) } -func (w worker) EventLog(message []byte) {} +func (w worker) EventLog(_ []byte) {} diff --git a/internal/transport/client/handler/price.go b/internal/transport/client/handler/price.go index 9dd34bb8..e007a6e7 100644 --- a/internal/transport/client/handler/price.go +++ b/internal/transport/client/handler/price.go @@ -40,4 +40,4 @@ func (h *consumer) PriceReport(message []byte) { ) } -func (w worker) PriceReport(message []byte) {} +func (w worker) PriceReport(_ []byte) {} From 9992f510dac860916367f180a6d9497a7b2468ad Mon Sep 17 00:00:00 2001 From: Pouya Date: Sun, 14 Apr 2024 20:34:51 +0200 Subject: [PATCH 7/7] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20=20refactor:=20fix=20d?= =?UTF-8?q?ebounce=20and=20pre-hook=20issues?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/handler/broker.go | 2 +- cmd/handler/consumer.go | 4 +- cmd/handler/worker.go | 4 +- cmd/main.go | 2 +- internal/pos/eip712.go | 6 +- internal/service/correctness/correctness.go | 4 +- internal/service/evmlog/evmlog.go | 4 +- internal/service/uniswap/uniswap.go | 18 +-- zk/.gitignore | 3 - zk/Makefile | 6 - zk/go.mod | 33 ---- zk/go.sum | 78 ---------- zk/lib/bls.go | 63 -------- zk/lib/cli.go | 160 -------------------- zk/lib/zk.go | 35 ----- zk/main.go | 35 ----- 16 files changed, 20 insertions(+), 437 deletions(-) delete mode 100644 zk/.gitignore delete mode 100644 zk/Makefile delete mode 100644 zk/go.mod delete mode 100644 zk/go.sum delete mode 100644 zk/lib/bls.go delete mode 100644 zk/lib/cli.go delete mode 100644 zk/lib/zk.go delete mode 100644 zk/main.go diff --git a/cmd/handler/broker.go b/cmd/handler/broker.go index 722b762a..a5cbb256 100644 --- a/cmd/handler/broker.go +++ b/cmd/handler/broker.go @@ -12,7 +12,7 @@ var broker = &cobra.Command{ Use: "broker", Short: "Run the Unchained client in broker mode", Long: `Run the Unchained client in broker mode`, - Run: func(cmd *cobra.Command, args []string) { + Run: func(_ *cobra.Command, _ []string) { err := config.Load(config.App.System.ConfigPath, config.App.System.SecretsPath) if err != nil { panic(err) diff --git a/cmd/handler/consumer.go b/cmd/handler/consumer.go index 6c6497bc..84f382f8 100644 --- a/cmd/handler/consumer.go +++ b/cmd/handler/consumer.go @@ -13,12 +13,12 @@ var consumer = &cobra.Command{ Short: "Run the Unchained client in consumer mode", Long: `Run the Unchained client in consumer mode`, - PreRun: func(cmd *cobra.Command, args []string) { + PreRun: func(cmd *cobra.Command, _ []string) { config.App.Network.BrokerURI = cmd.Flags().Lookup("broker").Value.String() config.App.Network.Bind = cmd.Flags().Lookup("graphql").Value.String() }, - Run: func(cmd *cobra.Command, args []string) { + Run: func(_ *cobra.Command, _ []string) { err := config.Load(config.App.System.ConfigPath, config.App.System.SecretsPath) if err != nil { panic(err) diff --git a/cmd/handler/worker.go b/cmd/handler/worker.go index 5171c3c9..71f4e844 100644 --- a/cmd/handler/worker.go +++ b/cmd/handler/worker.go @@ -13,11 +13,11 @@ var worker = &cobra.Command{ Short: "Run the Unchained client in worker mode", Long: `Run the Unchained client in worker mode`, - PreRun: func(cmd *cobra.Command, args []string) { + PreRun: func(cmd *cobra.Command, _ []string) { config.App.Network.BrokerURI = cmd.Flags().Lookup("broker").Value.String() }, - Run: func(cmd *cobra.Command, args []string) { + Run: func(_ *cobra.Command, _ []string) { err := config.Load(config.App.System.ConfigPath, config.App.System.SecretsPath) if err != nil { panic(err) diff --git a/cmd/main.go b/cmd/main.go index 4e9784f5..7d389d86 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -15,7 +15,7 @@ var root = &cobra.Command{ Use: "unchained", Short: "Unchained is the universal data validation and processing protocol", Long: `Unchained is the universal data validation and processing protocol`, - Run: func(cmd *cobra.Command, args []string) { + Run: func(_ *cobra.Command, _ []string) { if config.App.System.PrintVersion { fmt.Println(constants.Version) } else { diff --git a/internal/pos/eip712.go b/internal/pos/eip712.go index f5cd6652..1f46d731 100644 --- a/internal/pos/eip712.go +++ b/internal/pos/eip712.go @@ -15,7 +15,7 @@ import ( "github.com/ethereum/go-ethereum/core/types" ) -func (s *Repository) Slash(address [20]byte, to common.Address, amount *big.Int, nftIds []*big.Int) error { +func (s *Repository) Slash(address [20]byte, to common.Address, amount *big.Int, nftIDs []*big.Int) error { evmAddress, err := s.posContract.EvmAddressOf(nil, address) if err != nil { @@ -29,7 +29,7 @@ func (s *Repository) Slash(address [20]byte, to common.Address, amount *big.Int, From: evmAddress, To: to, Amount: amount, - NftIds: nftIds, + NftIds: nftIDs, } signature, err := s.eip712Signer.SignTransferRequest(crypto.Identity.Eth, &transfer) @@ -78,7 +78,7 @@ func (s *Repository) Slash(address [20]byte, to common.Address, amount *big.Int, With("Address", evmAddress.Hex()). With("To", to.Hex()). With("Amount", amount.String()). - With("NftIds", nftIds). + With("NftIds", nftIDs). Info("Slashed") return nil diff --git a/internal/service/correctness/correctness.go b/internal/service/correctness/correctness.go index 02bdb8c6..f1140901 100644 --- a/internal/service/correctness/correctness.go +++ b/internal/service/correctness/correctness.go @@ -166,7 +166,7 @@ func (s *Service) SaveSignatures(args SaveSignatureArgs) { panic(err) } - signerIds, err := dbClient.Signer. + signerIDs, err := dbClient.Signer. Query(). Where(signer.KeyIn(keys...)). IDs(ctx) @@ -203,7 +203,7 @@ func (s *Service) SaveSignatures(args SaveSignatureArgs) { SetHash(args.Info.Hash[:]). SetTimestamp(args.Info.Timestamp). SetTopic(args.Info.Topic[:]). - AddSignerIDs(signerIds...). + AddSignerIDs(signerIDs...). OnConflictColumns("topic", "hash"). UpdateNewValues(). Exec(ctx) diff --git a/internal/service/evmlog/evmlog.go b/internal/service/evmlog/evmlog.go index 775b6c2d..667db762 100644 --- a/internal/service/evmlog/evmlog.go +++ b/internal/service/evmlog/evmlog.go @@ -202,7 +202,7 @@ func (e *Service) SaveSignatures(args SaveSignatureArgs) { panic(err) } - signerIds, err := dbClient.Signer. + signerIDs, err := dbClient.Signer. Query(). Where(signer.KeyIn(keys...)). IDs(ctx) @@ -237,7 +237,7 @@ func (e *Service) SaveSignatures(args SaveSignatureArgs) { SetSignersCount(uint64(len(signatures))). SetSignature(signatureBytes[:]). SetArgs(args.Info.Args). - AddSignerIDs(signerIds...). + AddSignerIDs(signerIDs...). OnConflictColumns("block", "transaction", "index"). UpdateNewValues(). Exec(ctx) diff --git a/internal/service/uniswap/uniswap.go b/internal/service/uniswap/uniswap.go index d323d83f..488817db 100644 --- a/internal/service/uniswap/uniswap.go +++ b/internal/service/uniswap/uniswap.go @@ -203,14 +203,10 @@ func (u *Service) RecordSignature( With("Majority", fmt.Sprintf("%x", hash.Bytes())[:8]). Debug("Values") - if debounce { - DebouncedSaveSignatures( - info.Asset, - SaveSignatureArgs{Hash: hash, Info: info}, - ) - } else { - u.saveSignatures(SaveSignatureArgs{Hash: hash, Info: info}) - } + DebouncedSaveSignatures( + info.Asset, + SaveSignatureArgs{Hash: hash, Info: info}, + ) } type SaveSignatureArgs struct { @@ -274,7 +270,7 @@ func (u *Service) saveSignatures(args SaveSignatureArgs) { panic(err) } - signerIds, err := dbClient.Signer. + signerIDs, err := dbClient.Signer. Query(). Where(signer.KeyIn(keys...)). IDs(ctx) @@ -306,7 +302,7 @@ func (u *Service) saveSignatures(args SaveSignatureArgs) { signatureBytes := aggregate.Bytes() - // TODO: Handle cases where signerIds need to be removed + // TODO: Handle cases where signerIDs need to be removed err = dbClient.AssetPrice. Create(). SetPair(strings.ToLower(args.Info.Asset.Token.Pair)). @@ -316,7 +312,7 @@ func (u *Service) saveSignatures(args SaveSignatureArgs) { SetPrice(&helpers.BigInt{Int: args.Info.Price}). SetSignersCount(uint64(len(signatures))). SetSignature(signatureBytes[:]). - AddSignerIDs(signerIds...). + AddSignerIDs(signerIDs...). OnConflictColumns("block", "chain", "asset", "pair"). UpdateNewValues(). Exec(ctx) diff --git a/zk/.gitignore b/zk/.gitignore deleted file mode 100644 index 4521c278..00000000 --- a/zk/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*.bin -*.sol -bin diff --git a/zk/Makefile b/zk/Makefile deleted file mode 100644 index 90e7dccb..00000000 --- a/zk/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -zk: - GOOS=windows GOARCH=amd64 go build -o bin/zk.windows.amd64.exe main.go - GOOS=darwin GOARCH=amd64 go build -o bin/zk.darwin.amd64 main.go - GOOS=darwin GOARCH=arm64 go build -o bin/zk.darwin.arm64 main.go - GOOS=linux GOARCH=amd64 go build -o bin/zk.linux.amd64 main.go - GOOS=linux GOARCH=arm64 go build -o bin/zk.linux.arm64 main.go diff --git a/zk/go.mod b/zk/go.mod deleted file mode 100644 index 4e2f9c34..00000000 --- a/zk/go.mod +++ /dev/null @@ -1,33 +0,0 @@ -module unchained-zk - -go 1.21.5 - -require ( - github.com/consensys/gnark v0.9.1 - github.com/consensys/gnark-crypto v0.12.2-0.20231013160410-1f65e75b6dfb - github.com/urfave/cli/v2 v2.26.0 -) - -require ( - github.com/bits-and-blooms/bitset v1.8.0 // indirect - github.com/blang/semver/v4 v4.0.0 // indirect - github.com/consensys/bavard v0.1.13 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/fxamacker/cbor/v2 v2.5.0 // indirect - github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b // indirect - github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.19 // indirect - github.com/mmcloughlin/addchain v0.4.0 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/rs/zerolog v1.30.0 // indirect - github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/stretchr/testify v1.8.4 // indirect - github.com/x448/float16 v0.8.4 // indirect - github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect - golang.org/x/crypto v0.12.0 // indirect - golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect - golang.org/x/sys v0.11.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect - rsc.io/tmplfunc v0.0.3 // indirect -) diff --git a/zk/go.sum b/zk/go.sum deleted file mode 100644 index 3b7ae188..00000000 --- a/zk/go.sum +++ /dev/null @@ -1,78 +0,0 @@ -github.com/bits-and-blooms/bitset v1.8.0 h1:FD+XqgOZDUxxZ8hzoBFuV9+cGWY9CslN6d5MS5JVb4c= -github.com/bits-and-blooms/bitset v1.8.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= -github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= -github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= -github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= -github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= -github.com/consensys/gnark v0.9.1 h1:aTwBp5469MY/2jNrf4ABrqHRW3+JytfkADdw4ZBY7T0= -github.com/consensys/gnark v0.9.1/go.mod h1:udWvWGXnfBE7mn7BsNoGAvZDnUhcONBEtNijvVjfY80= -github.com/consensys/gnark-crypto v0.12.2-0.20231013160410-1f65e75b6dfb h1:f0BMgIjhZy4lSRHCXFbQst85f5agZAjtDMixQqBWNpc= -github.com/consensys/gnark-crypto v0.12.2-0.20231013160410-1f65e75b6dfb/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/fxamacker/cbor/v2 v2.5.0 h1:oHsG0V/Q6E/wqTS2O1Cozzsy69nqCiguo5Q1a1ADivE= -github.com/fxamacker/cbor/v2 v2.5.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b h1:h9U78+dx9a4BKdQkBBos92HalKpaGKHrp+3Uo6yTodo= -github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= -github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -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/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= -github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= -github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= -github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= -github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= -github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.30.0 h1:SymVODrcRsaRaSInD9yQtKbtWqwsfoPcRff/oRXLj4c= -github.com/rs/zerolog v1.30.0/go.mod h1:/tk+P47gFdPXq4QYjvCmT5/Gsug2nagsFWBWhAiSi1w= -github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/urfave/cli/v2 v2.26.0 h1:3f3AMg3HpThFNT4I++TKOejZO8yU55t3JnnSr4S4QEI= -github.com/urfave/cli/v2 v2.26.0/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= -github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= -github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= -golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= -golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= -golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 h1:m64FZMko/V45gv0bNmrNYoDEq8U5YUhetc9cBWKS1TQ= -golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63/go.mod h1:0v4NqG35kSWCMzLaMeX+IQrlSnVE/bqGSyC2cz/9Le8= -golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= -golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -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/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= -rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= diff --git a/zk/lib/bls.go b/zk/lib/bls.go deleted file mode 100644 index fdae33cb..00000000 --- a/zk/lib/bls.go +++ /dev/null @@ -1,63 +0,0 @@ -package lib - -import ( - "crypto/rand" - "math/big" - - bls12_381_ecc "github.com/consensys/gnark-crypto/ecc/bls12-381" - bls12_381_fr "github.com/consensys/gnark-crypto/ecc/bls12-381/fr" -) - -var ( - g2Gen bls12_381_ecc.G2Affine -) - -func init() { - _, _, _, g2Gen = bls12_381_ecc.Generators() -} - -// generate BLS private and public key pair -func GenerateKeyPair() (*big.Int, *bls12_381_ecc.G2Affine, error) { - // generate a random point in G2 - g2Order := bls12_381_fr.Modulus() - sk, err := rand.Int(rand.Reader, g2Order) - if err != nil { - return nil, nil, err - } - - pk := new(bls12_381_ecc.G2Affine).ScalarMultiplication(&g2Gen, sk) - - return sk, pk, nil -} - -func Verify( - signature bls12_381_ecc.G1Affine, - g2Gen bls12_381_ecc.G2Affine, - hashedMessage bls12_381_ecc.G1Affine, - publicKey bls12_381_ecc.G2Affine) (bool, error) { - - pairingSigG2, _ := bls12_381_ecc.Pair( - []bls12_381_ecc.G1Affine{signature}, - []bls12_381_ecc.G2Affine{g2Gen}) - - pairingHmPk, pairingError := bls12_381_ecc.Pair( - []bls12_381_ecc.G1Affine{hashedMessage}, - []bls12_381_ecc.G2Affine{publicKey}) - - ok := pairingSigG2.Equal(&pairingHmPk) - - return ok, pairingError -} - -func FastVerify( - signature bls12_381_ecc.G1Affine, - g2Gen bls12_381_ecc.G2Affine, - invertedHashedMessage bls12_381_ecc.G1Affine, - publicKey bls12_381_ecc.G2Affine) (bool, error) { - - ok, pairingError := bls12_381_ecc.PairingCheck( - []bls12_381_ecc.G1Affine{signature, invertedHashedMessage}, - []bls12_381_ecc.G2Affine{g2Gen, publicKey}) - - return ok, pairingError -} diff --git a/zk/lib/cli.go b/zk/lib/cli.go deleted file mode 100644 index 93a94e88..00000000 --- a/zk/lib/cli.go +++ /dev/null @@ -1,160 +0,0 @@ -package lib - -import ( - "fmt" - "os" - - "github.com/consensys/gnark-crypto/ecc" - bls12_381_ecc "github.com/consensys/gnark-crypto/ecc/bls12-381" - "github.com/consensys/gnark/backend/groth16" - "github.com/consensys/gnark/frontend" - "github.com/consensys/gnark/frontend/cs/r1cs" - "github.com/consensys/gnark/std/algebra/emulated/sw_bls12381" - - "github.com/urfave/cli/v2" -) - -func CompileCommand(cCtx *cli.Context) error { - // compiles our circuit into a R1CS - var circuit Circuit - ccs, _ := frontend.Compile(ecc.BN254.ScalarField(), r1cs.NewBuilder, &circuit) - - // groth16 zkSNARK: Setup - pk, vk, _ := groth16.Setup(ccs) - - // Generate Solidity file - f, _ := os.Create("contract_g16.sol") - exportErr := vk.ExportSolidity(f) - - if exportErr != nil { - fmt.Println(exportErr) - return exportErr - } - - f, _ = os.Create("ccs.bin") - _, exportErr = ccs.WriteTo(f) - - if exportErr != nil { - fmt.Println(exportErr) - return exportErr - } - - f, _ = os.Create("pk.bin") - _, exportErr = pk.WriteTo(f) - - if exportErr != nil { - fmt.Println(exportErr) - return exportErr - } - - f, _ = os.Create("vk.bin") - _, exportErr = vk.WriteTo(f) - - if exportErr != nil { - fmt.Println(exportErr) - return exportErr - } - - return nil -} - -func TestCommand(cCtx *cli.Context) error { - secretKey, publicKey, _ := GenerateKeyPair() - message := []byte("Test message") - dst := []byte("UNCHAINED") - - hashedMessage, _ := bls12_381_ecc.HashToG1(message, dst) - signature := new(bls12_381_ecc.G1Affine).ScalarMultiplication(&hashedMessage, secretKey) - - ok, pairingError := Verify(*signature, g2Gen, hashedMessage, *publicKey) - - if ok { - fmt.Println("✅ First test passes") - } else { - fmt.Println("❌ First test fails") - return pairingError - } - - // Alternate verify why no work? - - var invertedHm bls12_381_ecc.G1Affine - invertedHm.Neg(&hashedMessage) // Inverting hm for the pairing - - ok, pairingError = FastVerify(*signature, g2Gen, invertedHm, *publicKey) - - // This one doesn't pass! - if ok { - fmt.Println("✅ Second test passes") - } else { - fmt.Println("❌ Second test fails") - return pairingError - } - - // compiles our circuit into a R1CS - ccs := groth16.NewCS(ecc.BN254) - f, openErr := os.Open("ccs.bin") - - if openErr != nil { - fmt.Println("❌ Cannot open the circuit") - return openErr - } - - _, readErr := ccs.ReadFrom(f) - - if readErr != nil { - fmt.Println("❌ Cannot read the circuit") - return readErr - } - - // groth16 zkSNARK: Setup - pk := groth16.NewProvingKey(ecc.BN254) - vk := groth16.NewVerifyingKey(ecc.BN254) - - f, openErr = os.Open("pk.bin") - - if openErr != nil { - fmt.Println("❌ Cannot open the proving key") - return openErr - } - - _, readErr = pk.ReadFrom(f) - - if readErr != nil { - fmt.Println("❌ Cannot read the proving key") - return readErr - } - - f, openErr = os.Open("vk.bin") - - if openErr != nil { - fmt.Println("❌ Cannot open the verifying key") - return openErr - } - - _, readErr = vk.ReadFrom(f) - - if readErr != nil { - fmt.Println("Cannot read the verifying key") - return readErr - } - - // witness definition - assignment := Circuit{ - Sig: sw_bls12381.NewG1Affine(*signature), - G2: sw_bls12381.NewG2Affine(g2Gen), - Hm: sw_bls12381.NewG1Affine(invertedHm), - Pk: sw_bls12381.NewG2Affine(*publicKey)} - - witness, _ := frontend.NewWitness(&assignment, ecc.BN254.ScalarField()) - publicWitness, _ := witness.Public() - - // groth16: Prove & Verify - proof, _ := groth16.Prove(ccs, pk, witness) - err := groth16.Verify(proof, vk, publicWitness) - - if err != nil { - return err - } - - return nil -} diff --git a/zk/lib/zk.go b/zk/lib/zk.go deleted file mode 100644 index 4ded96bf..00000000 --- a/zk/lib/zk.go +++ /dev/null @@ -1,35 +0,0 @@ -package lib - -import ( - "github.com/consensys/gnark/frontend" - "github.com/consensys/gnark/std/algebra/emulated/sw_bls12381" -) - -// Boneh-Lynn-Shacham (BLS) signature verification -// e(sig, g2) * e(hm, pk) == 1 -// where: -// - Sig (in G1) the signature -// - G2 (in G2) the public generator of G2 -// - Hm (in G1) the hashed-to-curve message -// - Pk (in G2) the public key of the signer -type Circuit struct { - Sig sw_bls12381.G1Affine - G2 sw_bls12381.G2Affine - Hm sw_bls12381.G1Affine - Pk sw_bls12381.G2Affine -} - -func (circuit *Circuit) Define(api frontend.API) error { - - pairing, _ := sw_bls12381.NewPairing(api) - - err := sw_bls12381.Pairing.PairingCheck(*pairing, - []*sw_bls12381.G1Affine{&circuit.Sig, &circuit.Hm}, - []*sw_bls12381.G2Affine{&circuit.G2, &circuit.Pk}) - - if err != nil { - return err - } - - return nil -} diff --git a/zk/main.go b/zk/main.go deleted file mode 100644 index 9ed8a775..00000000 --- a/zk/main.go +++ /dev/null @@ -1,35 +0,0 @@ -package main - -import ( - "log" - "os" - "unchained-zk/lib" - - "github.com/urfave/cli/v2" -) - -func main() { - - app := cli.App{ - Name: "unchained-zk", - Usage: "Unchained zk-SNARKs toolkit", - Commands: []*cli.Command{ - { - Name: "compile", - Aliases: []string{"c"}, - Usage: "Compile the zk-SNARKs circuit", - Action: lib.CompileCommand, - }, - { - Name: "test", - Aliases: []string{"t"}, - Usage: "Run a test on the zk-SNARKs circuit", - Action: lib.TestCommand, - }, - }, - } - - if err := app.Run(os.Args); err != nil { - log.Fatal(err) - } -}