-
Notifications
You must be signed in to change notification settings - Fork 1
/
transaction_p2sh.html
165 lines (132 loc) · 6.05 KB
/
transaction_p2sh.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>P2SH Transactions</title>
<link rel="stylesheet" href="css/reveal.css">
<link rel="stylesheet" href="css/theme/simple.css">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="lib/css/xcode.css">
<!-- Theme override for teachbitcoin -->
<link rel="stylesheet" href="css/teachbitcoin.css">
<!-- Google Font Roboto -->
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,400i,600" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Roboto+Mono" rel="stylesheet">
</head>
<body>
<div class="reveal">
<div class="slides">
<!-- *********** BEGIN: P2WPKH *********** -->
<section class = "box">
<div class = "title">
<span class = "title weight">P2SH</span> Transaction
</div>
<!-- 45% div for formula and curve--><!-- 45% text & bulletpoint -->
<div class = "multi_text_box_container" style = "padding: 40px 0 0 0; width: 99%;">
<!-- 60% div for formula and curve-->
<div class = "" style = "width: 58%; font-size: 22px;">
<img src="images/transaction_p2sh/p2sh0.svg" class = "image" style = "z-index: -3;">
<img src="images/transaction_p2sh/p2sh1.svg" class = "fragment image" style = "z-index: -3;">
</div>
<!-- 45% text & bulletpoint -->
<div class = "text_box"
style = "width: 42%; font-size: 20px; margin: 0px 0 0 0">
<ul style = "margin: 0; padding: 0px; list-style-type: none;">
<li style = "font-weight: bold;">Pay-to-Script-Hash output commits to a specific embedded script.</li>
<ul style = "list-style-type: circle;">
<li>Any output script can be embedded into a P2SH output.</li>
<li>The embedded script must be supplied during spending, but is not disclosed beforehand.</li>
</ul>
<hr style = "height:2px; visibility:hidden;">
<li style = "font-weight: bold;">P2SH output is spendable by the embedded script and its unlocking script</li>
<ul style = "list-style-type: circle;">
<li>Embedded script in input is verified against the hash-digest in the output script.</li>
<li>If preimage verification successful: Embedded script is run separately with the unlocking script operations loaded to the script machine stack.</li>
</ul>
<hr style = "height:2px; visibility:hidden;">
</ul>
</div>
</div><!-- End of 2 column container -->
</section>
<!-- *********** END: P2WPKH *********** -->
<!-- *********** BEGIN: P2SH Run*********** -->
<section class = "box">
<div class = "title">
<span class = "title weight">P2SH</span> Script Run
</div>
<!-- 45% div for formula and curve--><!-- 45% text & bulletpoint -->
<div class = "multi_text_box_container" style = "padding: 40px 0 0 0; width: 99.5%;">
<!-- 60% div for formula and curve-->
<div class = "" style = "width: 58%; font-size: 22px;">
<img src="images/transaction_p2sh/p2sh_run.svg" class = "image" style = "z-index: -3;">
</div>
<!-- 45% text & bulletpoint -->
<div class = "text_box"
style = "width: 45%; font-size: 22px; margin: 0px 0 0 0">
<ul style = "margin: 0; padding: 0px; list-style-type: none;">
<li style = "font-weight: bold;">1) Input & Output Scripts are run</li>
<ul style = "list-style-type: circle;">
<li>Embedded script must hash to hash digest in P2SH script.</li>
</ul>
<hr style = "height:2px; visibility:hidden;">
<li style = "font-weight: bold;">2) P2SH pattern is recognised</li>
<ul style = "list-style-type: circle;">
<li>If embedded script hashes correctly, it is now loaded and run.</li>
</ul>
<hr style = "height:2px; visibility:hidden;">
<li style = "font-weight: bold;">3) Embedded script run</li>
<ul style = "list-style-type: circle;">
<li>The stack with the remaining unlocking script operations is carried over and the embedded script is run.</li>
</ul>
<hr style = "height:2px; visibility:hidden;">
<li style = "font-weight: bold;">4) Final stack evaluation</li>
<hr style = "height:2px; visibility:hidden;">
</ul>
</div>
</div><!-- End of 2 column container -->
</section>
<!-- *********** END: P2WPKH *********** -->
</div><!-- END: Slides Div -->
</div><!-- END: Reveal Div -->
<script src="lib/js/head.min.js"></script>
<script src="js/reveal.js"></script>
<script>
// More info about config & dependencies:
// - https://github.com/hakimel/reveal.js#configuration
// - https://github.com/hakimel/reveal.js#dependencies
Reveal.initialize({
dependencies: [
{ src: 'plugin/markdown/marked.js' },
{ src: 'plugin/markdown/markdown.js' },
{ src: 'plugin/notes/notes.js', async: true },
{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
{ src: 'plugin/math/math.js', async: true }
],
math: {
mathjax: 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js',
config: 'TeX-AMS_HTML-full' // See http://docs.mathjax.org/en/latest/config-files.html
},
previewLinks: true,
// Push each slide change to the browser history
history: true,
// Enable keyboard shortcuts for navigation
keyboard: true,
// Enables touch navigation on devices with touch input
overview: false,
touch: false,
// The "normal" size of the presentation, aspect ratio will be preserved
// when the presentation is scaled to fit different resolutions. Can be
// specified using percentage units.
width: 1366,
height: 768,
// Factor of the display size that should remain empty around the content
margin: 0.05,
// Bounds for smallest/largest possible scale to apply to content
minScale: 0.2,
maxScale: 1.5
});
Reveal.configure({ slideNumber: true });
</script>
</body>
</html>