Compare commits
513 commits
Author | SHA1 | Date | |
---|---|---|---|
31afd13311 | |||
b6abd84935 | |||
90f5b87806 | |||
d700e9a1a2 | |||
0c09e2a57a | |||
97c98cf0a6 | |||
df8adf098e | |||
09f86e7494 | |||
b4b98d7ad0 | |||
434ae2d95e | |||
3f6754262e | |||
efbd5271b7 | |||
2b543db997 | |||
7750dba2c6 | |||
28989f1dc4 | |||
e92aba9190 | |||
0f7c23e1e5 | |||
b5d69ab693 | |||
0e917fcf1b | |||
a92f2dcde4 | |||
d2b1a61753 | |||
49e947f282 | |||
6c752caf90 | |||
abb99e6ddb | |||
6c053f4bc6 | |||
fbf07173b4 | |||
4213f7584b | |||
5280e456f5 | |||
56c2ac1263 | |||
60618c5099 | |||
5bb3112c68 | |||
ba2c8c0fa6 | |||
8e4ea27962 | |||
2076361f88 | |||
d3d688deae | |||
5df1b6af3e | |||
c86f68df76 | |||
27ac4a1e79 | |||
097d87df2f | |||
85226b80bd | |||
2291b6a7cc | |||
e90d4437a2 | |||
8efd7e62bd | |||
c2532d3f6a | |||
e254dd665b | |||
8971b04ae8 | |||
4c94a061c0 | |||
c3cead8737 | |||
b2a55984f8 | |||
c909ac2e09 | |||
1ec3f19fc0 | |||
12202c61bb | |||
9e6a8bc5c4 | |||
2e082af18e | |||
71edb4cc79 | |||
ca6297be97 | |||
16761956ce | |||
791be7b57d | |||
1eede33ce8 | |||
79f5d63fa6 | |||
57446a21f6 | |||
cc082a7678 | |||
976474f28b | |||
edd0da7968 | |||
d81d2329f2 | |||
d29583af8f | |||
0d563c7dcd | |||
35754ca98f | |||
38aba25232 | |||
3e2ce7b7aa | |||
1d231e1d9f | |||
32c55e2ac8 | |||
4bcd9daf5d | |||
a5fc0d8f56 | |||
fdd1211cdd | |||
2c71909290 | |||
6286491490 | |||
e481bf28bb | |||
b945c0b208 | |||
e6e2f460c3 | |||
dbb81ea357 | |||
40d2a4ea42 | |||
60f821fe73 | |||
7739221064 | |||
b5b1e0426a | |||
2cdacb07ab | |||
c338c5e6c4 | |||
7f33b17cd1 | |||
6912d93940 | |||
a72aba3bea | |||
1806f0965e | |||
0ff5375296 | |||
a4d965547e | |||
6173ca37cd | |||
fd6da81954 | |||
2799811ab1 | |||
84157f3df2 | |||
e83ddb7e8f | |||
c05cd54411 | |||
5f390bde2a | |||
56bc526b59 | |||
8632c83881 | |||
8e326ac96b | |||
7dae118b0a | |||
d1075955b2 | |||
bef1ae5f3c | |||
a8c035e88f | |||
aae64a9937 | |||
0c92645c9c | |||
5dd1a6283b | |||
d8809182e6 | |||
a7ed71e78f | |||
4598ec33fc | |||
10f64e120e | |||
b4569c0730 | |||
557a921835 | |||
6003cdea85 | |||
16764d6e80 | |||
dcc22f1696 | |||
0d0c5e5a7f | |||
5dee6f61b1 | |||
52f2f3c72b | |||
fccd2b46b6 | |||
c31ff0f095 | |||
bde7442526 | |||
19c4ff8cb9 | |||
0fb46507b3 | |||
065574d672 | |||
08e7d784da | |||
478115a63b | |||
029c83da14 | |||
c2c71b2f21 | |||
14a7cd1ba1 | |||
f1acd77583 | |||
8caee7ecee | |||
7b27476601 | |||
043ce9a2c2 | |||
cbc3aaeed8 | |||
61c1cf3a3c | |||
15f0fc62ac | |||
36e39a395d | |||
661197f502 | |||
13a5cc8589 | |||
dd18d5c962 | |||
0589466f76 | |||
9508da5d81 | |||
b0d9b4627a | |||
36d8b7bd72 | |||
c6f3cbbf49 | |||
88e79c9cc5 | |||
1b9bc8fada | |||
07406ddd36 | |||
9c6af6d841 | |||
7a0b3034c7 | |||
7cd56df174 | |||
97190c0ae6 | |||
16a2776ea8 | |||
84be09269b | |||
03a7605d8a | |||
18dbe3291b | |||
6efc333ffe | |||
24d9b1c4e3 | |||
f8a5488be3 | |||
3564eebeca | |||
523d346857 | |||
82ed8e0cc5 | |||
5f41105096 | |||
b8dcff1104 | |||
622d1cc126 | |||
d8643a4129 | |||
a9a5736df8 | |||
aeccc23943 | |||
1a6738f920 | |||
7a83a2363f | |||
20d2cbc2fe | |||
beccd79ca4 | |||
6591f8ed67 | |||
4c93783ab6 | |||
87942b39b8 | |||
bdff0bf3bb | |||
ce3dbd55a2 | |||
3bd16e09b9 | |||
58baaf1075 | |||
fdb344fcdc | |||
1fe44fa0ee | |||
39bfd4e248 | |||
2c4d4a5614 | |||
84956c7b65 | |||
b8ffab317d | |||
7890e26bad | |||
d946a24d6f | |||
9455359a86 | |||
a5058f116f | |||
67a0b0363d | |||
197104536a | |||
73d8703534 | |||
0d8e62471c | |||
4676f8f008 | |||
6174ddf17e | |||
e406a7a814 | |||
fbfd14f8ab | |||
25aa74fd45 | |||
c39bdb9e49 | |||
b1913b5106 | |||
5e2b2b2056 | |||
a312c4ad3e | |||
deeabe9438 | |||
59da28cb06 | |||
b8a29b9f59 | |||
caf26b77ab | |||
fb194d7319 | |||
e90e8e5cba | |||
ce6e3d8137 | |||
fe1bca68da | |||
8ee0b0259e | |||
0ec57cfcba | |||
9de15dd687 | |||
07be86c147 | |||
59f27ca73d | |||
2370fc5701 | |||
ef260375d1 | |||
934832844a | |||
4782a56f0b | |||
bee1524723 | |||
f45fc26cd9 | |||
9569222b7b | |||
9a14a2f8fb | |||
5d0769fc7e | |||
1374bb47c2 | |||
6336a3a994 | |||
c49da8b6f4 | |||
23ba9e1644 | |||
1c32538089 | |||
3c327d0d6a | |||
c2a0bd2890 | |||
4a1975b0e3 | |||
6aff1141f4 | |||
3bf47e73f3 | |||
c9586396d2 | |||
9370db962b | |||
f8813f8e13 | |||
57303f1c06 | |||
6150f6717a | |||
3a5a31c113 | |||
c42b38ea51 | |||
672a38cc06 | |||
5db95e5a5f | |||
2dc1adb7fe | |||
4c46af0483 | |||
a88d53be2e | |||
14a2e1ba96 | |||
1d2380df56 | |||
7ebedc2aa3 | |||
246a103e9e | |||
0c3d683be4 | |||
5c6017aad4 | |||
290faedcc3 | |||
7abb81b2ea | |||
575f734eec | |||
d80ddf3244 | |||
6bea578da0 | |||
7e541072ce | |||
a7442cbfb0 | |||
7e7f7e2cfd | |||
cfef80c54c | |||
9362186ba7 | |||
3c4b35f3c4 | |||
c7a1b7c90c | |||
f509487d3b | |||
e4dccd20ae | |||
df3b708e8c | |||
2b9519ea1e | |||
f4f7759649 | |||
dad797d01b | |||
4f3851a722 | |||
303be2e442 | |||
8e46b60b2f | |||
97f95559c5 | |||
164d0b2e83 | |||
f9084e53d1 | |||
36bde0efca | |||
72008c5a0e | |||
7d81c1bb17 | |||
c984ff17a4 | |||
869aad50af | |||
9d507be2ae | |||
cc0d6ada81 | |||
5857ea3275 | |||
694e0b8176 | |||
102d3735f2 | |||
1c12362df6 | |||
2241f628e5 | |||
c77ba66ade | |||
0487794b7c | |||
5e4441235b | |||
cf04b907ef | |||
0a3c2a29a6 | |||
efcc8dc1d7 | |||
09a05ea58c | |||
c277bc185e | |||
023fc6d529 | |||
ba1a1e289f | |||
7c90da10c2 | |||
783a2b5504 | |||
e3ba25473f | |||
98fae509c2 | |||
c13e509a6c | |||
4bbb83511b | |||
21c0763a3c | |||
83121eacf7 | |||
c5d1f6dfee | |||
daec7df217 | |||
3f736fd61f | |||
291af5847d | |||
fb793ef52a | |||
7921b36a7d | |||
c25b81d43b | |||
e8fb21e127 | |||
d5446c1a27 | |||
a5eb8c4bcb | |||
760b9d05e6 | |||
1efd93e613 | |||
1c4461b9c5 | |||
75762aaf26 | |||
b155af83e7 | |||
146ec3bab9 | |||
07867727d3 | |||
4c68245cf7 | |||
fe0b89e3d5 | |||
313a2b1722 | |||
25dada932a | |||
51aca8e38d | |||
d1e89586de | |||
c5165e9b83 | |||
e0d1683bff | |||
1182bf8391 | |||
fb537e6120 | |||
ce54d88b56 | |||
e630cee134 | |||
2e81416cf5 | |||
a485280a75 | |||
3c6a25fb7c | |||
fe5dab6a60 | |||
4175bf45ad | |||
c701a2fc6f | |||
158aff2897 | |||
97edf2a6b0 | |||
cfb9ecdc58 | |||
48abb72eac | |||
93beb1c83a | |||
ab7646a790 | |||
79caf5551e | |||
9e988ab26e | |||
13ac67551a | |||
f97ce89e77 | |||
ddf22f7774 | |||
45fa893452 | |||
d716845e25 | |||
8515c7b46f | |||
66bfe18e8e | |||
00574dcab9 | |||
df7fc0e060 | |||
6a2b1cce6d | |||
02d0e99907 | |||
c7206962be | |||
fb56f75e9c | |||
0565a85c7c | |||
5040cd0d03 | |||
44678e5442 | |||
5389fac4ea | |||
29f46b2e73 | |||
33b9f6cb5e | |||
c1c7eb0a2f | |||
b6b6f6151e | |||
256afd61f7 | |||
be643366de | |||
88ede7a3f7 | |||
4ef46f867a | |||
63a2b61ef1 | |||
c0b831a35f | |||
548ffd6ed2 | |||
abf2bfede4 | |||
e6472f2b57 | |||
ce8c876e30 | |||
d16cfaf9c4 | |||
273327a378 | |||
4272f9bbb1 | |||
7529f8ee12 | |||
348c51a201 | |||
c36c7801fe | |||
e4a88648a3 | |||
56890a560e | |||
2b41e21997 | |||
9b49fa8e11 | |||
9147b41f2b | |||
09592a572d | |||
5667d6586b | |||
ff2dd3e01d | |||
b9b293ae35 | |||
acc3a19ff9 | |||
7615b9a9e6 | |||
54ab96311d | |||
3386274dcd | |||
23226323c7 | |||
06763f4157 | |||
7558b5fdb8 | |||
881b10d750 | |||
3401f27651 | |||
ce265449c6 | |||
dfb78d26dc | |||
8e7d8eed22 | |||
3cdddabe39 | |||
c42dba492b | |||
843281ce87 | |||
354a6e3a12 | |||
149d729b02 | |||
96961861df | |||
ebbc68e855 | |||
fcdf94ca2c | |||
f80bfe9068 | |||
0170778a4c | |||
1847ca06e4 | |||
86c682b375 | |||
bf938187e7 | |||
2629fa792f | |||
acb11bf065 | |||
4229222073 | |||
d6d0d95a2f | |||
4ffde07033 | |||
0d2398c1b5 | |||
bd905d1d08 | |||
b2211a4139 | |||
80e9e800e1 | |||
05c54fceca | |||
4dd49512e9 | |||
ce4f6974b0 | |||
dd9edc86dc | |||
b3d9bbc7dc | |||
3c1fa13921 | |||
18a55c271c | |||
dda4b51d89 | |||
0fce867c51 | |||
3007516320 | |||
ed8864b6d2 | |||
11e99e42e8 | |||
d117d075a4 | |||
5887ca3ec5 | |||
5944fbd33c | |||
58ce7f5405 | |||
7f754bbf05 | |||
b3b2f162c6 | |||
c7fa40b00d | |||
0c600d7f9d | |||
ef9242b9ec | |||
d96b5daafa | |||
0fa6b5c912 | |||
f9b9a591b8 | |||
27488d8f57 | |||
676c24b64c | |||
3ba037d793 | |||
3b477bcd53 | |||
a4638bb50f | |||
26a1c76b1e | |||
41406bfa17 | |||
c338a71bd2 | |||
4aafd6fabd | |||
0a09a9cef1 | |||
62c493e7a8 | |||
0f4815d2b7 | |||
ad8d1eadae | |||
d62033cb90 | |||
f6e7d736d3 | |||
3de77ad6d8 | |||
9327e1d779 | |||
62976d939b | |||
cf79da3f96 | |||
6edb354e66 | |||
447af0edcd | |||
15c872ce9b | |||
578f738810 | |||
59dcceea58 | |||
b0d25579cb | |||
16e5ae5939 | |||
7f269c6c39 | |||
e4364e1d0e | |||
f933c83b75 | |||
358b2734fb | |||
29b800443c | |||
89c01f3866 | |||
31e6a818ec | |||
9dced9cb98 | |||
e3d075f710 | |||
01a71ec71d | |||
022bcfb064 | |||
d0afe42ed2 | |||
e896e90e6e | |||
294d408d70 | |||
cb49441a25 | |||
d725cfb8a9 | |||
4b7e35c0ba | |||
7f5d1446d5 | |||
7626b811a7 | |||
971f696733 | |||
362784404e | |||
42c93f32de | |||
28d62c2b2b | |||
df1855ffe5 | |||
f9ed102553 | |||
d53a3bebee | |||
06005bd194 | |||
8877f8ed91 | |||
13d1e0a803 | |||
c0107cc33f |
35
.github/ISSUE_TEMPLATE.md
vendored
35
.github/ISSUE_TEMPLATE.md
vendored
|
@ -1,35 +0,0 @@
|
|||
<!--- Remove sections that do not apply -->
|
||||
|
||||
This issue tracker is only for technical issues related to Dogecoin Core.
|
||||
|
||||
For general questions about Dogecoin please use one of the various communities, e.g. Reddit, IRC, Discord, etc.
|
||||
|
||||
### Describe the issue
|
||||
|
||||
### Can you reliably reproduce the issue?
|
||||
#### If so, please list the steps to reproduce below:
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
|
||||
### Expected behaviour
|
||||
Tell us what should happen
|
||||
|
||||
### Actual behaviour
|
||||
Tell us what happens instead
|
||||
|
||||
### Screenshots.
|
||||
If the issue is related to the GUI, screenshots can be added to this issue via drag & drop.
|
||||
|
||||
### What version of Dogecoin Core are you using?
|
||||
List the version number/commit ID, and if it is an official binary, self compiled or a distribution package such as PPA.
|
||||
|
||||
### Machine specs:
|
||||
- OS:
|
||||
- CPU:
|
||||
- RAM:
|
||||
- Disk size:
|
||||
- Disk Type (HD/SDD):
|
||||
|
||||
### Any extra information that might be useful in the debugging process.
|
||||
This is normally the contents of a `debug.log` or `config.log` file. Raw text or a link to a pastebin type site are preferred.
|
40
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
40
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
|
@ -0,0 +1,40 @@
|
|||
---
|
||||
name: 🐜 Bug Report
|
||||
about: Create a report to help us improve
|
||||
title: '[bug] '
|
||||
---
|
||||
|
||||
<!-- Please make sure you are posting an technical issue related to Dogecoin Core. -->
|
||||
|
||||
<!-- For general questions about Dogecoin or wallet recovery please use one of the various communities:
|
||||
* [Dogeducation on reddit](https://www.reddit.com/r/dogeducation/)
|
||||
* [Discord](https://discord.com/invite/dogecoin) -->
|
||||
|
||||
<!-- ISSUES MISSING IMPORTANT INFORMATION MAY BE CLOSED WITHOUT INVESTIGATION. -->
|
||||
|
||||
# Bug Report
|
||||
|
||||
**Current behavior:**
|
||||
<!-- Describe how the bug manifests. -->
|
||||
|
||||
**Expected behavior**
|
||||
<!-- Describe what the behavior would be without the bug. -->
|
||||
|
||||
**Steps to reproduce:**
|
||||
<!-- Please explain the steps required to duplicate the issue, especially if you are able to provide a sample application or sample code -->
|
||||
|
||||
**Screenshots**
|
||||
<!-- If the issue is related to the GUI, screenshots can be added to this issue via drag & drop. -->
|
||||
|
||||
**Dogecoin Core version**
|
||||
<!-- List the version number/commit ID, and if it is an official binary, self compiled or a distribution package such as PPA. -->
|
||||
|
||||
**Machine specs**
|
||||
- OS:
|
||||
- CPU:
|
||||
- RAM:
|
||||
- Disk size:
|
||||
- Disk Type (HD/SDD):
|
||||
|
||||
**Extra information**
|
||||
<!-- This is normally the contents of a `debug.log` or `config.log` file. Raw text or a link to a pastebin type site are preferred. -->
|
30
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
30
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
---
|
||||
name: 🚀 Feature Request
|
||||
about: Suggest an idea for this project
|
||||
title: '[feat] '
|
||||
---
|
||||
|
||||
<!-- Please make sure you are posting an technical issue related to Dogecoin Core. -->
|
||||
|
||||
<!-- For general questions about Dogecoin or wallet recovery please use one of the various communities:
|
||||
* [Dogeducation on reddit](https://www.reddit.com/r/dogeducation/)
|
||||
* [Discord](https://discord.com/invite/dogecoin) -->
|
||||
|
||||
<!-- ISSUES MISSING IMPORTANT INFORMATION MAY BE CLOSED WITHOUT INVESTIGATION. -->
|
||||
|
||||
# Feature Request
|
||||
|
||||
**Describe the Feature Request**
|
||||
<!-- A clear and concise description of what the feature request is. Please include if your feature request is related to a problem. -->
|
||||
|
||||
**Describe Preferred Solution**
|
||||
<!-- A clear and concise description of what you want to happen. -->
|
||||
|
||||
**Describe Alternatives**
|
||||
<!-- A clear and concise description of any alternative solutions or features you've considered. -->
|
||||
|
||||
**Related Code**
|
||||
<!-- If you are able to illustrate the feature request with an example, please provide a samples via an online code collaborator such as [StackBlitz](https://stackblitz.com), or code snippet on [GitHub](https://github.com). -->
|
||||
|
||||
**Additional Context**
|
||||
<!-- List any other information that is relevant to your issue. Stack traces, related issues, suggestions on how to add, use case, Stack Overflow links, forum links, screenshots, OS if applicable, etc. -->
|
227
.github/workflows/ci.yml
vendored
Normal file
227
.github/workflows/ci.yml
vendored
Normal file
|
@ -0,0 +1,227 @@
|
|||
name: Continuous Integration
|
||||
|
||||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
- '**/*.md'
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- 'doc/**'
|
||||
- 'contrib/**'
|
||||
- '**/*.md'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: ${{ matrix.name }}
|
||||
|
||||
env:
|
||||
MAKEJOBS: "-j3"
|
||||
CHECK_DOC: "0"
|
||||
CCACHE_SIZE: "100M"
|
||||
CCACHE_TEMPDIR: /tmp/.ccache-temp
|
||||
CCACHE_COMPRESS: "1"
|
||||
PYTHON_DEBUG: "1"
|
||||
WINEDEBUG: fixme-all
|
||||
SDK_URL: https://bitcoincore.org/depends-sources/sdks
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
name:
|
||||
- aarch64-linux
|
||||
- armhf-linux
|
||||
- i686-linux
|
||||
- i686-win
|
||||
- x86_64-linux-dbg
|
||||
- x86_64-linux-nowallet
|
||||
- x86_64-macos
|
||||
- x86_64-win
|
||||
- x86_64-linux-experimental
|
||||
include:
|
||||
- name: i686-linux
|
||||
host: i686-pc-linux-gnu
|
||||
os: ubuntu-18.04
|
||||
packages: g++-multilib bc python3-zmq
|
||||
run-tests: true
|
||||
check-security: true
|
||||
check-symbols: true
|
||||
dep-opts: "NO_QT=1"
|
||||
config-opts: "--enable-zmq --enable-glibc-back-compat LDFLAGS=-static-libstdc++"
|
||||
goal: install
|
||||
- name: armhf-linux
|
||||
host: arm-linux-gnueabihf
|
||||
os: ubuntu-18.04
|
||||
packages: g++-arm-linux-gnueabihf
|
||||
run-tests: false
|
||||
check-security: true
|
||||
check-symbols: false
|
||||
dep-opts: "NO_QT=1"
|
||||
config-opts: "--enable-glibc-back-compat --disable-tests LDFLAGS=-static-libstdc++"
|
||||
goal: install
|
||||
- name: aarch64-linux
|
||||
host: aarch64-linux-gnu
|
||||
os: ubuntu-18.04
|
||||
packages: g++-aarch64-linux-gnu
|
||||
run-tests: false
|
||||
check-security: true
|
||||
check-symbols: false
|
||||
dep-opts: "NO_QT=1"
|
||||
config-opts: "--enable-zmq --enable-glibc-back-compat --disable-tests LDFLAGS=-static-libstdc++"
|
||||
goal: install
|
||||
- name: x86_64-linux-nowallet
|
||||
host: x86_64-unknown-linux-gnu
|
||||
os: ubuntu-18.04
|
||||
packages: python3
|
||||
run-tests: true
|
||||
check-security: true
|
||||
check-symbols: true
|
||||
dep-opts: "NO_WALLET=1"
|
||||
config-opts: "--enable-gui=qt5 --enable-glibc-back-compat --disable-wallet LDFLAGS=-static-libstdc++"
|
||||
goal: install
|
||||
- name: x86_64-linux-dbg
|
||||
host: x86_64-unknown-linux-gnu
|
||||
os: ubuntu-18.04
|
||||
packages: bc python3-zmq
|
||||
run-tests: true
|
||||
check-security: true
|
||||
check-symbols: false
|
||||
dep-opts: "DEBUG=1"
|
||||
config-opts: "--enable-gui=qt5 --enable-zmq --enable-glibc-back-compat CPPFLAGS=-DDEBUG_LOCKORDER"
|
||||
goal: install
|
||||
- name: i686-win
|
||||
host: i686-w64-mingw32
|
||||
arch: "i386"
|
||||
os: ubuntu-18.04
|
||||
packages: python3 nsis g++-mingw-w64-i686 wine-stable bc wine-binfmt
|
||||
postinstall: |
|
||||
sudo update-alternatives --set i686-w64-mingw32-gcc /usr/bin/i686-w64-mingw32-gcc-posix
|
||||
sudo update-alternatives --set i686-w64-mingw32-g++ /usr/bin/i686-w64-mingw32-g++-posix
|
||||
sudo update-binfmts --import /usr/share/binfmts/wine
|
||||
run-tests: true
|
||||
check-security: true
|
||||
check-symbols: false
|
||||
dep-opts: ""
|
||||
config-opts: "--enable-gui=qt5"
|
||||
goal: install
|
||||
- name: x86_64-win
|
||||
host: x86_64-w64-mingw32
|
||||
arch: "i386"
|
||||
os: ubuntu-18.04
|
||||
packages: python3 nsis g++-mingw-w64-x86-64 wine64 bc wine-binfmt
|
||||
postinstall: |
|
||||
sudo update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix
|
||||
sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
|
||||
sudo update-binfmts --import /usr/share/binfmts/wine
|
||||
run-tests: true
|
||||
check-security: true
|
||||
check-symbols: false
|
||||
dep-opts: ""
|
||||
config-opts: "--enable-gui=qt5"
|
||||
goal: install
|
||||
- name: x86_64-macos
|
||||
host: x86_64-apple-darwin11
|
||||
os: ubuntu-18.04
|
||||
packages: cmake imagemagick libcap-dev librsvg2-bin libz-dev libtiff-tools libtinfo5 python3-setuptools xorriso libtinfo5
|
||||
run-tests: false
|
||||
check-security: false
|
||||
check-symbols: false
|
||||
dep-opts: ""
|
||||
config-opts: "--enable-gui=qt5 --disable-tests"
|
||||
goal: deploy
|
||||
sdk: 10.11
|
||||
- name: x86_64-linux-experimental
|
||||
host: x86_64-unknown-linux-gnu
|
||||
os: ubuntu-20.04
|
||||
packages: bc python3-zmq
|
||||
run-tests: true
|
||||
dep-opts: "AVX2=1"
|
||||
config-opts: "--with-intel-avx2 --enable-gui=qt5 --enable-zmq --enable-glibc-back-compat --enable-reduce-exports"
|
||||
goal: install
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
steps:
|
||||
- name: Add architecture
|
||||
if: ${{ matrix.arch }}
|
||||
run: |
|
||||
sudo dpkg --add-architecture "${{ matrix.arch }}"
|
||||
|
||||
- name: Install packages
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install build-essential libtool autotools-dev automake pkg-config bsdmainutils curl ca-certificates ccache python3 rsync git procps bison
|
||||
sudo apt-get install ${{ matrix.packages }}
|
||||
|
||||
- name: Post install
|
||||
if: ${{ matrix.postinstall }}
|
||||
run: ${{ matrix.postinstall }}
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: SDK cache
|
||||
if: ${{ matrix.sdk }}
|
||||
uses: actions/cache@v2
|
||||
env:
|
||||
cache-name: sdk
|
||||
with:
|
||||
path: ./depends/sdk-sources
|
||||
key: ${{ matrix.name }}-${{ env.cache-name }}
|
||||
|
||||
- name: Install SDK
|
||||
if: ${{ matrix.sdk }}
|
||||
run: |
|
||||
mkdir -p ./depends/sdk-sources
|
||||
mkdir -p ./depends/SDKs
|
||||
curl --location --fail $SDK_URL/MacOSX${{ matrix.sdk }}.sdk.tar.gz -o depends/sdk-sources/MacOSX${{ matrix.sdk }}.sdk.tar.gz
|
||||
tar -C depends/SDKs -xf depends/sdk-sources/MacOSX${{ matrix.sdk }}.sdk.tar.gz
|
||||
|
||||
- name: Dependency cache
|
||||
uses: actions/cache@v2
|
||||
env:
|
||||
cache-name: depends
|
||||
with:
|
||||
path: ./depends/built
|
||||
key: ${{ matrix.name }}-${{ env.cache-name }}-${{ hashFiles('depends/packages/*') }}
|
||||
|
||||
- name: Build depends
|
||||
run: |
|
||||
make $MAKEJOBS -C depends HOST=${{ matrix.host }} ${{ matrix.dep-opts }}
|
||||
|
||||
- name: CCache
|
||||
uses: actions/cache@v2
|
||||
env:
|
||||
cache-name: ccache
|
||||
with:
|
||||
path: ~/.ccache
|
||||
key: ${{ matrix.name }}-${{ env.cache-name }}-${{ hashFiles('**/configure.ac') }}
|
||||
|
||||
- name: Build Dogecoin
|
||||
run: |
|
||||
depends/${{ matrix.host }}/native/bin/ccache --max-size=$CCACHE_SIZE
|
||||
./autogen.sh
|
||||
./configure --prefix=`pwd`/depends/${{ matrix.host }} ${{ matrix.config-opts }} --enable-reduce-exports || ( cat config.log && false)
|
||||
make $MAKEJOBS ${{ matrix.goal }} || ( echo "Build failure. Verbose build follows." && make ${{ matrix.goal }} V=1 ; false )
|
||||
|
||||
- name: Run tests
|
||||
if: ${{ matrix.run-tests }}
|
||||
run: |
|
||||
make check $MAKEJOBS VERBOSE=1
|
||||
qa/pull-tester/install-deps.sh
|
||||
qa/pull-tester/rpc-tests.py --coverage
|
||||
|
||||
- name: Check security
|
||||
if: ${{ matrix.check-security }}
|
||||
run: make -C src check-security
|
||||
|
||||
- name: Check symbols
|
||||
if: ${{ matrix.check-symbols }}
|
||||
run: make -C src check-symbols
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: dogecoin-${{ github.sha }}-${{ matrix.name }}
|
||||
path: |
|
||||
depends/${{ matrix.host }}/bin/dogecoin*
|
||||
dist/Dogecoin-Qt.app
|
71
.github/workflows/codeql-analysis.yml
vendored
Normal file
71
.github/workflows/codeql-analysis.yml
vendored
Normal file
|
@ -0,0 +1,71 @@
|
|||
# CodeQL GH Actions file
|
||||
name: CodeQL
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- '*-dev'
|
||||
- '*-maint'
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches:
|
||||
- '*-dev'
|
||||
paths-ignore:
|
||||
- '**/*.md'
|
||||
- '**/*.txt'
|
||||
- 'contrib'
|
||||
- 'doc'
|
||||
- 'share'
|
||||
- 'qa'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-18.04
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
security-events: write
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ 'cpp' ]
|
||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Update system
|
||||
run: |
|
||||
sudo apt-get update --yes
|
||||
sudo apt-get install build-essential libtool autotools-dev automake pkg-config bsdmainutils --yes
|
||||
|
||||
- name: Dependency cache
|
||||
uses: actions/cache@v2
|
||||
env:
|
||||
cache-name: depends
|
||||
with:
|
||||
path: ./depends/built
|
||||
key: codeql-${{ env.cache-name }}-${{ hashFiles('depends/packages/*') }}
|
||||
|
||||
- name: Build depends
|
||||
run: |
|
||||
pushd depends
|
||||
make -j4 HOST=x86_64-pc-linux-gnu
|
||||
popd
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v1
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
|
||||
- name: Build Dogecoin
|
||||
run: |
|
||||
./autogen.sh
|
||||
./configure --prefix=`pwd`/depends/x86_64-pc-linux-gnu
|
||||
make -j4
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v1
|
15
.gitignore
vendored
15
.gitignore
vendored
|
@ -110,3 +110,18 @@ qa/cache/*
|
|||
|
||||
libbitcoinconsensus.pc
|
||||
contrib/devtools/split-debug.sh
|
||||
|
||||
.idea/
|
||||
.vscode/*
|
||||
|
||||
# Snapcraft
|
||||
parts/
|
||||
prime/
|
||||
stage/
|
||||
*.snap
|
||||
|
||||
### IntelliJ IDEA ###
|
||||
.idea
|
||||
*.iws
|
||||
*.iml
|
||||
*.ipr
|
||||
|
|
76
.travis.yml
76
.travis.yml
|
@ -1,76 +0,0 @@
|
|||
sudo: required
|
||||
dist: trusty
|
||||
os: linux
|
||||
language: generic
|
||||
cache:
|
||||
directories:
|
||||
- depends/built
|
||||
- depends/sdk-sources
|
||||
- $HOME/.ccache
|
||||
env:
|
||||
global:
|
||||
- MAKEJOBS=-j3
|
||||
- RUN_TESTS=false
|
||||
- CHECK_DOC=0
|
||||
- BOOST_TEST_RANDOM=1$TRAVIS_BUILD_ID
|
||||
- CCACHE_SIZE=100M
|
||||
- CCACHE_TEMPDIR=/tmp/.ccache-temp
|
||||
- CCACHE_COMPRESS=1
|
||||
- BASE_OUTDIR=$TRAVIS_BUILD_DIR/out
|
||||
- SDK_URL=https://bitcoincore.org/depends-sources/sdks
|
||||
- PYTHON_DEBUG=1
|
||||
- WINEDEBUG=fixme-all
|
||||
matrix:
|
||||
# ARM
|
||||
- HOST=arm-linux-gnueabihf PACKAGES="g++-arm-linux-gnueabihf" DEP_OPTS="NO_QT=1" CHECK_DOC=1 GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports"
|
||||
# Win32
|
||||
- HOST=i686-w64-mingw32 DPKG_ADD_ARCH="i386" DEP_OPTS="NO_QT=1" PACKAGES="python3 nsis g++-mingw-w64-i686 wine1.6 bc" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-reduce-exports"
|
||||
# 32-bit + dash
|
||||
- HOST=i686-pc-linux-gnu PACKAGES="g++-multilib bc python3-zmq" DEP_OPTS="NO_QT=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++" USE_SHELL="/bin/dash"
|
||||
# Win64
|
||||
- HOST=x86_64-w64-mingw32 DPKG_ADD_ARCH="i386" DEP_OPTS="NO_QT=1" PACKAGES="python3 nsis g++-mingw-w64-x86-64 wine1.6 bc" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-reduce-exports"
|
||||
# dogecoind
|
||||
- HOST=x86_64-unknown-linux-gnu PACKAGES="bc python3-zmq" DEP_OPTS="NO_QT=1 NO_UPNP=1 DEBUG=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --enable-glibc-back-compat --enable-reduce-exports CPPFLAGS=-DDEBUG_LOCKORDER"
|
||||
# No wallet
|
||||
- HOST=x86_64-unknown-linux-gnu PACKAGES="python3" DEP_OPTS="NO_WALLET=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports"
|
||||
# Cross-Mac
|
||||
- HOST=x86_64-apple-darwin11 PACKAGES="cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python-dev" BITCOIN_CONFIG="--enable-gui --enable-reduce-exports" OSX_SDK=10.11 GOAL="deploy"
|
||||
|
||||
before_install:
|
||||
- export PATH=$(echo $PATH | tr ':' "\n" | sed '/\/opt\/python/d' | tr "\n" ":" | sed "s|::|:|g")
|
||||
- export PATH=$(echo $PATH | tr ':' "\n" | sed '/\/opt\/pyenv/d' | tr "\n" ":" | sed "s|::|:|g")
|
||||
install:
|
||||
- if [ -n "$PPA" ]; then travis_retry sudo add-apt-repository "$PPA" -y; fi
|
||||
- if [ -n "$DPKG_ADD_ARCH" ]; then sudo dpkg --add-architecture "$DPKG_ADD_ARCH" ; fi
|
||||
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get update; fi
|
||||
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get install --no-install-recommends --no-upgrade -qq $PACKAGES; fi
|
||||
before_script:
|
||||
- unset CC; unset CXX
|
||||
- if [ "$CHECK_DOC" = 1 ]; then contrib/devtools/check-doc.py; fi
|
||||
- mkdir -p depends/SDKs depends/sdk-sources
|
||||
- if [ "$RUN_TESTS" = "true" ]; then qa/pull-tester/install-deps.sh; fi
|
||||
- if [ -n "$OSX_SDK" -a ! -f depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then curl --location --fail $SDK_URL/MacOSX${OSX_SDK}.sdk.tar.gz -o depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi
|
||||
- if [ -n "$OSX_SDK" -a -f depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then tar -C depends/SDKs -xf depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi
|
||||
- make $MAKEJOBS -C depends HOST=$HOST $DEP_OPTS
|
||||
script:
|
||||
- if [ "$RUN_TESTS" = "true" -a "$TRAVIS_REPO_SLUG" = "bitcoin/bitcoin" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then while read LINE; do travis_retry gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys $LINE; done < contrib/verify-commits/trusted-keys; fi
|
||||
- if [ "$RUN_TESTS" = "true" -a "$TRAVIS_REPO_SLUG" = "bitcoin/bitcoin" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then git fetch --unshallow; fi
|
||||
- if [ "$RUN_TESTS" = "true" -a "$TRAVIS_REPO_SLUG" = "bitcoin/bitcoin" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then contrib/verify-commits/verify-commits.sh; fi
|
||||
- export TRAVIS_COMMIT_LOG=`git log --format=fuller -1`
|
||||
- if [ -n "$USE_SHELL" ]; then export CONFIG_SHELL="$USE_SHELL"; fi
|
||||
- OUTDIR=$BASE_OUTDIR/$TRAVIS_PULL_REQUEST/$TRAVIS_JOB_NUMBER-$HOST
|
||||
- BITCOIN_CONFIG_ALL="--disable-dependency-tracking --prefix=$TRAVIS_BUILD_DIR/depends/$HOST --bindir=$OUTDIR/bin --libdir=$OUTDIR/lib"
|
||||
- depends/$HOST/native/bin/ccache --max-size=$CCACHE_SIZE
|
||||
- test -n "$USE_SHELL" && eval '"$USE_SHELL" -c "./autogen.sh"' || ./autogen.sh
|
||||
- mkdir build && cd build
|
||||
- ../configure --cache-file=config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false)
|
||||
- make distdir VERSION=$HOST
|
||||
- cd dogecoin-$HOST
|
||||
- ./configure --cache-file=../config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false)
|
||||
- make $MAKEJOBS $GOAL || ( echo "Build failure. Verbose build follows." && make $GOAL V=1 ; false )
|
||||
- export LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/depends/$HOST/lib
|
||||
- if [ "$RUN_TESTS" = "true" ]; then make $MAKEJOBS check VERBOSE=1; fi
|
||||
- if [ "$RUN_TESTS" = "true" ]; then qa/pull-tester/rpc-tests.py --coverage; fi
|
||||
after_script:
|
||||
- echo $TRAVIS_COMMIT_RANGE
|
||||
- echo $TRAVIS_COMMIT_LOG
|
223
CONTRIBUTING.md
223
CONTRIBUTING.md
|
@ -1,22 +1,22 @@
|
|||
Contributing to Bitcoin Core
|
||||
============================
|
||||
# Contributing to Dogecoin Core
|
||||
|
||||
The Bitcoin Core project operates an open contributor model where anyone is
|
||||
welcome to contribute towards development in the form of peer review, testing
|
||||
and patches. This document explains the practical process and guidelines for
|
||||
contributing.
|
||||
Dogecoin Core is open source software, and we would welcome contributions
|
||||
which improve the state of the software. For those wanting to discuss changes,
|
||||
or look for work that needs doing, please see:
|
||||
|
||||
Firstly in terms of structure, there is no particular concept of "Core
|
||||
developers" in the sense of privileged people. Open source often naturally
|
||||
revolves around meritocracy where longer term contributors gain more trust from
|
||||
the developer community. However, some hierarchy is necessary for practical
|
||||
purposes. As such there are repository "maintainers" who are responsible for
|
||||
merging pull requests as well as a "lead maintainer" who is responsible for the
|
||||
release cycle, overall merging, moderation and appointment of maintainers.
|
||||
* [Help requests](https://github.com/dogecoin/dogecoin/labels/help%20wanted)
|
||||
* [Projects](https://github.com/dogecoin/dogecoin/projects)
|
||||
* [Dogecoindev on reddit](https://www.reddit.com/r/dogecoindev/)
|
||||
|
||||
## Branch Strategy
|
||||
|
||||
Contributor Workflow
|
||||
--------------------
|
||||
Dogecoin Core's default branch is intentionally a stable release, so that anyone
|
||||
downloading the code and compiling it gets a stable release. Active development
|
||||
occurs on branches named after the version they are targeting, for example the
|
||||
1.14.4 branch is named `1.14.4-dev`. When raising PRs, please raise against the
|
||||
relevant development branch and **not** against the `master` branch.
|
||||
|
||||
## Contributor Workflow
|
||||
|
||||
The codebase is maintained using the "contributor workflow" where everyone
|
||||
without exception contributes patch proposals using "pull requests". This
|
||||
|
@ -24,12 +24,15 @@ facilitates social contribution, easy testing and peer review.
|
|||
|
||||
To contribute a patch, the workflow is as follows:
|
||||
|
||||
- Fork repository
|
||||
- Create topic branch
|
||||
- Commit patches
|
||||
- Fork the repository in GitHub, and clone it your development machine.
|
||||
- Create a topic branch from the relevant development branch.
|
||||
- Commit changes to the branch.
|
||||
- Test your changes, which **must** include the unit and RPC tests passing.
|
||||
- Push topic branch to your copy of the repository.
|
||||
- Raise a Pull Request via GitHub.
|
||||
|
||||
The project coding conventions in the [developer notes](doc/developer-notes.md)
|
||||
must be adhered to.
|
||||
The coding conventions in the [developer notes](doc/developer-notes.md) must be
|
||||
adhered to.
|
||||
|
||||
In general [commits should be atomic](https://en.wikipedia.org/wiki/Atomic_commit#Atomic_commit_convention)
|
||||
and diffs should be easy to read. For this reason do not mix any formatting
|
||||
|
@ -42,60 +45,19 @@ in init.cpp") then a single title line is sufficient. Commit messages should be
|
|||
helpful to people reading your code in the future, so explain the reasoning for
|
||||
your decisions. Further explanation [here](http://chris.beams.io/posts/git-commit/).
|
||||
|
||||
If a particular commit references another issue, please add the reference, for
|
||||
example `refs #1234`, or `fixes #4321`. Using the `fixes` or `closes` keywords
|
||||
will cause the corresponding issue to be closed when the pull request is merged.
|
||||
|
||||
Please refer to the [Git manual](https://git-scm.com/doc) for more information
|
||||
about Git.
|
||||
|
||||
- Push changes to your fork
|
||||
- Create pull request
|
||||
|
||||
The title of the pull request should be prefixed by the component or area that
|
||||
the pull request affects. Valid areas as:
|
||||
|
||||
- *Consensus* for changes to consensus critical code
|
||||
- *Docs* for changes to the documentation
|
||||
- *Qt* for changes to bitcoin-qt
|
||||
- *Mining* for changes to the mining code
|
||||
- *Net* or *P2P* for changes to the peer-to-peer network code
|
||||
- *RPC/REST/ZMQ* for changes to the RPC, REST or ZMQ APIs
|
||||
- *Scripts and tools* for changes to the scripts and tools
|
||||
- *Tests* for changes to the bitcoin unit tests or QA tests
|
||||
- *Trivial* should **only** be used for PRs that do not change generated
|
||||
executable code. Notably, refactors (change of function arguments and code
|
||||
reorganization) and changes in behavior should **not** be marked as trivial.
|
||||
Examples of trivial PRs are changes to:
|
||||
- comments
|
||||
- whitespace
|
||||
- variable names
|
||||
- logging and messages
|
||||
- *Utils and libraries* for changes to the utils and libraries
|
||||
- *Wallet* for changes to the wallet code
|
||||
|
||||
Examples:
|
||||
|
||||
Consensus: Add new opcode for BIP-XXXX OP_CHECKAWESOMESIG
|
||||
Net: Automatically create hidden service, listen on Tor
|
||||
Qt: Add feed bump button
|
||||
Trivial: Fix typo in init.cpp
|
||||
|
||||
If a pull request is specifically not to be considered for merging (yet) please
|
||||
prefix the title with [WIP] or use [Tasks Lists](https://help.github.com/articles/basic-writing-and-formatting-syntax/#task-lists)
|
||||
in the body of the pull request to indicate tasks are pending.
|
||||
|
||||
The body of the pull request should contain enough description about what the
|
||||
patch does together with any justification/reasoning. You should include
|
||||
references to any discussions (for example other tickets or mailing list
|
||||
discussions).
|
||||
discussions). At this stage one should expect comments and review from other
|
||||
contributors. You can add more commits to your pull request by committing them
|
||||
locally and pushing to your fork until you have satisfied feedback.
|
||||
|
||||
At this stage one should expect comments and review from other contributors. You
|
||||
can add more commits to your pull request by committing them locally and pushing
|
||||
to your fork until you have satisfied all feedback.
|
||||
|
||||
Squashing Commits
|
||||
---------------------------
|
||||
## Squashing Commits
|
||||
|
||||
If your pull request is accepted for merging, you may be asked by a maintainer
|
||||
to squash and or [rebase](https://git-scm.com/docs/git-rebase) your commits
|
||||
before it will be merged. The basic squashing workflow is shown below.
|
||||
|
@ -117,122 +79,97 @@ Use the pull request that is already open (or was created earlier) to amend
|
|||
changes. This preserves the discussion and review that happened earlier for
|
||||
the respective change set.
|
||||
|
||||
The length of time required for peer review is unpredictable and will vary from
|
||||
pull request to pull request.
|
||||
The length of time required for peer review is unpredictable and will vary
|
||||
between pull requests.
|
||||
|
||||
|
||||
Pull Request Philosophy
|
||||
-----------------------
|
||||
## Pull Request Philosophy
|
||||
|
||||
Patchsets should always be focused. For example, a pull request could add a
|
||||
feature, fix a bug, or refactor code; but not a mixture. Please also avoid super
|
||||
pull requests which attempt to do too much, are overly large, or overly complex
|
||||
Pull Requests should always be focused. For example, a pull request could add a
|
||||
feature, fix a bug, or refactor code; but not a mixture. Please avoid submitting
|
||||
pull requests that attempt to do too much, are overly large, or overly complex
|
||||
as this makes review difficult.
|
||||
|
||||
|
||||
###Features
|
||||
### Features
|
||||
|
||||
When adding a new feature, thought must be given to the long term technical debt
|
||||
and maintenance that feature may require after inclusion. Before proposing a new
|
||||
feature that will require maintenance, please consider if you are willing to
|
||||
maintain it (including bug fixing). If features get orphaned with no maintainer
|
||||
in the future, they may be removed by the Repository Maintainer.
|
||||
in the future, they may be removed.
|
||||
|
||||
|
||||
###Refactoring
|
||||
### Refactoring
|
||||
|
||||
Refactoring is a necessary part of any software project's evolution. The
|
||||
following guidelines cover refactoring pull requests for the project.
|
||||
Dogecoin Core is a direct fork of Bitcoin Core and therefore benefits from as
|
||||
little refactoring as possible on code that is created upstream. If you see any
|
||||
structural issues with upstream code, please propose these fixes for
|
||||
[bitcoin/bitcoin](https://github.com/bitcoin/bitcoin) and future Dogecoin Core
|
||||
releases will automatically benefit from these.
|
||||
|
||||
There are three categories of refactoring, code only moves, code style fixes,
|
||||
code refactoring. In general refactoring pull requests should not mix these
|
||||
three kinds of activity in order to make refactoring pull requests easy to
|
||||
review and uncontroversial. In all cases, refactoring PRs must not change the
|
||||
behaviour of code within the pull request (bugs must be preserved as is).
|
||||
|
||||
Project maintainers aim for a quick turnaround on refactoring pull requests, so
|
||||
where possible keep them short, uncomplex and easy to verify.
|
||||
When refactoring Dogecoin-specific code, please keep refactoring requests short,
|
||||
low complexity and easy to verify.
|
||||
|
||||
|
||||
"Decision Making" Process
|
||||
-------------------------
|
||||
## "Decision Making" Process
|
||||
|
||||
The following applies to code changes to the Bitcoin Core project (and related
|
||||
projects such as libsecp256k1), and is not to be confused with overall Bitcoin
|
||||
Network Protocol consensus changes.
|
||||
The following applies to code changes to Dogecoin Core, and is not to be
|
||||
confused with overall Dogecoin Network Protocol consensus changes. All consensus
|
||||
changes **must** be ratified by miners; a proposal to implement protocol changes
|
||||
does not guarantee activation on the mainnet, not even when a binary gets
|
||||
released by maintainers.
|
||||
|
||||
Whether a pull request is merged into Bitcoin Core rests with the project merge
|
||||
maintainers and ultimately the project lead.
|
||||
Whether a pull request is merged into Dogecoin Core rests with the repository
|
||||
maintainers.
|
||||
|
||||
Maintainers will take into consideration if a patch is in line with the general
|
||||
principles of the project; meets the minimum standards for inclusion; and will
|
||||
judge the general consensus of contributors.
|
||||
principles of Dogecoin; meets the minimum standards for inclusion; and will
|
||||
take into account the consensus among frequent contributors.
|
||||
|
||||
In general, all pull requests must:
|
||||
|
||||
- have a clear use case, fix a demonstrable bug or serve the greater good of
|
||||
the project (for example refactoring for modularisation);
|
||||
- be well peer reviewed;
|
||||
- have unit tests and functional tests where appropriate;
|
||||
Dogecoin;
|
||||
- be peer reviewed;
|
||||
- have unit tests and functional tests;
|
||||
- follow code style guidelines;
|
||||
- not break the existing test suite;
|
||||
- where bugs are fixed, where possible, there should be unit tests
|
||||
demonstrating the bug and also proving the fix. This helps prevent regression.
|
||||
demonstrating the bug and also proving the fix. This helps prevent
|
||||
regressions.
|
||||
|
||||
Patches that change Bitcoin consensus rules are considerably more involved than
|
||||
normal because they affect the entire ecosystem and so must be preceded by
|
||||
extensive mailing list discussions and have a numbered BIP. While each case will
|
||||
be different, one should be prepared to expend more time and effort than for
|
||||
other kinds of patches because of increased peer review and consensus building
|
||||
requirements.
|
||||
The following patch types are expected to have significant discussion before
|
||||
approval and merge:
|
||||
|
||||
- Consensus rule changes (through softfork or otherwise)
|
||||
- Policy changes
|
||||
|
||||
While each case will be different, one should be prepared to expend more time
|
||||
and effort than for other kinds of patches because of increased peer review
|
||||
and consensus building requirements.
|
||||
|
||||
|
||||
###Peer Review
|
||||
### Peer Review
|
||||
|
||||
Anyone may participate in peer review which is expressed by comments in the pull
|
||||
request. Typically reviewers will review the code for obvious errors, as well as
|
||||
test out the patch set and opine on the technical merits of the patch. Project
|
||||
maintainers take into account the peer review when determining if there is
|
||||
consensus to merge a pull request (remember that discussions may have been
|
||||
spread out over GitHub, mailing list and IRC discussions). The following
|
||||
language is used within pull-request comments:
|
||||
request. Typically, reviewers will review the code for obvious errors, as well as
|
||||
test out the patch set and opine on the technical merits of the patch.
|
||||
Repository maintainers take into account the peer review when determining if
|
||||
there is consensus to merge a pull request.
|
||||
|
||||
- ACK means "I have tested the code and I agree it should be merged";
|
||||
- NACK means "I disagree this should be merged", and must be accompanied by
|
||||
sound technical justification (or in certain cases of copyright/patent/licensing
|
||||
issues, legal justification). NACKs without accompanying reasoning may be
|
||||
disregarded;
|
||||
- utACK means "I have not tested the code, but I have reviewed it and it looks
|
||||
OK, I agree it can be merged";
|
||||
- Concept ACK means "I agree in the general principle of this pull request";
|
||||
- Nit refers to trivial, often non-blocking issues.
|
||||
|
||||
Reviewers should include the commit hash which they reviewed in their comments.
|
||||
|
||||
Project maintainers reserve the right to weigh the opinions of peer reviewers
|
||||
Maintainers reserve the right to weigh the opinions of peer reviewers
|
||||
using common sense judgement and also may weight based on meritocracy: Those
|
||||
that have demonstrated a deeper commitment and understanding towards the project
|
||||
that have demonstrated a deeper commitment and understanding towards Dogecoin
|
||||
(over time) or have clear domain expertise may naturally have more weight, as
|
||||
one would expect in all walks of life.
|
||||
|
||||
Where a patch set affects consensus critical code, the bar will be set much
|
||||
higher in terms of discussion and peer review requirements, keeping in mind that
|
||||
mistakes could be very costly to the wider community. This includes refactoring
|
||||
of consensus critical code.
|
||||
Where a patch set proposes to change the Dogecoin consensus, it must have been
|
||||
discussed extensively, be accompanied by widely discussed documentation and have
|
||||
a generally widely perceived technical consensus of being a worthwhile change,
|
||||
based on the judgement of the maintainers.
|
||||
|
||||
Where a patch set proposes to change the Bitcoin consensus, it must have been
|
||||
discussed extensively on the mailing list and IRC, be accompanied by a widely
|
||||
discussed BIP and have a generally widely perceived technical consensus of being
|
||||
a worthwhile change based on the judgement of the maintainers.
|
||||
|
||||
|
||||
Release Policy
|
||||
--------------
|
||||
|
||||
The project leader is the release manager for each Bitcoin Core release.
|
||||
|
||||
Copyright
|
||||
---------
|
||||
## Copyright
|
||||
|
||||
By contributing to this repository, you agree to license your work under the
|
||||
MIT license unless specified otherwise in `contrib/debian/copyright` or at
|
||||
|
|
1
COPYING
1
COPYING
|
@ -1,6 +1,7 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2009-2017 The Bitcoin Core developers
|
||||
Copyright (c) 2013-2021 The Dogecoin Core developers
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
|
83
INSTALL.md
83
INSTALL.md
|
@ -1,5 +1,80 @@
|
|||
Building Bitcoin
|
||||
================
|
||||
# Installing Dogecoin Core
|
||||
|
||||
See doc/build-*.md for instructions on building the various
|
||||
elements of the Bitcoin Core reference implementation of Bitcoin.
|
||||
### Pre-compiled binaries
|
||||
|
||||
The easiest way to install the latest version of the Dogecoin Core software is
|
||||
by to download the latest precompiled binaries for your platform from the
|
||||
[release page](https://github.com/dogecoin/dogecoin/releases). Currently,
|
||||
binaries are released for the following platforms:
|
||||
|
||||
- Windows, 64-bit and 32-bit
|
||||
- Linux, 64-bit and 32-bit
|
||||
- MacOS, Intel 64-bit
|
||||
- ARM, 64-bit and 32-bit Linux
|
||||
|
||||
These binaries are created and verified by multiple independent people, to
|
||||
ensure honest and malware-free releases. See
|
||||
[the gitian building documentation](doc/gitian-building.md) for more information
|
||||
regarding that process.
|
||||
|
||||
### Compiling using packaged dependencies
|
||||
|
||||
It is possible to build your own copy of Dogecoin Core with the exact, tested,
|
||||
dependencies, as used for the binary releases, by using the
|
||||
[depends system](depends/description.md). Please refer to the
|
||||
[depends README](depends/README.md) for instructions to build Dogecoin using
|
||||
these dependencies.
|
||||
|
||||
### Compiling using system-provided libraries
|
||||
|
||||
The following are developer notes on how to build Dogecoin on your native
|
||||
platform, using the dependencies as provided by your system's package manager.
|
||||
They are not complete guides, but include notes on the necessary libraries,
|
||||
compile flags, etc.
|
||||
|
||||
- [Unix Build Notes](doc/build-unix.md)
|
||||
- [Windows Build Notes](doc/build-windows.md)
|
||||
- [macOS Build Notes](doc/Building-Dogecoin-1.14-for-Mac.md)
|
||||
|
||||
### Testing
|
||||
|
||||
Unit tests can be compiled and ran with `make check`. Further details on running
|
||||
and extending unit tests can be found in [/src/test/README.md](/src/test/README.md).
|
||||
|
||||
There are also [regression and integration tests](/qa) written in Python, that
|
||||
are run automatically on the build server. These tests can be run (if the
|
||||
[test dependencies](/qa) are installed) with: `qa/pull-tester/rpc-tests.py`
|
||||
|
||||
### Tips and tricks
|
||||
|
||||
**compiling for debugging**
|
||||
|
||||
Run `configure` with the `--enable-debug` option, then `make`. Or run `configure` with
|
||||
`CXXFLAGS="-g -ggdb -O0"` or whatever debug flags you need.
|
||||
|
||||
**debug.log**
|
||||
|
||||
If the code is behaving strangely, take a look in the debug.log file in the data directory;
|
||||
error and debugging messages are written there.
|
||||
|
||||
The `-debug=...` command-line option controls debugging; running with just `-debug` will turn
|
||||
on all categories (and give you a very large debug.log file).
|
||||
|
||||
The Qt code routes `qDebug()` output to debug.log under category "qt": run with `-debug=qt`
|
||||
to see it.
|
||||
|
||||
**testnet and regtest modes**
|
||||
|
||||
Run with the `-testnet` option to run with "play dogecoins" on the test network, if you
|
||||
are testing multi-machine code that needs to operate across the internet.
|
||||
|
||||
If you are testing something that can run on one machine, run with the `-regtest` option.
|
||||
In regression test mode, blocks can be created on-demand; see qa/rpc-tests/ for tests
|
||||
that run in `-regtest` mode.
|
||||
|
||||
**DEBUG_LOCKORDER**
|
||||
|
||||
Dogecoin Core is a multithreaded application, and deadlocks or other multithreading bugs
|
||||
can be very difficult to track down. Compiling with `-DDEBUG_LOCKORDER` (`configure
|
||||
CXXFLAGS="-DDEBUG_LOCKORDER -g"`) inserts run-time checks to keep track of which locks
|
||||
are held, and adds warnings to the debug.log file if inconsistencies are detected.
|
||||
|
|
10
Makefile.am
10
Makefile.am
|
@ -34,7 +34,7 @@ OSX_BACKGROUND_IMAGE_DPIS=36 72
|
|||
OSX_DSSTORE_GEN=$(top_srcdir)/contrib/macdeploy/custom_dsstore.py
|
||||
OSX_DEPLOY_SCRIPT=$(top_srcdir)/contrib/macdeploy/macdeployqtplus
|
||||
OSX_FANCY_PLIST=$(top_srcdir)/contrib/macdeploy/fancy.plist
|
||||
OSX_INSTALLER_ICONS=$(top_srcdir)/src/qt/res/icons/bitcoin.icns
|
||||
OSX_INSTALLER_ICONS=$(top_srcdir)/src/qt/res/icons/dogecoin.icns
|
||||
OSX_PLIST=$(top_builddir)/share/qt/Info.plist #not installed
|
||||
OSX_QT_TRANSLATIONS = da,de,es,hu,ru,uk,zh_CN,zh_TW
|
||||
|
||||
|
@ -48,7 +48,7 @@ DIST_CONTRIB = $(top_srcdir)/contrib/dogecoin-cli.bash-completion \
|
|||
BIN_CHECKS=$(top_srcdir)/contrib/devtools/symbol-check.py \
|
||||
$(top_srcdir)/contrib/devtools/security-check.py
|
||||
|
||||
WINDOWS_PACKAGING = $(top_srcdir)/share/pixmaps/bitcoin.ico \
|
||||
WINDOWS_PACKAGING = $(top_srcdir)/share/pixmaps/dogecoin.ico \
|
||||
$(top_srcdir)/share/pixmaps/nsis-header.bmp \
|
||||
$(top_srcdir)/share/pixmaps/nsis-wizard.bmp \
|
||||
$(top_srcdir)/doc/README_windows.txt
|
||||
|
@ -82,13 +82,13 @@ $(OSX_APP)/Contents/PkgInfo:
|
|||
|
||||
$(OSX_APP)/Contents/Resources/empty.lproj:
|
||||
$(MKDIR_P) $(@D)
|
||||
@touch $@
|
||||
@touch $@
|
||||
|
||||
$(OSX_APP)/Contents/Info.plist: $(OSX_PLIST)
|
||||
$(MKDIR_P) $(@D)
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
$(OSX_APP)/Contents/Resources/bitcoin.icns: $(OSX_INSTALLER_ICONS)
|
||||
$(OSX_APP)/Contents/Resources/dogecoin.icns: $(OSX_INSTALLER_ICONS)
|
||||
$(MKDIR_P) $(@D)
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
|
@ -101,7 +101,7 @@ $(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings:
|
|||
echo '{ CFBundleDisplayName = "$(PACKAGE_NAME)"; CFBundleName = "$(PACKAGE_NAME)"; }' > $@
|
||||
|
||||
OSX_APP_BUILT=$(OSX_APP)/Contents/PkgInfo $(OSX_APP)/Contents/Resources/empty.lproj \
|
||||
$(OSX_APP)/Contents/Resources/bitcoin.icns $(OSX_APP)/Contents/Info.plist \
|
||||
$(OSX_APP)/Contents/Resources/dogecoin.icns $(OSX_APP)/Contents/Info.plist \
|
||||
$(OSX_APP)/Contents/MacOS/Dogecoin-Qt $(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings
|
||||
|
||||
osx_volname:
|
||||
|
|
194
README.md
194
README.md
|
@ -1,139 +1,105 @@
|
|||
# Dogecoin Core [DOGE, Ð]
|
||||
==========================
|
||||
<h1 align="center">
|
||||
Dogecoin Core [DOGE, Ð]
|
||||
<br/><br/>
|
||||
<img src="https://static.tumblr.com/ppdj5y9/Ae9mxmxtp/300coin.png" alt="Dogecoin" width="300"/>
|
||||
</h1>
|
||||
|
||||
![Dogecoin](http://static.tumblr.com/ppdj5y9/Ae9mxmxtp/300coin.png)
|
||||
<div align="center">
|
||||
|
||||
[![Build Status](https://travis-ci.org/dogecoin/dogecoin.svg?branch=1.14-dev)](https://travis-ci.org/dogecoin/dogecoin) [![tip for next commit](https://tip4commit.com/projects/702.svg)](https://tip4commit.com/github/dogecoin/dogecoin)
|
||||
[![DogecoinBadge](https://img.shields.io/badge/Doge-Coin-yellow.svg)](https://dogecoin.com)
|
||||
[![MuchWow](https://img.shields.io/badge/Much-Wow-yellow.svg)](https://dogecoin.com)
|
||||
|
||||
## What is Dogecoin? – Such coin
|
||||
Dogecoin is a cryptocurrency like Bitcoin, although it does not use SHA256 as its proof of work (POW). Taking development cues from Tenebrix and Litecoin, Dogecoin currently employs a simplified variant of scrypt.
|
||||
</div>
|
||||
|
||||
http://dogecoin.com/
|
||||
Select language: EN | [CN](./README_zh_CN.md)
|
||||
|
||||
## License – Much license
|
||||
Dogecoin Core is released under the terms of the MIT license. See [COPYING](COPYING) for more
|
||||
information or see https://opensource.org/licenses/MIT.
|
||||
Dogecoin is a community-driven cryptocurrency that was inspired by a Shiba Inu meme. The Dogecoin Core software allows anyone to operate a node in the Dogecoin blockchain networks and uses the Scrypt hashing method for Proof of Work. It is adapted from Bitcoin Core and other cryptocurrencies.
|
||||
|
||||
## Development and contributions – omg developers
|
||||
Development is ongoing, and the development team, as well as other volunteers, can freely work in their own trees and submit pull requests when features or bug fixes are ready.
|
||||
For information about the default fees used on the Dogecoin network, please
|
||||
refer to the [fee recommendation](doc/fee-recommendation.md).
|
||||
|
||||
#### Version strategy
|
||||
**Website:** [dogecoin.com](https://dogecoin.com)
|
||||
|
||||
## Usage 💻
|
||||
|
||||
To start your journey with Dogecoin Core, see the [installation guide](INSTALL.md) and the [getting started](doc/getting-started.md) tutorial.
|
||||
|
||||
The JSON-RPC API provided by Dogecoin Core is self-documenting and can be browsed with `dogecoin-cli help`, while detailed information for each command can be viewed with `dogecoin-cli help <command>`. Alternatively, see the [Bitcoin Core documentation](https://developer.bitcoin.org/reference/rpc/) - which implement a similar protocol - to get a browsable version.
|
||||
|
||||
### Such ports
|
||||
|
||||
Dogecoin Core by default uses port `22556` for peer-to-peer communication that
|
||||
is needed to synchronize the "mainnet" blockchain and stay informed of new
|
||||
transactions and blocks. Additionally, a JSONRPC port can be opened, which
|
||||
defaults to port `22555` for mainnet nodes. It is strongly recommended to not
|
||||
expose RPC ports to the public internet.
|
||||
|
||||
| Function | mainnet | testnet | regtest |
|
||||
| :------- | ------: | ------: | ------: |
|
||||
| P2P | 22556 | 44556 | 18444 |
|
||||
| RPC | 22555 | 44555 | 18332 |
|
||||
|
||||
## Ongoing development - Moon plan 🌒
|
||||
|
||||
Dogecoin Core is an open source and community driven software. The development
|
||||
process is open and publicly visible; anyone can see, discuss and work on the
|
||||
software.
|
||||
|
||||
Main development resources:
|
||||
|
||||
* [Github Projects](https://github.com/dogecoin/dogecoin/projects) is used to
|
||||
follow planned and in-progress work for upcoming releases.
|
||||
* [Github Discussion](https://github.com/dogecoin/dogecoin/discussions) is used
|
||||
to discuss features, planned and unplanned, related to both the development of
|
||||
the Dogecoin Core software, the underlying protocols and the DOGE asset.
|
||||
* [Dogecoindev subreddit](https://www.reddit.com/r/dogecoindev/)
|
||||
|
||||
### Version strategy
|
||||
Version numbers are following ```major.minor.patch``` semantics.
|
||||
|
||||
#### Branches
|
||||
### Branches
|
||||
There are 3 types of branches in this repository:
|
||||
|
||||
- **master:** Stable, contains the latest version of the latest *major.minor* release.
|
||||
- **maintenance:** Stable, contains the latest version of previous releases, which are still under active maintenance. Format: ```<version>-maint```
|
||||
- **development:** Unstable, contains new code for planned releases. Format: ```<version>-dev```
|
||||
|
||||
*Master and maintenance branches are exclusively mutable by release. Planned releases will always have a development branch and pull requests should be submitted against those. Maintenance branches are there for* ***bug fixes only,*** *please submit new features against the development branch with the highest version.*
|
||||
*Master and maintenance branches are exclusively mutable by release. Planned*
|
||||
*releases will always have a development branch and pull requests should be*
|
||||
*submitted against those. Maintenance branches are there for **bug fixes only,***
|
||||
*please submit new features against the development branch with the highest version.*
|
||||
|
||||
#### Contributions
|
||||
## Contributing 🤝
|
||||
|
||||
Developers are strongly encouraged to write [unit tests](src/test/README.md) for new code, and to
|
||||
submit new unit tests for old code. Unit tests can be compiled and run
|
||||
(assuming they weren't disabled in configure) with: `make check`. Further details on running
|
||||
and extending unit tests can be found in [/src/test/README.md](/src/test/README.md).
|
||||
If you find a bug or experience issues with this software, please report it
|
||||
using the [issue system](https://github.com/dogecoin/dogecoin/issues/new?assignees=&labels=bug&template=bug_report.md&title=%5Bbug%5D+).
|
||||
|
||||
There are also [regression and integration tests](/qa) of the RPC interface, written
|
||||
in Python, that are run automatically on the build server.
|
||||
These tests can be run (if the [test dependencies](/qa) are installed) with: `qa/pull-tester/rpc-tests.py`
|
||||
Please see [the contribution guide](CONTRIBUTING.md) to see how you can
|
||||
participate in the development of Dogecoin Core. There are often
|
||||
[topics seeking help](https://github.com/dogecoin/dogecoin/labels/help%20wanted)
|
||||
where your contributions will have high impact and get very appreciation. wow.
|
||||
|
||||
Changes should be tested by somebody other than the developer who wrote the
|
||||
code. This is especially important for large or high-risk changes. It is useful
|
||||
to add a test plan to the pull request description if testing the changes is
|
||||
not straightforward.
|
||||
## Communities 🚀🍾
|
||||
|
||||
## Very Much Frequently Asked Questions
|
||||
You can join the communities on different social media.
|
||||
To see what's going on, meet people & discuss, find the lastest meme, learn
|
||||
about Dogecoin, give or ask for help, to share your project.
|
||||
|
||||
### How much doge can exist? – So many puppies!
|
||||
Early 2015 (approximately a year and a half after release) there will be approximately 100,000,000,000 coins.
|
||||
Each subsequent block will grant 10,000 coins to encourage miners to continue to secure the network and make up for lost wallets on hard drives/phones/lost encryption passwords/etc.
|
||||
Here are some places to visit:
|
||||
|
||||
### How to get doge? – To the moon!
|
||||
Dogecoin uses a simplified variant of the scrypt key derivation function as its proof of work with a target time of one minute per block and difficulty readjustment after every block. The block rewards are fixed and halve every 100,000 blocks. Starting with the 600,000th block, a permanent reward of 10,000 Dogecoin per block will be paid.
|
||||
* [Dogecoin subreddit](https://www.reddit.com/r/dogecoin/)
|
||||
* [Dogeducation subreddit](https://www.reddit.com/r/dogeducation/)
|
||||
* [Discord](https://discord.gg/dogecoin)
|
||||
* [Dogecoin Twitter](https://twitter.com/dogecoin)
|
||||
|
||||
Originally, a different payout scheme was envisioned with block rewards being determined by taking the maximum reward as per the block schedule and applying the result of a Mersenne Twister pseudo-random number generator to arrive at a number between 0 and the maximum reward. This was changed, starting with block 145,000, to prevent large pools from gaming the system and mining only high reward blocks. At the same time, the difficulty retargeting was also changed from four hours to once per block (every minute), implementing an algorithm courtesy of the DigiByte Coin development team, to lessen the impact of sudden increases and decreases of network hashing rate.
|
||||
## Very Much Frequently Asked Questions ❓
|
||||
|
||||
The current block reward schedule:
|
||||
Do you have a question regarding Dogecoin? An answer is perhaps already in the
|
||||
[FAQ](doc/FAQ.md) or the
|
||||
[Q&A section](https://github.com/dogecoin/dogecoin/discussions/categories/q-a)
|
||||
of the discussion board!
|
||||
|
||||
1–99,999: 0–1,000,000 Dogecoin
|
||||
|
||||
100,000–144,999: 0–500,000 Dogecoin
|
||||
|
||||
145,000–199,999: 250,000 Dogecoin
|
||||
|
||||
200,000–299,999: 125,000 Dogecoin
|
||||
|
||||
300,000–399,999: 62,500 Dogecoin
|
||||
|
||||
400,000–499,999: 31,250 Dogecoin
|
||||
|
||||
500,000–599,999: 15,625 Dogecoin
|
||||
|
||||
600,000+: 10,000 Dogecoin
|
||||
|
||||
The original block reward schedule, with one-minute block targets and four-hour difficulty readjustment:
|
||||
|
||||
1–99,999: 0–1,000,000 Dogecoin
|
||||
|
||||
100,000–199,999: 0–500,000 Dogecoin
|
||||
|
||||
200,000–299,999: 0–250,000 Dogecoin
|
||||
|
||||
300,000–399,999: 0–125,000 Dogecoin
|
||||
|
||||
400,000–499,999: 0–62,500 Dogecoin
|
||||
|
||||
500,000–599,999: 0–31,250 Dogecoin
|
||||
|
||||
600,000+: 10,000 Dogecoin
|
||||
|
||||
### Wow plz make dogecoind/dogecoin-cli/dogecoin-qt
|
||||
|
||||
The following are developer notes on how to build Dogecoin on your native platform. They are not complete guides, but include notes on the necessary libraries, compile flags, etc.
|
||||
|
||||
- [OSX Build Notes](doc/build-osx.md)
|
||||
- [Unix Build Notes](doc/build-unix.md)
|
||||
- [Windows Build Notes](doc/build-msw.md)
|
||||
|
||||
### Such ports
|
||||
RPC 22555
|
||||
P2P 22556
|
||||
|
||||
![](http://dogesay.com/wow//////such/coin)
|
||||
|
||||
## Development tips and tricks
|
||||
|
||||
**compiling for debugging**
|
||||
|
||||
Run configure with the --enable-debug option, then make. Or run configure with
|
||||
CXXFLAGS="-g -ggdb -O0" or whatever debug flags you need.
|
||||
|
||||
**debug.log**
|
||||
|
||||
If the code is behaving strangely, take a look in the debug.log file in the data directory;
|
||||
error and debugging messages are written there.
|
||||
|
||||
The -debug=... command-line option controls debugging; running with just -debug will turn
|
||||
on all categories (and give you a very large debug.log file).
|
||||
|
||||
The Qt code routes qDebug() output to debug.log under category "qt": run with -debug=qt
|
||||
to see it.
|
||||
|
||||
**testnet and regtest modes**
|
||||
|
||||
Run with the -testnet option to run with "play dogecoins" on the test network, if you
|
||||
are testing multi-machine code that needs to operate across the internet.
|
||||
|
||||
If you are testing something that can run on one machine, run with the -regtest option.
|
||||
In regression test mode, blocks can be created on-demand; see qa/rpc-tests/ for tests
|
||||
that run in -regtest mode.
|
||||
|
||||
**DEBUG_LOCKORDER**
|
||||
|
||||
Dogecoin Core is a multithreaded application, and deadlocks or other multithreading bugs
|
||||
can be very difficult to track down. Compiling with -DDEBUG_LOCKORDER (configure
|
||||
CXXFLAGS="-DDEBUG_LOCKORDER -g") inserts run-time checks to keep track of which locks
|
||||
are held, and adds warnings to the debug.log file if inconsistencies are detected.
|
||||
## License - Much license ⚖️
|
||||
Dogecoin Core is released under the terms of the MIT license. See
|
||||
[COPYING](COPYING) for more information or see
|
||||
[opensource.org](https://opensource.org/licenses/MIT)
|
||||
|
|
125
README_zh_CN.md
Normal file
125
README_zh_CN.md
Normal file
|
@ -0,0 +1,125 @@
|
|||
# 狗狗币核心 (Dogecoin Core) [DOGE, Ð]
|
||||
|
||||
![Dogecoin](https://static.tumblr.com/ppdj5y9/Ae9mxmxtp/300coin.png)
|
||||
|
||||
[![Build Status](https://travis-ci.com/dogecoin/dogecoin.svg?branch=master)](https://travis-ci.com/dogecoin/dogecoin)
|
||||
|
||||
选择文档语言: [英文](../README.md) | 简体中文 | [其他语言...](./README_zh_CN.md)
|
||||
|
||||
尽管狗狗币不使用SHA256作为它的工作量证明(POW),狗狗币也是一款类似Bitcoin的加密货币。受到Tenebrix和Litecoin的影响,狗狗币目前采用一种更简洁的加密方式。
|
||||
- **网址:** [dogecoin.com.](https://dogecoin.com)
|
||||
|
||||
## 证书 – 炫酷的证书 ⚖️
|
||||
狗狗币在MIT liscence的条款下发行。详情请参见
|
||||
[COPYING](COPYING) 或者
|
||||
[opensource.org](https://opensource.org/licenses/MIT)。
|
||||
|
||||
## 开发和贡献 – omg 开发者
|
||||
目前的研发还在进行中,开发团队以及其他志愿者可以随意通过自己的代码库分支发布pull request。
|
||||
|
||||
#### 版本说明
|
||||
版本号码遵循以下语法:```major.minor.patch```。
|
||||
|
||||
#### 代码库分支(branch)
|
||||
本代码库有3个branch:
|
||||
|
||||
- **master(主代码库):** 稳定。包含最新版本的release,以*major.minor*形式呈现。
|
||||
- **maintenance(维护代码库):** 稳定。包含正在维护中的上一个release的最新版本。格式: ```<version>-maint```
|
||||
- **development(正在开发代码库):** 不稳定。包含下一个release的最新代码。格式: ```<version>-dev```
|
||||
|
||||
*Master 和 maintenance 互不干扰。最新release永远包含一个development分支。新的 pull request 应该发布于此。Maintenance 分支**只能用于调试程序**。请将新开发的功能发布在 development 分支的最高版本。*
|
||||
|
||||
#### 贡献 ✍️
|
||||
|
||||
鼓励开发者为新代码来创建自己的[单元测试](src/test/README.md),或者为旧代码发布新的单元测试。用如下指令编译并运行单元测试(仅限于单元测试在配置中没有被禁用):`make check`。更多关于运行和开发单元测试的信息请查看:[/src/test/README.md](/src/test/README.md).
|
||||
|
||||
RPC界面上还有由Python编写的[回归和整合测试(regression and integration tests)](/qa) ,可以在build服务器上自动运行。这些测试还可以通过以下指令来运行:`qa/pull-tester/rpc-tests.py`(前提是已经安装了[测试依赖文件(test dependencies)](/qa))。
|
||||
|
||||
代码的改变还应该由除开发者之外的其他人员进行测试。这一点对于大段改动和高危变化尤其重要。建议在pull request的描述中加入测试文档(test plan),如果测试方式并不很直接。
|
||||
|
||||
## 灰常常见的问题 ❓
|
||||
|
||||
### 到底一共可以有多少狗狗币? – 狗狗多多! 🐕
|
||||
截至2015年初(大概发行一年半的时间)会有100,000,000,000狗狗币。
|
||||
之后的每个区块(block)将会带来10,000狗狗币来激励矿工们持续输出,增加挖矿的安全性并且对因丢失的钱包、硬盘、手机、密码等而丢失的狗狗币做出相应弥补。
|
||||
|
||||
### 挖矿须知 ⛏
|
||||
|
||||
狗狗币采用一种简化版的密钥派生函数作为它的工作量证明。目标时间为每分钟产出一个区块,每产出一个区块后都会进行难度值调整。区块奖励是固定的,且每产出100,000个区块就会减半。从第600,000个区块开始,每产出一个区块的奖励会固定在10,000个狗狗币。
|
||||
|
||||
起初,我们设想了一种不同的支付方式,由Mersenne Twister伪随机数生成器在0到区块计划相应的最大区块奖励中生成一个随机数作为区块奖励。
|
||||
|
||||
然而在第145,000区块上,为了防止大矿池钻空子只挖高奖励的区块,这种方案就不适用了。与此同时,难度值调整也从每4小时变为每个区块产生(每分钟)更改一次,使用的是DigiByte Coin开发团队的一个算法,以减少狗狗币网络中哈希率突然增大或减少带来的影响。
|
||||
|
||||
**目前的区块奖励机制:**
|
||||
|
||||
1–99,999: 0–1,000,000 Dogecoin
|
||||
|
||||
100,000–144,999: 0–500,000 Dogecoin
|
||||
|
||||
145,000–199,999: 250,000 Dogecoin
|
||||
|
||||
200,000–299,999: 125,000 Dogecoin
|
||||
|
||||
300,000–399,999: 62,500 Dogecoin
|
||||
|
||||
400,000–499,999: 31,250 Dogecoin
|
||||
|
||||
500,000–599,999: 15,625 Dogecoin
|
||||
|
||||
600,000+: 10,000 Dogecoin
|
||||
|
||||
**原先的区块奖励机制(一分钟区块和四小时难度调整):**
|
||||
|
||||
1–99,999: 0–1,000,000 Dogecoin
|
||||
|
||||
100,000–199,999: 0–500,000 Dogecoin
|
||||
|
||||
200,000–299,999: 0–250,000 Dogecoin
|
||||
|
||||
300,000–399,999: 0–125,000 Dogecoin
|
||||
|
||||
400,000–499,999: 0–62,500 Dogecoin
|
||||
|
||||
500,000–599,999: 0–31,250 Dogecoin
|
||||
|
||||
600,000+: 10,000 Dogecoin
|
||||
|
||||
### 请编译我吧 / Wow plz make dogecoind/dogecoin-cli/dogecoin-qt
|
||||
|
||||
以下是开发者的笔记,教你如何在你自己的平台上搭建狗狗币。这些不是什么权威指南,但包含了必要的libary, 编译flag 等等。
|
||||
|
||||
- [OSX Build Notes](doc/build-osx.md)
|
||||
- [Unix Build Notes](doc/build-unix.md)
|
||||
- [Windows Build Notes](doc/build-windows.md)
|
||||
|
||||
### 端口们
|
||||
|
||||
- RPC 22555
|
||||
- P2P 22556
|
||||
|
||||
## 开发贴士与技巧
|
||||
|
||||
**调试编译**
|
||||
|
||||
运行 `configure`, 应用 `--enable-debug` 选项, 然后 `make`. 或者运行 `configure` 应用
|
||||
`CXXFLAGS="-g -ggdb -O0"` 或者其他你需要的flag。
|
||||
|
||||
**debug.log**
|
||||
|
||||
如果代码表现得很诡异,看一眼data路径下的debug.log;错误信息和调试消息都在这里。
|
||||
|
||||
`-debug=...`这个选项代表调试模式;带着这个flag去运行会打开所有的类别(并输出一个非常大的debug.log文件)。
|
||||
|
||||
Qt代码把 `qDebug()` 放到qt类别下的debug.log文件里;使用方式`-debug=qt`。
|
||||
|
||||
**测试链(testnet)和私有网络(regtest)模式**
|
||||
|
||||
如果你在通过因特网测试跨机代码,在测试链上运行`-testnet`来运行“开始使用狗狗币”。
|
||||
|
||||
如果你在测试单机代码,用`-regtest`运行。
|
||||
在回归测试模式下,区块可以随时被按需制造出来;参见qa/rpc-tests/。
|
||||
|
||||
**DEBUG_LOCKORDER**
|
||||
|
||||
狗狗币核心是一个多线程应用,碰到死锁和其他多线程问题都会很难找到原因。如果在代码中发现了不一致的地方,使用-DDEBUG_LOCKORDER编译 (configure CXXFLAGS="-DDEBUG_LOCKORDER -g")会在运行时插入检查语句来检测哪些进程被锁定,并把警告加入debug.log文件中。
|
|
@ -1,11 +1,11 @@
|
|||
AC_DEFUN([BITCOIN_FIND_BDB51],[
|
||||
AC_DEFUN([BITCOIN_FIND_BDB53],[
|
||||
AC_MSG_CHECKING([for Berkeley DB C++ headers])
|
||||
BDB_CPPFLAGS=
|
||||
BDB_LIBS=
|
||||
bdbpath=X
|
||||
bdb51path=X
|
||||
bdb53path=X
|
||||
bdbdirlist=
|
||||
for _vn in 5.1 51 5 ''; do
|
||||
for _vn in 5.3 53 5 ''; do
|
||||
for _pfx in b lib ''; do
|
||||
bdbdirlist="$bdbdirlist ${_pfx}db${_vn}"
|
||||
done
|
||||
|
@ -15,8 +15,8 @@ AC_DEFUN([BITCOIN_FIND_BDB51],[
|
|||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
#include <${searchpath}db_cxx.h>
|
||||
]],[[
|
||||
#if !((DB_VERSION_MAJOR == 5 && DB_VERSION_MINOR >= 1) || DB_VERSION_MAJOR > 5)
|
||||
#error "failed to find bdb 5.1+"
|
||||
#if !((DB_VERSION_MAJOR == 5 && DB_VERSION_MINOR >= 3) || DB_VERSION_MAJOR > 5)
|
||||
#error "failed to find bdb 5.3+"
|
||||
#endif
|
||||
]])],[
|
||||
if test "x$bdbpath" = "xX"; then
|
||||
|
@ -28,32 +28,32 @@ AC_DEFUN([BITCOIN_FIND_BDB51],[
|
|||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
#include <${searchpath}db_cxx.h>
|
||||
]],[[
|
||||
#if !(DB_VERSION_MAJOR == 5 && DB_VERSION_MINOR == 1)
|
||||
#error "failed to find bdb 5.1"
|
||||
#if !(DB_VERSION_MAJOR == 5 && DB_VERSION_MINOR == 3)
|
||||
#error "failed to find bdb 5.3"
|
||||
#endif
|
||||
]])],[
|
||||
bdb51path="${searchpath}"
|
||||
bdb53path="${searchpath}"
|
||||
break
|
||||
],[])
|
||||
done
|
||||
if test "x$bdbpath" = "xX"; then
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_ERROR([libdb_cxx headers missing, Dogecoin Core requires this library for wallet functionality (--disable-wallet to disable wallet functionality)])
|
||||
elif test "x$bdb51path" = "xX"; then
|
||||
elif test "x$bdb53path" = "xX"; then
|
||||
BITCOIN_SUBDIR_TO_INCLUDE(BDB_CPPFLAGS,[${bdbpath}],db_cxx)
|
||||
AC_ARG_WITH([incompatible-bdb],[AS_HELP_STRING([--with-incompatible-bdb], [allow using a bdb version other than 4.8])],[
|
||||
AC_MSG_WARN([Found Berkeley DB other than 5.1; wallets opened by this build will not be portable!])
|
||||
AC_MSG_WARN([Found Berkeley DB other than 5.3; wallets opened by this build will not be portable!])
|
||||
],[
|
||||
AC_MSG_ERROR([Found Berkeley DB other than 5.1, required for portable wallets (--with-incompatible-bdb to ignore or --disable-wallet to disable wallet functionality)])
|
||||
AC_MSG_ERROR([Found Berkeley DB other than 5.3, required for portable wallets (--with-incompatible-bdb to ignore or --disable-wallet to disable wallet functionality)])
|
||||
])
|
||||
else
|
||||
BITCOIN_SUBDIR_TO_INCLUDE(BDB_CPPFLAGS,[${bdb51path}],db_cxx)
|
||||
bdbpath="${bdb51path}"
|
||||
BITCOIN_SUBDIR_TO_INCLUDE(BDB_CPPFLAGS,[${bdb53path}],db_cxx)
|
||||
bdbpath="${bdb53path}"
|
||||
fi
|
||||
AC_SUBST(BDB_CPPFLAGS)
|
||||
|
||||
# TODO: Ideally this could find the library version and make sure it matches the headers being used
|
||||
for searchlib in db_cxx-5.1 db_cxx; do
|
||||
for searchlib in db_cxx-5.3 db_cxx; do
|
||||
AC_CHECK_LIB([$searchlib],[main],[
|
||||
BDB_LIBS="-l${searchlib}"
|
||||
break
|
27
configure.ac
27
configure.ac
|
@ -2,10 +2,10 @@ dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
|
|||
AC_PREREQ([2.60])
|
||||
define(_CLIENT_VERSION_MAJOR, 1)
|
||||
define(_CLIENT_VERSION_MINOR, 14)
|
||||
define(_CLIENT_VERSION_REVISION, 2)
|
||||
define(_CLIENT_VERSION_REVISION, 5)
|
||||
define(_CLIENT_VERSION_BUILD, 0)
|
||||
define(_CLIENT_VERSION_IS_RELEASE, true)
|
||||
define(_COPYRIGHT_YEAR, 2019)
|
||||
define(_COPYRIGHT_YEAR, 2021)
|
||||
define(_COPYRIGHT_HOLDERS,[The %s developers])
|
||||
define(_COPYRIGHT_HOLDERS_SUBSTITUTION,[[Bitcoin Core and Dogecoin Core]])
|
||||
AC_INIT([Dogecoin Core],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION],[https://github.com/dogecoin/dogecoin/issues],[dogecoin],[https://dogecoin.com/])
|
||||
|
@ -177,6 +177,12 @@ AC_ARG_ENABLE([zmq],
|
|||
[use_zmq=$enableval],
|
||||
[use_zmq=yes])
|
||||
|
||||
AC_ARG_WITH([intel-avx2],
|
||||
[AS_HELP_STRING([--with-intel-avx2],
|
||||
[Build with intel avx2 (default is no)])],
|
||||
[intel_avx2=$withval],
|
||||
[intel_avx2=no])
|
||||
|
||||
AC_ARG_WITH([protoc-bindir],[AS_HELP_STRING([--with-protoc-bindir=BIN_DIR],[specify protoc bin path])], [protoc_bin_path=$withval], [])
|
||||
|
||||
AC_ARG_ENABLE(man,
|
||||
|
@ -383,7 +389,7 @@ case $host in
|
|||
fi
|
||||
|
||||
AX_CHECK_LINK_FLAG([[-Wl,-headerpad_max_install_names]], [LDFLAGS="$LDFLAGS -Wl,-headerpad_max_install_names"])
|
||||
CPPFLAGS="$CPPFLAGS -DMAC_OSX"
|
||||
CPPFLAGS="$CPPFLAGS -DMAC_OSX -DOBJC_OLD_DISPATCH_PROTOTYPES=0"
|
||||
OBJCXXFLAGS="$CXXFLAGS"
|
||||
;;
|
||||
*linux*)
|
||||
|
@ -487,6 +493,8 @@ if test x$use_glibc_compat != xno; then
|
|||
[ fdelt_type="long int"])
|
||||
AC_MSG_RESULT($fdelt_type)
|
||||
AC_DEFINE_UNQUOTED(FDELT_TYPE, $fdelt_type,[parameter and return value type for __fdelt_chk])
|
||||
AX_CHECK_LINK_FLAG([[-Wl,--wrap=__divmoddi4]], [COMPAT_LDFLAGS="$COMPAT_LDFLAGS -Wl,--wrap=__divmoddi4"])
|
||||
AX_CHECK_LINK_FLAG([[-Wl,--wrap=log2f]], [COMPAT_LDFLAGS="$COMPAT_LDFLAGS -Wl,--wrap=log2f"])
|
||||
else
|
||||
AC_SEARCH_LIBS([clock_gettime],[rt])
|
||||
fi
|
||||
|
@ -597,7 +605,7 @@ AC_SUBST(LIBMEMENV)
|
|||
|
||||
if test x$enable_wallet != xno; then
|
||||
dnl Check for libdb_cxx only if wallet enabled
|
||||
BITCOIN_FIND_BDB51
|
||||
BITCOIN_FIND_BDB53
|
||||
fi
|
||||
|
||||
dnl Check for libminiupnpc (optional)
|
||||
|
@ -785,6 +793,16 @@ fi
|
|||
|
||||
fi
|
||||
|
||||
if test x$intel_avx2 = xyes; then
|
||||
case $host in
|
||||
x86_64-*-linux*)
|
||||
AC_CHECK_LIB([IPSec_MB],[sha1_one_block_avx2],LIBS=-lIPSec_MB, AC_MSG_ERROR(IPSec_MB missing))
|
||||
AC_CHECK_LIB([IPSec_MB],[sha256_one_block_avx2],LIBS=-lIPSec_MB, AC_MSG_ERROR(IPSec_MB missing))
|
||||
AC_CHECK_LIB([IPSec_MB],[sha512_one_block_avx2],LIBS=-lIPSec_MB, AC_MSG_ERROR(IPSec_MB missing))
|
||||
AC_DEFINE(USE_AVX2, 1, [Define this symbol if intel axv2 works])
|
||||
esac
|
||||
fi
|
||||
|
||||
if test x$use_pkgconfig = xyes; then
|
||||
: dnl
|
||||
m4_ifdef(
|
||||
|
@ -1090,6 +1108,7 @@ AC_SUBST(BITCOIN_CLI_NAME)
|
|||
AC_SUBST(BITCOIN_TX_NAME)
|
||||
|
||||
AC_SUBST(RELDFLAGS)
|
||||
AC_SUBST(COMPAT_LDFLAGS)
|
||||
AC_SUBST(ERROR_CXXFLAGS)
|
||||
AC_SUBST(HARDENED_CXXFLAGS)
|
||||
AC_SUBST(HARDENED_CPPFLAGS)
|
||||
|
|
|
@ -32,7 +32,7 @@ Notes on getting Gitian builds up and running using KVM.
|
|||
PGP keys used for signing Dogecoin Core [Gitian release](/doc/release-process.md) results.
|
||||
|
||||
### [MacDeploy](/contrib/macdeploy) ###
|
||||
Scripts and notes for Mac builds.
|
||||
Scripts and notes for Mac builds.
|
||||
|
||||
### [RPM](/contrib/rpm) ###
|
||||
RPM spec file for building dogecoin-core on RPM based distributions
|
||||
|
@ -40,7 +40,10 @@ RPM spec file for building dogecoin-core on RPM based distributions
|
|||
### [Gitian-build](/contrib/gitian-build.sh) ###
|
||||
Script for running full Gitian builds.
|
||||
|
||||
Test and Verify Tools
|
||||
### [Snap](/contrib/snap) ###
|
||||
snapcraft.yaml file for building and distributing dogecoin-core with Snapcraft.
|
||||
|
||||
Test and Verify Tools
|
||||
---------------------
|
||||
|
||||
### [TestGen](/contrib/testgen) ###
|
||||
|
|
|
@ -5,6 +5,7 @@ FORMS += \
|
|||
../src/qt/forms/coincontroldialog.ui \
|
||||
../src/qt/forms/editaddressdialog.ui \
|
||||
../src/qt/forms/helpmessagedialog.ui \
|
||||
../src/qt/forms/importkeysdialog.ui \
|
||||
../src/qt/forms/intro.ui \
|
||||
../src/qt/forms/openuridialog.ui \
|
||||
../src/qt/forms/optionsdialog.ui \
|
||||
|
|
|
@ -15,7 +15,7 @@ To install:
|
|||
|
||||
If you build yourself, you will either need to modify the paths in
|
||||
the .desktop file or copy or symlink your dogecoin-qt binary to `/usr/bin`
|
||||
and the `../../share/pixmaps/bitcoin128.png` to `/usr/share/pixmaps`
|
||||
and the `../../share/pixmaps/dogecoin128.png` to `/usr/share/pixmaps`
|
||||
|
||||
dogecoin-qt.protocol (KDE)
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[Desktop Entry]
|
||||
Encoding=UTF-8
|
||||
Name=Dogecoin Core
|
||||
Comment=Connect to the Dogecoin P2P Network
|
||||
Comment[de]=Verbinde mit dem Dogecoin peer-to-peer Netzwerk
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
usr/local/bin/dogecoin-qt usr/bin
|
||||
share/pixmaps/bitcoin32.xpm usr/share/pixmaps
|
||||
share/pixmaps/bitcoin16.xpm usr/share/pixmaps
|
||||
share/pixmaps/bitcoin128.png usr/share/pixmaps
|
||||
share/pixmaps/dogecoin32.xpm usr/share/pixmaps
|
||||
share/pixmaps/dogecoin16.xpm usr/share/pixmaps
|
||||
share/pixmaps/dogecoin128.png usr/share/pixmaps
|
||||
debian/dogecoin-qt.desktop usr/share/applications
|
||||
debian/dogecoin-qt.protocol usr/share/kde4/services/
|
||||
debian/dogecoin-qt.protocol usr/share/kde4/services/
|
||||
|
|
47
contrib/devtools/commit-script-check.sh
Executable file
47
contrib/devtools/commit-script-check.sh
Executable file
|
@ -0,0 +1,47 @@
|
|||
#!/bin/sh
|
||||
# Copyright (c) 2017-2020 The Bitcoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
# This simple script checks for commits beginning with: scripted-diff:
|
||||
# If found, looks for a script between the lines -BEGIN VERIFY SCRIPT- and
|
||||
# -END VERIFY SCRIPT-. If no ending is found, it reads until the end of the
|
||||
# commit message.
|
||||
|
||||
# The resulting script should exactly transform the previous commit into the current
|
||||
# one. Any remaining diff signals an error.
|
||||
|
||||
export LC_ALL=C
|
||||
if test -z $1; then
|
||||
echo "Usage: $0 <commit>..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
RET=0
|
||||
PREV_BRANCH=$(git name-rev --name-only HEAD)
|
||||
PREV_HEAD=$(git rev-parse HEAD)
|
||||
for commit in $(git rev-list --reverse $1); do
|
||||
if git rev-list -n 1 --pretty="%s" $commit | grep -q "^scripted-diff:"; then
|
||||
git checkout --quiet $commit^ || exit
|
||||
SCRIPT="$(git rev-list --format=%b -n1 $commit | sed '/^-BEGIN VERIFY SCRIPT-$/,/^-END VERIFY SCRIPT-$/{//!b};d')"
|
||||
if test -z "$SCRIPT"; then
|
||||
echo "Error: missing script for: $commit"
|
||||
echo "Failed"
|
||||
RET=1
|
||||
else
|
||||
echo "Running script for: $commit"
|
||||
echo "$SCRIPT"
|
||||
(eval "$SCRIPT")
|
||||
git --no-pager diff --exit-code $commit && echo "OK" || (echo "Failed"; false) || RET=1
|
||||
fi
|
||||
git reset --quiet --hard HEAD
|
||||
else
|
||||
if git rev-list "--format=%b" -n1 $commit | grep -q '^-\(BEGIN\|END\)[ a-zA-Z]*-$'; then
|
||||
echo "Error: script block marker but no scripted-diff in title of commit $commit"
|
||||
echo "Failed"
|
||||
RET=1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
git checkout --quiet $PREV_BRANCH 2>/dev/null || git checkout --quiet $PREV_HEAD
|
||||
exit $RET
|
|
@ -40,14 +40,16 @@ MAX_VERSIONS = {
|
|||
'GCC': (4,4,0),
|
||||
'CXXABI': (1,3,3),
|
||||
'GLIBCXX': (3,4,13),
|
||||
'GLIBC': (2,11)
|
||||
'GLIBC': (2,11),
|
||||
'V': (0,5,0) # xkb (qt only)
|
||||
}
|
||||
# See here for a description of _IO_stdin_used:
|
||||
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=634261#109
|
||||
|
||||
# Ignore symbols that are exported as part of every executable
|
||||
IGNORE_EXPORTS = {
|
||||
b'_edata', b'_end', b'_init', b'__bss_start', b'_fini', b'_IO_stdin_used'
|
||||
b'_edata', b'_end', b'_init', b'__bss_start', b'_fini', b'_IO_stdin_used',
|
||||
b'stdin', b'stdout', b'stderr'
|
||||
}
|
||||
READELF_CMD = os.getenv('READELF', '/usr/bin/readelf')
|
||||
CPPFILT_CMD = os.getenv('CPPFILT', '/usr/bin/c++filt')
|
||||
|
@ -66,6 +68,8 @@ b'ld-linux.so.2', # 32-bit dynamic linker
|
|||
b'libX11-xcb.so.1', # part of X11
|
||||
b'libX11.so.6', # part of X11
|
||||
b'libxcb.so.1', # part of X11
|
||||
b'libxkbcommon.so.0', # keyboard keymapping
|
||||
b'libxkbcommon-x11.so.0', # keyboard keymapping
|
||||
b'libfontconfig.so.1', # font support
|
||||
b'libfreetype.so.6', # font parsing
|
||||
b'libdl.so.2' # programming interface to dynamic linker
|
||||
|
@ -160,5 +164,3 @@ if __name__ == '__main__':
|
|||
retval = 1
|
||||
|
||||
exit(retval)
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Copyright (c) 2016 The Bitcoin Core developers
|
||||
# Copyright (c) 2021 The Dogecoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
|
@ -17,11 +18,11 @@ osx=true
|
|||
SIGNER=
|
||||
VERSION=
|
||||
commit=false
|
||||
url=https://github.com/bitcoin/bitcoin
|
||||
url=https://github.com/dogecoin/dogecoin
|
||||
proc=2
|
||||
mem=2000
|
||||
lxc=true
|
||||
osslTarUrl=http://downloads.sourceforge.net/project/osslsigncode/osslsigncode/osslsigncode-1.7.1.tar.gz
|
||||
osslTarUrl=https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/osslsigncode/1.7.1-1/osslsigncode_1.7.1.orig.tar.gz
|
||||
osslPatchUrl=https://bitcoincore.org/cfields/osslsigncode-Backports-to-1.7.1.patch
|
||||
scriptName=$(basename -- "$0")
|
||||
signProg="gpg --detach-sign"
|
||||
|
@ -31,7 +32,7 @@ commitFiles=true
|
|||
read -d '' usage <<- EOF
|
||||
Usage: $scriptName [-c|u|v|b|s|B|o|h|j|m|] signer version
|
||||
|
||||
Run this script from the directory containing the bitcoin, gitian-builder, gitian.sigs, and bitcoin-detached-sigs.
|
||||
Run this script from the directory containing the dogecoin, gitian-builder, gitian.sigs, and dogecoin-detached-sigs.
|
||||
|
||||
Arguments:
|
||||
signer GPG signer to sign each build assert file
|
||||
|
@ -39,7 +40,7 @@ version Version number, commit, or branch to build. If building a commit or bra
|
|||
|
||||
Options:
|
||||
-c|--commit Indicate that the version argument is for a commit or branch
|
||||
-u|--url Specify the URL of the repository. Default is https://github.com/bitcoin/bitcoin
|
||||
-u|--url Specify the URL of the repository. Default is https://github.com/dogecoin/dogecoin
|
||||
-v|--verify Verify the gitian build
|
||||
-b|--build Do a gitian build
|
||||
-s|--sign Make signed binaries for Windows and Mac OSX
|
||||
|
@ -179,8 +180,7 @@ done
|
|||
if [[ $lxc = true ]]
|
||||
then
|
||||
export USE_LXC=1
|
||||
export LXC_BRIDGE=lxcbr0
|
||||
sudo ifconfig lxcbr0 up 10.0.2.2
|
||||
export LXC_BRIDGE=br0
|
||||
fi
|
||||
|
||||
# Check for OSX SDK
|
||||
|
@ -232,8 +232,22 @@ echo ${COMMIT}
|
|||
if [[ $setup = true ]]
|
||||
then
|
||||
sudo apt-get install ruby apache2 git apt-cacher-ng python-vm-builder qemu-kvm qemu-utils
|
||||
git clone https://github.com/bitcoin-core/gitian.sigs.git
|
||||
git clone https://github.com/bitcoin-core/bitcoin-detached-sigs.git
|
||||
# GIT --date=format-local support
|
||||
MIN_GIT_VERSION=2.7.0
|
||||
LASTEST_GIT_VERSION=2.32.0
|
||||
if ! (echo a version ${MIN_GIT_VERSION}; git --version) | sort -Vk3 | tail -1 | grep -q git; then
|
||||
sudo apt-get install build-essential make libssl-dev libghc-zlib-dev libcurl4-gnutls-dev libexpat1-dev gettext unzip
|
||||
wget https://github.com/git/git/archive/v${LASTEST_GIT_VERSION}.zip -O v${LASTEST_GIT_VERSION}.zip
|
||||
unzip v${LASTEST_GIT_VERSION}.zip
|
||||
pushd ./git-${LASTEST_GIT_VERSION}
|
||||
make -j "${proc}" prefix=/usr/local all
|
||||
make -j "${proc}" prefix=/usr/local install
|
||||
popd
|
||||
fi
|
||||
|
||||
# GIT CLONE
|
||||
git clone https://github.com/dogecoin/gitian.sigs.git
|
||||
git clone https://github.com/dogecoin/dogecoin-detached-sigs.git
|
||||
git clone https://github.com/devrandom/gitian-builder.git
|
||||
pushd ./gitian-builder
|
||||
if [[ -n "$USE_LXC" ]]
|
||||
|
@ -247,7 +261,7 @@ then
|
|||
fi
|
||||
|
||||
# Set up build
|
||||
pushd ./bitcoin
|
||||
pushd ./dogecoin
|
||||
git fetch
|
||||
git checkout ${COMMIT}
|
||||
popd
|
||||
|
@ -256,7 +270,7 @@ popd
|
|||
if [[ $build = true ]]
|
||||
then
|
||||
# Make output folder
|
||||
mkdir -p ./bitcoin-binaries/${VERSION}
|
||||
mkdir -p ./dogecoin-binaries/${VERSION}
|
||||
|
||||
# Build Dependencies
|
||||
echo ""
|
||||
|
@ -266,7 +280,7 @@ then
|
|||
mkdir -p inputs
|
||||
wget -N -P inputs $osslPatchUrl
|
||||
wget -N -P inputs $osslTarUrl
|
||||
make -C ../bitcoin/depends download SOURCES_PATH=`pwd`/cache/common
|
||||
make -j "${proc}" -C ../dogecoin/depends download SOURCES_PATH=`pwd`/cache/common
|
||||
|
||||
# Linux
|
||||
if [[ $linux = true ]]
|
||||
|
@ -274,9 +288,9 @@ then
|
|||
echo ""
|
||||
echo "Compiling ${VERSION} Linux"
|
||||
echo ""
|
||||
./bin/gbuild -j ${proc} -m ${mem} --commit bitcoin=${COMMIT} --url bitcoin=${url} ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml
|
||||
./bin/gsign -p $signProg --signer $SIGNER --release ${VERSION}-linux --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml
|
||||
mv build/out/bitcoin-*.tar.gz build/out/src/bitcoin-*.tar.gz ../bitcoin-binaries/${VERSION}
|
||||
./bin/gbuild -j ${proc} -m ${mem} --commit dogecoin=${COMMIT} --url dogecoin=${url} ../dogecoin/contrib/gitian-descriptors/gitian-linux.yml
|
||||
./bin/gsign -p $signProg --signer $SIGNER --release ${VERSION}-linux --destination ../gitian.sigs/ ../dogecoin/contrib/gitian-descriptors/gitian-linux.yml
|
||||
mv build/out/dogecoin-*.tar.gz build/out/src/dogecoin-*.tar.gz ../dogecoin-binaries/${VERSION}
|
||||
fi
|
||||
# Windows
|
||||
if [[ $windows = true ]]
|
||||
|
@ -284,10 +298,10 @@ then
|
|||
echo ""
|
||||
echo "Compiling ${VERSION} Windows"
|
||||
echo ""
|
||||
./bin/gbuild -j ${proc} -m ${mem} --commit bitcoin=${COMMIT} --url bitcoin=${url} ../bitcoin/contrib/gitian-descriptors/gitian-win.yml
|
||||
./bin/gsign -p $signProg --signer $SIGNER --release ${VERSION}-win-unsigned --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-win.yml
|
||||
mv build/out/bitcoin-*-win-unsigned.tar.gz inputs/bitcoin-win-unsigned.tar.gz
|
||||
mv build/out/bitcoin-*.zip build/out/bitcoin-*.exe ../bitcoin-binaries/${VERSION}
|
||||
./bin/gbuild -j ${proc} -m ${mem} --commit dogecoin=${COMMIT} --url dogecoin=${url} ../dogecoin/contrib/gitian-descriptors/gitian-win.yml
|
||||
./bin/gsign -p $signProg --signer $SIGNER --release ${VERSION}-win-unsigned --destination ../gitian.sigs/ ../dogecoin/contrib/gitian-descriptors/gitian-win.yml
|
||||
mv build/out/dogecoin-*-win-unsigned.tar.gz inputs/dogecoin-win-unsigned.tar.gz
|
||||
mv build/out/dogecoin-*.zip build/out/dogecoin-*.exe ../dogecoin-binaries/${VERSION}
|
||||
fi
|
||||
# Mac OSX
|
||||
if [[ $osx = true ]]
|
||||
|
@ -295,10 +309,10 @@ then
|
|||
echo ""
|
||||
echo "Compiling ${VERSION} Mac OSX"
|
||||
echo ""
|
||||
./bin/gbuild -j ${proc} -m ${mem} --commit bitcoin=${COMMIT} --url bitcoin=${url} ../bitcoin/contrib/gitian-descriptors/gitian-osx.yml
|
||||
./bin/gsign -p $signProg --signer $SIGNER --release ${VERSION}-osx-unsigned --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-osx.yml
|
||||
mv build/out/bitcoin-*-osx-unsigned.tar.gz inputs/bitcoin-osx-unsigned.tar.gz
|
||||
mv build/out/bitcoin-*.tar.gz build/out/bitcoin-*.dmg ../bitcoin-binaries/${VERSION}
|
||||
./bin/gbuild -j ${proc} -m ${mem} --commit dogecoin=${COMMIT} --url dogecoin=${url} ../dogecoin/contrib/gitian-descriptors/gitian-osx.yml
|
||||
./bin/gsign -p $signProg --signer $SIGNER --release ${VERSION}-osx-unsigned --destination ../gitian.sigs/ ../dogecoin/contrib/gitian-descriptors/gitian-osx.yml
|
||||
mv build/out/dogecoin-*-osx-unsigned.tar.gz inputs/dogecoin-osx-unsigned.tar.gz
|
||||
mv build/out/dogecoin-*.tar.gz build/out/dogecoin-*.dmg ../dogecoin-binaries/${VERSION}
|
||||
fi
|
||||
popd
|
||||
|
||||
|
@ -325,27 +339,27 @@ then
|
|||
echo ""
|
||||
echo "Verifying v${VERSION} Linux"
|
||||
echo ""
|
||||
./bin/gverify -v -d ../gitian.sigs/ -r ${VERSION}-linux ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml
|
||||
./bin/gverify -v -d ../gitian.sigs/ -r ${VERSION}-linux ../dogecoin/contrib/gitian-descriptors/gitian-linux.yml
|
||||
# Windows
|
||||
echo ""
|
||||
echo "Verifying v${VERSION} Windows"
|
||||
echo ""
|
||||
./bin/gverify -v -d ../gitian.sigs/ -r ${VERSION}-win-unsigned ../bitcoin/contrib/gitian-descriptors/gitian-win.yml
|
||||
./bin/gverify -v -d ../gitian.sigs/ -r ${VERSION}-win-unsigned ../dogecoin/contrib/gitian-descriptors/gitian-win.yml
|
||||
# Mac OSX
|
||||
echo ""
|
||||
echo "Verifying v${VERSION} Mac OSX"
|
||||
echo ""
|
||||
./bin/gverify -v -d ../gitian.sigs/ -r ${VERSION}-osx-unsigned ../bitcoin/contrib/gitian-descriptors/gitian-osx.yml
|
||||
./bin/gverify -v -d ../gitian.sigs/ -r ${VERSION}-osx-unsigned ../dogecoin/contrib/gitian-descriptors/gitian-osx.yml
|
||||
# Signed Windows
|
||||
echo ""
|
||||
echo "Verifying v${VERSION} Signed Windows"
|
||||
echo ""
|
||||
./bin/gverify -v -d ../gitian.sigs/ -r ${VERSION}-osx-signed ../bitcoin/contrib/gitian-descriptors/gitian-osx-signer.yml
|
||||
./bin/gverify -v -d ../gitian.sigs/ -r ${VERSION}-osx-signed ../dogecoin/contrib/gitian-descriptors/gitian-osx-signer.yml
|
||||
# Signed Mac OSX
|
||||
echo ""
|
||||
echo "Verifying v${VERSION} Signed Mac OSX"
|
||||
echo ""
|
||||
./bin/gverify -v -d ../gitian.sigs/ -r ${VERSION}-osx-signed ../bitcoin/contrib/gitian-descriptors/gitian-osx-signer.yml
|
||||
./bin/gverify -v -d ../gitian.sigs/ -r ${VERSION}-osx-signed ../dogecoin/contrib/gitian-descriptors/gitian-osx-signer.yml
|
||||
popd
|
||||
fi
|
||||
|
||||
|
@ -360,10 +374,10 @@ then
|
|||
echo ""
|
||||
echo "Signing ${VERSION} Windows"
|
||||
echo ""
|
||||
./bin/gbuild -i --commit signature=${COMMIT} ../bitcoin/contrib/gitian-descriptors/gitian-win-signer.yml
|
||||
./bin/gsign -p $signProg --signer $SIGNER --release ${VERSION}-win-signed --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-win-signer.yml
|
||||
mv build/out/bitcoin-*win64-setup.exe ../bitcoin-binaries/${VERSION}
|
||||
mv build/out/bitcoin-*win32-setup.exe ../bitcoin-binaries/${VERSION}
|
||||
./bin/gbuild -i --commit signature=${COMMIT} ../dogecoin/contrib/gitian-descriptors/gitian-win-signer.yml
|
||||
./bin/gsign -p $signProg --signer $SIGNER --release ${VERSION}-win-signed --destination ../gitian.sigs/ ../dogecoin/contrib/gitian-descriptors/gitian-win-signer.yml
|
||||
mv build/out/dogecoin-*win64-setup.exe ../dogecoin-binaries/${VERSION}
|
||||
mv build/out/dogecoin-*win32-setup.exe ../dogecoin-binaries/${VERSION}
|
||||
fi
|
||||
# Sign Mac OSX
|
||||
if [[ $osx = true ]]
|
||||
|
@ -371,9 +385,9 @@ then
|
|||
echo ""
|
||||
echo "Signing ${VERSION} Mac OSX"
|
||||
echo ""
|
||||
./bin/gbuild -i --commit signature=${COMMIT} ../bitcoin/contrib/gitian-descriptors/gitian-osx-signer.yml
|
||||
./bin/gsign -p $signProg --signer $SIGNER --release ${VERSION}-osx-signed --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-osx-signer.yml
|
||||
mv build/out/bitcoin-osx-signed.dmg ../bitcoin-binaries/${VERSION}/bitcoin-${VERSION}-osx.dmg
|
||||
./bin/gbuild -i --commit signature=${COMMIT} ../dogecoin/contrib/gitian-descriptors/gitian-osx-signer.yml
|
||||
./bin/gsign -p $signProg --signer $SIGNER --release ${VERSION}-osx-signed --destination ../gitian.sigs/ ../dogecoin/contrib/gitian-descriptors/gitian-osx-signer.yml
|
||||
mv build/out/dogecoin-osx-signed.dmg ../dogecoin-binaries/${VERSION}/dogecoin-${VERSION}-osx.dmg
|
||||
fi
|
||||
popd
|
||||
|
||||
|
|
|
@ -2,21 +2,21 @@
|
|||
name: "dogecoin-linux-1.14"
|
||||
enable_cache: true
|
||||
suites:
|
||||
- "trusty"
|
||||
- "bionic"
|
||||
architectures:
|
||||
- "amd64"
|
||||
packages:
|
||||
- "curl"
|
||||
- "g++-aarch64-linux-gnu"
|
||||
- "g++-4.8-aarch64-linux-gnu"
|
||||
- "gcc-4.8-aarch64-linux-gnu"
|
||||
- "g++-7-aarch64-linux-gnu"
|
||||
- "gcc-7-aarch64-linux-gnu"
|
||||
- "binutils-aarch64-linux-gnu"
|
||||
- "g++-arm-linux-gnueabihf"
|
||||
- "g++-4.8-arm-linux-gnueabihf"
|
||||
- "gcc-4.8-arm-linux-gnueabihf"
|
||||
- "g++-7-arm-linux-gnueabihf"
|
||||
- "gcc-7-arm-linux-gnueabihf"
|
||||
- "binutils-arm-linux-gnueabihf"
|
||||
- "g++-4.8-multilib"
|
||||
- "gcc-4.8-multilib"
|
||||
- "g++-7-multilib"
|
||||
- "gcc-7-multilib"
|
||||
- "binutils-gold"
|
||||
- "git-core"
|
||||
- "pkg-config"
|
||||
|
@ -24,6 +24,7 @@ packages:
|
|||
- "libtool"
|
||||
- "automake"
|
||||
- "faketime"
|
||||
- "bison"
|
||||
- "bsdmainutils"
|
||||
- "ca-certificates"
|
||||
- "python"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
name: "dogecoin-dmg-signer"
|
||||
suites:
|
||||
- "trusty"
|
||||
- "bionic"
|
||||
architectures:
|
||||
- "amd64"
|
||||
packages:
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
name: "dogecoin-osx-1.14"
|
||||
enable_cache: true
|
||||
suites:
|
||||
- "trusty"
|
||||
- "bionic"
|
||||
architectures:
|
||||
- "amd64"
|
||||
packages:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
name: "dogecoin-win-signer"
|
||||
suites:
|
||||
- "trusty"
|
||||
- "bionic"
|
||||
architectures:
|
||||
- "amd64"
|
||||
packages:
|
||||
|
@ -11,7 +11,7 @@ remotes:
|
|||
- "url": "https://github.com/dogecoin/dogecoin-detached-sigs.git"
|
||||
"dir": "signature"
|
||||
files:
|
||||
- "osslsigncode-1.7.1.tar.gz"
|
||||
- "osslsigncode_1.7.1.orig.tar.gz"
|
||||
- "osslsigncode-Backports-to-1.7.1.patch"
|
||||
- "dogecoin-win-unsigned.tar.gz"
|
||||
script: |
|
||||
|
@ -19,13 +19,13 @@ script: |
|
|||
SIGDIR=${BUILD_DIR}/signature/win
|
||||
UNSIGNED_DIR=${BUILD_DIR}/unsigned
|
||||
|
||||
echo "f9a8cdb38b9c309326764ebc937cba1523a3a751a7ab05df3ecc99d18ae466c9 osslsigncode-1.7.1.tar.gz" | sha256sum -c
|
||||
echo "f9a8cdb38b9c309326764ebc937cba1523a3a751a7ab05df3ecc99d18ae466c9 osslsigncode_1.7.1.orig.tar.gz" | sha256sum -c
|
||||
echo "a8c4e9cafba922f89de0df1f2152e7be286aba73f78505169bc351a7938dd911 osslsigncode-Backports-to-1.7.1.patch" | sha256sum -c
|
||||
|
||||
mkdir -p ${UNSIGNED_DIR}
|
||||
tar -C ${UNSIGNED_DIR} -xf dogecoin-win-unsigned.tar.gz
|
||||
|
||||
tar xf osslsigncode-1.7.1.tar.gz
|
||||
tar xf osslsigncode_1.7.1.orig.tar.gz
|
||||
cd osslsigncode-1.7.1
|
||||
patch -p1 < ${BUILD_DIR}/osslsigncode-Backports-to-1.7.1.patch
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
name: "dogecoin-win-1.14"
|
||||
enable_cache: true
|
||||
suites:
|
||||
- "trusty"
|
||||
- "bionic"
|
||||
architectures:
|
||||
- "amd64"
|
||||
packages:
|
||||
|
@ -21,6 +21,7 @@ packages:
|
|||
- "zip"
|
||||
- "ca-certificates"
|
||||
- "python"
|
||||
- "rename"
|
||||
remotes:
|
||||
- "url": "https://github.com/dogecoin/dogecoin.git"
|
||||
"dir": "dogecoin"
|
||||
|
@ -29,7 +30,7 @@ script: |
|
|||
WRAP_DIR=$HOME/wrapped
|
||||
HOSTS="i686-w64-mingw32 x86_64-w64-mingw32"
|
||||
CONFIGFLAGS="--enable-reduce-exports --disable-bench --disable-gui-tests"
|
||||
FAKETIME_HOST_PROGS="g++ ar ranlib nm windres strip objcopy"
|
||||
FAKETIME_HOST_PROGS="ar ranlib nm windres strip objcopy"
|
||||
FAKETIME_PROGS="date makensis zip"
|
||||
HOST_CFLAGS="-O2 -g"
|
||||
HOST_CXXFLAGS="-O2 -g"
|
||||
|
@ -70,21 +71,13 @@ script: |
|
|||
done
|
||||
}
|
||||
|
||||
function create_per-host_linker_wrapper {
|
||||
# This is only needed for trusty, as the mingw linker leaks a few bytes of
|
||||
# heap, causing non-determinism. See discussion in https://github.com/bitcoin/bitcoin/pull/6900
|
||||
function create_per-host_compiler_wrapper {
|
||||
# -posix variant is required for c++11 threading.
|
||||
for i in $HOSTS; do
|
||||
mkdir -p ${WRAP_DIR}/${i}
|
||||
for prog in collect2; do
|
||||
echo '#!/bin/bash' > ${WRAP_DIR}/${i}/${prog}
|
||||
REAL=$(${i}-gcc -print-prog-name=${prog})
|
||||
echo "export MALLOC_PERTURB_=255" >> ${WRAP_DIR}/${i}/${prog}
|
||||
echo "${REAL} \$@" >> $WRAP_DIR/${i}/${prog}
|
||||
chmod +x ${WRAP_DIR}/${i}/${prog}
|
||||
done
|
||||
for prog in gcc g++; do
|
||||
echo '#!/bin/bash' > ${WRAP_DIR}/${i}-${prog}
|
||||
echo "REAL=\`which -a ${i}-${prog} | grep -v ${WRAP_DIR}/${i}-${prog} | head -1\`" >> ${WRAP_DIR}/${i}-${prog}
|
||||
echo "REAL=\`which -a ${i}-${prog}-posix | grep -v ${WRAP_DIR}/${i}-${prog} | head -1\`" >> ${WRAP_DIR}/${i}-${prog}
|
||||
echo 'export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${i}-${prog}
|
||||
echo "export FAKETIME=\"$1\"" >> ${WRAP_DIR}/${i}-${prog}
|
||||
echo "export COMPILER_PATH=${WRAP_DIR}/${i}" >> ${WRAP_DIR}/${i}-${prog}
|
||||
|
@ -98,7 +91,7 @@ script: |
|
|||
export PATH_orig=${PATH}
|
||||
create_global_faketime_wrappers "2000-01-01 12:00:00"
|
||||
create_per-host_faketime_wrappers "2000-01-01 12:00:00"
|
||||
create_per-host_linker_wrapper "2000-01-01 12:00:00"
|
||||
create_per-host_compiler_wrapper "2000-01-01 12:00:00"
|
||||
export PATH=${WRAP_DIR}:${PATH}
|
||||
|
||||
cd dogecoin
|
||||
|
@ -112,7 +105,7 @@ script: |
|
|||
export PATH=${PATH_orig}
|
||||
create_global_faketime_wrappers "${REFERENCE_DATETIME}"
|
||||
create_per-host_faketime_wrappers "${REFERENCE_DATETIME}"
|
||||
create_per-host_linker_wrapper "${REFERENCE_DATETIME}"
|
||||
create_per-host_compiler_wrapper "${REFERENCE_DATETIME}"
|
||||
export PATH=${WRAP_DIR}:${PATH}
|
||||
|
||||
# Create the release tarball using (arbitrarily) the first host
|
||||
|
|
53
contrib/gitian-keys/michilumin-key.pgp
Normal file
53
contrib/gitian-keys/michilumin-key.pgp
Normal file
|
@ -0,0 +1,53 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: Keybase OpenPGP JS 0.0.1
|
||||
Comment: https://keybase.io/crypto
|
||||
|
||||
xsFNBFMO4sgBEAChyAICcaqIBhR0uych9PUiruFtARUZgmmgeB66DHESLjm/Lbb1
|
||||
vjUT1GF00jd5Sb8ue4H/GL8q+Ngn9fiR5NtxfKY4+/5+RGbyl7y3SxvKSt09oilu
|
||||
L4VyeB95OnoFNfLDzRMNfMEYbCWkJM9B+d1koE2R8Ehly45DuBn4OvnNWKu70Hyk
|
||||
TozhCkpA9KiBXxOGyUiu3bhFQtchBaf9vaVUoxkv70iqZImtJlhqWJI52RauSck+
|
||||
9mKURe7uH9JfdL6V2VcY2Mkz2xFPIXB1LkRhNZoUDtyYmwfUFYiz4qh/WoAogFw8
|
||||
woEHySEpRxKw3ibMlRU7JYW+JHZf5mKzKpZT7ge6Tlv1fqAlLC0MaWCzSNev0nZ7
|
||||
IOSELSJBZEpF9sknWSbL7RKwqMPRWby7LBSd1VsPzfJZevIraMHWWVPq78iU38k1
|
||||
3wLwMaJrLvNkMz+5AZT7JPtvzzY5EPNTGdN9gI1G6Tb12BxkaYBpO/zLUCSRoNRi
|
||||
bP63FvYHd2yIIMqXDVPwg4ckA6t2KIuzjif8wc0yOEK1t/dTjgEdxP0o73RFsqxN
|
||||
lNaHFkwd+aOdLbBkHQN/e6D5ZqQT/Hy7U+cY8lor4RKrec+mnnBNOTdGTu7cCFyh
|
||||
7cuOVKJlfKgXXQExBA1gxFTJvUiCyvfEfbWht7xCZvlY6mxl53n2ZMZ8SwARAQAB
|
||||
zSxrZXliYXNlLmlvL21pY2hpICh2MC4wLjEpIDxtaWNoaUBrZXliYXNlLmlvPsLB
|
||||
cwQQAQoAHQUCUw7iyAIbLwUJEswDAAMLCQcDFQoIAh4BAheAAAoJEFILU64p6Yhh
|
||||
0sQP/17gVfuKU7Axwm5TxCcK4PLseqY3uqnc1ueERV7fCI56xIcqLgxUx8TD2jkQ
|
||||
TL3s9a8l0y7TI8SbTjfYDsnV2oMeJ3qzZogMMIRf5zorwQmsfvJS2vggMYldCZ6T
|
||||
Op05oVti6w3cIhU9P9Xaxsh/0Qf9SxB28HZnNOorMq8BlS/R3dI8evZ32jK4KxHt
|
||||
JNyNNFGEPXrYOEuL/rxyYd81ODHsAO+xMGZV7H1D9ttfrQEA0sdpiE6KrxAH9ls8
|
||||
KjP9TcJe8dggjmt5EAhsSDtExftu8xUUEVC7Q03GkfHg+LfHSAqK79FI39++coSf
|
||||
QcKAgjReE5uYmqeMCrbcr4VXAAuo+3hMlH5JHIwfnv19KuVZz6xkUcD/BrrCU3Vn
|
||||
IegO4yH1wdhqwnBzsqsmm2Ue1RaG9iXRxILyOPi3hIGXi4LlvZzxL0vGWMPKytlN
|
||||
3AlZhrAY6SvtXbPFuU96xvnohvRVnnNPAYggBPCXv10QCL234DJvXtBEel6izEDl
|
||||
gUtYASrwkyLp3m0DySoBavctntKFucv7x9jalsDOvRwCW7N7c0LfAd8RxiUdfmko
|
||||
b5kw4jwdec6uHsvBVAb+xmx3KmSBfgDkoizCZvLaXBrxK9Kr1vkxPBI9fInqGCKa
|
||||
0PCE3BrcBVaWSMTnIP5hDZfF2OmYpUxAJhOvhEH6E8VvnrswzsBNBFMO4sgBCACa
|
||||
DB0nw4byoiMwUs9BkmV90n0hCWG20xlX0NKZFhIVewRVhVPeUWRSB4jhVJ78q4M6
|
||||
lVidEBHwKpqDS2XcxRu3lUIWH2kQurVVfYakEtH+WO9IvB9y+5lMDswETkDSChH9
|
||||
iFRuVwxDbo9knQBbmvzDMH1VtVy5YuJUlElxPgPb9a05/5EDs+T14gCEbiA7cGfD
|
||||
ZRb5/siE6kNopJeMDaa8t+g7R5SlucQasYIchq6lIA03x66P7KcpI8z0WiH/4bqk
|
||||
Qg+7uDcd0Hy681QES3XE0mlzcbpDLDDSP8EnXldq0aJRz7eI2WvBASehZebfFuru
|
||||
3BICsCMkVuDnTIWhCKLJABEBAAHCwoQEGAEKAA8FAlMO4sgFCQHhM4ACGy4BKQkQ
|
||||
UgtTrinpiGHAXSAEGQEKAAYFAlMO4sgACgkQ3A8+xoA/tFySegf/XwFCj8vsrliO
|
||||
cNDEHwM/LBteipctcHg0imMuXSjnhwW2Wq8E+W8NfEKftxg+1o24GppYUoEDWSYM
|
||||
jvy+G5woEYRGLDzI0s92Cx408yJbwQaNE4cp5przvfJ5IjV6f5NxizZ71byRRtd8
|
||||
8MGFIUCtegX4nBwVhGhDj9Y27R4XxAzZR178yTGBSZ59rICAzHkT5Jaohr7K0XB2
|
||||
iUyR6/cAxxEtu/+cbAQgQ+qYxW4/amOcuV63t6tB3nejAbP1PQDJdgzxGfCO7PX9
|
||||
imsODNouDjfRfJoodS5aCp2DO4EYpGEtGYap0K1SIXSzIUs8vOyrxdK56BHPxDDQ
|
||||
OXanAkmFq+UkD/4splgdyKgRqpQiZSdWJH7KBlaZQ3hQPHLqmo8uevvK7tVNvaqR
|
||||
3c53QrWyFaWOIkRRufjkA31QQVANLI2vum606PquLzxtrqqddXKv1APlFs+Vryio
|
||||
RXOUutgI4p0xizo/wx0M6hRKM72Fqp24Vb3HB04QzdDsB6AReOQbb0/avWU6wyTJ
|
||||
IqDagzPZWdgPM2FnJjKwE0DMjbiUjYExKofuNlyCO4/16Q92HKRgNGy9hkYi1B6D
|
||||
wf2LznY11T9O+PjIWwlx6RyMpY/NYDKP010Wp62o0/S48yVu7LE/0riyX0JT7hGt
|
||||
fWK1+0HO6jlNZ8T3PgPQcJ24fyJTRc8jXoi8AUUyKm/IFIBsZndxUt34tA4IDh+r
|
||||
e9sGOj3yU+OaKMdhy3qLz2qEdPO8fQB7XrmZLYvU9eLypK0for09ZNsmR8V6SIGy
|
||||
49z+4K4bxS9+o5t0w8MWZ/d6UB/WO8+XzwGrMA4gWbc6DRo302oJA8YISN9fH123
|
||||
Wr6XsokZYmdnr4FM+u3Bembn5E8vj2Va8hnqj6+Q+W8tA0t+r+FxMBRK3sQ7g7RN
|
||||
2/6rBOkjI3bu3GJiytITP/QISicquVSJk/9GRDVJpAYbqiLuVWTi5cWTv7hbU6nJ
|
||||
d19adzzCJGwf9fIpFhu5IoUdwcYaEnZHGvfOGRBYBToI3w+y50H3S1asCg==
|
||||
=xHA/
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
@ -1,38 +1,31 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v1
|
||||
|
||||
mQENBFObDPcBCADjZ5or5/p72Scw8n2znFaZT5W9vz9IcCT13fZGlN3QpNnHu772
|
||||
obv6OrDpiLA7ltshD0RjebSYGlSWYG0UXiN13KM/BPiFdZx/lkS6NPEm78t9NQ36
|
||||
IuqVXL8A4K+A2ihB92mfS+oaim8HmO/GmJm6dDgQlwadNBaPnLezBHNf5msoym0a
|
||||
1x8hfY+3Fi7Kwz4hf8njO7cUze/av/7fGFzMCUc5aQpD2SNGNDt20EBjW8z3MCeL
|
||||
6rCn2NYmDHrHgY3yBHQBkOWmZli6NEENCmbyr9Ab20GTeom4yq7enJ7lN/vmM3Cm
|
||||
e060xH6/R2iEXrapQ8s90OtsoocZBtbc8v2NABEBAAG0QWdpdGh1Yi5jb20vcGF0
|
||||
cmlja2xvZGRlciA8cGF0cmlja2xvZGRlckB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5j
|
||||
b20+iQE+BBMBAgAoBQJTnUu7AhsjBQkJZgGABgsJCAcDAgYVCAIJCgsEFgIDAQIe
|
||||
AQIXgAAKCRCxxgpl5eZNe1PZB/sGobt+xHMIj5yBFUesSjNHrJL/cnuQAN+2cl2Z
|
||||
Y/zBo2iuVLfoC3TQohICVZjd4rh98yeim2ODZekb1HE9muXBblLSIK2QV1zwWNCX
|
||||
beEJlXh7tNqjDpLSrhoyjPRBKuqYqnZJpdMLr/4CiT3Cit0AenCYH+rpHEcQVcYj
|
||||
NWc92lCux7TPn9QYEdUO00hhQwh3SlSFMItGRkhplPuWwHbm4JEBw5Wah4tac+f8
|
||||
MR4MEfwwY9Q4MbJNzYgtou2dIJrtIYrQz9NxKYM0MvBNpk8IdZ7T7aLKBC32e02r
|
||||
243Mz/nTq75Ks0+lnqjoH3ihTIUoJhBFcVFJ9Nt21nRSLFtNtB1QYXRyaWNrIExv
|
||||
ZGRlciA8cGF0QHBsZGRyLmV1PokBQQQTAQIAKwIbIwUJCWYBgAYLCQgHAwIGFQgC
|
||||
CQoLBBYCAwECHgECF4AFAlOdS8oCGQEACgkQscYKZeXmTXue+wf5AQgW7rAO/0UO
|
||||
1b+8CJIpmOdnAcTetR+1x3xTwnAIfrMIzKelLq4ddEy/dyRcTeYcHJENBztKqi+S
|
||||
oGbE+FzwMabPdl3XerdU9l9mhjN6xO62NIjD/lrpv4i8Ce32mswYFCcQn0SgAw66
|
||||
zisBTEff3XGcZgTZreEUdIIBijlRR5okbuOKmtLSSyc7mZ+2PsGnZ3x6sutWpPFb
|
||||
xg/TY56JXOVG4pVXPmZ2SF2CYPFmK2hoGX17WCpU39HCKE0GdLGcTw2bmO3loE6y
|
||||
Jlvmpaa/jjmGuWvTvGd571KFYsbW5nD32shoq1ejZqhvQLmFgAUC4YfyZ6MsiXO/
|
||||
DWpOOa7zR7kBDQRTmwz3AQgA7E2xHtwG4oCWy1b1pDGrwn1NlyBSXq68pNGE3rsX
|
||||
N7os84mzikBQFyLKJg1pjoTSkab/zXL6JC6YNO9/2mmTytsR57ICP0vCJ9Hm/dBp
|
||||
plngVPS7Q1CbaNz6zAsOl61gb5lsYUIiqr0AZ7YcJy1rb9cg3b8q81OiRPlsFu0E
|
||||
DejmKifvr2re59EuM61lHUQgeI8pJaja6wcY0lIJZqR/OHwWe7+/hr1zfEx2V7P6
|
||||
J3/52RYmK6F6hkknHdh9aJwADa8XM+w9iDSXha95isg4Oe14TWMbE6bBwuqnOYR8
|
||||
l5FfWrb5/KQrSiA0ngSAndkeX7K13GuuMqmKqQXlPpEBFQARAQABiQElBBgBAgAP
|
||||
BQJTmwz3AhsMBQkJZgGAAAoJELHGCmXl5k17L2MIANjbWb2K+81Uganw/Iwp4Mgt
|
||||
dtCXlw6F+fISFybGzvBOiKuHUyclcpzydsUqRb7yWGOkNvpTrtdFigU7wbqg5+Hr
|
||||
xfJYjECjFmOIZjoLu0zAMtKcIEwj2B1GaU34xLgM6BaCj3NUSB8MFeXmkXfbF8Zd
|
||||
iysI5sheancm/qbODka9wVeCdHxiGMpaZdOAoSP9IHIN5dcNiaaWCghT/jwnFlUR
|
||||
UXUePECFVgVhHugLPsYwzF7YlObck7rRZoRUD6F8LRmgG3ORB+x1Tcml0oLySm9/
|
||||
vH10auHHAmPGB2TPF2hSB/zlyblt/XQKj6pKdqWZN7AKACAbjc+uLw1tcF39Cyk=
|
||||
=MdkT
|
||||
mQENBF8V/EkBCAC8YTo6YJLNY0To+25b+dcSRcMCo/g9TJlraoJagO9Hr0Njbryg
|
||||
jG5iptxi6UjDD+8xPK7YYRhaKyzJq1yTjGe5u5WEEtMfNaiVgA6dSEOXTdH4xT6q
|
||||
v3VundebzZ7TFue7kj7fzEh7t9x2k5+RI2RvOs26ANEBKgJliQIZDXKOLcQuW7k9
|
||||
9pWvqMWqRyn8WVGNf/UGBoFDcXQ1wo3h6m/LMJIO5L2IGlQWPmc8WT3uHJ/X/5Ln
|
||||
slQ1ml7h+JjNwN0rAY/ZaJHSEi2y0RtLRzISP0EsA6EbqvJNGI8jqs5rpImgUn9U
|
||||
8Q8Xz6hLPAiVTmteF63LlKo03wRcH8d/FVSvABEBAAG0N1BhdHJpY2sgTG9kZGVy
|
||||
IDxwYXRyaWNrbG9kZGVyQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT6JAVQEEwEI
|
||||
AD4WIQTcbvSov58bHk3h7lItOjRbmNDcHwUCXxX8SQIbAwUJA8JnAAULCQgHAgYV
|
||||
CgkICwIEFgIDAQIeAQIXgAAKCRAtOjRbmNDcHwHQB/9mzj5kuBwPqTT93iec/zKM
|
||||
5yRo3oINJOdXW1Mix3HI2xO0t/NnQFRkLxM/aAcsCFVm+ODcG+FBlcvy87MrEh9M
|
||||
RTMDEx8K5WOK+pSMcEgWqXQb4P0QrEAcNQmdyUswnVyUU8DryB4zp0KwXTgrg8AR
|
||||
V+6ebmMnXiAbTJkCvItJrA/JJpRa5hk5nl6ED4SRBrUiEOeFFrnTq8NlMgoRldyB
|
||||
Mx7v5pSamUZh+ZLpEU7lWvOA5C/zo3iVF2ruZnyZPozP1hFORNuUbxnZEaBpwQKi
|
||||
i1SMC3HOzh8EzatohbOW1rH8iki7IlG6a76kWNJABrsYBmDSOnj9crgvVNxNNHNt
|
||||
uQENBF8V/EkBCADN8eWUf0OtQdthNoWhRgotz/EzLI9r3sVv2SqbA++rHW9TC7mB
|
||||
Wl/3e5emXWgKI1EK1Poz5HeKnL3SRx3xizgBTK6+RNQK6svvaLwcx06y8pZP9RqX
|
||||
jLaRR67fXZCL+ulPtTcbt/JwlaTaokwWsgfy3UZRcK33llLbvWFjht2OGfx8B6Z9
|
||||
UFRxW4sP0HuE3RrnMATGymWvOZlwYDr73HltksnOEFkz4lVP5VK9kdbndQjIB3Cf
|
||||
zw/waTqjX+xXjJsFMYZhEDARhP5BQIoQvEv8KRtptNoLJGFZ9RGf+fIHiar2GAZL
|
||||
4WZbZ0IuGLj419TkgvsUkI83Bx97DkS5Xa+jABEBAAGJATwEGAEIACYWIQTcbvSo
|
||||
v58bHk3h7lItOjRbmNDcHwUCXxX8SQIbDAUJA8JnAAAKCRAtOjRbmNDcH4iPCACB
|
||||
3qf7roCdadPSQNRdt1z/97wjbAC9IUC0WPQMU8gsmF2AeFD6O7gM+vMYhOdkpk0l
|
||||
86FsqgMpZ81mpkitY6XsXgaZmPCfDbe2ou1WuXGGv4TAk0TOOCzJptsoLhxF2sZK
|
||||
hncnhcx3BxYLQd5YbA5bJRUFfLcY1aMx16NPMkiVyCqvtrg3h3ZsMm3sDPJXih5l
|
||||
QeqBN6W9CeTaqQC2pv0vqBEFrBIRy38lr2tJTW+LGEjAHk2uZ5bXW0CXRQksfRVy
|
||||
qGKl8R/YFYzOxElPomFm3bcAYC538E9vWCofiTaDJ72XMLG3nIGNPZz9RJuFvxs0
|
||||
7E2Vs0AwJc9ZDM4fVMV4
|
||||
=n+nj
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
|
73
contrib/init/dogecoind.local.service
Normal file
73
contrib/init/dogecoind.local.service
Normal file
|
@ -0,0 +1,73 @@
|
|||
# This variant of the unit file is for local installations that are installed with `make install`.
|
||||
#
|
||||
# The relevant paths are:
|
||||
#
|
||||
#/usr/local/bin/dogecoind
|
||||
#/usr/local/etc/dogecoin/
|
||||
#/var/local/dogecoin/
|
||||
|
||||
[Unit]
|
||||
Description=Dogecoin's distributed currency daemon
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/local/bin/dogecoind -conf=/usr/local/etc/dogecoin/dogecoin.conf -datadir=/var/local/dogecoin
|
||||
|
||||
KillSignal=SIGINT
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
TimeoutStopSec=60
|
||||
TimeoutStartSec=5
|
||||
StartLimitIntervalSec=120
|
||||
StartLimitBurst=5
|
||||
|
||||
User=dogecoin
|
||||
Group=dogecoin
|
||||
|
||||
### Restrict resource consumption
|
||||
MemoryAccounting=yes
|
||||
MemoryLimit=3g
|
||||
|
||||
### Restrict access to host file system.
|
||||
#
|
||||
# Hide the entire root file system by default, and *only* mount in exactly what is needed.
|
||||
#
|
||||
|
||||
TemporaryFileSystem=/:ro
|
||||
|
||||
# Add core dependencies
|
||||
BindReadOnlyPaths=/etc/ /lib/ /lib64/
|
||||
|
||||
# Add daemon paths
|
||||
BindReadOnlyPaths=/usr/local/bin/dogecoind /usr/local/etc/dogecoin/
|
||||
BindPaths=/var/local/dogecoin/
|
||||
|
||||
### Restrict access to system.
|
||||
|
||||
NoNewPrivileges=true
|
||||
PrivateTmp=true
|
||||
PrivateDevices=true
|
||||
PrivateUsers=true
|
||||
DevicePolicy=closed
|
||||
ProtectHome=true
|
||||
ProtectHostname=true
|
||||
ProtectControlGroups=true
|
||||
ProtectClock=true
|
||||
ProtectKernelModules=true
|
||||
ProtectKernelTunables=true
|
||||
ProtectKernelLogs=true
|
||||
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 AF_NETLINK
|
||||
RestrictNamespaces=true
|
||||
RestrictRealtime=true
|
||||
RestrictSUIDSGID=true
|
||||
MemoryDenyWriteExecute=true
|
||||
LockPersonality=true
|
||||
|
||||
# ProtectSystem=strict would normally be used, however it nullifies TemporaryFileSystem,
|
||||
# since it remounts root as read only over the top.
|
||||
# In this case, do not enable ProtectSystem.
|
||||
#ProtectSystem=strict
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
74
contrib/init/dogecoind.opt.service
Normal file
74
contrib/init/dogecoind.opt.service
Normal file
|
@ -0,0 +1,74 @@
|
|||
# This variant of the unit file is for "opt" add-on installations that do not form part of the default installation.
|
||||
# (i.e. out of band installations by the user, not installed by a system package manager like "apt")
|
||||
#
|
||||
# The relevant paths are:
|
||||
#
|
||||
#/opt/dogecoin/dogecoind
|
||||
#/etc/opt/dogecoin/
|
||||
#/var/opt/dogecoin/
|
||||
|
||||
[Unit]
|
||||
Description=Dogecoin's distributed currency daemon
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/opt/dogecoin/bin/dogecoind -conf=/etc/opt/dogecoin/dogecoin.conf -datadir=/var/opt/dogecoin
|
||||
|
||||
KillSignal=SIGINT
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
TimeoutStopSec=60
|
||||
TimeoutStartSec=5
|
||||
StartLimitIntervalSec=120
|
||||
StartLimitBurst=5
|
||||
|
||||
User=dogecoin
|
||||
Group=dogecoin
|
||||
|
||||
### Restrict resource consumption
|
||||
MemoryAccounting=yes
|
||||
MemoryLimit=3g
|
||||
|
||||
### Restrict access to host file system.
|
||||
#
|
||||
# Hide the entire root file system by default, and *only* mount in exactly what is needed.
|
||||
#
|
||||
|
||||
TemporaryFileSystem=/:ro
|
||||
|
||||
# Add core dependencies
|
||||
BindReadOnlyPaths=/etc/ /lib/ /lib64/
|
||||
|
||||
# Add daemon paths
|
||||
BindReadOnlyPaths=/opt/dogecoin/ /etc/opt/dogecoin/
|
||||
BindPaths=/var/opt/dogecoin/
|
||||
|
||||
### Restrict access to system.
|
||||
|
||||
NoNewPrivileges=true
|
||||
PrivateTmp=true
|
||||
PrivateDevices=true
|
||||
PrivateUsers=true
|
||||
DevicePolicy=closed
|
||||
ProtectHome=true
|
||||
ProtectHostname=true
|
||||
ProtectControlGroups=true
|
||||
ProtectClock=true
|
||||
ProtectKernelModules=true
|
||||
ProtectKernelTunables=true
|
||||
ProtectKernelLogs=true
|
||||
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 AF_NETLINK
|
||||
RestrictNamespaces=true
|
||||
RestrictRealtime=true
|
||||
RestrictSUIDSGID=true
|
||||
MemoryDenyWriteExecute=true
|
||||
LockPersonality=true
|
||||
|
||||
# ProtectSystem=strict would normally be used, however it nullifies TemporaryFileSystem,
|
||||
# since it remounts root as read only over the top.
|
||||
# In this case, do not enable ProtectSystem.
|
||||
#ProtectSystem=strict
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
|
@ -1,22 +1,73 @@
|
|||
# This variant of the unit file is for package installations.
|
||||
#
|
||||
# The relevant paths are:
|
||||
#
|
||||
#/usr/bin/dogecoind
|
||||
#/etc/dogecoin/
|
||||
#/var/lib/dogecoin/
|
||||
|
||||
[Unit]
|
||||
Description=Dogecoin's distributed currency daemon
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/bin/dogecoind -conf=/etc/dogecoin/dogecoin.conf -datadir=/var/lib/dogecoin
|
||||
|
||||
KillSignal=SIGINT
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
TimeoutStopSec=60
|
||||
TimeoutStartSec=5
|
||||
StartLimitIntervalSec=120
|
||||
StartLimitBurst=5
|
||||
|
||||
User=dogecoin
|
||||
Group=dogecoin
|
||||
|
||||
Type=forking
|
||||
PIDFile=/var/lib/dogecoind/dogecoind.pid
|
||||
ExecStart=/usr/bin/dogecoind -daemon -pid=/var/lib/dogecoind/dogecoind.pid \
|
||||
-conf=/etc/dogecoin/dogecoin.conf -datadir=/var/lib/dogecoind -disablewallet
|
||||
### Restrict resource consumption
|
||||
MemoryAccounting=yes
|
||||
MemoryLimit=3g
|
||||
|
||||
Restart=always
|
||||
### Restrict access to host file system.
|
||||
#
|
||||
# Hide the entire root file system by default, and *only* mount in exactly what is needed.
|
||||
#
|
||||
|
||||
TemporaryFileSystem=/:ro
|
||||
|
||||
# Add core dependencies
|
||||
BindReadOnlyPaths=/etc/ /lib/ /lib64/
|
||||
|
||||
# Add daemon paths
|
||||
BindReadOnlyPaths=/usr/bin/dogecoind /etc/dogecoin/
|
||||
BindPaths=/var/lib/dogecoin
|
||||
|
||||
### Restrict access to system.
|
||||
|
||||
NoNewPrivileges=true
|
||||
PrivateTmp=true
|
||||
TimeoutStopSec=60s
|
||||
TimeoutStartSec=2s
|
||||
StartLimitInterval=120s
|
||||
StartLimitBurst=5
|
||||
PrivateDevices=true
|
||||
PrivateUsers=true
|
||||
DevicePolicy=closed
|
||||
ProtectHome=true
|
||||
ProtectHostname=true
|
||||
ProtectControlGroups=true
|
||||
ProtectClock=true
|
||||
ProtectKernelModules=true
|
||||
ProtectKernelTunables=true
|
||||
ProtectKernelLogs=true
|
||||
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 AF_NETLINK
|
||||
RestrictNamespaces=true
|
||||
RestrictRealtime=true
|
||||
RestrictSUIDSGID=true
|
||||
MemoryDenyWriteExecute=true
|
||||
LockPersonality=true
|
||||
|
||||
# ProtectSystem=strict would normally be used, however it nullifies TemporaryFileSystem,
|
||||
# since it remounts root as read only over the top.
|
||||
# In this case, do not enable ProtectSystem.
|
||||
#ProtectSystem=strict
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
|
18
contrib/nixos/shell.nix
Normal file
18
contrib/nixos/shell.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{ pkgs ? import <nixpkgs> { } }:
|
||||
with pkgs;
|
||||
mkShell {
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
autoreconfHook
|
||||
openssl
|
||||
db5
|
||||
util-linux
|
||||
boost
|
||||
zlib
|
||||
libevent
|
||||
miniupnpc
|
||||
qt4
|
||||
protobuf
|
||||
qrencode
|
||||
];
|
||||
}
|
|
@ -243,20 +243,20 @@ done
|
|||
|
||||
%if %{_buildqt}
|
||||
# qt icons
|
||||
install -D -p share/pixmaps/bitcoin.ico %{buildroot}%{_datadir}/pixmaps/bitcoin.ico
|
||||
install -D -p share/pixmaps/dogecoin.ico %{buildroot}%{_datadir}/pixmaps/dogecoin.ico
|
||||
install -p share/pixmaps/nsis-header.bmp %{buildroot}%{_datadir}/pixmaps/
|
||||
install -p share/pixmaps/nsis-wizard.bmp %{buildroot}%{_datadir}/pixmaps/
|
||||
install -p %{SOURCE100} %{buildroot}%{_datadir}/pixmaps/bitcoin.svg
|
||||
%{_bindir}/inkscape %{SOURCE100} --export-png=%{buildroot}%{_datadir}/pixmaps/bitcoin16.png -w16 -h16
|
||||
%{_bindir}/inkscape %{SOURCE100} --export-png=%{buildroot}%{_datadir}/pixmaps/bitcoin32.png -w32 -h32
|
||||
%{_bindir}/inkscape %{SOURCE100} --export-png=%{buildroot}%{_datadir}/pixmaps/bitcoin64.png -w64 -h64
|
||||
%{_bindir}/inkscape %{SOURCE100} --export-png=%{buildroot}%{_datadir}/pixmaps/bitcoin128.png -w128 -h128
|
||||
%{_bindir}/inkscape %{SOURCE100} --export-png=%{buildroot}%{_datadir}/pixmaps/bitcoin256.png -w256 -h256
|
||||
%{_bindir}/convert -resize 16x16 %{buildroot}%{_datadir}/pixmaps/bitcoin256.png %{buildroot}%{_datadir}/pixmaps/bitcoin16.xpm
|
||||
%{_bindir}/convert -resize 32x32 %{buildroot}%{_datadir}/pixmaps/bitcoin256.png %{buildroot}%{_datadir}/pixmaps/bitcoin32.xpm
|
||||
%{_bindir}/convert -resize 64x64 %{buildroot}%{_datadir}/pixmaps/bitcoin256.png %{buildroot}%{_datadir}/pixmaps/bitcoin64.xpm
|
||||
%{_bindir}/convert -resize 128x128 %{buildroot}%{_datadir}/pixmaps/bitcoin256.png %{buildroot}%{_datadir}/pixmaps/bitcoin128.xpm
|
||||
%{_bindir}/convert %{buildroot}%{_datadir}/pixmaps/bitcoin256.png %{buildroot}%{_datadir}/pixmaps/bitcoin256.xpm
|
||||
%{_bindir}/inkscape %{SOURCE100} --export-png=%{buildroot}%{_datadir}/pixmaps/dogecoin16.png -w16 -h16
|
||||
%{_bindir}/inkscape %{SOURCE100} --export-png=%{buildroot}%{_datadir}/pixmaps/dogecoin32.png -w32 -h32
|
||||
%{_bindir}/inkscape %{SOURCE100} --export-png=%{buildroot}%{_datadir}/pixmaps/dogecoin64.png -w64 -h64
|
||||
%{_bindir}/inkscape %{SOURCE100} --export-png=%{buildroot}%{_datadir}/pixmaps/dogecoin128.png -w128 -h128
|
||||
%{_bindir}/inkscape %{SOURCE100} --export-png=%{buildroot}%{_datadir}/pixmaps/dogecoin256.png -w256 -h256
|
||||
%{_bindir}/convert -resize 16x16 %{buildroot}%{_datadir}/pixmaps/dogecoin256.png %{buildroot}%{_datadir}/pixmaps/dogecoin16.xpm
|
||||
%{_bindir}/convert -resize 32x32 %{buildroot}%{_datadir}/pixmaps/dogecoin256.png %{buildroot}%{_datadir}/pixmaps/dogecoin32.xpm
|
||||
%{_bindir}/convert -resize 64x64 %{buildroot}%{_datadir}/pixmaps/dogecoin256.png %{buildroot}%{_datadir}/pixmaps/dogecoin64.xpm
|
||||
%{_bindir}/convert -resize 128x128 %{buildroot}%{_datadir}/pixmaps/dogecoin256.png %{buildroot}%{_datadir}/pixmaps/dogecoin128.xpm
|
||||
%{_bindir}/convert %{buildroot}%{_datadir}/pixmaps/dogecoin256.png %{buildroot}%{_datadir}/pixmaps/dogecoin256.xpm
|
||||
touch %{buildroot}%{_datadir}/pixmaps/*.png -r %{SOURCE100}
|
||||
touch %{buildroot}%{_datadir}/pixmaps/*.xpm -r %{SOURCE100}
|
||||
|
||||
|
|
|
@ -127,10 +127,10 @@ def main():
|
|||
g.write(' * IPv4 as well as onion addresses are wrapped inside a IPv6 address accordingly.\n')
|
||||
g.write(' */\n')
|
||||
with open(os.path.join(indir,'nodes_main.txt'),'r') as f:
|
||||
process_nodes(g, f, 'pnSeed6_main', 8333)
|
||||
process_nodes(g, f, 'pnSeed6_main', 22556)
|
||||
g.write('\n')
|
||||
with open(os.path.join(indir,'nodes_test.txt'),'r') as f:
|
||||
process_nodes(g, f, 'pnSeed6_test', 18333)
|
||||
process_nodes(g, f, 'pnSeed6_test', 44556)
|
||||
g.write('#endif // BITCOIN_CHAINPARAMSSEEDS_H\n')
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
24
contrib/snap/README.md
Normal file
24
contrib/snap/README.md
Normal file
|
@ -0,0 +1,24 @@
|
|||
All the commands I used for building and pushing to Snapcraft. I've only tested the amd64 .snap package, but anyone on amd64, arm64, or i686 should be able to build and/or install it for themselves with these instructions.
|
||||
|
||||
---
|
||||
|
||||
## Building Locally
|
||||
|
||||
```
|
||||
sudo apt install snapd
|
||||
sudo snap install --classic snapcraft
|
||||
snapcraft
|
||||
```
|
||||
|
||||
### To Install Locally
|
||||
```
|
||||
snap install \*.snap --devmode
|
||||
```
|
||||
|
||||
### To Push to Snapcraft
|
||||
```
|
||||
snapcraft login
|
||||
snapcraft register dogecoin-core
|
||||
snapcraft push \*.snap --release=edge
|
||||
sudo snap install dogecoin-core --channel=edge
|
||||
```
|
75
contrib/snap/snapcraft.yaml
Normal file
75
contrib/snap/snapcraft.yaml
Normal file
|
@ -0,0 +1,75 @@
|
|||
name: dogecoin-core # you probably want to 'snapcraft register <name>'
|
||||
version: '1.14.5'
|
||||
summary: Reference client of Dogecoin, a peer-to-peer digital currency like Bitcoin.
|
||||
description: |
|
||||
Dogecoin is a cryptocurrency like Bitcoin, although it does not use SHA256 as its proof of work (POW). Taking development cues from Tenebrix and Litecoin, Dogecoin currently employs a simplified variant of scrypt. MIT licenced.
|
||||
|
||||
base: core18
|
||||
grade: stable
|
||||
confinement: strict
|
||||
architectures:
|
||||
- build-on: [amd64, i386, arm64]
|
||||
|
||||
apps:
|
||||
d:
|
||||
command: dogecoind
|
||||
plugs: [home, removable-media, network, network-bind]
|
||||
environment:
|
||||
# Override HOME so the datadir is located at ~/snap/dogecoin-core/common/.dogecoin/ instead of ~/snap/dogecoin-core/current/.dogecoin/, and each new version of the snap won't have a different data directory: https://docs.snapcraft.io/environment-variables/7983
|
||||
HOME: $SNAP_USER_COMMON
|
||||
qt:
|
||||
command: qt4-launch dogecoin-qt
|
||||
plugs: [home, removable-media, network, network-bind, desktop, x11, unity7]
|
||||
environment:
|
||||
HOME: $SNAP_USER_COMMON
|
||||
DISABLE_WAYLAND: 1
|
||||
cli:
|
||||
command: dogecoin-cli
|
||||
plugs: [home, removable-media, network]
|
||||
environment:
|
||||
HOME: $SNAP_USER_COMMON
|
||||
|
||||
parts:
|
||||
dogecoin-core:
|
||||
plugin: nil
|
||||
override-build: |
|
||||
echo "Downloading files..."
|
||||
wget https://github.com/dogecoin/dogecoin/releases/download/v${SNAPCRAFT_PROJECT_VERSION}/dogecoin-${SNAPCRAFT_PROJECT_VERSION}-${SNAPCRAFT_ARCH_TRIPLET}.tar.gz
|
||||
wget https://github.com/dogecoin/gitian.sigs/archive/refs/heads/master.zip
|
||||
unzip master.zip
|
||||
echo "Verifying secure hash matches signed values..."
|
||||
checksum=$(sha256sum dogecoin-${SNAPCRAFT_PROJECT_VERSION}-${SNAPCRAFT_ARCH_TRIPLET}.tar.gz)
|
||||
if ! (grep -r $checksum * | grep dogecoin-${SNAPCRAFT_PROJECT_VERSION}-${SNAPCRAFT_ARCH_TRIPLET}.tar.gz); then
|
||||
echo "Secure hash not verified."
|
||||
return
|
||||
else
|
||||
echo "Secure hash verified."
|
||||
fi
|
||||
tar -xvf dogecoin-${SNAPCRAFT_PROJECT_VERSION}-${SNAPCRAFT_ARCH_TRIPLET}.tar.gz
|
||||
echo "Running tests..."
|
||||
if ! (dogecoin-${SNAPCRAFT_PROJECT_VERSION}/bin/test_dogecoin); then
|
||||
echo "Dogecoin tests failed."
|
||||
return
|
||||
else
|
||||
echo "Dogecoin tests passed."
|
||||
fi
|
||||
echo "Installing Dogecoin..."
|
||||
install -m 0755 -D -t $SNAPCRAFT_PART_INSTALL/bin dogecoin-${SNAPCRAFT_PROJECT_VERSION}/bin/dogecoind
|
||||
install -m 0755 -D -t $SNAPCRAFT_PART_INSTALL/bin dogecoin-${SNAPCRAFT_PROJECT_VERSION}/bin/dogecoin-qt
|
||||
install -m 0755 -D -t $SNAPCRAFT_PART_INSTALL/bin dogecoin-${SNAPCRAFT_PROJECT_VERSION}/bin/dogecoin-cli
|
||||
wget https://raw.githubusercontent.com/dogecoin/dogecoin/master/share/pixmaps/dogecoin128.png
|
||||
install -m 0644 -D -t $SNAPCRAFT_PART_INSTALL/share/pixmaps dogecoin128.png
|
||||
build-packages:
|
||||
- unzip
|
||||
- wget
|
||||
stage-packages:
|
||||
- libfreetype6
|
||||
- libpng16-16
|
||||
- libx11-xcb1
|
||||
- libx11-6
|
||||
- libfontconfig
|
||||
qt4conf:
|
||||
build-packages:
|
||||
- dpkg-dev
|
||||
plugin: make
|
||||
source: https://github.com/kyrofa/qt4conf.git
|
|
@ -6,6 +6,7 @@ SDK_PATH ?= $(BASEDIR)/SDKs
|
|||
NO_QT ?=
|
||||
NO_WALLET ?=
|
||||
NO_UPNP ?=
|
||||
AVX2 ?=
|
||||
FALLBACK_DOWNLOAD_PATH ?= https://bitcoincore.org/depends-sources
|
||||
|
||||
BUILD = $(shell ./config.guess)
|
||||
|
@ -92,14 +93,19 @@ $(host_arch)_$(host_os)_id_string+=$(shell $(host_STRIP) --version 2>/dev/null)
|
|||
qt_packages_$(NO_QT) = $(qt_packages) $(qt_$(host_os)_packages) $(qt_$(host_arch)_$(host_os)_packages)
|
||||
wallet_packages_$(NO_WALLET) = $(wallet_packages)
|
||||
upnp_packages_$(NO_UPNP) = $(upnp_packages)
|
||||
avx2_packages_$(AVX2) = $(avx2_$(host_arch)_$(host_os)_packages)
|
||||
|
||||
packages += $($(host_arch)_$(host_os)_packages) $($(host_os)_packages) $(qt_packages_) $(wallet_packages_) $(upnp_packages_)
|
||||
packages += $($(host_arch)_$(host_os)_packages) $($(host_os)_packages) $(avx2_packages_1) $(qt_packages_) $(wallet_packages_) $(upnp_packages_)
|
||||
native_packages += $($(host_arch)_$(host_os)_native_packages) $($(host_os)_native_packages)
|
||||
|
||||
ifneq ($(qt_packages_),)
|
||||
native_packages += $(qt_native_packages)
|
||||
endif
|
||||
|
||||
ifneq ($(avx2_packages_1),)
|
||||
native_packages += $(avx2_native_packages)
|
||||
endif
|
||||
|
||||
all_packages = $(packages) $(native_packages)
|
||||
|
||||
meta_depends = Makefile funcs.mk builders/default.mk hosts/default.mk hosts/$(host_os).mk builders/$(build_os).mk
|
||||
|
@ -119,11 +125,35 @@ $(host_prefix)/.stamp_$(final_build_id): $(native_packages) $(packages)
|
|||
$(AT)cd $(@D); $(foreach package,$^, tar xf $($(package)_cached); )
|
||||
$(AT)touch $@
|
||||
|
||||
# $PATH is not preserved between ./configure and make by convention. Its
|
||||
# modification and overriding at ./configure time is (as I understand it)
|
||||
# supposed to be captured by the AC_{PROG_{,OBJ}CXX,PATH_{PROG,TOOL}} macros,
|
||||
# which will expand the program names to their full absolute paths. The notable
|
||||
# exception is command line overriding: ./configure CC=clang, which skips the
|
||||
# program name expansion step, and works because the user implicitly indicates
|
||||
# with CC=clang that clang will be available in $PATH at all times, and is most
|
||||
# likely part of the user's system.
|
||||
#
|
||||
# Therefore, when we "seed the autoconf cache"/"override well-known program
|
||||
# vars" by setting AR=<blah> in our config.site, either one of two things needs
|
||||
# to be true for the build system to work correctly:
|
||||
#
|
||||
# 1. If we refer to the program by name (e.g. AR=riscv64-gnu-linux-ar), the
|
||||
# tool needs to be available in $PATH at all times.
|
||||
#
|
||||
# 2. If the tool is _**not**_ expected to be available in $PATH at all times
|
||||
# (such as is the case for our native_cctools binutils tools), it needs to
|
||||
# be referred to by its absolute path, such as would be output by the
|
||||
# AC_PATH_{PROG,TOOL} macros.
|
||||
#
|
||||
# Minor note: it is also okay to refer to tools by their absolute path even if
|
||||
# we expect them to be available in $PATH at all times, more specificity does
|
||||
# not hurt.
|
||||
$(host_prefix)/share/config.site : config.site.in $(host_prefix)/.stamp_$(final_build_id)
|
||||
$(AT)@mkdir -p $(@D)
|
||||
$(AT)sed -e 's|@HOST@|$(host)|' \
|
||||
-e 's|@CC@|$(toolchain_path)$(host_CC)|' \
|
||||
-e 's|@CXX@|$(toolchain_path)$(host_CXX)|' \
|
||||
-e 's|@CC@|$(host_CC)|' \
|
||||
-e 's|@CXX@|$(host_CXX)|' \
|
||||
-e 's|@AR@|$(toolchain_path)$(host_AR)|' \
|
||||
-e 's|@RANLIB@|$(toolchain_path)$(host_RANLIB)|' \
|
||||
-e 's|@NM@|$(toolchain_path)$(host_NM)|' \
|
||||
|
|
|
@ -1,3 +1,51 @@
|
|||
### Prerequisites
|
||||
|
||||
The depends system is maintained and tested using Ubuntu Bionic. Both generic
|
||||
apt packages, and packages specific to the target architecture are required to
|
||||
successfully compile all dependencies. Listed packages are tested and known to
|
||||
work.
|
||||
|
||||
#### Generic packages
|
||||
|
||||
```
|
||||
sudo apt-get install autoconf automake binutils-gold ca-certificates curl \
|
||||
faketime git-core libtool pkg-config python bison
|
||||
```
|
||||
|
||||
#### Generic linux: i686-pc-linux-gnu and x86_64-linux-gnu
|
||||
|
||||
```
|
||||
sudo apt-get install g++-7-multilib gcc-7-multilib
|
||||
```
|
||||
|
||||
#### ARM7 32bit: arm-linux-gnueabihf
|
||||
|
||||
```
|
||||
sudo apt-get install g++-arm-linux-gnueabihf g++-7-arm-linux-gnueabihf \
|
||||
gcc-7-arm-linux-gnueabihf binutils-arm-linux-gnueabihf
|
||||
```
|
||||
|
||||
#### ARM 64bit: aarch64-linux-gnu
|
||||
|
||||
```
|
||||
sudo apt-get install g++-aarch64-linux-gnu g++-7-aarch64-linux-gnu \
|
||||
gcc-7-aarch64-linux-gnu binutils-aarch64-linux-gnu
|
||||
```
|
||||
|
||||
#### Windows: i686-w64-mingw32 and x86_64-w64-mingw32
|
||||
|
||||
```
|
||||
sudo apt-get install g++ g++-mingw-w64 mingw-w64 nsis zip
|
||||
```
|
||||
|
||||
#### macOS (Intel): x86_64-apple-darwin11
|
||||
|
||||
```
|
||||
sudo apt-get install g++ cmake imagemagick fonts-tuffy libz-dev libbz2-dev \
|
||||
libcap-dev librsvg2-bin libtiff-tools python python-dev \
|
||||
python-setuptools
|
||||
```
|
||||
|
||||
### Usage
|
||||
|
||||
To build dependencies for the current arch+OS:
|
||||
|
@ -56,4 +104,3 @@ Additional targets:
|
|||
|
||||
- [description.md](description.md): General description of the depends system
|
||||
- [packages.md](packages.md): Steps for adding packages
|
||||
|
||||
|
|
|
@ -2,8 +2,12 @@ OSX_MIN_VERSION=10.8
|
|||
OSX_SDK_VERSION=10.11
|
||||
OSX_SDK=$(SDK_PATH)/MacOSX$(OSX_SDK_VERSION).sdk
|
||||
LD64_VERSION=253.9
|
||||
darwin_CC=clang -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION)
|
||||
darwin_CXX=clang++ -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION) -stdlib=libc++
|
||||
|
||||
clang_prog=$(build_prefix)/bin/clang
|
||||
clangxx_prog=$(clang_prog)++
|
||||
|
||||
darwin_CC=$(build_prefix)/bin/clang -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION)
|
||||
darwin_CXX=$(clang_prog)++ -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION) -stdlib=libc++
|
||||
|
||||
darwin_CFLAGS=-pipe
|
||||
darwin_CXXFLAGS=$(darwin_CFLAGS)
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package=bdb
|
||||
$(package)_version=5.1.29
|
||||
$(package)_version=5.3.28
|
||||
$(package)_download_path=http://download.oracle.com/berkeley-db
|
||||
$(package)_file_name=db-$($(package)_version).NC.tar.gz
|
||||
$(package)_sha256_hash=08238e59736d1aacdd47cfb8e68684c695516c37f4fbe1b8267dde58dc3a576c
|
||||
$(package)_sha256_hash=76a25560d9e52a198d37a31440fd07632b5f1f8f9f2b6d5438f4bc3e7c9013ef
|
||||
$(package)_build_subdir=build_unix
|
||||
|
||||
define $(package)_set_vars
|
||||
|
@ -24,7 +24,7 @@ define $(package)_config_cmds
|
|||
endef
|
||||
|
||||
define $(package)_build_cmds
|
||||
$(MAKE) libdb_cxx-5.1.a libdb-5.1.a
|
||||
$(MAKE) libdb_cxx-5.3.a libdb-5.3.a
|
||||
endef
|
||||
|
||||
define $(package)_stage_cmds
|
||||
|
|
|
@ -5,7 +5,7 @@ $(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
|||
$(package)_sha256_hash=3a3bb2c4e15ffb433f2032f50a5b5a92558206822e22bfe8cbe339af4aa82f88
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_config_opts=--without-zlib --without-png --disable-static
|
||||
$(package)_config_opts=--without-zlib --without-png --without-harfbuzz --without-bzip2 --disable-static
|
||||
$(package)_config_opts_linux=--with-pic
|
||||
endef
|
||||
|
||||
|
|
19
depends/packages/intel-ipsec-mb.mk
Normal file
19
depends/packages/intel-ipsec-mb.mk
Normal file
|
@ -0,0 +1,19 @@
|
|||
package=intel-ipsec-mb
|
||||
$(package)_version=1.0
|
||||
$(package)_download_path=https://github.com/intel/intel-ipsec-mb/archive/refs/tags
|
||||
$(package)_file_name=v$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=03501aea472d3c8fdf8f1f207816eefeaf5e4ebbdc71d88dcb26b2519841bb74
|
||||
$(package)_patches=remove_digest_init.patch
|
||||
$(package)_dependencies=native_nasm
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
patch -p1 < $($(package)_patch_dir)/remove_digest_init.patch
|
||||
endef
|
||||
|
||||
define $(package)_build_cmds
|
||||
$(MAKE) NASM=$(build_prefix)/bin/nasm
|
||||
endef
|
||||
|
||||
define $(package)_stage_cmds
|
||||
$(MAKE) NASM=$(build_prefix)/bin/nasm PREFIX=$($(package)_staging_prefix_dir) SHARED=n NOLDCONFIG=y install
|
||||
endef
|
|
@ -1,15 +1,15 @@
|
|||
package=libevent
|
||||
$(package)_version=2.1.7
|
||||
$(package)_version=2.1.11-stable
|
||||
$(package)_download_path=https://github.com/libevent/libevent/archive/
|
||||
$(package)_file_name=release-$($(package)_version)-rc.tar.gz
|
||||
$(package)_sha256_hash=548362d202e22fe24d4c3fad38287b4f6d683e6c21503341373b89785fa6f991
|
||||
$(package)_file_name=release-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=229393ab2bf0dc94694f21836846b424f3532585bac3468738b7bf752c03901e
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
./autogen.sh
|
||||
endef
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_config_opts=--disable-shared --disable-openssl --disable-libevent-regress
|
||||
$(package)_config_opts=--disable-shared --disable-openssl --disable-libevent-regress --disable-samples
|
||||
$(package)_config_opts_release=--disable-debug-mode
|
||||
$(package)_config_opts_linux=--with-pic
|
||||
endef
|
||||
|
|
31
depends/packages/libxkbcommon.mk
Normal file
31
depends/packages/libxkbcommon.mk
Normal file
|
@ -0,0 +1,31 @@
|
|||
package=libxkbcommon
|
||||
$(package)_version=0.8.4
|
||||
$(package)_download_path=https://xkbcommon.org/download/
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.xz
|
||||
$(package)_sha256_hash=60ddcff932b7fd352752d51a5c4f04f3d0403230a584df9a2e0d5ed87c486c8b
|
||||
$(package)_dependencies=libxcb
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_config_opts = --enable-option-checking --disable-dependency-tracking
|
||||
$(package)_config_opts += --disable-static --disable-docs
|
||||
endef
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub build-aux
|
||||
endef
|
||||
|
||||
define $(package)_config_cmds
|
||||
$($(package)_autoconf)
|
||||
endef
|
||||
|
||||
define $(package)_build_cmds
|
||||
$(MAKE)
|
||||
endef
|
||||
|
||||
define $(package)_stage_cmds
|
||||
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
||||
endef
|
||||
|
||||
define $(package)_postprocess_cmds
|
||||
rm -rf lib/*.la
|
||||
endef
|
|
@ -1,9 +1,8 @@
|
|||
package=native_ds_store
|
||||
$(package)_version=1.1.0
|
||||
$(package)_download_path=https://bitbucket.org/al45tair/ds_store/get
|
||||
$(package)_download_file=v$($(package)_version).tar.bz2
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
||||
$(package)_sha256_hash=921596764d71d1bbd3297a90ef6d286f718794d667e4f81d91d14053525d64c1
|
||||
$(package)_download_path=https://github.com/al45tair/ds_store/archive/
|
||||
$(package)_file_name=v$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=a9f4c0755c6be7224ff7029e188dd262e830bb81e801424841db9eb0780ec8ed
|
||||
$(package)_install_libdir=$(build_prefix)/lib/python/dist-packages
|
||||
$(package)_dependencies=native_biplist
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
package=native_mac_alias
|
||||
$(package)_version=1.1.0
|
||||
$(package)_download_path=https://bitbucket.org/al45tair/mac_alias/get
|
||||
$(package)_download_file=v$($(package)_version).tar.bz2
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
||||
$(package)_sha256_hash=87ad827e66790028361e43fc754f68ed041a9bdb214cca03c853f079b04fb120
|
||||
$(package)_download_path=https://github.com/al45tair/mac_alias/archive/
|
||||
$(package)_download_file=v$($(package)_version).tar.gz
|
||||
$(package)_file_name=mac_alias-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=b10cb44ecb64fc25283fae7a9cf365d2829377d84e37b9c21100aca8757509be
|
||||
$(package)_install_libdir=$(build_prefix)/lib/python/dist-packages
|
||||
$(package)_patches=python3.patch
|
||||
|
||||
|
|
21
depends/packages/native_nasm.mk
Normal file
21
depends/packages/native_nasm.mk
Normal file
|
@ -0,0 +1,21 @@
|
|||
package=native_nasm
|
||||
$(package)_version=2.15.05
|
||||
$(package)_download_path=http://nasm.us/pub/nasm/releasebuilds/$($(package)_version)
|
||||
$(package)_file_name=nasm-$($(package)_version).tar.bz2
|
||||
$(package)_sha256_hash=3c4b8339e5ab54b1bcb2316101f8985a5da50a3f9e504d43fa6f35668bee2fd0
|
||||
|
||||
define $(package)_config_cmds
|
||||
$($(package)_autoconf)
|
||||
endef
|
||||
|
||||
define $(package)_build_cmds
|
||||
$(MAKE)
|
||||
endef
|
||||
|
||||
define $(package)_stage_cmds
|
||||
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
||||
endef
|
||||
|
||||
define $(package)_postprocess_cmds
|
||||
rm -rf share
|
||||
endef
|
|
@ -1,8 +1,10 @@
|
|||
package=openssl
|
||||
$(package)_version=1.0.1l
|
||||
$(package)_download_path=https://www.openssl.org/source
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=b2cf4d48fe5d49f240c61c9e624193a6f232b5ed0baf010681e725963c40d1d4
|
||||
$(package)_version=1.0.2
|
||||
$(package)_version_suffix=u
|
||||
$(package)_download_path=https://www.openssl.org/source/old/$($(package)_version)
|
||||
$(package)_file_name=$(package)-$($(package)_version)$($(package)_version_suffix).tar.gz
|
||||
$(package)_sha256_hash=ecd0c6ffb493dd06707d38b14bb4d8c2288bb7033735606569d8f90f89669d16
|
||||
$(package)_patches=secure_getenv.patch
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_config_env=AR="$($(package)_ar)" RANLIB="$($(package)_ranlib)" CC="$($(package)_cc)"
|
||||
|
@ -57,12 +59,14 @@ $(package)_config_opts_i686_mingw32=mingw
|
|||
endef
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
patch -p1 < $($(package)_patch_dir)/secure_getenv.patch && \
|
||||
sed -i.old "/define DATE/d" util/mkbuildinf.pl && \
|
||||
sed -i.old "s|engines apps test|engines|" Makefile.org
|
||||
endef
|
||||
|
||||
define $(package)_config_cmds
|
||||
./Configure $($(package)_config_opts)
|
||||
./Configure $($(package)_config_opts) && \
|
||||
make depend
|
||||
endef
|
||||
|
||||
define $(package)_build_cmds
|
||||
|
|
|
@ -4,7 +4,7 @@ native_packages := native_ccache
|
|||
qt_native_packages = native_protobuf
|
||||
qt_packages = qrencode protobuf zlib
|
||||
|
||||
qt_x86_64_linux_packages:=qt expat dbus libxcb xcb_proto libXau xproto freetype fontconfig libX11 xextproto libXext xtrans
|
||||
qt_x86_64_linux_packages:=qt expat dbus libxcb xcb_proto libXau xproto freetype fontconfig libX11 xextproto libXext xtrans libxkbcommon
|
||||
qt_i686_linux_packages:=$(qt_x86_64_linux_packages)
|
||||
|
||||
qt_darwin_packages=qt
|
||||
|
@ -14,6 +14,9 @@ wallet_packages=bdb
|
|||
|
||||
upnp_packages=miniupnpc
|
||||
|
||||
avx2_native_packages:=native_nasm
|
||||
avx2_x86_64_linux_packages:=intel-ipsec-mb
|
||||
|
||||
darwin_native_packages = native_biplist native_ds_store native_mac_alias
|
||||
|
||||
ifneq ($(build_os),darwin)
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
PACKAGE=qt
|
||||
$(package)_version=5.7.1
|
||||
$(package)_download_path=http://download.qt.io/official_releases/qt/5.7/$($(package)_version)/submodules
|
||||
$(package)_download_path=http://download.qt.io/new_archive/qt/5.7/$($(package)_version)/submodules
|
||||
$(package)_suffix=opensource-src-$($(package)_version).tar.gz
|
||||
$(package)_file_name=qtbase-$($(package)_suffix)
|
||||
$(package)_sha256_hash=95f83e532d23b3ddbde7973f380ecae1bac13230340557276f75f2e37984e410
|
||||
$(package)_dependencies=openssl zlib
|
||||
$(package)_linux_dependencies=freetype fontconfig libxcb libX11 xproto libXext
|
||||
$(package)_linux_dependencies=freetype fontconfig libxcb libX11 xproto libXext libxkbcommon
|
||||
$(package)_build_subdir=qtbase
|
||||
$(package)_qt_libs=corelib network widgets gui plugins testlib printsupport
|
||||
$(package)_patches=mac-qmake.conf mingw-uuidof.patch pidlist_absolute.patch fix-xcb-include-order.patch fix_qt_pkgconfig.patch
|
||||
|
@ -73,6 +73,7 @@ $(package)_config_opts += -prefix $(host_prefix)
|
|||
$(package)_config_opts += -qt-libpng
|
||||
$(package)_config_opts += -qt-libjpeg
|
||||
$(package)_config_opts += -qt-pcre
|
||||
$(package)_config_opts += -qt-harfbuzz
|
||||
$(package)_config_opts += -system-zlib
|
||||
$(package)_config_opts += -reduce-exports
|
||||
$(package)_config_opts += -static
|
||||
|
@ -89,8 +90,7 @@ $(package)_config_opts_darwin += -device-option MAC_TARGET=$(host)
|
|||
$(package)_config_opts_darwin += -device-option MAC_LD64_VERSION=$(LD64_VERSION)
|
||||
endif
|
||||
|
||||
$(package)_config_opts_linux = -qt-xkbcommon
|
||||
$(package)_config_opts_linux += -qt-xcb
|
||||
$(package)_config_opts_linux = -qt-xcb
|
||||
$(package)_config_opts_linux += -system-freetype
|
||||
$(package)_config_opts_linux += -no-sm
|
||||
$(package)_config_opts_linux += -fontconfig
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
package=zeromq
|
||||
$(package)_version=4.1.5
|
||||
$(package)_download_path=https://github.com/zeromq/zeromq4-1/releases/download/v$($(package)_version)/
|
||||
$(package)_version=4.3.4
|
||||
$(package)_download_path=https://github.com/zeromq/libzmq/releases/download/v$($(package)_version)/
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=04aac57f081ffa3a2ee5ed04887be9e205df3a7ddade0027460b8042432bdbcf
|
||||
$(package)_patches=9114d3957725acd34aa8b8d011585812f3369411.patch 9e6745c12e0b100cd38acecc16ce7db02905e27c.patch
|
||||
$(package)_sha256_hash=c593001a89f5a85dd2ddf564805deb860e02471171b3f204944857336295c3e5
|
||||
$(package)_patches=remove_libstd_link.patch clock-unused-nsecs.patch 0002-disable-pthread_set_name_np.patch
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_config_opts=--without-documentation --disable-shared --without-libsodium --disable-curve
|
||||
|
@ -12,9 +12,10 @@ define $(package)_set_vars
|
|||
endef
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
patch -p1 < $($(package)_patch_dir)/9114d3957725acd34aa8b8d011585812f3369411.patch && \
|
||||
patch -p1 < $($(package)_patch_dir)/9e6745c12e0b100cd38acecc16ce7db02905e27c.patch && \
|
||||
./autogen.sh
|
||||
patch -p1 < $($(package)_patch_dir)/clock-unused-nsecs.patch && \
|
||||
patch -p1 < $($(package)_patch_dir)/remove_libstd_link.patch && \
|
||||
patch -p1 < $($(package)_patch_dir)/0002-disable-pthread_set_name_np.patch && \
|
||||
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub config
|
||||
endef
|
||||
|
||||
define $(package)_config_cmds
|
||||
|
@ -22,7 +23,7 @@ define $(package)_config_cmds
|
|||
endef
|
||||
|
||||
define $(package)_build_cmds
|
||||
$(MAKE) libzmq.la
|
||||
$(MAKE) ./src/libzmq.la
|
||||
endef
|
||||
|
||||
define $(package)_stage_cmds
|
||||
|
@ -30,5 +31,5 @@ define $(package)_stage_cmds
|
|||
endef
|
||||
|
||||
define $(package)_postprocess_cmds
|
||||
rm -rf bin share
|
||||
rm -rf bin share lib/*.la
|
||||
endef
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
These patches are to allow bdb-5.1.29 to compile using clang / c++11 under later MacOSX versions (Sierra+).
|
||||
These patches must be applied to the bdb-5.1.29 source from Oracle, and then compiled, for the Mac client to build.
|
||||
|
||||
Note some of these exist in bdb.mk but we don't want to use the -stdlib=libstd++ flag that's indicated in there on OSX.
|
|
@ -1,38 +0,0 @@
|
|||
--- old-bdb/src/dbinc/atomic.h 2011-10-25 14:39:34.000000000 -0600
|
||||
+++ new-bdb/src/dbinc/atomic.h 2018-06-01 19:59:37.000000000 -0600
|
||||
@@ -70,7 +70,7 @@
|
||||
* These have no memory barriers; the caller must include them when necessary.
|
||||
*/
|
||||
#define atomic_read(p) ((p)->value)
|
||||
-#define atomic_init(p, val) ((p)->value = (val))
|
||||
+#define atomic_init_db(p, val) ((p)->value = (val))
|
||||
|
||||
#ifdef HAVE_ATOMIC_SUPPORT
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
#define atomic_inc(env, p) __atomic_inc(p)
|
||||
#define atomic_dec(env, p) __atomic_dec(p)
|
||||
#define atomic_compare_exchange(env, p, o, n) \
|
||||
- __atomic_compare_exchange((p), (o), (n))
|
||||
+ __atomic_compare_exchange_db((p), (o), (n))
|
||||
static inline int __atomic_inc(db_atomic_t *p)
|
||||
{
|
||||
int temp;
|
||||
@@ -176,7 +176,7 @@
|
||||
* http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
|
||||
* which configure could be changed to use.
|
||||
*/
|
||||
-static inline int __atomic_compare_exchange(
|
||||
+static inline int __atomic_compare_exchange_db(
|
||||
db_atomic_t *p, atomic_value_t oldval, atomic_value_t newval)
|
||||
{
|
||||
atomic_value_t was;
|
||||
@@ -206,7 +206,7 @@
|
||||
#define atomic_dec(env, p) (--(p)->value)
|
||||
#define atomic_compare_exchange(env, p, oldval, newval) \
|
||||
(DB_ASSERT(env, atomic_read(p) == (oldval)), \
|
||||
- atomic_init(p, (newval)), 1)
|
||||
+ atomic_init_db(p, (newval)), 1)
|
||||
#else
|
||||
#define atomic_inc(env, p) __atomic_inc(env, p)
|
||||
#define atomic_dec(env, p) __atomic_dec(env, p)
|
|
@ -1,20 +0,0 @@
|
|||
--- old-bdb/src/mp/mp_fget.c 2011-10-25 14:39:35.000000000 -0600
|
||||
+++ new-bdb/src/mp/mp_fget.c 2018-06-01 20:01:48.000000000 -0600
|
||||
@@ -629,7 +629,7 @@
|
||||
|
||||
/* Initialize enough so we can call __memp_bhfree. */
|
||||
alloc_bhp->flags = 0;
|
||||
- atomic_init(&alloc_bhp->ref, 1);
|
||||
+ atomic_init_db(&alloc_bhp->ref, 1);
|
||||
#ifdef DIAGNOSTIC
|
||||
if ((uintptr_t)alloc_bhp->buf & (sizeof(size_t) - 1)) {
|
||||
__db_errx(env,
|
||||
@@ -931,7 +931,7 @@
|
||||
MVCC_MPROTECT(bhp->buf, mfp->pagesize,
|
||||
PROT_READ);
|
||||
|
||||
- atomic_init(&alloc_bhp->ref, 1);
|
||||
+ atomic_init_db(&alloc_bhp->ref, 1);
|
||||
MUTEX_LOCK(env, alloc_bhp->mtx_buf);
|
||||
alloc_bhp->priority = bhp->priority;
|
||||
alloc_bhp->pgno = bhp->pgno;
|
|
@ -1,20 +0,0 @@
|
|||
--- old-bdb/src/mp/mp_mvcc.c 2011-10-25 14:39:35.000000000 -0600
|
||||
+++ new-bdb/src/mp/mp_mvcc.c 2018-06-01 20:02:45.000000000 -0600
|
||||
@@ -276,7 +276,7 @@
|
||||
#else
|
||||
memcpy(frozen_bhp, bhp, SSZA(BH, buf));
|
||||
#endif
|
||||
- atomic_init(&frozen_bhp->ref, 0);
|
||||
+ atomic_init_db(&frozen_bhp->ref, 0);
|
||||
if (mutex != MUTEX_INVALID)
|
||||
frozen_bhp->mtx_buf = mutex;
|
||||
else if ((ret = __mutex_alloc(env, MTX_MPOOL_BH,
|
||||
@@ -428,7 +428,7 @@
|
||||
#endif
|
||||
alloc_bhp->mtx_buf = mutex;
|
||||
MUTEX_LOCK(env, alloc_bhp->mtx_buf);
|
||||
- atomic_init(&alloc_bhp->ref, 1);
|
||||
+ atomic_init_db(&alloc_bhp->ref, 1);
|
||||
F_CLR(alloc_bhp, BH_FROZEN);
|
||||
}
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
--- old-bdb/src/mp/mp_region.c 2011-10-25 14:39:35.000000000 -0600
|
||||
+++ new-bdb/src/mp/mp_region.c 2018-06-01 20:03:28.000000000 -0600
|
||||
@@ -229,7 +229,7 @@
|
||||
MTX_MPOOL_FILE_BUCKET, 0, &htab[i].mtx_hash)) != 0)
|
||||
return (ret);
|
||||
SH_TAILQ_INIT(&htab[i].hash_bucket);
|
||||
- atomic_init(&htab[i].hash_page_dirty, 0);
|
||||
+ atomic_init_db(&htab[i].hash_page_dirty, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -275,7 +275,7 @@
|
||||
hp->mtx_hash = (mtx_base == MUTEX_INVALID) ? MUTEX_INVALID :
|
||||
mtx_base + (i % dbenv->mp_mtxcount);
|
||||
SH_TAILQ_INIT(&hp->hash_bucket);
|
||||
- atomic_init(&hp->hash_page_dirty, 0);
|
||||
+ atomic_init_db(&hp->hash_page_dirty, 0);
|
||||
#ifdef HAVE_STATISTICS
|
||||
hp->hash_io_wait = 0;
|
||||
hp->hash_frozen = hp->hash_thawed = hp->hash_frozen_freed = 0;
|
|
@ -1,11 +0,0 @@
|
|||
--- old-bdb/src/mutex/mut_method.c 2011-10-25 14:39:35.000000000 -0600
|
||||
+++ new-bdb/src/mutex/mut_method.c 2018-06-01 20:04:05.000000000 -0600
|
||||
@@ -428,7 +428,7 @@
|
||||
MUTEX_LOCK(env, mtx);
|
||||
ret = atomic_read(v) == oldval;
|
||||
if (ret)
|
||||
- atomic_init(v, newval);
|
||||
+ atomic_init_db(v, newval);
|
||||
MUTEX_UNLOCK(env, mtx);
|
||||
|
||||
return (ret);
|
|
@ -1,20 +0,0 @@
|
|||
--- old-bdb/src/mutex/mut_tas.c 2011-10-25 14:39:35.000000000 -0600
|
||||
+++ new-bdb/src/mutex/mut_tas.c 2018-06-01 20:04:25.000000000 -0600
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
#ifdef HAVE_SHARED_LATCHES
|
||||
if (F_ISSET(mutexp, DB_MUTEX_SHARED))
|
||||
- atomic_init(&mutexp->sharecount, 0);
|
||||
+ atomic_init_db(&mutexp->sharecount, 0);
|
||||
else
|
||||
#endif
|
||||
if (MUTEX_INIT(&mutexp->tas)) {
|
||||
@@ -521,7 +521,7 @@
|
||||
F_CLR(mutexp, DB_MUTEX_LOCKED);
|
||||
/* Flush flag update before zeroing count */
|
||||
MEMBAR_EXIT();
|
||||
- atomic_init(&mutexp->sharecount, 0);
|
||||
+ atomic_init_db(&mutexp->sharecount, 0);
|
||||
} else {
|
||||
DB_ASSERT(env, sharecount > 0);
|
||||
MEMBAR_EXIT();
|
13
depends/patches/intel-ipsec-mb/remove_digest_init.patch
Normal file
13
depends/patches/intel-ipsec-mb/remove_digest_init.patch
Normal file
|
@ -0,0 +1,13 @@
|
|||
diff -dur a/lib/include/sha_generic.h b/lib/include/sha_generic.h
|
||||
index 3752546..77efd91 100644
|
||||
--- a/lib/include/sha_generic.h
|
||||
+++ b/lib/include/sha_generic.h
|
||||
@@ -308,7 +308,7 @@ void sha_generic_1block(const void *data, void *digest,
|
||||
if (data == NULL || digest == NULL)
|
||||
return;
|
||||
#endif
|
||||
- sha_generic_init(digest, sha_type);
|
||||
+// sha_generic_init(digest, sha_type);
|
||||
sha_generic_one_block(data, digest, is_avx, sha_type);
|
||||
#ifdef SAFE_DATA
|
||||
clear_scratch_gps();
|
37
depends/patches/openssl/secure_getenv.patch
Normal file
37
depends/patches/openssl/secure_getenv.patch
Normal file
|
@ -0,0 +1,37 @@
|
|||
Solves export of glibc 2.17 secure_getenv because we support down to 2.11
|
||||
|
||||
Patches openssl 1.0.2's usage of secure_getenv from glibc 2.17 to instead
|
||||
always use the fallback OPENSSL_issetugid(), which essentially does the
|
||||
same thing on linux, with the only difference that the glibc version makes
|
||||
decisions on startup, whereas the openssl version does the same check each
|
||||
time the environment is read.
|
||||
|
||||
glibc check: https://sourceware.org/git/?p=glibc.git;a=blob;f=elf/enbl-secure.c;h=9e47526bd3e444e1a19a8ea9fd310b6f47c4db52;hb=HEAD
|
||||
glibc implementation: https://sourceware.org/git/?p=glibc.git;a=blob;f=stdlib/secure-getenv.c;h=a394eebcf794c1279d66e5bcb71d4b15725e6e5a;hb=HEAD
|
||||
|
||||
openssl check: https://github.com/openssl/openssl/blob/OpenSSL_1_0_2u/crypto/uid.c
|
||||
|
||||
This patch can be removed when glibc 2.17 is the minimum version supported
|
||||
|
||||
Author: Patrick Lodder <patricklodder@users.noreply.github.com>
|
||||
|
||||
diff -dur a/crypto/getenv.c b/crypto/getenv.c
|
||||
--- a/crypto/getenv.c 2019-12-20 13:02:41.000000000 +0000
|
||||
+++ b/crypto/getenv.c 2021-09-20 03:02:04.125747397 +0000
|
||||
@@ -16,16 +16,7 @@
|
||||
|
||||
char *ossl_safe_getenv(const char *name)
|
||||
{
|
||||
-#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
|
||||
-# if __GLIBC_PREREQ(2, 17)
|
||||
-# define SECURE_GETENV
|
||||
- return secure_getenv(name);
|
||||
-# endif
|
||||
-#endif
|
||||
-
|
||||
-#ifndef SECURE_GETENV
|
||||
if (OPENSSL_issetugid())
|
||||
return NULL;
|
||||
return getenv(name);
|
||||
-#endif
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
From 6e6b47d5ab381c3df3b30bb0b0a6cf210dfb1eba Mon Sep 17 00:00:00 2001
|
||||
From: Cory Fields <cory-nospam-@coryfields.com>
|
||||
Date: Mon, 5 Mar 2018 14:22:05 -0500
|
||||
Subject: [PATCH] disable pthread_set_name_np
|
||||
|
||||
pthread_set_name_np adds a Glibc requirement on >= 2.12.
|
||||
---
|
||||
src/thread.cpp | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
--- zeromq-4.3.4-orig/src/thread.cpp 2021-01-03 21:46:01.000000000 +0000
|
||||
+++ zeromq-4.3.4/src/thread.cpp 2021-07-01 22:42:49.850117319 +0100
|
||||
@@ -393,6 +393,7 @@
|
||||
return;
|
||||
#endif
|
||||
|
||||
+#if 0
|
||||
#if defined(ZMQ_HAVE_PTHREAD_SETNAME_1)
|
||||
int rc = pthread_setname_np (_name);
|
||||
if (rc)
|
||||
@@ -408,6 +409,8 @@
|
||||
#elif defined(ZMQ_HAVE_PTHREAD_SET_NAME)
|
||||
pthread_set_name_np (pthread_self (), _name);
|
||||
#endif
|
||||
+#endif
|
||||
+ return;
|
||||
}
|
||||
|
||||
#endif
|
|
@ -1,22 +0,0 @@
|
|||
From 9114d3957725acd34aa8b8d011585812f3369411 Mon Sep 17 00:00:00 2001
|
||||
From: Jeroen Ooms <jeroenooms@gmail.com>
|
||||
Date: Tue, 20 Oct 2015 13:10:38 +0200
|
||||
Subject: [PATCH] enable static libraries on mingw
|
||||
|
||||
---
|
||||
configure.ac | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 393505b..e92131a 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -265,7 +265,7 @@ case "${host_os}" in
|
||||
libzmq_dso_visibility="no"
|
||||
|
||||
if test "x$enable_static" = "xyes"; then
|
||||
- AC_MSG_ERROR([Building static libraries is not supported under MinGW32])
|
||||
+ CPPFLAGS="-DZMQ_STATIC"
|
||||
fi
|
||||
|
||||
# Set FD_SETSIZE to 1024
|
|
@ -1,22 +0,0 @@
|
|||
From 9e6745c12e0b100cd38acecc16ce7db02905e27c Mon Sep 17 00:00:00 2001
|
||||
From: David Millard <dmillard10@gmail.com>
|
||||
Date: Tue, 10 May 2016 13:53:53 -0700
|
||||
Subject: [PATCH] Fix autotools for static MinGW builds
|
||||
|
||||
---
|
||||
configure.ac | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 5a0fa14..def6ea7 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -259,7 +259,7 @@ case "${host_os}" in
|
||||
libzmq_dso_visibility="no"
|
||||
|
||||
if test "x$enable_static" = "xyes"; then
|
||||
- CPPFLAGS="-DZMQ_STATIC"
|
||||
+ CPPFLAGS="-DZMQ_STATIC $CPPFLAGS"
|
||||
fi
|
||||
|
||||
# Set FD_SETSIZE to 1024
|
11
depends/patches/zeromq/clock-unused-nsecs.patch
Normal file
11
depends/patches/zeromq/clock-unused-nsecs.patch
Normal file
|
@ -0,0 +1,11 @@
|
|||
diff -dur a/src/clock.cpp b/src/clock.cpp
|
||||
--- a/src/clock.cpp 2021-07-12 21:15:35.111146311 +0000
|
||||
+++ b/src/clock.cpp 2021-07-12 21:22:09.059753013 +0000
|
||||
@@ -194,6 +194,7 @@
|
||||
#else
|
||||
|
||||
// Use POSIX gettimeofday function to get precise time.
|
||||
+ LIBZMQ_UNUSED (nsecs_per_usec);
|
||||
struct timeval tv;
|
||||
int rc = gettimeofday (&tv, NULL);
|
||||
errno_assert (rc == 0);
|
25
depends/patches/zeromq/remove_libstd_link.patch
Normal file
25
depends/patches/zeromq/remove_libstd_link.patch
Normal file
|
@ -0,0 +1,25 @@
|
|||
commit 47d4cd12a2c051815ddda78adebdb3923b260d8a
|
||||
Author: fanquake <fanquake@gmail.com>
|
||||
Date: Tue Aug 18 14:45:40 2020 +0800
|
||||
|
||||
Remove needless linking against libstdc++
|
||||
|
||||
This is broken for a number of reasons, including:
|
||||
- g++ understands "static-libstdc++ -lstdc++" to mean "link against
|
||||
whatever libstdc++ exists, probably shared", which in itself is buggy.
|
||||
- another stdlib (libc++ for example) may be in use
|
||||
|
||||
See #11981.
|
||||
|
||||
diff --git a/src/libzmq.pc.in b/src/libzmq.pc.in
|
||||
index 233bc3a..3c2bf0d 100644
|
||||
--- a/src/libzmq.pc.in
|
||||
+++ b/src/libzmq.pc.in
|
||||
@@ -7,6 +7,6 @@ Name: libzmq
|
||||
Description: 0MQ c++ library
|
||||
Version: @VERSION@
|
||||
Libs: -L${libdir} -lzmq
|
||||
-Libs.private: -lstdc++ @pkg_config_libs_private@
|
||||
+Libs.private: @pkg_config_libs_private@
|
||||
Requires.private: @pkg_config_names_private@
|
||||
Cflags: -I${includedir} @pkg_config_defines@
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
Note that this requires changes made by michilumin on the 1.14-dev branch as well as some changes to BDB.
|
||||
|
||||
Tested on OSX 10.11 El Capitan and 10.13 High Sierra.
|
||||
Tested on OSX 10.11 El Capitan, 10.13 High Sierra and 11.1 Big Sur.
|
||||
|
||||
**Paper wallet printing support seems to work fine through this method as well.**
|
||||
|
||||
|
@ -25,7 +25,7 @@ Make sure frameworks dir is properly owned...
|
|||
$sudo mkdir /usr/local/Frameworks
|
||||
$sudo chown $(whoami):admin /usr/local/Frameworks
|
||||
|
||||
Install Brew.
|
||||
Install Brew. (If you already have Brew installed, perform a 'brew update'.)
|
||||
|
||||
$/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
|
||||
|
||||
|
@ -40,43 +40,37 @@ Install Boost lib via Brew from source, and link it to be sure:
|
|||
$brew install boost --build-from-source --HEAD
|
||||
$brew link boost167
|
||||
|
||||
### Get, Patch And Compile BDB 5.1 ###
|
||||
### Get, Patch And Compile BDB 5.3 ###
|
||||
|
||||
Download bdb 5.1.29 source from Oracle.
|
||||
Download bdb 5.3.28 source from Oracle.
|
||||
|
||||
$curl -o db-5.1.29.tar.gz http://download.oracle.com/berkeley-db/db-5.1.29.tar.gz
|
||||
$tar xvfz db-5.1.29.tar.gz
|
||||
$cd db-5.1.29
|
||||
$curl -o db-5.3.28.tar.gz http://download.oracle.com/berkeley-db/db-5.3.28.tar.gz
|
||||
$tar xvfz db-5.3.28.tar.gz
|
||||
$cd db-5.3.28
|
||||
|
||||
Patch bdb 5.1.29 from our patchfiles
|
||||
|
||||
$cd src
|
||||
$cd dbinc
|
||||
$patch -b atomic.h ~/dogecoin/depends/patches/bdb-5.1.29-clang-osx/atomic.h.patch
|
||||
$cd ..
|
||||
$cd mp
|
||||
$patch -b mp_fget.c ~/dogecoin/depends/patches/bdb-5.1.29-clang-osx/mp_fget.c.patch
|
||||
$patch -b mp_mvcc.c ~/dogecoin/depends/patches/bdb-5.1.29-clang-osx/mp_mvcc.c.patch
|
||||
$patch -b mp_region.c ~/dogecoin/depends/patches/bdb-5.1.29-clang-osx/mp_region.c.patch
|
||||
$cd ..
|
||||
$cd mutex
|
||||
$patch -b mut_method.c ~/dogecoin/depends/patches/bdb-5.1.29-clang-osx/mut_method.c.patch
|
||||
$patch -b mut_tas.c ~/dogecoin/depends/patches/bdb-5.1.29-clang-osx/mut_tas.c.patch
|
||||
|
||||
Build BDB 5.1.29
|
||||
Build BDB 5.3.28
|
||||
|
||||
$cd ../..
|
||||
$cd build_unix
|
||||
$../dist/configure CXX=clang++ --enable-cxx
|
||||
$make
|
||||
$sudo mkdir /usr/local/BerkeleyDB.5.1
|
||||
$sudo chown $(whoami):admin /usr/local/BerkeleyDB.5.1
|
||||
$sudo mkdir /usr/local/BerkeleyDB.5.3
|
||||
$sudo chown $(whoami):admin /usr/local/BerkeleyDB.5.3
|
||||
$sudo make install
|
||||
|
||||
### Set some environment variables and links for bdb and openssl ###
|
||||
|
||||
$export LDFLAGS=-L/usr/local/BerkeleyDB.5.1/lib
|
||||
$export CPPFLAGS=-I/usr/local/BerkeleyDB.5.1/include
|
||||
$export LDFLAGS=-L/usr/local/BerkeleyDB.5.3/lib
|
||||
$export CPPFLAGS=-I/usr/local/BerkeleyDB.5.3/include
|
||||
|
||||
_**NOTE:** for MacOS BigSur (11.1) or later, and possibly Catalina (10.15) you will also have to include the "OBJC_OLD_DISPATCH_PROTOTYPES=1" flag._
|
||||
|
||||
_So in this case you want the above export to be:_
|
||||
|
||||
$export CPPFLAGS="-I/usr/local/BerkeleyDB.5.3/include -DOBJC_OLD_DISPATCH_PROTOTYPES=1"
|
||||
|
||||
_(Note that the quotes are required.)_
|
||||
|
||||
$export INCPATHS=-I/usr/local/opt/openssl/include
|
||||
$export LIBPATHS=-L/usr/local/opt/openssl/lib
|
||||
$cd /usr/local/include
|
||||
|
|
|
@ -51,7 +51,7 @@ PROJECT_BRIEF = "P2P Digital Currency"
|
|||
# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
|
||||
# the logo to the output directory.
|
||||
|
||||
PROJECT_LOGO = doc/bitcoin_logo_doxygen.png
|
||||
PROJECT_LOGO = doc/dogecoin_logo_doxygen.png
|
||||
|
||||
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
|
||||
# into which the generated documentation will be written. If a relative path is
|
||||
|
|
54
doc/FAQ.md
Normal file
54
doc/FAQ.md
Normal file
|
@ -0,0 +1,54 @@
|
|||
## Very Much Frequently Asked Questions ❓
|
||||
|
||||
### How much doge can exist? – So many puppies! 🐕
|
||||
Early 2015 (approximately a year and a half after release) there were
|
||||
approximately 100,000,000,000 coins.
|
||||
Each subsequent block will grant 10,000 coins to encourage miners to continue to
|
||||
secure the network and make up for lost wallets on hard drives/phones/lost
|
||||
encryption passwords/etc.
|
||||
|
||||
|
||||
### Such mining information ⛏
|
||||
|
||||
Dogecoin uses a simplified variant of the scrypt key derivation function as its
|
||||
proof of work with a target time of one minute per block and difficulty
|
||||
readjustment after every block. The block rewards are fixed and halve every
|
||||
100,000 blocks. Starting with the 600,000th block, a permanent reward of
|
||||
10,000 Dogecoin per block will be issued.
|
||||
|
||||
Originally, a different payout scheme was envisioned with block rewards being
|
||||
determined by taking the maximum reward as per the block schedule and applying
|
||||
the result of a Mersenne Twister pseudo-random number generator to arrive at a
|
||||
number between 0 and the maximum reward.
|
||||
|
||||
This was changed starting with block 145,000, to prevent large pools from gaming
|
||||
the system and mining only high reward blocks. At the same time, the difficulty
|
||||
retargeting was also changed from four hours to once per block (every minute),
|
||||
implementing an algorithm courtesy of the DigiByte Coin development team, to
|
||||
lessen the impact of sudden increases and decreases of network hashing rate.
|
||||
|
||||
**The current block reward schedule:**
|
||||
|
||||
| Block | Reward in Dogecoin |
|
||||
| :------------------- | -----------------: |
|
||||
| 1–99,999 | 0–1,000,000 |
|
||||
| 100,000–144,999 | 0–500,000 |
|
||||
| 145,000–199,999 | 250,000 |
|
||||
| 200,000–299,999 | 125,000 |
|
||||
| 300,000–399,999 | 62,500 |
|
||||
| 400,000–499,999 | 31,250 |
|
||||
| 500,000–599,999 | 15,625 |
|
||||
| 600,000+ | 10,000 |
|
||||
|
||||
**The original block reward schedule, with one-minute block targets and
|
||||
four-hour difficulty readjustment:**
|
||||
|
||||
| Block | Reward in Dogecoin |
|
||||
| :------------------- | -----------------: |
|
||||
| 1–99,999 | 0–1,000,000 |
|
||||
| 100,000–199,999 | 0–500,000 |
|
||||
| 200,000–299,999 | 0–250,000 |
|
||||
| 300,000–399,999 | 0–125,000 |
|
||||
| 400,000–499,999 | 0–62,500 |
|
||||
| 500,000–599,999 | 0–31,250 |
|
||||
| 600,000+ | 10,000 |
|
|
@ -1,46 +1,6 @@
|
|||
Dogecoin Core 0.14.2
|
||||
=====================
|
||||
|
||||
Setup
|
||||
---------------------
|
||||
[Dogecoin Core](http://dogecoin.com/) is the reference Dogecoin client and it builds the backbone of the network. However, it downloads and stores the entire history of Bitcoin transactions (which is currently several GBs); depending on the speed of your computer and network connection, the synchronization process can take anywhere from a few hours to a day or more.
|
||||
|
||||
Running
|
||||
---------------------
|
||||
The following are some helpful notes on how to run Dogecoin on your native platform.
|
||||
|
||||
### Unix
|
||||
|
||||
Unpack the files into a directory and run:
|
||||
|
||||
- `bin/dogecoin-qt` (GUI) or
|
||||
- `bin/dogecoind` (headless)
|
||||
|
||||
### Windows
|
||||
|
||||
Unpack the files into a directory, and then run dogecoin-qt.exe.
|
||||
|
||||
### OS X
|
||||
|
||||
Drag Dogecoin-Core to your applications folder, and then run Dogecoin-Core.
|
||||
|
||||
### Need Help?
|
||||
|
||||
* See the documentation at the [Bitcoin Wiki](https://en.bitcoin.it/wiki/Main_Page)
|
||||
for help and more information.
|
||||
* Ask for help on [#dogecoin](http://webchat.freenode.net?channels=dogecoin) on Freenode. If you don't have an IRC client use [webchat here](http://webchat.freenode.net?channels=dogecoin).
|
||||
* Ask for help on the [BitcoinTalk](https://bitcointalk.org/) forums, in the [Dogecoin thread](https://bitcointalk.org/index.php?topic=361813.0).
|
||||
|
||||
Building
|
||||
---------------------
|
||||
The following are developer notes on how to build Dogecoin on your native platform. They are not complete guides, but include notes on the necessary libraries, compile flags, etc.
|
||||
|
||||
- [OS X Build Notes](build-osx.md)
|
||||
- [Unix Build Notes](build-unix.md)
|
||||
- [Windows Build Notes](build-windows.md)
|
||||
- [OpenBSD Build Notes](build-openbsd.md)
|
||||
- [Gitian Building Guide](gitian-building.md)
|
||||
|
||||
Development
|
||||
---------------------
|
||||
The Dogecoin repo's [root README](/README.md) contains relevant information on the development process and automated testing.
|
||||
|
|
|
@ -48,9 +48,9 @@ Other
|
|||
### Assets Used
|
||||
src/qt/res/icons/about.png
|
||||
src/qt/res/icons/about_qt.png,
|
||||
src/qt/res/icons/bitcoin.icns
|
||||
src/qt/res/icons/bitcoin.ico,
|
||||
src/qt/res/icons/bitcoin.png
|
||||
src/qt/res/icons/dogecoin.icns
|
||||
src/qt/res/icons/dogecoin.ico,
|
||||
src/qt/res/icons/dogecoin.png
|
||||
src/qt/res/icons/clock*.png,
|
||||
src/qt/res/icons/connect*.png
|
||||
src/qt/res/icons/eye_minus.png,
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 3.2 KiB |
20
doc/build-archlinux.md
Normal file
20
doc/build-archlinux.md
Normal file
|
@ -0,0 +1,20 @@
|
|||
Arch Linux build guide
|
||||
-----------------------------------
|
||||
|
||||
***NOTE: This documentation is outdated and needs to be updated***
|
||||
|
||||
This example lists the steps necessary to setup and build a command line only, non-wallet distribution of the latest changes on Arch Linux:
|
||||
|
||||
pacman -S git base-devel boost libevent python
|
||||
git clone https://github.com/bitcoin/bitcoin.git
|
||||
cd bitcoin/
|
||||
./autogen.sh
|
||||
./configure --disable-wallet --without-gui --without-miniupnpc
|
||||
make check
|
||||
|
||||
Note:
|
||||
Enabling wallet support requires either compiling against a Berkeley DB newer than 4.8 (package `db`) using `--with-incompatible-bdb`,
|
||||
or building and depending on a local version of Berkeley DB 4.8. The readily available Arch Linux packages are currently built using
|
||||
`--with-incompatible-bdb` according to the [PKGBUILD](https://projects.archlinux.org/svntogit/community.git/tree/bitcoin/trunk/PKGBUILD).
|
||||
As mentioned above, when maintaining portability of the wallet between the standard Dogecoin Core distributions and independently built
|
||||
node software is desired, Berkeley DB 4.8 must be used.
|
20
doc/build-fedora.md
Normal file
20
doc/build-fedora.md
Normal file
|
@ -0,0 +1,20 @@
|
|||
Fedora build dependencies
|
||||
--------------------------
|
||||
|
||||
***NOTE: This documentation is outdated and needs to be updated***
|
||||
|
||||
Build requirements:
|
||||
|
||||
sudo dnf install gcc-c++ libtool make autoconf automake openssl-devel libevent-devel boost-devel libdb4-devel libdb4-cxx-devel
|
||||
|
||||
Optional:
|
||||
|
||||
sudo dnf install miniupnpc-devel
|
||||
|
||||
To build with Qt 5 (recommended) you need the following:
|
||||
|
||||
sudo dnf install qt5-qttools-devel qt5-qtbase-devel protobuf-devel
|
||||
|
||||
libqrencode (optional) can be installed with:
|
||||
|
||||
sudo dnf install qrencode-devel
|
37
doc/build-freebsd.md
Normal file
37
doc/build-freebsd.md
Normal file
|
@ -0,0 +1,37 @@
|
|||
Building on FreeBSD
|
||||
--------------------
|
||||
|
||||
**Last tested with:** 1.14.5-dev (as of 18dbe32)
|
||||
**Tested on:** FreeBSD 11.4
|
||||
|
||||
Clang is installed by default as `cc` compiler, this makes it easier to get
|
||||
started than on other distros. Installing dependencies:
|
||||
|
||||
pkg install autoconf automake libtool pkgconf
|
||||
pkg install boost-libs openssl libevent
|
||||
pkg install gmake
|
||||
|
||||
You need to use GNU make (`gmake`) instead of `make`.
|
||||
(`libressl` instead of `openssl` will also work)
|
||||
|
||||
For the wallet (optional):
|
||||
|
||||
pkg install db5
|
||||
|
||||
As of writing, the default hardening routines will fail on the scrypt code, so
|
||||
currently, no hardened executables can be built, and the `--disable-hardening`
|
||||
flag is needed for successful compilation.
|
||||
|
||||
Then build using:
|
||||
|
||||
```bash
|
||||
./autogen.sh
|
||||
./configure --disable-hardening MAKE="gmake" \
|
||||
CFLAGS="-I/usr/local/include" CXXFLAGS="-I/usr/local/include -I/usr/local/include/db5" \
|
||||
LDFLAGS="-L/usr/local/lib -L/usr/local/lib/db5"
|
||||
gmake
|
||||
```
|
||||
|
||||
*Note on debugging*: The version of `gdb` installed by default is [ancient and considered harmful](https://wiki.freebsd.org/GdbRetirement).
|
||||
It is not suitable for debugging a multi-threaded C++ program, not even for getting backtraces. Please install the package `gdb` and
|
||||
use the versioned gdb command e.g. `gdb7111`.
|
23
doc/build-nixos.md
Normal file
23
doc/build-nixos.md
Normal file
|
@ -0,0 +1,23 @@
|
|||
NixOS build guide
|
||||
------------------------------
|
||||
This guide lists the steps necessary to setup and build a full GUI distribution
|
||||
of the latest changes on NixOS.
|
||||
|
||||
Clone and enter the repo:
|
||||
|
||||
$ git clone https://github.com/dogecoin/dogecoin
|
||||
$ cd dogecoin
|
||||
|
||||
Enter the `nix-shell` environment with all the Dogecoin dependencies present:
|
||||
|
||||
$ nix-shell ./contrib/nixos/shell.nix
|
||||
|
||||
Run the build steps with flags necessary for NixOS:
|
||||
|
||||
$ ./autogen.sh
|
||||
$ ./configure --with-incompatible-bdb --with-boost-libdir="$(nix eval --raw nixpkgs.boost.out)/lib" --with-gui
|
||||
$ make
|
||||
|
||||
Start the GUI!
|
||||
|
||||
$ ./src/qt/dogecoin-qt
|
|
@ -1,5 +1,8 @@
|
|||
OpenBSD build guide
|
||||
======================
|
||||
|
||||
***NOTE: This documentation is outdated and needs to be updated***
|
||||
|
||||
(updated for OpenBSD 6.0)
|
||||
|
||||
This guide describes how to build dogecoind and command-line utilities on OpenBSD.
|
||||
|
|
|
@ -16,8 +16,8 @@ Then install [Homebrew](https://brew.sh).
|
|||
Dependencies
|
||||
----------------------
|
||||
|
||||
brew install automake libtool boost --c++11 miniupnpc openssl pkg-config protobuf --c++11 qt5 libevent
|
||||
brew install berkeley-db # You need to make sure you install a version >= 5.1.29, but as close to 5.1.29 as possible. Check the homebrew docs to find out how to install older versions.
|
||||
brew install automake libtool boost miniupnpc openssl pkg-config protobuf qt5 libevent
|
||||
brew install berkeley-db # You need to make sure you install a version >= 5.3.28, but as close to 5.3.28 as possible. Check the homebrew docs to find out how to install older versions.
|
||||
|
||||
If you want to build the disk image with `make deploy` (.dmg / optional), you need RSVG
|
||||
|
||||
|
|
|
@ -1,35 +1,36 @@
|
|||
UNIX BUILD NOTES
|
||||
====================
|
||||
Some notes on how to build Dogecoin Core in Unix.
|
||||
# Unix Build of Dogecoin Core
|
||||
|
||||
(for OpenBSD specific instructions, see [build-openbsd.md](build-openbsd.md))
|
||||
This installation guide serves as a basis for all UNIX and UNIX-like operating
|
||||
systems. All examples in this guide are illustrated using an Ubuntu/Debian OS,
|
||||
and guides for different OSs can be found in separate documentation, as listed
|
||||
below.
|
||||
|
||||
Note
|
||||
---------------------
|
||||
Always use absolute paths to configure and compile Dogecoin and the dependencies,
|
||||
for example, when specifying the path of the dependency:
|
||||
1. [Install dependencies](#install-dependencies)
|
||||
* [Using packaged dependencies](#using-packaged-dependencies)
|
||||
* [Ubuntu & Debian example](#ubuntu--debian-example)
|
||||
2. [Build steps](#build-steps)
|
||||
3. [Build configuration](#build-configuration)
|
||||
* [Enable Qt GUI](#enable-qt-gui)
|
||||
* [Wallet](#wallet)
|
||||
* [Disable-wallet mode](#disable-wallet-mode)
|
||||
* [Miniupnpc](#miniupnpc)
|
||||
* [Security](#security)
|
||||
* [Memory requirements](#memory-requirements)
|
||||
4. [ARM Cross-compilation](#arm-cross-compilation)
|
||||
5. OS-specific documentation:
|
||||
* [Archlinux](build-archlinux.md)
|
||||
* [Fedora](build-fedora.md)
|
||||
* [FreeBSD](build-freebsd.md)
|
||||
* [NixOs](build-nixos.md)
|
||||
* [OpenBSD](build-openbsd.md)
|
||||
|
||||
../dist/configure --enable-cxx --disable-shared --with-pic --prefix=$BDB_PREFIX
|
||||
## Install dependencies
|
||||
|
||||
Here BDB_PREFIX must be an absolute path - it is defined using $(pwd) which ensures
|
||||
the usage of the absolute path.
|
||||
You must install required dependencies to build a basic Dogecoin daemon, optional dependencies may vary according to your requirements.
|
||||
|
||||
To Build
|
||||
---------------------
|
||||
Wallet is optional to run a node, see [Wallet](#wallet) section to enable them.
|
||||
|
||||
```bash
|
||||
./autogen.sh
|
||||
./configure
|
||||
make
|
||||
make install # optional
|
||||
```
|
||||
|
||||
This will build Dogecoin-Qt as well if the dependencies are met.
|
||||
|
||||
Dependencies
|
||||
---------------------
|
||||
|
||||
These dependencies are required:
|
||||
**Required dependencies :**
|
||||
|
||||
Library | Purpose | Description
|
||||
------------|------------------|----------------------
|
||||
|
@ -37,12 +38,12 @@ These dependencies are required:
|
|||
libboost | Utility | Library for threading, data structures, etc
|
||||
libevent | Networking | OS independent asynchronous networking
|
||||
|
||||
Optional dependencies:
|
||||
**Optional dependencies:**
|
||||
|
||||
Library | Purpose | Description
|
||||
------------|------------------|----------------------
|
||||
miniupnpc | UPnP Support | Firewall-jumping support
|
||||
libdb5.1 | Berkeley DB | Wallet storage (only needed when wallet enabled)
|
||||
libdb5.3 | Berkeley DB | Wallet storage (only needed when wallet enabled)
|
||||
qt | GUI | GUI toolkit (only needed when GUI enabled)
|
||||
protobuf | Payments in GUI | Data interchange format used for payment protocol (only needed when GUI enabled)
|
||||
libqrencode | QR codes in GUI | Optional for generating QR codes (only needed when GUI enabled)
|
||||
|
@ -51,165 +52,127 @@ Optional dependencies:
|
|||
|
||||
For the versions used in the release, see [release-process.md](release-process.md) under *Fetch and build inputs*.
|
||||
|
||||
Memory Requirements
|
||||
--------------------
|
||||
### Using packaged dependencies
|
||||
|
||||
C++ compilers are memory-hungry. It is recommended to have at least 1.5 GB of
|
||||
memory available when compiling Dogecoin Core. On systems with less, gcc can be
|
||||
tuned to conserve memory with additional CXXFLAGS:
|
||||
Dogecoin Core's released binaries are built using the "depends system", which
|
||||
contains exact, tested versions of all dependencies. To create binaries that are
|
||||
using only fully tested dependencies, see the documentation in the
|
||||
[depends directory](../depends/README.md) and the
|
||||
[Release process documentation](release-process.md).
|
||||
|
||||
./configure CXXFLAGS="--param ggc-min-expand=1 --param ggc-min-heapsize=32768"
|
||||
### Ubuntu & Debian example
|
||||
|
||||
Dependency Build Instructions: Ubuntu & Debian
|
||||
----------------------------------------------
|
||||
Build requirements:
|
||||
**Required dependencies** :
|
||||
```bash
|
||||
sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils
|
||||
sudo apt-get install libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev
|
||||
```
|
||||
|
||||
sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils
|
||||
**Optional dependencies** :
|
||||
```bash
|
||||
# Qt (required for dogecoin-qt GUI)
|
||||
sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler libqrencode-dev
|
||||
|
||||
Options when installing required Boost library files:
|
||||
# BerkeleyDB (version 5.3)
|
||||
sudo apt install libdb5.3++-dev libdb5.3++ libdb5.3-dev
|
||||
|
||||
1. On at least Ubuntu 14.04+ and Debian 7+ there are generic names for the
|
||||
individual boost development packages, so the following can be used to only
|
||||
install necessary parts of boost:
|
||||
# ZMQ (provides ZMQ API 4.x)
|
||||
sudo apt-get install libzmq3-dev
|
||||
|
||||
sudo apt-get install libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev
|
||||
# Miniupnpc
|
||||
sudo apt-get install libminiupnpc-dev
|
||||
```
|
||||
|
||||
2. If that doesn't work, you can install all boost development packages with:
|
||||
## Build steps
|
||||
|
||||
sudo apt-get install libboost-all-dev
|
||||
According to installed dependencies, the following steps will compile `dogecoind`, `dogecoin-cli` and `dogecoin-qt`.
|
||||
|
||||
BerkeleyDB is required for the wallet.
|
||||
```bash
|
||||
./autogen.sh
|
||||
./configure
|
||||
make
|
||||
make install # optional
|
||||
```
|
||||
See [Build configuration](#build-configuration) for extra settings.
|
||||
|
||||
sudo apt-get install libdb5.1-dev libdb5.1++-dev
|
||||
## Build configuration
|
||||
|
||||
Note that if you have Berkeley DB 4.8 packages installed (i.e. for other
|
||||
wallet software), they are incompatible with the packages for 5.1. You
|
||||
will have to manually download 5.1 from
|
||||
http://download.oracle.com/berkeley-db/db-5.1.29.NC.tar.gz and compile
|
||||
it, install it to /usr/local where the configure script should locate it
|
||||
automatically.
|
||||
Configurations are done during the `./configure` step. Use `--help` to see all available options.
|
||||
|
||||
#### Enable Qt GUI
|
||||
Create `dogecoin-qt`, the core wallet GUI.
|
||||
```bash
|
||||
./configure --with-gui
|
||||
```
|
||||
|
||||
See the section "Disable-wallet mode" to build Dogecoin Core without wallet.
|
||||
#### Wallet
|
||||
BerkeleyDB is required for wallet functionality and use the `wallet.dat` file.
|
||||
|
||||
Optional (see --with-miniupnpc and --enable-upnp-default):
|
||||
By default, **Dogecoin Core expect BerkeleyDB 5.3**.
|
||||
You can use a different version by specifying `--with-incompatible-bdb` flag.
|
||||
|
||||
sudo apt-get install libminiupnpc-dev
|
||||
If no package is available for your distribution in optional dependencies, you can build BerkeleyDB from source :
|
||||
```bash
|
||||
# Install script for BerkeleyDB 5.3
|
||||
|
||||
ZMQ dependencies (provides ZMQ API 4.x):
|
||||
# BerkeleyDB installation directory
|
||||
BDB_PREFIX=$(pwd)/bdb
|
||||
mkdir $BDB_PREFIX
|
||||
|
||||
sudo apt-get install libzmq3-dev
|
||||
# Fetch the source and verify shasum
|
||||
wget 'http://download.oracle.com/berkeley-db/db-5.3.28.NC.tar.gz'
|
||||
echo '76a25560d9e52a198d37a31440fd07632b5f1f8f9f2b6d5438f4bc3e7c9013efdb-5.3.28.NC.tar.gz' | sha256sum -c
|
||||
|
||||
Dependencies for the GUI: Ubuntu & Debian
|
||||
-----------------------------------------
|
||||
# Extract sources
|
||||
tar -xzvf db-5.3.28.NC.tar.gz
|
||||
cd db-5.3.28.NC/build_unix/
|
||||
|
||||
If you want to build Dogecoin-Qt, make sure that the required packages for Qt development
|
||||
are installed. Either Qt 5 or Qt 4 are necessary to build the GUI.
|
||||
If both Qt 4 and Qt 5 are installed, Qt 5 will be used. Pass `--with-gui=qt4` to configure to choose Qt4.
|
||||
To build without GUI pass `--without-gui`.
|
||||
# Apply patch (see https://gist.github.com/danieldk/5700533)
|
||||
sed -i 's/__atomic_compare_exchange/__atomic_compare_exchange_db/g' ../src/dbinc/atomic.h
|
||||
|
||||
To build with Qt 5 (recommended) you need the following:
|
||||
# Note: Do a static build so that it can be embedded into the executable, instead of having to find a .so at runtime
|
||||
../dist/configure --prefix=$BDB_PREFIX --enable-cxx --disable-shared --with-pic
|
||||
make install
|
||||
```
|
||||
|
||||
sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler
|
||||
Then use `LDFLAGS` and `CPPFLAGS` during configuration to link the database :
|
||||
```bash
|
||||
./configure LDFLAGS="-L${BDB_PREFIX}/lib/" CPPFLAGS="-I${BDB_PREFIX}/include/"
|
||||
```
|
||||
|
||||
Alternatively, to build with Qt 4 you need the following:
|
||||
#### Disable-wallet mode
|
||||
When the intention is to run only a P2P node without a wallet, Dogecoin may be compiled in
|
||||
disable-wallet mode with:
|
||||
|
||||
sudo apt-get install libqt4-dev libprotobuf-dev protobuf-compiler
|
||||
```bash
|
||||
./configure --disable-wallet
|
||||
```
|
||||
|
||||
libqrencode (optional) can be installed with:
|
||||
Mining is also possible in disable-wallet mode, but only using the `getblocktemplate` RPC
|
||||
call, not `getwork`.
|
||||
|
||||
sudo apt-get install libqrencode-dev
|
||||
|
||||
Once these are installed, they will be found by configure and a dogecoin-qt executable will be
|
||||
built by default.
|
||||
|
||||
Dependency Build Instructions: Fedora
|
||||
-------------------------------------
|
||||
Build requirements:
|
||||
|
||||
sudo dnf install gcc-c++ libtool make autoconf automake openssl-devel libevent-devel boost-devel libdb4-devel libdb4-cxx-devel
|
||||
|
||||
Optional:
|
||||
|
||||
sudo dnf install miniupnpc-devel
|
||||
|
||||
To build with Qt 5 (recommended) you need the following:
|
||||
|
||||
sudo dnf install qt5-qttools-devel qt5-qtbase-devel protobuf-devel
|
||||
|
||||
libqrencode (optional) can be installed with:
|
||||
|
||||
sudo dnf install qrencode-devel
|
||||
|
||||
Notes
|
||||
-----
|
||||
The release is built with GCC and then "strip dogecoind" to strip the debug
|
||||
symbols, which reduces the executable size by about 90%.
|
||||
|
||||
|
||||
miniupnpc
|
||||
---------
|
||||
#### Miniupnpc
|
||||
|
||||
[miniupnpc](http://miniupnp.free.fr/) may be used for UPnP port mapping. It can be downloaded from [here](
|
||||
http://miniupnp.tuxfamily.org/files/). UPnP support is compiled in and
|
||||
turned off by default. See the configure options for upnp behavior desired:
|
||||
|
||||
--without-miniupnpc No UPnP support miniupnp not required
|
||||
--disable-upnp-default (the default) UPnP support turned off by default at runtime
|
||||
--enable-upnp-default UPnP support turned on by default at runtime
|
||||
|
||||
|
||||
Berkeley DB
|
||||
-----------
|
||||
It is recommended to use Berkeley DB 5.1. If you have to build it yourself:
|
||||
|
||||
```bash
|
||||
BITCOIN_ROOT=$(pwd)
|
||||
|
||||
# Pick some path to install BDB to, here we create a directory within the dogecoin directory
|
||||
BDB_PREFIX="${BITCOIN_ROOT}/db5"
|
||||
mkdir -p $BDB_PREFIX
|
||||
|
||||
# Fetch the source and verify that it is not tampered with
|
||||
wget 'http://download.oracle.com/berkeley-db/db-5.1.29.NC.tar.gz'
|
||||
echo '08238e59736d1aacdd47cfb8e68684c695516c37f4fbe1b8267dde58dc3a576c db-5.1.29.NC.tar.gz' | sha256sum -c
|
||||
# -> db-5.1.29.NC.tar.gz: OK
|
||||
tar -xzvf db-5.1.29.NC.tar.gz
|
||||
|
||||
# Build the library and install to our prefix
|
||||
cd db-5.1.29.NC/build_unix/
|
||||
# Note: Do a static build so that it can be embedded into the executable, instead of having to find a .so at runtime
|
||||
../dist/configure --enable-cxx --disable-shared --with-pic --prefix=$BDB_PREFIX
|
||||
make install
|
||||
|
||||
# Configure Dogecoin Core to use our own-built instance of BDB
|
||||
cd $BITCOIN_ROOT
|
||||
./autogen.sh
|
||||
./configure LDFLAGS="-L${BDB_PREFIX}/lib/" CPPFLAGS="-I${BDB_PREFIX}/include/" # (other args...)
|
||||
--without-miniupnpc #No UPnP support miniupnp not required
|
||||
--disable-upnp-default #(the default) UPnP support turned off by default at runtime
|
||||
--enable-upnp-default #UPnP support turned on by default at runtime
|
||||
```
|
||||
|
||||
**Note**: You only need Berkeley DB if the wallet is enabled (see the section *Disable-Wallet mode* below).
|
||||
|
||||
Boost
|
||||
-----
|
||||
If you need to build Boost yourself:
|
||||
|
||||
sudo su
|
||||
./bootstrap.sh
|
||||
./bjam install
|
||||
|
||||
|
||||
Security
|
||||
--------
|
||||
#### Security
|
||||
To help make your Dogecoin installation more secure by making certain attacks impossible to
|
||||
exploit even if a vulnerability is found, binaries are hardened by default.
|
||||
This can be disabled with:
|
||||
|
||||
Hardening Flags:
|
||||
|
||||
./configure --enable-hardening
|
||||
./configure --disable-hardening
|
||||
|
||||
```bash
|
||||
./configure --enable-hardening
|
||||
./configure --disable-hardening
|
||||
```
|
||||
|
||||
Hardening enables the following features:
|
||||
|
||||
|
@ -221,16 +184,15 @@ Hardening enables the following features:
|
|||
randomly located as well.
|
||||
|
||||
On an AMD64 processor where a library was not compiled with -fPIC, this will cause an error
|
||||
such as: "relocation R_X86_64_32 against `......' can not be used when making a shared object;"
|
||||
such as: `relocation R_X86_64_32 against '......' can not be used when making a shared object;`
|
||||
|
||||
To test that you have built PIE executable, install scanelf, part of paxutils, and use:
|
||||
|
||||
scanelf -e ./dogecoin
|
||||
`scanelf -e ./dogecoin`
|
||||
|
||||
The output should contain:
|
||||
|
||||
TYPE
|
||||
ET_DYN
|
||||
`TYPE ET_DYN`
|
||||
|
||||
* Non-executable Stack
|
||||
If the stack is executable, trivial stack-based buffer overflow exploits are possible if
|
||||
|
@ -243,101 +205,39 @@ Hardening enables the following features:
|
|||
`scanelf -e ./dogecoin`
|
||||
|
||||
the output should contain:
|
||||
STK/REL/PTL
|
||||
RW- R-- RW-
|
||||
`STK/REL/PTL RW- R-- RW-`
|
||||
|
||||
The STK RW- means that the stack is readable and writeable, but not executable.
|
||||
|
||||
Disable-wallet mode
|
||||
--------------------
|
||||
When the intention is to run only a P2P node without a wallet, Dogecoin may be compiled in
|
||||
disable-wallet mode with:
|
||||
|
||||
./configure --disable-wallet
|
||||
|
||||
In this case there is no dependency on Berkeley DB 4.8.
|
||||
|
||||
Mining is also possible in disable-wallet mode, but only using the `getblocktemplate` RPC
|
||||
call, not `getwork`.
|
||||
|
||||
Additional Configure Flags
|
||||
--------------------------
|
||||
A list of additional configure flags can be displayed with:
|
||||
|
||||
./configure --help
|
||||
The `STK RW-` means that the stack is readable and writeable, but not executable.
|
||||
|
||||
|
||||
Setup and Build Example: Arch Linux
|
||||
-----------------------------------
|
||||
This example lists the steps necessary to setup and build a command line only, non-wallet distribution of the latest changes on Arch Linux:
|
||||
#### Memory Requirements
|
||||
|
||||
pacman -S git base-devel boost libevent python
|
||||
git clone https://github.com/bitcoin/bitcoin.git
|
||||
cd bitcoin/
|
||||
./autogen.sh
|
||||
./configure --disable-wallet --without-gui --without-miniupnpc
|
||||
make check
|
||||
C++ compilers are memory-hungry. It is recommended to have at
|
||||
least 1.5 GB of memory available when compiling Dogecoin Core.
|
||||
On systems with less, gcc can be tuned to conserve memory with additional CXXFLAGS:
|
||||
|
||||
Note:
|
||||
Enabling wallet support requires either compiling against a Berkeley DB newer than 4.8 (package `db`) using `--with-incompatible-bdb`,
|
||||
or building and depending on a local version of Berkeley DB 4.8. The readily available Arch Linux packages are currently built using
|
||||
`--with-incompatible-bdb` according to the [PKGBUILD](https://projects.archlinux.org/svntogit/community.git/tree/bitcoin/trunk/PKGBUILD).
|
||||
As mentioned above, when maintaining portability of the wallet between the standard Dogecoin Core distributions and independently built
|
||||
node software is desired, Berkeley DB 4.8 must be used.
|
||||
```bash
|
||||
./configure CXXFLAGS="--param ggc-min-expand=1 --param ggc-min-heapsize=32768"
|
||||
```
|
||||
|
||||
## ARM Cross-compilation
|
||||
|
||||
ARM Cross-compilation
|
||||
-------------------
|
||||
These steps can be performed on, for example, an Ubuntu VM. The depends system
|
||||
will also work on other Linux distributions, however the commands for
|
||||
installing the toolchain will be different.
|
||||
|
||||
Make sure you install the build requirements mentioned above.
|
||||
Then, install the toolchain and curl:
|
||||
|
||||
sudo apt-get install g++-arm-linux-gnueabihf curl
|
||||
```bash
|
||||
sudo apt-get install g++-arm-linux-gnueabihf curl
|
||||
```
|
||||
|
||||
To build executables for ARM:
|
||||
|
||||
cd depends
|
||||
make HOST=arm-linux-gnueabihf NO_QT=1
|
||||
cd ..
|
||||
./configure --prefix=$PWD/depends/arm-linux-gnueabihf --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++
|
||||
make
|
||||
|
||||
|
||||
```bash
|
||||
cd depends
|
||||
make HOST=arm-linux-gnueabihf NO_QT=1
|
||||
cd ..
|
||||
./configure --prefix=$PWD/depends/arm-linux-gnueabihf --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++
|
||||
make
|
||||
```
|
||||
For further documentation on the depends system see [README.md](../depends/README.md) in the depends directory.
|
||||
|
||||
Building on FreeBSD
|
||||
--------------------
|
||||
|
||||
(Updated as of FreeBSD 11.0)
|
||||
|
||||
Clang is installed by default as `cc` compiler, this makes it easier to get
|
||||
started than on [OpenBSD](build-openbsd.md). Installing dependencies:
|
||||
|
||||
pkg install autoconf automake libtool pkgconf
|
||||
pkg install boost-libs openssl libevent
|
||||
pkg install gmake
|
||||
|
||||
You need to use GNU make (`gmake`) instead of `make`.
|
||||
(`libressl` instead of `openssl` will also work)
|
||||
|
||||
For the wallet (optional):
|
||||
|
||||
pkg install db5
|
||||
|
||||
This will give a warning "configure: WARNING: Found Berkeley DB other
|
||||
than 4.8; wallets opened by this build will not be portable!", but as FreeBSD never
|
||||
had a binary release, this may not matter. If backwards compatibility
|
||||
with 4.8-built Dogecoin Core is needed follow the steps under "Berkeley DB" above.
|
||||
|
||||
Then build using:
|
||||
|
||||
./autogen.sh
|
||||
./configure --with-incompatible-bdb BDB_CFLAGS="-I/usr/local/include/db5" BDB_LIBS="-L/usr/local/lib -ldb_cxx-5"
|
||||
gmake
|
||||
|
||||
*Note on debugging*: The version of `gdb` installed by default is [ancient and considered harmful](https://wiki.freebsd.org/GdbRetirement).
|
||||
It is not suitable for debugging a multi-threaded C++ program, not even for getting backtraces. Please install the package `gdb` and
|
||||
use the versioned gdb command e.g. `gdb7111`.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
WINDOWS BUILD NOTES
|
||||
====================
|
||||
|
||||
Below are some notes on how to build Bitcoin Core for Windows.
|
||||
Below are some notes on how to build Dogecoin Core for Windows.
|
||||
|
||||
Most developers use cross-compilation from Ubuntu to build executables for
|
||||
Windows. This is also used to build the release binaries.
|
||||
|
@ -26,18 +26,15 @@ Windows](https://msdn.microsoft.com/en-us/commandline/wsl/install_guide).
|
|||
|
||||
To get the bash shell, you must first activate the feature in Windows.
|
||||
|
||||
1. Turn on Developer Mode
|
||||
* Open Settings -> Update and Security -> For developers
|
||||
* Select the Developer Mode radio button
|
||||
* Restart if necessary
|
||||
2. Enable the Windows Subsystem for Linux feature
|
||||
* From Start, search for "Turn Windows features on or off" (type 'turn')
|
||||
* Select Windows Subsystem for Linux (beta)
|
||||
* Click OK
|
||||
* Restart if necessary
|
||||
1. Enable the Windows Subsystem for Linux feature
|
||||
* Open the Windows Features dialog (`OptionalFeatures.exe`)
|
||||
* Enable 'Windows Subsystem for Linux'
|
||||
* Click 'OK' and restart if necessary
|
||||
2. Install Ubuntu
|
||||
* Open Microsoft Store and search for "Ubuntu 18.04" or use [this link](https://www.microsoft.com/store/productId/9N9TNGVNDL3Q)
|
||||
* Click Install
|
||||
3. Complete Installation
|
||||
* Open a cmd prompt and type "bash"
|
||||
* Accept the license
|
||||
* Open a cmd prompt and type "Ubuntu1804"
|
||||
* Create a new UNIX user account (this is a separate account from your Windows account)
|
||||
|
||||
After the bash shell is active, you can follow the instructions below, starting
|
||||
|
@ -53,7 +50,13 @@ installing the toolchain will be different.
|
|||
|
||||
First, install the general dependencies:
|
||||
|
||||
sudo apt-get install build-essential libtool autotools-dev automake pkg-config bsdmainutils curl
|
||||
sudo apt update
|
||||
sudo apt upgrade
|
||||
sudo apt-get install build-essential libtool autotools-dev automake pkg-config bsdmainutils curl git
|
||||
|
||||
If you want to build with the wallet and Qt GUI you also want to install the following (this example is under Ubuntu):
|
||||
|
||||
sudo apt-get install libssl-dev libboost-all-dev qt5-default libprotobuf-dev libqrencode4 libdb++-dev libdb-dev miniupnpc
|
||||
|
||||
A host toolchain (`build-essential`) is necessary because some dependency
|
||||
packages (such as `protobuf`) need to build host utilities that are used in the
|
||||
|
@ -63,9 +66,35 @@ build process.
|
|||
|
||||
To build executables for Windows 64-bit, install the following dependencies:
|
||||
|
||||
sudo apt-get install g++-mingw-w64-x86-64 mingw-w64-x86-64-dev
|
||||
sudo apt-get install g++-mingw-w64-x86-64
|
||||
|
||||
Then build using:
|
||||
For Ubuntu 18.04 and 20.04, set the default mingw32 g++ compiler option to posix:
|
||||
|
||||
sudo update-alternatives --config x86_64-w64-mingw32-g++
|
||||
|
||||
...Choose the "posix" (vs 'auto' or 'win32') option, and continue.
|
||||
|
||||
Note that for WSL v1 the Dogecoin Core source path MUST be somewhere in the default mount file system, for
|
||||
example /usr/src/dogecoin, AND not under, for example, /mnt/d/dogecoin.
|
||||
|
||||
If this is not the case the dependency autoconf scripts will fail (silently.)
|
||||
This means you cannot use a directory that is located directly on the host Windows file system to perform the build.
|
||||
|
||||
If using WSL 1, you'll need to turn off WSL Support for Win32 applications temporarily, or you will get ABI errors and format errors for some .o files.
|
||||
|
||||
If using WSL 1 then build using:
|
||||
|
||||
PATH=$(echo "$PATH" | sed -e 's/:\/mnt.*//g') # strip out problematic Windows %PATH% imported var
|
||||
sudo bash -c "echo 0 > /proc/sys/fs/binfmt_misc/status" # Temporarily Disable WSL support for Win32 applications.
|
||||
cd depends
|
||||
make HOST=x86_64-w64-mingw32
|
||||
cd ..
|
||||
./autogen.sh
|
||||
CONFIG_SITE=$PWD/depends/x86_64-w64-mingw32/share/config.site ./configure --prefix=/
|
||||
make
|
||||
sudo bash -c "echo 1 > /proc/sys/fs/binfmt_misc/status" # Re-Enable WSL support for Win32 applications.
|
||||
|
||||
If using WSL 2 then you should be able to build just with:
|
||||
|
||||
cd depends
|
||||
make HOST=x86_64-w64-mingw32
|
||||
|
@ -73,7 +102,7 @@ Then build using:
|
|||
./autogen.sh # not required when building from tarball
|
||||
CONFIG_SITE=$PWD/depends/x86_64-w64-mingw32/share/config.site ./configure --prefix=/
|
||||
make
|
||||
|
||||
|
||||
## Building for 32-bit Windows
|
||||
|
||||
To build executables for Windows 32-bit, install the following dependencies:
|
||||
|
@ -99,6 +128,6 @@ Installation
|
|||
After building using the Windows subsystem it can be useful to copy the compiled
|
||||
executables to a directory on the windows drive in the same directory structure
|
||||
as they appear in the release `.zip` archive. This can be done in the following
|
||||
way. This will install to `c:\workspace\bitcoin`, for example:
|
||||
way. This will install to `c:\workspace\dogecoin`, for example:
|
||||
|
||||
make install DESTDIR=/mnt/c/workspace/bitcoin
|
||||
make install DESTDIR=/mnt/c/workspace/dogecoin
|
||||
|
|
BIN
doc/dogecoin_logo_doxygen.png
Normal file
BIN
doc/dogecoin_logo_doxygen.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
71
doc/fee-recommendation.md
Normal file
71
doc/fee-recommendation.md
Normal file
|
@ -0,0 +1,71 @@
|
|||
Dogecoin Fee Recommendation
|
||||
----------------------------
|
||||
|
||||
_last updated for 1.14.5_
|
||||
|
||||
The Dogecoin chain has a relatively low block interval, 1 megabyte blockspace
|
||||
and aims to provide a cheap means for people to transact. Therefore, the biggest
|
||||
threat to the Dogecoin chain as a whole is spam and in 2014, a transaction fee
|
||||
and dust disincentive were introduced, to combat on-chain spam.
|
||||
|
||||
Dogecoin Core implements a number of defaults into the software that reflect the
|
||||
developers' recommendations towards fees and dust limits, that at the moment of
|
||||
release represent the developers best estimate of how these limits should be
|
||||
parametrized. The recommended defaults, as implemented in the Dogecoin Core
|
||||
wallet, are:
|
||||
|
||||
- **0.01 DOGE per kilobyte** transaction fee
|
||||
- **1.00 DOGE** dust limit (discard threshold)
|
||||
- **0.001 DOGE** replace-by-fee increments
|
||||
|
||||
The wallet rejects transactions that have outputs under the dust limit, and
|
||||
discards change to fee if it falls under this limit.
|
||||
|
||||
Note: The recommended dust limit is expected to be lowered in a follow-up
|
||||
release, once enough miners and relay nodes have adopted newly introduced
|
||||
relay dust limits touched upon below.
|
||||
|
||||
Note: In the past, Dogecoin has enforced a rounding function in the fee
|
||||
mechanism. As of version 1.14.5, this is no longer the case, and fees are
|
||||
calculated over the exact size of a transaction. For example, a 192 byte
|
||||
transaction only has to pay `0.01 / 1000 * 192 = 0.00192` DOGE fee.
|
||||
|
||||
## Miner default inclusion policies
|
||||
|
||||
The default values for miners to include a transaction in a block has been set
|
||||
to exactly the recommended fee of **0.01 DOGE/kB.** Dust limits are defined by
|
||||
the miner's mempool policy, see below.
|
||||
|
||||
## Relay and mempool policies
|
||||
|
||||
The relay and mempool acceptance policies are lower than the recommendations
|
||||
by default, to allow for a margin to change recommendations in the future (or
|
||||
user preference) without the need for an adopted software release in advance.
|
||||
This greatly simplifies future policy recommendations. As historically, most
|
||||
relay nodes do not change these default settings, these often represent an
|
||||
absolute mininum
|
||||
|
||||
### Transaction fee
|
||||
|
||||
The default minimum transaction fee for relay is set at **0.001 DOGE/kB**,
|
||||
exactly one-tenth of the recommended fee. This gives miners and relay operators
|
||||
a 10x downward margin to operate within from a spam management perspective.
|
||||
|
||||
### Dust limits
|
||||
|
||||
The mempool logic implements 2 dust limits, a hard dust limit under which a
|
||||
transactions is considered non-standard and rejected, and a soft dust limit
|
||||
that requires the limit itself to be added to the transaction fee, making the
|
||||
output economically unviable.
|
||||
|
||||
- The hard dust limit is set at **0.001 DOGE** - outputs under this value are
|
||||
invalid and rejected.
|
||||
- The soft dust limit is set at **0.01 DOGE** - sending a transaction with outputs
|
||||
under this value, are required to add 0.01 DOGE for each such output, or else
|
||||
will be considered to have too low fee and be rejected.
|
||||
|
||||
### Replace-by-fee and mempool limiting increments
|
||||
|
||||
The increments used for replace-by-fee and limiting the mempool once it has
|
||||
reached its locally defined maximum size, is by default set at one-tenth of
|
||||
the relay fee, or **0.0001 DOGE**.
|
98
doc/files.md
98
doc/files.md
|
@ -1,31 +1,75 @@
|
|||
# Dogecoin Core file system
|
||||
|
||||
* banlist.dat: stores the IPs/Subnets of banned nodes
|
||||
* dogecoin.conf: contains configuration settings for dogecoind or dogecoin-qt
|
||||
* dogecoind.pid: stores the process id of dogecoind while running
|
||||
* blocks/blk000??.dat: block data (custom, 128 MiB per file); since 0.8.0
|
||||
* blocks/rev000??.dat; block undo data (custom); since 0.8.0 (format changed since pre-0.8)
|
||||
* blocks/index/*; block index (LevelDB); since 0.8.0
|
||||
* chainstate/*; block chain state database (LevelDB); since 0.8.0
|
||||
* database/*: BDB database environment; only used for wallet since 0.8.0
|
||||
* db.log: wallet database log file
|
||||
* debug.log: contains debug information and general logging generated by dogecoind or dogecoin-qt
|
||||
* fee_estimates.dat: stores statistics used to estimate minimum transaction fees and priorities required for confirmation; since 0.10.0
|
||||
* mempool.dat: dump of the mempool's transactions; since 0.14.0.
|
||||
* peers.dat: peer IP address database (custom format); since 0.7.0
|
||||
* wallet.dat: personal wallet (BDB) with keys and transactions
|
||||
* .cookie: session RPC authentication cookie (written at start when cookie authentication is used, deleted on shutdown): since 0.12.0
|
||||
* onion_private_key: cached Tor hidden service private key for `-listenonion`: since 0.12.0
|
||||
**Contents**
|
||||
|
||||
Only used in pre-0.8.0
|
||||
---------------------
|
||||
* blktree/*; block chain index (LevelDB); since pre-0.8, replaced by blocks/index/* in 0.8.0
|
||||
* coins/*; unspent transaction output database (LevelDB); since pre-0.8, replaced by chainstate/* in 0.8.0
|
||||
- [Data directory location](#data-directory-location)
|
||||
- [Data directory layout](#data-directory-layout)
|
||||
- [GUI settings](#gui-settings)
|
||||
- [Legacy subdirectories and files](#legacy-subdirectories-and-files)
|
||||
- [Notes](#notes)
|
||||
|
||||
Only used before 0.8.0
|
||||
---------------------
|
||||
* blkindex.dat: block chain index database (BDB); replaced by {chainstate/*,blocks/index/*,blocks/rev000??.dat} in 0.8.0
|
||||
* blk000?.dat: block data (custom, 2 GiB per file); replaced by blocks/blk000??.dat in 0.8.0
|
||||
## Data directory location
|
||||
|
||||
Only used before 0.7.0
|
||||
---------------------
|
||||
* addr.dat: peer IP address database (BDB); replaced by peers.dat in 0.7.0
|
||||
The data directory is the default location where the Dogecoin Core files are stored.
|
||||
|
||||
1. The default data directory paths for supported platforms are:
|
||||
|
||||
Platform | Data directory path
|
||||
---------|--------------------
|
||||
Linux | `$HOME/.dogecoin/`
|
||||
macOS | `$HOME/Library/Application Support/Dogecoin/`
|
||||
Windows | `%APPDATA%\Dogecoin\` <sup>[\[1\]](#note1)</sup>
|
||||
|
||||
2. A custom data directory path can be specified with the `-datadir` option.
|
||||
|
||||
3. All content of the data directory, except for the `dogecoin.conf` file, is chain-specific. This means the actual data directory paths for non-mainnet cases differ:
|
||||
|
||||
Chain | Data directory path
|
||||
--------------|------------------------------
|
||||
(default) | *path_to_datadir*`/`
|
||||
`-testnet` | *path_to_datadir*`/testnet3/`
|
||||
`-regtest` | *path_to_datadir*`/regtest/`
|
||||
|
||||
## Data directory layout
|
||||
|
||||
Subdirectory | File(s) | Description
|
||||
-------------------|-----------------------|------------
|
||||
`blocks/` | | Blocks directory
|
||||
`blocks/index/` | LevelDB database | Block and transaction indices
|
||||
`blocks/` | `blkNNNNN.dat` | Actual blocks (in network format, dumped in raw on disk, 128 MiB per file)
|
||||
`blocks/` | `revNNNNN.dat` | Block undo data (custom format)
|
||||
`chainstate/` | LevelDB database | Blockchain state, a.k.a UTXO database
|
||||
`./` | `anchors.dat` | Anchor IP address database, created on shutdown and deleted at startup. Anchors are last known outgoing block-relay-only peers that are tried to re-connect to on startup
|
||||
`./` | `banlist.dat` | Stores the IPs/subnets of banned nodes
|
||||
`./` | `dogecoin.conf` | User-defined configuration settings for `dogecoind` or `dogecoin-qt`; can be specified by `-conf` option
|
||||
`./` | `dogecoind.pid` | Stores the process ID (PID) of `dogecoind` or `dogecoin-qt` while running; can be specified by `-pid` option
|
||||
`./` | `debug.log` | Contains debug information and general logging generated by `dogecoind` or `dogecoin-qt`
|
||||
`./` | `fee_estimates.dat` | Stores statistics used to estimate smart transaction fees and priorities required for confirmation
|
||||
`./` | `mempool.dat` | Dump of the mempool's transactions
|
||||
`./` | `onion_private_key` | Cached Tor onion service private key for `-listenonion` option
|
||||
`./` | `peers.dat` | Peer IP address database
|
||||
`./` | `.cookie` | Session RPC authentication cookie; if used, created at start and deleted on shutdown; can be specified by `-rpccookiefile` option
|
||||
`./` | `.lock` | Data directory lock file
|
||||
`./` | `db.log` | BDB error file
|
||||
`./` | `wallet.dat` | Personal wallet (a BDB database) with keys and transactions
|
||||
`./` | `.walletlock` | BDB wallet lock file
|
||||
|
||||
## GUI settings
|
||||
|
||||
`dogecoin-qt` uses the [`QSettings`](https://doc.qt.io/qt-5/qsettings.html) class; this implies platform-specific [locations where application settings are stored](https://doc.qt.io/qt-5/qsettings.html#locations-where-application-settings-are-stored).
|
||||
|
||||
## Legacy subdirectories and files
|
||||
|
||||
These subdirectories and files are no longer used by Dogecoin Core:
|
||||
|
||||
Path | Description
|
||||
---------------|-------------
|
||||
`blktree/` | Blockchain index; replaced by `blocks/index/` in 1.10.0
|
||||
`coins/` | Unspent transaction output database; replaced by `chainstate/` in 1.10.0
|
||||
`blkindex.dat` | Blockchain index BDB database; replaced by {`chainstate/`, `blocks/index/`, `blocks/revNNNNN.dat`} in 1.10.0
|
||||
`blk000?.dat` | Block data (custom format, 2 GiB per file); replaced by `blocks/blkNNNNN.dat` in 1.10.0
|
||||
`addr.dat` | Peer IP address BDB database; replaced by `peers.dat` in 1.7.0
|
||||
|
||||
## Notes
|
||||
|
||||
<a name="note1">1</a>. The `/` (slash, U+002F) is used as the platform-independent path component separator in this document.
|
||||
|
|
386
doc/getting-started.md
Normal file
386
doc/getting-started.md
Normal file
|
@ -0,0 +1,386 @@
|
|||
## Getting started
|
||||
|
||||
This tutorial will help you to go through the basics to use Dogecoin Core after you completed the [installation instructions](/INSTALL.md). You now have `dogecoind` or `dogecoin-qt` executables available to run a node, and `dogecoin-cli`/`dogecoin-tx` tools to help you transact DOGE.
|
||||
|
||||
> **Note:** For simplicity, this guide assumes that executables can be found under the `PATH` environment variable.
|
||||
If needed, you can specify their location by typing `PATH=$PATH:/path/to/executables`, or prepend the full path to the command like:
|
||||
> ```console
|
||||
> shibetoshi:~$ /path/to/dogecoin-cli [arguments ...]
|
||||
> ```
|
||||
|
||||
### Table of contents
|
||||
|
||||
1. [Starting a dogecoin node](#starting-a-dogecoin-node)
|
||||
2. [Introduction to the JSON-RPC API](#introduction-to-the-json-rpc-api)
|
||||
* [Creating a wallet](#creating-a-wallet)
|
||||
* [Verifying your balance](#verifying-your-balance)
|
||||
* [Sending transactions](#sending-transactions)
|
||||
* [Inspecting blocks and transactions](#inspecting-blocks-and-transactions)
|
||||
3. [Node configuration](#node-configuration)
|
||||
* [Mainnet, testnet and regtest](#mainnet-testnet-and-regtest)
|
||||
* [Data directory](#data-directory)
|
||||
* [RPC credentials](#rpc-credentials)
|
||||
* [Ports](#ports)
|
||||
* [Memory](#memory)
|
||||
* [Troubleshooting](#troubleshooting)
|
||||
|
||||
## Starting a Dogecoin node
|
||||
|
||||
To start your node, you can run an headless server using `dogecoind`:
|
||||
```console
|
||||
shibetoshi:~$ dogecoind -daemon
|
||||
```
|
||||
|
||||
Or you can use the Graphical User Interface (GUI), `dogecoin-qt`:
|
||||
```console
|
||||
shibetoshi:~$ dogecoin-qt
|
||||
```
|
||||
|
||||
Detailed logging is recorded in `debug.log`, located in the [data directory](#data-directory).
|
||||
*Use `-help` to see all available options for each executable.*
|
||||
|
||||
Your node is now running and starts with a *synchronization process* that downloads the entire blockchain from other nodes. This operation will take many hours to complete, but you are now part of the Dogecoin network!
|
||||
|
||||
> **Note:** The rest of this guide assumes the use of an headless node. The RPC server is not exposed with `dogecoin-qt` until you activate the `-server` option as a startup argument, but inside the GUI application, you can use all the commands explored below (without `dogecoin-cli`) by going to `Help -> Debug window` and inside the popup window selecting the tab `Console`.
|
||||
|
||||
## Introduction to the JSON-RPC API
|
||||
|
||||
Dogecoin Core exposes a JSON-RPC interface that allows you to request information about the network, blockchain and individual transactions, send transactions to the networks and manage your wallet.
|
||||
|
||||
The Dogecoin Core installation provides the `dogecoin-cli` tool to interact with the JSON-RPC from the command line, and the interface is exposed over HTTP on port `22555`, so that other tools and libraries can interact with it.
|
||||
|
||||
To have an overview of the available commands, use the `help` command:
|
||||
|
||||
```console
|
||||
#List all commands
|
||||
shibetoshi:~$ dogecoin-cli help
|
||||
|
||||
#Get help for a specific command
|
||||
shibetoshi:~$ dogecoin-cli help COMMAND
|
||||
```
|
||||
|
||||
Some commands are different, but it's possible to use the [bitcoin RPC API documentation](https://developer.bitcoin.org/reference/rpc/).
|
||||
|
||||
### Creating a wallet
|
||||
|
||||
To receive DOGE, you need an address that is securely derived from a private key through a series of automatic, cryptographic operations. The *address* can be shared with anyone to receive DOGE, but the *private key* is sensitive information that allows anyone that knows it to spend the DOGE on the associated address.
|
||||
|
||||
By default, the Dogecoin Core software will automatically create an address for you and securely store the private key in the wallet file.
|
||||
|
||||
You can list wallet addresses using `getaddressesbyaccount`:
|
||||
|
||||
```console
|
||||
shibetoshi:~$ dogecoin-cli getaddressesbyaccount ""
|
||||
[
|
||||
"DA2fBazU8Y4epNJ2fQRZCcWpxKZY9HrhLN"
|
||||
]
|
||||
```
|
||||
|
||||
Using `getnewaddress` will generate a new wallet address:
|
||||
```console
|
||||
shibetoshi:~$ dogecoin-cli getnewaddress
|
||||
DNnGtXk9khadE7EKCmQzxjnehenX92PKAv
|
||||
```
|
||||
|
||||
Private keys are stored in the `wallet.dat` file. You can use `backupwallet` to save a copy:
|
||||
|
||||
```console
|
||||
shibetoshi:~$ dogecoin-cli backupwallet /path/of/wallet/backup
|
||||
```
|
||||
|
||||
**Tip:** Dogecoin addresses start with the letter `D`.
|
||||
|
||||
You now have two wallet addresses to share with other people to receive DOGE! Consider avoiding [address reuse](https://en.bitcoin.it/wiki/Address_reuse) for anonymity and security reasons.
|
||||
|
||||
### Verifying your balance
|
||||
|
||||
The total balance of all addresses held in your wallet can be found with the `getbalance` command.
|
||||
|
||||
```console
|
||||
#Syntax
|
||||
shibetoshi:~$ dogecoin-cli getbalance "*" minconf
|
||||
```
|
||||
|
||||
`minconf` stands for minimum confirmations.
|
||||
For example, to see current balance with transaction having at least 5 confirmations:
|
||||
|
||||
```console
|
||||
shibetoshi:~$ dogecoin-cli getbalance "*" 5
|
||||
421.552000
|
||||
```
|
||||
|
||||
### Sending transactions
|
||||
|
||||
Dogecoin implements the [Unspent Transaction Output (UTXO)](https://en.wikipedia.org/wiki/Unspent_transaction_output) model to track which amounts of coin belong to an address. Owning DOGE means that you know the private key(s) to addresses that are associated with unspent outputs. To spend them, you have to compose a new transaction that spends the value from currently unspent outputs to new outputs.
|
||||
|
||||
##### sendtoaddress
|
||||
|
||||
It's possible to use a single command to create, sign and send a transaction :
|
||||
```console
|
||||
#Syntax
|
||||
shibetoshi:~$ dogecoin-cli sendtoaddress address amount
|
||||
|
||||
#Example
|
||||
shibetoshi:~$ dogecoin-cli sendtoaddress nWSYUqtimF7B6qW4GBdczaG6jvqKutS1Nh 420
|
||||
```
|
||||
|
||||
So much spending power !
|
||||
|
||||
Alternatively, four commands are needed to manually create a transaction: `listunspent`, `createrawtransaction`, `signrawtransaction` and `sendrawtransaction`.
|
||||
|
||||
##### listunspent
|
||||
|
||||
This displays a list of UTXOs associated to addresses kept in the wallet.
|
||||
|
||||
```console
|
||||
#Syntax
|
||||
shibetoshi:~$ dogecoin-cli listunspent minconf maxconf '["address", ...]'
|
||||
|
||||
#Example
|
||||
shibetoshi:~$ dogecoin-cli listunspent 1 9999999 '["nnJDY1xCRgWQc7vBXHUPMPsEynuZW23Y3P"]'
|
||||
[
|
||||
{
|
||||
"txid": "b869ed6606d52e6446dc12db02cf868ab693dd5b9f661116269536f0f8fa2433",
|
||||
"vout": 0,
|
||||
"address": "nnJDY1xCRgWQc7vBXHUPMPsEynuZW23Y3P",
|
||||
"account": "",
|
||||
"scriptPubKey": "76a914c6977da37560e1432c2e14e16952981a4c272cac88ac",
|
||||
"amount": 100.00000000,
|
||||
"confirmations": 1355,
|
||||
"spendable": true,
|
||||
"solvable": true
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
The `minconf` and `maxconf` parameters filter the minimum and maximum number of [confirmations](https://www.pcmag.com/encyclopedia/term/bitcoin-confirmation) of the UTXO returned.
|
||||
|
||||
> **Note:** The example address starts with `n` instead of `D`, because it uses [testnet](#mainnet-testnet-and-regtest).
|
||||
|
||||
##### createrawtransaction
|
||||
|
||||
You can now build a new transaction using the available UTXOs from above.
|
||||
|
||||
```console
|
||||
#Syntax
|
||||
shibetoshi:~$ utxos_to_use='
|
||||
[
|
||||
{
|
||||
"txid": "id",
|
||||
"vout": n
|
||||
},
|
||||
...
|
||||
]'
|
||||
shibetoshi:~$ dogecoin-cli createrawtransaction "$utxos_to_use" '{"address":amount, ...}'
|
||||
|
||||
#Example
|
||||
shibetoshi:~$ utxos_to_use='
|
||||
[
|
||||
{
|
||||
"txid": "b869ed6606d52e6446dc12db02cf868ab693dd5b9f661116269536f0f8fa2433",
|
||||
"vout": 0
|
||||
}
|
||||
]'
|
||||
shibetoshi:~$ dogecoin-cli createrawtransaction "$utxos_to_use" '{"nWSYUqtimF7B6qW4GBdczaG6jvqKutS1Nh":69, "nnJDY1xCRgWQc7vBXHUPMPsEynuZW23Y3P": 30.999}'
|
||||
01000000013324faf8f03695261611669f5bdd93b68a86cf02db12dc46642ed50666ed69b80000000000ffffffff0200a5459b010000001976a91418a89ee36293f15c4db4c01173babd579243161188ac60b8c4b8000000001976a914c6977da37560e1432c2e14e16952981a4c272cac88ac00000000
|
||||
```
|
||||
|
||||
You can combine multiple UTXO and send it to multiple recipients by extending the `utxos_to_use` and recipient JSON structures.
|
||||
|
||||
> **Tip:** The transaction returned is encoded in hexadecimal encoding. You can use `dogecoin-cli decoderawtransaction` or `dogecoin-tx -json` to convert the content to JSON format.
|
||||
|
||||
##### signrawtransaction
|
||||
|
||||
Before sending a transaction, it must be signed by the private key that the address was derived from. Dogecoin Core will automatically use the correct private key when spending UTXO known to the wallet.
|
||||
|
||||
```console
|
||||
#Syntax
|
||||
shibetoshi:~$ dogecoin-cli signrawtransaction encoded_transaction
|
||||
|
||||
#Example
|
||||
shibetoshi:~$ dogecoin-cli signrawtransaction "01000000013324faf8f03695261611669f5bdd93b68a86cf02db12dc46642ed50666ed69b80000000000ffffffff0200a5459b010000001976a91418a89ee36293f15c4db4c01173babd579243161188ac60b8c4b8000000001976a914c6977da37560e1432c2e14e16952981a4c272cac88ac00000000"
|
||||
{
|
||||
"hex": "01000000013324faf8f03695261611669f5bdd93b68a86cf02db12dc46642ed50666ed69b8000000006a47304402200e1bf722d4335179de170f7c762755b463b3f7b8f026f30950f701bc834f0e6e022036295fdd5e607ca41c4e0e62e59d0911b607bfabedde2424665ffae13564d0e001210388f8f226d12eccd3ba93c1454ec4498b065cea96e29b918fbdb517872ebbf581ffffffff0200a5459b010000001976a91418a89ee36293f15c4db4c01173babd579243161188ac60b8c4b8000000001976a914c6977da37560e1432c2e14e16952981a4c272cac88ac00000000",
|
||||
"complete": true
|
||||
}
|
||||
```
|
||||
|
||||
##### sendrawtransaction
|
||||
|
||||
Finally, broadcast the transaction to the network so that it can be included in a block by miners:
|
||||
|
||||
```console
|
||||
#Syntax
|
||||
shibetoshi:~$ dogecoin-cli sendrawtransaction signed_transaction
|
||||
|
||||
#Example
|
||||
shibetoshi:~$ dogecoin-cli sendrawtransaction 01000000013324faf8f03695261611669f5bdd93b68a86cf02db12dc46642ed50666ed69b8000000006a47304402200e1bf722d4335179de170f7c762755b463b3f7b8f026f30950f701bc834f0e6e022036295fdd5e607ca41c4e0e62e59d0911b607bfabedde2424665ffae13564d0e001210388f8f226d12eccd3ba93c1454ec4498b065cea96e29b918fbdb517872ebbf581ffffffff0200a5459b010000001976a91418a89ee36293f15c4db4c01173babd579243161188ac60b8c4b8000000001976a914c6977da37560e1432c2e14e16952981a4c272cac88ac00000000
|
||||
b4fae2a43cb35f8016a547e9658e061f1da4a043efafecc42f739d46d95dee21
|
||||
```
|
||||
|
||||
### Inspecting blocks and transactions
|
||||
|
||||
Blocks and transactions are identified by unique *hashes*.
|
||||
Let's find the *[coinbase transaction](https://www.javatpoint.com/coinbase-transaction)* of block 69.
|
||||
|
||||
> **Note:** To be able to query transactions not related to your own wallet, like in this example, you will need to enable the `-txindex` option. This options requires the Dogecoin Core software to re-index the entire blockchain, and can take up to several hours.
|
||||
|
||||
First, request the information about block 69:
|
||||
|
||||
```console
|
||||
#Find block hash from his height
|
||||
shibetoshi:~$ dogecoin-cli getblockhash 69
|
||||
3d2def20cd0d3aca148741ef469bda11647a3040d7669c82745d03c728706a8b
|
||||
|
||||
#Get block data
|
||||
shibetoshi:~$ dogecoin-cli getblock 3d2def20cd0d3aca148741ef469bda11647a3040d7669c82745d03c728706a8b
|
||||
{
|
||||
"hash": "3d2def20cd0d3aca148741ef469bda11647a3040d7669c82745d03c728706a8b",
|
||||
"confirmations": 7816,
|
||||
"strippedsize": 190,
|
||||
"size": 190,
|
||||
"weight": 760,
|
||||
"height": 69,
|
||||
"version": 1,
|
||||
"versionHex": "00000001",
|
||||
"merkleroot": "695ce4208fa7a87ef9e99805b0910dc129058ecdceb5cef7e25f71dcdc7936db",
|
||||
"tx": [
|
||||
"695ce4208fa7a87ef9e99805b0910dc129058ecdceb5cef7e25f71dcdc7936db"
|
||||
],
|
||||
"time": 1386475225,
|
||||
"mediantime": 1386475209,
|
||||
"nonce": 3923708672,
|
||||
"bits": "1e0ffff0",
|
||||
"difficulty": 0.000244140625,
|
||||
"chainwork": "0000000000000000000000000000000000000000000000000000000004600460",
|
||||
"previousblockhash": "ffa69e04f928b84f19d84da25fb544340e54dca6c03c33930da245719e61c5ea",
|
||||
"nextblockhash": "44bf8abbbb96d4dcfb95df563e606c37987133ea3e013b23bbddde8d7f905fdd"
|
||||
}
|
||||
```
|
||||
|
||||
The `tx` field contains a list of all transactions included in this block. Only one transaction exist in block 69, the coinbase transaction.
|
||||
|
||||
We can see the entire transaction by querying for its identifier:
|
||||
|
||||
```console
|
||||
#Syntax
|
||||
shibetoshi:~$ dogecoin-cli getrawtransaction txid verbose
|
||||
|
||||
#Example
|
||||
shibetoshi:~$ dogecoin-cli getrawtransaction 695ce4208fa7a87ef9e99805b0910dc129058ecdceb5cef7e25f71dcdc7936db 1
|
||||
{
|
||||
"hex": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e04d9eea3520101062f503253482fffffffff0100ac6156be23000023210340a42a5ad6c4c0cd5ae539657032e0a359bd3e0f95771f34d71691b13460a624ac00000000",
|
||||
"txid": "695ce4208fa7a87ef9e99805b0910dc129058ecdceb5cef7e25f71dcdc7936db",
|
||||
"hash": "695ce4208fa7a87ef9e99805b0910dc129058ecdceb5cef7e25f71dcdc7936db",
|
||||
"size": 109,
|
||||
"vsize": 109,
|
||||
"version": 1,
|
||||
"locktime": 0,
|
||||
"vin": [
|
||||
{
|
||||
"coinbase": "04d9eea3520101062f503253482f",
|
||||
"sequence": 4294967295
|
||||
}
|
||||
],
|
||||
"vout": [
|
||||
{
|
||||
"value": 393004.00000000,
|
||||
"n": 0,
|
||||
"scriptPubKey": {
|
||||
"asm": "0340a42a5ad6c4c0cd5ae539657032e0a359bd3e0f95771f34d71691b13460a624 OP_CHECKSIG",
|
||||
"hex": "210340a42a5ad6c4c0cd5ae539657032e0a359bd3e0f95771f34d71691b13460a624ac",
|
||||
"reqSigs": 1,
|
||||
"type": "pubkey",
|
||||
"addresses": [
|
||||
"D5TjotnkoXekNQBCn54CBWxjEzCJMMe7WS"
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"blockhash": "3d2def20cd0d3aca148741ef469bda11647a3040d7669c82745d03c728706a8b",
|
||||
"confirmations": 3964556,
|
||||
"time": 1386475225,
|
||||
"blocktime": 1386475225
|
||||
}
|
||||
```
|
||||
|
||||
The `vout` structure will give you information about where the transaction output.
|
||||
|
||||
## Node configuration
|
||||
|
||||
There are many parameters that can be configured to tune your node to your liking. There are two ways to change the configuration.
|
||||
|
||||
Using `dogecoind -help` will display all available configuration parameters that can be added as arguments:
|
||||
|
||||
**Command example :**
|
||||
```console
|
||||
shibetoshi:~$ dogecoind -daemon -paytxfee=0.01 -sendfreetransactions=1 -maxconnections=150
|
||||
```
|
||||
|
||||
Configuration can be persisted by creating a `dogecoin.conf` file. Create it in the directory defined with the `datadir` setting, `$HOME/.dogecoin` by default, or specify the file location with `-conf`.
|
||||
|
||||
**dogecoin.conf example :**
|
||||
```
|
||||
daemon=1
|
||||
server=1
|
||||
listen=1
|
||||
paytxfee=0.01
|
||||
sendfreetransactions=1
|
||||
maxconnections=150
|
||||
```
|
||||
You can see a more concrete example [here](/contrib/debian/examples/dogecoin.conf).
|
||||
|
||||
### Mainnet, testnet and regtest
|
||||
|
||||
When trying out new things, for example to test your application that interacts with the Dogecoin chain, it is recommended to not use the main Dogecoin network. Multiple networks are built-in for this purpose.
|
||||
|
||||
**Mainnet** : The main network where real transaction operate.
|
||||
**Testnet** : The test network, with peers.
|
||||
**Regtest** : The regression test network, to test with only local peers and create blocks on-demand.
|
||||
|
||||
When not specifying any network, *Mainnet* is the network used by default. To enable *testnet*, use the `dogecoind -testnet`.
|
||||
|
||||
To enable *regtest*, use the `-regtest` option.
|
||||
|
||||
> **Tip:** Remember to specify the network when you want to use `dogecoin-cli`.
|
||||
|
||||
### Data directory
|
||||
|
||||
The data directory is the location where Dogecoin Core files are stored, including the wallet, log files and blocks. You can modify the location with the `-datadir` setting.
|
||||
|
||||
**Default location :**
|
||||
|
||||
Platform | Data directory path
|
||||
---------|--------------------
|
||||
Linux | `$HOME/.dogecoin`
|
||||
macOS | `$HOME/Library/Application Support/Dogecoin`
|
||||
Windows | `%APPDATA%\Dogecoin`
|
||||
|
||||
You may need to specify `-datadir` also when using `dogecoin-cli`.
|
||||
|
||||
See the [full documentation on file system](files.md) for more information.
|
||||
|
||||
### RPC credentials
|
||||
|
||||
Authentication is required to interact with the RPC interface. When no credentials are provided, Dogecoin uses a [random cookie](https://bitcoin.org/en/release/v0.12.0#rpc-random-cookie-rpc-authentication) that gets generated when the software is launched. It's possible to define your own credentials using `rpcuser` and `rpcpassword` parameters.
|
||||
|
||||
### Ports
|
||||
|
||||
A node can expose 2 different ports: one port for the **Peer to Peer Network** (P2P) to communicate with other nodes, and a second port for access to the RPC API. By default, the ports are configured as follows:
|
||||
|
||||
| Function | mainnet | testnet | regtest |
|
||||
| :------- | ------: | ------: | ------: |
|
||||
| P2P | 22556 | 44556 | 18444 |
|
||||
| RPC | 22555 | 44555 | 18332 |
|
||||
|
||||
To configure them use the `-port` and `-rpcport` parameters.
|
||||
|
||||
### Memory
|
||||
|
||||
Running Dogecoin Core can require a lot of memory, so in some situations it may be necessary to optimize its usage. You can find more information about reducing the memory footprint in the [related guide](reduce-memory.md).
|
||||
|
||||
### Troubleshooting
|
||||
|
||||
By default, Dogecoin Core keeps detailed logs in the `debug.log` file, located in the `datadir`. Alternatively, the `-printtoconsole` parameter displays the log interactively to the terminal instead.
|
||||
|
||||
To get more verbose log output, you can enable debug mode by using the `-debug=<topic>` parameter to increase logic for a specific topic, or use `-debug=all` to see detailed logs on all topics.
|
|
@ -1,9 +1,9 @@
|
|||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
|
||||
.TH BITCOIN-CLI "1" "June 2017" "dogecoin-cli v0.14.2.0" "User Commands"
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.48.1.
|
||||
.TH DOGECOIN-CLI "1" "November 2021" "dogecoin-cli v1.14.5.0" "User Commands"
|
||||
.SH NAME
|
||||
dogecoin-cli \- manual page for dogecoin-cli v0.14.2.0
|
||||
dogecoin-cli \- manual page for dogecoin-cli v1.14.5.0
|
||||
.SH DESCRIPTION
|
||||
Dogecoin Core RPC client version v0.14.2.0
|
||||
Dogecoin Core RPC client version v1.14.5.0
|
||||
.SS "Usage:"
|
||||
.TP
|
||||
dogecoin\-cli [options] <command> [params]
|
||||
|
@ -71,7 +71,7 @@ Timeout during HTTP requests (default: 900)
|
|||
Read extra arguments from standard input, one per line until EOF/Ctrl\-D
|
||||
(recommended for sensitive information such as passphrases)
|
||||
.SH COPYRIGHT
|
||||
Copyright (C) 2013-2017 The Dogecoin Core and Dogecoin Core developers
|
||||
Copyright (C) 2013-2021 The Bitcoin Core and Dogecoin Core developers
|
||||
|
||||
Please contribute if you find Dogecoin Core useful. Visit
|
||||
<https://dogecoin.com> for further information about the software.
|
||||
|
@ -83,4 +83,5 @@ or <https://opensource.org/licenses/MIT>
|
|||
|
||||
This product includes software developed by the OpenSSL Project for use in the
|
||||
OpenSSL Toolkit <https://www.openssl.org> and cryptographic software written by
|
||||
Eric Young and UPnP software written by Thomas Bernard.
|
||||
Eric Young and UPnP software written by Thomas Bernard. Paper wallet art
|
||||
provided by Anacoluthia.
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
|
||||
.TH BITCOIN-QT "1" "June 2017" "dogecoin-qt v0.14.2.0" "User Commands"
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.48.1.
|
||||
.TH DOGECOIN-QT "1" "November 2021" "dogecoin-qt v1.14.5.0" "User Commands"
|
||||
.SH NAME
|
||||
dogecoin-qt \- manual page for dogecoin-qt v0.14.2.0
|
||||
dogecoin-qt \- manual page for dogecoin-qt v1.14.5.0
|
||||
.SH DESCRIPTION
|
||||
Dogecoin Core version v0.14.2.0 (64\-bit)
|
||||
Dogecoin Core version v1.14.5.0
|
||||
Usage:
|
||||
.IP
|
||||
dogecoin\-qt [command\-line options]
|
||||
|
@ -17,6 +17,10 @@ Print this help message and exit
|
|||
.IP
|
||||
Print version and exit
|
||||
.HP
|
||||
\fB\-alerts\fR
|
||||
.IP
|
||||
Receive and display P2P network alerts (default: 1)
|
||||
.HP
|
||||
\fB\-alertnotify=\fR<cmd>
|
||||
.IP
|
||||
Execute command when a relevant alert is received or we see a really
|
||||
|
@ -25,14 +29,14 @@ long fork (%s in cmd is replaced by message)
|
|||
\fB\-blocknotify=\fR<cmd>
|
||||
.IP
|
||||
Execute command when the best block changes (%s in cmd is replaced by
|
||||
block hash)
|
||||
block hash, %i is replaced by block number)
|
||||
.HP
|
||||
\fB\-assumevalid=\fR<hex>
|
||||
.IP
|
||||
If this block is in the chain assume that it and its ancestors are valid
|
||||
and potentially skip their script verification (0 to verify all,
|
||||
default:
|
||||
ca5eb72f1e0d160f1481f74d56d7cc4a27d91aa585ba012da8018a5fe934d61b,
|
||||
77e3f4a4bcb4a2c15e8015525e3d15b466f6c022f6ca82698f329edef7d9777e,
|
||||
testnet:
|
||||
6943eaeaba98dc7d09f7e73398daccb4abcabb18b66c8c875e52b07638d93951)
|
||||
.HP
|
||||
|
@ -63,7 +67,7 @@ Keep the transaction memory pool below <n> megabytes (default: 300)
|
|||
\fB\-mempoolexpiry=\fR<n>
|
||||
.IP
|
||||
Do not keep transactions in the mempool longer than <n> hours (default:
|
||||
336)
|
||||
24)
|
||||
.HP
|
||||
\fB\-blockreconstructionextratxn=\fR<n>
|
||||
.IP
|
||||
|
@ -72,7 +76,7 @@ Extra transactions to keep in memory for compact block reconstructions
|
|||
.HP
|
||||
\fB\-par=\fR<n>
|
||||
.IP
|
||||
Set the number of script verification threads (\fB\-3\fR to 16, 0 = auto, <0 =
|
||||
Set the number of script verification threads (\fB\-4\fR to 16, 0 = auto, <0 =
|
||||
leave that many cores free, default: 0)
|
||||
.HP
|
||||
\fB\-pid=\fR<file>
|
||||
|
@ -88,7 +92,7 @@ blocks if a target size in MiB is provided. This mode is
|
|||
incompatible with \fB\-txindex\fR and \fB\-rescan\fR. Warning: Reverting this
|
||||
setting requires re\-downloading the entire blockchain. (default:
|
||||
0 = disable pruning blocks, 1 = allow manual pruning via RPC,
|
||||
>550 = automatically prune block files to stay under the
|
||||
>2200 = automatically prune block files to stay under the
|
||||
specified target size in MiB)
|
||||
.HP
|
||||
\fB\-reindex\-chainstate\fR
|
||||
|
@ -278,19 +282,24 @@ Do not load the wallet and disable wallet RPC calls
|
|||
.IP
|
||||
Set key pool size to <n> (default: 100)
|
||||
.HP
|
||||
\fB\-discardthreshold=\fR<amt>
|
||||
.IP
|
||||
The minimum transaction output size (in DOGE) used to validate wallet
|
||||
transactions and discard change (to fee) (default: 1.00)
|
||||
.HP
|
||||
\fB\-fallbackfee=\fR<amt>
|
||||
.IP
|
||||
A fee rate (in DOGE/kB) that will be used when fee estimation has
|
||||
insufficient data (default: 1.00)
|
||||
insufficient data (default: 0.01)
|
||||
.HP
|
||||
\fB\-mintxfee=\fR<amt>
|
||||
.IP
|
||||
Fees (in DOGE/kB) smaller than this are considered zero fee for
|
||||
transaction creation (default: 1.00)
|
||||
transaction creation (default: 0.01)
|
||||
.HP
|
||||
\fB\-paytxfee=\fR<amt>
|
||||
.IP
|
||||
Fee (in DOGE/kB) to add to transactions you send (default: 0.00)
|
||||
Fee (in DOGE/kB) to add to transactions you send (default: 0.01)
|
||||
.HP
|
||||
\fB\-rescan\fR
|
||||
.IP
|
||||
|
@ -390,13 +399,13 @@ Prepend debug output with timestamp (default: 1)
|
|||
\fB\-minrelaytxfee=\fR<amt>
|
||||
.IP
|
||||
Fees (in DOGE/kB) smaller than this are considered zero fee for
|
||||
relaying, mining and transaction creation (default: 1.00)
|
||||
relaying, mining and transaction creation (default: 0.001)
|
||||
.HP
|
||||
\fB\-maxtxfee=\fR<amt>
|
||||
.IP
|
||||
Maximum total fees (in DOGE) to use in a single wallet transaction or
|
||||
raw transaction; setting this too low may abort large
|
||||
transactions (default: 400.00)
|
||||
transactions (default: 100.00)
|
||||
.HP
|
||||
\fB\-printtoconsole\fR
|
||||
.IP
|
||||
|
@ -414,6 +423,16 @@ Use the test chain
|
|||
.PP
|
||||
Node relay options:
|
||||
.HP
|
||||
\fB\-dustlimit=\fR<amt>
|
||||
.IP
|
||||
Amount under which a transaction output is considered dust, in DOGE
|
||||
(default: 0.01)
|
||||
.HP
|
||||
\fB\-harddustlimit=\fR<amt>
|
||||
.IP
|
||||
Amount under which a transaction output is considered non\-standard and
|
||||
will not be accepted or relayed, in DOGE (default: 0.001)
|
||||
.HP
|
||||
\fB\-bytespersigop\fR
|
||||
.IP
|
||||
Equivalent bytes per sigop in transactions for relay and mining
|
||||
|
@ -450,7 +469,7 @@ Set maximum size of high\-priority/low\-fee transactions in bytes
|
|||
\fB\-blockmintxfee=\fR<amt>
|
||||
.IP
|
||||
Set lowest fee rate (in DOGE/kB) for transactions to be included in
|
||||
block creation. (default: 0.00001)
|
||||
block creation. (default: 0.01)
|
||||
.PP
|
||||
RPC server options:
|
||||
.HP
|
||||
|
@ -531,7 +550,7 @@ Show splash screen on startup (default: 1)
|
|||
.IP
|
||||
Reset all settings changed in the GUI
|
||||
.SH COPYRIGHT
|
||||
Copyright (C) 2013-2017 The Dogecoin Core and Dogecoin Core developers
|
||||
Copyright (C) 2013-2021 The Bitcoin Core and Dogecoin Core developers
|
||||
|
||||
Please contribute if you find Dogecoin Core useful. Visit
|
||||
<https://dogecoin.com> for further information about the software.
|
||||
|
@ -543,4 +562,5 @@ or <https://opensource.org/licenses/MIT>
|
|||
|
||||
This product includes software developed by the OpenSSL Project for use in the
|
||||
OpenSSL Toolkit <https://www.openssl.org> and cryptographic software written by
|
||||
Eric Young and UPnP software written by Thomas Bernard.
|
||||
Eric Young and UPnP software written by Thomas Bernard. Paper wallet art
|
||||
provided by Anacoluthia.
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
|
||||
.TH BITCOIN-TX "1" "June 2017" "dogecoin-tx v0.14.2.0" "User Commands"
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.48.1.
|
||||
.TH DOGECOIN-TX "1" "November 2021" "dogecoin-tx v1.14.5.0" "User Commands"
|
||||
.SH NAME
|
||||
dogecoin-tx \- manual page for dogecoin-tx v0.14.2.0
|
||||
dogecoin-tx \- manual page for dogecoin-tx v1.14.5.0
|
||||
.SH DESCRIPTION
|
||||
Dogecoin Core dogecoin\-tx utility version v0.14.2.0
|
||||
Dogecoin Core dogecoin\-tx utility version v1.14.5.0
|
||||
.SS "Usage:"
|
||||
.TP
|
||||
dogecoin\-tx [options] <hex\-tx> [commands]
|
||||
|
@ -107,7 +107,7 @@ set=NAME:JSON\-STRING
|
|||
.IP
|
||||
Set register NAME to given JSON\-STRING
|
||||
.SH COPYRIGHT
|
||||
Copyright (C) 2013-2017 The Dogecoin Core and Dogecoin Core developers
|
||||
Copyright (C) 2013-2021 The Bitcoin Core and Dogecoin Core developers
|
||||
|
||||
Please contribute if you find Dogecoin Core useful. Visit
|
||||
<https://dogecoin.com> for further information about the software.
|
||||
|
@ -119,4 +119,5 @@ or <https://opensource.org/licenses/MIT>
|
|||
|
||||
This product includes software developed by the OpenSSL Project for use in the
|
||||
OpenSSL Toolkit <https://www.openssl.org> and cryptographic software written by
|
||||
Eric Young and UPnP software written by Thomas Bernard.
|
||||
Eric Young and UPnP software written by Thomas Bernard. Paper wallet art
|
||||
provided by Anacoluthia.
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
|
||||
.TH BITCOIND "1" "June 2017" "dogecoind v0.14.2.0" "User Commands"
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.48.1.
|
||||
.TH DOGECOIND "1" "November 2021" "dogecoind v1.14.5.0" "User Commands"
|
||||
.SH NAME
|
||||
dogecoind \- manual page for dogecoind v0.14.2.0
|
||||
dogecoind \- manual page for dogecoind v1.14.5.0
|
||||
.SH DESCRIPTION
|
||||
Dogecoin Core Daemon version v0.14.2.0
|
||||
Dogecoin Core Daemon version v1.14.5.0
|
||||
.SS "Usage:"
|
||||
.TP
|
||||
dogecoind [options]
|
||||
|
@ -18,6 +18,10 @@ Print this help message and exit
|
|||
.IP
|
||||
Print version and exit
|
||||
.HP
|
||||
\fB\-alerts\fR
|
||||
.IP
|
||||
Receive and display P2P network alerts (default: 1)
|
||||
.HP
|
||||
\fB\-alertnotify=\fR<cmd>
|
||||
.IP
|
||||
Execute command when a relevant alert is received or we see a really
|
||||
|
@ -26,14 +30,14 @@ long fork (%s in cmd is replaced by message)
|
|||
\fB\-blocknotify=\fR<cmd>
|
||||
.IP
|
||||
Execute command when the best block changes (%s in cmd is replaced by
|
||||
block hash)
|
||||
block hash, %i is replaced by block number)
|
||||
.HP
|
||||
\fB\-assumevalid=\fR<hex>
|
||||
.IP
|
||||
If this block is in the chain assume that it and its ancestors are valid
|
||||
and potentially skip their script verification (0 to verify all,
|
||||
default:
|
||||
ca5eb72f1e0d160f1481f74d56d7cc4a27d91aa585ba012da8018a5fe934d61b,
|
||||
77e3f4a4bcb4a2c15e8015525e3d15b466f6c022f6ca82698f329edef7d9777e,
|
||||
testnet:
|
||||
6943eaeaba98dc7d09f7e73398daccb4abcabb18b66c8c875e52b07638d93951)
|
||||
.HP
|
||||
|
@ -68,7 +72,7 @@ Keep the transaction memory pool below <n> megabytes (default: 300)
|
|||
\fB\-mempoolexpiry=\fR<n>
|
||||
.IP
|
||||
Do not keep transactions in the mempool longer than <n> hours (default:
|
||||
336)
|
||||
24)
|
||||
.HP
|
||||
\fB\-blockreconstructionextratxn=\fR<n>
|
||||
.IP
|
||||
|
@ -77,7 +81,7 @@ Extra transactions to keep in memory for compact block reconstructions
|
|||
.HP
|
||||
\fB\-par=\fR<n>
|
||||
.IP
|
||||
Set the number of script verification threads (\fB\-3\fR to 16, 0 = auto, <0 =
|
||||
Set the number of script verification threads (\fB\-4\fR to 16, 0 = auto, <0 =
|
||||
leave that many cores free, default: 0)
|
||||
.HP
|
||||
\fB\-pid=\fR<file>
|
||||
|
@ -93,7 +97,7 @@ blocks if a target size in MiB is provided. This mode is
|
|||
incompatible with \fB\-txindex\fR and \fB\-rescan\fR. Warning: Reverting this
|
||||
setting requires re\-downloading the entire blockchain. (default:
|
||||
0 = disable pruning blocks, 1 = allow manual pruning via RPC,
|
||||
>550 = automatically prune block files to stay under the
|
||||
>2200 = automatically prune block files to stay under the
|
||||
specified target size in MiB)
|
||||
.HP
|
||||
\fB\-reindex\-chainstate\fR
|
||||
|
@ -283,19 +287,24 @@ Do not load the wallet and disable wallet RPC calls
|
|||
.IP
|
||||
Set key pool size to <n> (default: 100)
|
||||
.HP
|
||||
\fB\-discardthreshold=\fR<amt>
|
||||
.IP
|
||||
The minimum transaction output size (in DOGE) used to validate wallet
|
||||
transactions and discard change (to fee) (default: 1.00)
|
||||
.HP
|
||||
\fB\-fallbackfee=\fR<amt>
|
||||
.IP
|
||||
A fee rate (in DOGE/kB) that will be used when fee estimation has
|
||||
insufficient data (default: 1.00)
|
||||
insufficient data (default: 0.01)
|
||||
.HP
|
||||
\fB\-mintxfee=\fR<amt>
|
||||
.IP
|
||||
Fees (in DOGE/kB) smaller than this are considered zero fee for
|
||||
transaction creation (default: 1.00)
|
||||
transaction creation (default: 0.01)
|
||||
.HP
|
||||
\fB\-paytxfee=\fR<amt>
|
||||
.IP
|
||||
Fee (in DOGE/kB) to add to transactions you send (default: 0.00)
|
||||
Fee (in DOGE/kB) to add to transactions you send (default: 0.01)
|
||||
.HP
|
||||
\fB\-rescan\fR
|
||||
.IP
|
||||
|
@ -395,13 +404,13 @@ Prepend debug output with timestamp (default: 1)
|
|||
\fB\-minrelaytxfee=\fR<amt>
|
||||
.IP
|
||||
Fees (in DOGE/kB) smaller than this are considered zero fee for
|
||||
relaying, mining and transaction creation (default: 1.00)
|
||||
relaying, mining and transaction creation (default: 0.001)
|
||||
.HP
|
||||
\fB\-maxtxfee=\fR<amt>
|
||||
.IP
|
||||
Maximum total fees (in DOGE) to use in a single wallet transaction or
|
||||
raw transaction; setting this too low may abort large
|
||||
transactions (default: 400.00)
|
||||
transactions (default: 100.00)
|
||||
.HP
|
||||
\fB\-printtoconsole\fR
|
||||
.IP
|
||||
|
@ -419,6 +428,16 @@ Use the test chain
|
|||
.PP
|
||||
Node relay options:
|
||||
.HP
|
||||
\fB\-dustlimit=\fR<amt>
|
||||
.IP
|
||||
Amount under which a transaction output is considered dust, in DOGE
|
||||
(default: 0.01)
|
||||
.HP
|
||||
\fB\-harddustlimit=\fR<amt>
|
||||
.IP
|
||||
Amount under which a transaction output is considered non\-standard and
|
||||
will not be accepted or relayed, in DOGE (default: 0.001)
|
||||
.HP
|
||||
\fB\-bytespersigop\fR
|
||||
.IP
|
||||
Equivalent bytes per sigop in transactions for relay and mining
|
||||
|
@ -455,7 +474,7 @@ Set maximum size of high\-priority/low\-fee transactions in bytes
|
|||
\fB\-blockmintxfee=\fR<amt>
|
||||
.IP
|
||||
Set lowest fee rate (in DOGE/kB) for transactions to be included in
|
||||
block creation. (default: 0.00001)
|
||||
block creation. (default: 0.01)
|
||||
.PP
|
||||
RPC server options:
|
||||
.HP
|
||||
|
@ -510,7 +529,7 @@ option can be specified multiple times
|
|||
.IP
|
||||
Set the number of threads to service RPC calls (default: 4)
|
||||
.SH COPYRIGHT
|
||||
Copyright (C) 2013-2017 The Dogecoin Core and Dogecoin Core developers
|
||||
Copyright (C) 2013-2021 The Bitcoin Core and Dogecoin Core developers
|
||||
|
||||
Please contribute if you find Dogecoin Core useful. Visit
|
||||
<https://dogecoin.com> for further information about the software.
|
||||
|
@ -522,4 +541,5 @@ or <https://opensource.org/licenses/MIT>
|
|||
|
||||
This product includes software developed by the OpenSSL Project for use in the
|
||||
OpenSSL Toolkit <https://www.openssl.org> and cryptographic software written by
|
||||
Eric Young and UPnP software written by Thomas Bernard.
|
||||
Eric Young and UPnP software written by Thomas Bernard. Paper wallet art
|
||||
provided by Anacoluthia.
|
||||
|
|
50
doc/reduce-memory.md
Normal file
50
doc/reduce-memory.md
Normal file
|
@ -0,0 +1,50 @@
|
|||
# Reduce Memory
|
||||
|
||||
There are a few parameters that can be dialed down to reduce the memory usage of `dogecoind`. This can be useful on embedded systems or small VPSes.
|
||||
|
||||
## In-memory caches
|
||||
|
||||
The size of some in-memory caches can be reduced. As caches trade off memory usage for performance, reducing these will usually have a negative effect on performance.
|
||||
|
||||
- `-dbcache=<n>` - the UTXO database cache size, this defaults to `450`. The unit is MiB (1024).
|
||||
- The minimum value for `-dbcache` is 4.
|
||||
- A lower `-dbcache` makes initial sync time much longer. After the initial sync, the effect is less pronounced for most use-cases, unless fast validation of blocks is important, such as for mining.
|
||||
|
||||
## Memory pool
|
||||
|
||||
- In Dogecoin Core there is a memory pool limiter which can be configured with `-maxmempool=<n>`, where `<n>` is the size in MB (1000). The default value is `300`.
|
||||
- The minimum value for `-maxmempool` is 5.
|
||||
- A lower maximum mempool size means that transactions will be evicted sooner. This will affect any uses of `dogecoind` that process unconfirmed transactions.
|
||||
|
||||
- To completely disable mempool functionality there is the option `-blocksonly`. This will make the client opt out of receiving (and thus relaying) transactions completely, except as part of blocks.
|
||||
|
||||
- Do not use this when using the client to broadcast transactions as any transaction sent will stick out like a sore thumb, affecting privacy. When used with the wallet it should be combined with `-walletbroadcast=0` and `-spendzeroconfchange=0`. Another mechanism for broadcasting outgoing transactions (if any) should be used.
|
||||
|
||||
- Since `1.14.0`, unused memory allocated to the mempool (default: 300MB) is shared with the UTXO cache, so when trying to reduce memory usage you should limit the mempool, with the `-maxmempool` command line argument.
|
||||
|
||||
## Number of peers
|
||||
|
||||
- `-maxconnections=<n>` - the maximum number of connections, this defaults to 125. Each active connection takes up some
|
||||
memory. This option applies only if incoming connections are enabled, otherwise the number of connections will never
|
||||
be more than 10. Of the 10 outbound peers, there can be 8 full-relay connections and 2 block-relay-only ones.
|
||||
|
||||
## Thread configuration
|
||||
|
||||
For each thread a thread stack needs to be allocated. By default on Linux,
|
||||
threads take up 8MiB for the thread stack on a 64-bit system, and 4MiB in a
|
||||
32-bit system.
|
||||
|
||||
- `-par=<n>` - the number of script verification threads, defaults to the number of cores in the system minus one.
|
||||
- `-rpcthreads=<n>` - the number of threads used for processing RPC requests, defaults to `4`.
|
||||
|
||||
## Linux specific
|
||||
|
||||
By default, since glibc `2.10`, the C library will create up to two heap arenas per core. This is known to cause excessive memory usage in some scenarios. To avoid this make a script that sets `MALLOC_ARENA_MAX` before starting dogecoind:
|
||||
|
||||
```bash
|
||||
#!/usr/bin/env bash
|
||||
export MALLOC_ARENA_MAX=1
|
||||
dogecoind
|
||||
```
|
||||
|
||||
The behavior was introduced to increase CPU locality of allocated memory and performance with concurrent allocation, so this setting could in theory reduce performance. However, in Dogecoin Core very little parallel allocation happens, so the impact is expected to be small or absent.
|
|
@ -1,9 +1,10 @@
|
|||
Dogecoin Core version 1.14.2 is now available from:
|
||||
Dogecoin Core version 1.14.5 is now available from:
|
||||
|
||||
<https://github.com/dogecoin/dogecoin/releases/tag/v1.14.0/>
|
||||
<https://github.com/dogecoin/dogecoin/releases/tag/v1.14.5/>
|
||||
|
||||
This is a new major version release, including new features, various bugfixes
|
||||
and performance improvements, as well as updated translations.
|
||||
This is a new minor version release, including important security updates and
|
||||
changes to network policies. All Dogecoin Core users, miners, services, relay
|
||||
operators and wallet users are strongly recommended to upgrade.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
|
@ -11,30 +12,15 @@ Please report bugs using the issue tracker at github:
|
|||
|
||||
To receive security and update notifications, please watch reddit or Twitter:
|
||||
|
||||
* https://www.reddit.com/r/dogecoin/
|
||||
* https://www.reddit.com/r/dogecoindev/
|
||||
* @Dogecoin on Twitter for high priority announcements
|
||||
* @dogecoin\_devs on Twitter for updates on development work
|
||||
|
||||
The developers also maintain personal Twitter accounts:
|
||||
|
||||
* @langer\_hans
|
||||
* @JRossNicoll
|
||||
|
||||
Lastly the founders are on Twitter, although as of the time of writing not involved in
|
||||
maintaining Dogecoin:
|
||||
|
||||
* @ummjackson
|
||||
* @BillyM2k
|
||||
|
||||
Compatibility
|
||||
==============
|
||||
|
||||
Dogecoin Core is extensively tested on Ubuntu Server LTS, Mac OS X and Windows 10.
|
||||
|
||||
Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support),
|
||||
No attempt is made to prevent installing or running the software on Windows XP, you
|
||||
can still do so at your own risk but be aware that there are known instabilities and issues.
|
||||
Please do not report issues about Windows XP to the issue tracker.
|
||||
Dogecoin Core is extensively tested on Ubuntu Server LTS, Intel-based macOS
|
||||
and Windows 10.
|
||||
|
||||
Dogecoin Core should also work on most other Unix-like systems but is not
|
||||
frequently tested on them.
|
||||
|
@ -42,441 +28,200 @@ frequently tested on them.
|
|||
Notable changes
|
||||
===============
|
||||
|
||||
Low-level RPC changes
|
||||
---------------------
|
||||
|
||||
- Error codes have been updated to be more accurate for the following error cases:
|
||||
- `getblock` now returns RPC_MISC_ERROR if the block can't be found on disk (for
|
||||
example if the block has been pruned). Previously returned RPC_INTERNAL_ERROR.
|
||||
- `pruneblockchain` now returns RPC_MISC_ERROR if the blocks cannot be pruned
|
||||
because the node is not in pruned mode. Previously returned RPC_METHOD_NOT_FOUND.
|
||||
- `pruneblockchain` now returns RPC_INVALID_PARAMETER if the blocks cannot be pruned
|
||||
because the supplied timestamp is too late. Previously returned RPC_INTERNAL_ERROR.
|
||||
- `pruneblockchain` now returns RPC_MISC_ERROR if the blocks cannot be pruned
|
||||
because the blockchain is too short. Previously returned RPC_INTERNAL_ERROR.
|
||||
- `setban` now returns RPC_CLIENT_INVALID_IP_OR_SUBNET if the supplied IP address
|
||||
or subnet is invalid. Previously returned RPC_CLIENT_NODE_ALREADY_ADDED.
|
||||
- `setban` now returns RPC_CLIENT_INVALID_IP_OR_SUBNET if the user tries to unban
|
||||
a node that has not previously been banned. Previously returned RPC_MISC_ERROR.
|
||||
- `removeprunedfunds` now returns RPC_WALLET_ERROR if bitcoind is unable to remove
|
||||
the transaction. Previously returned RPC_INTERNAL_ERROR.
|
||||
- `removeprunedfunds` now returns RPC_INVALID_PARAMETER if the transaction does not
|
||||
exist in the wallet. Previously returned RPC_INTERNAL_ERROR.
|
||||
- `fundrawtransaction` now returns RPC_INVALID_ADDRESS_OR_KEY if an invalid change
|
||||
address is provided. Previously returned RPC_INVALID_PARAMETER.
|
||||
- `fundrawtransaction` now returns RPC_WALLET_ERROR if bitcoind is unable to create
|
||||
the transaction. The error message provides further details. Previously returned
|
||||
RPC_INTERNAL_ERROR.
|
||||
- `bumpfee` now returns RPC_INVALID_PARAMETER if the provided transaction has
|
||||
descendants in the wallet. Previously returned RPC_MISC_ERROR.
|
||||
- `bumpfee` now returns RPC_INVALID_PARAMETER if the provided transaction has
|
||||
descendants in the mempool. Previously returned RPC_MISC_ERROR.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the provided transaction has
|
||||
has been mined or conflicts with a mined transaction. Previously returned
|
||||
RPC_INVALID_ADDRESS_OR_KEY.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the provided transaction is not
|
||||
BIP 125 replaceable. Previously returned RPC_INVALID_ADDRESS_OR_KEY.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the provided transaction has already
|
||||
been bumped by a different transaction. Previously returned RPC_INVALID_REQUEST.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the provided transaction contains
|
||||
inputs which don't belong to this wallet. Previously returned RPC_INVALID_ADDRESS_OR_KEY.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the provided transaction has multiple change
|
||||
outputs. Previously returned RPC_MISC_ERROR.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the provided transaction has no change
|
||||
output. Previously returned RPC_MISC_ERROR.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the fee is too high. Previously returned
|
||||
RPC_MISC_ERROR.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the fee is too low. Previously returned
|
||||
RPC_MISC_ERROR.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the change output is too small to bump the
|
||||
fee. Previously returned RPC_MISC_ERROR.
|
||||
|
||||
miniupnp CVE-2017-8798
|
||||
----------------------------
|
||||
|
||||
Bundled miniupnpc was updated to 2.0.20170509. This fixes an integer signedness error
|
||||
(present in MiniUPnPc v1.4.20101221 through v2.0) that allows remote attackers
|
||||
(within the LAN) to cause a denial of service or possibly have unspecified
|
||||
other impact.
|
||||
|
||||
Performance Improvements
|
||||
--------------
|
||||
|
||||
Validation speed and network propagation performance have been greatly
|
||||
improved, leading to much shorter sync and initial block download times.
|
||||
|
||||
- The script signature cache has been reimplemented as a "cuckoo cache",
|
||||
allowing for more signatures to be cached and faster lookups.
|
||||
- Assumed-valid blocks have been introduced which allows script validation to
|
||||
be skipped for ancestors of known-good blocks, without changing the security
|
||||
model. See below for more details.
|
||||
- In some cases, compact blocks are now relayed before being fully validated as
|
||||
per BIP152.
|
||||
- P2P networking has been refactored with a focus on concurrency and
|
||||
throughput. Network operations are no longer bottlenecked by validation. As a
|
||||
result, block fetching is several times faster than previous releases in many
|
||||
cases.
|
||||
- The UTXO cache now claims unused mempool memory. This speeds up initial block
|
||||
download as UTXO lookups are a major bottleneck there, and there is no use for
|
||||
the mempool at that stage.
|
||||
|
||||
|
||||
Manual Pruning
|
||||
--------------
|
||||
|
||||
Dogecoin Core introduces pruning the blockchain in 1.14. Pruning
|
||||
the blockchain allows for significant storage space savings as the vast majority of
|
||||
the downloaded data can be discarded after processing so very little of it remains
|
||||
on the disk.
|
||||
|
||||
Manual block pruning can now be enabled by setting `-prune=1`. Once that is set,
|
||||
the RPC command `pruneblockchain` can be used to prune the blockchain up to the
|
||||
specified height or timestamp.
|
||||
|
||||
`getinfo` Deprecated
|
||||
--------------------
|
||||
|
||||
The `getinfo` RPC command has been deprecated. Each field in the RPC call
|
||||
has been moved to another command's output with that command also giving
|
||||
additional information that `getinfo` did not provide. The following table
|
||||
shows where each field has been moved to:
|
||||
|
||||
|`getinfo` field | Moved to |
|
||||
|------------------|-------------------------------------------|
|
||||
`"version"` | `getnetworkinfo()["version"]`
|
||||
`"protocolversion"`| `getnetworkinfo()["protocolversion"]`
|
||||
`"walletversion"` | `getwalletinfo()["walletversion"]`
|
||||
`"balance"` | `getwalletinfo()["balance"]`
|
||||
`"blocks"` | `getblockchaininfo()["blocks"]`
|
||||
`"timeoffset"` | `getnetworkinfo()["timeoffset"]`
|
||||
`"connections"` | `getnetworkinfo()["connections"]`
|
||||
`"proxy"` | `getnetworkinfo()["networks"][0]["proxy"]`
|
||||
`"difficulty"` | `getblockchaininfo()["difficulty"]`
|
||||
`"testnet"` | `getblockchaininfo()["chain"] == "test"`
|
||||
`"keypoololdest"` | `getwalletinfo()["keypoololdest"]`
|
||||
`"keypoolsize"` | `getwalletinfo()["keypoolsize"]`
|
||||
`"unlocked_until"` | `getwalletinfo()["unlocked_until"]`
|
||||
`"paytxfee"` | `getwalletinfo()["paytxfee"]`
|
||||
`"relayfee"` | `getnetworkinfo()["relayfee"]`
|
||||
`"errors"` | `getnetworkinfo()["warnings"]`
|
||||
|
||||
ZMQ On Windows
|
||||
--------------
|
||||
|
||||
Previously the ZeroMQ notification system was unavailable on Windows
|
||||
due to various issues with ZMQ. These have been fixed upstream and
|
||||
now ZMQ can be used on Windows. Please see [this document](https://github.com/bitcoin/bitcoin/blob/master/doc/zmq.md) for
|
||||
help with using ZMQ in general.
|
||||
|
||||
Nested RPC Commands in Debug Console
|
||||
------------------------------------
|
||||
|
||||
The ability to nest RPC commands has been added to the debug console. This
|
||||
allows users to have the output of a command become the input to another
|
||||
command without running the commands separately.
|
||||
|
||||
The nested RPC commands use bracket syntax (i.e. `getwalletinfo()`) and can
|
||||
be nested (i.e. `getblock(getblockhash(1))`). Simple queries can be
|
||||
done with square brackets where object values are accessed with either an
|
||||
array index or a non-quoted string (i.e. `listunspent()[0][txid]`). Both
|
||||
commas and spaces can be used to separate parameters in both the bracket syntax
|
||||
and normal RPC command syntax.
|
||||
|
||||
Network Activity Toggle
|
||||
-----------------------
|
||||
|
||||
A RPC command and GUI toggle have been added to enable or disable all p2p
|
||||
network activity. The network status icon in the bottom right hand corner
|
||||
is now the GUI toggle. Clicking the icon will either enable or disable all
|
||||
p2p network activity. If network activity is disabled, the icon will
|
||||
be grayed out with an X on top of it.
|
||||
|
||||
Additionally the `setnetworkactive` RPC command has been added which does
|
||||
the same thing as the GUI icon. The command takes one boolean parameter,
|
||||
`true` enables networking and `false` disables it.
|
||||
|
||||
Out-of-sync Modal Info Layer
|
||||
----------------------------
|
||||
|
||||
When Dogecoin Core is out-of-sync on startup, a semi-transparent information
|
||||
layer will be shown over top of the normal display. This layer contains
|
||||
details about the current sync progress and estimates the amount of time
|
||||
remaining to finish syncing. This layer can also be hidden and subsequently
|
||||
unhidden by clicking on the progress bar at the bottom of the window.
|
||||
|
||||
Support for JSON-RPC Named Arguments
|
||||
------------------------------------
|
||||
|
||||
Commands sent over the JSON-RPC interface and through the `bitcoin-cli` binary
|
||||
can now use named arguments. This follows the [JSON-RPC specification](http://www.jsonrpc.org/specification)
|
||||
for passing parameters by-name with an object.
|
||||
|
||||
`bitcoin-cli` has been updated to support this by parsing `name=value` arguments
|
||||
when the `-named` option is given.
|
||||
|
||||
Some examples:
|
||||
|
||||
src/bitcoin-cli -named help command="help"
|
||||
src/bitcoin-cli -named getblockhash height=0
|
||||
src/bitcoin-cli -named getblock blockhash=000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
|
||||
src/bitcoin-cli -named sendtoaddress address="(snip)" amount="1.0" subtractfeefromamount=true
|
||||
|
||||
The order of arguments doesn't matter in this case. Named arguments are also
|
||||
useful to leave out arguments that should stay at their default value. The
|
||||
rarely-used arguments `comment` and `comment_to` to `sendtoaddress`, for example, can
|
||||
be left out. However, this is not yet implemented for many RPC calls, this is
|
||||
expected to land in a later release.
|
||||
|
||||
The RPC server remains fully backwards compatible with positional arguments.
|
||||
|
||||
Opt into RBF When Sending
|
||||
-------------------------
|
||||
|
||||
A new startup option, `-walletrbf`, has been added to allow users to have all
|
||||
transactions sent opt into RBF support. The default value for this option is
|
||||
currently `false`, so transactions will not opt into RBF by default. The new
|
||||
`bumpfee` RPC can be used to replace transactions that opt into RBF.
|
||||
|
||||
Sensitive Data Is No Longer Stored In Debug Console History
|
||||
-----------------------------------------------------------
|
||||
|
||||
This only affects users that have explicitly enabled UPnP through the GUI
|
||||
setting or through the `-upnp` option, as since the last UPnP vulnerability
|
||||
(in Bitcoin Core 0.10.3) it has been disabled by default.
|
||||
|
||||
If you use this option, it is recommended to upgrade to this version as soon as
|
||||
possible.
|
||||
|
||||
Known Bugs
|
||||
==========
|
||||
|
||||
Since 1.14.0 the approximate transaction fee shown in Dogecoin-Qt when using coin
|
||||
control and smart fee estimation does not reflect any change in target from the
|
||||
smart fee slider. It will only present an approximate fee calculated using the
|
||||
default target. The fee calculated using the correct target is still applied to
|
||||
the transaction and shown in the final send confirmation dialog.
|
||||
|
||||
1.14.0 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
behavior, not code moves, refactors and string updates. For convenience in locating
|
||||
the code changes and accompanying discussion, both the pull request and
|
||||
git merge commit are mentioned.
|
||||
|
||||
### RPC and other APIs
|
||||
- #10410 `321419b` Fix importwallet edge case rescan bug (ryanofsky)
|
||||
|
||||
### P2P protocol and network code
|
||||
- #10424 `37a8fc5` Populate services in GetLocalAddress (morcos)
|
||||
- #10441 `9e3ad50` Only enforce expected services for half of outgoing connections (theuni)
|
||||
|
||||
### Build system
|
||||
- #10414 `ffb0c4b` miniupnpc 2.0.20170509 (fanquake)
|
||||
- #10228 `ae479bc` Regenerate bitcoin-config.h as necessary (theuni)
|
||||
|
||||
### Miscellaneous
|
||||
- #10245 `44a17f2` Minor fix in build documentation for FreeBSD 11 (shigeya)
|
||||
- #10215 `0aee4a1` Check interruptNet during dnsseed lookups (TheBlueMatt)
|
||||
|
||||
### GUI
|
||||
- #10231 `1e936d7` Reduce a significant cs_main lock freeze (jonasschnelli)
|
||||
|
||||
### Wallet
|
||||
- #10294 `1847642` Unset change position when there is no change (instagibbs)
|
||||
|
||||
GUI Changes
|
||||
-----------
|
||||
|
||||
- After resetting the options by clicking the `Reset Options` button
|
||||
in the options dialog or with the `-resetguioptions` startup option,
|
||||
the user will be prompted to choose the data directory again. This
|
||||
is to ensure that custom data directories will be kept after the
|
||||
option reset which clears the custom data directory set via the choose
|
||||
datadir dialog.
|
||||
|
||||
- Multiple peers can now be selected in the list of peers in the debug
|
||||
window. This allows for users to ban or disconnect multiple peers
|
||||
simultaneously instead of banning them one at a time.
|
||||
|
||||
- An indicator has been added to the bottom right hand corner of the main
|
||||
window to indicate whether the wallet being used is a HD wallet. This
|
||||
icon will be grayed out with an X on top of it if the wallet is not a
|
||||
HD wallet.
|
||||
|
||||
Low-level RPC changes
|
||||
----------------------
|
||||
|
||||
- `importprunedfunds` only accepts two required arguments. Some versions accept
|
||||
an optional third arg, which was always ignored. Make sure to never pass more
|
||||
than two arguments.
|
||||
|
||||
- The first boolean argument to `getaddednodeinfo` has been removed. This is
|
||||
an incompatible change.
|
||||
|
||||
- RPC command `getmininginfo` loses the "testnet" field in favor of the more
|
||||
generic "chain" (which has been present for years).
|
||||
|
||||
- A new RPC command `preciousblock` has been added which marks a block as
|
||||
precious. A precious block will be treated as if it were received earlier
|
||||
than a competing block.
|
||||
|
||||
- A new RPC command `importmulti` has been added which receives an array of
|
||||
JSON objects representing the intention of importing a public key, a
|
||||
private key, an address and script/p2sh
|
||||
|
||||
- Use of `getrawtransaction` for retrieving confirmed transactions with unspent
|
||||
outputs has been deprecated. For now this will still work, but in the future
|
||||
it may change to only be able to retrieve information about transactions in
|
||||
the mempool or if `txindex` is enabled.
|
||||
|
||||
- A new RPC command `getmemoryinfo` has been added which will return information
|
||||
about the memory usage of Dogecoin Core. This was added in conjunction with
|
||||
optimizations to memory management. See [Pull #8753](https://github.com/bitcoin/bitcoin/pull/8753)
|
||||
for more information.
|
||||
|
||||
- A new RPC command `bumpfee` has been added which allows replacing an
|
||||
unconfirmed wallet transaction that signaled RBF (see the `-walletrbf`
|
||||
startup option above) with a new transaction that pays a higher fee, and
|
||||
should be more likely to get confirmed quickly.
|
||||
|
||||
HTTP REST Changes
|
||||
-----------------
|
||||
|
||||
- UTXO set query (`GET /rest/getutxos/<checkmempool>/<txid>-<n>/<txid>-<n>
|
||||
/.../<txid>-<n>.<bin|hex|json>`) responses were changed to return status
|
||||
code `HTTP_BAD_REQUEST` (400) instead of `HTTP_INTERNAL_SERVER_ERROR` (500)
|
||||
when requests contain invalid parameters.
|
||||
|
||||
Fee Estimation Changes
|
||||
----------------------
|
||||
|
||||
- Fee estimation for a confirmation target of 1 block has been
|
||||
disabled. The fee slider will no longer be able to choose a target of 1 block.
|
||||
This is only a minor behavior change as there was often insufficient
|
||||
data for this target anyway. `estimatefee 1` will now always return -1 and
|
||||
`estimatesmartfee 1` will start searching at a target of 2.
|
||||
|
||||
- The default target for fee estimation is changed to 6 blocks in both the GUI
|
||||
(previously 25) and for RPC calls (previously 2).
|
||||
|
||||
Removal of Priority Estimation
|
||||
------------------------------
|
||||
|
||||
- Estimation of "priority" needed for a transaction to be included within a target
|
||||
number of blocks has been removed. The RPC calls are deprecated and will either
|
||||
return -1 or 1e24 appropriately. The format for `fee_estimates.dat` has also
|
||||
changed to no longer save these priority estimates. It will automatically be
|
||||
converted to the new format which is not readable by prior versions of the
|
||||
software.
|
||||
|
||||
- Support for "priority" (coin age) transaction sorting for mining is
|
||||
considered deprecated in Core and will be removed in the next major version.
|
||||
This is not to be confused with the `prioritisetransaction` RPC which will remain
|
||||
supported by Core for adding fee deltas to transactions.
|
||||
|
||||
P2P connection management
|
||||
Important Security Updates
|
||||
--------------------------
|
||||
|
||||
- Peers manually added through the `-addnode` option or `addnode` RPC now have their own
|
||||
limit of eight connections which does not compete with other inbound or outbound
|
||||
connection usage and is not subject to the limitation imposed by the `-maxconnections`
|
||||
option.
|
||||
This release contains fixes for 2 high severity vulnerabilities that affect
|
||||
most Dogecoin Core users.
|
||||
|
||||
- New connections to manually added peers are performed more quickly.
|
||||
### Remote Code Execution in Dogecoin QT (CVE-2021-3401)
|
||||
|
||||
Introduction of assumed-valid blocks
|
||||
-------------------------------------
|
||||
This release addresses CVE-2021-3401 that opened potential remote code execution
|
||||
on QT (graphical user interface) wallets through malicious use of
|
||||
`dogecoin:` URIs.
|
||||
|
||||
- A significant portion of the initial block download time is spent verifying
|
||||
scripts/signatures. Although the verification must pass to ensure the security
|
||||
of the system, no other result from this verification is needed: If the node
|
||||
knew the history of a given block were valid it could skip checking scripts
|
||||
for its ancestors.
|
||||
**Dogecoin QT users are urged to please update their installations to this
|
||||
version immediately**, to prevent malicious actors from exploiting this
|
||||
vulnerability.
|
||||
|
||||
- A new configuration option 'assumevalid' is provided to express this knowledge
|
||||
to the software. Unlike the 'checkpoints' in the past this setting does not
|
||||
force the use of a particular chain: chains that are consistent with it are
|
||||
processed quicker, but other chains are still accepted if they'd otherwise
|
||||
be chosen as best. Also unlike 'checkpoints' the user can configure which
|
||||
block history is assumed true, this means that even outdated software can
|
||||
sync more quickly if the setting is updated by the user.
|
||||
### Sensitive Information Exposure on Unix platforms (CVE-2019-15947)
|
||||
|
||||
- Because the validity of a chain history is a simple objective fact it is much
|
||||
easier to review this setting. As a result the software ships with a default
|
||||
value adjusted to match the current chain shortly before release. The use
|
||||
of this default value can be disabled by setting -assumevalid=0
|
||||
A fix for CVE-2019-15947 was back-ported from Bitcoin Core to prevent potential
|
||||
leakage of sensitive information when Dogecoin Core crashes on Unix platforms.
|
||||
The vulnerability is patched for systems that run a Linux kernel equal to or
|
||||
higher than 3.4.
|
||||
|
||||
Fundrawtransaction change address reuse
|
||||
----------------------------------------
|
||||
**Dogecoin Core wallet users on Linux platforms are urged to please update to
|
||||
this version.**
|
||||
|
||||
- Before 1.14, `fundrawtransaction` was by default wallet stateless. In
|
||||
almost all cases `fundrawtransaction` does add a change-output to the
|
||||
outputs of the funded transaction. Before 1.14, the used keypool key was
|
||||
never marked as change-address key and directly returned to the keypool
|
||||
(leading to address reuse). Before 1.14, calling `getnewaddress`
|
||||
directly after `fundrawtransaction` did generate the same address as
|
||||
the change-output address.
|
||||
Fee Reductions
|
||||
--------------
|
||||
|
||||
- Since 0.14, fundrawtransaction does reserve the change-output-key from
|
||||
the keypool by default (optional by setting `reserveChangeKey`, default =
|
||||
`true`)
|
||||
This release finalizes a new minimum fee recommendation for all participants on
|
||||
the Dogecoin network, following the reduction of relay and mining defaults in
|
||||
1.14.4. The recommendation has been documented and can be found
|
||||
[here](fee-recommendation.md). With this release, the minimum fees when creating
|
||||
transactions are recommended to be as follows:
|
||||
|
||||
- Users should also consider using `getrawchangeaddress()` in conjunction
|
||||
with `fundrawtransaction`'s `changeAddress` option.
|
||||
* the recommended minimum transaction fee is 0.01 DOGE/kb, and
|
||||
* the recommended dust limit is 1 DOGE, and
|
||||
* the recommended RBF increment is 0.001 DOGE.
|
||||
|
||||
Unused mempool memory used by coincache
|
||||
----------------------------------------
|
||||
### Wallet/UI Changes
|
||||
|
||||
- Before 1.14, memory reserved for mempool (using the `-maxmempool` option)
|
||||
went unused during initial block download, or IBD. In 0.14, the UTXO DB cache
|
||||
(controlled with the `-dbcache` option) borrows memory from the mempool
|
||||
when there is extra memory available. This may result in an increase in
|
||||
memory usage during IBD for those previously relying on only the `-dbcache`
|
||||
option to limit memory during that time.
|
||||
>>>>>>> Update release notes for 1.14 (#1464)
|
||||
* The user interface for selecting fees when transacting DOGE has been updated
|
||||
to give an idea of how much is being spent, rather than a block target. As
|
||||
Dogecoin blocks are not full, typically all transactions are mined in the next
|
||||
block, and therefore the target estimation does not makes sense for Dogecoin.
|
||||
* Transaction sizes are no longer rounded up to the nearest kilobyte before
|
||||
calculating fees, which significantly simplifies fee calculation logic and
|
||||
makes it more similar to Bitcoin and Litecoin.
|
||||
* The default minimum transaction fee is now 0.01 DOGE per kilobyte. Note that
|
||||
you may see transactions take longer to be confirmed while using these lower
|
||||
fees, until all miners have updated. The new fee slider can help with getting
|
||||
fast-confirming transactions by sliding it all the way to the maximum, or for
|
||||
both CLI and GUI wallet users, this can be made the default by setting
|
||||
`-paytxfee=5.21`.
|
||||
* Introduce `-discardthreshold`, a wallet-specific, configurable dust limit that
|
||||
enables gradual implementation of the dust limit on the network side. Each
|
||||
transaction created with the wallet will adhere to this threshold
|
||||
rather than the dust limits used for relay, preventing stuck transactions. The
|
||||
wallet will discard any change to fee and reject output amounts that are lower
|
||||
than this limit. Until this release sees significant network adoption, the
|
||||
default dust limit is recommended to stay at 1 DOGE, as versions 1.14.2 until
|
||||
1.14.4 have a bug that rejects any transaction with an output under 1 DOGE.
|
||||
* Derive minimum change from configurable wallet parameters `-discardthreshold`
|
||||
and `-mintxfee`: `minimum change = discard threshold + 2 * minimum fee`.
|
||||
|
||||
### Relay changes
|
||||
|
||||
* Split the dust limit into a hard and soft threshold, to reintroduce the
|
||||
economic disincentive for dust, rather than rejection introduced since 1.14.2
|
||||
* `-harddustlimit` is by default set at 0.001 DOGE and sets the value under
|
||||
which transactions will be rejected by nodes.
|
||||
* The dust limit parameter introduced with 1.14.4 (`-dustlimit`) is now the
|
||||
soft dust limit, enforcing the economic disincentive. Each output under this
|
||||
threshold will be accepted as long as the entire limit is added to fee.
|
||||
* Change the default incremental fee used for RBF and mempool limiting to
|
||||
0.0001 DOGE.
|
||||
|
||||
BDB Updated to 5.3
|
||||
------------------
|
||||
|
||||
The Berkley DB version used by Dogecoin Core has been updated to 5.3 (from 5.1)
|
||||
as 5.3 is now standard on many Linux distributions. 5.1 and 5.3 wallet files
|
||||
have been tested to be interchangeable.
|
||||
|
||||
Version display
|
||||
---------------
|
||||
|
||||
The version displayed on QT's overview page has been changed to display the
|
||||
full version rather than just the major version part, because this was confusing
|
||||
wallet users.
|
||||
|
||||
Key Derivation
|
||||
--------------
|
||||
|
||||
The BIP32 hierarchical deterministic key derivation path contained the wrong
|
||||
chain ID. Previously the chain ID 0 was used, it's now correctly set to 3 as
|
||||
per [SLIP44](https://github.com/satoshilabs/slips/blob/master/slip-0044.md).
|
||||
|
||||
The wallet.dat files stay fully interoperable between versions. Wallets created
|
||||
with 1.14.5 will benefit from greater interoperability with hardware wallets in
|
||||
the future.
|
||||
|
||||
Namecoin-compatibile AuxPoW mining
|
||||
----------------------------------
|
||||
|
||||
The `createauxblock` and `submitauxblock` commands have been reintroduced,
|
||||
mimicking the same commands from Namecoin 0.17, allowing miners to separate
|
||||
wallets from block producing nodes by specifying the address for their coinbase
|
||||
transactions.
|
||||
|
||||
Two additional features on top of the Namecoin 0.17 API have been added:
|
||||
|
||||
* The block caching mechanism has been enhanced to enable mining pools to use
|
||||
multiple wallet addresses if desired.
|
||||
* By default the AuxPoW API methods provide the difficulty target in a field
|
||||
named `target`, however this can now be configured to be fully compatible with
|
||||
the Namecoin API (`_target`) by setting the `-rpcnamecoinapi` argument.
|
||||
|
||||
RPC API Changes
|
||||
---------------
|
||||
|
||||
* Added `softdustlimit` and `harddustlimit` fields to `getnetworkinfo` to enable
|
||||
operators and third party scripts to query this information without having to
|
||||
search configuration files or hardcode defaults.
|
||||
* Added `createauxblock` and `submitauxblock` methods
|
||||
* Added `-rpcnamecoinapi` that allows miners to use Namecoin-compatible AuxPoW
|
||||
APIs, for both `getauxblock` and `createauxblock` methods.
|
||||
|
||||
Build System and CI Changes
|
||||
---------------------------
|
||||
|
||||
The build system for dependencies, continuous integration and binary releases
|
||||
has been upgraded from Ubuntu Trusty to Ubuntu Bionic, because the former was
|
||||
fully end-of-life. Ubuntu Bionic extends the useful life of the 1.14 build
|
||||
system to April 2023, by which time we expect to have switched to 1.21 as the
|
||||
main version. With this change, the default gcc used for testing and releases
|
||||
has been updated from version 4.8 to 7.
|
||||
|
||||
The CI environment has been extended to build and test aarch64 binaries, and to
|
||||
perform additional checks that allow us to catch more potential issues early and
|
||||
automatically.
|
||||
|
||||
Additionally, an experimental CI build environment has been introduced to enable
|
||||
ongoing testing and maintenance of incubating features that are not yet ready
|
||||
for release. Currently this contains the AVX2 features that aim to increase the
|
||||
performance of cryptographic routines within Dogecoin Core.
|
||||
|
||||
Minor Changes
|
||||
=============
|
||||
|
||||
* Fix compilation on FreeBSD, which was failing to compile the Scrypt code.
|
||||
* Update the FreeBSD build docs, see `doc/build-freebsd.md`.
|
||||
* Update default dependencies to OpenSSL 1.0.2u.
|
||||
* Refresh translation files to simplify volunteer contributions to translations.
|
||||
* Add xkbcommon 0.8.4 as a separate dependency to fix keyboard compatibility
|
||||
issues and resolve issues with inadvertently used build system libraries.
|
||||
* Harden and expand the recommended systemd unit files in `contrib/init`.
|
||||
* Make the Freetype dependency compile independent from build system libraries.
|
||||
* Update the Univalue library to use the latest version maintained by the
|
||||
Bitcoin Core developers.
|
||||
* Fix the pruning test suite.
|
||||
* Correct the block download timeout for the regtest chain.
|
||||
* Shut down when trying to use a corrupted block from disk.
|
||||
* Add experimental AVX2 support, to improve the performance of SHA operations.
|
||||
* Add a [getting started guide](getting-started.md)
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- Alex Morcos
|
||||
- Cory Fields
|
||||
- fanquake
|
||||
- Gregory Sanders
|
||||
- Jonas Schnelli
|
||||
- Matt Corallo
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
- Matthew King
|
||||
- matthias
|
||||
- Max Keller
|
||||
- Micha
|
||||
- Michael Ford
|
||||
- Michael Rotarius
|
||||
- Mitchell Cash
|
||||
- mrbandrews
|
||||
- mruddy
|
||||
- Nicolas DORIER
|
||||
- nomnombtc
|
||||
- Patrick Lodder
|
||||
- Patrick Strateman
|
||||
- Pavel Janík
|
||||
- Pedro Branco
|
||||
- Peter Todd
|
||||
- Pieter Wuille
|
||||
- poole\_party
|
||||
- practicalswift
|
||||
- R E Broadley
|
||||
- randy-waterhouse
|
||||
- Richard Kiss
|
||||
- Robert McLaughlin
|
||||
- rodasmith
|
||||
- Ross Nicoll
|
||||
- Russell Yanofsky
|
||||
- Shigeya Suzuki
|
||||
- Wladimir J. van der Laan
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).
|
||||
|
||||
* AbcSxyZ
|
||||
* Bertrand Jacquin
|
||||
* Carl Dong
|
||||
* cg
|
||||
* CharesFang
|
||||
* chromatic
|
||||
* Chun Kuan Lee
|
||||
* Cory Fields
|
||||
* Dakoda Greaves
|
||||
* Daksh Sharma
|
||||
* Dan Raviv
|
||||
* dogespacewizard
|
||||
* Ed Tubbs
|
||||
* Elvis Begović
|
||||
* fanquake
|
||||
* Hennadii Stepanov
|
||||
* KabDeveloper
|
||||
* leezhen
|
||||
* Luke Dashjr
|
||||
* Micael Malta
|
||||
* Michi Lumin
|
||||
* Patrick Lodder
|
||||
* Ross Nicoll
|
||||
* Ryan Crosby
|
||||
* Suhas Daftuar
|
||||
* Vasil Dimov
|
||||
* W. J. van der Laan
|
||||
* Xiao Yi
|
||||
|
|
480
doc/release-notes/release-notes-1.14.2.md
Normal file
480
doc/release-notes/release-notes-1.14.2.md
Normal file
|
@ -0,0 +1,480 @@
|
|||
Dogecoin Core version 1.14.2 is now available from:
|
||||
|
||||
<https://github.com/dogecoin/dogecoin/releases/tag/v1.14.2/>
|
||||
|
||||
This is a new major version release, including new features, various bugfixes
|
||||
and performance improvements, as well as updated translations.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/dogecoin/dogecoin/issues>
|
||||
|
||||
To receive security and update notifications, please watch reddit or Twitter:
|
||||
|
||||
* https://www.reddit.com/r/dogecoin/
|
||||
* @Dogecoin on Twitter for high priority announcements
|
||||
* @dogecoin\_devs on Twitter for updates on development work
|
||||
|
||||
The developers also maintain personal Twitter accounts:
|
||||
|
||||
* @langer\_hans
|
||||
* @JRossNicoll
|
||||
|
||||
Lastly the founders are on Twitter, although as of the time of writing not involved in
|
||||
maintaining Dogecoin:
|
||||
|
||||
* @ummjackson
|
||||
* @BillyM2k
|
||||
|
||||
Compatibility
|
||||
==============
|
||||
|
||||
Dogecoin Core is extensively tested on Ubuntu Server LTS, Mac OS X and Windows 10.
|
||||
|
||||
Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support),
|
||||
No attempt is made to prevent installing or running the software on Windows XP, you
|
||||
can still do so at your own risk but be aware that there are known instabilities and issues.
|
||||
Please do not report issues about Windows XP to the issue tracker.
|
||||
|
||||
Dogecoin Core should also work on most other Unix-like systems but is not
|
||||
frequently tested on them.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Low-level RPC changes
|
||||
---------------------
|
||||
|
||||
- Error codes have been updated to be more accurate for the following error cases:
|
||||
- `getblock` now returns RPC_MISC_ERROR if the block can't be found on disk (for
|
||||
example if the block has been pruned). Previously returned RPC_INTERNAL_ERROR.
|
||||
- `pruneblockchain` now returns RPC_MISC_ERROR if the blocks cannot be pruned
|
||||
because the node is not in pruned mode. Previously returned RPC_METHOD_NOT_FOUND.
|
||||
- `pruneblockchain` now returns RPC_INVALID_PARAMETER if the blocks cannot be pruned
|
||||
because the supplied timestamp is too late. Previously returned RPC_INTERNAL_ERROR.
|
||||
- `pruneblockchain` now returns RPC_MISC_ERROR if the blocks cannot be pruned
|
||||
because the blockchain is too short. Previously returned RPC_INTERNAL_ERROR.
|
||||
- `setban` now returns RPC_CLIENT_INVALID_IP_OR_SUBNET if the supplied IP address
|
||||
or subnet is invalid. Previously returned RPC_CLIENT_NODE_ALREADY_ADDED.
|
||||
- `setban` now returns RPC_CLIENT_INVALID_IP_OR_SUBNET if the user tries to unban
|
||||
a node that has not previously been banned. Previously returned RPC_MISC_ERROR.
|
||||
- `removeprunedfunds` now returns RPC_WALLET_ERROR if bitcoind is unable to remove
|
||||
the transaction. Previously returned RPC_INTERNAL_ERROR.
|
||||
- `removeprunedfunds` now returns RPC_INVALID_PARAMETER if the transaction does not
|
||||
exist in the wallet. Previously returned RPC_INTERNAL_ERROR.
|
||||
- `fundrawtransaction` now returns RPC_INVALID_ADDRESS_OR_KEY if an invalid change
|
||||
address is provided. Previously returned RPC_INVALID_PARAMETER.
|
||||
- `fundrawtransaction` now returns RPC_WALLET_ERROR if bitcoind is unable to create
|
||||
the transaction. The error message provides further details. Previously returned
|
||||
RPC_INTERNAL_ERROR.
|
||||
- `bumpfee` now returns RPC_INVALID_PARAMETER if the provided transaction has
|
||||
descendants in the wallet. Previously returned RPC_MISC_ERROR.
|
||||
- `bumpfee` now returns RPC_INVALID_PARAMETER if the provided transaction has
|
||||
descendants in the mempool. Previously returned RPC_MISC_ERROR.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the provided transaction has
|
||||
has been mined or conflicts with a mined transaction. Previously returned
|
||||
RPC_INVALID_ADDRESS_OR_KEY.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the provided transaction is not
|
||||
BIP 125 replaceable. Previously returned RPC_INVALID_ADDRESS_OR_KEY.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the provided transaction has already
|
||||
been bumped by a different transaction. Previously returned RPC_INVALID_REQUEST.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the provided transaction contains
|
||||
inputs which don't belong to this wallet. Previously returned RPC_INVALID_ADDRESS_OR_KEY.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the provided transaction has multiple change
|
||||
outputs. Previously returned RPC_MISC_ERROR.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the provided transaction has no change
|
||||
output. Previously returned RPC_MISC_ERROR.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the fee is too high. Previously returned
|
||||
RPC_MISC_ERROR.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the fee is too low. Previously returned
|
||||
RPC_MISC_ERROR.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the change output is too small to bump the
|
||||
fee. Previously returned RPC_MISC_ERROR.
|
||||
|
||||
miniupnp CVE-2017-8798
|
||||
----------------------------
|
||||
|
||||
Bundled miniupnpc was updated to 2.0.20170509. This fixes an integer signedness error
|
||||
(present in MiniUPnPc v1.4.20101221 through v2.0) that allows remote attackers
|
||||
(within the LAN) to cause a denial of service or possibly have unspecified
|
||||
other impact.
|
||||
|
||||
Performance Improvements
|
||||
--------------
|
||||
|
||||
Validation speed and network propagation performance have been greatly
|
||||
improved, leading to much shorter sync and initial block download times.
|
||||
|
||||
- The script signature cache has been reimplemented as a "cuckoo cache",
|
||||
allowing for more signatures to be cached and faster lookups.
|
||||
- Assumed-valid blocks have been introduced which allows script validation to
|
||||
be skipped for ancestors of known-good blocks, without changing the security
|
||||
model. See below for more details.
|
||||
- In some cases, compact blocks are now relayed before being fully validated as
|
||||
per BIP152.
|
||||
- P2P networking has been refactored with a focus on concurrency and
|
||||
throughput. Network operations are no longer bottlenecked by validation. As a
|
||||
result, block fetching is several times faster than previous releases in many
|
||||
cases.
|
||||
- The UTXO cache now claims unused mempool memory. This speeds up initial block
|
||||
download as UTXO lookups are a major bottleneck there, and there is no use for
|
||||
the mempool at that stage.
|
||||
|
||||
|
||||
Manual Pruning
|
||||
--------------
|
||||
|
||||
Dogecoin Core introduces pruning the blockchain in 1.14. Pruning
|
||||
the blockchain allows for significant storage space savings as the vast majority of
|
||||
the downloaded data can be discarded after processing so very little of it remains
|
||||
on the disk.
|
||||
|
||||
Manual block pruning can now be enabled by setting `-prune=1`. Once that is set,
|
||||
the RPC command `pruneblockchain` can be used to prune the blockchain up to the
|
||||
specified height or timestamp.
|
||||
|
||||
`getinfo` Deprecated
|
||||
--------------------
|
||||
|
||||
The `getinfo` RPC command has been deprecated. Each field in the RPC call
|
||||
has been moved to another command's output with that command also giving
|
||||
additional information that `getinfo` did not provide. The following table
|
||||
shows where each field has been moved to:
|
||||
|
||||
|`getinfo` field | Moved to |
|
||||
|------------------|-------------------------------------------|
|
||||
`"version"` | `getnetworkinfo()["version"]`
|
||||
`"protocolversion"`| `getnetworkinfo()["protocolversion"]`
|
||||
`"walletversion"` | `getwalletinfo()["walletversion"]`
|
||||
`"balance"` | `getwalletinfo()["balance"]`
|
||||
`"blocks"` | `getblockchaininfo()["blocks"]`
|
||||
`"timeoffset"` | `getnetworkinfo()["timeoffset"]`
|
||||
`"connections"` | `getnetworkinfo()["connections"]`
|
||||
`"proxy"` | `getnetworkinfo()["networks"][0]["proxy"]`
|
||||
`"difficulty"` | `getblockchaininfo()["difficulty"]`
|
||||
`"testnet"` | `getblockchaininfo()["chain"] == "test"`
|
||||
`"keypoololdest"` | `getwalletinfo()["keypoololdest"]`
|
||||
`"keypoolsize"` | `getwalletinfo()["keypoolsize"]`
|
||||
`"unlocked_until"` | `getwalletinfo()["unlocked_until"]`
|
||||
`"paytxfee"` | `getwalletinfo()["paytxfee"]`
|
||||
`"relayfee"` | `getnetworkinfo()["relayfee"]`
|
||||
`"errors"` | `getnetworkinfo()["warnings"]`
|
||||
|
||||
ZMQ On Windows
|
||||
--------------
|
||||
|
||||
Previously the ZeroMQ notification system was unavailable on Windows
|
||||
due to various issues with ZMQ. These have been fixed upstream and
|
||||
now ZMQ can be used on Windows. Please see [this document](https://github.com/bitcoin/bitcoin/blob/master/doc/zmq.md) for
|
||||
help with using ZMQ in general.
|
||||
|
||||
Nested RPC Commands in Debug Console
|
||||
------------------------------------
|
||||
|
||||
The ability to nest RPC commands has been added to the debug console. This
|
||||
allows users to have the output of a command become the input to another
|
||||
command without running the commands separately.
|
||||
|
||||
The nested RPC commands use bracket syntax (i.e. `getwalletinfo()`) and can
|
||||
be nested (i.e. `getblock(getblockhash(1))`). Simple queries can be
|
||||
done with square brackets where object values are accessed with either an
|
||||
array index or a non-quoted string (i.e. `listunspent()[0][txid]`). Both
|
||||
commas and spaces can be used to separate parameters in both the bracket syntax
|
||||
and normal RPC command syntax.
|
||||
|
||||
Network Activity Toggle
|
||||
-----------------------
|
||||
|
||||
A RPC command and GUI toggle have been added to enable or disable all p2p
|
||||
network activity. The network status icon in the bottom right hand corner
|
||||
is now the GUI toggle. Clicking the icon will either enable or disable all
|
||||
p2p network activity. If network activity is disabled, the icon will
|
||||
be grayed out with an X on top of it.
|
||||
|
||||
Additionally the `setnetworkactive` RPC command has been added which does
|
||||
the same thing as the GUI icon. The command takes one boolean parameter,
|
||||
`true` enables networking and `false` disables it.
|
||||
|
||||
Out-of-sync Modal Info Layer
|
||||
----------------------------
|
||||
|
||||
When Dogecoin Core is out-of-sync on startup, a semi-transparent information
|
||||
layer will be shown over top of the normal display. This layer contains
|
||||
details about the current sync progress and estimates the amount of time
|
||||
remaining to finish syncing. This layer can also be hidden and subsequently
|
||||
unhidden by clicking on the progress bar at the bottom of the window.
|
||||
|
||||
Support for JSON-RPC Named Arguments
|
||||
------------------------------------
|
||||
|
||||
Commands sent over the JSON-RPC interface and through the `bitcoin-cli` binary
|
||||
can now use named arguments. This follows the [JSON-RPC specification](http://www.jsonrpc.org/specification)
|
||||
for passing parameters by-name with an object.
|
||||
|
||||
`bitcoin-cli` has been updated to support this by parsing `name=value` arguments
|
||||
when the `-named` option is given.
|
||||
|
||||
Some examples:
|
||||
|
||||
src/bitcoin-cli -named help command="help"
|
||||
src/bitcoin-cli -named getblockhash height=0
|
||||
src/bitcoin-cli -named getblock blockhash=000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
|
||||
src/bitcoin-cli -named sendtoaddress address="(snip)" amount="1.0" subtractfeefromamount=true
|
||||
|
||||
The order of arguments doesn't matter in this case. Named arguments are also
|
||||
useful to leave out arguments that should stay at their default value. The
|
||||
rarely-used arguments `comment` and `comment_to` to `sendtoaddress`, for example, can
|
||||
be left out. However, this is not yet implemented for many RPC calls, this is
|
||||
expected to land in a later release.
|
||||
|
||||
The RPC server remains fully backwards compatible with positional arguments.
|
||||
|
||||
Opt into RBF When Sending
|
||||
-------------------------
|
||||
|
||||
A new startup option, `-walletrbf`, has been added to allow users to have all
|
||||
transactions sent opt into RBF support. The default value for this option is
|
||||
currently `false`, so transactions will not opt into RBF by default. The new
|
||||
`bumpfee` RPC can be used to replace transactions that opt into RBF.
|
||||
|
||||
Sensitive Data Is No Longer Stored In Debug Console History
|
||||
-----------------------------------------------------------
|
||||
|
||||
This only affects users that have explicitly enabled UPnP through the GUI
|
||||
setting or through the `-upnp` option, as since the last UPnP vulnerability
|
||||
(in Bitcoin Core 0.10.3) it has been disabled by default.
|
||||
|
||||
If you use this option, it is recommended to upgrade to this version as soon as
|
||||
possible.
|
||||
|
||||
Known Bugs
|
||||
==========
|
||||
|
||||
Since 1.14.0 the approximate transaction fee shown in Dogecoin-Qt when using coin
|
||||
control and smart fee estimation does not reflect any change in target from the
|
||||
smart fee slider. It will only present an approximate fee calculated using the
|
||||
default target. The fee calculated using the correct target is still applied to
|
||||
the transaction and shown in the final send confirmation dialog.
|
||||
|
||||
1.14.0 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
behavior, not code moves, refactors and string updates. For convenience in locating
|
||||
the code changes and accompanying discussion, both the pull request and
|
||||
git merge commit are mentioned.
|
||||
|
||||
### RPC and other APIs
|
||||
- #10410 `321419b` Fix importwallet edge case rescan bug (ryanofsky)
|
||||
|
||||
### P2P protocol and network code
|
||||
- #10424 `37a8fc5` Populate services in GetLocalAddress (morcos)
|
||||
- #10441 `9e3ad50` Only enforce expected services for half of outgoing connections (theuni)
|
||||
|
||||
### Build system
|
||||
- #10414 `ffb0c4b` miniupnpc 2.0.20170509 (fanquake)
|
||||
- #10228 `ae479bc` Regenerate bitcoin-config.h as necessary (theuni)
|
||||
|
||||
### Miscellaneous
|
||||
- #10245 `44a17f2` Minor fix in build documentation for FreeBSD 11 (shigeya)
|
||||
- #10215 `0aee4a1` Check interruptNet during dnsseed lookups (TheBlueMatt)
|
||||
|
||||
### GUI
|
||||
- #10231 `1e936d7` Reduce a significant cs_main lock freeze (jonasschnelli)
|
||||
|
||||
### Wallet
|
||||
- #10294 `1847642` Unset change position when there is no change (instagibbs)
|
||||
|
||||
GUI Changes
|
||||
-----------
|
||||
|
||||
- After resetting the options by clicking the `Reset Options` button
|
||||
in the options dialog or with the `-resetguioptions` startup option,
|
||||
the user will be prompted to choose the data directory again. This
|
||||
is to ensure that custom data directories will be kept after the
|
||||
option reset which clears the custom data directory set via the choose
|
||||
datadir dialog.
|
||||
|
||||
- Multiple peers can now be selected in the list of peers in the debug
|
||||
window. This allows for users to ban or disconnect multiple peers
|
||||
simultaneously instead of banning them one at a time.
|
||||
|
||||
- An indicator has been added to the bottom right hand corner of the main
|
||||
window to indicate whether the wallet being used is a HD wallet. This
|
||||
icon will be grayed out with an X on top of it if the wallet is not a
|
||||
HD wallet.
|
||||
|
||||
Low-level RPC changes
|
||||
----------------------
|
||||
|
||||
- `importprunedfunds` only accepts two required arguments. Some versions accept
|
||||
an optional third arg, which was always ignored. Make sure to never pass more
|
||||
than two arguments.
|
||||
|
||||
- The first boolean argument to `getaddednodeinfo` has been removed. This is
|
||||
an incompatible change.
|
||||
|
||||
- RPC command `getmininginfo` loses the "testnet" field in favor of the more
|
||||
generic "chain" (which has been present for years).
|
||||
|
||||
- A new RPC command `preciousblock` has been added which marks a block as
|
||||
precious. A precious block will be treated as if it were received earlier
|
||||
than a competing block.
|
||||
|
||||
- A new RPC command `importmulti` has been added which receives an array of
|
||||
JSON objects representing the intention of importing a public key, a
|
||||
private key, an address and script/p2sh
|
||||
|
||||
- Use of `getrawtransaction` for retrieving confirmed transactions with unspent
|
||||
outputs has been deprecated. For now this will still work, but in the future
|
||||
it may change to only be able to retrieve information about transactions in
|
||||
the mempool or if `txindex` is enabled.
|
||||
|
||||
- A new RPC command `getmemoryinfo` has been added which will return information
|
||||
about the memory usage of Dogecoin Core. This was added in conjunction with
|
||||
optimizations to memory management. See [Pull #8753](https://github.com/bitcoin/bitcoin/pull/8753)
|
||||
for more information.
|
||||
|
||||
- A new RPC command `bumpfee` has been added which allows replacing an
|
||||
unconfirmed wallet transaction that signaled RBF (see the `-walletrbf`
|
||||
startup option above) with a new transaction that pays a higher fee, and
|
||||
should be more likely to get confirmed quickly.
|
||||
|
||||
HTTP REST Changes
|
||||
-----------------
|
||||
|
||||
- UTXO set query (`GET /rest/getutxos/<checkmempool>/<txid>-<n>/<txid>-<n>
|
||||
/.../<txid>-<n>.<bin|hex|json>`) responses were changed to return status
|
||||
code `HTTP_BAD_REQUEST` (400) instead of `HTTP_INTERNAL_SERVER_ERROR` (500)
|
||||
when requests contain invalid parameters.
|
||||
|
||||
Fee Estimation Changes
|
||||
----------------------
|
||||
|
||||
- Fee estimation for a confirmation target of 1 block has been
|
||||
disabled. The fee slider will no longer be able to choose a target of 1 block.
|
||||
This is only a minor behavior change as there was often insufficient
|
||||
data for this target anyway. `estimatefee 1` will now always return -1 and
|
||||
`estimatesmartfee 1` will start searching at a target of 2.
|
||||
|
||||
- The default target for fee estimation is changed to 6 blocks in both the GUI
|
||||
(previously 25) and for RPC calls (previously 2).
|
||||
|
||||
Removal of Priority Estimation
|
||||
------------------------------
|
||||
|
||||
- Estimation of "priority" needed for a transaction to be included within a target
|
||||
number of blocks has been removed. The RPC calls are deprecated and will either
|
||||
return -1 or 1e24 appropriately. The format for `fee_estimates.dat` has also
|
||||
changed to no longer save these priority estimates. It will automatically be
|
||||
converted to the new format which is not readable by prior versions of the
|
||||
software.
|
||||
|
||||
- Support for "priority" (coin age) transaction sorting for mining is
|
||||
considered deprecated in Core and will be removed in the next major version.
|
||||
This is not to be confused with the `prioritisetransaction` RPC which will remain
|
||||
supported by Core for adding fee deltas to transactions.
|
||||
|
||||
P2P connection management
|
||||
--------------------------
|
||||
|
||||
- Peers manually added through the `-addnode` option or `addnode` RPC now have their own
|
||||
limit of eight connections which does not compete with other inbound or outbound
|
||||
connection usage and is not subject to the limitation imposed by the `-maxconnections`
|
||||
option.
|
||||
|
||||
- New connections to manually added peers are performed more quickly.
|
||||
|
||||
Introduction of assumed-valid blocks
|
||||
-------------------------------------
|
||||
|
||||
- A significant portion of the initial block download time is spent verifying
|
||||
scripts/signatures. Although the verification must pass to ensure the security
|
||||
of the system, no other result from this verification is needed: If the node
|
||||
knew the history of a given block were valid it could skip checking scripts
|
||||
for its ancestors.
|
||||
|
||||
- A new configuration option 'assumevalid' is provided to express this knowledge
|
||||
to the software. Unlike the 'checkpoints' in the past this setting does not
|
||||
force the use of a particular chain: chains that are consistent with it are
|
||||
processed quicker, but other chains are still accepted if they'd otherwise
|
||||
be chosen as best. Also unlike 'checkpoints' the user can configure which
|
||||
block history is assumed true, this means that even outdated software can
|
||||
sync more quickly if the setting is updated by the user.
|
||||
|
||||
- Because the validity of a chain history is a simple objective fact it is much
|
||||
easier to review this setting. As a result the software ships with a default
|
||||
value adjusted to match the current chain shortly before release. The use
|
||||
of this default value can be disabled by setting -assumevalid=0
|
||||
|
||||
Fundrawtransaction change address reuse
|
||||
----------------------------------------
|
||||
|
||||
- Before 1.14, `fundrawtransaction` was by default wallet stateless. In
|
||||
almost all cases `fundrawtransaction` does add a change-output to the
|
||||
outputs of the funded transaction. Before 1.14, the used keypool key was
|
||||
never marked as change-address key and directly returned to the keypool
|
||||
(leading to address reuse). Before 1.14, calling `getnewaddress`
|
||||
directly after `fundrawtransaction` did generate the same address as
|
||||
the change-output address.
|
||||
|
||||
- Since 0.14, fundrawtransaction does reserve the change-output-key from
|
||||
the keypool by default (optional by setting `reserveChangeKey`, default =
|
||||
`true`)
|
||||
|
||||
- Users should also consider using `getrawchangeaddress()` in conjunction
|
||||
with `fundrawtransaction`'s `changeAddress` option.
|
||||
|
||||
Unused mempool memory used by coincache
|
||||
----------------------------------------
|
||||
|
||||
- Before 1.14, memory reserved for mempool (using the `-maxmempool` option)
|
||||
went unused during initial block download, or IBD. In 0.14, the UTXO DB cache
|
||||
(controlled with the `-dbcache` option) borrows memory from the mempool
|
||||
when there is extra memory available. This may result in an increase in
|
||||
memory usage during IBD for those previously relying on only the `-dbcache`
|
||||
option to limit memory during that time.
|
||||
>>>>>>> Update release notes for 1.14 (#1464)
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- Alex Morcos
|
||||
- Cory Fields
|
||||
- fanquake
|
||||
- Gregory Sanders
|
||||
- Jonas Schnelli
|
||||
- Matt Corallo
|
||||
- Matthew King
|
||||
- matthias
|
||||
- Max Keller
|
||||
- Micha
|
||||
- Michael Ford
|
||||
- Michael Rotarius
|
||||
- Mitchell Cash
|
||||
- mrbandrews
|
||||
- mruddy
|
||||
- Nicolas DORIER
|
||||
- nomnombtc
|
||||
- Patrick Lodder
|
||||
- Patrick Strateman
|
||||
- Pavel Janík
|
||||
- Pedro Branco
|
||||
- Peter Todd
|
||||
- Pieter Wuille
|
||||
- poole\_party
|
||||
- practicalswift
|
||||
- R E Broadley
|
||||
- randy-waterhouse
|
||||
- Richard Kiss
|
||||
- Robert McLaughlin
|
||||
- rodasmith
|
||||
- Ross Nicoll
|
||||
- Russell Yanofsky
|
||||
- Shigeya Suzuki
|
||||
- Wladimir J. van der Laan
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).
|
||||
|
116
doc/release-notes/release-notes-1.14.3.md
Normal file
116
doc/release-notes/release-notes-1.14.3.md
Normal file
|
@ -0,0 +1,116 @@
|
|||
Dogecoin Core version 1.14.3 is now available from:
|
||||
|
||||
<https://github.com/dogecoin/dogecoin/releases/tag/v1.14.3/>
|
||||
|
||||
This is a new minor version release, including various bugfixes and performance improvements. It is a recommended
|
||||
update for all users.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/dogecoin/dogecoin/issues>
|
||||
|
||||
To receive security and update notifications, please watch reddit or Twitter:
|
||||
|
||||
* https://www.reddit.com/r/dogecoin/
|
||||
* @Dogecoin on Twitter for high priority announcements
|
||||
* @dogecoin\_devs on Twitter for updates on development work
|
||||
|
||||
The developers also maintain personal Twitter accounts:
|
||||
|
||||
* @langer\_hans
|
||||
* @JRossNicoll
|
||||
|
||||
Compatibility
|
||||
==============
|
||||
|
||||
Dogecoin Core is extensively tested on Ubuntu Server LTS, Mac OS X and Windows 10.
|
||||
|
||||
Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support),
|
||||
No attempt is made to prevent installing or running the software on Windows XP, you
|
||||
can still do so at your own risk but be aware that there are known instabilities and issues.
|
||||
Please do not report issues about Windows XP to the issue tracker.
|
||||
|
||||
Dogecoin Core should also work on most other Unix-like systems but is not
|
||||
frequently tested on them.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Reduce CPU usage during sync
|
||||
----------------------------
|
||||
|
||||
When loading block headers to send to a peer, the block was revalidated by calculating its proof of work. This is expensive and led to a bottleneck in the sync process where nodes were CPU rather than IO bound in sending blocks to ther peers.
|
||||
|
||||
All block headers are already checked when they are accepted, and they will be checked again on the receiving node.
|
||||
|
||||
Reduce default mempool expiry time
|
||||
----------------------------------
|
||||
|
||||
Reduces DEFAULT_MEMPOOL_EXPIRY from 336 hours to 24 hours. Motivation is that while blocks are empty, un-relayable tx are stuck in mempools for a long time and effectively locking utxo for 2 weeks until they can be respent, if no RBF opt-in was performed (most wallet implementations do not do RBF opt-in.)
|
||||
|
||||
As the expectation is that block space will not be fully utilized for the foreseeable future, and therefore, as long as this is the case, no valid transaction should ever live in the mempool for more than a couple of minutes.
|
||||
|
||||
This default setting can be overridden with the -mempoolexpiry parameter by individual node operators to a value (expressed in hours) that makes the most sense for the use cases the node serves.
|
||||
|
||||
Increase block download timeouts
|
||||
--------------------------------
|
||||
|
||||
Block download timeouts are expressed as a multiple of block interval, and as such Dogecoin block download times were relatively aggressive, leading to a high number of timeouts. Increased the timeouts to be more flexible to real world conditions.
|
||||
|
||||
Add size_on_disk, prune_target_size, automatic_pruning to getblockchaininfo
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
* Fix pruneheight help text.
|
||||
* Move fPruneMode block to match output ordering with help text.
|
||||
* Add functional tests for new fields in getblockchaininfo.
|
||||
|
||||
Add query options to listunspent RPC call
|
||||
-----------------------------------------
|
||||
|
||||
* Return unspents greater or equal than a specific amount in DOGE: minimumAmount (default = 0).
|
||||
* Return unspents lower or equal than a specific amount in DOGE: maximumAmount (default=unlimited).
|
||||
* Return unspents with a total number lower or equal than a specific number: maximumCount (default=0=unlimited).
|
||||
* Return unspents which total is greater or equal than a specific amount in DOGE: minimumSumAmount (default=unlimited).
|
||||
|
||||
Minor changes
|
||||
=============
|
||||
|
||||
* Set BIP65 softfork heights in chainparams.cpp.
|
||||
* Update package links for OSX cross compilation.
|
||||
* Change IPC prefix from `bitcoin:` to `dogecoin:`.
|
||||
* Locale independent sorting.
|
||||
* Corrections to Italian translation.
|
||||
* Refresh main and test network checkpoints and seeds.
|
||||
* Do not print an error on connection timeouts through proxy.
|
||||
* Numerous fixes to automated tests.
|
||||
* Numerous fixes to documentation.
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- Anthony Chen
|
||||
- Bertrand Jacquin
|
||||
- BT
|
||||
- Daniel Edgecumbe
|
||||
- Demon
|
||||
- Dennis Field
|
||||
- fluteds
|
||||
- Ikko Ashimine
|
||||
- John-Gee
|
||||
- Jonathan
|
||||
- Kent
|
||||
- leuqarte
|
||||
- Luis-Johannes Schubert
|
||||
- Marco
|
||||
- marcuswin
|
||||
- Max Keller
|
||||
- Patrick Lodder
|
||||
- Pedro Branco
|
||||
- Primo
|
||||
- Reiner Herrmann
|
||||
- Ross Nicoll
|
||||
- Shibe
|
||||
- tnaka
|
||||
- Vertian
|
172
doc/release-notes/release-notes-1.14.4.md
Normal file
172
doc/release-notes/release-notes-1.14.4.md
Normal file
|
@ -0,0 +1,172 @@
|
|||
Dogecoin Core version 1.14.4 is now available from:
|
||||
|
||||
<https://github.com/dogecoin/dogecoin/releases/tag/v1.14.4/>
|
||||
|
||||
This is a new minor version release, including various bugfixes and performance improvements. It is a recommended
|
||||
update for all users.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/dogecoin/dogecoin/issues>
|
||||
|
||||
To receive security and update notifications, please watch reddit or Twitter:
|
||||
|
||||
* https://www.reddit.com/r/dogecoin/
|
||||
* @Dogecoin on Twitter for high priority announcements
|
||||
* @dogecoin\_devs on Twitter for updates on development work
|
||||
|
||||
Compatibility
|
||||
==============
|
||||
|
||||
Dogecoin Core is extensively tested on Ubuntu Server LTS, Mac OS X and Windows 10.
|
||||
|
||||
Dogecoin Core should also work on most other Unix-like systems but is not
|
||||
frequently tested on them.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Enabling Future Fee Reductions
|
||||
-------------------------------
|
||||
|
||||
This release preparing the network for a reduction of the recommended fees by
|
||||
reducing the default fee requirement 1000x for transaction relay and 100x for
|
||||
mining. At the same time it increases freedom for miner, wallet and node
|
||||
operators to agree on fees regardless of defaults coded into the Dogecoin Core
|
||||
software by solidifying fine-grained controls for operators to deviate from
|
||||
built-in defaults.
|
||||
|
||||
This realizes the first part of a two-stage update to lower the fee
|
||||
recommendation.
|
||||
|
||||
The main highlights for these enhancements are:
|
||||
|
||||
* Transaction sizes are no longer rounded up to the nearest kilobyte when
|
||||
deciding if a transaction can be accepted from another node and in applying
|
||||
fee-filter requests from peers, when relaying transactions.
|
||||
* The default setting shipped with dogecoin core for relay fee has been reduced
|
||||
to 0.001 DOGE (was: 1 DOGE). This can be changed by operators using the
|
||||
`-mintxrelayfee=<amount>` option.
|
||||
* Spam management has been delegated to miners, where currently a default fee
|
||||
of 0.01 DOGE has been set as a recommended default, to prevent spam on the
|
||||
blockchain. Miners can change this setting to their liking using the
|
||||
`-blockmintxfee` option.
|
||||
* The relay dust limit has been reduced 100x to 0.01 DOGE and is now
|
||||
configurable via the `-dustlimit` option.
|
||||
|
||||
For this release, the recommended fees and dust limits, as implemented in the
|
||||
wallet, remain at 1 DOGE per kilobyte, inclusive of the rounding up to the
|
||||
nearest kilobyte, as miners and the relay network will upgrade gradually,
|
||||
requiring time for transactions with lower fees to be able to be relayed and
|
||||
mined. Not doing this would result in all transactions being rejected by old
|
||||
nodes. A subsequent release will finalize the second stage and lower the
|
||||
recommended fees implemented in the wallet by default. Wallet operators can
|
||||
however, at their own judgement and convenience, change the fees paid from
|
||||
their wallets with the `-paytxfee=<amount per kb>` option.
|
||||
|
||||
Synchronization Improvements
|
||||
----------------------------
|
||||
|
||||
This release removes a bug in the network layer where a 1.14 node would open
|
||||
many parallel requests for headers to its peers, increasing the total data
|
||||
transferred during initial block download up to 50 times the required data, per
|
||||
peer, unnecessarily. As a result, synchronization has time has been reduced by
|
||||
around 2.5 times.
|
||||
|
||||
Additionally, when a node is in initial synchronization and a peer takes too
|
||||
long to respond to a new header request, it is now aggressively disconnected,
|
||||
to free connection slots for faster peers and not add more stress to already
|
||||
overloaded peers.
|
||||
|
||||
Security enhancements
|
||||
---------------------
|
||||
|
||||
* Proactively disconnect peers sending block headers which would build on an
|
||||
invalid chain.
|
||||
* Improve handling and logging of invalid blocks and their descendants
|
||||
* Fix a bug that was preventing nodes to load a fixed peer list in case DNS
|
||||
services are unreachable.
|
||||
|
||||
GUI Improvements
|
||||
----------------
|
||||
|
||||
* Add menu option to import a private key, "Import Private Key" from the "File"
|
||||
menu.
|
||||
* Improve displayed result when commands in the debug console return null.
|
||||
* Fix text overflow on printed keys and address fields in the paper wallet
|
||||
generator.
|
||||
* Add column to peers table showing bytes sent/received, accessible via
|
||||
"Debug Window" from the "Help" menu.
|
||||
* Add GUI for adding peers manually, accessible from the peers table of the
|
||||
Debug Window.
|
||||
|
||||
RPC Improvements
|
||||
----------------
|
||||
|
||||
`getpeerinfo` now includes `feefilter` value for each peer, to be able to diagnose transaction relay issues.
|
||||
|
||||
Minor Changes
|
||||
=============
|
||||
|
||||
* Corrections to French Canadian, Chinese, German, Indonesian, Korean, Polish and Portuguese translations.
|
||||
* Correct a bug that resulted in negative progress per hour being displayed during sync.
|
||||
* Regtest network can now generate AuxPoW blocks.
|
||||
* Add Snap packaging support.
|
||||
* Modify Scrypt code so it's compatible with Alpine Linux's musl library.
|
||||
* Update libevent to 2.1.11
|
||||
* Update ZMQ to 4.3.4
|
||||
* Add build instructions for NixOS.
|
||||
* Fix a rare crash bug on shutdown due to ActivateBestChain() being called when there is no best chain.
|
||||
* Fix port numbers in `contrib/seeds/generate-seeds.py`.
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
* AbcSxyZ
|
||||
* Ahmed Castro
|
||||
* Alan Rudolf
|
||||
* cg
|
||||
* chey
|
||||
* chromatic
|
||||
* Cory Fields
|
||||
* creekhu
|
||||
* Dakoda Greaves
|
||||
* David Millard
|
||||
* Demon
|
||||
* Dídac Coll Pujals
|
||||
* Escanor Liones
|
||||
* fanquake
|
||||
* Florian Schade
|
||||
* fmhc
|
||||
* Gabriel Gosselin Roberge
|
||||
* Gabriel Pérez
|
||||
* geekwisdom
|
||||
* Ikko Ashimine
|
||||
* Jeroen Ooms
|
||||
* Jerry Park
|
||||
* Joakim Taule Kartveit
|
||||
* katzenmalen
|
||||
* Khakim Hudaya
|
||||
* kregerl
|
||||
* lee5378
|
||||
* lynklody
|
||||
* Malta Micael
|
||||
* Matheus Tavares
|
||||
* Matt Domko
|
||||
* Maximilian Keller
|
||||
* MD Islam
|
||||
* Mich De L'Orme
|
||||
* Michi Lumin
|
||||
* motz0815
|
||||
* nformant
|
||||
* Patrick Lodder
|
||||
* Piotr Zajączkowski
|
||||
* p-j01
|
||||
* rht
|
||||
* Ross Nicoll
|
||||
* sabotagebeats
|
||||
* Shafil Alam
|
||||
* stefanwouldgo
|
||||
* Will
|
||||
* xt3r
|
||||
* Zach Latta
|
|
@ -99,7 +99,7 @@ Ensure gitian-builder is up-to-date:
|
|||
pushd ./gitian-builder
|
||||
mkdir -p inputs
|
||||
wget -P inputs https://bitcoincore.org/cfields/osslsigncode-Backports-to-1.7.1.patch
|
||||
wget -P inputs http://downloads.sourceforge.net/project/osslsigncode/osslsigncode/osslsigncode-1.7.1.tar.gz
|
||||
wget -P inputs https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/osslsigncode/1.7.1-1/osslsigncode_1.7.1.orig.tar.gz
|
||||
popd
|
||||
|
||||
Create the OS X SDK tarball, see the [OS X readme](README_osx.md) for details, and copy it into the inputs directory.
|
||||
|
|
13
qa/README.md
13
qa/README.md
|
@ -1,7 +1,7 @@
|
|||
The [pull-tester](/qa/pull-tester/) folder contains a script to call
|
||||
multiple tests from the [rpc-tests](/qa/rpc-tests/) folder.
|
||||
|
||||
Every pull request to the bitcoin repository is built and run through
|
||||
Every pull request to the dogecoin repository is built and run through
|
||||
the regression test suite. You can also run all or only individual
|
||||
tests locally.
|
||||
|
||||
|
@ -11,17 +11,18 @@ Before running the tests, the following must be installed.
|
|||
|
||||
Unix
|
||||
----
|
||||
`python3-zmq` and `litecoin_scrypt` are required. On Ubuntu or Debian they can be installed via:
|
||||
`python3-zmq` and `ltc_scrypt` are required. On Ubuntu or Debian they can be installed via:
|
||||
```
|
||||
sudo apt-get install python3-zmq
|
||||
pip3 install litecoin_scrypt
|
||||
sudo apt-get update && apt-get install -y curl python3-zmq python3-dev gcc
|
||||
cd qa/pull-tester/ && ./install-deps.sh
|
||||
```
|
||||
|
||||
OS X
|
||||
------
|
||||
```
|
||||
brew install curl
|
||||
pip3 install pyzmq
|
||||
pip3 install litecoin_scrypt
|
||||
cd qa/pull-tester && ./install-deps.sh
|
||||
```
|
||||
|
||||
Running tests
|
||||
|
@ -79,7 +80,7 @@ to recover with:
|
|||
|
||||
```bash
|
||||
rm -rf cache
|
||||
killall bitcoind
|
||||
killall dogecoind
|
||||
```
|
||||
|
||||
Writing tests
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
# installs test dependencies
|
||||
|
||||
wget https://github.com/langerhans/ltc-scrypt/archive/master.tar.gz
|
||||
curl -L https://github.com/langerhans/ltc-scrypt/archive/master.tar.gz --output master.tar.gz
|
||||
echo "ade3cdf498927990b6d153d74f0da104114e838584be5a81bef8972accd03341 master.tar.gz" | sha256sum -c
|
||||
tar zxf master.tar.gz
|
||||
pushd ltc-scrypt-master
|
||||
|
|
|
@ -116,7 +116,8 @@ testScripts = [
|
|||
'wallet-dump.py',
|
||||
'listtransactions.py',
|
||||
# vv Tests less than 60s vv
|
||||
# 'sendheaders.py',
|
||||
'p2p-acceptblock.py',
|
||||
'sendheaders.py',
|
||||
'zapwallettxes.py',
|
||||
'importmulti.py',
|
||||
'mempool_limit.py',
|
||||
|
@ -128,7 +129,7 @@ testScripts = [
|
|||
'reindex.py',
|
||||
# vv Tests less than 30s vv
|
||||
'mempool_resurrect_test.py',
|
||||
#'txn_doublespend.py --mineblock',
|
||||
'txn_doublespend.py --mineblock',
|
||||
'txn_clone.py',
|
||||
'getchaintips.py',
|
||||
'rest.py',
|
||||
|
@ -150,15 +151,21 @@ testScripts = [
|
|||
# 'p2p-versionbits-warning.py',
|
||||
'preciousblock.py',
|
||||
'importprunedfunds.py',
|
||||
'createauxblock.py',
|
||||
'signmessages.py',
|
||||
# 'nulldummy.py',
|
||||
'import-rescan.py',
|
||||
'dustlimits.py',
|
||||
'paytxfee.py',
|
||||
'feelimit.py',
|
||||
# While fee bumping should work in Doge, these tests depend on free transactions, which we don't support.
|
||||
# Disable until we can do a full rewrite of the tests (possibly upstream), or revise fee schedule, or something
|
||||
# 'bumpfee.py',
|
||||
'bumpfee.py',
|
||||
'rpcnamedargs.py',
|
||||
'listsinceblock.py',
|
||||
'p2p-leaktests.py',
|
||||
'replace-by-fee.py',
|
||||
'p2p-policy.py',
|
||||
]
|
||||
if ENABLE_ZMQ:
|
||||
testScripts.append('zmq_test.py')
|
||||
|
@ -189,8 +196,6 @@ testScriptsExt = [
|
|||
'forknotify.py',
|
||||
'invalidateblock.py',
|
||||
'maxblocksinflight.py',
|
||||
'p2p-acceptblock.py',
|
||||
'replace-by-fee.py',
|
||||
]
|
||||
|
||||
|
||||
|
@ -281,7 +286,7 @@ class RPCTestHandler:
|
|||
log_stderr = tempfile.SpooledTemporaryFile(max_size=2**16)
|
||||
self.jobs.append((t,
|
||||
time.time(),
|
||||
subprocess.Popen(['python3.6']+(RPC_TESTS_DIR + t).split() + self.flags + port_seed,
|
||||
subprocess.Popen(['python3']+(RPC_TESTS_DIR + t).split() + self.flags + port_seed,
|
||||
universal_newlines=True,
|
||||
stdout=log_stdout,
|
||||
stderr=log_stderr),
|
||||
|
|
|
@ -16,7 +16,7 @@ class AbandonConflictTest(BitcoinTestFramework):
|
|||
|
||||
def setup_network(self):
|
||||
self.nodes = []
|
||||
self.nodes.append(start_node(0, self.options.tmpdir, ["-debug","-logtimemicros","-minrelaytxfee=1"]))
|
||||
self.nodes.append(start_node(0, self.options.tmpdir, ["-debug","-logtimemicros","-minrelaytxfee=0.00001"]))
|
||||
self.nodes.append(start_node(1, self.options.tmpdir, ["-debug","-logtimemicros"]))
|
||||
connect_nodes(self.nodes[0], 1)
|
||||
|
||||
|
@ -32,7 +32,7 @@ class AbandonConflictTest(BitcoinTestFramework):
|
|||
|
||||
sync_blocks(self.nodes)
|
||||
newbalance = self.nodes[0].getbalance()
|
||||
assert(balance - newbalance <= Decimal("3")) #no more than fees lost
|
||||
assert(balance - newbalance < Decimal("0.01")) #no more than fees lost
|
||||
balance = newbalance
|
||||
|
||||
url = urllib.parse.urlparse(self.nodes[1].url)
|
||||
|
@ -49,33 +49,33 @@ class AbandonConflictTest(BitcoinTestFramework):
|
|||
inputs.append({"txid":txB, "vout":nB})
|
||||
outputs = {}
|
||||
|
||||
outputs[self.nodes[0].getnewaddress()] = Decimal("14")
|
||||
outputs[self.nodes[0].getnewaddress()] = Decimal("14.99998")
|
||||
outputs[self.nodes[1].getnewaddress()] = Decimal("5")
|
||||
signed = self.nodes[0].signrawtransaction(self.nodes[0].createrawtransaction(inputs, outputs))
|
||||
txAB1 = self.nodes[0].sendrawtransaction(signed["hex"])
|
||||
|
||||
# Identify the 14.99998btc output
|
||||
nAB = next(i for i, vout in enumerate(self.nodes[0].getrawtransaction(txAB1, 1)["vout"]) if vout["value"] == Decimal("14"))
|
||||
nAB = next(i for i, vout in enumerate(self.nodes[0].getrawtransaction(txAB1, 1)["vout"]) if vout["value"] == Decimal("14.99998"))
|
||||
|
||||
#Create a child tx spending AB1 and C
|
||||
inputs = []
|
||||
inputs.append({"txid":txAB1, "vout":nAB})
|
||||
inputs.append({"txid":txC, "vout":nC})
|
||||
outputs = {}
|
||||
outputs[self.nodes[0].getnewaddress()] = Decimal("23")
|
||||
outputs[self.nodes[0].getnewaddress()] = Decimal("24.9996")
|
||||
signed2 = self.nodes[0].signrawtransaction(self.nodes[0].createrawtransaction(inputs, outputs))
|
||||
txABC2 = self.nodes[0].sendrawtransaction(signed2["hex"])
|
||||
|
||||
# In mempool txs from self should increase balance from change
|
||||
newbalance = self.nodes[0].getbalance()
|
||||
assert_equal(newbalance, balance - Decimal("30") + Decimal("23"))
|
||||
assert_equal(newbalance, balance - Decimal("30") + Decimal("24.9996"))
|
||||
balance = newbalance
|
||||
|
||||
# Restart the node with a higher min relay fee so the parent tx is no longer in mempool
|
||||
# TODO: redo with eviction
|
||||
# Note had to make sure tx did not have AllowFree priority
|
||||
stop_node(self.nodes[0],0)
|
||||
self.nodes[0]=start_node(0, self.options.tmpdir, ["-debug","-logtimemicros","-minrelaytxfee=5"])
|
||||
self.nodes[0]=start_node(0, self.options.tmpdir, ["-debug","-logtimemicros","-minrelaytxfee=0.0001"])
|
||||
|
||||
# Verify txs no longer in mempool
|
||||
assert_equal(len(self.nodes[0].getrawmempool()), 0)
|
||||
|
@ -83,7 +83,7 @@ class AbandonConflictTest(BitcoinTestFramework):
|
|||
# Not in mempool txs from self should only reduce balance
|
||||
# inputs are still spent, but change not received
|
||||
newbalance = self.nodes[0].getbalance()
|
||||
assert_equal(newbalance, balance - Decimal("23"))
|
||||
assert_equal(newbalance, balance - Decimal("24.9996"))
|
||||
# Unconfirmed received funds that are not in mempool, also shouldn't show
|
||||
# up in unconfirmed balance
|
||||
unconfbalance = self.nodes[0].getunconfirmedbalance() + self.nodes[0].getbalance()
|
||||
|
@ -101,7 +101,7 @@ class AbandonConflictTest(BitcoinTestFramework):
|
|||
|
||||
# Verify that even with a low min relay fee, the tx is not reaccepted from wallet on startup once abandoned
|
||||
stop_node(self.nodes[0],0)
|
||||
self.nodes[0]=start_node(0, self.options.tmpdir, ["-debug","-logtimemicros","-minrelaytxfee=1"])
|
||||
self.nodes[0]=start_node(0, self.options.tmpdir, ["-debug","-logtimemicros","-minrelaytxfee=0.00001"])
|
||||
assert_equal(len(self.nodes[0].getrawmempool()), 0)
|
||||
assert_equal(self.nodes[0].getbalance(), balance)
|
||||
|
||||
|
@ -110,21 +110,21 @@ class AbandonConflictTest(BitcoinTestFramework):
|
|||
# But its child tx remains abandoned
|
||||
self.nodes[0].sendrawtransaction(signed["hex"])
|
||||
newbalance = self.nodes[0].getbalance()
|
||||
assert_equal(newbalance, balance - Decimal("20") + Decimal("14"))
|
||||
assert_equal(newbalance, balance - Decimal("20") + Decimal("14.99998"))
|
||||
balance = newbalance
|
||||
|
||||
# Send child tx again so its unabandoned
|
||||
self.nodes[0].sendrawtransaction(signed2["hex"])
|
||||
newbalance = self.nodes[0].getbalance()
|
||||
assert_equal(newbalance, balance - Decimal("10") - Decimal("14") + Decimal("23"))
|
||||
assert_equal(newbalance, balance - Decimal("10") - Decimal("14.99998") + Decimal("24.9996"))
|
||||
balance = newbalance
|
||||
|
||||
# Remove using high relay fee again
|
||||
stop_node(self.nodes[0],0)
|
||||
self.nodes[0]=start_node(0, self.options.tmpdir, ["-debug","-logtimemicros","-minrelaytxfee=5"])
|
||||
self.nodes[0]=start_node(0, self.options.tmpdir, ["-debug","-logtimemicros","-minrelaytxfee=0.0001"])
|
||||
assert_equal(len(self.nodes[0].getrawmempool()), 0)
|
||||
newbalance = self.nodes[0].getbalance()
|
||||
assert_equal(newbalance, balance - Decimal("23"))
|
||||
assert_equal(newbalance, balance - Decimal("24.9996"))
|
||||
balance = newbalance
|
||||
|
||||
# Create a double spend of AB1 by spending again from only A's 10 output
|
||||
|
@ -132,7 +132,7 @@ class AbandonConflictTest(BitcoinTestFramework):
|
|||
inputs =[]
|
||||
inputs.append({"txid":txA, "vout":nA})
|
||||
outputs = {}
|
||||
outputs[self.nodes[1].getnewaddress()] = Decimal("9")
|
||||
outputs[self.nodes[1].getnewaddress()] = Decimal("9.999")
|
||||
tx = self.nodes[0].createrawtransaction(inputs, outputs)
|
||||
signed = self.nodes[0].signrawtransaction(tx)
|
||||
self.nodes[1].sendrawtransaction(signed["hex"])
|
||||
|
|
|
@ -14,10 +14,13 @@ from test_framework.test_framework import BitcoinTestFramework
|
|||
from test_framework.authproxy import JSONRPCException
|
||||
from test_framework.util import (
|
||||
assert_equal,
|
||||
assert_greater_than,
|
||||
assert_greater_than_or_equal,
|
||||
assert_raises,
|
||||
assert_is_hex_string,
|
||||
assert_is_hash_string,
|
||||
start_nodes,
|
||||
start_node,
|
||||
connect_nodes_bi,
|
||||
)
|
||||
|
||||
|
@ -37,7 +40,9 @@ class BlockchainTest(BitcoinTestFramework):
|
|||
self.num_nodes = 2
|
||||
|
||||
def setup_network(self, split=False):
|
||||
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir)
|
||||
self.nodes = []
|
||||
self.nodes.append(start_node(0, self.options.tmpdir, ["-prune=1"]))
|
||||
self.nodes.append(start_node(1, self.options.tmpdir, ["-prune=2200"]))
|
||||
connect_nodes_bi(self.nodes, 0, 1)
|
||||
self.is_network_split = False
|
||||
self.sync_all()
|
||||
|
@ -45,8 +50,54 @@ class BlockchainTest(BitcoinTestFramework):
|
|||
def run_test(self):
|
||||
self._test_gettxoutsetinfo()
|
||||
self._test_getblockheader()
|
||||
self._test_getblockchaininfo()
|
||||
self.nodes[0].verifychain(4, 0)
|
||||
|
||||
# PL backported this entire test from upstream 0.16 to 1.14.3
|
||||
def _test_getblockchaininfo(self):
|
||||
|
||||
keys = [
|
||||
'bestblockhash',
|
||||
'bip9_softforks',
|
||||
'blocks',
|
||||
'chain',
|
||||
'chainwork',
|
||||
'difficulty',
|
||||
'headers',
|
||||
'initialblockdownload',
|
||||
'mediantime',
|
||||
'pruned',
|
||||
'size_on_disk',
|
||||
'softforks',
|
||||
'verificationprogress',
|
||||
'warnings',
|
||||
]
|
||||
res = self.nodes[0].getblockchaininfo()
|
||||
|
||||
# result should have these additional pruning keys if manual pruning is enabled
|
||||
assert_equal(sorted(res.keys()), sorted(['pruneheight', 'automatic_pruning'] + keys))
|
||||
|
||||
# size_on_disk should be > 0
|
||||
assert_greater_than(res['size_on_disk'], 0)
|
||||
|
||||
# pruneheight should be greater or equal to 0
|
||||
assert_greater_than_or_equal(res['pruneheight'], 0)
|
||||
|
||||
# check other pruning fields given that prune=1
|
||||
assert res['pruned']
|
||||
assert not res['automatic_pruning']
|
||||
|
||||
res = self.nodes[1].getblockchaininfo()
|
||||
# result should have these additional pruning keys if prune=2200
|
||||
assert_equal(sorted(res.keys()), sorted(['pruneheight', 'automatic_pruning', 'prune_target_size'] + keys))
|
||||
|
||||
# check related fields
|
||||
assert res['pruned']
|
||||
assert_equal(res['pruneheight'], 0)
|
||||
assert res['automatic_pruning']
|
||||
assert_equal(res['prune_target_size'], 2306867200)
|
||||
assert_greater_than(res['size_on_disk'], 0)
|
||||
|
||||
def _test_gettxoutsetinfo(self):
|
||||
node = self.nodes[0]
|
||||
res = node.gettxoutsetinfo()
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue