openclerk/mining-pools
A library for accessing live balances and hashrate data for accounts on many different mining pools,
used by Openclerk and live on CryptFolio., (*1)
This extends on the abstract currency definitions provided by
openclerk/currencies
and the abstract account definitions provided by
openclerk/accounts., (*2)
Installing
Include openclerk/mining-pools as a requirement in your project composer.json,
and run composer update to install it into your project:, (*3)
{
"require": {
"openclerk/mining-pools": "dev-master"
}
}
Using
First, define a way to load Currency instances from three-character codes, according to openclerk/currencies:, (*4)
use \DiscoveredComponents\Currencies;
use \Openclerk\Currencies\Currency;
use \Openclerk\Currencies\CurrencyFactory;
class DiscoveredCurrencyFactory implements CurrencyFactory {
/**
* @return a {@link Currency} for the given currency code, or {@code null}
* if none could be found
*/
public function loadCurrency($cur) {
if (Currencies::hasKey($cur)) {
return Currencies::getInstance($cur);
}
return null;
}
}
Get the currencies supported by a mining pool:, (*5)
use \Monolog\Logger;
$logger = new Logger("log");
$factory = new DiscoveredCurrencyFactory();
$instance = new Account\MiningPool\Slush();
print_r($instance->fetchSupportedCurrencies($factory, $logger));
// returns ['btc', 'nmc']
Get the current balances (confirmed, unconfirmed, estimated) and hashrates for a mining pool account:, (*6)
use \Monolog\Logger;
$logger = new Logger("log");
$factory = new DiscoveredCurrencyFactory();
$instance = new Account\MiningPool\Slush();
$account = array(
'api_token' => '270245-e26365e4ca8f97ddde8c76a23ec18758',
);
$balances = $instance->fetchBalances($account, $factory, $logger);
echo $balances['btc']['confirmed']; // in BTC
echo $balances['btc']['unconfirmed'];
echo $balances['btc']['estimated'];
echo $balances['btc']['hashrate']; // in MH/s
echo $balances['nmc']['confirmed']; // in NMC
echo $balances['nmc']['unconfirmed'];
echo $balances['nmc']['estimated'];
echo $balances['nmc']['hashrate']; // in MH/s
Tests
Each mining pool comes with a suite of tests to check each associated service., (*7)
composer install
vendor/bin/phpunit
To run the tests for a single mining pool:, (*8)
vendor/bin/phpunit --bootstrap "vendor/autoload.php" test/SlushTest
To get debug output for the tests (such as CURL requests and decoded output),
add the --debug switch to your vendor/bin/phpunit command., (*9)
Donate
Donations are appreciated., (*10)
Contributing
Pull requests that contribute new mining pools are welcome., (*11)
Make sure that you also provide an associated Test suite so that the mining pool is automatically testable., (*12)
TODO
- Generate README list of mining pools automatically
- Link to live APIs on CryptFolio
- CI build server and link to test results