Aperçu de la technologie blockchain

Charles Couillard


Etude de cas

  • La blockchain Bitcoin  
  • La blockchain Ethereum  

La blockchain Bitcoin

  • Un grand registre de comptes
  • Infalsifiable
  • Décentralisé
  • Dont la mise à jour est effectuée par le réseau lui-même
  • Focalisée sur l'aspect monétaire

Et techniquement ?

  • "Une base de données"
  • "Chiffrée"
  • Distribuée
  • Publique
  • Open source

Entrons dans la matrice

Une blockchain :)

Une adresse Bitcoin

Une paire de clés publique / privée

1CC3X2gu58d6wXUWMffpuzN9JAfTUWu4Kj / 5Kb8kLf9zgWQnogidDA76MzPL6TsZZY36hWXMssSzNydYXYB9KF

Une transaction

Une transaction

Un block

Objectif du minage

Un hash SHA-256

Bonjour l'AEC

89bbc97ada916e164d60731f7c0462ef69feb5e8835a621cb65e3808a2d31541

Bonjour L'AECa

42d1aada456b0d4fb408b74b56007d29cd95774d506a641b97753fc8fabbe22b

Une démo

Une transaction Bitcoin

Le résultat

Des applications autour de la blockchain Bitcoin

  • Colu : Digital assets issuance
  • Crypto Public Notary : Notarize Digital Work with Bitcoin
  • Rootstock : Bring Smart Contracts to Bitcoin

Focus sur les Colored Coins

Colu

Démo

Les limitations actuelles de la blockchain Bitcoin

  • 7 transactions par seconde
  • Smart Contracts très limités

La blockchain Ethereum

  • Un grand registre de comptes
  • Sécurisé
  • Décentralisé
  • Dont la mise à jour est effectuée par le réseau lui-même
  • Un ordinateur décentralisé
  • Permettant la création d'applications autonomes

Et techniquement ?

  • "Une base de données"
  • "Chiffrée"
  • Distribuée
  • Publique
  • Open source
  • Qui est capable de faire tourner du code

Les Smarts Contracts Ethereum

  • Du code
  • Autonome
  • Qui consomme du gas

Un language de programmation : EVM


PUSH1 0 CALLDATALOAD SLOAD NOT PUSH1 9 JUMPI STOP JUMPDEST PUSH1 32
CALLDATALOAD PUSH1 0 CALLDATALOAD SSTORE
						

Des languages plus haut niveau: Solidity


contract Ballot
	{
    function winningProposal() constant
            returns (uint winningProposal)
    {
        uint winningVoteCount = 0;
        for (uint p = 0; p < proposals.length; p++)
        {
            if (proposals[p].voteCount > winningVoteCount)
            {
                winningVoteCount = proposals[p].voteCount;
                winningProposal = p;
            }
        }
    }
	}
								

Le déploiement de code sur la Blockchain Ethereum

Les applications sur la blockchain Ethereum

  • Slock.it : Blockchain + IoT, "Airbnb et Uber killer"
  • Ujomusic : Vente de musique
  • Augur : Prédiction décentralisée

Et pour moi, ça vaut le coup la blockchain ?

The end

Merci !