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

@ -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"
}