From ee3325e4f6784048b8bcd390a0c53666051aa4df Mon Sep 17 00:00:00 2001 From: Jordan Krage Date: Fri, 9 Apr 2021 09:35:40 -0500 Subject: [PATCH] upgrade GO; decimal tx rate when < 1; prefer gwei to szabo (#72) * upgrade GO; decimal tx rate when < 1; prefer gwei to szabo * upgrade dockerfile to go 1.16; upgrade lodash * Dockerfile: drop bzr --- Dockerfile | 4 ++-- go.mod | 3 ++- go.sum | 5 ++--- netstats.go | 11 +++++++++-- package-lock.json | 8 ++++---- package.json | 2 +- src/js/filters.js | 18 +++++++++++------- 7 files changed, 31 insertions(+), 20 deletions(-) diff --git a/Dockerfile b/Dockerfile index a5d38d8..e9cb546 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # Build in a stock Go builder container -FROM golang:1.13-alpine as builder +FROM golang:1.16-alpine as builder -RUN apk --no-cache add build-base git bzr mercurial gcc linux-headers npm +RUN apk --no-cache add build-base git mercurial gcc linux-headers npm RUN npm install -g grunt-cli ENV GENESIS_VERSION 0.2.1 diff --git a/go.mod b/go.mod index 0dffeba..927a441 100644 --- a/go.mod +++ b/go.mod @@ -1,11 +1,12 @@ module github.com/gochain-io/netstats -go 1.13 +go 1.16 require ( github.com/blendle/zapdriver v1.2.1 github.com/google/go-cmp v0.2.0 github.com/gorilla/websocket v1.4.0 + github.com/shopspring/decimal v1.2.0 github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce go.uber.org/multierr v1.2.0 // indirect go.uber.org/zap v1.11.0 diff --git a/go.sum b/go.sum index e2794d0..6bd7537 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,5 @@ github.com/blendle/zapdriver v1.2.1 h1:CwapMXZCok+D9b/FuVF82Mwf4GfxffJIeJKZ1Mhm4Rg= github.com/blendle/zapdriver v1.2.1/go.mod h1:mdXfREi6u5MArG4j9fewC+FGnXaBR+T4Ox4J2u4eHCc= -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= 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= @@ -12,6 +11,8 @@ github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.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/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= +github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= @@ -19,11 +20,9 @@ github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce h1:fb190+cK2Xz/dvi9 github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/multierr v1.1.0 h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.2.0 h1:6I+W7f5VwC5SV9dNrZ3qXrDB9mD0dyGOi/ZJmYw03T4= go.uber.org/multierr v1.2.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/zap v1.10.0 h1:ORx85nbTijNz8ljznvCMR1ZBIPKFn3jQrag10X2AsuM= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.11.0 h1:gSmpCfs+R47a4yQPAI4xJ0IPDLTRGXskm6UelqNXpqE= go.uber.org/zap v1.11.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= diff --git a/netstats.go b/netstats.go index 9565b5f..5b9a297 100644 --- a/netstats.go +++ b/netstats.go @@ -8,6 +8,7 @@ import ( "sort" "strconv" + "github.com/shopspring/decimal" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) @@ -574,7 +575,13 @@ func (bc *Blockchain) Chart() *Chart { chart.Miners = bc.MinersCount() chart.Propagation = bc.BlockPropagation() if len(bc.blocks) > 0 && sumTime >= 1000 { - chart.AvgTransactionRate = transactionCount / (int(sumTime) / 1000) + avgTransactionRate := decimal.NewFromInt(int64(transactionCount)). + Div(decimal.New(sumTime, -3)) + if avgTransactionRate.LessThan(decimal.NewFromInt(1)) { + chart.AvgTransactionRate = json.Number(avgTransactionRate.StringFixed(2)) + } else { + chart.AvgTransactionRate = json.Number(avgTransactionRate.StringFixed(0)) + } chart.AvgHashRate = (bc.blocks[len(bc.blocks)-1].Difficulty / (int(sumTime) / len(bc.blocks)) / 1000) } @@ -633,7 +640,7 @@ type Chart struct { Miners []*ChartMiner `json:"miners"` UncleCount []int `json:"uncleCount"` AvgHashRate int `json:"avgHashrate"` - AvgTransactionRate int `json:"avgTransactionRate"` + AvgTransactionRate json.Number `json:"avgTransactionRate"` Propagation *BlockPropagationStats `json:"propagation"` } diff --git a/package-lock.json b/package-lock.json index 220c6c0..9ba1258 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "gochain-netstats", - "version": "0.0.48", + "version": "0.0.53", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1338,9 +1338,9 @@ } }, "lodash": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.13.tgz", - "integrity": "sha512-vm3/XWXfWtRua0FkUyEHBZy8kCPjErNBT9fJx8Zvs+U6zjqPbTUOpkaoum3O5uiA8sm+yNMHXfYkTUHFoMxFNA==" + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" }, "longest": { "version": "1.0.1", diff --git a/package.json b/package.json index 8eb7de8..56748e4 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "grunt-contrib-jade": "^0.14.1", "grunt-contrib-uglify": "^0.9.1", "jade": "1.11.0", - "lodash": "4.17.13", + "lodash": "4.17.19", "primus": "^6.0.5", "primus-emit": "^1.0.0", "primus-spark-latency": "^0.1.1", diff --git a/src/js/filters.js b/src/js/filters.js index f2db456..8366248 100644 --- a/src/js/filters.js +++ b/src/js/filters.js @@ -75,7 +75,8 @@ angular.module('netStatsApp.filters', []) return numberFilter(price/1000000000) + " gwei"; if(price.length < 16) - return numberFilter(price/1000000000000) + " szabo"; + return numberFilter(price/1000000000) + " gwei"; // prefer > 1000 gwei over szabo + // return numberFilter(price/1000000000000) + " szabo"; if(price.length < 19) return numberFilter(price.substr(0, price.length - 15)) + " finney"; @@ -232,21 +233,24 @@ angular.module('netStatsApp.filters', []) if (rate === null) rate = 0; - var result = 0; + var result = '0'; var unit = ''; - if (rate < 10000) { - result = rate; + if (rate < 1) { + result = rate.toFixed(2); + unit = ''; + } else if (rate < 10000) { + result = rate.toFixed(0); unit = ''; } else if (rate < Math.pow(1000, 2)) { - result = rate / 1000; + result = (rate / 1000).toFixed(0); unit = 'K'; } else if (rate >= Math.pow(1000, 2)) { // keeping the condition to cover the zero case - result = rate / Math.pow(1000, 2); + result = (rate / Math.pow(1000, 2)).toFixed(0); unit = 'M'; } - return $sce.trustAsHtml(filter('number')(result.toFixed(0)) + ' ' + unit + 'tx/s'); + return $sce.trustAsHtml(filter('number')(result) + ' ' + unit + 'tx/s'); }; }]) .filter('latencyCellFilter', function() {