2 people like it.
    Like the snippet!
  
  Bitcoin mining profitability calculation
  Calculates profitability of a Bitcoin mining operation today (February 25, 2017) using current difficult level, Bitcoin price and a state of the art Bitcoin miner.
  |  1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
 | // Bitcoin mining profitability calculation
// Units of measure
[<Measure>] type USD
[<Measure>] type BTC
[<Measure>] type sec
[<Measure>] type hour
[<Measure>] type H
[<Measure>] type GH
[<Measure>] type Watt
[<Measure>] type KW
// Unit conversions
let hashesPerGH : float<H/GH> = 1000000000.0<H/GH>
let secondsPerHour : float<sec/hour> = 3600.0<sec/hour>
let wattsperKilowatt = 1000.0<Watt/KW>
// Specification of S9 Antminer
let unit_hash_power  = 13000.0<GH/sec> 
let unit_consumption = 1375.0<Watt>
let unit_cost = 
   2100.0<USD> // miner cost
  + 200.0<USD> // psu cost
let hash_rate =  unit_hash_power * hashesPerGH
// Difficulty is recalculated every 2016 blocks (~ 14 days)
let difficulty = 440779902287.0<H> 
// Block time solo mining
let block_time : float<hour> = difficulty * (2.0 ** 32.0) / (hash_rate * secondsPerHour)
// How many miners you need to mine 1 block per day
let number_of_miners = block_time / 24.0<hour>
// Is it profitable ?
let psu_efficiency = 0.97 // 97% 
let electricity_price = 0.12<USD/(KW*hour)>/wattsperKilowatt
let btc_price    = 1157.00<USD/BTC> // Bitcoin price
let block_reward = 12.5<BTC>
let daily_power_consumption = number_of_miners * unit_consumption * 24.0<hour> / psu_efficiency
let daily_electricity_cost = daily_power_consumption * electricity_price
let daily_profit = block_reward*btc_price - daily_electricity_cost
// Hardware cost.
let hardware_cost = unit_cost * number_of_miners
// Asuming it is profitable, daily_profit > 0.0<USD>
let months_to_roi = hardware_cost / (daily_profit * 30.0)
 | 
Multiple items
type MeasureAttribute =
  inherit Attribute
  new : unit -> MeasureAttribute
Full name: Microsoft.FSharp.Core.MeasureAttribute
--------------------
new : unit -> MeasureAttribute
[<Measure>]
type USD
Full name: Script.USD
[<Measure>]
type BTC
Full name: Script.BTC
[<Measure>]
type sec
Full name: Script.sec
[<Measure>]
type hour
Full name: Script.hour
[<Measure>]
type H
Full name: Script.H
[<Measure>]
type GH
Full name: Script.GH
[<Measure>]
type Watt
Full name: Script.Watt
[<Measure>]
type KW
Full name: Script.KW
val hashesPerGH : float<H/GH>
Full name: Script.hashesPerGH
Multiple items
val float : value:'T -> float (requires member op_Explicit)
Full name: Microsoft.FSharp.Core.Operators.float
--------------------
type float = System.Double
Full name: Microsoft.FSharp.Core.float
--------------------
type float<'Measure> = float
Full name: Microsoft.FSharp.Core.float<_>
val secondsPerHour : float<sec/hour>
Full name: Script.secondsPerHour
val wattsperKilowatt : float<Watt/KW>
Full name: Script.wattsperKilowatt
val unit_hash_power : float<GH/sec>
Full name: Script.unit_hash_power
val unit_consumption : float<Watt>
Full name: Script.unit_consumption
val unit_cost : float<USD>
Full name: Script.unit_cost
val hash_rate : float<H/sec>
Full name: Script.hash_rate
val difficulty : float<H>
Full name: Script.difficulty
val block_time : float<hour>
Full name: Script.block_time
val number_of_miners : float
Full name: Script.number_of_miners
val psu_efficiency : float
Full name: Script.psu_efficiency
val electricity_price : float<USD/(Watt hour)>
Full name: Script.electricity_price
val btc_price : float<USD/BTC>
Full name: Script.btc_price
val block_reward : float<BTC>
Full name: Script.block_reward
val daily_power_consumption : float<Watt hour>
Full name: Script.daily_power_consumption
val daily_electricity_cost : float<USD>
Full name: Script.daily_electricity_cost
val daily_profit : float<USD>
Full name: Script.daily_profit
val hardware_cost : float<USD>
Full name: Script.hardware_cost
val months_to_roi : float
Full name: Script.months_to_roi
  
  
  More information