Affichage des articles dont le libellé est ETHEREUM. Afficher tous les articles
Affichage des articles dont le libellé est ETHEREUM. Afficher tous les articles

lundi 3 septembre 2018

Jetons et DAOs

https://www.ethereum.org/

Jetons et DAOs

Dans cet exemple, nous allons faire un crowdfunding mieux de résoudre deux problèmes importants : comment les récompenses sont gérés et conservés, et comment l’argent est dépensé après que les fonds sont levés.
Récompenses en crowdfundings sont généralement réglées par une base de données immuable centrale qui assure le suivi de tous les donateurs : tous ceux qui ont manqué la date limite pour la campagne ne peut pas obtenir plus et tout donateur qui a changé leur esprit ne peut pas sortir. Au lieu de cela, nous allons faire la façon décentralisée et il suffit de créer un jeton pour garder une trace des récompenses, quiconque contribue obtient un jeton qui ils peuvent échanger, vendre ou garder pour plus tard. Lorsque vient le temps de la récompense physique le producteur n’a besoin d’échanger les jetons pour les vrais produits. Donateurs arriver à garder leurs jetons, même si le projet n’atteint pas ses objectifs, en guise de souvenir.
En outre, généralement ceux qui financent ne peut pas avoir son mot à dire sur la façon dont l’argent est dépensé après que les fonds sont levés et mauvaise gestion souvent cause projets jamais de livrer n’importe quoi du tout. Dans ce projet, nous utiliserons une Organisation démocratique qui devra approuver tout argent qui sortent du système. Ceci est souvent appelé un crowdsale ou l’équité de la foule et est donc fondamental que, dans certains cas, le jeton peut être la récompense elle-même, en particulier dans les projets où un groupe de personnes se rassemblent pour construire un public commun bien.
https://www.ethereum.org/crowdsale

Exemple :


pragma solidity ^
0.4.18;
interface token {
   
function transfer(address receiver, uint amount) external;
}

contract Crowdsale {
    address
public beneficiary;
   
uint public fundingGoal;
   
uint public amountRaised;
   
uint public deadline;
   
uint public price;
    token
public tokenReward;
    mapping(address => uint256)
public balanceOf;
   
bool fundingGoalReached = false;
   
bool crowdsaleClosed = false;

   
event GoalReached(address recipient, uint totalAmountRaised);
   
event FundTransfer(address backer, uint amount, bool isContribution);

   
/**
     * Constructor function
     *
     * Setup the owner
     */

   
function Crowdsale(
        address ifSuccessfulSendTo,
        uint fundingGoalInEthers,
        uint durationInMinutes,
        uint etherCostOfEachToken, address addressOfTokenUsedAsReward
) public
{
        beneficiary = ifSuccessfulSendTo;
        fundingGoal = fundingGoalInEthers *
1 ether;
        deadline = now + durationInMinutes *
1 minutes;
        price = etherCostOfEachToken *
1 ether;
        tokenReward = token(addressOfTokenUsedAsReward);
    }

   
/**
     * Fallback function
     *
     * The function without name is the default function that is called whenever anyone sends funds to a contract
     */

    function () payable
public {
        require(!crowdsaleClosed);
       
uint amount = msg.value;
        balanceOf[msg.sender] += amount;
        amountRaised += amount;
        tokenReward.transfer(msg.sender, amount / price);
      
emit FundTransfer(msg.sender, amount, true);
    }

   
modifier afterDeadline() { if (now >= deadline) _; }

   
/**
     * Check if goal was reached
     *
     * Checks if the goal or time limit has been reached and ends the campaign
     */

   
function checkGoalReached() public afterDeadline {
       
if (amountRaised >= fundingGoal){
            fundingGoalReached =
true;
           
emit GoalReached(beneficiary, amountRaised);
        }
        crowdsaleClosed =
true;
    }


   
/**
     * Withdraw the funds
     *
     * Checks to see if goal or time limit has been reached, and if so, and the funding goal was reached,
     * sends the entire amount to the beneficiary. If goal was not reached, each contributor can withdraw
     * the amount they contributed.
     */

   
function safeWithdrawal() public afterDeadline {
       
if (!fundingGoalReached) {
           
uint amount = balanceOf[msg.sender];
            balanceOf[msg.sender] =
0;
           
if (amount > 0) {
               
if (msg.sender.send(amount)) {
                  
emit FundTransfer(msg.sender, amount, false);
                }
else {
                    balanceOf[msg.sender] = amount;
                }
            }
        }

       
if (fundingGoalReached && beneficiary == msg.sender) {
           
if (beneficiary.send(amountRaised)) {
              
emit FundTransfer(beneficiary, amountRaised, false);
            }
else {
               
//If we fail to send the funds to beneficiary, unlock funders balance
                fundingGoalReached =
false;
            }
        }
    }
}


--- Pierre Erol GIRAUDY

mardi 14 août 2018

CRYPTO et son piratage


TheDAO et son piratage (source WIKPEDIA)

En mai 2016, une organisation autonome décentralisée a été créée pour réunir des fonds, sous forme d'Ether, afin de financer des projets utilisant la chaîne de blocs d'Ethereum. Cette création a été très largement saluée par la communauté et ses investisseurs en rassemblant plus de 12 000 000 d'Ether (soit 15 % de la monnaie totale émise pour un total de plus de 150 millions d'euros)[11] avant qu'une faille du code de TheDAO soit exploitée par des pirates qui détournèrent, le 17 juin 2016, près d'un tiers des encours réunis par le projet[12],[13] pour les déplacer dans un clone dans lequel, selon les propres règles de TheDAO, les fonds sont gelés à titre conservatoire pour une durée d’un mois. 


Pendant cette durée, la communauté Ethereum et ses membres fondateurs ont débattu pour décider de la meilleure méthode à adopter pour récupérer ou non les Ether détournés et s'il fallait liquider TheDAO[14]. Ils décidèrent de liquider le fonds d'investissement et de reprogrammer la chaîne de blocs pour inverser les effets du piratage et re-créditer le fonds d'investissement des fonds volés[15] afin de rembourser à terme les investisseurs. 


Cependant, environ 15 % de la puissance de calcul des mineurs d'Ether a refusé d'implémenter ce changement[6],[16] aboutissant à la création de deux chaines de blocs distinctes, l'une officielle et soutenue par les développeurs (l'Ether avec pour symbole : ETH), et l'autre non-officielle avec pour monnaie l'Ether classique (symbole : ETC) dans laquelle les hackers conservent la monnaie détournée de TheDAO. Cette nouvelle monnaie est donc dissociée et distincte de l'Ether, constitue une nouvelle crypto-monnaie avec une puissance de calcul faible la rendant potentiellement plus facilement vulnérable à une attaque des 51 %.

Avant l'implémentation de la reprogrammation de la chaîne de bloc, toute adresse qui possédait de l'Ether s'est donc vu dupliquée avec des encours en ETH dans la chaîne de blocs officielle (la valeur en unités de compte est conservée) et le même montant en ETC, dans la chaîne de blocs en sédition. L'ETC, nouvelle crypto-monnaie, ne peut être utilisé que sur la chaîne de blocs soutenue par le réseau des mineurs en sédition et l'ETH ne peut être utilisé que sur la chaîne de blocs officielle reprogrammée. Dans le cas d'une division d'une chaîne de blocs en deux, les utilisateurs peuvent être potentiellement vulnérables à des attaques par rejeu dans lesquelles un pirate intercepte une transaction sur une des chaînes (dominante ou non) pour la rediffuser sur la seconde. La clé privée de l'utilisateur étant la même sur les deux chaines, la signature de la transaction initiale sera aussi valide sur les deux chaînes[17].

Fin septembre 2016 la valeur de l'Ether classique (ETC), représentait environ de 10 % de la valeur de l'Ether (ETH) sur les places d'échanges ayant accepté de négocier cette nouvelle crypto-monnaie, après une introduction à environ 3 % et une pointe à plus de 45 % début août 2016.

https://www.rsln.fr/fil/la-blockchain-au-dela-des-cryptomonnaies/

https://www.ethereum-france.com/avertissements-de-securite/

Les hardware wallets sont l’une des façon les plus sures et les plus simples de stocker vos ETH, tokens et autres cryptos. Ce site recommande l’utilisation du Ledger Nano S, suivant ce tutoriel. Avec un hardware wallet, c’est le matériel qui détient votre clé privée et signe les transactions pour vous. Cela permet de s’assurer que vos clés ne sont jamais exposées à un appareil connecté à internet. Les virus, phishers, malwares et autres keyloggers ne peuvent donc y accéder.




--- Pierre Erol GIRAUDY