View difference between Paste ID: VznwerG8 and riKN04X8
SHOW: | | - or go back to the newest paste.
1
#!/bin/bash 
2
# Ethermine.org stats and power cost calculations script
3
#
4
# v0.1 	proof of concept
5
# v0.2 	adds time to next Ether calculation with human-friendly timeframe and datestamps
6
#      	adds number padding to prettify output and permit later addition of multiple currencies
7
#      	reordered output for aesthetic reasons; tabbed data first
8
#	adds separate padding function for fiat currencies; work to two decimal places
9
# v0.3	brings energy cost calcs into a function, avoids dependence on a separate script
10
#	- despite the variable names, this supports any input currency known to fixer.io
11
#	- simplified function to avoid needing external commands to extract data from it
12
#	- adds power reporting in kWh, not just USD power cost
13
# v0.4	improves multi-currency support
14
#	- fetch a currency conversion rate for power costs only if currency != USD
15
#	- fetch currency conversion data once per script run, not recursively within functions
16
#	- add functions to return a conversion from USD to local currency and vice versa
17
#	- add conversion of gross returns to local currency in which power cost is given
18
#	- show the conversion rate from local to USD alongside
19
#	- add reporting of power costs in local currency before USD conversion
20
#	- add conversion of net returns to local currency
21
#	- tested with USD, GBP, CAD, AUD, EUR, others probably work
22
# v0.5	improves relevance of output in light of multi-currency support
23
#	- suppress redundant output where currency = USD, use local currency when relevant
24
#	- show currency conversion workings alongside returns in local currency
25
#	- suppress redundant output where currency != USD and workings shown alongside
26
#	- suppress 4 lines of output for power costs in non-local currency
27
#	- suppress 4 lines of output for power costs in kWh; workings alongside fiat costs
28
#	- process work data from last 100 rounds for average hashrate
29
#	- tidy up the output
30
# v0.6	- if we have a /tmp/wattage file, let it override the command line variable. This
31
# 	allows us to vary the specified wattage on the fly once the script is running e.g.
32
#	when running in screen, basically to set wattage in line with variable rig usage
33
#	or clock speeds.
34
#	- add calculation for watts per MH/s
35
#	- add more explanatory notes as to data sources; add long padding function
36
# v0.7	Fixed average hash rate to use the 24h average from the pool rather than data from
37
#	the last 100 rounds. Oops. Tidied up formatting a bit, prettified. Still no worker
38
#	data as yet; this is pitched at global statistics so far.
39
#	- suppress redundant currency conversions in power costs
40
#	- add net estimate calculations for ETH and BTC values alongside gross estimates
41
# v0.8	Adds support for output equivalents in altcoin using the ShapeShift HTTP API. The
42
#	initial implementation adds an ETH-DASH conversion for comparison with X11 mining. 
43
#	- change description to "exchange" where a third-party exchange rate is involved
44
#	- add exchange rate for BTC from Shapeshift.io; see how far it deviates from pool
45
#	- add exchange rate for XMR from Shapeshift.io, because we can
46
#	- support addresses with or without a leading 0x
47
#	- add some help text, trigger it on improper or inadequate input
48
#	- removed surplus blank lines
49
version="0.8";
50
watts=$2;
51
[ -r /tmp/wattage ] && watts=`cat /tmp/wattage`;
52
function help {
53
 echo "";
54
 echo "Usage: ./ethermine_stats <address> <total_wattage> <cost_per_kwh> <currency_code>";
55
 echo "";
56
 echo "where";
57
 echo "";
58
 echo "<address>		your miner address as used at the pool";
59
 echo "<total_wattage>		power consumption in watts of the mining rigs on this address";
60
 echo "<cost_per_kwh>		as a decimal price per kWh, such as 0.10629 or whatever";
61
 echo "<currency_code>		your local currency: USD, GBP, EUR, CAD, AUD etc.";
62
 echo "";
63
 echo "You can use expressions for cost_per_kWh, such as 0.10629*1.05*0.98, if for instance";
64
 echo "you have a base cost per kWh on which you pay 5% VAT but get 2% cashback on the total";
65
 echo "amount (as happens to apply to the author). Examples:";
66
 echo ""
67
 echo "./ethermine_stats 0xc91B3f6a889a9963c7eaE2d5BD5Ca88a6Ae2d2EA 506 0.10629*1.05*0.98 GBP"
68
 echo "";
69
 echo "./ethermine_stats 0xc91B3f6a889a9963c7eaE2d5BD5Ca88a6Ae2d2EA 500 0.12 USD"
70
 echo "";
71
 echo "./ethermine_stats 0xc91B3f6a889a9963c7eaE2d5BD5Ca88a6Ae2d2EA 500 0.14 EUR"
72
 echo "";
73
 echo "The intention is that this script will typically be run at regular intervals, such as";
74
 echo "with 'watch -n60 ./ethermine_stats [args]' and that it should remain compatible with";
75
 echo "such use as part of a 'screen' session running ethminer and a host of other scripts.";
76
 echo ""
77
 echo "For the same reason, output is sized to fit in one page of a 140-character (or more)"
78
 echo "terminal window. More functionality is planned, including per-worker statistics, use"
79
 echo "of payouts data and potentially interfaces to other third-party services, but these"
80
 echo "will most likely be implemented as separate functions to the main statistics page."
81
}
82
function lineohash {
83
for ((i=0;i<139;i++)); do echo -n "#"; done; echo "#";
84
}
85
function lineodash {
86
for ((i=0;i<139;i++)); do echo -n "-"; done; echo "-";
87
}
88
lineodash
89
echo "ethermine.org pool, power and profitability statistics for Linux, version $version (`date`)"
90
lineodash
91
[[ "$4" == "" ]] && help && exit 0;
92
[[ "$3" == "" ]] && help && exit 0;
93
[[ "$2" == "" ]] && help && exit 0;
94
[[ "$1" == "" ]] && help && exit 0;
95
function energycosts {
96
	WATTS=$1
97
	PERKWH=$2
98
	CUR=$3
99
	VAR=$4
100
	GBPKWH="`bc <<< "scale=6; x=$PERKWH; if(x<1) print 0; x"`";
101
	[[ "$CUR" == "USD" ]] && GBPTOUSD="1.0" || GBPTOUSD=$(loc2usd 1);
102
	USDKWH="`bc <<< "scale=6; x=$PERKWH*$GBPTOUSD; if(x<1) print 0; x"`";
103
	KWHDAY="`/usr/bin/bc <<< "scale=3; x=$WATTS*24/1000; if(x<1) print 0; x"`";
104
	USDDAY="`/usr/bin/bc <<< "scale=2; x=$KWHDAY*$USDKWH/1; if(x<1) print 0; x"`";
105
	GBPDAY="`/usr/bin/bc <<< "scale=2; x=$KWHDAY*$GBPKWH/1; if(x<1) print 0; x"`";
106
	KWHWEEK="`/usr/bin/bc <<< "scale=3; x=$WATTS*24*7/1000; if(x<1) print 0; x"`";
107
	USDWEEK="`/usr/bin/bc <<< "scale=2; x=$KWHDAY*$USDKWH*7/1; if(x<1) print 0; x"`";
108
	GBPWEEK="`/usr/bin/bc <<< "scale=2; x=$KWHDAY*$GBPKWH*7/1; if(x<1) print 0; x"`";
109
	KWHYEAR="`/usr/bin/bc <<< "scale=3; x=$KWHDAY*365.25; if(x<1) print 0; x"`";
110
	USDYEAR="`/usr/bin/bc <<< "scale=2; x=$USDDAY*365.25; if(x<1) print 0; x"`";
111
	GBPYEAR="`/usr/bin/bc <<< "scale=2; x=$GBPDAY*365.25; if(x<1) print 0; x"`";
112
	KWHMO="`/usr/bin/bc <<< "scale=3; x=$KWHYEAR/12; if(x<1) print 0; x"`";
113
	USDMO="`/usr/bin/bc <<< "scale=2; x=$USDYEAR/12; if(x<1) print 0; x"`";
114
	GBPMO="`/usr/bin/bc <<< "scale=2; x=$GBPYEAR/12; if(x<1) print 0; x"`";
115
case "$5" in
116
	"$CUR")
117
	[[ "$4" == "day" ]] && echo $GBPDAY;
118
	[[ "$4" == "week" ]] && echo $GBPWEEK;
119
	[[ "$4" == "month" ]] && echo $GBPMO;
120
	[[ "$4" == "year" ]] && echo $GBPYEAR;
121
	;;
122
	"kWh")
123
	[[ "$4" == "day" ]] && echo $KWHDAY;
124
	[[ "$4" == "week" ]] && echo $KWHWEEK;
125
	[[ "$4" == "month" ]] && echo $KWHMO;
126
	[[ "$4" == "year" ]] && echo $KWHYEAR;
127
	;;
128
	*)
129
	[[ "$4" == "day" ]] && echo $USDDAY;
130
	[[ "$4" == "week" ]] && echo $USDWEEK;
131
	[[ "$4" == "month" ]] && echo $USDMO;
132
	[[ "$4" == "year" ]] && echo $USDYEAR;
133
	;;
134
esac
135
}
136
function pad {
137
 	out="`echo $1 | sed -e :a -e 's/^.\{1,13\}$/& /;ta'`";
138
	echo "$out";
139
}
140
function p {
141
 	out="`echo $1 | sed -e :a -e 's/^.\{1,12\}$/& /;ta'`";
142
	echo "$out";
143
}
144
function pl {
145
 	out="`echo $1 | sed -e :a -e 's/^.\{1,27\}$/& /;ta'`";
146
	echo "$out";
147
}
148
function padf {
149
	#Version for fiat currency, work to two decimal places
150
 	out="`printf %.2f $(echo $1 | bc -l) | sed -e :a -e 's/^.\{1,13\}$/& /;ta'`";
151
	echo "$out";
152
}
153
function truncf {
154
	#Version for fiat currency, work to two decimal places
155
 	out="`printf %.2f $(echo $1 | bc -l)`";
156
	echo "$out";
157
}
158
case $4 in
159
	"USD")
160
	LOC2USD=1;
161
	USD2LOC=1;
162
	;;
163
	*)
164
	LOC2USD=`wget -q -O- "http://api.fixer.io/latest?base=$4&symbols=USD" | jq .rates.USD`
165
	USD2LOC=`wget -q -O- "http://api.fixer.io/latest?base=USD&symbols=$4" | jq .rates.$4`
166
	;;
167
esac
168
function loc2usd {
169
	usd=`bc <<< "scale=8; x=$1*$LOC2USD; if(x<1) print 0; x"`;
170
	echo $usd;
171
}
172
function usd2loc {
173
	loc=`bc <<< "scale=8; x=$1*$USD2LOC; if(x<1) print 0; x"`;
174
	echo $loc;
175
}
176
ETH2DASH=`wget -q -O- https://shapeshift.io/marketinfo/eth_dash | jq .rate`;
177
ETH2BTC=`wget -q -O- https://shapeshift.io/marketinfo/eth_btc | jq .rate`;
178
ETH2XMR=`wget -q -O- https://shapeshift.io/marketinfo/eth_xmr | jq .rate`;
179
function eth2alt {
180
	amount=$1;
181
	dest=$2;
182
	[[ "$dest" == "DASH" ]] && rate="$ETH2DASH";
183
	[[ "$dest" == "BTC" ]] && rate="$ETH2BTC";
184
	[[ "$dest" == "XMR" ]] && rate="$ETH2XMR";
185
	alt=`bc <<< "scale=8; x=$amount*$rate; if(x<1) print 0; x"`;
186
	echo $alt;
187
}
188
address="`echo $1 | sed -e 's/0x//g'`";
189
w=$2
190
perkwh=`bc <<< "scale=8; x=$3; if(x<1) print 0; x"`
191
cur=$4
192
json="`wget -q -O - http://ethermine.org/api/miner_new/$address`";
193
hashrate=`echo "$json" | jq .hashRate | sed -e s/\"//g | awk {'print $1'}`;
194
hashrate0=$(bc <<< "scale=2; x=$hashrate; x");
195
avghashrate=`echo "$json" | jq .avgHashrate | sed -e s/\"//g | awk {'print $1'}`;
196
avghashrate0=$(bc <<< "scale=1; x=$avghashrate/1000000; x");
197
padhashrate=$(pad $hashrate);
198
#workdata="`echo "$json" | jq .rounds | grep work | egrep -o [0-9]+`"
199
#x=0;
200
##echo "$workdata" | while read v; do x=$(($x + $v)); done;
201
#for v in `echo $workdata`; do x=$(($x + $v)); done;
202
#avghash=`bc <<< "scale=1; x=$x/100; x"`;
203
epm=`echo "$json" | jq .ethPerMin`; 
204
bpm=`echo "$json" | jq .btcPerMin`; 
205
upm=`echo "$json" | jq .usdPerMin`; 
206
bpm=`echo "${bpm}" | sed -e 's/[eE]+*/\\*10\\^/'`
207
unpaidf=`echo "$json" | jq .unpaid`; 
208
unpaid=$(pad `bc <<< "scale=8; x=$unpaidf/1000000000000000000; if(x<1) print 0; x"`);
209
tomine=`bc <<< "scale=8; x=1-$unpaid; if(x<1) print 0; x"`;
210
minstomine=`bc <<< "scale=0; x=$tomine/$epm; if(x<1) print 0; x"`;
211
hourstomine=`bc <<< "scale=0; x=$minstomine/60; if(x<1) print 0; x"`;
212
daystomine=`bc <<< "scale=0; x=$minstomine/60/24; x"`;
213
timeframe="";
214
[[ "$daystomine" -gt "0" ]] && timeframe="$daystomine days";
215
[[ "$daystomine" -eq "0" ]] && [[ "$hourstomine" -gt "0" ]] && timeframe="$hourstomine hours";
216
[[ "$daystomine" -eq "0" ]] && [[ "$hourstomine" -eq "0" ]] && timeframe="$minstomin minutes.";
217
[[ "$daystomine" -gt 0 ]] && remainderhours="`bc <<< "scale=0; x=$hourstomine-($daystomine*24); x"`" && timeframe="$timeframe, $remainderhours hours";
218
[[ "$hourstomine" -gt 0 ]] && remainder="`bc <<< "scale=0; x=$minstomine-($hourstomine*60); x"`" && timeframe="$timeframe, $remainder minutes";
219
timestampnow="`date +%s`";
220
timestampnext="`bc <<< "scale=0; x=$timestampnow+($minstomine*60); x"`";
221
timestamp="`date -d "@$timestampnext"`";
222
eph=`bc <<< "scale=2; x=$epm*60/1; if(x<1) print 0; x"`;
223
epd=`bc <<< "scale=8; x=$epm*60*24/1; if(x<1) print 0; x"`;
224
epw=`bc <<< "scale=8; x=$epm*60*24*7/1; if(x<1) print 0; x"`;
225
epy=`bc <<< "scale=8; x=$epm*60*24*365.25/1; if(x<1) print 0; x"`;
226
epmo=`bc <<< "scale=8; x=$epy/12; if(x<1) print 0; x"`;
227
uph=`bc <<< "scale=2; x=$upm*60/1; if(x<1) print 0; x"`;
228
upd=`bc <<< "scale=8; x=$upm*60*24/1; if(x<1) print 0; x"`;
229
upw=`bc <<< "scale=8; x=$upm*60*24*7/1; if(x<1) print 0; x"`;
230
upy=`bc <<< "scale=8; x=$upm*60*24*365.25/1; if(x<1) print 0; x"`;
231
upmo=`bc <<< "scale=8; x=$upy/12; if(x<1) print 0; x"`;
232
bph=`bc <<< "scale=2; x=$bpm*60/1; if(x<1) print 0; x"`;
233
bpd=`bc <<< "scale=8; x=$bpm*60*24/1; if(x<1) print 0; x"`;
234
bpw=`bc <<< "scale=8; x=$bpm*60*24*7/1; if(x<1) print 0; x"`;
235
bpy=`bc <<< "scale=8; x=$bpm*60*24*365.25/1; if(x<1) print 0; x"`;
236
bpmo=`bc <<< "scale=8; x=$bpy/12; if(x<1) print 0; x"`;
237
cpd=$(energycosts "$watts" "$3" "$4" "day")
238
cpw=$(energycosts "$watts" "$3" "$4" "week")
239
cpm=$(energycosts "$watts" "$3" "$4" "month")
240
cpy=$(energycosts "$watts" "$3" "$4" "year")
241
lcpd=$(energycosts "$watts" "$3" "$4" "day" "$4")
242
lcpw=$(energycosts "$watts" "$3" "$4" "week" "$4")
243
lcpm=$(energycosts "$watts" "$3" "$4" "month" "$4")
244
lcpy=$(energycosts "$watts" "$3" "$4" "year" "$4")
245
wpd=$(energycosts "$watts" "$3" "$4" "day" "kWh")
246
wpw=$(energycosts "$watts" "$3" "$4" "week" "kWh")
247
wpm=$(energycosts "$watts" "$3" "$4" "month" "kWh")
248
wpy=$(energycosts "$watts" "$3" "$4" "year" "kWh")
249
pct=$(truncf `bc <<< "scale=5; x=(($cpy/$upy)*100); x"`);
250
keep=$(truncf `bc <<< "scale=5; x=(100-$pct); x"`);
251
wpmhs=$(truncf `bc <<< "scale=5; x=($watts/$avghashrate0); x"`);
252
nepd=`bc <<< "scale=8; x=$epd*($keep/100); if(x<1) print 0; x"`;
253
nepw=`bc <<< "scale=8; x=$epw*($keep/100); if(x<1) print 0; x"`;
254
nepy=`bc <<< "scale=8; x=$epy*($keep/100); if(x<1) print 0; x"`;
255
nepmo=`bc <<< "scale=8; x=$epmo*($keep/100); if(x<1) print 0; x"`;
256
nbpd=`bc <<< "scale=8; x=$bpd*($keep/100); if(x<1) print 0; x"`;
257
nbpw=`bc <<< "scale=8; x=$bpw*($keep/100); if(x<1) print 0; x"`;
258
nbpy=`bc <<< "scale=8; x=$bpy*($keep/100); if(x<1) print 0; x"`;
259
nbpmo=`bc <<< "scale=8; x=$bpmo*($keep/100); if(x<1) print 0; x"`;
260
lineodash
261
echo "Hash rate and power consumption"
262
lineodash
263
echo ""
264
echo "Hashrate:        $(pad $avghashrate0) $(p MH/sec) (average hash rate over the last 24 hours)"
265
echo "                 $(pad $hashrate0) $(p MH/sec) (current hash rate over the last few minutes)"
266
echo ""
267
echo "Electricity:     $(pl "$watts watts continuous load")"
268
echo "                 $(pl "$wpmhs watts per MH/sec")"
269
echo "                 $(pl "Power costs $pct% of output") (calculated from USD power cost as percentage of USD returns)"
270
echo ""
271
echo "Unpaid:          $(pad $unpaid) $(p ETH) (amount accumulated at the pool towards next payout)";
272
echo ""
273
echo "Next Ether in:   $(pl "$timeframe") (estimate: $timestamp)";
274
#echo "           at:   $timestamp";
275
echo ""
276
lineodash
277
echo "Estimated rewards"
278
lineodash
279
echo ""
280
echo "Output (ETH):    $(pad $epd) $(p ETH/day) (net: $nepd ETH/day after power cost)"
281
echo "                 $(pad $epw) $(p ETH/week) (net: $nepw ETH/week)"
282
echo "                 $(pad $epmo) $(p ETH/month) (net: $nepmo ETH/month)"
283
echo "                 $(pad $epy) $(p ETH/year) (net: $nepy ETH/year)"
284
echo "Output (BTC):    $(pad $bpd) $(p BTC/day) (net: $nbpd BTC/day)"
285
echo "                 $(pad $bpw) $(p BTC/week) (net: $nbpw BTC/week)"
286
echo "                 $(pad $bpmo) $(p BTC/month) (net: $nbpmo BTC/month)"
287
echo "                 $(pad $bpy) $(p BTC/year) (net: $nbpy BTC/year)"
288
echo "Exchange (DASH): $(pad $(eth2alt $epd DASH)) $(p DASH/day) (net: $(eth2alt $nepd DASH) DASH/day @ $ETH2DASH DASH/ETH; exchange rate: shapeshift.io)"
289
echo "                 $(pad $(eth2alt $epw DASH)) $(p DASH/week) (net: $(eth2alt $nepw DASH) DASH/week)"
290
echo "                 $(pad $(eth2alt $epmo DASH)) $(p DASH/month) (net: $(eth2alt $nepmo DASH) DASH/month)"
291
echo "                 $(pad $(eth2alt $epy DASH)) $(p DASH/year) (net: $(eth2alt $nepy DASH) DASH/year)"
292
echo "Exchange (XMR):  $(pad $(eth2alt $epd XMR)) $(p XMR/day) (net: $(eth2alt $nepd XMR) XMR/day @ $ETH2XMR XMR/ETH; exchange rate: shapeshift.io)"
293
echo "                 $(pad $(eth2alt $epw XMR)) $(p XMR/week) (net: $(eth2alt $nepw XMR) XMR/week)"
294
echo "                 $(pad $(eth2alt $epmo XMR)) $(p XMR/month) (net: $(eth2alt $nepmo XMR) XMR/month)"
295
echo "                 $(pad $(eth2alt $epy XMR)) $(p XMR/year) (net: $(eth2alt $nepy XMR) XMR/year)"
296
echo "Exchange (BTC):  $(pad $(eth2alt $epd BTC)) $(p BTC/day) (net: $(eth2alt $nepd BTC) BTC/day @ $ETH2BTC BTC/ETH; exchange rate: shapeshift.io)"
297
echo "                 $(pad $(eth2alt $epw BTC)) $(p BTC/week) (net: $(eth2alt $nepw BTC) BTC/week)"
298
echo "                 $(pad $(eth2alt $epmo BTC)) $(p BTC/month) (net: $(eth2alt $nepmo BTC) BTC/month)"
299
echo "                 $(pad $(eth2alt $epy BTC)) $(p BTC/year) (net: $(eth2alt $nepy BTC) BTC/year)"
300
case $4 in
301
	"USD")
302
echo "Output (USD):    $(padf $upd) $(p USD/day) (estimated from current performance, with data & exchange rates supplied by the pool)"
303
echo "                 $(padf $upw) USD/week"
304
echo "                 $(padf $upmo) USD/month"
305
echo "                 $(padf $upy) USD/year"
306
	;;
307
	*)
308
echo "Exchange ($4):  $(padf $(usd2loc $upd)) $(p $4/day) (converted from $(truncf "scale=2; $upd"|bc) USD @ $(usd2loc 1) USD/$4; exchange rate: fixer.io)"
309
echo "                 $(padf $(usd2loc $upw)) $(p $4/week) (converted from $(truncf "scale=2; $upw"|bc) USD @ $(usd2loc 1) USD/$4)"
310
echo "                 $(padf $(usd2loc $upmo)) $(p $4/month) (converted from $(truncf "scale=2; $upmo"|bc) USD @ $(usd2loc 1) USD/$4)"
311
echo "                 $(padf $(usd2loc $upy)) $(p $4/year) (converted from $(truncf "scale=2; $upy"|bc) USD @ $(usd2loc 1) USD/$4)"
312
	;;
313
esac
314
#echo "Power (kWh):     $(padf $wpd) kWh/day"
315
#echo "                 $(padf $wpw) kWh/week"
316
#echo "                 $(padf $wpm) kWh/month"
317
#echo "                 $(padf $wpy) kWh/year"
318
case $4 in
319
	"USD")
320
echo "Power (USD):     $(padf $cpd) $(p USD/day) ($wpd kWh/day @ $perkwh $4/kWh)"
321
echo "                 $(padf $cpw) $(p USD/week) ($wpw kWh/week @ $perkwh $4/kWh)"
322
echo "                 $(padf $cpm) $(p USD/month) ($wpm kWh/month @ $perkwh $4/kWh)"
323
echo "                 $(padf $cpy) $(p USD/year) ($wpy kWh/year @ $perkwh $4/kWh)"
324
	;;
325
	*)
326
echo "Power ($4):     $(padf $lcpd) $(p $4/day) ($wpd kWh/day @ $perkwh$4/kWh = $cpd USD/day @ $(loc2usd 1) $4/USD = $(loc2usd $perkwh) USD/kWh)"
327
echo "                 $(padf $lcpw) $(p $4/week) ($wpw kWh/week @ $perkwh$4/kWh = $cpw USD/week"
328
echo "                 $(padf $lcpm) $(p $4/month) ($wpm kWh/month @ $perkwh$4/kWh = $cpm USD/month"
329
echo "                 $(padf $lcpy) $(p $4/year) ($wpy kWh/year @ $perkwh$4/kWh = $cpy USD/year"
330
	;;
331
esac
332
lineodash
333
case $4 in
334
	"USD")
335
	echo "Net (USD):       $(padf `echo "scale=2; $upd-$cpd"|bc`) USD/day";
336
	echo "                 $(padf `echo "scale=2; $upw-$cpw"|bc`) USD/week";
337
	echo "                 $(padf `echo "scale=2; $upmo-$cpm"|bc`) USD/month";
338
	echo "                 $(padf `echo "scale=2; $upy-$cpy"|bc`) USD/year";
339
	;;
340
	*)
341
	echo "Net ($4):       $(padf `echo "scale=2; ($upd-$cpd)*$USD2LOC"|bc`) $(p $4/day) (converted from $(truncf "scale=2; $upd-$cpd"|bc) USD @ $(usd2loc 1) USD/$4; exchange rate: fixer.io)";
342
	echo "                 $(padf `echo "scale=2; ($upw-$cpw)*$USD2LOC"|bc`) $(p $4/week) (converted from $(truncf "scale=2; $upw-$cpw"|bc) USD @ $(usd2loc 1) USD/$4)";
343
	echo "                 $(padf `echo "scale=2; ($upmo-$cpm)*$USD2LOC"|bc`) $(p $4/month) (converted from $(truncf "scale=2; $upmo-$cpm"|bc) USD @ $(usd2loc 1) USD/$4)";
344
	echo "                 $(padf `echo "scale=2; ($upy-$cpy)*$USD2LOC"|bc`) $(p $4/year) (converted from $(truncf "scale=2; $upy-$cpy"|bc) USD @ $(usd2loc 1) USD/$4)";
345
	;;
346
esac
347
lineodash
348
echo ""
349
echo "Useful? Feel free to leave me a tip. ETH: 0x58f7F4d641dc32A4a1349aad866F132C6794659e / BTC: 155D6ZLLUezX6c8k6CXTUgF55qDP1P2Uz4 - Thanks!"