Bitcoin Forum

Local => Hors-sujet => Topic started by: Pioupiou on October 07, 2013, 10:06:50 AM



Title: Petits calculs en Python.
Post by: Pioupiou on October 07, 2013, 10:06:50 AM
Bonjour,

Juste pour le fun et le plaisir de comprendre, je cherche à coder un petit tool en Python qui me permettrait de faire des calculs.

L'objectif est simple mais je ne trouve rien de probant sur le net, ce qui me surprend quand même un peu. Je pense que je ne dois pas utiliser les bons mots clés dans Google.

Je cherche à coder la chose suivante :

A partir d'une difficulté donnée et d'une puissance de calcul, dire combien de Bitcoin je gagne par heure, jour, semaine ect.

Sur le salon #bitcoin-fr (Freenode), on m'a indiqué un lien : http://bitcoin.stackexchange.com/questions/118/how-much-bitcoin-will-i-mine-right-now-with-hardware-x

Mais les formules semblent erronées. Si quelqu'un avait la gentillesse de m'indiquer un chemin vers ou chercher, ce serait sympa :)

En vous remerciant d'avance.


Title: Re: Petit calculs en Python.
Post by: mah87 on October 07, 2013, 10:07:39 AM
http://www.alloscomp.com/bitcoin/calculator


Title: Re: Petit calculs en Python.
Post by: Pioupiou on October 07, 2013, 10:15:23 AM
@Mah87, je te remercie pour ta réponse rapide.

J'ai trouvé ce lien hier et j'ai jeté un oeil à la source qui est donnée. Le code est une véritable plaie, je n'y comprends rien. La sémantique de l'auteur est étrange pour moi. Finalement, j'ai fini par écarter cette source en espérant trouver quelque chose de plus clair, de plus pythonique.


Title: Re: Petit calculs en Python.
Post by: kcud_dab on October 07, 2013, 12:44:03 PM
A priori la formule est celle ci :

Code:
h*t*B/(D*2^32)
h = hashrate, t = time, B = block reward, D = difficulty

Ce qui donnerait par ex pour un erupteur USB en ce moment :
355*10^6*30*24*3600*25/(189*10^6*2^32) = 0.02833881548 BTC / mois

Edit : unité en BTC/mois et non BTC/jour


Title: Re: Petit calculs en Python.
Post by: mah87 on October 07, 2013, 01:51:14 PM
A priori la formule est celle ci :

Code:
h*t*B/(D*2^32)
h = hashrate, t = time, B = block reward, D = difficulty

Ce qui donnerait par ex pour un erupteur USB en ce moment :
355*10^6*30*24*3600*25/(189*10^6*2^32) = 0.02833881548 BTC / jour


Je sais pas comment est fait ton calcul mais je pense qu'il manque un zéro quelque part. Pke à 60Gh ==> 0,15btc/jour
Donc normalement pour un block erupter de 3,5Gh on devrait trouver un résultat plus proche de 0,0085btc/jour.


Title: Re: Petit calculs en Python.
Post by: kcud_dab on October 07, 2013, 02:45:25 PM
hmm, ce n'est pas par jour mais par mois  (30*24*3600)

Donc pour 60 GHz :
60000*10^6*30*24*3600*25/(189*10^6*2^32)
= 4.78965895517 / mois
= 0.1596552985 / jour


Pour 3,5 GHz, ça donne ça :
3500*10^6*30*24*3600*25/(189*10^6*2^32)
= 0.2793967723 / mois
= 0.00931322574 / jour


Title: Re: Petit calculs en Python.
Post by: mah87 on October 07, 2013, 02:47:13 PM
hmm, ce n'est pas par jour mais par mois  (30*24*3600)

Donc pour 60 GHz :
60000*10^6*30*24*3600*25/(189*10^6*2^32)
= 4.78965895517 / mois
= 0.1596552985 / jour


Pour 3,5 GHz, ça donne ça :
3500*10^6*30*24*3600*25/(189*10^6*2^32)
= 0.2793967723 / mois
= 0.00931322574 / jour

yep.


Title: Re: Petit calculs en Python.
Post by: Pioupiou on October 07, 2013, 06:22:24 PM
Merci pour vos explications. J'ai pu réussir. :)

Je mets le snippet Python en dessous, défois que cela servirait à d'autres.

Code:
        data_tmp['second'] = data['powerinhs']*a.get_blockreward()/(data['diff']*2**32)
        data_tmp['minute'] = data['powerinhs']*60*a.get_blockreward()/(data['diff']*2**32)
        data_tmp['hour'] = data['powerinhs']*3600*a.get_blockreward()/(data['diff']*2**32)
        data_tmp['day'] = data['powerinhs']*3600*24*a.get_blockreward()/(data['diff']*2**32)
        data_tmp['week'] = data['powerinhs']*3600*24*7*a.get_blockreward()/(data['diff']*2**32)
        data_tmp['month'] = data['powerinhs']*3600*24*30*a.get_blockreward()/(data['diff']*2**32)

J'en profite aussi pour donner l'explication de la méthode get_blockreward()

Code:
    # To get the current block reward
    # The number of blocks times the coin value of a block is the
    #  number of coins in existence. The coin value of a block is
    #  50 BTC for each of the first 210,000 blocks, 25 BTC for the
    #  next 210,000 blocks, then 12.5 BTC, 6.25 BTC and so on.
    def get_blockreward(self):
        return 50.0/2**(self.get_latestblock()/210000)

C'est tout bête, mais cela aura eu le mérite de m'occuper l'après midi intelligemment ! :p


Title: Re: Petits calculs en Python.
Post by: TotalPanda on January 18, 2014, 11:06:17 PM
Salut, sympa vos calculs, vous devriez intervenir plus souvent,
pour nous éclairer des vos lanternes.
Et carrément, expliquer à la masse ingrate pourquoi le language python
est le plus adapté.