Squashed commit of the following:

commit 5e7222e4bc0401ef8c6d8049b12a62d4854ac85c
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Thu Mar 1 21:20:51 2018 +0200

    Cleanup

commit 2e1bc7a7cd6c72e7c3d2ff74cb30f7a56515006c
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Thu Mar 1 21:19:53 2018 +0200

    Cleanup

commit edd7fa87fb2c839c17457ff004d258a049df832f
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Thu Mar 1 21:18:57 2018 +0200

    Cleanup

commit ee34e1433806655a7123f0617802aa4771507dff
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Thu Mar 1 21:18:10 2018 +0200

    Cleanup

commit 20779e4021b8ab95a87289d2741ad2f0fbc7fb39
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Thu Mar 1 21:16:52 2018 +0200

    Cleanup

commit 084e1aa563807f5625ad3aaff376b598e139f2a7
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 18:42:49 2018 +0200

    Fix typo

commit c61a7c2319d3b9b96d1b5ad52ecf9d4f2fd92658
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 18:37:43 2018 +0200

    Cleanup

commit e435c0229b0cbe3f4a77f43b01ca87ed0552d405
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 18:17:58 2018 +0200

    Fix typos

commit e05bff3fea8915e95a473fe3266b2b1f727deca0
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 17:59:32 2018 +0200

    Fix typo

commit 8c55c7840232cef7fa4389a12f6f220e86f5f581
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 17:46:33 2018 +0200

    Fix typos

commit a1edfcc5cc29d815ba7e8c4baaf14c23ef93af64
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 17:39:41 2018 +0200

    Fix typos

commit 2ce2c4d180e936ccc5c10745a6430fda5de38a9b
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 17:14:10 2018 +0200

    Fix typo

commit 5bdc6cd5bc9cff93aa48fbdeda36d4d9774bfa18
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 17:12:14 2018 +0200

    Fix typo

commit d08749f549575efc6f44a7f80850bc439c12ad5c
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 16:54:06 2018 +0200

    Revert one change

commit a734bb1191c692f09f58bcc8e85160ce7c839905
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 16:52:45 2018 +0200

    Fix typo

commit 95fbc8d94bbefc0db989c83d0f053111bfed45e7
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 16:51:33 2018 +0200

    Fix typos

commit d17d540a83d035cf9a200f9a8b19f0fab6084728
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 16:49:36 2018 +0200

    Fix typo

commit c4bf4402210bcb926ccfb3928afeb3a8a7490b42
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 16:48:09 2018 +0200

    Fix typo

commit 25e7990848a1d723702e2d041c04bc68a6c1275f
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 16:47:01 2018 +0200

    Fix typo

commit d72ffb5b0253e0d7b992ffe13c40695421378dc3
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 16:45:20 2018 +0200

    Fix typo

commit 705e6f271192a575cc99d794545b0efe75d964c4
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 16:41:19 2018 +0200

    Revert one change

commit 4fd26cd29e21c42b027e37da2616761ebc399d16
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 16:39:41 2018 +0200

    Revert commit

commit 8a5cc627b1048368fe8807973d1f542bab2e045f
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 16:28:56 2018 +0200

    Fix typo

commit 0a24baa7258c0ae0f244d82af8d0831b148ab012
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 16:15:45 2018 +0200

    Fix typo

commit 38f93ecd90171fb881243f0de55b3452daccff20
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 15:56:49 2018 +0200

    Fix typos

commit 15446fd62400c36c2a51f7e6f13725cc8adfd924
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 15:48:00 2018 +0200

    Fix typos

commit 76533b41986bbc5826070a1e644215a74757c1db
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 15:04:38 2018 +0200

    Fix typo

commit aea330c2b0bf76975ec69142a732288cc8b192bd
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 14:46:29 2018 +0200

    Fix typo

commit 8b1b1d0be1dc44f36c22c54d1a3d56d84d456b92
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 14:40:23 2018 +0200

    Fix typo

commit 46ea76785a26cf20a664ed211c8f3fb9a283e127
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 14:14:17 2018 +0200

    Fix typo

commit e0d7c5748545dd0975507ad603623072fcc6bdea
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 14:08:24 2018 +0200

    Fix typo

commit 604d5a244323b17ba596b12d245407e1cf63a375
Merge: 6c081ca 1c65b2b
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 09:03:23 2018 +0200

    Merge pull request #36 from rex4539/patch-36

    Fix typo

commit 6c081caf28b7cef9e62ed523284dff90e4add16d
Merge: 899e5d2 88fa2d9
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 09:02:49 2018 +0200

    Merge pull request #35 from rex4539/patch-35

    Fix typo

commit 899e5d2c343ac7ea5069b8548e5df86c8e963e21
Merge: 6380c7f 40e73e2
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 09:02:16 2018 +0200

    Merge pull request #34 from rex4539/patch-34

    Fix typo

commit 6380c7f740246474c69d8145bde61688551efe83
Merge: f592274 4567667
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 09:01:47 2018 +0200

    Merge pull request #33 from rex4539/patch-33

    Fix typos

commit f592274a713162da0083bd6d22fb47cb1afcdba9
Merge: d86ef7e 4aeaa3a
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 09:01:14 2018 +0200

    Merge pull request #32 from rex4539/patch-32

    Fix typo

commit d86ef7e5e4f7e9c2014358ec5b647d1815eb304d
Merge: fe0b432 5cdd1b2
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 09:00:41 2018 +0200

    Merge pull request #31 from rex4539/patch-31

    Fix typo

commit fe0b432ee125ae0b876af2c26139dfc979005a3b
Merge: 6fd6d0d 70130d0
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 09:00:12 2018 +0200

    Merge pull request #30 from rex4539/patch-30

    Fix typos

commit 6fd6d0dcf3714118a623c0d8d84aabb4578410a8
Merge: 389660f 3377426
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:59:42 2018 +0200

    Merge pull request #29 from rex4539/patch-29

    Fix typo

commit 389660f856cb60ff475a8757aad3873b99213cc0
Merge: a0b85ce 40643eb
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:59:15 2018 +0200

    Merge pull request #28 from rex4539/patch-28

    Fix typo

commit a0b85ce3b4d2e6596da0727e05c1fe15c289b1e7
Merge: 6f9a1c7 23ead80
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:58:42 2018 +0200

    Merge pull request #27 from rex4539/patch-27

    Fix typo

commit 6f9a1c71a680bb3ed1c249dd42bf0a54663d0af3
Merge: b880547 3612eab
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:58:06 2018 +0200

    Merge pull request #26 from rex4539/patch-26

    Patch 26

commit b880547415afeae36bd19867388e60a3040a15ca
Merge: a3b7da2 5c3177f
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:57:24 2018 +0200

    Merge pull request #25 from rex4539/patch-25

    Fix typo

commit a3b7da2c6d6691f38751292e1aea63498a325788
Merge: edd8586 60026ef
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:56:52 2018 +0200

    Merge pull request #24 from rex4539/patch-24

    Fix typo

commit edd8586fdf8c112f4c513804610c237d7e2e80ef
Merge: 0c28eb7 f979c00
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:56:12 2018 +0200

    Merge pull request #23 from rex4539/patch-23

    Fix typo

commit 0c28eb7717821b1d68016f40911d07f2a7231b4f
Merge: 775beb6 c900722
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:55:42 2018 +0200

    Merge pull request #22 from rex4539/patch-22

    Fix typo

commit 775beb625beb1fc5f72388c076b295de4b8ff039
Merge: a0cf889 1027543
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:55:16 2018 +0200

    Merge pull request #21 from rex4539/patch-21

    Fix typo

commit a0cf88971e756c37c406bab3066c11d6fc7f6d74
Merge: 4504b48 f3fa89b
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:54:44 2018 +0200

    Merge pull request #20 from rex4539/patch-20

    Fix typo

commit 4504b4824b3438e931ca8d24a56b1887657e87cd
Merge: dd0bcbf 2699eca
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:54:20 2018 +0200

    Merge pull request #19 from rex4539/patch-19

    Fix typo

commit dd0bcbfc89293e9760156d5534f3a558451e1f29
Merge: abfb65a f02ef2e
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:53:46 2018 +0200

    Merge pull request #18 from rex4539/patch-18

    Fix typos

commit abfb65afaed49c34b9875df79f6fe6eb2b7bf769
Merge: 68b46b7 6485c90
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:53:08 2018 +0200

    Merge pull request #17 from rex4539/patch-17

    Fix typo

commit 68b46b75d2e5b7ae97e83fc5541c46b4907a7899
Merge: a131e84 fcc0828
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:52:39 2018 +0200

    Merge pull request #16 from rex4539/patch-16

    Fix typo

commit a131e844652e58aff78fa8952e7547a9ba82b8a1
Merge: 8487c0e 8a688ff
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:51:54 2018 +0200

    Merge pull request #15 from rex4539/patch-15

    Fix typo

commit 8487c0e39092b74e977c7a60f4a07a27606756a8
Merge: bcc4cb4 bb60b83
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:51:28 2018 +0200

    Merge pull request #14 from rex4539/patch-14

    Fix typos

commit bcc4cb46130e789faa9adae9b159ca818f67ec52
Merge: 23e66e9 53539bb
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:51:00 2018 +0200

    Merge pull request #13 from rex4539/patch-13

    Fix typos

commit 23e66e956bff2d6935c7a4dd570d457294018a77
Merge: 56956cf 0808445
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:50:27 2018 +0200

    Merge pull request #12 from rex4539/patch-12

    Fix typo

commit 56956cf23ba1208aa39cb3ab1ef60375c6630263
Merge: 77007d4 7a4f064
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:49:59 2018 +0200

    Merge pull request #11 from rex4539/patch-11

    Fix typo

commit 77007d49fa1d8cb80aef02bea1dd15e522a47c90
Merge: e78ad0c 48c33fb
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:49:16 2018 +0200

    Merge pull request #10 from rex4539/patch-10

    Fix typo

commit e78ad0cf0d91955a848f5e953a042eabdcdac198
Merge: 38a3e08 809f01c
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:48:33 2018 +0200

    Merge pull request #9 from rex4539/patch-9

    Fix typo

commit 38a3e08699fe4c4ec715b1783dba18bff6b829fb
Merge: eee3c28 fec279c
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:48:05 2018 +0200

    Merge pull request #8 from rex4539/patch-8

    Fix typo

commit eee3c286eb84f994310142a9e7fdbd36a671e593
Merge: 702635b cf81b4e
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:47:33 2018 +0200

    Merge pull request #7 from rex4539/patch-7

    Fix typo

commit 702635bb34abb2f83ded27ae95deefd5b6e7df93
Merge: d7497ea 3bbcc3d
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:47:01 2018 +0200

    Merge pull request #6 from rex4539/patch-6

    Fix typo

commit d7497ea070e03380cf1d4f533b7dc4b881f724f8
Merge: bfcc1e8 f639727
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:45:33 2018 +0200

    Merge pull request #5 from rex4539/patch-5

    Fix typos

commit bfcc1e8ae2094ca4e9837f623999705f538aff04
Merge: f4440ec 55262fe
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:45:05 2018 +0200

    Merge pull request #4 from rex4539/patch-4

    Remove space for word "backup"

commit f4440ecd4a7367e6bc4a5f75bea112290017ed2b
Merge: f8b487f 61d5279
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:44:31 2018 +0200

    Merge pull request #3 from rex4539/patch-3

    Fix typos in zmq.md

commit f8b487f5699990fabc7fc383d02bc728db3cb9aa
Merge: 60104a7 f2ce50f
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:42:51 2018 +0200

    Merge pull request #2 from rex4539/patch-2

    Fix typo in security-warnings.md

commit 60104a7034f55284afb814e81a1430a8b2b0d8d1
Merge: be262f0 af7dfe0
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 08:41:48 2018 +0200

    Merge pull request #1 from rex4539/patch-1

    Fix typos

commit 1c65b2bd0c49f7f392d0e3a2db14ce1366a87171
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 07:35:26 2018 +0200

    Fix typo

commit 88fa2d966a3b462ed34a9a4659fc390711cc0276
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 07:21:00 2018 +0200

    Fix typo

commit 40e73e258671f21d2b2205509e9cae1f50294752
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 07:14:21 2018 +0200

    Fix typo

commit 4567667fcc8b4197dfd51da34fe82b0f2fb78127
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 06:44:40 2018 +0200

    Fix typos

commit 4aeaa3a3d6335302c53c0f5f4ef81de05e266479
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 05:55:25 2018 +0200

    Fix typo

commit 5cdd1b29b4c90492aa15fed7940984e1d675052f
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 05:36:46 2018 +0200

    Fix typo

commit 70130d05f1646c8b9fb1f33c4efbe2a5fcf7138b
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 05:28:21 2018 +0200

    Fix typos

commit 33774261b1c63e5640aa1dd251edb67892ed7a5b
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 05:00:56 2018 +0200

    Fix typo

commit 40643ebfcd85ee257a4576e85d2fb6c73dad17b5
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 04:51:57 2018 +0200

    Fix typo

commit 23ead80e05116ebfeaac0a00d5bd4a158fbeb54e
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 04:29:53 2018 +0200

    Fix typo

commit 3612eaba2dcf273e94cac9ad889723776ce55108
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 04:19:36 2018 +0200

    Fix typos

commit 5c3177f5d191d1f4e4d9f78ae4b75381010f7768
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 04:13:03 2018 +0200

    Fix typo

commit 60026efe27a39300e428879ad8dba94f19934870
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 04:08:09 2018 +0200

    Fix typo

commit f979c0074efd66804f229c8b3cc6e812d7f26406
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 04:01:44 2018 +0200

    Fix typo

commit c9007220a8a727c1cfe3b25b453c178eacd431f3
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 03:52:33 2018 +0200

    Fix typo

commit 1027543bd30701c4b09aa66226281a10563db910
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 03:36:19 2018 +0200

    Fix typo

commit f3fa89bcd30e0cb45ff4391e78d02452c9227be0
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 03:34:37 2018 +0200

    Fix typo

commit 2699eca938f1e413a29d4408a271aaafd27969cc
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 03:30:29 2018 +0200

    Fix typo

commit f02ef2e495fe43142d305f5c4f40dcfa3d2cb423
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 03:22:36 2018 +0200

    Fix typos

commit 6485c908433bb91fd70d7e18cf3611c9a96115a7
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 03:10:06 2018 +0200

    Fix typo

commit fcc082850564b14b86b1932dfc5a099816c72ef1
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 03:06:26 2018 +0200

    Fix typo

commit 8a688ff7405d67bd4c77b0aa0ebdd4b4a8a9a6a7
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 03:02:50 2018 +0200

    Fix typo

commit bb60b83853ed0a82ca47dd58d55f1849ddcf23ab
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 02:59:25 2018 +0200

    Fix typos

commit 53539bb720c7676b9d37e25dde3423db3aa7bfa1
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 02:50:55 2018 +0200

    Fix typos

commit 080844581d6488ab797ac188acae9c4b2e1d0c59
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 01:05:54 2018 +0200

    Fix typo

commit 7a4f0649ac5e71f39f0bef7f2e1fcb6fafad0291
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 00:16:31 2018 +0200

    Fix typo

commit 48c33fb3f9ab1ad287987d147ee4bbe186f7ade1
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 00:07:42 2018 +0200

    Fix typo

commit 809f01ca4f785a7b5bc9cc2c388e0ae814ecaa95
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Tue Feb 27 00:02:34 2018 +0200

    Fix typo

commit fec279cac89aa917be929447c81177811728361a
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Mon Feb 26 23:55:27 2018 +0200

    Fix typo

commit cf81b4e12399570545372d4c9daceca8e70142d5
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Mon Feb 26 23:48:43 2018 +0200

    Fix typo

commit 3bbcc3d9986caf8df99bec5d8a18d0f0c8990e06
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Mon Feb 26 23:28:52 2018 +0200

    Fix typo

commit f639727525dbd23f5f2d0f89e7be13d868e984c3
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Mon Feb 26 23:13:12 2018 +0200

    Fix typos

commit 55262fe9c5e1e127c6b817a0c2ab3f9db3ac35b9
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Mon Feb 26 22:46:52 2018 +0200

    Remove space for word "backup"

commit 61d52797d4d26a90dcc15e2bcd6f19a5f36faac3
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Mon Feb 26 22:23:31 2018 +0200

    Fix typos in zmq.md

commit f2ce50f10e67b4265e559a432681bc44828ae59b
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Mon Feb 26 22:12:58 2018 +0200

    Fix typo in security-warnings.md

commit af7dfe046c12109e44ddc18dff07ede8755cf4f9
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Mon Feb 26 21:59:24 2018 +0200

    Fix typos

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
This commit is contained in:
Daira Hopwood 2018-03-02 11:45:05 +00:00
parent 93332d6e84
commit c938fb1f17
53 changed files with 80 additions and 80 deletions

View File

@ -37,6 +37,6 @@ Run `zcashd --version` to find out
This includes the relevant contents of `~/.zcash/debug.log`. You can paste raw text, attach the file directly in the issue or link to the text via a pastebin type site.
Please also include any non-standard things you did during compilation (extra flags, dependency version changes etc.) if applicable.
### Do you have a back up of `~/.zcash` directory and/or take a VM snapshot?
### Do you have a backup of `~/.zcash` directory and/or take a VM snapshot?
- Backing up / making a copy of the `~/.zcash` directory might help make the problem reproducible. Please redact appropriately.
- Taking a VM snapshot is really helpful for interactively testing fixes

View File

@ -46,7 +46,7 @@ RPC parameter conventions:
Command | Parameters | Description
--- | --- | ---
z_getbalance<br>| address [minconf=1] | Returns the balance of a taddr or zaddr belonging to the nodes wallet.<br><br>Optionally set the minimum number of confirmations a private or transaction transaction must have in order to be included in the balance. Use 0 to count unconfirmed transactions.
z_getbalance<br>| address [minconf=1] | Returns the balance of a taddr or zaddr belonging to the nodes wallet.<br><br>Optionally set the minimum number of confirmations a private or transparent transaction must have in order to be included in the balance. Use 0 to count unconfirmed transactions.
z_gettotalbalance<br>| [minconf=1] | Return the total value of funds stored in the nodes wallet.<br><br>Optionally set the minimum number of confirmations a private or transparent transaction must have in order to be included in the balance. Use 0 to count unconfirmed transactions.<br><br>Output:<br>{<br>"transparent" : 1.23,<br>"private" : 4.56,<br>"total" : 5.79}
### Addresses
@ -72,7 +72,7 @@ Command | Parameters | Description
--- | --- | ---
z_listreceivedbyaddress<br> | zaddr [minconf=1] | Return a list of amounts received by a zaddr belonging to the nodes wallet.<br><br>Optionally set the minimum number of confirmations which a received amount must have in order to be included in the result. Use 0 to count unconfirmed transactions.<br><br>Output:<br>[{<br>“txid”: “4a0f…”,<br>“amount”: 0.54,<br>“memo”:”F0FF…”,}, {...}, {...}<br>]
z_sendmany<br> | fromaddress amounts [minconf=1] [fee=0.0001] | _This is an Asynchronous RPC call_<br><br>Send funds from an address to multiple outputs. The address can be either a taddr or a zaddr.<br><br>Amounts is a list containing key/value pairs corresponding to the addresses and amount to pay. Each output address can be in taddr or zaddr format.<br><br>When sending to a zaddr, you also have the option of attaching a memo in hexadecimal format.<br><br>**NOTE:**When sending coinbase funds to a zaddr, the node's wallet does not allow any change. Put another way, spending a partial amount of a coinbase utxo is not allowed. This is not a consensus rule but a local wallet rule due to the current implementation of z_sendmany. In future, this rule may be removed.<br><br>Example of Outputs parameter:<br>[{“address”:”t123…”, “amount”:0.005},<br>,{“address”:”z010…”,”amount”:0.03, “memo”:”f508af…”}]<br><br>Optionally set the minimum number of confirmations which a private or transparent transaction must have in order to be used as an input. When sending from a zaddr, minconf must be greater than zero.<br><br>Optionally set a transaction fee, which by default is 0.0001 ZEC.<br><br>Any transparent change will be sent to a new transparent address. Any private change will be sent back to the zaddr being used as the source of funds.<br><br>Returns an operationid. You use the operationid value with z_getoperationstatus and z_getoperationresult to obtain the result of sending funds, which if successful, will be a txid.
z_shieldcoinbase<br> | fromaddress toaddress [fee=0.0001] [limit=50] | _This is an Asynchronous RPC call_<br><br>Shield transparent coinbase funds by sending to a shielded z address. Utxos selected for shielding will be locked. If there is an error, they are unlocked. The RPC call `listlockunspent` can be used to return a list of locked utxos.<br><br>The number of coinbase utxos selected for shielding can be set with the limit parameter, which has a default value of 50. If the parameter is set to 0, the number of utxos selected is limited by the `-mempooltxinputlimit` option. Any limit is constrained by a consensus rule defining a maximum transaction size of 100000 bytes. <br><br>The from address is a taddr or "*" for all taddrs belonging to the wallet. The to address is a zaddr. The default fee is 0.0001.<br><br>Returns an object containing an operationid which can be used with z_getoperationstatus and z_getoperationresult, along with key-value pairs regarding how many utxos are being shielded in this trasaction and what remains to be shielded.
z_shieldcoinbase<br> | fromaddress toaddress [fee=0.0001] [limit=50] | _This is an Asynchronous RPC call_<br><br>Shield transparent coinbase funds by sending to a shielded z address. Utxos selected for shielding will be locked. If there is an error, they are unlocked. The RPC call `listlockunspent` can be used to return a list of locked utxos.<br><br>The number of coinbase utxos selected for shielding can be set with the limit parameter, which has a default value of 50. If the parameter is set to 0, the number of utxos selected is limited by the `-mempooltxinputlimit` option. Any limit is constrained by a consensus rule defining a maximum transaction size of 100000 bytes. <br><br>The from address is a taddr or "*" for all taddrs belonging to the wallet. The to address is a zaddr. The default fee is 0.0001.<br><br>Returns an object containing an operationid which can be used with z_getoperationstatus and z_getoperationresult, along with key-value pairs regarding how many utxos are being shielded in this transaction and what remains to be shielded.
### Operations
@ -159,7 +159,7 @@ RPC_WALLET_ERROR (-4) | _Unspecified problem with wallet_
"Could not find previous JoinSplit anchor" | Try restarting node with `-reindex`.
"Error decrypting output note of previous JoinSplit: __" |
"Could not find witness for note commitment" | Try restarting node with `-rescan`.
"Witness for note commitment is null" | Missing witness for note commitement.
"Witness for note commitment is null" | Missing witness for note commitment.
"Witness for spendable note does not have same anchor as change input" | Invalid anchor for spendable note witness.
"Not enough funds to pay miners fee" | Retry with sufficient funds.
"Missing hex data for raw transaction" | Raw transaction data is null.

View File

@ -42,7 +42,7 @@ Wallet encryption is disabled, for several reasons:
You should use full-disk encryption (or encryption of your home directory) to
protect your wallet at rest, and should assume (even unprivileged) users who are
runnng on your OS can read your wallet.dat file.
running on your OS can read your wallet.dat file.
Side-Channel Attacks
--------------------

View File

@ -2,11 +2,11 @@
[ZeroMQ](http://zeromq.org/) is a lightweight wrapper around TCP
connections, inter-process communication, and shared-memory,
providing various message-oriented semantics such as publish/subcribe,
providing various message-oriented semantics such as publish/subscribe,
request/reply, and push/pull.
The Zcash daemon can be configured to act as a trusted "border
router", implementing the zcash wire protocol and relay, making
router", implementing the Zcash wire protocol and relay, making
consensus decisions, maintaining the local blockchain database,
broadcasting locally generated transactions into the network, and
providing a queryable RPC interface to interact on a polled basis for
@ -102,6 +102,6 @@ and just the tip will be notified. It is up to the subscriber to
retrieve the chain from the last known block to the new tip.
There are several possibilities that ZMQ notification can get lost
during transmission depending on the communication type your are
during transmission depending on the communication type you are
using. Zcashd appends an up-counting sequence number to each
notification which allows listeners to detect lost notifications.

View File

@ -234,7 +234,7 @@ protected:
//! Select an address to connect to, if newOnly is set to true, only the new table is selected from.
CAddrInfo Select_(bool newOnly);
//! Wraps GetRandInt to allow tests to override RandomInt and make it determinismistic.
//! Wraps GetRandInt to allow tests to override RandomInt and make it deterministic.
virtual int RandomInt(int nMax);
#ifdef DEBUG_ADDRMAN

View File

@ -24,7 +24,7 @@ using namespace std;
*
* To subclass AsyncRPCOperation, implement the main() method.
* Update the operation status as work is underway and completes.
* If main() can be interrupted, inmplement the cancel() method.
* If main() can be interrupted, implement the cancel() method.
*/
typedef std::string AsyncRPCOperationId;

View File

@ -194,7 +194,7 @@ public:
K GetKey() {
K ret;
if (vchData.size() == Size) {
//if base58 encouded data not holds a ext key, return a !IsValid() key
//if base58 encoded data not holds a ext key, return a !IsValid() key
ret.Decode(&vchData[0]);
}
return ret;

View File

@ -167,7 +167,7 @@ public:
nSize += ::GetSerializeSize(VARINT(nCode), nType, nVersion);
// spentness bitmask
nSize += nMaskSize;
// txouts themself
// txouts
for (unsigned int i = 0; i < vout.size(); i++)
if (!vout[i].IsNull())
nSize += ::GetSerializeSize(CTxOutCompressor(REF(vout[i])), nType, nVersion);

View File

@ -16,7 +16,7 @@ namespace Consensus {
* Being array indices, these MUST be numbered consecutively.
*
* The order of these indices MUST match the order of the upgrades on-chain, as
* several functions depends on the enum being sorted.
* several functions depend on the enum being sorted.
*/
enum UpgradeIndex {
// Sprout must be first

View File

@ -118,7 +118,7 @@ TEST(Mempool, TxInputLimit) {
// Set a limit
mapArgs["-mempooltxinputlimit"] = "10";
// Check it stil fails as expected
// Check it still fails as expected
CValidationState state2;
EXPECT_FALSE(AcceptToMemoryPool(pool, state2, tx1, false, &missingInputs));
EXPECT_EQ(state2.GetRejectReason(), "bad-txns-version-too-low");

View File

@ -17,7 +17,7 @@
static const char* WWW_AUTH_HEADER_DATA = "Basic realm=\"jsonrpc\"";
/** Simple one-shot callback timer to be used by the RPC mechanism to e.g.
* re-lock the wellet.
* re-lock the wallet.
*/
class HTTPRPCTimer : public RPCTimerBase
{

View File

@ -332,7 +332,7 @@ std::string HelpMessage(HelpMessageMode mode)
const bool showDebug = GetBoolArg("-help-debug", false);
// When adding new options to the categories, please keep and ensure alphabetical ordering.
// Do not translate _(...) -help-debug options, Many technical terms, and only a very small audience, so is unnecessary stress to translators
// Do not translate _(...) -help-debug options, many technical terms, and only a very small audience, so is unnecessary stress to translators
string strUsage = HelpMessageGroup(_("Options:"));
strUsage += HelpMessageOpt("-?", _("This help message"));

View File

@ -468,7 +468,7 @@ void FindNextBlocksToDownload(NodeId nodeid, unsigned int count, std::vector<CBl
}
// Iterate over those blocks in vToFetch (in forward direction), adding the ones that
// are not yet downloaded and not in flight to vBlocks. In the mean time, update
// are not yet downloaded and not in flight to vBlocks. In the meantime, update
// pindexLastCommonBlock as long as all ancestors are already downloaded, or if it's
// already part of our chain (and therefore don't need it even if pruned).
BOOST_FOREACH(CBlockIndex* pindex, vToFetch) {
@ -2143,7 +2143,7 @@ void PartitionCheck(bool (*initialDownloadCheck)(), CCriticalSection& cs, const
while (i->GetBlockTime() >= startTime) {
++nBlocks;
i = i->pprev;
if (i == NULL) return; // Ran out of chain, we must not be fully sync'ed
if (i == NULL) return; // Ran out of chain, we must not be fully synced
}
// How likely is it to find that many by chance?

View File

@ -62,12 +62,12 @@ CMerkleBlock::CMerkleBlock(const CBlock& block, const std::set<uint256>& txids)
uint256 CPartialMerkleTree::CalcHash(int height, unsigned int pos, const std::vector<uint256> &vTxid) {
if (height == 0) {
// hash at height 0 is the txids themself
// hash at height 0 is the txid itself
return vTxid[pos];
} else {
// calculate left hash
uint256 left = CalcHash(height-1, pos*2, vTxid), right;
// calculate right hash if not beyond the end of the array - copy left hash otherwise1
// calculate right hash if not beyond the end of the array - copy left hash otherwise
if (pos*2+1 < CalcTreeWidth(height-1))
right = CalcHash(height-1, pos*2+1, vTxid);
else

View File

@ -67,7 +67,7 @@ protected:
return (nTransactions+(1 << height)-1) >> height;
}
/** calculate the hash of a node in the merkle tree (at leaf level: the txid's themselves) */
/** calculate the hash of a node in the merkle tree (at leaf level: the txid itself) */
uint256 CalcHash(int height, unsigned int pos, const std::vector<uint256> &vTxid);
/** recursive function that traverses tree nodes, storing the data as bits and hashes */

View File

@ -658,7 +658,7 @@ void static BitcoinMiner()
equi eq(1);
eq.setstate(&curr_state);
// Intialization done, start algo driver.
// Initialization done, start algo driver.
eq.digit0(0);
eq.xfull = eq.bfull = eq.hfull = 0;
eq.showbsizes(0);

View File

@ -1074,7 +1074,7 @@ void ThreadSocketHandler()
// happens when optimistic write failed, we choose to first drain the
// write buffer in this case before receiving more. This avoids
// needlessly queueing received data, if the remote peer is not themselves
// receiving data. This means properly utilizing TCP flow control signalling.
// receiving data. This means properly utilizing TCP flow control signaling.
// * Otherwise, if there is no (complete) message in the receive buffer,
// or there is space left in the buffer, select() for receiving data.
// * (if neither of the above applies, there is certainly one message

View File

@ -140,7 +140,7 @@ bool static LookupIntern(const char *pszName, std::vector<CNetAddr>& vIP, unsign
return false;
do {
// Should set the timeout limit to a resonable value to avoid
// Should set the timeout limit to a reasonable value to avoid
// generating unnecessary checking call during the polling loop,
// while it can still response to stop request quick enough.
// 2 seconds looks fine in our situation.

View File

@ -61,7 +61,7 @@ class CNetAddr
bool IsIPv4() const; // IPv4 mapped address (::FFFF:0:0/96, 0.0.0.0/0)
bool IsIPv6() const; // IPv6 address (not mapped IPv4, not Tor)
bool IsRFC1918() const; // IPv4 private networks (10.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12)
bool IsRFC2544() const; // IPv4 inter-network communcations (192.18.0.0/15)
bool IsRFC2544() const; // IPv4 inter-network communications (192.18.0.0/15)
bool IsRFC6598() const; // IPv4 ISP-level NAT (100.64.0.0/10)
bool IsRFC5737() const; // IPv4 documentation addresses (192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24)
bool IsRFC3849() const; // IPv6 documentation address (2001:0DB8::/32)

View File

@ -28,7 +28,7 @@ class CTxMemPoolEntry;
* included in blocks before transactions of lower fee/priority. So for
* example if you wanted to know what fee you should put on a transaction to
* be included in a block within the next 5 blocks, you would start by looking
* at the bucket with with the highest fee transactions and verifying that a
* at the bucket with the highest fee transactions and verifying that a
* sufficiently high percentage of them were confirmed within 5 blocks and
* then you would look at the next highest fee bucket, and so on, stopping at
* the last bucket to pass the test. The average fee of transactions in this
@ -71,7 +71,7 @@ static const double DEFAULT_DECAY = .998;
/**
* We will instantiate two instances of this class, one to track transactions
* that were included in a block due to fee, and one for tx's included due to
* that were included in a block due to fee, and one for txs included due to
* priority. We will lump transactions into a bucket according to their approximate
* fee or priority and then track how long it took for those txs to be included
* in a block. There is always a bucket into which any given double value
@ -100,7 +100,7 @@ private:
// and calcuate the totals for the current block to update the moving averages
std::vector<std::vector<int> > curBlockConf; // curBlockConf[Y][X]
// Sum the total priority/fee of all tx's in each bucket
// Sum the total priority/fee of all txs in each bucket
// Track the historical moving average of this total over blocks
std::vector<double> avg;
// and calculate the total for the current block to update the moving average
@ -217,7 +217,7 @@ static const double FEE_SPACING = 1.1;
static const double PRI_SPACING = 2;
/**
* We want to be able to estimate fees or priorities that are needed on tx's to be included in
* We want to be able to estimate fees or priorities that are needed on txs to be included in
* a certain number of blocks. Every time a block is added to the best chain, this class records
* stats on the transactions included in that block
*/

View File

@ -3,7 +3,7 @@
// Fix N, K, such that n = N/(k+1) is integer
// Fix M = 2^{n+1} hashes each of length N bits,
// H_0, ... , H_{M-1}, generated fom (n+1)-bit indices.
// H_0, ... , H_{M-1}, generated from (n+1)-bit indices.
// Problem: find binary tree on 2^K distinct indices,
// for which the exclusive-or of leaf hashes is all 0s.
// Additionally, it should satisfy the Wagner conditions:

View File

@ -405,7 +405,7 @@ static bool rest_getutxos(HTTPRequest* req, const std::string& strURIPart)
boost::split(uriParts, strUriParams, boost::is_any_of("/"));
}
// throw exception in case of a empty request
// throw exception in case of an empty request
std::string strRequestMutable = req->ReadBody();
if (strRequestMutable.length() == 0 && uriParts.size() == 0)
return RESTERR(req, HTTP_INTERNAL_SERVER_ERROR, "Error: empty request");
@ -485,7 +485,7 @@ static bool rest_getutxos(HTTPRequest* req, const std::string& strURIPart)
if (vOutPoints.size() > MAX_GETUTXOS_OUTPOINTS)
return RESTERR(req, HTTP_INTERNAL_SERVER_ERROR, strprintf("Error: max outpoints exceeded (max: %d, tried: %d)", MAX_GETUTXOS_OUTPOINTS, vOutPoints.size()));
// check spentness and form a bitmap (as well as a JSON capable human-readble string representation)
// check spentness and form a bitmap (as well as a JSON capable human-readable string representation)
vector<unsigned char> bitmap;
vector<CCoin> outs;
std::string bitmapStringRepresentation;

View File

@ -174,7 +174,7 @@ UniValue getblockcount(const UniValue& params, bool fHelp)
if (fHelp || params.size() != 0)
throw runtime_error(
"getblockcount\n"
"\nReturns the number of blocks in the longest block chain.\n"
"\nReturns the number of blocks in the best valid block chain.\n"
"\nResult:\n"
"n (numeric) The current block count\n"
"\nExamples:\n"
@ -530,7 +530,7 @@ UniValue gettxout(const UniValue& params, bool fHelp)
"\nArguments:\n"
"1. \"txid\" (string, required) The transaction id\n"
"2. n (numeric, required) vout value\n"
"3. includemempool (boolean, optional) Whether to included the mem pool\n"
"3. includemempool (boolean, optional) Whether to include the mempool\n"
"\nResult:\n"
"{\n"
" \"bestblock\" : \"hash\", (string) the block hash\n"

View File

@ -142,7 +142,7 @@ UniValue getpeerinfo(const UniValue& params, bool fHelp)
obj.push_back(Pair("pingwait", stats.dPingWait));
obj.push_back(Pair("version", stats.nVersion));
// Use the sanitized form of subver here, to avoid tricksy remote peers from
// corrupting or modifiying the JSON output by putting special characters in
// corrupting or modifying the JSON output by putting special characters in
// their ver message.
obj.push_back(Pair("subver", stats.cleanSubVer));
obj.push_back(Pair("inbound", stats.fInbound));

View File

@ -426,7 +426,7 @@ UniValue createrawtransaction(const UniValue& params, bool fHelp)
" ]\n"
"2. \"addresses\" (string, required) a json object with addresses as keys and amounts as values\n"
" {\n"
" \"address\": x.xxx (numeric, required) The key is the zcash address, the value is the " + CURRENCY_UNIT + " amount\n"
" \"address\": x.xxx (numeric, required) The key is the Zcash address, the value is the " + CURRENCY_UNIT + " amount\n"
" ,...\n"
" }\n"

View File

@ -102,7 +102,7 @@ bool static IsValidSignatureEncoding(const std::vector<unsigned char> &sig) {
// excluding the sighash byte.
// * R-length: 1-byte length descriptor of the R value that follows.
// * R: arbitrary-length big-endian encoded R value. It must use the shortest
// possible encoding for a positive integers (which means no null bytes at
// possible encoding for a positive integer (which means no null bytes at
// the start, except a single one when the next byte has its highest bit set).
// * S-length: 1-byte length descriptor of the S value that follows.
// * S: arbitrary-length big-endian encoded S value. The same rules apply.

View File

@ -139,7 +139,7 @@ const char* GetOpName(opcodetype opcode)
case OP_CHECKMULTISIG : return "OP_CHECKMULTISIG";
case OP_CHECKMULTISIGVERIFY : return "OP_CHECKMULTISIGVERIFY";
// expanson
// expansion
case OP_NOP1 : return "OP_NOP1";
case OP_NOP2 : return "OP_NOP2";
case OP_NOP3 : return "OP_NOP3";

View File

@ -45,7 +45,7 @@ public:
{
// DoS prevention: limit cache size to less than 10MB
// (~200 bytes per cache entry times 50,000 entries)
// Since there are a maximum of 20,000 signature operations per block
// Since there can be no more than 20,000 signature operations per block
// 50,000 is a reasonable default.
int64_t nMaxCacheSize = GetArg("-maxsigcachesize", 50000);
if (nMaxCacheSize <= 0) return;

View File

@ -51,7 +51,7 @@ public:
MutableTransactionSignatureCreator(const CKeyStore* keystoreIn, const CMutableTransaction* txToIn, unsigned int nInIn, const CAmount& amount, int nHashTypeIn) : TransactionSignatureCreator(keystoreIn, &tx, nInIn, amount, nHashTypeIn), tx(*txToIn) {}
};
/** A signature creator that just produces 72-byte empty signatyres. */
/** A signature creator that just produces 72-byte empty signatures. */
class DummySignatureCreator : public BaseSignatureCreator {
public:
DummySignatureCreator(const CKeyStore* keystoreIn) : BaseSignatureCreator(keystoreIn) {}

View File

@ -14,7 +14,7 @@ Copyright (c) 2012-2014 SCIPR Lab and contributors (see [AUTHORS] file).
[TOC]
<!---
NOTE: the file you are reading is in Markdown format, which is is fairly readable
NOTE: the file you are reading is in Markdown format, which is fairly readable
directly, but can be converted into an HTML file with much nicer formatting.
To do so, run "make doc" (this requires the python-markdown package) and view
the resulting file README.html. Alternatively, view the latest HTML version at
@ -84,7 +84,7 @@ The libsnark library currently provides a C++ implementation of:
This is easily adapted to any other Random Access Machine that satisfies a
simple load-store interface.
3. A scalable for TinyRAM using Proof-Carrying Data, as explained in \[BCTV14b]
4. Zero-knowldge cluster MapReduce, as explained in \[CTV15].
4. Zero-knowledge cluster MapReduce, as explained in \[CTV15].
The zkSNARK construction implemented by libsnark follows, extends, and
optimizes the approach described in \[BCTV14], itself an extension of
@ -272,7 +272,7 @@ To build just the static library `libsnark.a`, run:
$ make lib STATIC=1
Note that static compilation requires static versions of all libraries it depends on.
It may help to minize these dependencies by appending
It may help to minimize these dependencies by appending
`CURVE=ALT_BN128 NO_PROCPS=1 NO_GTEST=1 NO_SUPERCOP=1`. On Fedora 21, the requisite
library RPM dependencies are then:
`boost-static glibc-static gmp-static libstdc++-static openssl-static zlib-static
@ -399,7 +399,7 @@ The following flags change the behavior of the compiled code.
* `make MULTICORE=1`
Enable parallelized execution of the ppzkSNARK generator and prover, using OpenMP.
This will utilize all cores on the CPU for heavyweight parallelizabe operations such as
This will utilize all cores on the CPU for heavyweight parallelizable operations such as
FFT and multiexponentiation. The default is single-core.
To override the maximum number of cores used, set the environment variable `OMP_NUM_THREADS`

View File

@ -7,7 +7,7 @@
a choice of domain S with size ~m that has been selected so to optimize
- computations of Lagrange polynomials, and
- FFT/iFFT computations.
An evaluation domain also provides other other functions, e.g., accessing
An evaluation domain also provides other functions, e.g., accessing
individual elements in S or evaluating its vanishing polynomial.
The descriptions below make use of the definition of a *Lagrange polynomial*,
@ -111,7 +111,7 @@ std::shared_ptr<evaluation_domain<FieldT> > get_evaluation_domain(const size_t m
* The inputs are:
* - an integer m
* - a domain S = (a_{0},...,a_{m-1}) of size m
* - a field element element t
* - a field element t
* - an index idx in {0,...,m-1}
* The output is the polynomial L_{idx,S}(z) evaluated at z = t.
*/

View File

@ -33,7 +33,7 @@ public:
mp_limb_t data[n] = {0};
bigint() = default;
bigint(const unsigned long x); /// Initalize from a small integer
bigint(const unsigned long x); /// Initialize from a small integer
bigint(const char* s); /// Initialize from a string containing an integer in decimal notation
bigint(const mpz_t r); /// Initialize from MPZ element

View File

@ -17,7 +17,7 @@
namespace libsnark {
template<mp_size_t n>
bigint<n>::bigint(const unsigned long x) /// Initalize from a small integer
bigint<n>::bigint(const unsigned long x) /// Initialize from a small integer
{
static_assert(ULONG_MAX <= GMP_NUMB_MAX, "unsigned long does not fit in a GMP limb");
this->data[0] = x;

View File

@ -34,7 +34,7 @@ std::istream& operator>>(std::istream &, Fp_model<n, modulus> &);
* The implementation is mostly a wrapper around GMP's MPN (constant-size integers).
* But for the integer sizes of interest for libsnark (3 to 5 limbs of 64 bits each),
* we implement performance-critical routines, like addition and multiplication,
* using hand-optimzied assembly code.
* using hand-optimized assembly code.
*/
template<mp_size_t n, const bigint<n>& modulus>
class Fp_model {

View File

@ -10,9 +10,9 @@
/*
Split out from multiexp to prevent cyclical
dependencies. I.e. previously multiexp dependend on
knowledge_commitment, which dependend on sparse_vector, which
dependend on multiexp (to do accumulate).
dependencies. I.e. previously multiexp depended on
knowledge_commitment, which depended on sparse_vector, which
depended on multiexp (to do accumulate).
Will probably go away in more general exp refactoring.
*/

View File

@ -56,7 +56,7 @@ struct sparse_vector {
size_t size() const; // return the number of indices (representing the number of non-zero entries)
size_t size_in_bits() const; // return the number bits needed to store the sparse vector
/* return a pair consisting of the accumulated value and the sparse vector of non-accumuated values */
/* return a pair consisting of the accumulated value and the sparse vector of non-accumulated values */
template<typename FieldT>
std::pair<T, sparse_vector<T> > accumulate(const typename std::vector<FieldT>::const_iterator &it_begin,
const typename std::vector<FieldT>::const_iterator &it_end,

View File

@ -34,7 +34,7 @@ long long get_nsec_time()
return std::chrono::duration_cast<std::chrono::nanoseconds>(timepoint.time_since_epoch()).count();
}
/* Return total CPU time consumsed by all threads of the process, in nanoseconds. */
/* Return total CPU time consumed by all threads of the process, in nanoseconds. */
long long get_nsec_cpu_time()
{
::timespec ts;

View File

@ -22,7 +22,7 @@ namespace libsnark {
/*
* @todo
* The serialization is fragile. Shoud be rewritten using a standard, portable-format
* The serialization is fragile. Should be rewritten using a standard, portable-format
* library like boost::serialize.
*
* However, for now the following conventions are used within the code.

View File

@ -4,7 +4,7 @@
Declaration of interfaces for a R1CS-to-QAP reduction, that is, constructing
a QAP ("Quadratic Arithmetic Program") from a R1CS ("Rank-1 Constraint System").
QAPs are defined in \[GGPR13], and construced for R1CS also in \[GGPR13].
QAPs are defined in \[GGPR13], and constructed for R1CS also in \[GGPR13].
The implementation of the reduction follows, extends, and optimizes
the efficient approach described in Appendix E of \[BCGTV13].

View File

@ -43,7 +43,7 @@ class linear_combination;
/********************************* Variable **********************************/
/**
* A variable represents a formal expresison of the form "x_{index}".
* A variable represents a formal expression of the form "x_{index}".
*/
template<typename FieldT>
class variable {

View File

@ -287,7 +287,7 @@ std::istream& operator>>(std::istream &in, r1cs_ppzksnark_proof<ppT> &proof);
* A proof for the R1CS ppzkSNARK.
*
* While the proof has a structure, externally one merely opaquely produces,
* seralizes/deserializes, and verifies proofs. We only expose some information
* serializes/deserializes, and verifies proofs. We only expose some information
* about the structure for statistics purposes.
*/
template<typename ppT>

View File

@ -312,7 +312,7 @@ r1cs_ppzksnark_keypair<ppT> r1cs_ppzksnark_generator(
const Fr<ppT> rC = rA * rB;
// consrtuct the same-coefficient-check query (must happen before zeroing out the prefix of At)
// construct the same-coefficient-check query (must happen before zeroing out the prefix of At)
Fr_vector<ppT> Kt;
Kt.reserve(qap_inst.num_variables()+4);
for (size_t i = 0; i < qap_inst.num_variables()+1; ++i)

View File

@ -145,9 +145,9 @@ private:
static void CreateInstance()
{
// Using a local static instance guarantees that the object is initialized
// when it's first needed and also deinitialized after all objects that use
// when it's first needed and also destructed after all objects that use
// it are done with it. I can think of one unlikely scenario where we may
// have a static deinitialization order/problem, but the check in
// have a static destruction order/problem, but the check in
// LockedPageManagerBase's destructor helps us detect if that ever happens.
static LockedPageManager instance;
LockedPageManager::_instance = &instance;

View File

@ -476,7 +476,7 @@ BOOST_AUTO_TEST_CASE(caddrinfo_get_new_bucket)
// this test could be a security issue.
BOOST_CHECK(info1.GetNewBucket(nKey1) != info1.GetNewBucket(nKey2));
// Test 31: Ports should not effect bucket placement in the addr
// Test 31: Ports should not affect bucket placement in the addr
CAddrInfo info2 = CAddrInfo(addr2, source1);
BOOST_CHECK(info1.GetKey() != info2.GetKey());
BOOST_CHECK(info1.GetNewBucket(nKey1) == info2.GetNewBucket(nKey1));
@ -518,4 +518,4 @@ BOOST_AUTO_TEST_CASE(caddrinfo_get_new_bucket)
// than 64 buckets.
BOOST_CHECK(buckets.size() > 64);
}
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE_END()

View File

@ -422,7 +422,7 @@ BOOST_AUTO_TEST_CASE(CreateNewBlock_validity)
BOOST_CHECK(pblocktemplate = CreateNewBlock(scriptPubKey));
// Neither tx should have make it into the template.
// Neither tx should have made it into the template.
BOOST_CHECK_EQUAL(pblocktemplate->block.vtx.size(), 1);
delete pblocktemplate;

View File

@ -252,7 +252,7 @@ BOOST_AUTO_TEST_CASE(rpc_ban)
BOOST_CHECK(banned_until.get_int64() > now);
BOOST_CHECK(banned_until.get_int64()-now <= 200);
// must throw an exception because 127.0.0.1 is in already banned suubnet range
// must throw an exception because 127.0.0.1 is in already banned subnet range
BOOST_CHECK_THROW(r = CallRPC(string("setban 127.0.0.1 add")), runtime_error);
BOOST_CHECK_NO_THROW(CallRPC(string("setban 127.0.0.0/24 remove")));;

View File

@ -155,7 +155,7 @@ namespace tfm = tinyformat;
#endif
#ifdef __APPLE__
// Workaround OSX linker warning: xcode uses different default symbol
// Workaround macOS linker warning: Xcode uses different default symbol
// visibilities for static libs vs executables (see issue #25)
# define TINYFORMAT_HIDDEN __attribute__((visibility("hidden")))
#else
@ -577,7 +577,7 @@ inline const char* printFormatStringLiteral(std::ostream& out, const char* fmt)
// Formatting options which can't be natively represented using the ostream
// state are returned in spacePadPositive (for space padded positive numbers)
// and ntrunc (for truncating conversions). argIndex is incremented if
// necessary to pull out variable width and precision . The function returns a
// necessary to pull out variable width and precision. The function returns a
// pointer to the character after the end of the current format spec.
inline const char* streamStateFromFormat(std::ostream& out, bool& spacePadPositive,
int& ntrunc, const char* fmtStart,

View File

@ -415,7 +415,7 @@ public:
TorController(struct event_base* base, const std::string& target);
~TorController();
/** Get name fo file to store private key in */
/** Get name for file to store private key in */
std::string GetPrivateKeyFile();
/** Reconnect, after getting disconnected */

View File

@ -35,7 +35,7 @@ bool ParseInt32(const std::string& str, int32_t *out)
errno = 0; // strtol will not set errno if valid
long int n = strtol(str.c_str(), &endp, 10);
if(out) *out = (int32_t)n;
// Note that strtol returns a *long int*, so even if strtol doesn't report a over/underflow
// Note that strtol returns a *long int*, so even if strtol doesn't report an over/underflow
// we still have to check that the returned value is within the range of an *int32_t*. On 64-bit
// platforms the size of these types may be different.
return endp && *endp == 0 && !errno &&
@ -51,7 +51,7 @@ bool ParseInt64(const std::string& str, int64_t *out)
errno = 0; // strtoll will not set errno if valid
long long int n = strtoll(str.c_str(), &endp, 10);
if(out) *out = (int64_t)n;
// Note that strtoll returns a *long long int*, so even if strtol doesn't report a over/underflow
// Note that strtoll returns a *long long int*, so even if strtol doesn't report an over/underflow
// we still have to check that the returned value is within the range of an *int64_t*.
return endp && *endp == 0 && !errno &&
n >= std::numeric_limits<int64_t>::min() &&

View File

@ -621,7 +621,7 @@ bool AsyncRPCOperation_sendmany::main_impl() {
{
LOCK2(cs_main, pwalletMain->cs_wallet);
const CWalletTx& wtx = pwalletMain->mapWallet[jso.hash];
// Zero confirmaton notes belong to transactions which have not yet been mined
// Zero-confirmation notes belong to transactions which have not yet been mined
if (mapBlockIndex.find(wtx.hashBlock) == mapBlockIndex.end()) {
throw JSONRPCError(RPC_WALLET_ERROR, strprintf("mapBlockIndex does not contain block hash %s", wtx.hashBlock.ToString()));
}

View File

@ -281,7 +281,7 @@ TEST(wallet_tests, find_unspent_notes) {
wallet.GetFilteredNotes(entries, "", 2, false);
EXPECT_EQ(1, entries.size());
entries.clear();
// If we also ignore spent notes at thie depth, we won't find any notes.
// If we also ignore spent notes at this depth, we won't find any notes.
wallet.GetFilteredNotes(entries, "", 2, true);
EXPECT_EQ(0, entries.size());
entries.clear();

View File

@ -411,7 +411,7 @@ UniValue sendtoaddress(const UniValue& params, bool fHelp)
"\nSend an amount to a given address. The amount is a real and is rounded to the nearest 0.00000001\n"
+ HelpRequiringPassphrase() +
"\nArguments:\n"
"1. \"zcashaddress\" (string, required) The zcash address to send to.\n"
"1. \"zcashaddress\" (string, required) The Zcash address to send to.\n"
"2. \"amount\" (numeric, required) The amount in " + CURRENCY_UNIT + " to send. eg 0.1\n"
"3. \"comment\" (string, optional) A comment used to store what the transaction is for. \n"
" This is not part of the transaction, just kept in your wallet.\n"
@ -584,7 +584,7 @@ UniValue getreceivedbyaddress(const UniValue& params, bool fHelp)
+ HelpExampleCli("getreceivedbyaddress", "\"t14oHp2v54vfmdgQ3v3SNuQga8JKHTNi2a1\"") +
"\nThe amount including unconfirmed transactions, zero confirmations\n"
+ HelpExampleCli("getreceivedbyaddress", "\"t14oHp2v54vfmdgQ3v3SNuQga8JKHTNi2a1\" 0") +
"\nThe amount with at least 6 confirmation, very safe\n"
"\nThe amount with at least 6 confirmations, very safe\n"
+ HelpExampleCli("getreceivedbyaddress", "\"t14oHp2v54vfmdgQ3v3SNuQga8JKHTNi2a1\" 6") +
"\nAs a json rpc call\n"
+ HelpExampleRpc("getreceivedbyaddress", "\"t14oHp2v54vfmdgQ3v3SNuQga8JKHTNi2a1\", 6")
@ -886,7 +886,7 @@ UniValue sendfrom(const UniValue& params, bool fHelp)
+ HelpRequiringPassphrase() + "\n"
"\nArguments:\n"
"1. \"fromaccount\" (string, required) MUST be set to the empty string \"\" to represent the default account. Passing any other string will result in an error.\n"
"2. \"tozcashaddress\" (string, required) The zcash address to send funds to.\n"
"2. \"tozcashaddress\" (string, required) The Zcash address to send funds to.\n"
"3. amount (numeric, required) The amount in " + CURRENCY_UNIT + " (transaction fee is added on top).\n"
"4. minconf (numeric, optional, default=1) Only use funds with at least this many confirmations.\n"
"5. \"comment\" (string, optional) A comment used to store what the transaction is for. \n"
@ -952,7 +952,7 @@ UniValue sendmany(const UniValue& params, bool fHelp)
"1. \"fromaccount\" (string, required) MUST be set to the empty string \"\" to represent the default account. Passing any other string will result in an error.\n"
"2. \"amounts\" (string, required) A json object with addresses and amounts\n"
" {\n"
" \"address\":amount (numeric) The zcash address is the key, the numeric amount in " + CURRENCY_UNIT + " is the value\n"
" \"address\":amount (numeric) The Zcash address is the key, the numeric amount in " + CURRENCY_UNIT + " is the value\n"
" ,...\n"
" }\n"
"3. minconf (numeric, optional, default=1) Only use the balance confirmed at least this many times.\n"
@ -2340,7 +2340,7 @@ UniValue listunspent(const UniValue& params, bool fHelp)
" \"txid\" : \"txid\", (string) the transaction id \n"
" \"vout\" : n, (numeric) the vout value\n"
" \"generated\" : true|false (boolean) true if txout is a coinbase transaction output\n"
" \"address\" : \"address\", (string) the zcash address\n"
" \"address\" : \"address\", (string) the Zcash address\n"
" \"account\" : \"account\", (string) DEPRECATED. The associated account, or \"\" for the default account\n"
" \"scriptPubKey\" : \"key\", (string) the script key\n"
" \"amount\" : x.xxx, (numeric) the transaction amount in " + CURRENCY_UNIT + "\n"
@ -3455,7 +3455,7 @@ UniValue z_sendmany(const UniValue& params, bool fHelp)
if (!memoValue.isNull()) {
memo = memoValue.get_str();
if (!isZaddr) {
throw JSONRPCError(RPC_INVALID_PARAMETER, "Memo can not be used with a taddr. It can only be used with a zaddr.");
throw JSONRPCError(RPC_INVALID_PARAMETER, "Memo cannot be used with a taddr. It can only be used with a zaddr.");
} else if (!IsHex(memo)) {
throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid parameter, expected memo data in hexadecimal format.");
}
@ -4109,7 +4109,7 @@ UniValue z_listoperationids(const UniValue& params, bool fHelp)
"z_listoperationids\n"
"\nReturns the list of operation ids currently known to the wallet.\n"
"\nArguments:\n"
"1. \"status\" (string, optional) Filter result by the operation's state state e.g. \"success\".\n"
"1. \"status\" (string, optional) Filter result by the operation's state e.g. \"success\".\n"
"\nResult:\n"
"[ (json array of string)\n"
" \"operationid\" (string) an operation id belonging to the wallet\n"

View File

@ -152,7 +152,7 @@ struct COutputEntry
int vout;
};
/** An note outpoint */
/** A note outpoint */
class JSOutPoint
{
public: