From 8ae619d3343c11cb2366ef0f7d21e74260f300de Mon Sep 17 00:00:00 2001 From: JianGuo Date: Fri, 14 Jun 2024 15:43:41 +0800 Subject: [PATCH 1/4] update --- cmd/utils/flags.go | 26 ++++++++ eth/backend.go | 6 ++ eth/ethconfig/config_zkevm.go | 6 ++ go.mod | 6 ++ go.sum | 25 ++++++++ turbo/cli/default_flags.go | 4 ++ turbo/cli/flags_zkevm.go | 4 ++ xlayerconfig-mainnet.yaml.example | 5 ++ xlayerconfig-testnet.yaml.example | 5 ++ zk/nacos/start.go | 101 ++++++++++++++++++++++++++++++ zk/nacos/utils.go | 56 +++++++++++++++++ 11 files changed, 244 insertions(+) create mode 100644 zk/nacos/start.go create mode 100644 zk/nacos/utils.go diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 9d993e9fdd7..707ef09ab8a 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -600,6 +600,32 @@ var ( Name: "debug.step-after", Usage: "Start incrementing by debug.step after this block", } + + // For Xlayer + NacosURLsFlag = cli.StringFlag{ + Name: "zkevm.nacos-urls", + Usage: "Nacos urls.", + Value: "", + } + + NacosNamespaceIdFlag = cli.StringFlag{ + Name: "zkevm.nacos-namespace-id", + Usage: "Nacos namespace Id.", + Value: "", + } + + NacosApplicationNameFlag = cli.StringFlag{ + Name: "zkevm.nacos-application-name", + Usage: "Nacos application name", + Value: "", + } + + NacosExternalListenAddrFlag = cli.StringFlag{ + Name: "zkevm.nacos-external-listen-addr", + Usage: "Nacos external listen addr.", + Value: "", + } + RpcBatchConcurrencyFlag = cli.UintFlag{ Name: "rpc.batch.concurrency", Usage: "Does limit amount of goroutines to process 1 batch request. Means 1 bach request can't overload server. 1 batch still can have unlimited amount of request", diff --git a/eth/backend.go b/eth/backend.go index 417b69ef1ce..5201df7dfcc 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -33,6 +33,7 @@ import ( erigonchain "github.com/gateway-fm/cdk-erigon-lib/chain" "github.com/holiman/uint256" + "github.com/ledgerwatch/erigon/zk/nacos" "github.com/ledgerwatch/erigon/zk/sequencer" "github.com/ledgerwatch/log/v3" "golang.org/x/exp/slices" @@ -748,6 +749,11 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { // entering ZK territory! cfg := backend.config + // For Xlayer + if len(cfg.NacosURLs) > 0 { + nacos.StartNacosClient(cfg.NacosURLs, cfg.NacosNamespaceId, cfg.NacosApplicationName, cfg.NacosExternalListenAddr) + } + // update the chain config with the zero gas from the flags backend.chainConfig.SupportGasless = cfg.Gasless diff --git a/eth/ethconfig/config_zkevm.go b/eth/ethconfig/config_zkevm.go index fafd986a7b4..1185a84b788 100644 --- a/eth/ethconfig/config_zkevm.go +++ b/eth/ethconfig/config_zkevm.go @@ -55,6 +55,12 @@ type Zk struct { DebugStep uint64 DebugStepAfter uint64 + // For Xlayer + NacosURLs string + NacosNamespaceId string + NacosApplicationName string + NacosExternalListenAddr string + PoolManagerUrl string DisableVirtualCounters bool ExecutorPayloadOutput string diff --git a/go.mod b/go.mod index 6fcd361c1b2..1ec02fc467d 100644 --- a/go.mod +++ b/go.mod @@ -7,6 +7,7 @@ require ( github.com/ledgerwatch/log/v3 v3.7.0 github.com/ledgerwatch/secp256k1 v1.0.0 github.com/ledgerwatch/trackerslist v1.1.0 // indirect + github.com/nacos-group/nacos-sdk-go v1.1.4 github.com/torquem-ch/mdbx-go v0.27.10 ) @@ -114,6 +115,7 @@ require ( github.com/agnivade/levenshtein v1.1.1 // indirect github.com/ajwerner/btree v0.0.0-20211221152037-f427b3e689c0 // indirect github.com/alecthomas/atomic v0.1.0-alpha2 // indirect + github.com/aliyun/alibaba-cloud-sdk-go v1.61.18 // indirect github.com/anacrolix/chansync v0.3.0 // indirect github.com/anacrolix/dht/v2 v2.19.2-0.20221121215055-066ad8494444 // indirect github.com/anacrolix/envpprof v1.2.1 // indirect @@ -134,6 +136,7 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/bits-and-blooms/bitset v1.7.0 // indirect github.com/bradfitz/iter v0.0.0-20191230175014-e8f45d346db8 // indirect + github.com/buger/jsonparser v1.1.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/consensys/bavard v0.1.13 // indirect github.com/containerd/cgroups v1.1.0 // indirect @@ -150,6 +153,7 @@ require ( github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/garslo/gogen v0.0.0-20170307003452-d6ebae628c7c // indirect github.com/gin-gonic/gin v1.7.7 // indirect + github.com/go-errors/errors v1.4.2 // indirect github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect @@ -175,6 +179,7 @@ require ( github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect github.com/jackc/pgtype v1.14.0 // indirect github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/klauspost/compress v1.15.15 // indirect github.com/klauspost/cpuid/v2 v2.2.4 // indirect @@ -273,6 +278,7 @@ require ( golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.20.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240325203815-454cdb8f5daa // indirect + gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/blake3 v1.1.7 // indirect diff --git a/go.sum b/go.sum index 98ac9464704..411a696b81c 100644 --- a/go.sum +++ b/go.sum @@ -35,6 +35,8 @@ github.com/VictoriaMetrics/metrics v1.23.1/go.mod h1:rAr/llLpEnAdTehiNlUxKgnjcOu github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8= github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo= +github.com/aliyun/alibaba-cloud-sdk-go v1.61.18 h1:zOVTBdCKFd9JbCKz9/nt+FovbjPFmb7mUnp8nH9fQBA= +github.com/aliyun/alibaba-cloud-sdk-go v1.61.18/go.mod h1:v8ESoHo4SyHmuB4b1tJqDHxfTGEciD+yhvOU/5s1Rfk= github.com/ajwerner/btree v0.0.0-20211221152037-f427b3e689c0 h1:byYvvbfSo3+9efR4IeReh77gVs4PnNDR3AMOE9NJ7a0= github.com/ajwerner/btree v0.0.0-20211221152037-f427b3e689c0/go.mod h1:q37NoqncT41qKc048STsifIt69LfUJ8SrWWcz/yam5k= github.com/alecthomas/assert/v2 v2.0.0-alpha3 h1:pcHeMvQ3OMstAWgaeaXIAL8uzB9xMm2zlxt+/4ml8lk= @@ -133,6 +135,8 @@ github.com/bradfitz/iter v0.0.0-20191230175014-e8f45d346db8/go.mod h1:spo1JLcs67 github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= +github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= +github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= github.com/c2h5oh/datasize v0.0.0-20220606134207-859f65c6625b h1:6+ZFm0flnudZzdSE0JxlhR2hKnGPcNB35BjQf4RYQDY= github.com/c2h5oh/datasize v0.0.0-20220606134207-859f65c6625b/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= @@ -256,6 +260,9 @@ github.com/glycerine/goconvey v0.0.0-20180728074245-46e3a41ad493/go.mod h1:Ogl1T github.com/glycerine/goconvey v0.0.0-20190315024820-982ee783a72e/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= @@ -305,6 +312,7 @@ github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7a github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -313,6 +321,7 @@ github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4er github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -469,7 +478,13 @@ github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7Bd github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jbenet/go-temp-err-catcher v0.1.0 h1:zpb3ZH6wIE8Shj2sKS+khgRvf7T7RABoLk/+KKHggpk= github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPwbGVtZVWC34vc5WLsDk= +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/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= +github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= @@ -614,6 +629,8 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/nacos-group/nacos-sdk-go v1.1.4 h1:qyrZ7HTWM4aeymFfqnbgNRERh7TWuER10pCB7ddRcTY= +github.com/nacos-group/nacos-sdk-go v1.1.4/go.mod h1:cBv9wy5iObs7khOqov1ERFQrCuTR4ILpgaiaVMxEmGI= github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= @@ -845,6 +862,7 @@ github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPx github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/assertions v0.0.0-20190215210624-980c5ac6f3ac/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= @@ -962,6 +980,7 @@ go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9E go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= @@ -1155,6 +1174,8 @@ golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= @@ -1232,7 +1253,11 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EV gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= +gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= diff --git a/turbo/cli/default_flags.go b/turbo/cli/default_flags.go index 738731926a9..a01fff565e4 100644 --- a/turbo/cli/default_flags.go +++ b/turbo/cli/default_flags.go @@ -212,6 +212,10 @@ var DefaultFlags = []cli.Flag{ &utils.DebugLimit, &utils.DebugStep, &utils.DebugStepAfter, + &utils.NacosURLsFlag, + &utils.NacosNamespaceIdFlag, + &utils.NacosApplicationNameFlag, + &utils.NacosExternalListenAddrFlag, &utils.PoolManagerUrl, &utils.DisableVirtualCounters, } diff --git a/turbo/cli/flags_zkevm.go b/turbo/cli/flags_zkevm.go index 4946f3e7af7..51fd181e2e8 100644 --- a/turbo/cli/flags_zkevm.go +++ b/turbo/cli/flags_zkevm.go @@ -116,6 +116,10 @@ func ApplyFlagsForZkConfig(ctx *cli.Context, cfg *ethconfig.Config) { DebugLimit: ctx.Uint64(utils.DebugLimit.Name), DebugStep: ctx.Uint64(utils.DebugStep.Name), DebugStepAfter: ctx.Uint64(utils.DebugStepAfter.Name), + NacosURLs: ctx.String(utils.NacosURLsFlag.Name), + NacosNamespaceId: ctx.String(utils.NacosNamespaceIdFlag.Name), + NacosApplicationName: ctx.String(utils.NacosApplicationNameFlag.Name), + NacosExternalListenAddr: ctx.String(utils.NacosExternalListenAddrFlag.Name), PoolManagerUrl: ctx.String(utils.PoolManagerUrl.Name), DisableVirtualCounters: ctx.Bool(utils.DisableVirtualCounters.Name), ExecutorPayloadOutput: ctx.String(utils.ExecutorPayloadOutput.Name), diff --git a/xlayerconfig-mainnet.yaml.example b/xlayerconfig-mainnet.yaml.example index de39857f8c6..7978cebcf20 100644 --- a/xlayerconfig-mainnet.yaml.example +++ b/xlayerconfig-mainnet.yaml.example @@ -21,6 +21,11 @@ zkevm.l1-query-delay: 6000 zkevm.rpc-ratelimit: 250 zkevm.datastream-version: 2 +zkevm.nacos-urls: "" +zkevm.nacos-namespace-id: "" +zkevm.nacos-application-name: "" +zkevm.nacos-external-listen-addr: "" + externalcl: true http.api: [eth, debug, net, trace, web3, erigon, zkevm] http.addr: 0.0.0.0 diff --git a/xlayerconfig-testnet.yaml.example b/xlayerconfig-testnet.yaml.example index 085961dd812..355cf1776a5 100644 --- a/xlayerconfig-testnet.yaml.example +++ b/xlayerconfig-testnet.yaml.example @@ -21,6 +21,11 @@ zkevm.l1-query-delay: 6000 zkevm.rpc-ratelimit: 250 zkevm.datastream-version: 2 +zkevm.nacos-urls: "" +zkevm.nacos-namespace-id: "" +zkevm.nacos-application-name: "" +zkevm.nacos-external-listen-addr: "" + externalcl: true http.api: [eth, debug, net, trace, web3, erigon, zkevm] http.addr: 0.0.0.0 diff --git a/zk/nacos/start.go b/zk/nacos/start.go new file mode 100644 index 00000000000..9254ae402ee --- /dev/null +++ b/zk/nacos/start.go @@ -0,0 +1,101 @@ +package nacos + +import ( + "fmt" + "net" + "strconv" + "strings" + "time" + + "github.com/ledgerwatch/erigon/zkevm/log" + "github.com/nacos-group/nacos-sdk-go/clients" + "github.com/nacos-group/nacos-sdk-go/common/constant" + "github.com/nacos-group/nacos-sdk-go/vo" +) + +const ( + defaultPort = 26659 + defaultTimeoutMs = uint64(5000) + defaultListenInterval = uint64(10000) + defaultWeight = float64(10) +) + +// StartNacosClient start nacos client and register rest service in nacos +func StartNacosClient(urls string, namespace string, name string, externalAddr string) { + ip, port, err := ResolveIPAndPort(externalAddr) + if err != nil { + log.Errorf(fmt.Sprintf("failed to resolve %s error: %s", externalAddr, err.Error())) + return + } + + serverConfigs, err := getServerConfigs(urls) + if err != nil { + log.Errorf(fmt.Sprintf("failed to resolve nacos server url %s: %s", urls, err.Error())) + return + } + client, err := clients.CreateNamingClient(map[string]interface{}{ + "serverConfigs": serverConfigs, + "clientConfig": constant.ClientConfig{ + TimeoutMs: defaultTimeoutMs, + ListenInterval: defaultListenInterval, + NotLoadCacheAtStart: true, + NamespaceId: namespace, + LogDir: "/dev/null", + LogLevel: "error", + }, + }) + if err != nil { + log.Errorf(fmt.Sprintf("failed to create nacos client. error: %s", err.Error())) + return + } + + _, err = client.RegisterInstance(vo.RegisterInstanceParam{ + Ip: ip, + Port: uint64(port), + ServiceName: name, + Weight: defaultWeight, + ClusterName: "DEFAULT", + Enable: true, + Healthy: true, + Ephemeral: true, + Metadata: map[string]string{ + "preserved.register.source": "GO", + "app_registry_tag": strconv.FormatInt(time.Now().Unix(), 10), + }, + }) + if err != nil { + log.Errorf(fmt.Sprintf("failed to register instance in nacos server. error: %s", err.Error())) + return + } + log.Infof("register application instance in nacos successfully") +} + +// ResolveIPAndPort resolve ip and port from addr +func ResolveIPAndPort(addr string) (string, int, error) { + laddr := strings.Split(addr, ":") + ip := laddr[0] + if ip == "127.0.0.1" { + return GetLocalIP(), defaultPort, nil + } + port, err := strconv.Atoi(laddr[1]) + if err != nil { + return "", 0, err + } + return ip, port, nil +} + +// GetLocalIP get local ip +func GetLocalIP() string { + addrs, err := net.InterfaceAddrs() + if err != nil { + return "" + } + for _, address := range addrs { + if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() { + if ipnet.IP.To4() != nil { + return ipnet.IP.String() + } + } + } + return "" +} diff --git a/zk/nacos/utils.go b/zk/nacos/utils.go new file mode 100644 index 00000000000..1b9b755e59f --- /dev/null +++ b/zk/nacos/utils.go @@ -0,0 +1,56 @@ +package nacos + +import ( + "fmt" + "strconv" + "strings" + + "github.com/nacos-group/nacos-sdk-go/clients" + "github.com/nacos-group/nacos-sdk-go/common/constant" + "github.com/nacos-group/nacos-sdk-go/model" + "github.com/nacos-group/nacos-sdk-go/vo" +) + +// GetOneInstance is get the instance +func GetOneInstance(urls string, nameSpace string, param vo.SelectOneHealthInstanceParam) (instance *model.Instance, err error) { + serverConfigs, err := getServerConfigs(urls) + if err != nil { + return nil, fmt.Errorf("failed to resolve nacos server url %s: %s", urls, err.Error()) + } + + namingClient, err := clients.CreateNamingClient(map[string]interface{}{ + "serverConfigs": serverConfigs, + "clientConfig": constant.ClientConfig{ + NamespaceId: nameSpace, + TimeoutMs: defaultTimeoutMs, + NotLoadCacheAtStart: true, + LogDir: "/dev/null", + }, + }) + if err != nil { + return nil, fmt.Errorf("failed to create nacos client when getting one service. error: %s", err.Error()) + } + + instance, err = namingClient.SelectOneHealthyInstance(param) + if err != nil { + return nil, fmt.Errorf("failed to get %s service in [%s, %s]. error: %s", param, urls, nameSpace, err.Error()) + } + return instance, nil +} + +func getServerConfigs(urls string) ([]constant.ServerConfig, error) { + // nolint + var configs []constant.ServerConfig + for _, url := range strings.Split(urls, ",") { + laddr := strings.Split(url, ":") + serverPort, err := strconv.Atoi(laddr[1]) + if err != nil { + return nil, err + } + configs = append(configs, constant.ServerConfig{ + IpAddr: laddr[0], + Port: uint64(serverPort), + }) + } + return configs, nil +} From e134e944918526385aaa398556c25b5cdd7cd3fa Mon Sep 17 00:00:00 2001 From: JianGuo Date: Fri, 14 Jun 2024 17:04:11 +0800 Subject: [PATCH 2/4] Modify log --- zk/nacos/start.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/zk/nacos/start.go b/zk/nacos/start.go index 9254ae402ee..5f1bb03a24c 100644 --- a/zk/nacos/start.go +++ b/zk/nacos/start.go @@ -7,7 +7,7 @@ import ( "strings" "time" - "github.com/ledgerwatch/erigon/zkevm/log" + "github.com/ledgerwatch/log/v3" "github.com/nacos-group/nacos-sdk-go/clients" "github.com/nacos-group/nacos-sdk-go/common/constant" "github.com/nacos-group/nacos-sdk-go/vo" @@ -24,13 +24,13 @@ const ( func StartNacosClient(urls string, namespace string, name string, externalAddr string) { ip, port, err := ResolveIPAndPort(externalAddr) if err != nil { - log.Errorf(fmt.Sprintf("failed to resolve %s error: %s", externalAddr, err.Error())) + log.Error(fmt.Sprintf("failed to resolve %s error: %s", externalAddr, err.Error())) return } serverConfigs, err := getServerConfigs(urls) if err != nil { - log.Errorf(fmt.Sprintf("failed to resolve nacos server url %s: %s", urls, err.Error())) + log.Error(fmt.Sprintf("failed to resolve nacos server url %s: %s", urls, err.Error())) return } client, err := clients.CreateNamingClient(map[string]interface{}{ @@ -45,7 +45,7 @@ func StartNacosClient(urls string, namespace string, name string, externalAddr s }, }) if err != nil { - log.Errorf(fmt.Sprintf("failed to create nacos client. error: %s", err.Error())) + log.Error(fmt.Sprintf("failed to create nacos client. error: %s", err.Error())) return } @@ -64,10 +64,10 @@ func StartNacosClient(urls string, namespace string, name string, externalAddr s }, }) if err != nil { - log.Errorf(fmt.Sprintf("failed to register instance in nacos server. error: %s", err.Error())) + log.Error(fmt.Sprintf("failed to register instance in nacos server. error: %s", err.Error())) return } - log.Infof("register application instance in nacos successfully") + log.Info("register application instance in nacos successfully") } // ResolveIPAndPort resolve ip and port from addr From 2d600784fa0691ef37e067085a52931ee1ec4025 Mon Sep 17 00:00:00 2001 From: JianGuo Date: Fri, 21 Jun 2024 18:25:43 +0800 Subject: [PATCH 3/4] remove code --- cmd/utils/flags.go | 7 +------ zk/nacos/utils.go | 31 ------------------------------- 2 files changed, 1 insertion(+), 37 deletions(-) diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 707ef09ab8a..219fb18943e 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -600,32 +600,27 @@ var ( Name: "debug.step-after", Usage: "Start incrementing by debug.step after this block", } - - // For Xlayer + // XLayer nacos NacosURLsFlag = cli.StringFlag{ Name: "zkevm.nacos-urls", Usage: "Nacos urls.", Value: "", } - NacosNamespaceIdFlag = cli.StringFlag{ Name: "zkevm.nacos-namespace-id", Usage: "Nacos namespace Id.", Value: "", } - NacosApplicationNameFlag = cli.StringFlag{ Name: "zkevm.nacos-application-name", Usage: "Nacos application name", Value: "", } - NacosExternalListenAddrFlag = cli.StringFlag{ Name: "zkevm.nacos-external-listen-addr", Usage: "Nacos external listen addr.", Value: "", } - RpcBatchConcurrencyFlag = cli.UintFlag{ Name: "rpc.batch.concurrency", Usage: "Does limit amount of goroutines to process 1 batch request. Means 1 bach request can't overload server. 1 batch still can have unlimited amount of request", diff --git a/zk/nacos/utils.go b/zk/nacos/utils.go index 1b9b755e59f..bdea7e47730 100644 --- a/zk/nacos/utils.go +++ b/zk/nacos/utils.go @@ -1,43 +1,12 @@ package nacos import ( - "fmt" "strconv" "strings" - "github.com/nacos-group/nacos-sdk-go/clients" "github.com/nacos-group/nacos-sdk-go/common/constant" - "github.com/nacos-group/nacos-sdk-go/model" - "github.com/nacos-group/nacos-sdk-go/vo" ) -// GetOneInstance is get the instance -func GetOneInstance(urls string, nameSpace string, param vo.SelectOneHealthInstanceParam) (instance *model.Instance, err error) { - serverConfigs, err := getServerConfigs(urls) - if err != nil { - return nil, fmt.Errorf("failed to resolve nacos server url %s: %s", urls, err.Error()) - } - - namingClient, err := clients.CreateNamingClient(map[string]interface{}{ - "serverConfigs": serverConfigs, - "clientConfig": constant.ClientConfig{ - NamespaceId: nameSpace, - TimeoutMs: defaultTimeoutMs, - NotLoadCacheAtStart: true, - LogDir: "/dev/null", - }, - }) - if err != nil { - return nil, fmt.Errorf("failed to create nacos client when getting one service. error: %s", err.Error()) - } - - instance, err = namingClient.SelectOneHealthyInstance(param) - if err != nil { - return nil, fmt.Errorf("failed to get %s service in [%s, %s]. error: %s", param, urls, nameSpace, err.Error()) - } - return instance, nil -} - func getServerConfigs(urls string) ([]constant.ServerConfig, error) { // nolint var configs []constant.ServerConfig From 9ef8054eda146b4f0b252a7b68d9ed52c99d20b9 Mon Sep 17 00:00:00 2001 From: JianGuo Date: Fri, 21 Jun 2024 18:35:07 +0800 Subject: [PATCH 4/4] Fix file name --- zk/nacos/{start.go => nacos.go} | 17 +++++++++++++++++ zk/nacos/utils.go | 25 ------------------------- 2 files changed, 17 insertions(+), 25 deletions(-) rename zk/nacos/{start.go => nacos.go} (86%) delete mode 100644 zk/nacos/utils.go diff --git a/zk/nacos/start.go b/zk/nacos/nacos.go similarity index 86% rename from zk/nacos/start.go rename to zk/nacos/nacos.go index 5f1bb03a24c..f78f43cd9ab 100644 --- a/zk/nacos/start.go +++ b/zk/nacos/nacos.go @@ -99,3 +99,20 @@ func GetLocalIP() string { } return "" } + +func getServerConfigs(urls string) ([]constant.ServerConfig, error) { + // nolint + var configs []constant.ServerConfig + for _, url := range strings.Split(urls, ",") { + laddr := strings.Split(url, ":") + serverPort, err := strconv.Atoi(laddr[1]) + if err != nil { + return nil, err + } + configs = append(configs, constant.ServerConfig{ + IpAddr: laddr[0], + Port: uint64(serverPort), + }) + } + return configs, nil +} diff --git a/zk/nacos/utils.go b/zk/nacos/utils.go deleted file mode 100644 index bdea7e47730..00000000000 --- a/zk/nacos/utils.go +++ /dev/null @@ -1,25 +0,0 @@ -package nacos - -import ( - "strconv" - "strings" - - "github.com/nacos-group/nacos-sdk-go/common/constant" -) - -func getServerConfigs(urls string) ([]constant.ServerConfig, error) { - // nolint - var configs []constant.ServerConfig - for _, url := range strings.Split(urls, ",") { - laddr := strings.Split(url, ":") - serverPort, err := strconv.Atoi(laddr[1]) - if err != nil { - return nil, err - } - configs = append(configs, constant.ServerConfig{ - IpAddr: laddr[0], - Port: uint64(serverPort), - }) - } - return configs, nil -}