Ça sert à éviter le spam ou la triche.
Cette preuve de travail fait que si un spammeur voulais tricher et dépenser les même bitcoins deux fois, il lui faudrait autant de CPU que la somme de tous les autres participants.
Une transaction dépense la totalité des inputs.
Une transaction classique possède un output vers la personne à qui on veux donner de l'argent, et un autre output avec le reste vers nous même.
Si la somme des output est plus petit que la somme des input, la différence est compté comme un frais de transaction.
supposons qu'il sont de taille fixés (en vrai j'en sais rien),
Il l'est (32 bits)
Par contre, c'est pas grave si deux mineurs essaye les même nombres, puisque le contenu du bloc sera différent. Déjà, l'adresse du mineur pour les nouveau bitcoin, mais aussi l'ordre des transactions et le timestamp exact.
Supposons que j'ai la capacité de ralentir grandement le site à coups de DDos (OK, c'est une hypothèse forte), le cours du bitcoin chute un peu, j'achète des bitcoins, le DDos ce termine, le cours remonte, je revend les bitcoins acheté. J'ai donc gagné des bitcoins. C'est donc possible pour de puissante organisations de tricher ? Si oui, est-ce vraiment rentable ?
Oui, et il y a effectivement des gens qui ont fait ça par le passé.
On peux espérer que plus de sites d'échange s'ouvre et amortisse le problème de la manipulation des prix
Comment Alice peut-elle envoyer à tout les mineurs ?
Je ne connais pas exactement tout les détails, mais en gros: Les nœud bitcoins se connectent entre eux et forme un réseau P2P. Quand un client fait une transaction, les nœud broadcast la transaction à tous les nœud connectés.
Un nœud peut-il refuser une transaction
Oui
que ce passe t'il si tout les nœuds refusent la transaction d'Alice ?
Alice réessaye en payant de plus gros frais de transactions.
Que signifie "vérifier la transaction" ?
S'assurer que Alice a assez d'argent et que les signatures sont correcte.
Mais ne peut-elle pas usurper l'identité de quelqu'un en publiant une fausse transaction
Non, car il faut signer les transactions.
Supposons que le block est complété et que le mineur recherche le bon hash. Il reçoit pendant ce temps un bloc qui apparemment est valide, il ce passe quoi ?
Je comprends pas bien la question. Mais je crois que tu veux dire que quelqu'un d'autre a miner le bloc. Dans ce cas il arrête de chercher pour ce bloc et passe au suivant.
Donc en réalité, après chaque transaction, le mineur en ajoute une deuxième pour se donner un peu d'argent ?
Non. Une transaction peux laisser une petite somme d'agent au mineur (si la somme des output est plus faible que la somme des input). Ce n'est pas représenter sur mes dessin.
Quel est ce coût de transaction ?
Ceux qui font les transaction choisissent. Par exemple 0,0001 bitcoins
Qu'est-ce que "la plus grande chaîne" ?
Les blocs se référence les uns les autres comme une liste liée.
La plus grande chaine est celle qui a le plus de blocs.
il leur "suffira" d'investir dans une ferme de fpga, rendant le "minage" sans interêt pour tout les autres utilisateurs, et l'état virtuellement capable de controller les cours.
Je ne vois pas comment, même en ayant une très grosse force de minage, il peuvent contrôler le cours.
En pratique, tout le monde a plein d'adresses. (On génère une nouvelle adresse pour chaque payement.)
On ne sait pas savoir facilement qui à quelle adresse.
En utilisant des système qui mélanges les bitcoins il est possible d'être assez anonyme.
La documentation technique parle de nonce.
Mais il n'y a pas ce genre de restriction. Ce n'est absolument pas pour éviter un replay.
Donc c'est en réalité plutôt un sel.
Attention à cet argument en effet. C'est le même argument utilisé contre la liberté d'expression ou la protection de la vie privée. Mais la « liberté bancaire » pourrait être vue comme tout aussi importante pour le bon fonctionnement d'un état démocratique.
La taille totale de la blockchain est aujourd'hui approximativement 8 Go.
Oui c'est beaucoup.
Heureusement, il n'est pas nécessaire d'avoir toute la blockchain pour effectuer et vérifier des transactions.
Il suffit d'avoir les entêtes de chacun des blocs et de télécharger uniquement les blocs intéressant à la transaction.
[…] pour développer le nucléaire et on voit aujourd'hui le résultat.
Quel résultat ?
De l'énergie pas cher disponible pour tous ?
Ah, j'imagine que tu voulais parler des quelques accidents grave. Forcément, vu leur gravité, ça marque nos cerveaux irrationnels.
Mais de tels accidents sont rares. Le bilan est moindre que celui dû aux accidents de la route, par exemple.
Il faut comparer risques et bénéfices. Sinon, on devrait limiter les autoroutes à du 20km/h pour être sur.
Il est toujours possible de développer en mode hybride en utilisant Qt quand ça marche, et les API natives dans les cas particulier ou c'est nécessaire.
Si je devais le faire, je réimplémenterais sans doute ASTConsumer::HandleTranslationUnit et utiliserais RecursiveASTVisitor pour visiter toutes les clang::CXXMethodDecl (c'est la classe qui représente les déclaration de fonction members).
Tu filtre celles qui sont dans les fichier que tu veux modifier, et tu peux savoir avec CXXMethodDecl::hasInlineBody && !isInlineSpecified() si tu veux la déplacer. Tu peux facilement trouver le début et la fin du corps de la fonction (getBody()->getSourceRange()) et utiliser clang::Rewrite pour le remplacer par un ;, et déplacer le corps dans un fichier .cpp.
Tu peux même utiliser clang::Format pour avoir la bonne indentation.
#include <clang/Frontend/FrontendAction.h>#include <clang/Tooling/Tooling.h>#include <clang/AST/ASTConsumer.h>#include <clang/AST/Decl.h>#include <iostream>structMyASTConsumer:clang::ASTConsumer{voidHandleTagDeclDefinition(clang::TagDecl*D)override{// if it's a struct or a classif(D->isRecord())std::cout<<"Found a class: "<<D->getNameAsString()<<std::endl;}};structMyAction:clang::ASTFrontendAction{virtualclang::ASTConsumer*CreateASTConsumer(clang::CompilerInstance&CI,llvm::StringRef)override{returnnewMyASTConsumer();}};intmain(intargc,constchar**argv){std::vector<std::string>Argv;// Just forward all the arguments to the toolfor(intI=0;I<argc;++I)Argv.push_back(argv[I]);clang::FileManagerFM({"."});clang::tooling::ToolInvocationInv(Argv,newMyAction,&FM);return!Inv.run();}
Ça s'utilise comme ça:
./a.out mylib.h -c -x c++ -I/usr/include
Et ça affiche toute les classes (y compris toutes celle de la stdlib)
Maintenant il faux recompiler encore tcc avec tcc lui même compilé avec tcc et mesurer les temps de compilation. (Inception…)
Mon intuition est que tcc compilé avec gcc compilera tcc plus vite, car gcc produit du meilleur code.
Tu observe également que il y a -g dans les option de compilation, ce qui signifie que le binaire a tous les symbole de débugage, ce qui grossi le binaire. Forcément gcc produit probablement de meilleurs symboles de débug.
Ensuite, TCC sera plus rapide que clang ou gcc car il fait moins de chose. TCC est limité à un plus petit sous ensemble du language et fait moins d'optimisations. Fais peut être moins de vérifications pour avoir des warnings de qualité, et ce genre de chose.
NB: ceci est une nouvelle sur LLVM/Clang, tu aurais pu aussi comparer avec Clang
[^] # Re: Super journal !
Posté par Gof (site web personnel) . En réponse au journal Comment fonctionne Bitcoin. Évalué à 4.
Ah merde. J Avais mal compris le message initial.
la transaction est bien invalide si Alice n'a pas l'argent.
Au temps pour moi.
[^] # Re: Pourquoi calculer ce fameux hash ?
Posté par Gof (site web personnel) . En réponse au journal Comment fonctionne Bitcoin. Évalué à 3.
Ça sert à éviter le spam ou la triche.
Cette preuve de travail fait que si un spammeur voulais tricher et dépenser les même bitcoins deux fois, il lui faudrait autant de CPU que la somme de tous les autres participants.
[^] # Re: Concept
Posté par Gof (site web personnel) . En réponse au journal Comment fonctionne Bitcoin. Évalué à 3.
Je sais que c'est difficile et qu'il faut effectivement faire très attention. Mais il y a moyen de bien dissimuler ses transactions.
Sinon, si on veux une non-traçabilité, il y a zerocoin qui est une tentative de rendre bitcoin moins traçable.
[^] # Re: Super journal !
Posté par Gof (site web personnel) . En réponse au journal Comment fonctionne Bitcoin. Évalué à 2.
Une transaction dépense la totalité des inputs.
Une transaction classique possède un output vers la personne à qui on veux donner de l'argent, et un autre output avec le reste vers nous même.
Si la somme des output est plus petit que la somme des input, la différence est compté comme un frais de transaction.
[^] # Re: nonce
Posté par Gof (site web personnel) . En réponse au journal Comment fonctionne Bitcoin. Évalué à 2.
Merci pour cette démonstration.
Il l'est (32 bits)
Par contre, c'est pas grave si deux mineurs essaye les même nombres, puisque le contenu du bloc sera différent. Déjà, l'adresse du mineur pour les nouveau bitcoin, mais aussi l'ordre des transactions et le timestamp exact.
[^] # Re: Super journal !
Posté par Gof (site web personnel) . En réponse au journal Comment fonctionne Bitcoin. Évalué à 3.
En fait si, ça passe. Les 100000000 sont considérer comme frais de transaction et gardé par le mineur du bloc.
Il est aussi possible de « détruire » des bitcoins en les transférant à une adresse invalide.
[^] # Re: Super journal !
Posté par Gof (site web personnel) . En réponse au journal Comment fonctionne Bitcoin. Évalué à 5.
Oui, et il y a effectivement des gens qui ont fait ça par le passé.
On peux espérer que plus de sites d'échange s'ouvre et amortisse le problème de la manipulation des prix
[^] # Re: Super journal !
Posté par Gof (site web personnel) . En réponse au journal Comment fonctionne Bitcoin. Évalué à 4.
Merci pour les questions:
Je ne connais pas exactement tout les détails, mais en gros: Les nœud bitcoins se connectent entre eux et forme un réseau P2P. Quand un client fait une transaction, les nœud broadcast la transaction à tous les nœud connectés.
Oui
Alice réessaye en payant de plus gros frais de transactions.
S'assurer que Alice a assez d'argent et que les signatures sont correcte.
Non, car il faut signer les transactions.
Je comprends pas bien la question. Mais je crois que tu veux dire que quelqu'un d'autre a miner le bloc. Dans ce cas il arrête de chercher pour ce bloc et passe au suivant.
Non. Une transaction peux laisser une petite somme d'agent au mineur (si la somme des output est plus faible que la somme des input). Ce n'est pas représenter sur mes dessin.
Ceux qui font les transaction choisissent. Par exemple 0,0001 bitcoins
Les blocs se référence les uns les autres comme une liste liée.
La plus grande chaine est celle qui a le plus de blocs.
[^] # Re: Concept
Posté par Gof (site web personnel) . En réponse au journal Comment fonctionne Bitcoin. Évalué à 2.
Je pense que tu comprends mal le but des mineurs.
Les mineurs font que vérifier les transactions. Il ne contrôlent rien.
Au pire, un mineur peut refuser certaines transactions. Mais un autre mineur finira par l'accepter.
[^] # Re: Concept
Posté par Gof (site web personnel) . En réponse au journal Comment fonctionne Bitcoin. Évalué à 2.
Je ne vois pas comment, même en ayant une très grosse force de minage, il peuvent contrôler le cours.
[^] # Re: Concept
Posté par Gof (site web personnel) . En réponse au journal Comment fonctionne Bitcoin. Évalué à 5.
En pratique, tout le monde a plein d'adresses. (On génère une nouvelle adresse pour chaque payement.)
On ne sait pas savoir facilement qui à quelle adresse.
En utilisant des système qui mélanges les bitcoins il est possible d'être assez anonyme.
[^] # Re: Concept
Posté par Gof (site web personnel) . En réponse au journal Comment fonctionne Bitcoin. Évalué à 2.
Quel est le système de « cours du bitcoin » dont tu parles ?
Comment ?
Les frais de transaction dans le bitcoins sont négligables comparés aux alternatives.
Le message auquel tu réponds donnait donnais cet argument comme exemple d'argument contre le bitcoin pouvant être utilisé comme paypal. As tu mal lu ?
En quoi est-ce que bitcoin est malhonnête ?
En Europe, oui. Mais Bitcoin ne se limite pas à l'europe.
Comment transferts tu de l'argent à quelqu'un au Kenya par exemple ?
Peux tu élaborer ?
[^] # Re: nonce
Posté par Gof (site web personnel) . En réponse au journal Comment fonctionne Bitcoin. Évalué à 2.
La documentation technique parle de nonce.
Mais il n'y a pas ce genre de restriction. Ce n'est absolument pas pour éviter un replay.
Donc c'est en réalité plutôt un sel.
[^] # Re: Concept
Posté par Gof (site web personnel) . En réponse au journal Comment fonctionne Bitcoin. Évalué à 3.
Attention à cet argument en effet. C'est le même argument utilisé contre la liberté d'expression ou la protection de la vie privée. Mais la « liberté bancaire » pourrait être vue comme tout aussi importante pour le bon fonctionnement d'un état démocratique.
[^] # Re: En 2140
Posté par Gof (site web personnel) . En réponse au journal Comment fonctionne Bitcoin. Évalué à 5.
Il reste les frais de transactions pour encourager les mineurs.
[^] # Re: Base de données distribuée
Posté par Gof (site web personnel) . En réponse au journal Comment fonctionne Bitcoin. Évalué à 4.
La taille totale de la blockchain est aujourd'hui approximativement 8 Go.
Oui c'est beaucoup.
Heureusement, il n'est pas nécessaire d'avoir toute la blockchain pour effectuer et vérifier des transactions.
Il suffit d'avoir les entêtes de chacun des blocs et de télécharger uniquement les blocs intéressant à la transaction.
[^] # Re: nonce
Posté par Gof (site web personnel) . En réponse au journal Comment fonctionne Bitcoin. Évalué à 6.
C'est une sorte de grain de sel.
C'est 32 bits qui n'ont aucune signification et dont la seul fonction et de changer le hash.
Le but est de trouver
nonce
tel que:[^] # Re: Vitamine A
Posté par Gof (site web personnel) . En réponse au journal Le Golden rice et les bobos. Évalué à 5.
Quel résultat ?
De l'énergie pas cher disponible pour tous ?
Ah, j'imagine que tu voulais parler des quelques accidents grave. Forcément, vu leur gravité, ça marque nos cerveaux irrationnels.
Mais de tels accidents sont rares. Le bilan est moindre que celui dû aux accidents de la route, par exemple.
Il faut comparer risques et bénéfices. Sinon, on devrait limiter les autoroutes à du 20km/h pour être sur.
[^] # Re: La science est la réponse mais…
Posté par Gof (site web personnel) . En réponse au journal Le Golden rice et les bobos. Évalué à 3.
Je ne suis pas d'accord.
Comment ça ? Et la biologie c'est pas une science ? Et la médecine ? Et la psycologie ?
La science s'intéresse bel et bien à ce qui est réel est vivant?
Je ne vois pas pourquoi.
[^] # Re: Mr Propre
Posté par Gof (site web personnel) . En réponse au journal Wikipédia : Siatz nets, parlatz francés !. Évalué à 9.
Moi je vois même « Parlez francais ». Il manque une cédille. Ce qui n'est sensiblement pas la même chose.
[^] # Re: Migrations ?
Posté par Gof (site web personnel) . En réponse à la dépêche Qt 5.1 est juillet. Évalué à 6.
Il est toujours possible de développer en mode hybride en utilisant Qt quand ça marche, et les API natives dans les cas particulier ou c'est nécessaire.
[^] # Re: Superbe article !
Posté par Gof (site web personnel) . En réponse à la dépêche LLVM 3.3 et Clang 3.3. Évalué à 4.
Oui, pas trop compliqué en effet.
Si je devais le faire, je réimplémenterais sans doute ASTConsumer::HandleTranslationUnit et utiliserais RecursiveASTVisitor pour visiter toutes les clang::CXXMethodDecl (c'est la classe qui représente les déclaration de fonction members).
Tu filtre celles qui sont dans les fichier que tu veux modifier, et tu peux savoir avec
CXXMethodDecl::hasInlineBody && !isInlineSpecified()
si tu veux la déplacer. Tu peux facilement trouver le début et la fin du corps de la fonction (getBody()->getSourceRange()
) et utiliser clang::Rewrite pour le remplacer par un;
, et déplacer le corps dans un fichier .cpp.Tu peux même utiliser clang::Format pour avoir la bonne indentation.
[^] # Re: Superbe article !
Posté par Gof (site web personnel) . En réponse à la dépêche LLVM 3.3 et Clang 3.3. Évalué à 10.
Voilà:
Ça s'utilise comme ça:
Et ça affiche toute les classes (y compris toutes celle de la stdlib)
[^] # Re: Ta mère
Posté par Gof (site web personnel) . En réponse à la dépêche Blagues d'informaticiens. Évalué à 1.
C'est du comique de répétition ?
[^] # Re: TCC ?
Posté par Gof (site web personnel) . En réponse à la dépêche LLVM 3.3 et Clang 3.3. Évalué à 8.
Maintenant il faux recompiler encore tcc avec tcc lui même compilé avec tcc et mesurer les temps de compilation. (Inception…)
Mon intuition est que tcc compilé avec gcc compilera tcc plus vite, car gcc produit du meilleur code.
Tu observe également que il y a
-g
dans les option de compilation, ce qui signifie que le binaire a tous les symbole de débugage, ce qui grossi le binaire. Forcément gcc produit probablement de meilleurs symboles de débug.Ensuite, TCC sera plus rapide que clang ou gcc car il fait moins de chose. TCC est limité à un plus petit sous ensemble du language et fait moins d'optimisations. Fais peut être moins de vérifications pour avoir des warnings de qualité, et ce genre de chose.
NB: ceci est une nouvelle sur LLVM/Clang, tu aurais pu aussi comparer avec Clang