SlideShare une entreprise Scribd logo
1  sur  30
Télécharger pour lire hors ligne
Bitcoin: transactions et contrats sur la chaîne
Erwan Martin
Lyon Bitcoin Meetup
public@fzwte.net
June 30, 2015
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 1 / 30
Plan
1 Rappels
Adresses et clés publiques
Blocks
Transactions
Scripts
2 Contrats
Escrow
Campagne de nancement
Dépôt de garantie
3 Épilogue
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 2 / 30
Rappels
Table of Contents
1 Rappels
Adresses et clés publiques
Blocks
Transactions
Scripts
2 Contrats
Escrow
Campagne de nancement
Dépôt de garantie
3 Épilogue
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 3 / 30
Rappels Adresses et clés publiques
Adresses et clés publiques
02fb825c6f28169d255c4e7472fb8cb81a290b2119a387a6db9172542b2ac7e164
bcf3fdce6250ad4eb8fc60afc50b5aeb9a6aa034fc2c25b891248c8b88f83512
Public Key:
SHA256
9a3f8d58f9b04e7ceb7be4fdc44a84d1a5d44233
RIPEMD160
00 9a3f8d58f9b04e7ceb7be4fdc44a84d1a5d44233 be6e1301
1F4bCDsVtiJMVfoFkZy8FUMv7NieY2X9EG
UnBase58
Bitcoin Address:
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 4 / 30
Rappels Blocks
Blocks
Magic no
Block size
Block header
Version
hashPrevBlock
hashMerkleRoot
Time
Bits
Nonce
Transaction counter
Transaction
Transaction
Transaction
...
Block
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 5 / 30
Rappels Transactions
Transactions
Version no
In-counter
Input
Input
Input
...
Out-counter
Output 1
Output 2
Output 3
...
Transaction
Value
Txout-script length
Txout-script
Output
Previous TxHash
Previous Txout-index
Txin-script length
Input
Txin-script
Sequence number
Lock time
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 6 / 30
Rappels Transactions
Transactions
Tx #42
Tx #88
Input 1
Input 2
Input 3
Input 4
Output 1
2 BTC
Output 2
5 BTC
Output 3
1 BTC
Output 4
3 BTC
Tx #33
Output 1
0.5 BTC
Output 2
0.5 BTC
Output 3
8 BTC
Output 1
3 BTC
Output 2
4 BTC
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 7 / 30
Rappels Scripts
Scripts: où?
Tx #42 Tx #88
Input scriptOutput script
Script = Input script + Output script
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 8 / 30
Rappels Scripts
Scripts: principe
Tx #42 Tx #88
???A + B= 42
scriptSig
scriptPubKey
Script
scriptSig, scriptPubKey
???, A + B = 42
Résolution
A = 40, B = 2, A + B = 42
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 9 / 30
Rappels Scripts
Scripts: Pay to Public Key Hash
Tx #42 Tx #88
sig pubKeyOP_DUP OP_HASH160 pubKeyHash OP_EQUALVERIFY OP_CHECKSIG
Script
sig pubKey OP_DUP OP_HASH160 pubKeyHash
OP_EQUALVERIFY OP_CHECKSIG
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 10 / 30
Rappels Scripts
Execution
Script
⇒ sig
pubKey
OP_DUP
OP_HASH160
pubKeyHash
OP_EQUALVERIFY
OP_CHECKSIG
Pile avant
[vide].
Pile après
sig.
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 11 / 30
Rappels Scripts
Execution
Script
sig
⇒ pubKey
OP_DUP
OP_HASH160
pubKeyHash
OP_EQUALVERIFY
OP_CHECKSIG
Pile avant
sig.
Pile après
pubKey
sig
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 12 / 30
Rappels Scripts
Execution
Script
sig
pubKey
⇒ OP_DUP
OP_HASH160
pubKeyHash
OP_EQUALVERIFY
OP_CHECKSIG
Pile avant
pubKey
sig
Pile après
pubKey
pubKey
sig
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 13 / 30
Rappels Scripts
Execution
Script
sig
pubKey
OP_DUP
⇒ OP_HASH160
pubKeyHash
OP_EQUALVERIFY
OP_CHECKSIG
Pile avant
pubKey
pubKey
sig
Pile après
pubHashA
pubKey
sig
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 14 / 30
Rappels Scripts
Execution
Script
sig
pubKey
OP_DUP
OP_HASH160
⇒ pubKeyHash
OP_EQUALVERIFY
OP_CHECKSIG
Pile avant
pubHashA
pubKey
sig
Pile après
pubKeyHash
pubHashA
pubKey
sig
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 15 / 30
Rappels Scripts
Execution
Script
sig
pubKey
OP_DUP
OP_HASH160
pubKeyHash
⇒ OP_EQUALVERIFY
OP_CHECKSIG
Pile avant
pubKeyHash
pubHashA
pubKey
sig
Pile après
pubKey
sig
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 16 / 30
Rappels Scripts
Execution
Script
sig
pubKey
OP_DUP
OP_HASH160
pubKeyHash
OP_EQUALVERIFY
⇒ OP_CHECKSIG
Pile avant
pubKey
sig
Pile après
true
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 17 / 30
Contrats
Table of Contents
1 Rappels
Adresses et clés publiques
Blocks
Transactions
Scripts
2 Contrats
Escrow
Campagne de nancement
Dépôt de garantie
3 Épilogue
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 18 / 30
Contrats Escrow
Escrow
Tx #42 Tx #88
OP_FALSE sig1 sig2OP_2 pubKey1 pubKey2 pubKey3 OP_3 OP_CHECKMULTISIG
Script
OP_FALSE sig1 sig2 OP_2 pubKey1 pubKey2
pubKey3 OP_3 OP_CHECKMULTISIG
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 19 / 30
Contrats Campagne de nancement
Campagne de nancement: principe
Cahier des charges
Le fondateur a besoin de 20 BTC.
4 participants doivent donner 5 BTC.
S'il n'y a pas assez de participants, personne ne paye.
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 20 / 30
Contrats Campagne de nancement
Campagne de nancement: implémentation
Tx #42 Tx #88
Input 1
Output 1
5 BTC
Output 1
20 BTC
Tx #43 Tx #89
Input 1
Output 1
5 BTC
Output 1
20 BTC
Alice:
Bob:
Promesses de don
Chaque participant créé une transaction avec comme sortie une adresse du
fondateur, mais avec le montant total de la campagne.
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 21 / 30
Contrats Campagne de nancement
Campagne de nancement: implémentation
Tx #42 Tx #105
Input 1
Output 1
5 BTC
Output 1
20 BTCTx #43
Input 2
Output 1
5 BTC
Alice:
Bob:
Input 3
Input 4
Phase de collecte
Le fondateur crée une transaction en fusionnant toutes celles qu'il a reçu.
Utilisation du drapeau SIGHASH_ANYONECANPAY.
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 22 / 30
Contrats Campagne de nancement
Quelques types de signatures
SIGHASH_ALL|SIGHASH_ANYONECANPAY
Signe tous les outputs et seulement cet input. N'importe qui peut
contribuer des satoshis à la transaction, mais sans changer où ils vont.
SIGHASH_SINGLE|SIGHASH_ANYONECANPAY
Signe seulement ce couple input/output. Permet à n'importe qui de
rajouter des inputs et des outputs.
SIGHASH_NONE|SIGHASH_ANYONECANPAY
Signe seulement cet input. N'importe qui peut dépenser les satoshis
associés comme il lui semble en rajoutant des inputs et des outputs.
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 23 / 30
Contrats Dépôt de garantie
Dépôt de garantie: cahier des charges
Cahier des charges
Une somme provenant de l'utilisateur est bloquée pendant une durée
déterminée.
À la n du temps, la somme est automatiquement re-transférée à
l'utilisateur.
Les deux parties peuvent annuler/modier le contrat à loisir, mais
ensemble.
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 24 / 30
Contrats Dépôt de garantie
Dépôt de garantie: implémentation
Génération de clés
L'utilisateur et le fournisseur de service s'échangent chacun une clé
publique: pubKeyUser et pubKeyService.
Première transaction
L'utilisateur génère une transaction à destination du fournisseur nécessitant
les deux signatures associées.
Tx #42
OP_2 pubUser pubKeyService OP_2 OP_CHECKMULTISIGInput 1
Tx #37
Output 1
10 BTC
Il envoie au fournisseur l'empreinte de cette transaction.
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 25 / 30
Contrats Dépôt de garantie
Dépôt de garantie: implémentation
Transaction retour
Le fournisseur génère une deuxième transaction qui dépense la première et
la renvoi à l'utilisateur.
Tx #42
OP_2 pubUser pubKeyService OP_2 OP_CHECKMULTISIGInput 1
Tx #37
Output 1
10 BTC
Tx #63
OP_DUP OP_HASH160 pubKeyLocataire OP_EQUALVERIFY OP_CHECKSIG
OP_FALSE 0 sigService
LockTime: 6 mois
Sequence number: 0
Le LockTime est conguré selon la durée voulue du dépôt, et le numéro de
séquence de l'input est mis à 0.
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 26 / 30
Contrats Dépôt de garantie
Signature du contrat
Signature du contrat
L'utilisateur ajoute sa signature dans la transaction retour, puis publie les
deux transactions.
Fin normale du contrat
À la n du contrat, la transaction est inclue dans un bloc, et les bitcoins
retournent à l'utilisateur.
Modication du contrat
Les deux utilisateurs peuvent recréer une transaction retour avec des
modalités diérentes, en incrémentant le Sequence Number.
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 27 / 30
Épilogue
Table of Contents
1 Rappels
Adresses et clés publiques
Blocks
Transactions
Scripts
2 Contrats
Escrow
Campagne de nancement
Dépôt de garantie
3 Épilogue
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 28 / 30
Épilogue
Mais encore?
Laverie
Pour brouiller les pistes dans les transactions.
Micro paiement
Même principe que pour le dépôt de garantie.
Loterie
Andrychowicz, Dziembowski, Malinowski, Mazurek.
Secure Multiparty Computations on Bitcoin
Cryptology ePrint Report 2013/784.
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 29 / 30
Épilogue
Fin
1 Rappels
Adresses et clés publiques
Blocks
Transactions
Scripts
2 Contrats
Escrow
Campagne de nancement
Dépôt de garantie
3 Épilogue
Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 30 / 30

Contenu connexe

En vedette

Capacitacion Y Coaprendizaje [Autoguardado]
Capacitacion Y Coaprendizaje [Autoguardado]Capacitacion Y Coaprendizaje [Autoguardado]
Capacitacion Y Coaprendizaje [Autoguardado]Gustavo Olivera
 
Reves de gosse
Reves de gosseReves de gosse
Reves de gosseJulienC22
 
Fanki November
Fanki NovemberFanki November
Fanki NovemberSéneca
 
Guiaparadisearmisecuenciadidctica 120302055500-phpapp02
Guiaparadisearmisecuenciadidctica 120302055500-phpapp02Guiaparadisearmisecuenciadidctica 120302055500-phpapp02
Guiaparadisearmisecuenciadidctica 120302055500-phpapp02Elenamohr
 
REST JUG Toulouse 20100615
REST JUG Toulouse 20100615REST JUG Toulouse 20100615
REST JUG Toulouse 20100615JUG Toulouse
 
Rencontre Epn Wallonie 4déC09 Ardesi
Rencontre Epn Wallonie 4déC09 ArdesiRencontre Epn Wallonie 4déC09 Ardesi
Rencontre Epn Wallonie 4déC09 ArdesiHeus Erik
 
El universo de reflejos de facebook
El universo de reflejos de facebookEl universo de reflejos de facebook
El universo de reflejos de facebookUBA
 
comportamientos digitales
comportamientos digitalescomportamientos digitales
comportamientos digitalesmonica
 
Cabanyal
CabanyalCabanyal
Cabanyaltallera
 
Los Nets Y La Educacion
Los Nets Y La EducacionLos Nets Y La Educacion
Los Nets Y La Educacionguest798bd1
 
Monster November
Monster NovemberMonster November
Monster NovemberSéneca
 
Criminalexplotaciondelafe
CriminalexplotaciondelafeCriminalexplotaciondelafe
Criminalexplotaciondelafesdxibalba
 

En vedette (19)

PASEO DE 4º B
PASEO DE 4º BPASEO DE 4º B
PASEO DE 4º B
 
Capacitacion Y Coaprendizaje [Autoguardado]
Capacitacion Y Coaprendizaje [Autoguardado]Capacitacion Y Coaprendizaje [Autoguardado]
Capacitacion Y Coaprendizaje [Autoguardado]
 
Reves de gosse
Reves de gosseReves de gosse
Reves de gosse
 
Fanki November
Fanki NovemberFanki November
Fanki November
 
Jalisco[1]
Jalisco[1]Jalisco[1]
Jalisco[1]
 
Guiaparadisearmisecuenciadidctica 120302055500-phpapp02
Guiaparadisearmisecuenciadidctica 120302055500-phpapp02Guiaparadisearmisecuenciadidctica 120302055500-phpapp02
Guiaparadisearmisecuenciadidctica 120302055500-phpapp02
 
REST JUG Toulouse 20100615
REST JUG Toulouse 20100615REST JUG Toulouse 20100615
REST JUG Toulouse 20100615
 
Rencontre Epn Wallonie 4déC09 Ardesi
Rencontre Epn Wallonie 4déC09 ArdesiRencontre Epn Wallonie 4déC09 Ardesi
Rencontre Epn Wallonie 4déC09 Ardesi
 
El universo de reflejos de facebook
El universo de reflejos de facebookEl universo de reflejos de facebook
El universo de reflejos de facebook
 
comportamientos digitales
comportamientos digitalescomportamientos digitales
comportamientos digitales
 
Sep
SepSep
Sep
 
Cabanyal
CabanyalCabanyal
Cabanyal
 
Los Nets Y La Educacion
Los Nets Y La EducacionLos Nets Y La Educacion
Los Nets Y La Educacion
 
G02
G02G02
G02
 
Monster November
Monster NovemberMonster November
Monster November
 
La terre
La terreLa terre
La terre
 
Technologie
TechnologieTechnologie
Technologie
 
Jose Geografia
Jose GeografiaJose Geografia
Jose Geografia
 
Criminalexplotaciondelafe
CriminalexplotaciondelafeCriminalexplotaciondelafe
Criminalexplotaciondelafe
 

Similaire à Bitcoin: transactions et contrats sur la chaîne

Introduction au Bitcoin
Introduction au BitcoinIntroduction au Bitcoin
Introduction au BitcoinHETIC
 
Développer un serveur de micropayment bitcoin - REX sur 2 implémentations - O...
Développer un serveur de micropayment bitcoin - REX sur 2 implémentations - O...Développer un serveur de micropayment bitcoin - REX sur 2 implémentations - O...
Développer un serveur de micropayment bitcoin - REX sur 2 implémentations - O...Vidal Chriqui
 
Bitcoin : Beaucoup plus qu'une monnaie
Bitcoin : Beaucoup plus qu'une monnaieBitcoin : Beaucoup plus qu'une monnaie
Bitcoin : Beaucoup plus qu'une monnaiePhilippe Rodriguez
 
Présentation au Blockchain Day (Lyon)
Présentation au Blockchain Day (Lyon)Présentation au Blockchain Day (Lyon)
Présentation au Blockchain Day (Lyon)Quentin de Beauchesne
 
Quel avenir pour le Bitcoin ? (+intro)
Quel avenir pour le Bitcoin ? (+intro)Quel avenir pour le Bitcoin ? (+intro)
Quel avenir pour le Bitcoin ? (+intro)Mathieu Jamar
 
Introduction à la blockchain
Introduction à la blockchainIntroduction à la blockchain
Introduction à la blockchainGuillaume Lamanda
 
Les ZAPeroTech #3 : à la découverte de NBitcoin en C#
Les ZAPeroTech #3 : à la découverte de NBitcoin en C#Les ZAPeroTech #3 : à la découverte de NBitcoin en C#
Les ZAPeroTech #3 : à la découverte de NBitcoin en C#DocDoku
 
Blockchain
BlockchainBlockchain
BlockchainAppstud
 
Trend delle emissioni governative italiane 30 novembre 2015
Trend delle emissioni governative italiane 30 novembre  2015Trend delle emissioni governative italiane 30 novembre  2015
Trend delle emissioni governative italiane 30 novembre 2015salvatore barbato
 

Similaire à Bitcoin: transactions et contrats sur la chaîne (10)

Introduction au Bitcoin
Introduction au BitcoinIntroduction au Bitcoin
Introduction au Bitcoin
 
Développer un serveur de micropayment bitcoin - REX sur 2 implémentations - O...
Développer un serveur de micropayment bitcoin - REX sur 2 implémentations - O...Développer un serveur de micropayment bitcoin - REX sur 2 implémentations - O...
Développer un serveur de micropayment bitcoin - REX sur 2 implémentations - O...
 
Bitcoin : Beaucoup plus qu'une monnaie
Bitcoin : Beaucoup plus qu'une monnaieBitcoin : Beaucoup plus qu'une monnaie
Bitcoin : Beaucoup plus qu'une monnaie
 
Présentation au Blockchain Day (Lyon)
Présentation au Blockchain Day (Lyon)Présentation au Blockchain Day (Lyon)
Présentation au Blockchain Day (Lyon)
 
Quel avenir pour le Bitcoin ? (+intro)
Quel avenir pour le Bitcoin ? (+intro)Quel avenir pour le Bitcoin ? (+intro)
Quel avenir pour le Bitcoin ? (+intro)
 
Introduction à la blockchain
Introduction à la blockchainIntroduction à la blockchain
Introduction à la blockchain
 
Les ZAPeroTech #3 : à la découverte de NBitcoin en C#
Les ZAPeroTech #3 : à la découverte de NBitcoin en C#Les ZAPeroTech #3 : à la découverte de NBitcoin en C#
Les ZAPeroTech #3 : à la découverte de NBitcoin en C#
 
Ethereum : le concept de comptes
Ethereum : le concept de comptesEthereum : le concept de comptes
Ethereum : le concept de comptes
 
Blockchain
BlockchainBlockchain
Blockchain
 
Trend delle emissioni governative italiane 30 novembre 2015
Trend delle emissioni governative italiane 30 novembre  2015Trend delle emissioni governative italiane 30 novembre  2015
Trend delle emissioni governative italiane 30 novembre 2015
 

Dernier

JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfInstitut de l'Elevage - Idele
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfmia884611
 
présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).FatimaEzzahra753100
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfInstitut de l'Elevage - Idele
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)Sana REFAI
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfInstitut de l'Elevage - Idele
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...Institut de l'Elevage - Idele
 

Dernier (9)

JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdfJTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdf
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdf
 
présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).
 
CAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptxCAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptx
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdf
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
 

Bitcoin: transactions et contrats sur la chaîne

  • 1. Bitcoin: transactions et contrats sur la chaîne Erwan Martin Lyon Bitcoin Meetup public@fzwte.net June 30, 2015 Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 1 / 30
  • 2. Plan 1 Rappels Adresses et clés publiques Blocks Transactions Scripts 2 Contrats Escrow Campagne de nancement Dépôt de garantie 3 Épilogue Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 2 / 30
  • 3. Rappels Table of Contents 1 Rappels Adresses et clés publiques Blocks Transactions Scripts 2 Contrats Escrow Campagne de nancement Dépôt de garantie 3 Épilogue Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 3 / 30
  • 4. Rappels Adresses et clés publiques Adresses et clés publiques 02fb825c6f28169d255c4e7472fb8cb81a290b2119a387a6db9172542b2ac7e164 bcf3fdce6250ad4eb8fc60afc50b5aeb9a6aa034fc2c25b891248c8b88f83512 Public Key: SHA256 9a3f8d58f9b04e7ceb7be4fdc44a84d1a5d44233 RIPEMD160 00 9a3f8d58f9b04e7ceb7be4fdc44a84d1a5d44233 be6e1301 1F4bCDsVtiJMVfoFkZy8FUMv7NieY2X9EG UnBase58 Bitcoin Address: Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 4 / 30
  • 5. Rappels Blocks Blocks Magic no Block size Block header Version hashPrevBlock hashMerkleRoot Time Bits Nonce Transaction counter Transaction Transaction Transaction ... Block Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 5 / 30
  • 6. Rappels Transactions Transactions Version no In-counter Input Input Input ... Out-counter Output 1 Output 2 Output 3 ... Transaction Value Txout-script length Txout-script Output Previous TxHash Previous Txout-index Txin-script length Input Txin-script Sequence number Lock time Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 6 / 30
  • 7. Rappels Transactions Transactions Tx #42 Tx #88 Input 1 Input 2 Input 3 Input 4 Output 1 2 BTC Output 2 5 BTC Output 3 1 BTC Output 4 3 BTC Tx #33 Output 1 0.5 BTC Output 2 0.5 BTC Output 3 8 BTC Output 1 3 BTC Output 2 4 BTC Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 7 / 30
  • 8. Rappels Scripts Scripts: où? Tx #42 Tx #88 Input scriptOutput script Script = Input script + Output script Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 8 / 30
  • 9. Rappels Scripts Scripts: principe Tx #42 Tx #88 ???A + B= 42 scriptSig scriptPubKey Script scriptSig, scriptPubKey ???, A + B = 42 Résolution A = 40, B = 2, A + B = 42 Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 9 / 30
  • 10. Rappels Scripts Scripts: Pay to Public Key Hash Tx #42 Tx #88 sig pubKeyOP_DUP OP_HASH160 pubKeyHash OP_EQUALVERIFY OP_CHECKSIG Script sig pubKey OP_DUP OP_HASH160 pubKeyHash OP_EQUALVERIFY OP_CHECKSIG Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 10 / 30
  • 11. Rappels Scripts Execution Script ⇒ sig pubKey OP_DUP OP_HASH160 pubKeyHash OP_EQUALVERIFY OP_CHECKSIG Pile avant [vide]. Pile après sig. Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 11 / 30
  • 12. Rappels Scripts Execution Script sig ⇒ pubKey OP_DUP OP_HASH160 pubKeyHash OP_EQUALVERIFY OP_CHECKSIG Pile avant sig. Pile après pubKey sig Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 12 / 30
  • 13. Rappels Scripts Execution Script sig pubKey ⇒ OP_DUP OP_HASH160 pubKeyHash OP_EQUALVERIFY OP_CHECKSIG Pile avant pubKey sig Pile après pubKey pubKey sig Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 13 / 30
  • 14. Rappels Scripts Execution Script sig pubKey OP_DUP ⇒ OP_HASH160 pubKeyHash OP_EQUALVERIFY OP_CHECKSIG Pile avant pubKey pubKey sig Pile après pubHashA pubKey sig Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 14 / 30
  • 15. Rappels Scripts Execution Script sig pubKey OP_DUP OP_HASH160 ⇒ pubKeyHash OP_EQUALVERIFY OP_CHECKSIG Pile avant pubHashA pubKey sig Pile après pubKeyHash pubHashA pubKey sig Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 15 / 30
  • 16. Rappels Scripts Execution Script sig pubKey OP_DUP OP_HASH160 pubKeyHash ⇒ OP_EQUALVERIFY OP_CHECKSIG Pile avant pubKeyHash pubHashA pubKey sig Pile après pubKey sig Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 16 / 30
  • 17. Rappels Scripts Execution Script sig pubKey OP_DUP OP_HASH160 pubKeyHash OP_EQUALVERIFY ⇒ OP_CHECKSIG Pile avant pubKey sig Pile après true Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 17 / 30
  • 18. Contrats Table of Contents 1 Rappels Adresses et clés publiques Blocks Transactions Scripts 2 Contrats Escrow Campagne de nancement Dépôt de garantie 3 Épilogue Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 18 / 30
  • 19. Contrats Escrow Escrow Tx #42 Tx #88 OP_FALSE sig1 sig2OP_2 pubKey1 pubKey2 pubKey3 OP_3 OP_CHECKMULTISIG Script OP_FALSE sig1 sig2 OP_2 pubKey1 pubKey2 pubKey3 OP_3 OP_CHECKMULTISIG Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 19 / 30
  • 20. Contrats Campagne de nancement Campagne de nancement: principe Cahier des charges Le fondateur a besoin de 20 BTC. 4 participants doivent donner 5 BTC. S'il n'y a pas assez de participants, personne ne paye. Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 20 / 30
  • 21. Contrats Campagne de nancement Campagne de nancement: implémentation Tx #42 Tx #88 Input 1 Output 1 5 BTC Output 1 20 BTC Tx #43 Tx #89 Input 1 Output 1 5 BTC Output 1 20 BTC Alice: Bob: Promesses de don Chaque participant créé une transaction avec comme sortie une adresse du fondateur, mais avec le montant total de la campagne. Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 21 / 30
  • 22. Contrats Campagne de nancement Campagne de nancement: implémentation Tx #42 Tx #105 Input 1 Output 1 5 BTC Output 1 20 BTCTx #43 Input 2 Output 1 5 BTC Alice: Bob: Input 3 Input 4 Phase de collecte Le fondateur crée une transaction en fusionnant toutes celles qu'il a reçu. Utilisation du drapeau SIGHASH_ANYONECANPAY. Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 22 / 30
  • 23. Contrats Campagne de nancement Quelques types de signatures SIGHASH_ALL|SIGHASH_ANYONECANPAY Signe tous les outputs et seulement cet input. N'importe qui peut contribuer des satoshis à la transaction, mais sans changer où ils vont. SIGHASH_SINGLE|SIGHASH_ANYONECANPAY Signe seulement ce couple input/output. Permet à n'importe qui de rajouter des inputs et des outputs. SIGHASH_NONE|SIGHASH_ANYONECANPAY Signe seulement cet input. N'importe qui peut dépenser les satoshis associés comme il lui semble en rajoutant des inputs et des outputs. Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 23 / 30
  • 24. Contrats Dépôt de garantie Dépôt de garantie: cahier des charges Cahier des charges Une somme provenant de l'utilisateur est bloquée pendant une durée déterminée. À la n du temps, la somme est automatiquement re-transférée à l'utilisateur. Les deux parties peuvent annuler/modier le contrat à loisir, mais ensemble. Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 24 / 30
  • 25. Contrats Dépôt de garantie Dépôt de garantie: implémentation Génération de clés L'utilisateur et le fournisseur de service s'échangent chacun une clé publique: pubKeyUser et pubKeyService. Première transaction L'utilisateur génère une transaction à destination du fournisseur nécessitant les deux signatures associées. Tx #42 OP_2 pubUser pubKeyService OP_2 OP_CHECKMULTISIGInput 1 Tx #37 Output 1 10 BTC Il envoie au fournisseur l'empreinte de cette transaction. Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 25 / 30
  • 26. Contrats Dépôt de garantie Dépôt de garantie: implémentation Transaction retour Le fournisseur génère une deuxième transaction qui dépense la première et la renvoi à l'utilisateur. Tx #42 OP_2 pubUser pubKeyService OP_2 OP_CHECKMULTISIGInput 1 Tx #37 Output 1 10 BTC Tx #63 OP_DUP OP_HASH160 pubKeyLocataire OP_EQUALVERIFY OP_CHECKSIG OP_FALSE 0 sigService LockTime: 6 mois Sequence number: 0 Le LockTime est conguré selon la durée voulue du dépôt, et le numéro de séquence de l'input est mis à 0. Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 26 / 30
  • 27. Contrats Dépôt de garantie Signature du contrat Signature du contrat L'utilisateur ajoute sa signature dans la transaction retour, puis publie les deux transactions. Fin normale du contrat À la n du contrat, la transaction est inclue dans un bloc, et les bitcoins retournent à l'utilisateur. Modication du contrat Les deux utilisateurs peuvent recréer une transaction retour avec des modalités diérentes, en incrémentant le Sequence Number. Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 27 / 30
  • 28. Épilogue Table of Contents 1 Rappels Adresses et clés publiques Blocks Transactions Scripts 2 Contrats Escrow Campagne de nancement Dépôt de garantie 3 Épilogue Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 28 / 30
  • 29. Épilogue Mais encore? Laverie Pour brouiller les pistes dans les transactions. Micro paiement Même principe que pour le dépôt de garantie. Loterie Andrychowicz, Dziembowski, Malinowski, Mazurek. Secure Multiparty Computations on Bitcoin Cryptology ePrint Report 2013/784. Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 29 / 30
  • 30. Épilogue Fin 1 Rappels Adresses et clés publiques Blocks Transactions Scripts 2 Contrats Escrow Campagne de nancement Dépôt de garantie 3 Épilogue Erwan Martin (Bitcoin Lyon) Bitcoin contracts June 30, 2015 30 / 30