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() {