-
Notifications
You must be signed in to change notification settings - Fork 0
/
Bitcoin_Core.mw
245 lines (168 loc) · 7.78 KB
/
Bitcoin_Core.mw
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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
{{Header}}
{{title|title=
Bitcoin Core
}}
{{#seo:
|description=Using Bitcoin Core in {{project_name_long}}. Fully verifying a Bitcoin wallet. Based on the original reference code by Satoshi Nakamoto.
|image=Bitcoin234234234.jpg
}}
[[File:120px-Bitcoin.png|200px]]
{{intro|
Using Bitcoin Core in {{project_name_short}}. Fully verifying a Bitcoin wallet. Based on the original reference code by Satoshi Nakamoto.
}}
[[File:Bitcoin-core.png|thumb|Bitcoin Core Logo]]
[[File:BC_Logo_.png|thumb|Bitcoin Logo|200px]]
= Introduction =
{{stub}}
== Software Origin ==
Bitcoin Core is the client software directly descended from the original Bitcoin software client first released by Satoshi Nakamoto. Bitcoin Core consists of both "full-node" software which can fully validate the blockchain, as well as a Bitcoin wallet. <ref>
https://bitcoincore.org/en/about/
</ref> The official open source project that maintains and releases the software can be found [https://bitcoincore.org/ here] ([http://6hasakffvppilxgehrswmffqurlcjjjhd76jgvaqmsg6ul25s7t3rzyd.onion/ .onion]). The project also maintains related software such as cryptographic libraries on GitHub.
== Bitcoin Wallet Recommendation ==
It is impossible to provide a blanket recommendation regarding which Bitcoin wallet to use. This is an individual decision that depends upon:
* technical skill
* personal risk assignment
* financial value in Bitcoin
* available time
* various other factors
Other bitcoin wallets like [[electrum|Electrum]] may have better usability, but they also come with their own issues; see [[Electrum#Warnings|Electrum Warnings]] for example. Despite Bitcoin Core limitations it should be seriously considered for security reasons because it is the official Bitcoin client, particularly if transacting with Bitcoin accounts of significant financial value. Relative strengths include:
<div style="column-count:2;-moz-column-count:2;-webkit-column-count:2">
* developed by the Bitcoin Core development team
* most peer reviewed
* most conservative, security-focused development
* reproducible builds <ref><code>https://bitcoinbinary.org/</code> - a repository of Reproducible Build Proofs for Bitcoin Projects.</ref>
* full validating node
** transactions are validated against the complete blockchain - this lowers the probability of servers 'lying' to the client (the client has a higher probability of seeing its true Bitcoin balance)
* higher privacy
** all blocks are downloaded - the locally running node will not tell servers which wallet addresses belong to the node
</div>
Unfortunately, it takes a very long time to download and verify the blockchain. A large amount of disk space is also required, which may or may not be more manageable by using Bitcoin pruning mode.
== Bitcoin Core Usability ==
Compared to Electrum, some things are more difficult in Bitcoin Core such as:
* Simple backups - unfortunately Bitcoin Core does not support mnemonic phrase backup.
* Wallet configuration - it is not easy to set up a split offline wallet (cold storage) and online watch only wallet.
These activities are likely possible, but are [[undocumented]] here; refer to the footnotes for possible information sources. <ref>
[[Terms_of_Service#Non-Endorsement|Non-Endorsement]]: these links have not been audited by {{project_name_short}}, but are worthy of further investigation:
* https://github.com/JWWeatherman/yeticold
* https://github.com/BenWestgate/yeti.Bash
* https://github.com/BlockchainCommons/Airgapped-Wallet-Community/discussions/39
</ref>
= Bitcoin Core Setup =
== Installation ==
Perform these steps inside {{project_name_workstation_long}} (or {{q_project_name_long}}: App Qube).
{{Box|text=
'''1.''' Retrieve, verify and add the signing key.
{{gpg key
|url=scurl-download https://bitcoin.org/laanwj-releases.asc
|source_filename=laanwj-releases.asc
|gpg_fingerprint_output=Key fingerprint = 01EA 5486 DE18 A882 D4C2 6845 90C8 019E 36C2 E964
}}
'''2.''' Download the signed hash sum verification file.
{{CodeSelect|code=
scurl-download https://bitcoin.org/bin/bitcoin-core-0.21.1/SHA256SUMS.asc
}}
'''3.''' Download Bitcoin.
{{CodeSelect|code=
scurl-download https://bitcoin.org/bin/bitcoin-core-0.21.1/bitcoin-0.21.1-x86_64-linux-gnu.tar.gz
}}
'''4.''' Verify the hash sum digital signature.
{{CodeSelect|code=
gpg --verify SHA256SUMS.asc
}}
<u>If the virtual machine image is correct</u>, the output will include a statement the signature is good:
<pre>
Good signature
</pre>
This output might be followed by a warning as follows.
{{Template:GnuPG-Warning}}
'''5.''' De-armor the hash sum file. <ref>
To avoid the following confusing output.
<pre>
sha256sum --check --ignore-missing SHA256SUMS.asc
bitcoin-0.21.1-x86_64-linux-gnu.tar.gz: OK
sha256sum: WARNING: 20 lines are improperly formatted
</pre>
</ref>
{{CodeSelect|code=
gpg --decrypt SHA256SUMS.asc > SHA256SUMS
}}
'''6.''' Perform a hash sum check.
{{CodeSelect|code=
sha256sum --check --ignore-missing SHA256SUMS
}}
Expected output.
<pre>
bitcoin-0.21.1-x86_64-linux-gnu.tar.gz: OK
</pre>
'''7.''' Extract the tar file.
{{CodeSelect|code=
tar xzf bitcoin-0.21.1-x86_64-linux-gnu.tar.gz
}}
'''8.''' Done.
Download, digital signature verification and extraction of Bitcoin Core is complete.
}}
== Add a bitcoin-qt Start Menu Entry ==
Perform the following steps to create a <code>bitcoin-qt</code> start menu entry; this procedure is optional.
'''1.''' Create folder <code>~/.local/share/applications</code>.
{{CodeSelect|code=
mkdir -p ~/.local/share/applications
}}
'''2.''' Open file <code>~/.local/share/applications/bitcoin.desktop</code> in an editor as a regular, non-root user.
{{CodeSelect|code=
mousepad ~/.local/share/applications/bitcoin.desktop
}}
'''3.''' Paste the following contents.
{{CodeSelect|code=
[Desktop Entry]
Name=bitcoin-qt
Comment=bitcoin-qt
Exec=bash -c '~/bitcoin-*/bin/bitcoin-qt'
Terminal=false
Type=Application
Icon=money-manager-ex
StartupWMClass=bitcoin
MimeType=x-scheme-handler/bitcoin;
Categories=Finance;
}}
'''4.''' Save.
'''5.''' {{q_project_name_short}}: perform platform-specific steps.
In <code>dom0</code>, refresh Qubes' appmenu: <code>VM settings</code> → <code>Applications</code> → <code>Refresh Applications</code> → <code>Add desktop shortcut</code>.
'''6.''' Done.
The <code>bitcoin-qt</code> start menu entry should now be available.
== Autostart bitcoin-qt ==
Perform these steps to automatically start <code>bitcoin-qt</code>; this step is optional.
'''1.''' Apply the [[#Add a bitcoin-qt Start Menu Entry|Add a bitcoin-qt Start Menu Entry]] instructions first.
'''2.''' Create folder <code>~/.config/autostart</code>.
{{CodeSelect|code=
mkdir -p ~/.config/autostart
}}
'''3.''' Create a symlink from <code>~/.local/share/applications/bitcoin.desktop</code> to <code>~/.config/autostart/bitcoin.desktop</code>.
{{CodeSelect|code=
ln -s ~/.local/share/applications/bitcoin.desktop ~/.config/autostart/bitcoin.desktop
}}
'''4.''' Done.
<code>bitcoin-qt</code> will now automatically start the next time the VM is booted.
== Start from Command Line ==
To start <code>bitcoin-qt</code> (part of Bitcoin Core) from the command line, run.
{{CodeSelect|code=
~/bitcoin-*/bin/bitcoin-qt
}}
== Creating a Watch-Only Wallet ==
# Start <code>bitcoin-qt</code>.
# <code>Window</code> → <code>Console</code>
# Import address.
Note: replace <code>address</code> with the actual address to be watched.
{{CodeSelect|code=
importaddress address
}}
== Backup ==
TODO: research {{CodeSelect|code=dumpwallet|inline=true}} (see <code>hdseed=1</code> and {{CodeSelect|code=sethdseed|inline=true}}
= See Also =
* [[Bitcoin]]
= Donations =
After installing a Bitcoin client, please consider making a [[Donate|donation]] to {{project_name_short}} to help keep it running for many years to come.
{{Pay_Bitcoin_Specific}}
= Footnotes =
{{reflist|close=1}}
{{Footer}}
[[Category:Documentation]]