Mining di criptovalute sul tuo sito personale

Negli ultimi mesi si sente sempre più parlare di criptovalute e dei possibili alti guadagni che si possono raggiungere. Per entrare in possesso di criptovaluta ci sono due possibili soluzioni: acquistarla pagandola con soldi veri oppure attraverso il mining.

Dal punto di vista tecnico il processo di mining non è altro che un’operazione di hashing inverso: determinare un numero (nonce) tale per cui l’hash SHA-256 di un insieme di dati rappresentante il blocco sia inferiore a una soglia data. Questa soglia, chiamata difficoltà, è ciò che determina la natura concorrenziale del mining di criptovaluta: più potenza di calcolo viene aggiunta alla rete bitcoin e più questo parametro aumenta, aumentando di conseguenza il numero di calcoli mediamente necessari a creare un nuovo blocco e aumentando quindi il costo di creazione dello stesso, spingendo i nodi a migliorare l’efficienza dei loro sistemi di mining per mantenere un bilancio economico positivo. [fonte: Wikipedia]

Per diventare un miner è sufficiente un computer collegato ad internet, tuttavia, affinchè il mining sia efficiente, è praticamente obbligatorio utilizzare hardware dedicato. Questa strada richiede un costo iniziale di qualche migliaio di Euro per acquistare una macchina dedicata e successivamente una spesa continuativa per il consumo di energia elettrica.

Negli ultimi anni l’hashrate è aumentato esponenzialmente cosa che rende sempre piú difficile risolvere i blocchi come persona singola, rendendo così estremamente difficile ricevere il pagamento del premio, per compensare tutte queste difficoltà sono state create le Mining Pool.
Una mining pool è un insieme di persone che minano mettendo assieme le loro forze per aumentare la loro percentuale di hashrate. Così facendo la probabilità di trovare un blocco cresce in positivo a causa dell’alto livello di hashrate usato per processare un blocco piú velocemente.

Javascript Mining

In questo articolo voglio mostrare una alternativa che vi consentirà di minare utilizzando il vostro sito web personale.

Coinhive offre una libreria JavaScript per minare la criptovaluta Monero, quindi gli utenti mentre visitano il vostro sito eseguiranno in maniera trasparente il mining all’interno del browser, questo vi permetterà, ad esempio, di guadagnare anche senza ospitare dei fastidiosi banner pubblicitari.

Il funzionamento è estremamente semplice: dopo essersi registrati ed aver ottenuto la chiave pubblica e privata è sufficiente inserire il seguente codice all’interno delle pagine del vostro sito:

<script src="https://coin-hive.com/lib/coinhive.min.js"></script>

<script>
	var miner = new CoinHive.Anonymous('<site-key>');
	miner.start();
</script>

ed il gioco è fatto!

Un’altra utilissima possibilità offerta è quella di sostituire il codice CAPTCHA dei vostri form con uno che calcola gli hash:

anche in questo caso il codice è semplice:

Pagina HTML

<form action="?" method="post">
	<!-- other form fields -->

	<script src="https://coin-hive.com/lib/captcha.min.js" async></script>
	<script>
		function myCaptchaCallback(token) {
			alert('Hashes reached. Token is: ' + token);
		}
	</script>
	<div class="coinhive-captcha" 
		data-hashes="1024" 
		data-key="SITE-KEY"
		data-autostart="false"
		data-disable-elements="input[type=submit]"
		data-callback="myCaptchaCallback"
	></div>

	<!-- submit button will be automatically disabled and later enabled
		again when the captcha is solved -->
	<input type="submit" value="Submit"/>
</form>

Codice PHP per la validazione

$post_data = [
	'secret' => "SECRET-KEY", // <- Your secret key
	'token' => $_POST['coinhive-captcha-token'],
	'hashes' => 1024
];

$post_context = stream_context_create([
	'http' => [
		'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
		'method'  => 'POST',
		'content' => http_build_query($post_data)
	]
]);

$url = 'https://api.coin-hive.com/token/verify';
$response = json_decode(file_get_contents($url, false, $post_context));

if ($response && $response->success) {
	// All good. Token verified!
}

Link

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *