Revise TX Overview Image

* Replace previous TX Overview image with a simplified illustration.
  The previous overview image was commented out in pull #566 / commit
  6afc683.  New image incorporates suggestions by @saivann (thanks!)

* Add new illustration showing the specifics of outputs and inputs (and
  how they're related). This replaces most of the detail lost by using a
  simplified overview image

* Add two short paragraphs briefly describing the ouput and input
  features, leading into the existing detailed P2PKH description
This commit is contained in:
David A. Harding 2014-09-27 13:58:27 -04:00
parent 8490061706
commit e26b0e3819
No known key found for this signature in database
GPG key ID: 4B29C30FF29EC4B7
7 changed files with 281 additions and 222 deletions

View file

@ -0,0 +1,52 @@
digraph tx_overview {
size=6.25;
splines = "false";
rankdir=TB;
ranksep=0.5;
nodesep=0.05;
//splines=ortho;
node [ penwidth=1.75, fontname="Sans", shape = box ];
edge [ penwidth=1.75, fontname="Sans" ];
graph [ penwidth=1.75, fontname="Sans" ];
tx1_label [ shape = "none", label = "Transaction\n1" ]
tx0_label [ shape = "none", label = "Transaction\n0" ]
tx0_label -> tx1_label [ style = "invis" ];
tx1_notshown [ shape = "none", label = "Not Shown:\nVersion, Outputs,\nLocktime" ]
tx0_notshown [ shape = "none", label = "Not Shown:\nVersion, Inputs,\nLocktime" ]
tx0_notshown -> tx1_notshown [ style = "invis" ];
subgraph cluster_tx0 {
subgraph cluster_outputs {
pubkey_script [ label = "Pubkey\nScript" ];
amount [ label = "Amount\n(satoshis)" ];
output0_label [ shape = "none", label = "Output 0\n(Implied)" ]
label = "Example Output Paying A Pubkey Script"
}
graph [ penwidth = 0 ];
}
subgraph cluster_tx1 {
subgraph cluster_inputs {
index [ label = "Output\nIndex" ];
sequence [ label = "Sequence\nNumber" ];
signature_script [ label = "Signature\nScript" ];
txid [ label = "Transaction\nIdentifier" ];
label = "Example Input Spending The Example Output";
labelloc = b;
}
graph [ penwidth = 0 ];
}
pubkey_script -> signature_script [ style = "dashed" ];
output0_label -> index [ style = "dashed" ];
tx0_label -> txid [ style = "dashed", constraint = false ];
label = "Overview Of Transaction Spending"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

View file

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.26.3 (20100126.1600)
-->
<!-- Title: tx_overview Pages: 1 -->
<svg width="450pt" height="189pt"
viewBox="0.00 0.00 450.00 189.14" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph1" class="graph" transform="scale(0.703125 0.703125) rotate(0) translate(4 265)">
<title>tx_overview</title>
<polygon fill="white" stroke="white" points="-4,5 -4,-265 637,-265 637,5 -4,5"/>
<text text-anchor="middle" x="316" y="-8.4" font-family="Sans" font-size="14.00">Overview Of Transaction Spending</text>
<g id="graph2" class="cluster"><title>cluster_tx0</title>
<polygon fill="none" stroke="black" stroke-width="0" points="185,-154 185,-253 494,-253 494,-154 185,-154"/>
</g>
<g id="graph3" class="cluster"><title>cluster_outputs</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="193,-162 193,-245 486,-245 486,-162 193,-162"/>
<text text-anchor="middle" x="339.5" y="-228.4" font-family="Sans" font-size="14.00">Example Output Paying A Pubkey Script</text>
</g>
<g id="graph4" class="cluster"><title>cluster_tx1</title>
<polygon fill="none" stroke="black" stroke-width="0" points="104,-33 104,-132 476,-132 476,-33 104,-33"/>
</g>
<g id="graph5" class="cluster"><title>cluster_inputs</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="112,-41 112,-124 468,-124 468,-41 112,-41"/>
<text text-anchor="middle" x="290" y="-49.4" font-family="Sans" font-size="14.00">Example Input Spending The Example Output</text>
</g>
<!-- tx1_label -->
<g id="node1" class="node"><title>tx1_label</title>
<text text-anchor="middle" x="48" y="-99.4" font-family="Sans" font-size="14.00">Transaction</text>
<text text-anchor="middle" x="48" y="-82.4" font-family="Sans" font-size="14.00">1</text>
</g>
<!-- tx0_label -->
<g id="node2" class="node"><title>tx0_label</title>
<text text-anchor="middle" x="48" y="-195.4" font-family="Sans" font-size="14.00">Transaction</text>
<text text-anchor="middle" x="48" y="-178.4" font-family="Sans" font-size="14.00">0</text>
</g>
<!-- tx0_label&#45;&gt;tx1_label -->
<!-- txid -->
<g id="node17" class="node"><title>txid</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="216,-116 120,-116 120,-74 216,-74 216,-116"/>
<text text-anchor="middle" x="168" y="-99.4" font-family="Sans" font-size="14.00">Transaction</text>
<text text-anchor="middle" x="168" y="-82.4" font-family="Sans" font-size="14.00">Identifier</text>
</g>
<!-- tx0_label&#45;&gt;txid -->
<g id="edge14" class="edge"><title>tx0_label&#45;&gt;txid</title>
<path fill="none" stroke="black" stroke-width="1.75" stroke-dasharray="5,2" d="M74.3345,-169.932C91.8413,-155.927 115.002,-137.399 133.912,-122.271"/>
<polygon fill="black" stroke="black" points="136.105,-124.998 141.727,-116.018 131.732,-119.532 136.105,-124.998"/>
</g>
<!-- tx1_notshown -->
<g id="node4" class="node"><title>tx1_notshown</title>
<text text-anchor="middle" x="564" y="-107.9" font-family="Sans" font-size="14.00">Not Shown:</text>
<text text-anchor="middle" x="564" y="-90.9" font-family="Sans" font-size="14.00">Version, Outputs,</text>
<text text-anchor="middle" x="564" y="-73.9" font-family="Sans" font-size="14.00">Locktime</text>
</g>
<!-- tx0_notshown -->
<g id="node5" class="node"><title>tx0_notshown</title>
<text text-anchor="middle" x="564" y="-203.9" font-family="Sans" font-size="14.00">Not Shown:</text>
<text text-anchor="middle" x="564" y="-186.9" font-family="Sans" font-size="14.00">Version, Inputs,</text>
<text text-anchor="middle" x="564" y="-169.9" font-family="Sans" font-size="14.00">Locktime</text>
</g>
<!-- tx0_notshown&#45;&gt;tx1_notshown -->
<!-- pubkey_script -->
<g id="node9" class="node"><title>pubkey_script</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="451,-212 385,-212 385,-170 451,-170 451,-212"/>
<text text-anchor="middle" x="418" y="-195.4" font-family="Sans" font-size="14.00">Pubkey</text>
<text text-anchor="middle" x="418" y="-178.4" font-family="Sans" font-size="14.00">Script</text>
</g>
<!-- signature_script -->
<g id="node16" class="node"><title>signature_script</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="460,-116 376,-116 376,-74 460,-74 460,-116"/>
<text text-anchor="middle" x="418" y="-99.4" font-family="Sans" font-size="14.00">Signature</text>
<text text-anchor="middle" x="418" y="-82.4" font-family="Sans" font-size="14.00">Script</text>
</g>
<!-- pubkey_script&#45;&gt;signature_script -->
<g id="edge10" class="edge"><title>pubkey_script&#45;&gt;signature_script</title>
<path fill="none" stroke="black" stroke-width="1.75" stroke-dasharray="5,2" d="M418,-169.694C418,-157.017 418,-140.697 418,-126.547"/>
<polygon fill="black" stroke="black" points="421.5,-126.246 418,-116.246 414.5,-126.246 421.5,-126.246"/>
</g>
<!-- amount -->
<g id="node10" class="node"><title>amount</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="380,-212 298,-212 298,-170 380,-170 380,-212"/>
<text text-anchor="middle" x="339" y="-195.4" font-family="Sans" font-size="14.00">Amount</text>
<text text-anchor="middle" x="339" y="-178.4" font-family="Sans" font-size="14.00">(satoshis)</text>
</g>
<!-- output0_label -->
<g id="node11" class="node"><title>output0_label</title>
<text text-anchor="middle" x="253" y="-195.4" font-family="Sans" font-size="14.00">Output 0</text>
<text text-anchor="middle" x="253" y="-178.4" font-family="Sans" font-size="14.00">(Implied)</text>
</g>
<!-- index -->
<g id="node14" class="node"><title>index</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="286,-116 220,-116 220,-74 286,-74 286,-116"/>
<text text-anchor="middle" x="253" y="-99.4" font-family="Sans" font-size="14.00">Output</text>
<text text-anchor="middle" x="253" y="-82.4" font-family="Sans" font-size="14.00">Index</text>
</g>
<!-- output0_label&#45;&gt;index -->
<g id="edge12" class="edge"><title>output0_label&#45;&gt;index</title>
<path fill="none" stroke="black" stroke-width="1.75" stroke-dasharray="5,2" d="M253,-169.694C253,-157.017 253,-140.697 253,-126.547"/>
<polygon fill="black" stroke="black" points="256.5,-126.246 253,-116.246 249.5,-126.246 256.5,-126.246"/>
</g>
<!-- sequence -->
<g id="node15" class="node"><title>sequence</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="372,-116 290,-116 290,-74 372,-74 372,-116"/>
<text text-anchor="middle" x="331" y="-99.4" font-family="Sans" font-size="14.00">Sequence</text>
<text text-anchor="middle" x="331" y="-82.4" font-family="Sans" font-size="14.00">Number</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.6 KiB

View file

@ -1,84 +1,54 @@
digraph blockchain {
digraph tx_overview {
size=6.25;
splines = "false";
rankdir=LR;
ranksep=0.1;
rankdir=TB;
ranksep=0.001;
nodesep=0.01;
//splines=ortho;
node [ penwidth=1.75, fontname="Sans", shape = box ];
edge [ penwidth=1.75, fontname="Sans" ];
graph [ penwidth=1.75, fontname="Sans" ];
//edge [ style = invis, minlen = 1 ];
//fixedsize
nodesep = 0.25;
//concentrate = true;
tophelp0 [style = invis, label="", width=0, height=0 ];
prevout [style = invis, label="", width=0, height=0 ];
nextout [style = invis, label="", width=0, height=0 ];
subgraph cluster_tx {
version;
subgraph cluster_input {
sequence;
vout [label="output index"];
txid;
input [style = invis, label="", width=0, height=0 ];
Locktime;
Outputs;
Inputs;
Version;
//tx_label1 [ shape = "none", label = "" ];
tx0_label [ shape = "none", label = "The Main Parts Of\nTransaction 0" ];
subgraph cluster_scriptsig {
label = "scriptSig"
subgraph cluster_signature {
hashtype;
signature [style = invis, label="", width=0, height=0 ];
label = "signature"
}
scriptsig [style = invis, label="", width=0, height=0 ];
}
label = "Input"
}
left0 [style = invis ];
left1 [style = invis ];
left2 [style = invis ];
middle1 [style = invis, label="", width=0, height=0 ];
middle2 [style = invis, label="", width=0, height=0 ];
middle3 [style = invis, label="", width=0, height=1.05 ];
middle4 [style = invis, label="", width=0, height=0 ];
middle5 [style = invis, label="", width=0, height=0 ];
middle6 [style = invis, label="", width=0, height=0 ];
middle7 [style = invis, label="", width=0, height=0 ];
middle0 [style = invis, label="", width=0, height=0 ];
subgraph cluster_output {
output [style = invis, label="", width=0, height=0 ];
amount;
script;
label = "Output"
}
locktime;
label = "A Basic Transaction With One Input & One Output"
labelloc = b
graph [ penwidth=0 ];
}
prevout -> input [ style = "dashed", label = "Each input\nspends\nsatoshis\nfrom a\nprevious\noutput\n(prevout)" ];
output -> nextout [style="dashed", label = "Each output\nwaits as an\nUnspent\nTx Output\n(UTXO)\nuntil a\nlater input\nspends it"];
tophelp0 -> version [ style = invis ];
tx_label [ shape = "none", label = "Each input spends a previous output" ];
tx_label -> Inputs [ style = "invis" ];
tx_label -> Outputs [ style = "invis" ];
txid -> middle1 [ dir = none, label = "Select a previous tx with an\noutput to spend" ];
vout -> middle2 [ dir = none, label = "Select an output from previous tx" ];
sequence -> middle3 [ dir = none, label = "Allow override of locktime" ];
scriptsig -> middle4 [ dir = none, label = "Satisfy prevout script conditions" ];
signature -> middle5 [ dir = none, label = "Protect tx against modification\nby unauthorized parties" ];
hashtype -> middle6 [ dir = none, label = "Authorize others to modify tx;\nselect what they can modify" ];
subgraph cluster_tx1 {
Version1 [ label = "Version" ];
Inputs1 [ label = "Inputs" ];
Outputs1 [ label = "Outputs" ];
Locktime1 [ label = "Locktime" ];
//tx_label1 [ shape = "none", label = "" ];
tx1_label [ shape = "none", label = "The Main Parts Of\nTransaction 1" ];
labelloc = b
graph [ penwidth=0 ];
}
utxos [ shape = "none", label = "Each output waits as an Unspent TX Output (UTXO) until a later input spends it" ];
Locktime -> Locktime1 [ style = "invis", weight = 3 ];
Version -> Version1 [ style = "invis", weight = 3 ];
Inputs -> Inputs1 [ style = "invis", weight = 3 ];
Outputs -> Outputs1 [ style = "invis", weight = 3 ];
Outputs -> Inputs1 [weight = 0 ];
Inputs1 -> utxos [ style = "invis" ];
version -> middle7 [ dir = none, label = "Indicate what rules this tx follows" ];
left2 -> locktime [ dir = none, label = "Prevent tx from being added to the\nblock chain before a particular time" ];
left0 -> amount [ dir = none, label = "Set amount to spend & pay in fees" ];
left1 -> script [ dir = none, label = "Describe conditions necessary\nto spend this output" ];
label = "(Metadata not shown: number of inputs/outputs, length in bytes of each script/scriptSig)\n \nThe Parts Of A Transaction"
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Before After
Before After

View file

@ -3,173 +3,87 @@
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.26.3 (20100126.1600)
-->
<!-- Title: blockchain Pages: 1 -->
<svg width="450pt" height="444pt"
viewBox="0.00 0.00 450.00 444.16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph1" class="graph" transform="scale(0.648415 0.648415) rotate(0) translate(4 681)">
<title>blockchain</title>
<polygon fill="white" stroke="white" points="-4,5 -4,-681 691,-681 691,5 -4,5"/>
<text text-anchor="middle" x="343" y="-42.4" font-family="Sans" font-size="14.00">(Metadata not shown: number of inputs/outputs, length in bytes of each script/scriptSig)</text>
<text text-anchor="middle" x="343" y="-25.4" font-family="Sans" font-size="14.00"> </text>
<text text-anchor="middle" x="343" y="-8.4" font-family="Sans" font-size="14.00">The Parts Of A Transaction</text>
<!-- Title: tx_overview Pages: 1 -->
<svg width="450pt" height="171pt"
viewBox="0.00 0.00 450.00 170.69" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph1" class="graph" transform="scale(0.775862 0.775862) rotate(0) translate(4 216)">
<title>tx_overview</title>
<polygon fill="white" stroke="white" points="-4,5 -4,-216 577,-216 577,5 -4,5"/>
<g id="graph2" class="cluster"><title>cluster_tx</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="92,-67 92,-669 582,-669 582,-67 92,-67"/>
<text text-anchor="middle" x="337" y="-652.4" font-family="Sans" font-size="14.00">A Basic Transaction With One Input &amp; One Output</text>
<polygon fill="none" stroke="black" stroke-width="0" points="38,-110 38,-168 476,-168 476,-110 38,-110"/>
</g>
<g id="graph3" class="cluster"><title>cluster_input</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="100,-247 100,-592 228,-592 228,-247 100,-247"/>
<text text-anchor="middle" x="164" y="-575.4" font-family="Sans" font-size="14.00">Input</text>
<g id="graph3" class="cluster"><title>cluster_tx1</title>
<polygon fill="none" stroke="black" stroke-width="0" points="38,-44 38,-102 476,-102 476,-44 38,-44"/>
</g>
<g id="graph4" class="cluster"><title>cluster_scriptsig</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="108,-263 108,-407 220,-407 220,-263 108,-263"/>
<text text-anchor="middle" x="164" y="-390.4" font-family="Sans" font-size="14.00">scriptSig</text>
<!-- Locktime -->
<g id="node2" class="node"><title>Locktime</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="468,-157 390,-157 390,-121 468,-121 468,-157"/>
<text text-anchor="middle" x="429" y="-134.9" font-family="Sans" font-size="14.00">Locktime</text>
</g>
<g id="graph5" class="cluster"><title>cluster_signature</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="116,-271 116,-366 212,-366 212,-271 116,-271"/>
<text text-anchor="middle" x="164" y="-349.4" font-family="Sans" font-size="14.00">signature</text>
<!-- Locktime1 -->
<g id="node14" class="node"><title>Locktime1</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="468,-91 390,-91 390,-55 468,-55 468,-91"/>
<text text-anchor="middle" x="429" y="-68.9" font-family="Sans" font-size="14.00">Locktime</text>
</g>
<g id="graph6" class="cluster"><title>cluster_output</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="488,-138 488,-287 574,-287 574,-138 488,-138"/>
<text text-anchor="middle" x="531" y="-270.4" font-family="Sans" font-size="14.00">Output</text>
<!-- Locktime&#45;&gt;Locktime1 -->
<!-- Outputs -->
<g id="node3" class="node"><title>Outputs</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="389,-157 317,-157 317,-121 389,-121 389,-157"/>
<text text-anchor="middle" x="353" y="-134.9" font-family="Sans" font-size="14.00">Outputs</text>
</g>
<!-- tophelp0 -->
<!-- version -->
<g id="node5" class="node"><title>version</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="197,-636 131,-636 131,-600 197,-600 197,-636"/>
<text text-anchor="middle" x="164" y="-613.9" font-family="Sans" font-size="14.00">version</text>
<!-- Inputs1 -->
<g id="node12" class="node"><title>Inputs1</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="316,-91 256,-91 256,-55 316,-55 316,-91"/>
<text text-anchor="middle" x="286" y="-68.9" font-family="Sans" font-size="14.00">Inputs</text>
</g>
<!-- tophelp0&#45;&gt;version -->
<!-- prevout -->
<!-- input -->
<!-- prevout&#45;&gt;input -->
<g id="edge7" class="edge"><title>prevout&#45;&gt;input</title>
<path fill="none" stroke="black" stroke-width="1.75" stroke-dasharray="5,2" d="M1.72672,-255C11.5697,-255 118.636,-255 153.264,-255"/>
<polygon fill="black" stroke="black" points="153.328,-258.5 163.328,-255 153.328,-251.5 153.328,-258.5"/>
<text text-anchor="middle" x="47" y="-361.4" font-family="Sans" font-size="14.00">Each input</text>
<text text-anchor="middle" x="47" y="-344.4" font-family="Sans" font-size="14.00">spends</text>
<text text-anchor="middle" x="47" y="-327.4" font-family="Sans" font-size="14.00">satoshis</text>
<text text-anchor="middle" x="47" y="-310.4" font-family="Sans" font-size="14.00">from a</text>
<text text-anchor="middle" x="47" y="-293.4" font-family="Sans" font-size="14.00">previous</text>
<text text-anchor="middle" x="47" y="-276.4" font-family="Sans" font-size="14.00">output</text>
<text text-anchor="middle" x="47" y="-259.4" font-family="Sans" font-size="14.00">(prevout)</text>
<!-- Outputs&#45;&gt;Inputs1 -->
<g id="edge16" class="edge"><title>Outputs&#45;&gt;Inputs1</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M334.692,-120.965C327.602,-113.981 319.359,-105.861 311.694,-98.3109"/>
<polygon fill="black" stroke="black" points="313.866,-95.5373 304.286,-91.013 308.954,-100.524 313.866,-95.5373"/>
</g>
<!-- nextout -->
<!-- middle7 -->
<!-- version&#45;&gt;middle7 -->
<g id="edge25" class="edge"><title>version&#45;&gt;middle7</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M197.542,-618C285.309,-618 515.97,-618 530.301,-618"/>
<text text-anchor="middle" x="358" y="-622.4" font-family="Sans" font-size="14.00">Indicate what rules this tx follows</text>
<!-- Outputs1 -->
<g id="node13" class="node"><title>Outputs1</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="389,-91 317,-91 317,-55 389,-55 389,-91"/>
<text text-anchor="middle" x="353" y="-68.9" font-family="Sans" font-size="14.00">Outputs</text>
</g>
<!-- sequence -->
<g id="node7" class="node"><title>sequence</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="204,-451 124,-451 124,-415 204,-415 204,-451"/>
<text text-anchor="middle" x="164" y="-428.9" font-family="Sans" font-size="14.00">sequence</text>
<!-- Outputs&#45;&gt;Outputs1 -->
<!-- Inputs -->
<g id="node4" class="node"><title>Inputs</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="316,-157 256,-157 256,-121 316,-121 316,-157"/>
<text text-anchor="middle" x="286" y="-134.9" font-family="Sans" font-size="14.00">Inputs</text>
</g>
<!-- middle3 -->
<!-- sequence&#45;&gt;middle3 -->
<g id="edge17" class="edge"><title>sequence&#45;&gt;middle3</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M204.678,-433C297.245,-433 516.709,-433 530.335,-433"/>
<text text-anchor="middle" x="358" y="-437.4" font-family="Sans" font-size="14.00">Allow override of locktime</text>
<!-- Inputs&#45;&gt;Inputs1 -->
<!-- Version -->
<g id="node5" class="node"><title>Version</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="255,-157 187,-157 187,-121 255,-121 255,-157"/>
<text text-anchor="middle" x="221" y="-134.9" font-family="Sans" font-size="14.00">Version</text>
</g>
<!-- vout -->
<g id="node8" class="node"><title>vout</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="216,-505 112,-505 112,-469 216,-469 216,-505"/>
<text text-anchor="middle" x="164" y="-482.9" font-family="Sans" font-size="14.00">output index</text>
<!-- Version1 -->
<g id="node11" class="node"><title>Version1</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="255,-91 187,-91 187,-55 255,-55 255,-91"/>
<text text-anchor="middle" x="221" y="-68.9" font-family="Sans" font-size="14.00">Version</text>
</g>
<!-- middle2 -->
<!-- vout&#45;&gt;middle2 -->
<g id="edge15" class="edge"><title>vout&#45;&gt;middle2</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M216.582,-487.287C314.89,-487.822 517.8,-488.928 530.386,-488.997"/>
<text text-anchor="middle" x="358" y="-493.4" font-family="Sans" font-size="14.00">Select an output from previous tx</text>
<!-- Version&#45;&gt;Version1 -->
<!-- tx0_label -->
<g id="node6" class="node"><title>tx0_label</title>
<text text-anchor="middle" x="116" y="-143.4" font-family="Sans" font-size="14.00">The Main Parts Of</text>
<text text-anchor="middle" x="116" y="-126.4" font-family="Sans" font-size="14.00">Transaction 0</text>
</g>
<!-- txid -->
<g id="node9" class="node"><title>txid</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="191,-559 137,-559 137,-523 191,-523 191,-559"/>
<text text-anchor="middle" x="164" y="-536.9" font-family="Sans" font-size="14.00">txid</text>
<!-- tx_label -->
<g id="node7" class="node"><title>tx_label</title>
<text text-anchor="middle" x="319" y="-189.9" font-family="Sans" font-size="14.00">Each input spends a previous output</text>
</g>
<!-- middle1 -->
<!-- txid&#45;&gt;middle1 -->
<g id="edge13" class="edge"><title>txid&#45;&gt;middle1</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M191.285,-541C273.68,-541 515.249,-541 530.267,-541"/>
<text text-anchor="middle" x="358" y="-562.4" font-family="Sans" font-size="14.00">Select a previous tx with an</text>
<text text-anchor="middle" x="358" y="-545.4" font-family="Sans" font-size="14.00">output to spend</text>
<!-- tx_label&#45;&gt;Outputs -->
<!-- tx_label&#45;&gt;Inputs -->
<!-- utxos -->
<g id="node16" class="node"><title>utxos</title>
<text text-anchor="middle" x="286" y="-13.9" font-family="Sans" font-size="14.00">Each output waits as an Unspent TX Output (UTXO) until a later input spends it</text>
</g>
<!-- hashtype -->
<g id="node13" class="node"><title>hashtype</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="204,-315 124,-315 124,-279 204,-279 204,-315"/>
<text text-anchor="middle" x="164" y="-292.9" font-family="Sans" font-size="14.00">hashtype</text>
</g>
<!-- middle6 -->
<!-- hashtype&#45;&gt;middle6 -->
<g id="edge23" class="edge"><title>hashtype&#45;&gt;middle6</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M204.325,-296.78C296.683,-296.277 516.674,-295.078 530.333,-295.004"/>
<text text-anchor="middle" x="358" y="-316.4" font-family="Sans" font-size="14.00">Authorize others to modify tx;</text>
<text text-anchor="middle" x="358" y="-299.4" font-family="Sans" font-size="14.00">select what they can modify</text>
</g>
<!-- signature -->
<!-- middle5 -->
<!-- signature&#45;&gt;middle5 -->
<g id="edge21" class="edge"><title>signature&#45;&gt;middle5</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M164.595,-333C180.617,-333 514.777,-333 530.432,-333"/>
<text text-anchor="middle" x="358" y="-354.4" font-family="Sans" font-size="14.00">Protect tx against modification</text>
<text text-anchor="middle" x="358" y="-337.4" font-family="Sans" font-size="14.00">by unauthorized parties</text>
</g>
<!-- scriptsig -->
<!-- middle4 -->
<!-- scriptsig&#45;&gt;middle4 -->
<g id="edge19" class="edge"><title>scriptsig&#45;&gt;middle4</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M164.595,-374.005C180.617,-374.136 514.777,-376.867 530.432,-376.995"/>
<text text-anchor="middle" x="358" y="-381.4" font-family="Sans" font-size="14.00">Satisfy prevout script conditions</text>
</g>
<!-- left0 -->
<!-- amount -->
<g id="node29" class="node"><title>amount</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="566,-236 496,-236 496,-200 566,-200 566,-236"/>
<text text-anchor="middle" x="531" y="-213.9" font-family="Sans" font-size="14.00">amount</text>
</g>
<!-- left0&#45;&gt;amount -->
<g id="edge29" class="edge"><title>left0&#45;&gt;amount</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M191.285,-218.926C256.819,-218.747 423.047,-218.294 495.891,-218.096"/>
<text text-anchor="middle" x="358" y="-223.4" font-family="Sans" font-size="14.00">Set amount to spend &amp; pay in fees</text>
</g>
<!-- left1 -->
<!-- script -->
<g id="node30" class="node"><title>script</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="558,-182 504,-182 504,-146 558,-146 558,-182"/>
<text text-anchor="middle" x="531" y="-159.9" font-family="Sans" font-size="14.00">script</text>
</g>
<!-- left1&#45;&gt;script -->
<g id="edge31" class="edge"><title>left1&#45;&gt;script</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M191.285,-164.926C259.228,-164.741 435.402,-164.26 503.536,-164.075"/>
<text text-anchor="middle" x="358" y="-186.4" font-family="Sans" font-size="14.00">Describe conditions necessary</text>
<text text-anchor="middle" x="358" y="-169.4" font-family="Sans" font-size="14.00">to spend this output</text>
</g>
<!-- left2 -->
<!-- locktime -->
<g id="node31" class="node"><title>locktime</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="568,-125 494,-125 494,-89 568,-89 568,-125"/>
<text text-anchor="middle" x="531" y="-102.9" font-family="Sans" font-size="14.00">locktime</text>
</g>
<!-- left2&#45;&gt;locktime -->
<g id="edge27" class="edge"><title>left2&#45;&gt;locktime</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M191.285,-110.703C256.238,-109.995 420.105,-108.209 493.931,-107.404"/>
<text text-anchor="middle" x="358" y="-132.4" font-family="Sans" font-size="14.00">Prevent tx from being added to the</text>
<text text-anchor="middle" x="358" y="-115.4" font-family="Sans" font-size="14.00">block chain before a particular time</text>
</g>
<!-- middle0 -->
<!-- output -->
<!-- output&#45;&gt;nextout -->
<g id="edge9" class="edge"><title>output&#45;&gt;nextout</title>
<path fill="none" stroke="black" stroke-width="1.75" stroke-dasharray="5,2" d="M531.687,-254C540.903,-254 640.334,-254 673.96,-254"/>
<polygon fill="black" stroke="black" points="674.365,-257.5 684.365,-254 674.365,-250.5 674.365,-257.5"/>
<text text-anchor="middle" x="633" y="-377.4" font-family="Sans" font-size="14.00">Each output</text>
<text text-anchor="middle" x="633" y="-360.4" font-family="Sans" font-size="14.00">waits as an</text>
<text text-anchor="middle" x="633" y="-343.4" font-family="Sans" font-size="14.00">Unspent</text>
<text text-anchor="middle" x="633" y="-326.4" font-family="Sans" font-size="14.00">Tx Output</text>
<text text-anchor="middle" x="633" y="-309.4" font-family="Sans" font-size="14.00">(UTXO)</text>
<text text-anchor="middle" x="633" y="-292.4" font-family="Sans" font-size="14.00">until a</text>
<text text-anchor="middle" x="633" y="-275.4" font-family="Sans" font-size="14.00">later input</text>
<text text-anchor="middle" x="633" y="-258.4" font-family="Sans" font-size="14.00">spends it</text>
<!-- Inputs1&#45;&gt;utxos -->
<!-- tx1_label -->
<g id="node15" class="node"><title>tx1_label</title>
<text text-anchor="middle" x="116" y="-77.4" font-family="Sans" font-size="14.00">The Main Parts Of</text>
<text text-anchor="middle" x="116" y="-60.4" font-family="Sans" font-size="14.00">Transaction 1</text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Before After
Before After