diff --git a/.version b/.version index eb97817c..59a78457 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -version=0.4.3 +version=0.5.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index 5176e22f..8fadfc73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## [unreleased]((https://github.com/NodeFactoryIo/vedran/tree/HEAD)) +[Full Changelog](https://github.com/NodeFactoryIo/vedran/compare/v0.5.0...HEAD) + + +## [v0.5.0]((https://github.com/NodeFactoryIo/vedran/tree/v0.5.0)) +[Full Changelog](https://github.com/NodeFactoryIo/vedran/compare/v0.4.3...v0.5.0) + +### Added +- Add target block metric [\#177](https://github.com/NodeFactoryIo/vedran/pull/177) ([MakMuftic](https://github.com/MakMuftic)) + +### Fix +- Fix min TLS version [\#175](https://github.com/NodeFactoryIo/vedran/pull/175) ([MakMuftic](https://github.com/MakMuftic)) + +### Changed +- Replace go-substrate-rpc-client fork [\#176](https://github.com/NodeFactoryIo/vedran/pull/176) ([MakMuftic](https://github.com/MakMuftic)) + ## [v0.4.3]((https://github.com/NodeFactoryIo/vedran/tree/v0.4.3)) [Full Changelog](https://github.com/NodeFactoryIo/vedran/compare/v0.4.2...v0.4.3\) diff --git a/README.md b/README.md index 16236aea..91b473cb 100644 --- a/README.md +++ b/README.md @@ -105,8 +105,8 @@ Start command will start application on 2 ports that need to be exposed to publi |----|-----------|:--------:| |`--server-port`|port on which RPC API is exposed|80| |`--public-ip`|public IP address of loadbalancer|uses multiple services to find out public IP| -|`--cert-file`|SSL certification file|uses HTTP| -|`--key-file`|SSL price key file|uses HTTP| +|`--cert-file`|path to SSL certification file|uses HTTP| +|`--key-file`|path to SSL private key file|uses HTTP| |`--tunnel-port`|port on which tunnel server is listening for connect requests|5223| |`--tunnel-port-range`|range of ports that will be used for creating tunnels|20000:30000| @@ -125,6 +125,7 @@ Start command will start application on 2 ports that need to be exposed to publi |`--lb-payout-address`|address on which load balancer fee will be sent|-| |`--log-level`|log level (debug, info, warn, error)|error| |`--log-file`|path to file in which logs will be saved|`stdout`| +|`--root-dir`|root directory for all generated files (e.g. database file, log file)|uses current directory| ### Obtaining DOTs If you want to do anything on Polkadot, Kusama, or Westend, then you'll need to get an account and some DOT, KSM, or WND tokens, respectively. diff --git a/docker-compose.yml b/docker-compose.yml index e77de529..283ccbd3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -17,7 +17,7 @@ services: vedran: command: start --auth-secret=test-secret --log-level debug --public-ip vedran --server-port 4000 --private-key ${VEDRAN_LB_PK:-0xe5be9a5092b81bca64be81d212e7f2f9eba183bb7a90954f7b76361f6edb5c0a} --payout-interval 1 --payout-reward ${VEDRAN_LB_REWARD_POOL:-10} - image: nodefactory/vedran:v0.4.2 + image: nodefactory/vedran:v0.5.0 environment: - PROM_FEE_STATS_INTERVAL=10s - PROM_PAYOUT_STATS_INTERVAL=5s @@ -26,7 +26,7 @@ services: container_name: "vedran" vedran-daemon: - image: nodefactory/vedran-daemon:v0.3.0 + image: nodefactory/vedran-daemon:v0.3.2 depends_on: - vedran - polkadot diff --git a/go.mod b/go.mod index ec2cf50c..90827fce 100644 --- a/go.mod +++ b/go.mod @@ -3,12 +3,12 @@ module github.com/NodeFactoryIo/vedran go 1.15 require ( - github.com/NodeFactoryIo/go-substrate-rpc-client v1.1.1-0.20201117130410-fe8589d08563 github.com/asdine/storm/v3 v3.2.1 github.com/cenkalti/backoff v2.2.1+incompatible - github.com/decred/base58 v1.0.2 + github.com/centrifuge/go-substrate-rpc-client/v2 v2.1.0 + github.com/decred/base58 v1.0.3 github.com/dgrijalva/jwt-go v3.2.0+incompatible - github.com/ethereum/go-ethereum v1.9.24 + github.com/ethereum/go-ethereum v1.9.25 github.com/golang/gddo v0.0.0-20200831202555-721e228c7686 github.com/gorilla/handlers v1.5.1 github.com/gorilla/mux v1.8.0 diff --git a/go.sum b/go.sum index 0136f79b..e323f0e9 100644 --- a/go.sum +++ b/go.sum @@ -17,18 +17,17 @@ github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbt github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200112161544-2f1a03be8459 h1:fGu/ZmqFoLr+ddIuqYlddEXH2swjwKl9YgvZp6gjgws= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200112161544-2f1a03be8459/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= +github.com/ChainSafe/go-schnorrkel v0.0.0-20201021020641-d3c6d3118d10 h1:V22pHpfKZ/bYx/OwI3WfqUKGYQmsJ3JJ08k5lxIAdvs= +github.com/ChainSafe/go-schnorrkel v0.0.0-20201021020641-d3c6d3118d10/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= github.com/DataDog/zstd v1.4.1 h1:3oxKN3wbHibqx897utPC2LTQU4J+IHWWJO+glkAkpFM= github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= -github.com/NodeFactoryIo/go-substrate-rpc-client v1.1.1-0.20201117130410-fe8589d08563 h1:oKUK9VnOr4jL4Hn2AbMVptw1xhW78zYcH/nT3PVTmsg= -github.com/NodeFactoryIo/go-substrate-rpc-client v1.1.1-0.20201117130410-fe8589d08563/go.mod h1:NcBtCFunqE4x7Mqb3Y7CLPsygooRT6D6PWbzquH/6Ws= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Sereal/Sereal v0.0.0-20190618215532-0b8ac451a863 h1:BRrxwOZBolJN4gIwvZMJY1tzqBvQgpaZiQRuIDD40jM= github.com/Sereal/Sereal v0.0.0-20190618215532-0b8ac451a863/go.mod h1:D0JMgToj/WdxCgd30Kc1UcA9E+WdZoJqeVOuYW7iTBM= github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8= github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/VictoriaMetrics/fastcache v1.5.7/go.mod h1:ptDBkNMQI4RtmVo8VS/XwRY6RoTu1dAWCbrk+6WsEM8= +github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= @@ -48,21 +47,33 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bradfitz/gomemcache v0.0.0-20170208213004-1952afaa557d/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60= github.com/btcsuite/btcd v0.0.0-20171128150713-2e60448ffcc6/go.mod h1:Dmm/EzmjnCiweXmzRIAiUWCInVmPgjkzgv5k4tVyXiQ= -github.com/btcsuite/btcutil v0.0.0-20191219182022-e17c9730c422/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/btcd v0.20.1-beta h1:Ik4hyJqN8Jfyv3S4AGBOmyouMsYE3EdYODkMbQjwPGw= +github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= +github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= +github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/btcutil v1.0.2 h1:9iZ1Terx9fMIOtq1VrwdqfsATL9MC2l8ZrUY6YZ2uts= +github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= +github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= +github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= +github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= +github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/centrifuge/go-substrate-rpc-client/v2 v2.1.0 h1:3hwrAiOiuWiI2VicmIMl9VlXH14L9+zAXNsv8T8mTJc= +github.com/centrifuge/go-substrate-rpc-client/v2 v2.1.0/go.mod h1:FvTQxAPFHIgGYsmNciyw8cddwV+KzmIUJNti0VR9+P4= github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM= github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -75,8 +86,11 @@ github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7 github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d h1:49RLWk1j44Xu4fjHb6JFYmeUnDORVwHNkDxaQ0ctCVU= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= +github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= +github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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= @@ -84,8 +98,8 @@ github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea h1:j4317fAZh7X github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= github.com/deckarep/golang-set v1.7.1 h1:SCQV0S6gTtp6itiFrTqI+pfmJ4LN85S1YzhDf9rTHJQ= github.com/deckarep/golang-set v1.7.1/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= -github.com/decred/base58 v1.0.2 h1:yupIH6bg+q7KYfBk7oUv3xFjKGb5Ypm4+v/61X4keGY= -github.com/decred/base58 v1.0.2/go.mod h1:pXP9cXCfM2sFLb2viz2FNIdeMWmZDBKG3ZBYbiSM78E= +github.com/decred/base58 v1.0.3 h1:KGZuh8d1WEMIrK0leQRM47W85KqCAdl2N+uagbctdDI= +github.com/decred/base58 v1.0.3/go.mod h1:pXP9cXCfM2sFLb2viz2FNIdeMWmZDBKG3ZBYbiSM78E= github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= @@ -97,9 +111,8 @@ github.com/dop251/goja v0.0.0-20200721192441-a695b0cdd498/go.mod h1:Mw6PkjjMXWbT github.com/dvyukov/go-fuzz v0.0.0-20200318091601-be3528f3a813/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw= github.com/edsrzf/mmap-go v0.0.0-20160512033002-935e0e8a636c/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/emicklei/go-restful v2.14.2+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/ethereum/go-ethereum v1.9.3/go.mod h1:PwpWDrCLZrV+tfrhqqF6kPknbISMHaJv9Ln3kPCZLwY= -github.com/ethereum/go-ethereum v1.9.24 h1:6AK+ORt3EMDO+FTjzXy/AQwHMbu52J2nYHIjyQX9azQ= -github.com/ethereum/go-ethereum v1.9.24/go.mod h1:JIfVb6esrqALTExdz9hRYvrP0xBDf6wCncIu1hNwHpM= +github.com/ethereum/go-ethereum v1.9.25 h1:mMiw/zOOtCLdGLWfcekua0qPrJTe7FVIiHJ4IKNTfR0= +github.com/ethereum/go-ethereum v1.9.25/go.mod h1:vMkFiYLHI4tgPw4k2j4MHKoovchFE8plZ0M9VMk4/oM= github.com/fatih/color v1.3.0 h1:YehCCcyeQ6Km0D6+IapqPinWBK6y+0eB5umvZXK9WPs= github.com/fatih/color v1.3.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= @@ -154,8 +167,8 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.2-0.20200707131729-196ae77b8a26 h1:lMm2hD9Fy0ynom5+85/pbdkiYcBqM1JWmhpAXLmy0fw= -github.com/golang/snappy v0.0.2-0.20200707131729-196ae77b8a26/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3 h1:ur2rms48b3Ep1dxh7aUV2FZEQ8jEVO2F6ILKx8ofkAg= +github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.1.1-0.20171103154506-982329095285/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= @@ -205,15 +218,18 @@ github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NH github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/influxdata/influxdb v1.2.3-0.20180221223340-01288bdb0883/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU= +github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a h1:FaWFmfWdAUKbSCtOU2QjDaorUexogfaMgbipgYATUMU= -github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU= +github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a h1:FaWFmfWdAUKbSCtOU2QjDaorUexogfaMgbipgYATUMU= +github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a h1:FaWFmfWdAUKbSCtOU2QjDaorUexogfaMgbipgYATUMU= +github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU= github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU= github.com/julienschmidt/httprouter v1.1.1-0.20170430222011-975b5c4c7c21/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= @@ -223,6 +239,7 @@ github.com/karalabe/usb v0.0.0-20190919080040-51dc0efba356/go.mod h1:Od972xHfMJo github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -235,12 +252,12 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a h1:weJVJJRzAJBFRlAiJQROKQs8oC9vOxvm4rZmBBk0ONw= -github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= github.com/labstack/echo/v4 v4.1.17/go.mod h1:Tn2yRQL/UclUalpb5rPdXDevbkJ+lp/2svdyFBg6CHQ= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a h1:weJVJJRzAJBFRlAiJQROKQs8oC9vOxvm4rZmBBk0ONw= +github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a h1:weJVJJRzAJBFRlAiJQROKQs8oC9vOxvm4rZmBBk0ONw= +github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= github.com/magiconair/properties v1.7.4-0.20170902060319-8d7837e64d3c/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= @@ -270,7 +287,6 @@ github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0j github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643 h1:hLDRPB66XQT/8+wG9WsDpiCvZf1yKO7sz7scAjSlBa0= github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= -github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v0.0.0-20170523030023-d0303fe80992/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= @@ -290,8 +306,10 @@ github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.2-0.20190409134802-7e037d187b0c/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= @@ -393,8 +411,8 @@ github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKn github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/vedhavyas/go-subkey v0.0.0-20200211154731-4cce0189eaa4 h1:rBS1TlztYpCZTqoGzc6QyXudrhJduRG2D4kq04CS2Vg= -github.com/vedhavyas/go-subkey v0.0.0-20200211154731-4cce0189eaa4/go.mod h1:44zD24L8S1GZLwtUrxOVFee+TG9S8Zw5Ij2eirlizNg= +github.com/vedhavyas/go-subkey v1.0.2 h1:EW6U+1us4k38AtrBfFOEZTpW9FcF/cIUOxw/pHbNNQ0= +github.com/vedhavyas/go-subkey v1.0.2/go.mod h1:T9SEs84XZxRULMZLWtIl48s9rBNE7h6GnkqTgJR8+MU= github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI= github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/wsddn/go-ecdh v0.0.0-20161211032359-48726bab9208/go.mod h1:IotVbo4F+mw0EzQ08zFqg7pK3FebNXpaMsRy2RT+Ees= @@ -410,16 +428,21 @@ go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= goji.io v2.0.2+incompatible/go.mod h1:sbqFwrtqZACxLBTQcdgVjFh54yGVCvwq8+w49MVMMIk= +golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200109152110-61a87790db17/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a h1:vclmkQCjlDX5OydZ9wv8rBCcS0QyQY66Mpf/7BZbInM= golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad h1:DN0cp81fZ3njFcrLCytUHRSUkqBjfTo4Tx9RJTWs0EY= +golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= @@ -490,6 +513,9 @@ golang.org/x/sys v0.0.0-20200824131525-c12d262b63d8 h1:AvbQYmiaaaza3cW3QXRyPo5kY golang.org/x/sys v0.0.0-20200824131525-c12d262b63d8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6 h1:DvY3Zkh7KabQE/kfzMvYvKirSiguP9Q/veMtkYyf0o8= golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201221093633-bc327ba9c2f0 h1:n+DPcgTwkgWzIFpLmoimYR2K2b0Ga5+Os4kayIN0vGo= +golang.org/x/sys v0.0.0-20201221093633-bc327ba9c2f0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -549,7 +575,6 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= diff --git a/internal/active/active.go b/internal/active/active.go index 432d111e..bc9c9202 100644 --- a/internal/active/active.go +++ b/internal/active/active.go @@ -51,6 +51,15 @@ func CheckIfMetricsValid(nodeID string, repos *repositories.Repos) (bool, error) if err != nil { return false, err } + // check if node synced + if metrics.BestBlockHeight != metrics.TargetBlockHeight { + log.Debugf( + "Node %s not synced. Best block: %d, Target block: %d", + nodeID, metrics.BestBlockHeight, metrics.TargetBlockHeight, + ) + return false, nil + } + latestBlockMetrics, err := repos.MetricsRepo.GetLatestBlockMetrics() if err != nil { return false, err diff --git a/internal/active/active_test.go b/internal/active/active_test.go index 8bd03cfa..ad459827 100644 --- a/internal/active/active_test.go +++ b/internal/active/active_test.go @@ -36,6 +36,7 @@ func TestCheckIfNodeActive(t *testing.T) { PeerCount: 0, BestBlockHeight: 1000, FinalizedBlockHeight: 995, + TargetBlockHeight: 1000, ReadyTransactionCount: 0, }, nodeMetricsError: nil, @@ -60,6 +61,32 @@ func TestCheckIfNodeActive(t *testing.T) { PeerCount: 0, BestBlockHeight: 1000, FinalizedBlockHeight: 995, + TargetBlockHeight: 1000, + ReadyTransactionCount: 0, + }, + nodeMetricsError: nil, + latestMetrics: &models.LatestBlockMetrics{ + BestBlockHeight: 0, + FinalizedBlockHeight: 0, + }, + latestMetricsError: nil, + expectedResult: false, + expectedError: nil, + }, + { + name: "not active node::node not synced", + node: models.Node{ID: "1"}, + nodePing: &models.Ping{ + NodeId: "1", + Timestamp: time.Now(), + }, + nodePingError: nil, + nodeMetrics: &models.Metrics{ + NodeId: "1", + PeerCount: 0, + BestBlockHeight: 1000, + FinalizedBlockHeight: 995, + TargetBlockHeight: 1300, ReadyTransactionCount: 0, }, nodeMetricsError: nil, @@ -84,6 +111,7 @@ func TestCheckIfNodeActive(t *testing.T) { PeerCount: 0, BestBlockHeight: 1000, FinalizedBlockHeight: 995, + TargetBlockHeight: 1000, ReadyTransactionCount: 0, }, nodeMetricsError: nil, @@ -108,6 +136,7 @@ func TestCheckIfNodeActive(t *testing.T) { PeerCount: 0, BestBlockHeight: 1000, FinalizedBlockHeight: 994, + TargetBlockHeight: 1000, ReadyTransactionCount: 0, }, nodeMetricsError: nil, @@ -132,6 +161,7 @@ func TestCheckIfNodeActive(t *testing.T) { PeerCount: 0, BestBlockHeight: 1000, FinalizedBlockHeight: 995, + TargetBlockHeight: 1000, ReadyTransactionCount: 0, }, nodeMetricsError: nil, @@ -155,6 +185,7 @@ func TestCheckIfNodeActive(t *testing.T) { NodeId: "1", PeerCount: 0, BestBlockHeight: 1000, + TargetBlockHeight: 1000, FinalizedBlockHeight: 995, ReadyTransactionCount: 0, }, @@ -180,6 +211,7 @@ func TestCheckIfNodeActive(t *testing.T) { PeerCount: 0, BestBlockHeight: 1000, FinalizedBlockHeight: 995, + TargetBlockHeight: 1000, ReadyTransactionCount: 0, }, nodeMetricsError: errors.New("metrics-error"), @@ -204,6 +236,7 @@ func TestCheckIfNodeActive(t *testing.T) { PeerCount: 0, BestBlockHeight: 1000, FinalizedBlockHeight: 995, + TargetBlockHeight: 1000, ReadyTransactionCount: 0, }, nodeMetricsError: nil, diff --git a/internal/api/api.go b/internal/api/api.go index 70db0952..3bf73484 100644 --- a/internal/api/api.go +++ b/internal/api/api.go @@ -1,8 +1,8 @@ package api import ( - gsrpc "github.com/NodeFactoryIo/go-substrate-rpc-client" - "github.com/NodeFactoryIo/go-substrate-rpc-client/types" + gsrpc "github.com/centrifuge/go-substrate-rpc-client/v2" + "github.com/centrifuge/go-substrate-rpc-client/v2/types" ) func InitializeSubstrateAPI(substrateRPCUrl string) (*gsrpc.SubstrateAPI, error) { diff --git a/internal/controllers/metrics.go b/internal/controllers/metrics.go index 81e41f54..b13b7d87 100644 --- a/internal/controllers/metrics.go +++ b/internal/controllers/metrics.go @@ -14,6 +14,7 @@ type MetricsRequest struct { PeerCount int32 `json:"peer_count"` BestBlockHeight int64 `json:"best_block_height"` FinalizedBlockHeight int64 `json:"finalized_block_height"` + TargetBlockHeight int64 `json:"target_block_height"` ReadyTransactionCount int32 `json:"ready_transaction_count"` } @@ -41,6 +42,7 @@ func (c ApiController) SaveMetricsHandler(w http.ResponseWriter, r *http.Request PeerCount: metricsRequest.PeerCount, BestBlockHeight: metricsRequest.BestBlockHeight, FinalizedBlockHeight: metricsRequest.FinalizedBlockHeight, + TargetBlockHeight: metricsRequest.TargetBlockHeight, ReadyTransactionCount: metricsRequest.ReadyTransactionCount, }) diff --git a/internal/controllers/metrics_test.go b/internal/controllers/metrics_test.go index 54797049..f98925fb 100644 --- a/internal/controllers/metrics_test.go +++ b/internal/controllers/metrics_test.go @@ -71,6 +71,7 @@ func TestApiController_SaveMetricsHandler(t *testing.T) { PeerCount: 0, BestBlockHeight: 1000, FinalizedBlockHeight: 995, + TargetBlockHeight: 1000, ReadyTransactionCount: 0, }, metricsRepoFindByIDError: nil, @@ -92,6 +93,7 @@ func TestApiController_SaveMetricsHandler(t *testing.T) { PeerCount: 0, BestBlockHeight: 1000, FinalizedBlockHeight: 995, + TargetBlockHeight: 1000, ReadyTransactionCount: 0, }, nodeId: "1", @@ -123,6 +125,7 @@ func TestApiController_SaveMetricsHandler(t *testing.T) { PeerCount: 10, BestBlockHeight: 100, FinalizedBlockHeight: 100, + TargetBlockHeight: 100, ReadyTransactionCount: 10, }, nodeId: "1", @@ -154,6 +157,7 @@ func TestApiController_SaveMetricsHandler(t *testing.T) { PeerCount: 0, BestBlockHeight: 1000, FinalizedBlockHeight: 995, + TargetBlockHeight: 1000, ReadyTransactionCount: 0, }, nodeId: "1", @@ -173,6 +177,7 @@ func TestApiController_SaveMetricsHandler(t *testing.T) { PeerCount: 0, BestBlockHeight: 1000, FinalizedBlockHeight: 995, + TargetBlockHeight: 1000, ReadyTransactionCount: 0, }, metricsRepoFindByIDError: nil, @@ -188,6 +193,48 @@ func TestApiController_SaveMetricsHandler(t *testing.T) { metricsRepoSaveError: nil, metricsRepoSaveNumOfCalls: 1, }, + { + name: "Valid metrics save request and node should not be added to active nodes as node is not synced", + metricsRequest: MetricsRequest{ + PeerCount: 0, + BestBlockHeight: 1000, + FinalizedBlockHeight: 995, + TargetBlockHeight: 1400, + ReadyTransactionCount: 0, + }, + nodeId: "1", + httpStatus: http.StatusOK, + // NodeRepo.FindByID + nodeRepoIsNodeOnCooldownReturns: false, + nodeRepoIsNodeOnCooldownError: nil, + nodeRepoIsNodeOnNumOfCalls: 1, + // NodeRepo.AddNodeToActive + nodeRepoAddNodeToActiveError: nil, + nodeRepoAddNodeToActiveNumOfCalls: 0, + // NodeRepo.IsNodeActive + nodeRepoIsNodeActiveReturn: false, + // MetricsRepo.FindByID + metricsRepoFindByIDReturn: &models.Metrics{ + NodeId: "1", + PeerCount: 0, + BestBlockHeight: 1000, + FinalizedBlockHeight: 995, + TargetBlockHeight: 1400, + ReadyTransactionCount: 0, + }, + metricsRepoFindByIDError: nil, + metricsRepoFindByIDNumOfCalls: 1, + // MetricsRepo.GetLatestBlockMetrics + metricsRepoGetLatestBlockMetricsReturn: &models.LatestBlockMetrics{ + BestBlockHeight: 1000, + FinalizedBlockHeight: 999, + }, + metricsRepoGetLatestBlockMetricsError: nil, + metricsRepoGetLatestBlockMetricsNumOfCalls: 0, + // MetricsRepo.Save + metricsRepoSaveError: nil, + metricsRepoSaveNumOfCalls: 1, + }, { name: "Invalid metrics save request", metricsRequest: struct{ PeerCount string }{PeerCount: "10"}, @@ -200,6 +247,7 @@ func TestApiController_SaveMetricsHandler(t *testing.T) { PeerCount: 10, BestBlockHeight: 100, FinalizedBlockHeight: 100, + TargetBlockHeight: 100, ReadyTransactionCount: 10, }, nodeId: "1", diff --git a/internal/controllers/stats_test.go b/internal/controllers/stats_test.go index b31bd98c..f522d2c6 100644 --- a/internal/controllers/stats_test.go +++ b/internal/controllers/stats_test.go @@ -6,13 +6,13 @@ import ( "encoding/json" "errors" "fmt" - "github.com/NodeFactoryIo/go-substrate-rpc-client/signature" "github.com/NodeFactoryIo/vedran/internal/configuration" "github.com/NodeFactoryIo/vedran/internal/constants" "github.com/NodeFactoryIo/vedran/internal/middleware" "github.com/NodeFactoryIo/vedran/internal/models" "github.com/NodeFactoryIo/vedran/internal/repositories" mocks "github.com/NodeFactoryIo/vedran/mocks/repositories" + "github.com/centrifuge/go-substrate-rpc-client/v2/signature" "github.com/ethereum/go-ethereum/common/hexutil" muxhelpper "github.com/gorilla/mux" "github.com/stretchr/testify/assert" diff --git a/internal/loadbalancer/server.go b/internal/loadbalancer/server.go index 54a07904..70da00f8 100644 --- a/internal/loadbalancer/server.go +++ b/internal/loadbalancer/server.go @@ -1,6 +1,7 @@ package loadbalancer import ( + "crypto/tls" "fmt" "net/http" "path" @@ -99,12 +100,13 @@ func StartLoadBalancerServer( r := router.CreateNewApiRouter(apiController, privateKey) prometheus.RecordMetrics(*repos) if props.CertFile != "" { - err = http.ListenAndServeTLS( - fmt.Sprintf(":%d", props.Port), - props.CertFile, - props.KeyFile, - handlers.CORS()(r), - ) + tlsConfig := &tls.Config{MinVersion: tls.VersionTLS10} + server := &http.Server{ + Addr: fmt.Sprintf(":%d", props.Port), + Handler: handlers.CORS()(r), + TLSConfig: tlsConfig, + } + err = server.ListenAndServeTLS(props.CertFile, props.KeyFile) } else { err = http.ListenAndServe(fmt.Sprintf(":%d", props.Port), handlers.CORS()(r)) } diff --git a/internal/middleware/signature.go b/internal/middleware/signature.go index e5393a81..406e32f7 100644 --- a/internal/middleware/signature.go +++ b/internal/middleware/signature.go @@ -1,8 +1,8 @@ package middleware import ( - "github.com/NodeFactoryIo/go-substrate-rpc-client/signature" "github.com/NodeFactoryIo/vedran/internal/constants" + "github.com/centrifuge/go-substrate-rpc-client/v2/signature" "github.com/ethereum/go-ethereum/common/hexutil" log "github.com/sirupsen/logrus" "net/http" diff --git a/internal/models/metrics.go b/internal/models/metrics.go index 8e390f71..3ea0f4d0 100644 --- a/internal/models/metrics.go +++ b/internal/models/metrics.go @@ -5,6 +5,7 @@ type Metrics struct { PeerCount int32 BestBlockHeight int64 FinalizedBlockHeight int64 + TargetBlockHeight int64 ReadyTransactionCount int32 } diff --git a/internal/payout/tx.go b/internal/payout/tx.go index 5b503700..c6b6331a 100644 --- a/internal/payout/tx.go +++ b/internal/payout/tx.go @@ -1,9 +1,9 @@ package payout import ( - gsrpc "github.com/NodeFactoryIo/go-substrate-rpc-client" - "github.com/NodeFactoryIo/go-substrate-rpc-client/signature" - "github.com/NodeFactoryIo/go-substrate-rpc-client/types" + gsrpc "github.com/centrifuge/go-substrate-rpc-client/v2" + "github.com/centrifuge/go-substrate-rpc-client/v2/signature" + "github.com/centrifuge/go-substrate-rpc-client/v2/types" "github.com/decred/base58" "math/big" "sync" diff --git a/internal/payout/txdetails.go b/internal/payout/txdetails.go index ecccc998..b5022c86 100644 --- a/internal/payout/txdetails.go +++ b/internal/payout/txdetails.go @@ -1,7 +1,7 @@ package payout import ( - "github.com/NodeFactoryIo/go-substrate-rpc-client/rpc/author" + "github.com/centrifuge/go-substrate-rpc-client/v2/rpc/author" log "github.com/sirupsen/logrus" "math/big" ) diff --git a/internal/payout/txpayout.go b/internal/payout/txpayout.go index cadb9c22..6cb9160a 100644 --- a/internal/payout/txpayout.go +++ b/internal/payout/txpayout.go @@ -1,9 +1,9 @@ package payout import ( - gsrpc "github.com/NodeFactoryIo/go-substrate-rpc-client" - "github.com/NodeFactoryIo/go-substrate-rpc-client/signature" - "github.com/NodeFactoryIo/go-substrate-rpc-client/types" + gsrpc "github.com/centrifuge/go-substrate-rpc-client/v2" + "github.com/centrifuge/go-substrate-rpc-client/v2/signature" + "github.com/centrifuge/go-substrate-rpc-client/v2/types" "github.com/pkg/errors" "math/big" "sync" diff --git a/internal/schedule/checkactive/schedule.go b/internal/schedule/checkactive/schedule.go index 95464131..7ddbce79 100644 --- a/internal/schedule/checkactive/schedule.go +++ b/internal/schedule/checkactive/schedule.go @@ -48,13 +48,13 @@ func scheduledTask(repos *repositories.Repos, actions actions.Actions) { continue } - metricsVald, err := active.CheckIfMetricsValid(node.ID, repos) + metricsValid, err := active.CheckIfMetricsValid(node.ID, repos) if err != nil { log.Errorf("Unable to check if node %s active because of %v", node.ID, err) continue } - if !metricsVald { + if !metricsValid { err = repos.NodeRepo.RemoveNodeFromActive(node.ID) if err != nil { log.Errorf("Unable to remove node %s from active because of %v", node.ID, err) diff --git a/internal/schedule/checkactive/schedule_test.go b/internal/schedule/checkactive/schedule_test.go index d64f22bc..03d9abcf 100644 --- a/internal/schedule/checkactive/schedule_test.go +++ b/internal/schedule/checkactive/schedule_test.go @@ -46,6 +46,7 @@ func Test_scheduledTask(t *testing.T) { NodeId: "", BestBlockHeight: 1000, FinalizedBlockHeight: 995, + TargetBlockHeight: 1000, }, }, latestMetrics: []*models.LatestBlockMetrics{ @@ -103,26 +104,31 @@ func Test_scheduledTask(t *testing.T) { NodeId: "1", BestBlockHeight: 1000, FinalizedBlockHeight: 995, + TargetBlockHeight: 1000, }, { NodeId: "2", BestBlockHeight: 1000, FinalizedBlockHeight: 995, + TargetBlockHeight: 1000, }, { NodeId: "3", BestBlockHeight: 1000, FinalizedBlockHeight: 995, + TargetBlockHeight: 1000, }, { NodeId: "4", BestBlockHeight: 1000, FinalizedBlockHeight: 995, + TargetBlockHeight: 1000, }, { NodeId: "5", BestBlockHeight: 1000, FinalizedBlockHeight: 995, + TargetBlockHeight: 1000, }, }, latestMetrics: []*models.LatestBlockMetrics{ @@ -187,26 +193,31 @@ func Test_scheduledTask(t *testing.T) { NodeId: "1", BestBlockHeight: 1000, FinalizedBlockHeight: 995, + TargetBlockHeight: 1000, }, { NodeId: "2", BestBlockHeight: 989, FinalizedBlockHeight: 986, + TargetBlockHeight: 1000, }, { NodeId: "3", BestBlockHeight: 1000, FinalizedBlockHeight: 995, + TargetBlockHeight: 1000, }, { NodeId: "4", BestBlockHeight: 989, FinalizedBlockHeight: 986, + TargetBlockHeight: 1000, }, { NodeId: "5", BestBlockHeight: 1000, FinalizedBlockHeight: 995, + TargetBlockHeight: 1000, }, }, latestMetrics: []*models.LatestBlockMetrics{ diff --git a/internal/schedule/penalize/penalize_test.go b/internal/schedule/penalize/penalize_test.go index 68e32639..40b074db 100644 --- a/internal/schedule/penalize/penalize_test.go +++ b/internal/schedule/penalize/penalize_test.go @@ -53,6 +53,7 @@ func TestScheduleCheckForPenalizedNode(t *testing.T) { NodeId: "", BestBlockHeight: 1000, FinalizedBlockHeight: 995, + TargetBlockHeight: 1000, }, }, latestMetrics: []*models.LatestBlockMetrics{ @@ -91,11 +92,13 @@ func TestScheduleCheckForPenalizedNode(t *testing.T) { NodeId: "1", BestBlockHeight: 900, FinalizedBlockHeight: 898, + TargetBlockHeight: 900, }, { NodeId: "", BestBlockHeight: 1000, FinalizedBlockHeight: 995, + TargetBlockHeight: 1000, }, }, latestMetrics: []*models.LatestBlockMetrics{ @@ -142,21 +145,25 @@ func TestScheduleCheckForPenalizedNode(t *testing.T) { NodeId: "1", BestBlockHeight: 900, FinalizedBlockHeight: 898, + TargetBlockHeight: 900, }, { NodeId: "1", BestBlockHeight: 900, FinalizedBlockHeight: 898, + TargetBlockHeight: 900, }, { NodeId: "1", BestBlockHeight: 900, FinalizedBlockHeight: 898, + TargetBlockHeight: 900, }, { NodeId: "", BestBlockHeight: 1000, FinalizedBlockHeight: 995, + TargetBlockHeight: 1000, }, }, latestMetrics: []*models.LatestBlockMetrics{ @@ -203,6 +210,7 @@ func TestScheduleCheckForPenalizedNode(t *testing.T) { NodeId: "1", BestBlockHeight: 900, FinalizedBlockHeight: 898, + TargetBlockHeight: 900, }, }, latestMetrics: []*models.LatestBlockMetrics{ diff --git a/internal/script/payout.go b/internal/script/payout.go index e6a55a5e..264b4c97 100644 --- a/internal/script/payout.go +++ b/internal/script/payout.go @@ -6,6 +6,7 @@ import ( "fmt" "github.com/NodeFactoryIo/vedran/internal/api" "github.com/NodeFactoryIo/vedran/internal/constants" + "github.com/centrifuge/go-substrate-rpc-client/v2/signature" "github.com/ethereum/go-ethereum/common/hexutil" "net/http" "net/url" @@ -14,10 +15,11 @@ import ( "github.com/NodeFactoryIo/vedran/internal/controllers" "github.com/NodeFactoryIo/vedran/internal/payout" - "github.com/NodeFactoryIo/go-substrate-rpc-client/signature" log "github.com/sirupsen/logrus" ) +const GenericSubstrateNetworkIdentifier = 42 + func ExecutePayout( privateKey string, totalReward float64, @@ -36,7 +38,9 @@ func ExecutePayout( return nil, fmt.Errorf("unable to fetch latest metadata, because of %v", err) } - keyringPair, err := signature.KeyringPairFromSecret(privateKey, "") + // Use wildcard 42 - Generic Substrate wildcard + // https://github.com/paritytech/substrate/wiki/External-Address-Format-(SS58)#address-type + keyringPair, err := signature.KeyringPairFromSecret(privateKey, GenericSubstrateNetworkIdentifier) if err != nil { return nil, fmt.Errorf("invalid private key, %v", err) }