SlideShare une entreprise Scribd logo
1  sur  82
Télécharger pour lire hors ligne
Leganés
6 Febrero 2013

Alberto Gómez Toribio ( @gotoalberto )

Bitcoin protocol for developers

Except where otherwise noted, this work is licensed under: http://creativecommons.org/licenses/by-nc-sa/3.0/

c_b_n_a
Coinffeine.com

Leganés
6 Febrero 2013

Alberto Gómez

@gotoalberto

“OpenData and Bitcoin Developer on fire.
Great coders are today’s rock stars. That’s it!”

Alvaro Polo

@apolovald

“Software development enthusiast and aviation geek. Give me a
higher-order function and I shall move the world.”

A P2P Bitcoin exchange

Sebastián Ortega @_sortega
“Vocational coder since childhood, he will annoy you with concepts
like "monad" and "actor model" but gets the work done.”

Ximo Guanter
“Theoretical computer science believer by night, pragmatic ship-it developer by day.
My brain runs on glucose, caffeine, general abstract nonsense and type theory.”

Except where otherwise noted, this work is licensed under: http://creativecommons.org/licenses/by-nc-sa/3.0/

c_b_n_a
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

What is the Bitcoin Protocol?
● Network protocol
○ Blockchain mining
○ Fees and commitment rules
○ Sharing protocol: Gossip, Bittorrent, Gnutella...

● Transactions Mechanics
○ Validations of the money source
○ Protocol to spend the money
○ Bitcoin Scripting
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Network protocol
● Blockchain
○ The Blockchain is a distributed ledger book

○ Create a Block in chain require a proof of work
dc7047be… = SHA256(new_block_hash)

○ Forks are discarded, the most complex chain wins.
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Network protocol
● Other services:
○ The Blockchain is used to storage
usernames.
○ Tweets are shared between users using a DHT protocol.
○ The older messages are discarded.
○ Incentive to generate blocks on Blockchain:
Sponsored messages.
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Network protocol
● Colored Coins:
○ The Blockchain is used to storage key-value strings,
as internet web domains / IP.
○ You can register a domain spending Namecoins.
○ The fee by register a name is decreased in time.
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Transactions Mechanic
● Transaction anatomy
{

txid
: 5c084b… ,
locktime : 0,
vin
: [
{
txid
vout
scriptSig

:
:
{

feff4b…
0
asm : d8f67a…

…}
…}
vout

…]
: [
{
value
reqsigs
scriptPubKey

:
:
{

2.52
1
asm : OP_DUP OP_HASH160 cb1f48…
OP_EQUALSVERIFY OP_CHECKSIG

addresses
…}
…]
…}

…}
:

[ 172D5w7C… ]
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Transactions Mechanic
● Transaction anatomy
{

txid
: 5c084b… ,
locktime : 0,
vin
: [
{

Transaction Id, changes when a field is changed or tx is signed.

txid
vout
scriptSig

:
:
{

feff4b…
0
asm : d8f67a…

…}
…}
vout

…]
: [
{
value
reqsigs
scriptPubKey

:
:
{

2.52
1
asm : OP_DUP OP_HASH160 cb1f48…
OP_EQUALSVERIFY OP_CHECKSIG

addresses
…}
…]
…}

…}
:

[ 172D5w7C… ]
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Transactions Mechanic
● Transaction anatomy
{

txid
: 5c084b… ,
locktime : 0,
Locktime, Block or Time up to which this tx cannot be broadcasted.
vin
: [
{
txid
: feff4b…
vout
: 0
scriptSig
{
asm : d8f67a…
…}
…}
…]
vout
: [
{
value
: 2.52
reqsigs
: 1
scriptPubKey {
asm : OP_DUP OP_HASH160 cb1f48…
OP_EQUALSVERIFY OP_CHECKSIG
…}
addresses
: [ 172D5w7C… ]
…}
…]
…}
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Transactions Mechanic
● Transaction anatomy
{

txid
: 5c084b… ,
locktime : 0,
vin
: [
{
txid
vout
scriptSig

:
:
{

feff4b…
0

TXid reference output for this input.

asm : d8f67a…
…}
…}
vout

…]
: [
{
value
reqsigs
scriptPubKey

:
:
{

2.52
1
asm : OP_DUP OP_HASH160 cb1f48…
OP_EQUALSVERIFY OP_CHECKSIG

addresses
…}
…]
…}

…}
:

[ 172D5w7C… ]
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Transactions Mechanic
● Transaction anatomy
{

txid
: 5c084b… ,
locktime : 0,
vin
: [
{
txid
vout
scriptSig

:
:
{

feff4b…
0

Output number reference in previous tx

asm : d8f67a…
…}
…}
vout

…]
: [
{
value
reqsigs
scriptPubKey

:
:
{

2.52
1
asm : OP_DUP OP_HASH160 cb1f48…
OP_EQUALSVERIFY OP_CHECKSIG

addresses
…}
…]
…}

…}
:

[ 172D5w7C… ]
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Transactions Mechanic
● Transaction anatomy
{

txid
: 5c084b… ,
locktime : 0,
vin
: [
{
txid
vout
scriptSig

:
:
{

feff4b…
0
asm : d8f67a…

…}

ScriptSig which unlock the
connected OutputScript

…}
vout

…]
: [
{
value
reqsigs
scriptPubKey

:
:
{

2.52
1
asm : OP_DUP OP_HASH160 cb1f48…
OP_EQUALSVERIFY OP_CHECKSIG

addresses
…}
…]
…}

…}
:

[ 172D5w7C… ]
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Transactions Mechanic
● Transaction anatomy
{

txid
: 5c084b… ,
locktime : 0,
vin
: [
{
txid
vout
scriptSig

:
:
{

feff4b…
0
asm : d8f67a…

…}
…}
vout

…]
: [
{
value
reqsigs
scriptPubKey

:
:
{

2.52
1

Value to transfer. The difference with the
summatory of inputs values is the fee.

asm : OP_DUP OP_HASH160 cb1f48…
OP_EQUALSVERIFY OP_CHECKSIG
addresses
…}
…]
…}

…}
:

[ 172D5w7C… ]
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Transactions Mechanic
● Transaction anatomy
{

txid
: 5c084b… ,
locktime : 0,
vin
: [
{
txid
vout
scriptSig

:
:
{

feff4b…
0
asm : d8f67a…

…}
…}
vout

…]
: [
{
value
reqsigs
scriptPubKey

addresses
…}
…]
…}

:
:
{

…}
:

Number of sigs required to broadcast this
transaction. The signers are included in the
“addresses” array.
asm : OP_DUP OP_HASH160 cb1f48…
OP_EQUALSVERIFY OP_CHECKSIG
2.52
1

[ 172D5w7C… ]
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Transactions Mechanic
● Transaction anatomy
{

txid
: 5c084b… ,
locktime : 0,
vin
: [
{
txid
vout
scriptSig

:
:
{

feff4b…
0
asm : d8f67a…

…}
…}
vout

…]
: [
{

…}
…]
…}

Script. It defines how the money can be spent and by whom.
value
: 2.52
reqsigs
: 1
scriptPubKey {
asm : OP_DUP OP_HASH160 cb1f48…
OP_EQUALSVERIFY OP_CHECKSIG
…}
addresses
: [ 172D5w7C… ]
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Transactions Mechanic
● Transaction anatomy
{

txid
: 5c084b… ,
locktime : 0,
vin
: [
{
txid
vout
scriptSig

:
:
{

feff4b…
0
asm : d8f67a…

…}
…}
vout

…]
: [
{
value
reqsigs
scriptPubKey

:
:
{

2.52
1
asm : OP_DUP OP_HASH160 cb1f48…
OP_EQUALSVERIFY OP_CHECKSIG

addresses
…}
…]
…}

…}
:

[ 172D5w7C… ]
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Bitcoin Script
● It Allows to define how an output will be spent
and by whom.
● Is a non Turing-Complete language which is
evaluated as a Stack, from left to right.
● It just allows to write pure functions
(without context)
● Is a non Turing-Complete language which is
evaluated with a stack machine.
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

How Bitcoin Script works?
(Public Key Hash)

OP_DUP OP_HASH160 cb1f48…

OP_EQUALVERIFY OP_CHECKSIG
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

How Bitcoin Script works?
(Signature)

(Public Key)

bbba3f5… 172D5w7C…

(Public Key Hash)

OP_DUP OP_HASH160 cb1f48…

OP_EQUALVERIFY OP_CHECKSIG
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

How Bitcoin Script works?
(Signature)

(Public Key)

bbba3f5… 172D5w7C…

(Public Key Hash)

OP_DUP OP_HASH160 cb1f48…

Stack

OP_EQUALVERIFY OP_CHECKSIG
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

How Bitcoin Script works?
(Signature)

(Public Key)

bbba3f5… 172D5w7C…

(Public Key Hash)

OP_DUP OP_HASH160 cb1f48…

Stack

OP_EQUALVERIFY OP_CHECKSIG
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

How Bitcoin Script works?
(Public Key)

(Public Key Hash)

172D5w7C…

OP_DUP OP_HASH160 cb1f48…

Stack
(Signature)

bbba3f5…

OP_EQUALVERIFY OP_CHECKSIG
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

How Bitcoin Script works?
(Public Key)

(Public Key Hash)

172D5w7C…

OP_DUP OP_HASH160 cb1f48…

Stack
(Signature)

bbba3f5…

OP_EQUALVERIFY OP_CHECKSIG
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

How Bitcoin Script works?
(Public Key Hash)

OP_DUP OP_HASH160 cb1f48…

Stack
(Public Key)
(Signature)

172D5w7C…
bbba3f5…

OP_EQUALVERIFY OP_CHECKSIG
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

How Bitcoin Script works?
(Public Key Hash)

OP_DUP OP_HASH160 cb1f48…

Stack
(Public Key)
(Signature)

172D5w7C…
bbba3f5…

OP_EQUALVERIFY OP_CHECKSIG
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

How Bitcoin Script works?
(Public Key Hash)

OP_HASH160 cb1f48…

Stack
(Public Key)
(Public Key)
(Signature)

172D5w7C…
172D5w7C…
bbba3f5…

OP_EQUALVERIFY OP_CHECKSIG
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

How Bitcoin Script works?
(Public Key Hash)

OP_HASH160 cb1f48…

Stack
(Public Key)
(Public Key)
(Signature)

172D5w7C…
172D5w7C…
bbba3f5…

OP_EQUALVERIFY OP_CHECKSIG
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

How Bitcoin Script works?
(Public Key Hash)

cb1f48…

Stack
(Public Key Hash)
(Public Key)
(Signature)

cb1f48…
172D5w7C…
bbba3f5…

OP_EQUALVERIFY OP_CHECKSIG
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

How Bitcoin Script works?
(Public Key Hash)

cb1f48…

Stack
(Public Key Hash)
(Public Key)
(Signature)

cb1f48…
172D5w7C…
bbba3f5…

OP_EQUALVERIFY OP_CHECKSIG
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

How Bitcoin Script works?
OP_EQUALVERIFY OP_CHECKSIG

Stack
(Public Key Hash)
(Public Key Hash)
(Public Key)
(Signature)

cb1f48…
cb1f48…
172D5w7C…
bbba3f5…
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

How Bitcoin Script works?
OP_EQUALVERIFY OP_CHECKSIG

Stack
(Public Key Hash)
(Public Key Hash)
(Public Key)
(Signature)

cb1f48…
cb1f48…
172D5w7C…
bbba3f5…
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

How Bitcoin Script works?
OP_CHECKSIG

Stack
(Public Key)
(Signature)

172D5w7C…
bbba3f5…
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

How Bitcoin Script works?
OP_CHECKSIG

Stack
(Public Key)
(Signature)

172D5w7C…
bbba3f5…
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

How Bitcoin Script works?
(EMPTY)

Stack
(EMPTY)

SUCCESS!

#BitcoinT3F
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

The sky is the limit! (Odd/Even Bet)
<Sig> <PubKeyB> <7bb> <5aa> OP_2DUP OP_HASH160 <aHash> OP_EQUALVERIFY OP_SWAP
OP_HASH160 <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2>
OP_SWAP OP_MOD
OP_IF
OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ELSE
OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

The sky is the limit! (Odd/Even Bet)
<Sig> <PubKeyB> <7bb> <5aa> OP_2DUP OP_HASH160 <aHash> OP_EQUALVERIFY OP_SWAP
OP_HASH160 <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2>
OP_SWAP OP_MOD
OP_IF
OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ELSE
OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF

Random
diversion!

@_sortega
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

The sky is the limit! (Odd/Even Bet)
<Sig> <PubKeyB> <7bb> <5aa> OP_2DUP OP_HASH160 <aHash> OP_EQUALVERIFY OP_SWAP
OP_HASH160 <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2>
OP_SWAP OP_MOD
OP_IF
OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ELSE
OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF

Stack
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

The sky is the limit! (Odd/Even Bet)
<PubKeyB> <7bb> <5aa> OP_2DUP OP_HASH160 <aHash> OP_EQUALVERIFY OP_SWAP
OP_HASH160 <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2>
OP_SWAP OP_MOD
OP_IF
OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ELSE
OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF

Stack
<Sig>
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

The sky is the limit! (Odd/Even Bet)
<7bb> <5aa> OP_2DUP OP_HASH160 <aHash> OP_EQUALVERIFY OP_SWAP
OP_HASH160 <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2>
OP_SWAP OP_MOD
OP_IF
OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ELSE
OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF

Stack
<PubKey>
<Sig>
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

The sky is the limit! (Odd/Even Bet)
<5aa> OP_2DUP OP_HASH160 <aHash> OP_EQUALVERIFY OP_SWAP
OP_HASH160 <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2>
OP_SWAP OP_MOD
OP_IF
OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ELSE
OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF

Stack
<7bb>
<PubKey>
<Sig>
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

The sky is the limit! (Odd/Even Bet)
OP_2DUP OP_HASH160 <aHash> OP_EQUALVERIFY OP_SWAP
OP_HASH160 <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2>
OP_SWAP OP_MOD
OP_IF
OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ELSE
OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF

Stack
<5aa>
<7bb>
<PubKeyB>
<Sig>
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

The sky is the limit! (Odd/Even Bet)
OP_HASH160 <aHash> OP_EQUALVERIFY OP_SWAP
OP_HASH160 <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2>
OP_SWAP OP_MOD
OP_IF
OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ELSE
OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF

Stack
<5aa>
<7bb>
<5aa>
<7bb>
<PubKeyB>
<Sig>
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

The sky is the limit! (Odd/Even Bet)
<aHash> OP_EQUALVERIFY OP_SWAP
OP_HASH160 <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2>
OP_SWAP OP_MOD
OP_IF
OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ELSE
OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF

Stack
<aHash>
<7bb>
<5aa>
<7bb>
<PubKeyB>
<Sig>
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

The sky is the limit! (Odd/Even Bet)
OP_EQUALVERIFY OP_SWAP
OP_HASH160 <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2>
OP_SWAP OP_MOD
OP_IF
OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ELSE
OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF

Stack
<aHash>
<aHash>
<5aa>
<7bb>
<7bb>
<PubKeyB>
<Sig>
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

The sky is the limit! (Odd/Even Bet)
OP_SWAP
OP_HASH160 <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2>
OP_SWAP OP_MOD
OP_IF
OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ELSE
OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF

Stack
<5aa>
<7bb>
<7bb>
<PubKeyB>
<Sig>
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

The sky is the limit! (Odd/Even Bet)
OP_HASH160 <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2>
OP_SWAP OP_MOD
OP_IF
OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ELSE
OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF

Stack
<7bb>
<5aa>
<7bb>
<PubKeyB>
<Sig>
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

The sky is the limit! (Odd/Even Bet)
<bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2>
OP_SWAP OP_MOD
OP_IF
OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ELSE
OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF

Stack
<bHash>
<5aa>
<7bb>
<PubKeyB>
<Sig>
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

The sky is the limit! (Odd/Even Bet)
OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2>
OP_SWAP OP_MOD
OP_IF
OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ELSE
OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF

Stack
<bHash>
<bHash>
<5aa>
<7bb>
<PubKeyB>
<Sig>
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

The sky is the limit! (Odd/Even Bet)
<1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2>
OP_SWAP OP_MOD
OP_IF
OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ELSE
OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF

Stack
<5aa>
<7bb>
<PubKeyB>
<Sig>
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

The sky is the limit! (Odd/Even Bet)
OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2>
OP_SWAP OP_MOD
OP_IF
OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ELSE
OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF

Stack
<1>
<5aa>
<7bb>
<PubKeyB>
<Sig>
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

The sky is the limit! (Odd/Even Bet)
OP_SWAP <1> OP_LEFT OP_ADD <2>
OP_SWAP OP_MOD
OP_IF
OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ELSE
OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF

Stack
<5>
<7bb>
<PubKeyB>
<Sig>
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

The sky is the limit! (Odd/Even Bet)
<1> OP_LEFT OP_ADD <2>
OP_SWAP OP_MOD
OP_IF
OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ELSE
OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF

Stack
<7bb>
<5>
<PubKeyB>
<Sig>
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

The sky is the limit! (Odd/Even Bet)
OP_LEFT OP_ADD <2>
OP_SWAP OP_MOD
OP_IF
OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ELSE
OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF

Stack
<1>
<7bb>
<5>
<PubKeyB>
<Sig>
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

The sky is the limit! (Odd/Even Bet)
OP_ADD <2>
OP_SWAP OP_MOD
OP_IF
OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ELSE
OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF

Stack
<7>
<5>
<PubKeyB>
<Sig>
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

The sky is the limit! (Odd/Even Bet)
<2>
OP_SWAP OP_MOD
OP_IF
OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ELSE
OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF

Stack
<12>
<PubKeyB>
<Sig>
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

The sky is the limit! (Odd/Even Bet)
OP_SWAP OP_MOD
OP_IF
OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ELSE
OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF

Stack
<2>
<12>
<PubKeyB>
<Sig>

#BitcoinT3F
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

The sky is the limit! (Odd/Even Bet)
OP_MOD
OP_IF
OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ELSE
OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF

Stack
<12>
<2>
<PubKeyB>
<Sig>

#BitcoinT3F
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

The sky is the limit! (Odd/Even Bet)
OP_IF
OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ELSE
OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG
OP_ENDIF

Stack
<0>
<PubKeyB>
<Sig>

#BitcoinT3F
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

The sky is the limit! (Odd/Even Bet)

OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG

Stack
<PubKeyB>
<Sig>

(Standard Script)

#BitcoinT3F
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

The sky is the limit! (Odd/Even Bet)
● Possible real use:
○ Random user to pay the transaction fees.
○ Help to define asymmetric scenario (secrets)

#BitcoinT3F
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Context: Oracles
● The oracle contract allow define how the money
is spent including external state.
○ Allows to make reversible transactions.
○ Allow to pay, only if an external condition is true, for
example the result of a search in google, or the API SEUR
response.
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Context: Oracles
● Example of a reversible payment using a Oracle
○ First you generate (in private) a multisig transaction as
this:
TX1
in { 1 BTC BOB }
out { 1 BTC MULTISIGVERIFY BOB SAM }

○ Then you must obtain signed from counterpart:
TX2
in { TX1[0] }
out { 1 BTC

TX3
in { TX1[0] }
out { 1 BTC

<SeurAPI(trackID) == ‘RETURNED’>
OP_HASH160 <ExternalScriptHash> OP_EQUALSVERIFY
<OraclePubKey> <SamPubKey> 2 OP_CHECKMULTISIGVERIFY }

<SeurAPI(trackID) == ‘DELIVERED’>
OP_HASH160 <ExternalScriptHash> OP_EQUALSVERIFY
<OraclePubKey> <BobPubKey> 2 OP_CHECKMULTISIGVERIFY }
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

Context: Oracles
● Execution
TX2
in { TX1[0] }
out { 1 BTC
<SeurAPI(trackID) == ‘RETURNED’>
OP_HASH160 <ExternalScriptHash>
OP_EQUALSVERIFY
<OraclePubKey> <SamPubKey> 2
OP_CHECKMULTISIGVERIFY }

#BitcoinT3F
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Context: Oracles
● Execution
<OracleSig> <SamSig> <SeurAPI(trackID) == ‘RETURNED’>
OP_HASH160 <ExternalScriptHash> OP_EQUALSVERIFY
<OraclePubKey> <SamPubKey> 2 OP_CHECKMULTISIGVERIFY

Stack
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Context: Oracles
● Execution
<SamSig> <SeurAPI(trackID) == ‘RETURNED’>
OP_HASH160 <ExternalScriptHash> OP_EQUALSVERIFY
<OraclePubKey> <SamPubKey> 2 OP_CHECKMULTISIGVERIFY

Stack
<OracleSig>
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Context: Oracles
● Execution
<SeurAPI(trackID) == ‘RETURNED’>
OP_HASH160 <ExternalScriptHash> OP_EQUALSVERIFY
<OraclePubKey> <SamPubKey> 2 OP_CHECKMULTISIGVERIFY

Stack
<SamSig>
<OracleSig>
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

Context: Oracles
● Execution

OP_HASH160 <ExternalScriptHash> OP_EQUALSVERIFY
<OraclePubKey> <SamPubKey> 2 OP_CHECKMULTISIGVERIFY

Stack
<SeurAPI(trackID) == ‘RETURNED’>
<SamSig>
<OracleSig>

#BitcoinT3F
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

Context: Oracles
● Execution

<ExternalScriptHash> OP_EQUALSVERIFY
<OraclePubKey> <SamPubKey> 2 OP_CHECKMULTISIGVERIFY

Stack
<ScriptHash>
<SamSig>
<OacleSig>

#BitcoinT3F
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

Context: Oracles
● Execution

OP_EQUALSVERIFY
<OraclePubKey> <SamPubKey> 2 OP_CHECKMULTISIGVERIFY

Stack
<ExternalScriptHash>
<ScriptHash>
<SamSig>
<OracleSig>

#BitcoinT3F
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

Context: Oracles
● Execution

<OraclePubKey> <SamPubKey> 2 OP_CHECKMULTISIGVERIFY

Stack
<SamSig>
<OracleSig>

#BitcoinT3F
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

Context: Oracles
● Execution

SUCCESS!

Stack

#BitcoinT3F
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Fees? Micro Payment Channels!
● Transactions from a checkpoint without
broadcast
● Allows commit money safely
● Allows to pay on demand by the second
● For example: decentralized WiFi Hotspots or
subcontracting services in third world countries.
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

Micro Payment Channels Mechanic
TX1
IN {0: 1 BTC
}
OUT {0: 1 BTC MULTISIG BOB SAM }

#BitcoinT3F
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

Micro Payment Channels Mechanic
TX1
IN {0: 1 BTC
}
OUT {0: 1 BTC MULTISIG BOB SAM }

TX2
IN {TX1[0]: 1 BTC
}
OUT {
0 : 1 BTC BOB }
LOCKTIME : 18

#BitcoinT3F
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

Micro Payment Channels Mechanic
TX1
IN {0: 1 BTC
}
OUT {0: 1 BTC MULTISIG BOB SAM }

TX2
IN {TX1[0]: 1 BTC
}
OUT {
0 : 1 BTC BOB }
LOCKTIME : 18

#BitcoinT3F
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

Micro Payment Channels Mechanic
TX1
IN {0: 1 BTC
}
OUT {0: 1 BTC MULTISIG BOB SAM }

TX2
IN {TX1[0]: 1 BTC
}
OUT {
0 : 1 BTC BOB }
LOCKTIME : 18

#BitcoinT3F
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Micro Payment Channels Mechanic
TX1
IN {0: 1 BTC
}
OUT {0: 1 BTC MULTISIG BOB SAM }

TX2
IN {TX1[0]: 1 BTC
}
OUT {
0 : 1 BTC BOB }
LOCKTIME : 18

IN {TX1[0] 1 BTC
}
OUT {0: 0,9 BTC BOB
0,1 BTC SAM }
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Micro Payment Channels Mechanic
TX1
IN {0: 1 BTC
}
OUT {0: 1 BTC MULTISIG BOB SAM }

TX2
IN {TX1[0]: 1 BTC
}
OUT {
0 : 1 BTC BOB }
LOCKTIME : 18

IN {TX1[0] 1 BTC
}
OUT {0: 0,8 BTC BOB
0,2 BTC SAM }
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Micro Payment Channels Mechanic
TX1
IN {0: 1 BTC
}
OUT {0: 1 BTC MULTISIG BOB SAM }

TX2
IN {TX1[0]: 1 BTC
}
OUT {
0 : 1 BTC BOB }
LOCKTIME : 18

IN {TX1[0] 1 BTC
}
OUT {0: 0,7 BTC BOB
0,3 BTC SAM }
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Micro Payment Channels Mechanic
TX1
IN {0: 1 BTC
}
OUT {0: 1 BTC MULTISIG BOB SAM }

IN {TX1[0] 1 BTC
}
OUT {0: 0,6 BTC BOB
0,4 BTC SAM }

TX2
IN {TX1[0]: 1 BTC
}
OUT {
0 : 1 BTC BOB }
LOCKTIME : 18

BREAK!
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

Micro Payment Channels Mechanic
TX1
IN {0: 1 BTC
}
OUT {0: 1 BTC MULTISIG BOB SAM }

TX2
IN {TX1[0]: 1 BTC
}
OUT {
0 : 1 BTC BOB }
LOCKTIME : 18

IN {TX1[0] 1 BTC
}
OUT {0: 0,6 BTC BOB
0,4 BTC SAM }
Leganés
6 Febrero 2013

Bitcoin Protocol for Developers

#BitcoinT3F

THANKS!
● BigData is the current wave, P2P is the next.
● APIs and P2P are the next challenge on finantial world.
● Bitcoin technology and protocol is here to stay.

Contenu connexe

Tendances

Presentation_Topalidis_Giorgos
Presentation_Topalidis_GiorgosPresentation_Topalidis_Giorgos
Presentation_Topalidis_GiorgosGiorgos Topalidis
 
Switcheo Network - Advanced NEO Smart Contracts
Switcheo Network - Advanced NEO Smart ContractsSwitcheo Network - Advanced NEO Smart Contracts
Switcheo Network - Advanced NEO Smart ContractsSwitcheo
 
Proof-of-Stake & Its Improvements (San Francisco Bitcoin Devs Hackathon)
Proof-of-Stake & Its Improvements (San Francisco Bitcoin Devs Hackathon)Proof-of-Stake & Its Improvements (San Francisco Bitcoin Devs Hackathon)
Proof-of-Stake & Its Improvements (San Francisco Bitcoin Devs Hackathon)Alex Chepurnoy
 
Bitcoin Wallet &amp Keys
Bitcoin Wallet &amp KeysBitcoin Wallet &amp Keys
Bitcoin Wallet &amp KeysShun Shiku
 
The day I ruled the world (RootedCON 2020)
The day I ruled the world (RootedCON 2020)The day I ruled the world (RootedCON 2020)
The day I ruled the world (RootedCON 2020)Javier Junquera
 
Ethereum VM and DSLs for Smart Contracts (updated on May 12th 2015)
Ethereum VM and DSLs for Smart Contracts (updated on May 12th 2015)Ethereum VM and DSLs for Smart Contracts (updated on May 12th 2015)
Ethereum VM and DSLs for Smart Contracts (updated on May 12th 2015)Zvi Avraham
 
Scorex meetup-aug-2015
Scorex meetup-aug-2015Scorex meetup-aug-2015
Scorex meetup-aug-2015Alex Chepurnoy
 
Cryptographic algorithms diversity: Russian (GOST) crypto algorithms
Cryptographic algorithms diversity: Russian (GOST) crypto algorithmsCryptographic algorithms diversity: Russian (GOST) crypto algorithms
Cryptographic algorithms diversity: Russian (GOST) crypto algorithmsDmitry Baryshkov
 
Blockchain Cryptography for Developers (Nakov @ BGWebSummit 2018)
Blockchain Cryptography for Developers (Nakov @ BGWebSummit 2018)Blockchain Cryptography for Developers (Nakov @ BGWebSummit 2018)
Blockchain Cryptography for Developers (Nakov @ BGWebSummit 2018)Svetlin Nakov
 
Crypto Wallets: A Technical Perspective (Nakov at OpenFest 2018)
Crypto Wallets: A Technical Perspective (Nakov at OpenFest 2018)Crypto Wallets: A Technical Perspective (Nakov at OpenFest 2018)
Crypto Wallets: A Technical Perspective (Nakov at OpenFest 2018)Svetlin Nakov
 
Ethereum Smart Contracts on Hyperledger Fabric
Ethereum Smart Contracts on Hyperledger Fabric Ethereum Smart Contracts on Hyperledger Fabric
Ethereum Smart Contracts on Hyperledger Fabric Horea Porutiu
 
POD2::* and Perl translation documentation project
POD2::* and Perl translation documentation projectPOD2::* and Perl translation documentation project
POD2::* and Perl translation documentation projectEnrico Sorcinelli
 
Segregated witness and bitcoin scaling debate
Segregated witness and bitcoin scaling debateSegregated witness and bitcoin scaling debate
Segregated witness and bitcoin scaling debatedalcanto
 
Technology of Lightning Network in Tel Aviv, Israel
Technology of Lightning Network in Tel Aviv, IsraelTechnology of Lightning Network in Tel Aviv, Israel
Technology of Lightning Network in Tel Aviv, Israeltakayaimai
 
“Technical Intro to Blockhain” by Yurijs Pimenovs from Paybis at CryptoCurren...
“Technical Intro to Blockhain” by Yurijs Pimenovs from Paybis at CryptoCurren...“Technical Intro to Blockhain” by Yurijs Pimenovs from Paybis at CryptoCurren...
“Technical Intro to Blockhain” by Yurijs Pimenovs from Paybis at CryptoCurren...Dace Barone
 
Bitcoin Keys, Addresses & Wallets
Bitcoin Keys, Addresses & WalletsBitcoin Keys, Addresses & Wallets
Bitcoin Keys, Addresses & WalletsChristopher Allen
 
Cryptography for Absolute Beginners (May 2019)
Cryptography for Absolute Beginners (May 2019)Cryptography for Absolute Beginners (May 2019)
Cryptography for Absolute Beginners (May 2019)Svetlin Nakov
 

Tendances (18)

Presentation_Topalidis_Giorgos
Presentation_Topalidis_GiorgosPresentation_Topalidis_Giorgos
Presentation_Topalidis_Giorgos
 
Switcheo Network - Advanced NEO Smart Contracts
Switcheo Network - Advanced NEO Smart ContractsSwitcheo Network - Advanced NEO Smart Contracts
Switcheo Network - Advanced NEO Smart Contracts
 
Proof-of-Stake & Its Improvements (San Francisco Bitcoin Devs Hackathon)
Proof-of-Stake & Its Improvements (San Francisco Bitcoin Devs Hackathon)Proof-of-Stake & Its Improvements (San Francisco Bitcoin Devs Hackathon)
Proof-of-Stake & Its Improvements (San Francisco Bitcoin Devs Hackathon)
 
Bitcoin Wallet &amp Keys
Bitcoin Wallet &amp KeysBitcoin Wallet &amp Keys
Bitcoin Wallet &amp Keys
 
The day I ruled the world (RootedCON 2020)
The day I ruled the world (RootedCON 2020)The day I ruled the world (RootedCON 2020)
The day I ruled the world (RootedCON 2020)
 
Ethereum VM and DSLs for Smart Contracts (updated on May 12th 2015)
Ethereum VM and DSLs for Smart Contracts (updated on May 12th 2015)Ethereum VM and DSLs for Smart Contracts (updated on May 12th 2015)
Ethereum VM and DSLs for Smart Contracts (updated on May 12th 2015)
 
Scorex meetup-aug-2015
Scorex meetup-aug-2015Scorex meetup-aug-2015
Scorex meetup-aug-2015
 
Cryptographic algorithms diversity: Russian (GOST) crypto algorithms
Cryptographic algorithms diversity: Russian (GOST) crypto algorithmsCryptographic algorithms diversity: Russian (GOST) crypto algorithms
Cryptographic algorithms diversity: Russian (GOST) crypto algorithms
 
Blockchain Cryptography for Developers (Nakov @ BGWebSummit 2018)
Blockchain Cryptography for Developers (Nakov @ BGWebSummit 2018)Blockchain Cryptography for Developers (Nakov @ BGWebSummit 2018)
Blockchain Cryptography for Developers (Nakov @ BGWebSummit 2018)
 
Crypto Wallets: A Technical Perspective (Nakov at OpenFest 2018)
Crypto Wallets: A Technical Perspective (Nakov at OpenFest 2018)Crypto Wallets: A Technical Perspective (Nakov at OpenFest 2018)
Crypto Wallets: A Technical Perspective (Nakov at OpenFest 2018)
 
Ethereum Smart Contracts on Hyperledger Fabric
Ethereum Smart Contracts on Hyperledger Fabric Ethereum Smart Contracts on Hyperledger Fabric
Ethereum Smart Contracts on Hyperledger Fabric
 
POD2::* and Perl translation documentation project
POD2::* and Perl translation documentation projectPOD2::* and Perl translation documentation project
POD2::* and Perl translation documentation project
 
Segregated witness and bitcoin scaling debate
Segregated witness and bitcoin scaling debateSegregated witness and bitcoin scaling debate
Segregated witness and bitcoin scaling debate
 
Technology of Lightning Network in Tel Aviv, Israel
Technology of Lightning Network in Tel Aviv, IsraelTechnology of Lightning Network in Tel Aviv, Israel
Technology of Lightning Network in Tel Aviv, Israel
 
“Technical Intro to Blockhain” by Yurijs Pimenovs from Paybis at CryptoCurren...
“Technical Intro to Blockhain” by Yurijs Pimenovs from Paybis at CryptoCurren...“Technical Intro to Blockhain” by Yurijs Pimenovs from Paybis at CryptoCurren...
“Technical Intro to Blockhain” by Yurijs Pimenovs from Paybis at CryptoCurren...
 
Programming Decentralized Application
Programming Decentralized ApplicationProgramming Decentralized Application
Programming Decentralized Application
 
Bitcoin Keys, Addresses & Wallets
Bitcoin Keys, Addresses & WalletsBitcoin Keys, Addresses & Wallets
Bitcoin Keys, Addresses & Wallets
 
Cryptography for Absolute Beginners (May 2019)
Cryptography for Absolute Beginners (May 2019)Cryptography for Absolute Beginners (May 2019)
Cryptography for Absolute Beginners (May 2019)
 

Similaire à Bitcoin protocol for developerBitcoin Protocol for Developers

Blockchain Autopsies - Analyzing Ethereum Smart Contract Deaths
Blockchain Autopsies - Analyzing Ethereum Smart Contract DeathsBlockchain Autopsies - Analyzing Ethereum Smart Contract Deaths
Blockchain Autopsies - Analyzing Ethereum Smart Contract DeathsPriyanka Aash
 
Bitcoin Blockchain - Under the Hood
Bitcoin Blockchain - Under the HoodBitcoin Blockchain - Under the Hood
Bitcoin Blockchain - Under the HoodGalin Dinkov
 
How to Build Your Own Blockchain
How to Build Your Own BlockchainHow to Build Your Own Blockchain
How to Build Your Own BlockchainLeonid Beder
 
“A bitcoin mining rig”
“A bitcoin mining rig”“A bitcoin mining rig”
“A bitcoin mining rig”glitterlabs
 
Blockchain, cryptography and tokens — NYC Bar presentation
Blockchain, cryptography and tokens — NYC Bar presentationBlockchain, cryptography and tokens — NYC Bar presentation
Blockchain, cryptography and tokens — NYC Bar presentationPaperchain
 
Blockchain For Developers (Talk at Innopolis Blockchain Hackathon 2016)
Blockchain For Developers (Talk at Innopolis Blockchain Hackathon 2016)Blockchain For Developers (Talk at Innopolis Blockchain Hackathon 2016)
Blockchain For Developers (Talk at Innopolis Blockchain Hackathon 2016)Alex Chepurnoy
 
Crypto & Crpyocurrencies Intro
Crypto & Crpyocurrencies IntroCrypto & Crpyocurrencies Intro
Crypto & Crpyocurrencies IntroTal Shmueli
 
Best practices to build secure smart contracts
Best practices to build secure smart contractsBest practices to build secure smart contracts
Best practices to build secure smart contractsGautam Anand
 
growthbotics audit.pdf
growthbotics audit.pdfgrowthbotics audit.pdf
growthbotics audit.pdfWilson Kao
 
EthereumBlockchainMarch3 (1).pptx
EthereumBlockchainMarch3 (1).pptxEthereumBlockchainMarch3 (1).pptx
EthereumBlockchainMarch3 (1).pptxWijdenBenothmen1
 
Angular v2 et plus : le futur du développement d'applications en entreprise
Angular v2 et plus : le futur du développement d'applications en entrepriseAngular v2 et plus : le futur du développement d'applications en entreprise
Angular v2 et plus : le futur du développement d'applications en entrepriseLINAGORA
 
KubeCon EU 2016 Keynote: Pushing Kubernetes Forward
KubeCon EU 2016 Keynote: Pushing Kubernetes ForwardKubeCon EU 2016 Keynote: Pushing Kubernetes Forward
KubeCon EU 2016 Keynote: Pushing Kubernetes ForwardKubeAcademy
 
Microservices in Scala - theory & practice
Microservices in Scala - theory & practiceMicroservices in Scala - theory & practice
Microservices in Scala - theory & practiceŁukasz Sowa
 
The slower the stronger a story of password hash migration
The slower the stronger  a story of password hash migrationThe slower the stronger  a story of password hash migration
The slower the stronger a story of password hash migrationOWASP
 
Graph Gurus Episode 13: Visualizing Bitcoin Blockchain with Tiger Graph
Graph Gurus Episode 13: Visualizing Bitcoin Blockchain with Tiger Graph  Graph Gurus Episode 13: Visualizing Bitcoin Blockchain with Tiger Graph
Graph Gurus Episode 13: Visualizing Bitcoin Blockchain with Tiger Graph TigerGraph
 
Anonymity concerns of Bitcoin users
Anonymity concerns of Bitcoin usersAnonymity concerns of Bitcoin users
Anonymity concerns of Bitcoin usersAnil Gaihre
 
Eclipsecon Europe: Blockchain, Ethereum and Business Applications
Eclipsecon Europe: Blockchain, Ethereum and Business ApplicationsEclipsecon Europe: Blockchain, Ethereum and Business Applications
Eclipsecon Europe: Blockchain, Ethereum and Business ApplicationsMatthias Zimmermann
 
Simone Bronzini - Weaknesses of blockchain applications - Codemotion Milan 2018
Simone Bronzini - Weaknesses of blockchain applications - Codemotion Milan 2018Simone Bronzini - Weaknesses of blockchain applications - Codemotion Milan 2018
Simone Bronzini - Weaknesses of blockchain applications - Codemotion Milan 2018Codemotion
 
Unsung heroes Validator & Infra provider.pdf
Unsung heroes Validator & Infra provider.pdfUnsung heroes Validator & Infra provider.pdf
Unsung heroes Validator & Infra provider.pdfJiyun Kim
 

Similaire à Bitcoin protocol for developerBitcoin Protocol for Developers (20)

Blockchain Autopsies - Analyzing Ethereum Smart Contract Deaths
Blockchain Autopsies - Analyzing Ethereum Smart Contract DeathsBlockchain Autopsies - Analyzing Ethereum Smart Contract Deaths
Blockchain Autopsies - Analyzing Ethereum Smart Contract Deaths
 
Bitcoin Blockchain - Under the Hood
Bitcoin Blockchain - Under the HoodBitcoin Blockchain - Under the Hood
Bitcoin Blockchain - Under the Hood
 
How to Build Your Own Blockchain
How to Build Your Own BlockchainHow to Build Your Own Blockchain
How to Build Your Own Blockchain
 
“A bitcoin mining rig”
“A bitcoin mining rig”“A bitcoin mining rig”
“A bitcoin mining rig”
 
Blockchain, cryptography and tokens — NYC Bar presentation
Blockchain, cryptography and tokens — NYC Bar presentationBlockchain, cryptography and tokens — NYC Bar presentation
Blockchain, cryptography and tokens — NYC Bar presentation
 
Blockchain For Developers (Talk at Innopolis Blockchain Hackathon 2016)
Blockchain For Developers (Talk at Innopolis Blockchain Hackathon 2016)Blockchain For Developers (Talk at Innopolis Blockchain Hackathon 2016)
Blockchain For Developers (Talk at Innopolis Blockchain Hackathon 2016)
 
Crypto & Crpyocurrencies Intro
Crypto & Crpyocurrencies IntroCrypto & Crpyocurrencies Intro
Crypto & Crpyocurrencies Intro
 
Best practices to build secure smart contracts
Best practices to build secure smart contractsBest practices to build secure smart contracts
Best practices to build secure smart contracts
 
growthbotics audit.pdf
growthbotics audit.pdfgrowthbotics audit.pdf
growthbotics audit.pdf
 
EthereumBlockchainMarch3 (1).pptx
EthereumBlockchainMarch3 (1).pptxEthereumBlockchainMarch3 (1).pptx
EthereumBlockchainMarch3 (1).pptx
 
Angular v2 et plus : le futur du développement d'applications en entreprise
Angular v2 et plus : le futur du développement d'applications en entrepriseAngular v2 et plus : le futur du développement d'applications en entreprise
Angular v2 et plus : le futur du développement d'applications en entreprise
 
KubeCon EU 2016 Keynote: Pushing Kubernetes Forward
KubeCon EU 2016 Keynote: Pushing Kubernetes ForwardKubeCon EU 2016 Keynote: Pushing Kubernetes Forward
KubeCon EU 2016 Keynote: Pushing Kubernetes Forward
 
Microservices in Scala - theory & practice
Microservices in Scala - theory & practiceMicroservices in Scala - theory & practice
Microservices in Scala - theory & practice
 
Blockchain Technology
Blockchain TechnologyBlockchain Technology
Blockchain Technology
 
The slower the stronger a story of password hash migration
The slower the stronger  a story of password hash migrationThe slower the stronger  a story of password hash migration
The slower the stronger a story of password hash migration
 
Graph Gurus Episode 13: Visualizing Bitcoin Blockchain with Tiger Graph
Graph Gurus Episode 13: Visualizing Bitcoin Blockchain with Tiger Graph  Graph Gurus Episode 13: Visualizing Bitcoin Blockchain with Tiger Graph
Graph Gurus Episode 13: Visualizing Bitcoin Blockchain with Tiger Graph
 
Anonymity concerns of Bitcoin users
Anonymity concerns of Bitcoin usersAnonymity concerns of Bitcoin users
Anonymity concerns of Bitcoin users
 
Eclipsecon Europe: Blockchain, Ethereum and Business Applications
Eclipsecon Europe: Blockchain, Ethereum and Business ApplicationsEclipsecon Europe: Blockchain, Ethereum and Business Applications
Eclipsecon Europe: Blockchain, Ethereum and Business Applications
 
Simone Bronzini - Weaknesses of blockchain applications - Codemotion Milan 2018
Simone Bronzini - Weaknesses of blockchain applications - Codemotion Milan 2018Simone Bronzini - Weaknesses of blockchain applications - Codemotion Milan 2018
Simone Bronzini - Weaknesses of blockchain applications - Codemotion Milan 2018
 
Unsung heroes Validator & Infra provider.pdf
Unsung heroes Validator & Infra provider.pdfUnsung heroes Validator & Infra provider.pdf
Unsung heroes Validator & Infra provider.pdf
 

Plus de Paradigma Digital

Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.Paradigma Digital
 
Java 8 time to join the future
Java 8  time to join the futureJava 8  time to join the future
Java 8 time to join the futureParadigma Digital
 
Programación Reactiva con Spring WebFlux
Programación Reactiva con Spring WebFluxProgramación Reactiva con Spring WebFlux
Programación Reactiva con Spring WebFluxParadigma Digital
 
Orquestando microservicios como lo hace Netflix
Orquestando microservicios como lo hace NetflixOrquestando microservicios como lo hace Netflix
Orquestando microservicios como lo hace NetflixParadigma Digital
 
Meetup microservicios: API Management
Meetup microservicios: API ManagementMeetup microservicios: API Management
Meetup microservicios: API ManagementParadigma Digital
 
Meetup de kubernetes, conceptos básicos.
Meetup  de kubernetes, conceptos básicos.Meetup  de kubernetes, conceptos básicos.
Meetup de kubernetes, conceptos básicos.Paradigma Digital
 
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptxDocker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptxParadigma Digital
 
Implementando microservicios
Implementando microserviciosImplementando microservicios
Implementando microserviciosParadigma Digital
 
Equipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma DigitalEquipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma DigitalParadigma Digital
 
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!Paradigma Digital
 
Manuel Hurtado. Couchbase paradigma4oct
Manuel Hurtado. Couchbase paradigma4octManuel Hurtado. Couchbase paradigma4oct
Manuel Hurtado. Couchbase paradigma4octParadigma Digital
 
Programación Reactiva con RxJava
Programación Reactiva con RxJavaProgramación Reactiva con RxJava
Programación Reactiva con RxJavaParadigma Digital
 
¿Cómo vencer a los dragones digitales?
¿Cómo vencer a los dragones digitales?¿Cómo vencer a los dragones digitales?
¿Cómo vencer a los dragones digitales?Paradigma Digital
 

Plus de Paradigma Digital (20)

Ddd + ah + microservicios
Ddd + ah + microserviciosDdd + ah + microservicios
Ddd + ah + microservicios
 
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
 
Have you met Istio?
Have you met Istio?Have you met Istio?
Have you met Istio?
 
Linkerd a fondo
Linkerd a fondoLinkerd a fondo
Linkerd a fondo
 
Horneando apis
Horneando apisHorneando apis
Horneando apis
 
Java 8 time to join the future
Java 8  time to join the futureJava 8  time to join the future
Java 8 time to join the future
 
Programación Reactiva con Spring WebFlux
Programación Reactiva con Spring WebFluxProgramación Reactiva con Spring WebFlux
Programación Reactiva con Spring WebFlux
 
Orquestando microservicios como lo hace Netflix
Orquestando microservicios como lo hace NetflixOrquestando microservicios como lo hace Netflix
Orquestando microservicios como lo hace Netflix
 
Meetup microservicios: API Management
Meetup microservicios: API ManagementMeetup microservicios: API Management
Meetup microservicios: API Management
 
Meetup de kubernetes, conceptos básicos.
Meetup  de kubernetes, conceptos básicos.Meetup  de kubernetes, conceptos básicos.
Meetup de kubernetes, conceptos básicos.
 
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptxDocker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
 
Implementando microservicios
Implementando microserviciosImplementando microservicios
Implementando microservicios
 
Equipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma DigitalEquipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma Digital
 
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
 
Overview atlas (1)
Overview atlas (1)Overview atlas (1)
Overview atlas (1)
 
Cómo usar google analytics
Cómo usar google analyticsCómo usar google analytics
Cómo usar google analytics
 
Transformación Digital
Transformación DigitalTransformación Digital
Transformación Digital
 
Manuel Hurtado. Couchbase paradigma4oct
Manuel Hurtado. Couchbase paradigma4octManuel Hurtado. Couchbase paradigma4oct
Manuel Hurtado. Couchbase paradigma4oct
 
Programación Reactiva con RxJava
Programación Reactiva con RxJavaProgramación Reactiva con RxJava
Programación Reactiva con RxJava
 
¿Cómo vencer a los dragones digitales?
¿Cómo vencer a los dragones digitales?¿Cómo vencer a los dragones digitales?
¿Cómo vencer a los dragones digitales?
 

Dernier

What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 

Dernier (20)

What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 

Bitcoin protocol for developerBitcoin Protocol for Developers

  • 1. Leganés 6 Febrero 2013 Alberto Gómez Toribio ( @gotoalberto ) Bitcoin protocol for developers Except where otherwise noted, this work is licensed under: http://creativecommons.org/licenses/by-nc-sa/3.0/ c_b_n_a
  • 2. Coinffeine.com Leganés 6 Febrero 2013 Alberto Gómez @gotoalberto “OpenData and Bitcoin Developer on fire. Great coders are today’s rock stars. That’s it!” Alvaro Polo @apolovald “Software development enthusiast and aviation geek. Give me a higher-order function and I shall move the world.” A P2P Bitcoin exchange Sebastián Ortega @_sortega “Vocational coder since childhood, he will annoy you with concepts like "monad" and "actor model" but gets the work done.” Ximo Guanter “Theoretical computer science believer by night, pragmatic ship-it developer by day. My brain runs on glucose, caffeine, general abstract nonsense and type theory.” Except where otherwise noted, this work is licensed under: http://creativecommons.org/licenses/by-nc-sa/3.0/ c_b_n_a
  • 3. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F What is the Bitcoin Protocol? ● Network protocol ○ Blockchain mining ○ Fees and commitment rules ○ Sharing protocol: Gossip, Bittorrent, Gnutella... ● Transactions Mechanics ○ Validations of the money source ○ Protocol to spend the money ○ Bitcoin Scripting
  • 4. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Network protocol ● Blockchain ○ The Blockchain is a distributed ledger book ○ Create a Block in chain require a proof of work dc7047be… = SHA256(new_block_hash) ○ Forks are discarded, the most complex chain wins.
  • 5. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Network protocol ● Other services: ○ The Blockchain is used to storage usernames. ○ Tweets are shared between users using a DHT protocol. ○ The older messages are discarded. ○ Incentive to generate blocks on Blockchain: Sponsored messages.
  • 6. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Network protocol ● Colored Coins: ○ The Blockchain is used to storage key-value strings, as internet web domains / IP. ○ You can register a domain spending Namecoins. ○ The fee by register a name is decreased in time.
  • 7. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Transactions Mechanic ● Transaction anatomy { txid : 5c084b… , locktime : 0, vin : [ { txid vout scriptSig : : { feff4b… 0 asm : d8f67a… …} …} vout …] : [ { value reqsigs scriptPubKey : : { 2.52 1 asm : OP_DUP OP_HASH160 cb1f48… OP_EQUALSVERIFY OP_CHECKSIG addresses …} …] …} …} : [ 172D5w7C… ]
  • 8. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Transactions Mechanic ● Transaction anatomy { txid : 5c084b… , locktime : 0, vin : [ { Transaction Id, changes when a field is changed or tx is signed. txid vout scriptSig : : { feff4b… 0 asm : d8f67a… …} …} vout …] : [ { value reqsigs scriptPubKey : : { 2.52 1 asm : OP_DUP OP_HASH160 cb1f48… OP_EQUALSVERIFY OP_CHECKSIG addresses …} …] …} …} : [ 172D5w7C… ]
  • 9. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Transactions Mechanic ● Transaction anatomy { txid : 5c084b… , locktime : 0, Locktime, Block or Time up to which this tx cannot be broadcasted. vin : [ { txid : feff4b… vout : 0 scriptSig { asm : d8f67a… …} …} …] vout : [ { value : 2.52 reqsigs : 1 scriptPubKey { asm : OP_DUP OP_HASH160 cb1f48… OP_EQUALSVERIFY OP_CHECKSIG …} addresses : [ 172D5w7C… ] …} …] …}
  • 10. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Transactions Mechanic ● Transaction anatomy { txid : 5c084b… , locktime : 0, vin : [ { txid vout scriptSig : : { feff4b… 0 TXid reference output for this input. asm : d8f67a… …} …} vout …] : [ { value reqsigs scriptPubKey : : { 2.52 1 asm : OP_DUP OP_HASH160 cb1f48… OP_EQUALSVERIFY OP_CHECKSIG addresses …} …] …} …} : [ 172D5w7C… ]
  • 11. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Transactions Mechanic ● Transaction anatomy { txid : 5c084b… , locktime : 0, vin : [ { txid vout scriptSig : : { feff4b… 0 Output number reference in previous tx asm : d8f67a… …} …} vout …] : [ { value reqsigs scriptPubKey : : { 2.52 1 asm : OP_DUP OP_HASH160 cb1f48… OP_EQUALSVERIFY OP_CHECKSIG addresses …} …] …} …} : [ 172D5w7C… ]
  • 12. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Transactions Mechanic ● Transaction anatomy { txid : 5c084b… , locktime : 0, vin : [ { txid vout scriptSig : : { feff4b… 0 asm : d8f67a… …} ScriptSig which unlock the connected OutputScript …} vout …] : [ { value reqsigs scriptPubKey : : { 2.52 1 asm : OP_DUP OP_HASH160 cb1f48… OP_EQUALSVERIFY OP_CHECKSIG addresses …} …] …} …} : [ 172D5w7C… ]
  • 13. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Transactions Mechanic ● Transaction anatomy { txid : 5c084b… , locktime : 0, vin : [ { txid vout scriptSig : : { feff4b… 0 asm : d8f67a… …} …} vout …] : [ { value reqsigs scriptPubKey : : { 2.52 1 Value to transfer. The difference with the summatory of inputs values is the fee. asm : OP_DUP OP_HASH160 cb1f48… OP_EQUALSVERIFY OP_CHECKSIG addresses …} …] …} …} : [ 172D5w7C… ]
  • 14. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Transactions Mechanic ● Transaction anatomy { txid : 5c084b… , locktime : 0, vin : [ { txid vout scriptSig : : { feff4b… 0 asm : d8f67a… …} …} vout …] : [ { value reqsigs scriptPubKey addresses …} …] …} : : { …} : Number of sigs required to broadcast this transaction. The signers are included in the “addresses” array. asm : OP_DUP OP_HASH160 cb1f48… OP_EQUALSVERIFY OP_CHECKSIG 2.52 1 [ 172D5w7C… ]
  • 15. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Transactions Mechanic ● Transaction anatomy { txid : 5c084b… , locktime : 0, vin : [ { txid vout scriptSig : : { feff4b… 0 asm : d8f67a… …} …} vout …] : [ { …} …] …} Script. It defines how the money can be spent and by whom. value : 2.52 reqsigs : 1 scriptPubKey { asm : OP_DUP OP_HASH160 cb1f48… OP_EQUALSVERIFY OP_CHECKSIG …} addresses : [ 172D5w7C… ]
  • 16. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Transactions Mechanic ● Transaction anatomy { txid : 5c084b… , locktime : 0, vin : [ { txid vout scriptSig : : { feff4b… 0 asm : d8f67a… …} …} vout …] : [ { value reqsigs scriptPubKey : : { 2.52 1 asm : OP_DUP OP_HASH160 cb1f48… OP_EQUALSVERIFY OP_CHECKSIG addresses …} …] …} …} : [ 172D5w7C… ]
  • 17. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Bitcoin Script ● It Allows to define how an output will be spent and by whom. ● Is a non Turing-Complete language which is evaluated as a Stack, from left to right. ● It just allows to write pure functions (without context) ● Is a non Turing-Complete language which is evaluated with a stack machine.
  • 18. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F How Bitcoin Script works? (Public Key Hash) OP_DUP OP_HASH160 cb1f48… OP_EQUALVERIFY OP_CHECKSIG
  • 19. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F How Bitcoin Script works? (Signature) (Public Key) bbba3f5… 172D5w7C… (Public Key Hash) OP_DUP OP_HASH160 cb1f48… OP_EQUALVERIFY OP_CHECKSIG
  • 20. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F How Bitcoin Script works? (Signature) (Public Key) bbba3f5… 172D5w7C… (Public Key Hash) OP_DUP OP_HASH160 cb1f48… Stack OP_EQUALVERIFY OP_CHECKSIG
  • 21. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F How Bitcoin Script works? (Signature) (Public Key) bbba3f5… 172D5w7C… (Public Key Hash) OP_DUP OP_HASH160 cb1f48… Stack OP_EQUALVERIFY OP_CHECKSIG
  • 22. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F How Bitcoin Script works? (Public Key) (Public Key Hash) 172D5w7C… OP_DUP OP_HASH160 cb1f48… Stack (Signature) bbba3f5… OP_EQUALVERIFY OP_CHECKSIG
  • 23. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F How Bitcoin Script works? (Public Key) (Public Key Hash) 172D5w7C… OP_DUP OP_HASH160 cb1f48… Stack (Signature) bbba3f5… OP_EQUALVERIFY OP_CHECKSIG
  • 24. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F How Bitcoin Script works? (Public Key Hash) OP_DUP OP_HASH160 cb1f48… Stack (Public Key) (Signature) 172D5w7C… bbba3f5… OP_EQUALVERIFY OP_CHECKSIG
  • 25. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F How Bitcoin Script works? (Public Key Hash) OP_DUP OP_HASH160 cb1f48… Stack (Public Key) (Signature) 172D5w7C… bbba3f5… OP_EQUALVERIFY OP_CHECKSIG
  • 26. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F How Bitcoin Script works? (Public Key Hash) OP_HASH160 cb1f48… Stack (Public Key) (Public Key) (Signature) 172D5w7C… 172D5w7C… bbba3f5… OP_EQUALVERIFY OP_CHECKSIG
  • 27. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F How Bitcoin Script works? (Public Key Hash) OP_HASH160 cb1f48… Stack (Public Key) (Public Key) (Signature) 172D5w7C… 172D5w7C… bbba3f5… OP_EQUALVERIFY OP_CHECKSIG
  • 28. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F How Bitcoin Script works? (Public Key Hash) cb1f48… Stack (Public Key Hash) (Public Key) (Signature) cb1f48… 172D5w7C… bbba3f5… OP_EQUALVERIFY OP_CHECKSIG
  • 29. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F How Bitcoin Script works? (Public Key Hash) cb1f48… Stack (Public Key Hash) (Public Key) (Signature) cb1f48… 172D5w7C… bbba3f5… OP_EQUALVERIFY OP_CHECKSIG
  • 30. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F How Bitcoin Script works? OP_EQUALVERIFY OP_CHECKSIG Stack (Public Key Hash) (Public Key Hash) (Public Key) (Signature) cb1f48… cb1f48… 172D5w7C… bbba3f5…
  • 31. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F How Bitcoin Script works? OP_EQUALVERIFY OP_CHECKSIG Stack (Public Key Hash) (Public Key Hash) (Public Key) (Signature) cb1f48… cb1f48… 172D5w7C… bbba3f5…
  • 32. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F How Bitcoin Script works? OP_CHECKSIG Stack (Public Key) (Signature) 172D5w7C… bbba3f5…
  • 33. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F How Bitcoin Script works? OP_CHECKSIG Stack (Public Key) (Signature) 172D5w7C… bbba3f5…
  • 34. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers How Bitcoin Script works? (EMPTY) Stack (EMPTY) SUCCESS! #BitcoinT3F
  • 35. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F The sky is the limit! (Odd/Even Bet) <Sig> <PubKeyB> <7bb> <5aa> OP_2DUP OP_HASH160 <aHash> OP_EQUALVERIFY OP_SWAP OP_HASH160 <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2> OP_SWAP OP_MOD OP_IF OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF
  • 36. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F The sky is the limit! (Odd/Even Bet) <Sig> <PubKeyB> <7bb> <5aa> OP_2DUP OP_HASH160 <aHash> OP_EQUALVERIFY OP_SWAP OP_HASH160 <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2> OP_SWAP OP_MOD OP_IF OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF Random diversion! @_sortega
  • 37. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F The sky is the limit! (Odd/Even Bet) <Sig> <PubKeyB> <7bb> <5aa> OP_2DUP OP_HASH160 <aHash> OP_EQUALVERIFY OP_SWAP OP_HASH160 <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2> OP_SWAP OP_MOD OP_IF OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF Stack
  • 38. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F The sky is the limit! (Odd/Even Bet) <PubKeyB> <7bb> <5aa> OP_2DUP OP_HASH160 <aHash> OP_EQUALVERIFY OP_SWAP OP_HASH160 <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2> OP_SWAP OP_MOD OP_IF OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF Stack <Sig>
  • 39. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F The sky is the limit! (Odd/Even Bet) <7bb> <5aa> OP_2DUP OP_HASH160 <aHash> OP_EQUALVERIFY OP_SWAP OP_HASH160 <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2> OP_SWAP OP_MOD OP_IF OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF Stack <PubKey> <Sig>
  • 40. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F The sky is the limit! (Odd/Even Bet) <5aa> OP_2DUP OP_HASH160 <aHash> OP_EQUALVERIFY OP_SWAP OP_HASH160 <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2> OP_SWAP OP_MOD OP_IF OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF Stack <7bb> <PubKey> <Sig>
  • 41. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F The sky is the limit! (Odd/Even Bet) OP_2DUP OP_HASH160 <aHash> OP_EQUALVERIFY OP_SWAP OP_HASH160 <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2> OP_SWAP OP_MOD OP_IF OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF Stack <5aa> <7bb> <PubKeyB> <Sig>
  • 42. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F The sky is the limit! (Odd/Even Bet) OP_HASH160 <aHash> OP_EQUALVERIFY OP_SWAP OP_HASH160 <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2> OP_SWAP OP_MOD OP_IF OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF Stack <5aa> <7bb> <5aa> <7bb> <PubKeyB> <Sig>
  • 43. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F The sky is the limit! (Odd/Even Bet) <aHash> OP_EQUALVERIFY OP_SWAP OP_HASH160 <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2> OP_SWAP OP_MOD OP_IF OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF Stack <aHash> <7bb> <5aa> <7bb> <PubKeyB> <Sig>
  • 44. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F The sky is the limit! (Odd/Even Bet) OP_EQUALVERIFY OP_SWAP OP_HASH160 <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2> OP_SWAP OP_MOD OP_IF OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF Stack <aHash> <aHash> <5aa> <7bb> <7bb> <PubKeyB> <Sig>
  • 45. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F The sky is the limit! (Odd/Even Bet) OP_SWAP OP_HASH160 <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2> OP_SWAP OP_MOD OP_IF OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF Stack <5aa> <7bb> <7bb> <PubKeyB> <Sig>
  • 46. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F The sky is the limit! (Odd/Even Bet) OP_HASH160 <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2> OP_SWAP OP_MOD OP_IF OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF Stack <7bb> <5aa> <7bb> <PubKeyB> <Sig>
  • 47. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F The sky is the limit! (Odd/Even Bet) <bHash> OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2> OP_SWAP OP_MOD OP_IF OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF Stack <bHash> <5aa> <7bb> <PubKeyB> <Sig>
  • 48. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F The sky is the limit! (Odd/Even Bet) OP_EQUALVERIFY <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2> OP_SWAP OP_MOD OP_IF OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF Stack <bHash> <bHash> <5aa> <7bb> <PubKeyB> <Sig>
  • 49. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F The sky is the limit! (Odd/Even Bet) <1> OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2> OP_SWAP OP_MOD OP_IF OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF Stack <5aa> <7bb> <PubKeyB> <Sig>
  • 50. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F The sky is the limit! (Odd/Even Bet) OP_LEFT OP_SWAP <1> OP_LEFT OP_ADD <2> OP_SWAP OP_MOD OP_IF OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF Stack <1> <5aa> <7bb> <PubKeyB> <Sig>
  • 51. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F The sky is the limit! (Odd/Even Bet) OP_SWAP <1> OP_LEFT OP_ADD <2> OP_SWAP OP_MOD OP_IF OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF Stack <5> <7bb> <PubKeyB> <Sig>
  • 52. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F The sky is the limit! (Odd/Even Bet) <1> OP_LEFT OP_ADD <2> OP_SWAP OP_MOD OP_IF OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF Stack <7bb> <5> <PubKeyB> <Sig>
  • 53. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F The sky is the limit! (Odd/Even Bet) OP_LEFT OP_ADD <2> OP_SWAP OP_MOD OP_IF OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF Stack <1> <7bb> <5> <PubKeyB> <Sig>
  • 54. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F The sky is the limit! (Odd/Even Bet) OP_ADD <2> OP_SWAP OP_MOD OP_IF OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF Stack <7> <5> <PubKeyB> <Sig>
  • 55. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F The sky is the limit! (Odd/Even Bet) <2> OP_SWAP OP_MOD OP_IF OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF Stack <12> <PubKeyB> <Sig>
  • 56. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers The sky is the limit! (Odd/Even Bet) OP_SWAP OP_MOD OP_IF OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF Stack <2> <12> <PubKeyB> <Sig> #BitcoinT3F
  • 57. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers The sky is the limit! (Odd/Even Bet) OP_MOD OP_IF OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF Stack <12> <2> <PubKeyB> <Sig> #BitcoinT3F
  • 58. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers The sky is the limit! (Odd/Even Bet) OP_IF OP_DUP OP_HASH160 <pubKeyAHash> OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF Stack <0> <PubKeyB> <Sig> #BitcoinT3F
  • 59. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers The sky is the limit! (Odd/Even Bet) OP_DUP OP_HASH160 <pubKeyBHash> OP_EQUALVERIFY OP_CHECKSIG Stack <PubKeyB> <Sig> (Standard Script) #BitcoinT3F
  • 60. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers The sky is the limit! (Odd/Even Bet) ● Possible real use: ○ Random user to pay the transaction fees. ○ Help to define asymmetric scenario (secrets) #BitcoinT3F
  • 61. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Context: Oracles ● The oracle contract allow define how the money is spent including external state. ○ Allows to make reversible transactions. ○ Allow to pay, only if an external condition is true, for example the result of a search in google, or the API SEUR response.
  • 62. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Context: Oracles ● Example of a reversible payment using a Oracle ○ First you generate (in private) a multisig transaction as this: TX1 in { 1 BTC BOB } out { 1 BTC MULTISIGVERIFY BOB SAM } ○ Then you must obtain signed from counterpart: TX2 in { TX1[0] } out { 1 BTC TX3 in { TX1[0] } out { 1 BTC <SeurAPI(trackID) == ‘RETURNED’> OP_HASH160 <ExternalScriptHash> OP_EQUALSVERIFY <OraclePubKey> <SamPubKey> 2 OP_CHECKMULTISIGVERIFY } <SeurAPI(trackID) == ‘DELIVERED’> OP_HASH160 <ExternalScriptHash> OP_EQUALSVERIFY <OraclePubKey> <BobPubKey> 2 OP_CHECKMULTISIGVERIFY }
  • 63. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers Context: Oracles ● Execution TX2 in { TX1[0] } out { 1 BTC <SeurAPI(trackID) == ‘RETURNED’> OP_HASH160 <ExternalScriptHash> OP_EQUALSVERIFY <OraclePubKey> <SamPubKey> 2 OP_CHECKMULTISIGVERIFY } #BitcoinT3F
  • 64. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Context: Oracles ● Execution <OracleSig> <SamSig> <SeurAPI(trackID) == ‘RETURNED’> OP_HASH160 <ExternalScriptHash> OP_EQUALSVERIFY <OraclePubKey> <SamPubKey> 2 OP_CHECKMULTISIGVERIFY Stack
  • 65. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Context: Oracles ● Execution <SamSig> <SeurAPI(trackID) == ‘RETURNED’> OP_HASH160 <ExternalScriptHash> OP_EQUALSVERIFY <OraclePubKey> <SamPubKey> 2 OP_CHECKMULTISIGVERIFY Stack <OracleSig>
  • 66. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Context: Oracles ● Execution <SeurAPI(trackID) == ‘RETURNED’> OP_HASH160 <ExternalScriptHash> OP_EQUALSVERIFY <OraclePubKey> <SamPubKey> 2 OP_CHECKMULTISIGVERIFY Stack <SamSig> <OracleSig>
  • 67. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers Context: Oracles ● Execution OP_HASH160 <ExternalScriptHash> OP_EQUALSVERIFY <OraclePubKey> <SamPubKey> 2 OP_CHECKMULTISIGVERIFY Stack <SeurAPI(trackID) == ‘RETURNED’> <SamSig> <OracleSig> #BitcoinT3F
  • 68. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers Context: Oracles ● Execution <ExternalScriptHash> OP_EQUALSVERIFY <OraclePubKey> <SamPubKey> 2 OP_CHECKMULTISIGVERIFY Stack <ScriptHash> <SamSig> <OacleSig> #BitcoinT3F
  • 69. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers Context: Oracles ● Execution OP_EQUALSVERIFY <OraclePubKey> <SamPubKey> 2 OP_CHECKMULTISIGVERIFY Stack <ExternalScriptHash> <ScriptHash> <SamSig> <OracleSig> #BitcoinT3F
  • 70. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers Context: Oracles ● Execution <OraclePubKey> <SamPubKey> 2 OP_CHECKMULTISIGVERIFY Stack <SamSig> <OracleSig> #BitcoinT3F
  • 71. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers Context: Oracles ● Execution SUCCESS! Stack #BitcoinT3F
  • 72. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Fees? Micro Payment Channels! ● Transactions from a checkpoint without broadcast ● Allows commit money safely ● Allows to pay on demand by the second ● For example: decentralized WiFi Hotspots or subcontracting services in third world countries.
  • 73. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers Micro Payment Channels Mechanic TX1 IN {0: 1 BTC } OUT {0: 1 BTC MULTISIG BOB SAM } #BitcoinT3F
  • 74. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers Micro Payment Channels Mechanic TX1 IN {0: 1 BTC } OUT {0: 1 BTC MULTISIG BOB SAM } TX2 IN {TX1[0]: 1 BTC } OUT { 0 : 1 BTC BOB } LOCKTIME : 18 #BitcoinT3F
  • 75. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers Micro Payment Channels Mechanic TX1 IN {0: 1 BTC } OUT {0: 1 BTC MULTISIG BOB SAM } TX2 IN {TX1[0]: 1 BTC } OUT { 0 : 1 BTC BOB } LOCKTIME : 18 #BitcoinT3F
  • 76. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers Micro Payment Channels Mechanic TX1 IN {0: 1 BTC } OUT {0: 1 BTC MULTISIG BOB SAM } TX2 IN {TX1[0]: 1 BTC } OUT { 0 : 1 BTC BOB } LOCKTIME : 18 #BitcoinT3F
  • 77. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Micro Payment Channels Mechanic TX1 IN {0: 1 BTC } OUT {0: 1 BTC MULTISIG BOB SAM } TX2 IN {TX1[0]: 1 BTC } OUT { 0 : 1 BTC BOB } LOCKTIME : 18 IN {TX1[0] 1 BTC } OUT {0: 0,9 BTC BOB 0,1 BTC SAM }
  • 78. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Micro Payment Channels Mechanic TX1 IN {0: 1 BTC } OUT {0: 1 BTC MULTISIG BOB SAM } TX2 IN {TX1[0]: 1 BTC } OUT { 0 : 1 BTC BOB } LOCKTIME : 18 IN {TX1[0] 1 BTC } OUT {0: 0,8 BTC BOB 0,2 BTC SAM }
  • 79. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Micro Payment Channels Mechanic TX1 IN {0: 1 BTC } OUT {0: 1 BTC MULTISIG BOB SAM } TX2 IN {TX1[0]: 1 BTC } OUT { 0 : 1 BTC BOB } LOCKTIME : 18 IN {TX1[0] 1 BTC } OUT {0: 0,7 BTC BOB 0,3 BTC SAM }
  • 80. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Micro Payment Channels Mechanic TX1 IN {0: 1 BTC } OUT {0: 1 BTC MULTISIG BOB SAM } IN {TX1[0] 1 BTC } OUT {0: 0,6 BTC BOB 0,4 BTC SAM } TX2 IN {TX1[0]: 1 BTC } OUT { 0 : 1 BTC BOB } LOCKTIME : 18 BREAK!
  • 81. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F Micro Payment Channels Mechanic TX1 IN {0: 1 BTC } OUT {0: 1 BTC MULTISIG BOB SAM } TX2 IN {TX1[0]: 1 BTC } OUT { 0 : 1 BTC BOB } LOCKTIME : 18 IN {TX1[0] 1 BTC } OUT {0: 0,6 BTC BOB 0,4 BTC SAM }
  • 82. Leganés 6 Febrero 2013 Bitcoin Protocol for Developers #BitcoinT3F THANKS! ● BigData is the current wave, P2P is the next. ● APIs and P2P are the next challenge on finantial world. ● Bitcoin technology and protocol is here to stay.