├── .github ├── CODEOWNERS ├── config.yml ├── no-response.yml ├── settings.yml ├── stale.yml └── workflows │ └── ci.yaml ├── .gitignore ├── .rubocop.yml ├── .travis.yml ├── Gemfile ├── LICENSE ├── README.md ├── _config.yml ├── _layouts └── default.html ├── _sass ├── fonts.scss ├── jekyll-theme-midnight.scss ├── normalize.scss └── rouge-base16-dark.scss ├── assets ├── css │ ├── ie.scss │ └── style.scss ├── fonts │ ├── OpenSans-Bold-webfont.eot │ ├── OpenSans-Bold-webfont.svg │ ├── OpenSans-Bold-webfont.ttf │ ├── OpenSans-Bold-webfont.woff │ ├── OpenSans-BoldItalic-webfont.eot │ ├── OpenSans-BoldItalic-webfont.svg │ ├── OpenSans-BoldItalic-webfont.ttf │ ├── OpenSans-BoldItalic-webfont.woff │ ├── OpenSans-Italic-webfont.eot │ ├── OpenSans-Italic-webfont.svg │ ├── OpenSans-Italic-webfont.ttf │ ├── OpenSans-Italic-webfont.woff │ ├── OpenSans-Light-webfont.eot │ ├── OpenSans-Light-webfont.svg │ ├── OpenSans-Light-webfont.ttf │ ├── OpenSans-Light-webfont.woff │ ├── OpenSans-LightItalic-webfont.eot │ ├── OpenSans-LightItalic-webfont.svg │ ├── OpenSans-LightItalic-webfont.ttf │ ├── OpenSans-LightItalic-webfont.woff │ ├── OpenSans-Regular-webfont.eot │ ├── OpenSans-Regular-webfont.svg │ ├── OpenSans-Regular-webfont.ttf │ ├── OpenSans-Regular-webfont.woff │ ├── OpenSans-Semibold-webfont.eot │ ├── OpenSans-Semibold-webfont.svg │ ├── OpenSans-Semibold-webfont.ttf │ ├── OpenSans-Semibold-webfont.woff │ ├── OpenSans-SemiboldItalic-webfont.eot │ ├── OpenSans-SemiboldItalic-webfont.svg │ ├── OpenSans-SemiboldItalic-webfont.ttf │ └── OpenSans-SemiboldItalic-webfont.woff ├── images │ ├── 1.png │ ├── 2.PNG │ ├── BPDG.png │ ├── Bitcoin Privacy.jpg │ ├── Bitcoin Privacy.png │ ├── RD Stack.png │ ├── RD.png │ ├── RD1.png │ ├── Test 1.png │ ├── bullet.png │ ├── favicon-32x32.png │ ├── hr.gif │ ├── nav-bg.gif │ └── sml.jpg └── js │ └── respond.js ├── docs ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md └── SUPPORT.md ├── favicon.ico ├── get.md ├── index.md ├── jekyll-theme-midnight.gemspec ├── safeguard.md ├── script ├── bootstrap ├── cibuild ├── release └── validate-html ├── scrutinise.md ├── secure.md ├── segregate.md ├── separate.md ├── spend.md └── supplementary.md /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # Require maintainer's :+1: for changes to the .github/ repo-config files 2 | # mainly due to https://github.com/probot/settings privilege escalation 3 | .github/* @pages-themes/maintainers 4 | -------------------------------------------------------------------------------- /.github/config.yml: -------------------------------------------------------------------------------- 1 | # Behaviorbot config. See https://github.com/behaviorbot/ for more information. 2 | # Note: Please Don't edit this file directly. 3 | # Edit https://github.com/pages-themes/maintenance-scripts instead. 4 | 5 | # Configuration for update-docs - https://github.com/behaviorbot/update-docs 6 | updateDocsComment: "Thanks for the pull request! If you are making any changes to the user-facing functionality, please be sure to update the documentation in the `README` or `docs/` folder alongside your change. :heart:" 7 | 8 | # Configuration for request-info - https://github.com/behaviorbot/request-info 9 | requestInfoReplyComment: Thanks for this. Do you mind providing a bit more information about what problem you're trying to solve? 10 | requestInfoLabelToAdd: more-information-needed 11 | 12 | # Configuration for new-issue-welcome - https://github.com/behaviorbot/new-issue-welcome 13 | #newIssueWelcomeComment: > 14 | # Welcome! 15 | 16 | # Configuration for new-pr-welcome - https://github.com/behaviorbot/new-pr-welcome 17 | newPRWelcomeComment: Welcome! Congrats on your first pull request to the Midnight theme. If you haven't already, please be sure to check out [the contributing guidelines](https://github.com/pages-themes/midnight/blob/master/docs/CONTRIBUTING.md). 18 | 19 | # Configuration for first-pr-merge - https://github.com/behaviorbot/first-pr-merge 20 | firstPRMergeComment: "Congrats on getting your first pull request to the Midnight theme merged! Without amazing humans like you submitting pull requests, we couldn’t run this project. You rock! :tada:

If you're interested in tackling another bug or feature, take a look at [the open issues](https://github.com/pages-themes/midnight/issues), especially those [labeled `help wanted`](https://github.com/pages-themes/midnight/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)." 21 | -------------------------------------------------------------------------------- /.github/no-response.yml: -------------------------------------------------------------------------------- 1 | # Configuration for probot-no-response - https://github.com/probot/no-response 2 | 3 | # Number of days of inactivity before an Issue is closed for lack of response 4 | daysUntilClose: 14 5 | # Label requiring a response 6 | responseRequiredLabel: more-information-needed 7 | # Comment to post when closing an Issue for lack of response. Set to `false` to disable 8 | closeComment: > 9 | This issue has been automatically closed because there has been no response 10 | to our request for more information from the original author. With only the 11 | information that is currently in the issue, we don't have enough information 12 | to take action. Please reach out if you have or find the answers we need so 13 | that we can investigate further. 14 | -------------------------------------------------------------------------------- /.github/settings.yml: -------------------------------------------------------------------------------- 1 | # Repository settings set via https://github.com/probot/settings 2 | 3 | repository: 4 | has_issues: true 5 | has_wiki: false 6 | has_projects: false 7 | has_downloads: false 8 | 9 | labels: 10 | - name: help wanted 11 | oldname: help-wanted 12 | color: 0e8a16 13 | - name: more-information-needed 14 | color: d93f0b 15 | - name: bug 16 | color: b60205 17 | - name: feature 18 | color: 1d76db 19 | - name: good first issue 20 | color: "5319e7" 21 | 22 | # Not currently implemented by probot/settings, but manually implemented in script/deploy 23 | branch_protection: 24 | restrictions: null 25 | enforce_admins: false 26 | required_status_checks: 27 | strict: true 28 | contexts: 29 | - "continuous-integration/travis-ci" 30 | required_pull_request_reviews: 31 | require_code_owner_reviews: true 32 | -------------------------------------------------------------------------------- /.github/stale.yml: -------------------------------------------------------------------------------- 1 | # Configuration for probot-stale - https://github.com/probot/stale 2 | 3 | # Number of days of inactivity before an Issue or Pull Request becomes stale 4 | daysUntilStale: 60 5 | 6 | # Number of days of inactivity before a stale Issue or Pull Request is closed 7 | daysUntilClose: 7 8 | 9 | # Issues or Pull Requests with these labels will never be considered stale 10 | exemptLabels: 11 | - pinned 12 | - security 13 | 14 | # Label to use when marking as stale 15 | staleLabel: wontfix 16 | 17 | # Comment to post when marking as stale. Set to `false` to disable 18 | markComment: > 19 | This issue has been automatically marked as stale because it has not had 20 | recent activity. It will be closed if no further activity occurs. Thank you 21 | for your contributions. 22 | 23 | # Comment to post when closing a stale Issue or Pull Request. Set to `false` to disable 24 | closeComment: false 25 | 26 | # Limit to only `issues` or `pulls` 27 | # only: issues 28 | -------------------------------------------------------------------------------- /.github/workflows/ci.yaml: -------------------------------------------------------------------------------- 1 | on: push 2 | jobs: 3 | build: 4 | runs-on: ubuntu-latest 5 | name: script/cibuild 6 | steps: 7 | - uses: actions/checkout@v2 8 | - uses: actions/setup-ruby@v1 9 | with: 10 | ruby-version: 2.7 11 | - name: build 12 | run: script/bootstrap 13 | - name: test 14 | run: script/cibuild -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | _site 2 | .sass-cache 3 | Gemfile.lock 4 | *.gem 5 | -------------------------------------------------------------------------------- /.rubocop.yml: -------------------------------------------------------------------------------- 1 | AllCops: 2 | Exclude: 3 | - _site/**/* 4 | 5 | Metrics/LineLength: 6 | Enabled: false 7 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: ruby 2 | cache: bundler 3 | rvm: 2.6 4 | 5 | install: script/bootstrap 6 | script: script/cibuild 7 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | source 'https://rubygems.org' 4 | 5 | gemspec 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | CC0 1.0 Universal 2 | 3 | Statement of Purpose 4 | 5 | The laws of most jurisdictions throughout the world automatically confer 6 | exclusive Copyright and Related Rights (defined below) upon the creator and 7 | subsequent owner(s) (each and all, an "owner") of an original work of 8 | authorship and/or a database (each, a "Work"). 9 | 10 | Certain owners wish to permanently relinquish those rights to a Work for the 11 | purpose of contributing to a commons of creative, cultural and scientific 12 | works ("Commons") that the public can reliably and without fear of later 13 | claims of infringement build upon, modify, incorporate in other works, reuse 14 | and redistribute as freely as possible in any form whatsoever and for any 15 | purposes, including without limitation commercial purposes. These owners may 16 | contribute to the Commons to promote the ideal of a free culture and the 17 | further production of creative, cultural and scientific works, or to gain 18 | reputation or greater distribution for their Work in part through the use and 19 | efforts of others. 20 | 21 | For these and/or other purposes and motivations, and without any expectation 22 | of additional consideration or compensation, the person associating CC0 with a 23 | Work (the "Affirmer"), to the extent that he or she is an owner of Copyright 24 | and Related Rights in the Work, voluntarily elects to apply CC0 to the Work 25 | and publicly distribute the Work under its terms, with knowledge of his or her 26 | Copyright and Related Rights in the Work and the meaning and intended legal 27 | effect of CC0 on those rights. 28 | 29 | 1. Copyright and Related Rights. A Work made available under CC0 may be 30 | protected by copyright and related or neighboring rights ("Copyright and 31 | Related Rights"). Copyright and Related Rights include, but are not limited 32 | to, the following: 33 | 34 | i. the right to reproduce, adapt, distribute, perform, display, communicate, 35 | and translate a Work; 36 | 37 | ii. moral rights retained by the original author(s) and/or performer(s); 38 | 39 | iii. publicity and privacy rights pertaining to a person's image or likeness 40 | depicted in a Work; 41 | 42 | iv. rights protecting against unfair competition in regards to a Work, 43 | subject to the limitations in paragraph 4(a), below; 44 | 45 | v. rights protecting the extraction, dissemination, use and reuse of data in 46 | a Work; 47 | 48 | vi. database rights (such as those arising under Directive 96/9/EC of the 49 | European Parliament and of the Council of 11 March 1996 on the legal 50 | protection of databases, and under any national implementation thereof, 51 | including any amended or successor version of such directive); and 52 | 53 | vii. other similar, equivalent or corresponding rights throughout the world 54 | based on applicable law or treaty, and any national implementations thereof. 55 | 56 | 2. Waiver. To the greatest extent permitted by, but not in contravention of, 57 | applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and 58 | unconditionally waives, abandons, and surrenders all of Affirmer's Copyright 59 | and Related Rights and associated claims and causes of action, whether now 60 | known or unknown (including existing as well as future claims and causes of 61 | action), in the Work (i) in all territories worldwide, (ii) for the maximum 62 | duration provided by applicable law or treaty (including future time 63 | extensions), (iii) in any current or future medium and for any number of 64 | copies, and (iv) for any purpose whatsoever, including without limitation 65 | commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes 66 | the Waiver for the benefit of each member of the public at large and to the 67 | detriment of Affirmer's heirs and successors, fully intending that such Waiver 68 | shall not be subject to revocation, rescission, cancellation, termination, or 69 | any other legal or equitable action to disrupt the quiet enjoyment of the Work 70 | by the public as contemplated by Affirmer's express Statement of Purpose. 71 | 72 | 3. Public License Fallback. Should any part of the Waiver for any reason be 73 | judged legally invalid or ineffective under applicable law, then the Waiver 74 | shall be preserved to the maximum extent permitted taking into account 75 | Affirmer's express Statement of Purpose. In addition, to the extent the Waiver 76 | is so judged Affirmer hereby grants to each affected person a royalty-free, 77 | non transferable, non sublicensable, non exclusive, irrevocable and 78 | unconditional license to exercise Affirmer's Copyright and Related Rights in 79 | the Work (i) in all territories worldwide, (ii) for the maximum duration 80 | provided by applicable law or treaty (including future time extensions), (iii) 81 | in any current or future medium and for any number of copies, and (iv) for any 82 | purpose whatsoever, including without limitation commercial, advertising or 83 | promotional purposes (the "License"). The License shall be deemed effective as 84 | of the date CC0 was applied by Affirmer to the Work. Should any part of the 85 | License for any reason be judged legally invalid or ineffective under 86 | applicable law, such partial invalidity or ineffectiveness shall not 87 | invalidate the remainder of the License, and in such case Affirmer hereby 88 | affirms that he or she will not (i) exercise any of his or her remaining 89 | Copyright and Related Rights in the Work or (ii) assert any associated claims 90 | and causes of action with respect to the Work, in either case contrary to 91 | Affirmer's express Statement of Purpose. 92 | 93 | 4. Limitations and Disclaimers. 94 | 95 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 96 | surrendered, licensed or otherwise affected by this document. 97 | 98 | b. Affirmer offers the Work as-is and makes no representations or warranties 99 | of any kind concerning the Work, express, implied, statutory or otherwise, 100 | including without limitation warranties of title, merchantability, fitness 101 | for a particular purpose, non infringement, or the absence of latent or 102 | other defects, accuracy, or the present or absence of errors, whether or not 103 | discoverable, all to the greatest extent permissible under applicable law. 104 | 105 | c. Affirmer disclaims responsibility for clearing rights of other persons 106 | that may apply to the Work or any use thereof, including without limitation 107 | any person's Copyright and Related Rights in the Work. Further, Affirmer 108 | disclaims responsibility for obtaining any necessary consents, permissions 109 | or other rights required for any use of the Work. 110 | 111 | d. Affirmer understands and acknowledges that Creative Commons is not a 112 | party to this document and has no duty or obligation with respect to this 113 | CC0 or use of the Work. 114 | 115 | For more information, please see 116 | 117 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## The source code for this site is now managed under the [Bitcoiner.Guide](https://github.com/BitcoinQnA/Bitcoiner.Guide) repository. 2 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | title: Bitcoin Privacy Guide 2 | description: A beginners guide to Bitcoin privacy 3 | show_downloads: false 4 | google_analytics: 5 | theme: jekyll-theme-midnight 6 | -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | {% seo %} 11 | 12 | 13 | 14 | 17 | 20 | 21 | 22 | 23 | 24 | 33 | 34 |
35 | 36 |
37 |
38 |

{{ site.title | default: site.github.repository_name }}

39 |

{{ site.description | default: site.github.project_tagline }}

40 |
41 | Home 42 |
43 | 44 | {{ content }} 45 | 46 |
47 | 48 |
49 | 50 | {% if site.google_analytics %} 51 | 59 | {% endif %} 60 | 61 | 62 | -------------------------------------------------------------------------------- /_sass/fonts.scss: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'OpenSansLight'; 3 | src: url('../fonts/OpenSans-Light-webfont.eot'); 4 | src: url('../fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'), 5 | url('../fonts/OpenSans-Light-webfont.woff') format('woff'), 6 | url('../fonts/OpenSans-Light-webfont.ttf') format('truetype'), 7 | url('../fonts/OpenSans-Light-webfont.svg#OpenSansLight') format('svg'); 8 | font-weight: normal; 9 | font-style: normal; 10 | 11 | } 12 | 13 | @font-face { 14 | font-family: 'OpenSansLightItalic'; 15 | src: url('../fonts/OpenSans-LightItalic-webfont.eot'); 16 | src: url('../fonts/OpenSans-LightItalic-webfont.eot?#iefix') format('embedded-opentype'), 17 | url('../fonts/OpenSans-LightItalic-webfont.woff') format('woff'), 18 | url('../fonts/OpenSans-LightItalic-webfont.ttf') format('truetype'), 19 | url('../fonts/OpenSans-LightItalic-webfont.svg#OpenSansLightItalic') format('svg'); 20 | font-weight: normal; 21 | font-style: normal; 22 | 23 | } 24 | 25 | @font-face { 26 | font-family: 'OpenSansRegular'; 27 | src: url('../fonts/OpenSans-Regular-webfont.eot'); 28 | src: url('../fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'), 29 | url('../fonts/OpenSans-Regular-webfont.woff') format('woff'), 30 | url('../fonts/OpenSans-Regular-webfont.ttf') format('truetype'), 31 | url('../fonts/OpenSans-Regular-webfont.svg#OpenSansRegular') format('svg'); 32 | font-weight: normal; 33 | font-style: normal; 34 | -webkit-font-smoothing:antialiased; 35 | } 36 | 37 | @font-face { 38 | font-family: 'OpenSansItalic'; 39 | src: url('../fonts/OpenSans-Italic-webfont.eot'); 40 | src: url('../fonts/OpenSans-Italic-webfont.eot?#iefix') format('embedded-opentype'), 41 | url('../fonts/OpenSans-Italic-webfont.woff') format('woff'), 42 | url('../fonts/OpenSans-Italic-webfont.ttf') format('truetype'), 43 | url('../fonts/OpenSans-Italic-webfont.svg#OpenSansItalic') format('svg'); 44 | font-weight: normal; 45 | font-style: normal; 46 | -webkit-font-smoothing:antialiased; 47 | } 48 | 49 | @font-face { 50 | font-family: 'OpenSansSemibold'; 51 | src: url('../fonts/OpenSans-Semibold-webfont.eot'); 52 | src: url('../fonts/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'), 53 | url('../fonts/OpenSans-Semibold-webfont.woff') format('woff'), 54 | url('../fonts/OpenSans-Semibold-webfont.ttf') format('truetype'), 55 | url('../fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg'); 56 | font-weight: normal; 57 | font-style: normal; 58 | -webkit-font-smoothing:antialiased; 59 | } 60 | 61 | @font-face { 62 | font-family: 'OpenSansSemiboldItalic'; 63 | src: url('../fonts/OpenSans-SemiboldItalic-webfont.eot'); 64 | src: url('../fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix') format('embedded-opentype'), 65 | url('../fonts/OpenSans-SemiboldItalic-webfont.woff') format('woff'), 66 | url('../fonts/OpenSans-SemiboldItalic-webfont.ttf') format('truetype'), 67 | url('../fonts/OpenSans-SemiboldItalic-webfont.svg#OpenSansSemiboldItalic') format('svg'); 68 | font-weight: normal; 69 | font-style: normal; 70 | -webkit-font-smoothing:antialiased; 71 | } 72 | 73 | @font-face { 74 | font-family: 'OpenSansBold'; 75 | src: url('../fonts/OpenSans-Bold-webfont.eot'); 76 | src: url('../fonts/OpenSans-Bold-webfont.eot?#iefix') format('embedded-opentype'), 77 | url('../fonts/OpenSans-Bold-webfont.woff') format('woff'), 78 | url('../fonts/OpenSans-Bold-webfont.ttf') format('truetype'), 79 | url('../fonts/OpenSans-Bold-webfont.svg#OpenSansBold') format('svg'); 80 | font-weight: normal; 81 | font-style: normal; 82 | -webkit-font-smoothing:antialiased; 83 | } 84 | 85 | @font-face { 86 | font-family: 'OpenSansBoldItalic'; 87 | src: url('../fonts/OpenSans-BoldItalic-webfont.eot'); 88 | src: url('../fonts/OpenSans-BoldItalic-webfont.eot?#iefix') format('embedded-opentype'), 89 | url('../fonts/OpenSans-BoldItalic-webfont.woff') format('woff'), 90 | url('../fonts/OpenSans-BoldItalic-webfont.ttf') format('truetype'), 91 | url('../fonts/OpenSans-BoldItalic-webfont.svg#OpenSansBoldItalic') format('svg'); 92 | font-weight: normal; 93 | font-style: normal; 94 | -webkit-font-smoothing:antialiased; 95 | } 96 | -------------------------------------------------------------------------------- /_sass/jekyll-theme-midnight.scss: -------------------------------------------------------------------------------- 1 | @import "normalize"; 2 | @import "fonts"; 3 | @import "rouge-base16-dark.scss"; 4 | 5 | body { 6 | padding:0px 0 20px 0px; 7 | margin: 0px; 8 | font:14px/1.5 "OpenSansRegular", "Helvetica Neue", Helvetica, Arial, sans-serif; 9 | color:#f0e7d5; 10 | font-weight: normal; 11 | background: #00151a; 12 | background-attachment: fixed !important; 13 | } 14 | 15 | h1, h2, h3, h4, h5, h6 { 16 | color:#e8e8e8; 17 | margin:0 0 10px; 18 | font-family: 'OpenSansRegular', "Helvetica Neue", Helvetica, Arial, sans-serif; 19 | font-weight: normal; 20 | } 21 | 22 | p, ul, ol, table, pre, dl { 23 | margin:0 0 20px; 24 | } 25 | 26 | h1, h2, h3 { 27 | line-height:1.1; 28 | 29 | } 30 | 31 | h1 { 32 | font-size:28px; 33 | } 34 | 35 | h2 { 36 | font-size: 24px; 37 | } 38 | 39 | h4, h5, h6 { 40 | color:#e8e8e8; 41 | } 42 | 43 | h3 { 44 | font-size: 18px; 45 | line-height: 24px; 46 | font-family: 'OpenSansRegular', "Helvetica Neue", Helvetica, Arial, sans-serif !important; 47 | font-weight: normal; 48 | color: #b6b6b6; 49 | } 50 | 51 | a { 52 | color:#f99925; 53 | font-weight:400; 54 | text-decoration:none; 55 | 56 | &:hover { 57 | color: #ffeb9b; 58 | } 59 | } 60 | 61 | a small { 62 | font-size:11px; 63 | color:#666; 64 | margin-top:-0.6em; 65 | display:block; 66 | } 67 | 68 | ul{ 69 | list-style-image:url('../images/bullet.png'); 70 | } 71 | 72 | strong { 73 | font-family: 'OpenSansBold', "Helvetica Neue", Helvetica, Arial, sans-serif !important; 74 | font-weight: normal; 75 | } 76 | 77 | .wrapper { 78 | max-width:650px; 79 | margin:0 auto; 80 | position:relative; 81 | padding: 0 20px; 82 | } 83 | 84 | section img { 85 | max-width: 100%; 86 | } 87 | 88 | blockquote { 89 | border-left:3px solid #ffcc00; 90 | margin:0; 91 | padding:0 0 0 20px; 92 | font-style:italic; 93 | } 94 | 95 | code { 96 | font-family: Monaco, Bitstream Vera Sans Mono, Lucida Console, Terminal, monospace; 97 | color:#efefef; 98 | font-size:13px; 99 | margin: 0 4px; 100 | padding: 4px 6px; 101 | border-radius: 2px; 102 | } 103 | 104 | pre { 105 | padding:8px 15px; 106 | background: #00151a; 107 | border-radius: 2px; 108 | border:1px solid #121212; 109 | box-shadow: inset 0 1px 3px rgba(0,0,0,.3); 110 | overflow: auto; 111 | overflow-y: hidden; 112 | 113 | code { 114 | color: #efefef; 115 | text-shadow: 0px 1px 0px #000; 116 | margin: 0; 117 | padding: 0; 118 | } 119 | } 120 | 121 | table { 122 | width:100%; 123 | border-collapse:collapse; 124 | } 125 | 126 | th { 127 | text-align:left; 128 | padding:5px 10px; 129 | border-bottom:1px solid #434343; 130 | color: #b6b6b6; 131 | font-family: 'OpenSansSemibold', "Helvetica Neue", Helvetica, Arial, sans-serif !important; 132 | font-weight: normal; 133 | } 134 | 135 | td { 136 | text-align:left; 137 | padding:5px 10px; 138 | border-bottom:1px solid #434343; 139 | } 140 | 141 | hr { 142 | border: 0; 143 | outline: none; 144 | height: 3px; 145 | background: transparent url('../images/hr.gif') center center repeat-x; 146 | margin: 0 0 20px; 147 | } 148 | 149 | dt { 150 | color:#F0E7D5; 151 | font-family: 'OpenSansSemibold', "Helvetica Neue", Helvetica, Arial, sans-serif !important; 152 | font-weight: normal; 153 | } 154 | 155 | #title { 156 | display: none; 157 | } 158 | 159 | 160 | #header { 161 | z-index: 100; 162 | left:0; 163 | top: 0px; 164 | height: 0px; 165 | width: 100%; 166 | position: fixed; 167 | background: url(../images/nav-bg.gif) #353535; 168 | border-bottom: 0px solid #434343; 169 | box-shadow: 0px 1px 3px rgba(0,0,0,.25); 170 | 171 | nav { 172 | max-width: 650px; 173 | margin: 0 auto; 174 | padding: 0 10px; 175 | background: blue; 176 | margin: 6px auto; 177 | 178 | li { 179 | font-family: 'OpenSansLight', "Helvetica Neue", Helvetica, Arial, sans-serif; 180 | font-weight: normal; 181 | list-style: none; 182 | display: inline; 183 | color: white; 184 | line-height: 50px; 185 | text-shadow: 0px 1px 0px rgba(0,0,0,.2); 186 | font-size: 14px; 187 | 188 | a { 189 | color: white; 190 | border: 1px solid #5d910b; 191 | background: linear-gradient(#93bd20, #659e10); 192 | border-radius: 2px; 193 | box-shadow: inset 0px 1px 0px rgba(255,255,255,.3), 0px 3px 7px rgba(0,0,0,.7); 194 | 195 | background-color: #93bd20; 196 | padding: 10px 12px; 197 | margin-top: 6px; 198 | line-height:14px; 199 | font-size:14px; 200 | display:inline-block; 201 | text-align:center; 202 | 203 | &:hover { 204 | background: linear-gradient(#749619, #527f0e); 205 | background-color: #659e10; 206 | border: 1px solid #527f0e; 207 | box-shadow: inset 0px 1px 1px rgba(0,0,0,.2), 0px 1px 0px rgba(0,0,0,.0); 208 | } 209 | } 210 | 211 | &.fork { 212 | float: left; 213 | margin-left: 0px; 214 | } 215 | 216 | &.downloads { 217 | float: right; 218 | margin-left: 6px; 219 | } 220 | 221 | &.title { 222 | float: right; 223 | margin-right: 10px; 224 | font-size: 11px; 225 | } 226 | } 227 | } 228 | } 229 | 230 | section { 231 | max-width:650px; 232 | padding: 10px 0px 50px 0px; 233 | margin: 20px 0; 234 | margin-top: 0px; 235 | 236 | #title { 237 | border: 0; 238 | outline: none; 239 | margin: 0 0 0px 0; 240 | padding: 0 0 5px 0; 241 | 242 | h1 { 243 | font-family: 'OpenSansLight', "Helvetica Neue", Helvetica, Arial, sans-serif; 244 | font-weight: normal; 245 | font-size: 40px; 246 | text-align: center; 247 | line-height: 36px; 248 | } 249 | 250 | p { 251 | color: #d7cfbe; 252 | font-family: 'OpenSansLight', "Helvetica Neue", Helvetica, Arial, sans-serif; 253 | font-weight: normal; 254 | font-size: 18px; 255 | text-align: center; 256 | } 257 | 258 | .credits { 259 | font-size: 14px; 260 | font-family: 'OpenSansRegular', "Helvetica Neue", Helvetica, Arial, sans-serif; 261 | font-weight: normal; 262 | color: #696969; 263 | margin-top: -10px; 264 | 265 | &.left { 266 | float: left; 267 | } 268 | 269 | &.right { 270 | float: right; 271 | } 272 | } 273 | 274 | } 275 | } 276 | 277 | @media print, screen and (max-width: 720px) { 278 | 279 | #title { 280 | .credits { 281 | display: block; 282 | width: 100%; 283 | line-height: 30px; 284 | text-align: center; 285 | 286 | .left { 287 | float: none; 288 | display: block; 289 | } 290 | 291 | .right { 292 | float: none; 293 | display: block; 294 | } 295 | } 296 | } 297 | } 298 | 299 | @media print, screen and (max-width: 480px) { 300 | 301 | #header { 302 | margin-top: -20px; 303 | } 304 | 305 | section { 306 | margin-top: 40px; 307 | } 308 | nav { 309 | display: none; 310 | } 311 | } 312 | -------------------------------------------------------------------------------- /_sass/normalize.scss: -------------------------------------------------------------------------------- 1 | /*! normalize.css 2012-02-07T12:37 UTC - https://github.com/necolas/normalize.css */ 2 | 3 | /* ============================================================================= 4 | HTML5 display definitions 5 | ========================================================================== */ 6 | 7 | /* 8 | * Corrects block display not defined in IE6/7/8/9 & FF3 9 | */ 10 | 11 | article, 12 | aside, 13 | details, 14 | figcaption, 15 | figure, 16 | footer, 17 | header, 18 | hgroup, 19 | nav, 20 | section, 21 | summary { 22 | display: block; 23 | } 24 | 25 | /* 26 | * Corrects inline-block display not defined in IE6/7/8/9 & FF3 27 | */ 28 | 29 | audio, 30 | canvas, 31 | video { 32 | display: inline-block; 33 | *display: inline; 34 | *zoom: 1; 35 | } 36 | 37 | /* 38 | * Prevents modern browsers from displaying 'audio' without controls 39 | */ 40 | 41 | audio:not([controls]) { 42 | display: none; 43 | } 44 | 45 | /* 46 | * Addresses styling for 'hidden' attribute not present in IE7/8/9, FF3, S4 47 | * Known issue: no IE6 support 48 | */ 49 | 50 | [hidden] { 51 | display: none; 52 | } 53 | 54 | 55 | /* ============================================================================= 56 | Base 57 | ========================================================================== */ 58 | 59 | /* 60 | * 1. Corrects text resizing oddly in IE6/7 when body font-size is set using em units 61 | * http://clagnut.com/blog/348/#c790 62 | * 2. Prevents iOS text size adjust after orientation change, without disabling user zoom 63 | * www.456bereastreet.com/archive/201012/controlling_text_size_in_safari_for_ios_without_disabling_user_zoom/ 64 | */ 65 | 66 | html { 67 | font-size: 100%; /* 1 */ 68 | -webkit-text-size-adjust: 100%; /* 2 */ 69 | -ms-text-size-adjust: 100%; /* 2 */ 70 | } 71 | 72 | /* 73 | * Addresses font-family inconsistency between 'textarea' and other form elements. 74 | */ 75 | 76 | html, 77 | button, 78 | input, 79 | select, 80 | textarea { 81 | font-family: sans-serif; 82 | } 83 | 84 | /* 85 | * Addresses margins handled incorrectly in IE6/7 86 | */ 87 | 88 | body { 89 | margin: 0; 90 | } 91 | 92 | 93 | /* ============================================================================= 94 | Links 95 | ========================================================================== */ 96 | 97 | /* 98 | * Addresses outline displayed oddly in Chrome 99 | */ 100 | 101 | a:focus { 102 | outline: thin dotted; 103 | } 104 | 105 | /* 106 | * Improves readability when focused and also mouse hovered in all browsers 107 | * people.opera.com/patrickl/experiments/keyboard/test 108 | */ 109 | 110 | a:hover, 111 | a:active { 112 | outline: 0; 113 | } 114 | 115 | 116 | /* ============================================================================= 117 | Typography 118 | ========================================================================== */ 119 | 120 | /* 121 | * Addresses font sizes and margins set differently in IE6/7 122 | * Addresses font sizes within 'section' and 'article' in FF4+, Chrome, S5 123 | */ 124 | 125 | h1 { 126 | font-size: 2em; 127 | margin: 0.67em 0; 128 | } 129 | 130 | h2 { 131 | font-size: 1.5em; 132 | margin: 0.83em 0; 133 | } 134 | 135 | h3 { 136 | font-size: 1.17em; 137 | margin: 1em 0; 138 | } 139 | 140 | h4 { 141 | font-size: 1em; 142 | margin: 1.33em 0; 143 | } 144 | 145 | h5 { 146 | font-size: 0.83em; 147 | margin: 1.67em 0; 148 | } 149 | 150 | h6 { 151 | font-size: 0.75em; 152 | margin: 2.33em 0; 153 | } 154 | 155 | /* 156 | * Addresses styling not present in IE7/8/9, S5, Chrome 157 | */ 158 | 159 | abbr[title] { 160 | border-bottom: 1px dotted; 161 | } 162 | 163 | /* 164 | * Addresses style set to 'bolder' in FF3+, S4/5, Chrome 165 | */ 166 | 167 | b, 168 | strong { 169 | font-weight: bold; 170 | } 171 | 172 | blockquote { 173 | margin: 1em 40px; 174 | } 175 | 176 | /* 177 | * Addresses styling not present in S5, Chrome 178 | */ 179 | 180 | dfn { 181 | font-style: italic; 182 | } 183 | 184 | /* 185 | * Addresses styling not present in IE6/7/8/9 186 | */ 187 | 188 | mark { 189 | background: #ff0; 190 | color: #000; 191 | } 192 | 193 | /* 194 | * Addresses margins set differently in IE6/7 195 | */ 196 | 197 | p, 198 | pre { 199 | margin: 1em 0; 200 | } 201 | 202 | /* 203 | * Corrects font family set oddly in IE6, S4/5, Chrome 204 | * en.wikipedia.org/wiki/User:Davidgothberg/Test59 205 | */ 206 | 207 | pre, 208 | code, 209 | kbd, 210 | samp { 211 | font-family: monospace, serif; 212 | _font-family: 'courier new', monospace; 213 | font-size: 1em; 214 | } 215 | 216 | /* 217 | * 1. Addresses CSS quotes not supported in IE6/7 218 | * 2. Addresses quote property not supported in S4 219 | */ 220 | 221 | /* 1 */ 222 | 223 | q { 224 | quotes: none; 225 | } 226 | 227 | /* 2 */ 228 | 229 | q:before, 230 | q:after { 231 | content: ''; 232 | content: none; 233 | } 234 | 235 | small { 236 | font-size: 75%; 237 | } 238 | 239 | /* 240 | * Prevents sub and sup affecting line-height in all browsers 241 | * gist.github.com/413930 242 | */ 243 | 244 | sub, 245 | sup { 246 | font-size: 75%; 247 | line-height: 0; 248 | position: relative; 249 | vertical-align: baseline; 250 | } 251 | 252 | sup { 253 | top: -0.5em; 254 | } 255 | 256 | sub { 257 | bottom: -0.25em; 258 | } 259 | 260 | 261 | /* ============================================================================= 262 | Lists 263 | ========================================================================== */ 264 | 265 | /* 266 | * Addresses margins set differently in IE6/7 267 | */ 268 | 269 | dl, 270 | menu, 271 | ol, 272 | ul { 273 | margin: 1em 0; 274 | } 275 | 276 | dd { 277 | margin: 0 0 0 40px; 278 | } 279 | 280 | /* 281 | * Addresses paddings set differently in IE6/7 282 | */ 283 | 284 | menu, 285 | ol, 286 | ul { 287 | padding: 0 0 0 40px; 288 | } 289 | 290 | /* 291 | * Corrects list images handled incorrectly in IE7 292 | */ 293 | 294 | nav ul, 295 | nav ol { 296 | list-style: none; 297 | list-style-image: none; 298 | } 299 | 300 | 301 | /* ============================================================================= 302 | Embedded content 303 | ========================================================================== */ 304 | 305 | /* 306 | * 1. Removes border when inside 'a' element in IE6/7/8/9, FF3 307 | * 2. Improves image quality when scaled in IE7 308 | * code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing/ 309 | */ 310 | 311 | img { 312 | border: 0; /* 1 */ 313 | -ms-interpolation-mode: bicubic; /* 2 */ 314 | } 315 | 316 | /* 317 | * Corrects overflow displayed oddly in IE9 318 | */ 319 | 320 | svg:not(:root) { 321 | overflow: hidden; 322 | } 323 | 324 | 325 | /* ============================================================================= 326 | Figures 327 | ========================================================================== */ 328 | 329 | /* 330 | * Addresses margin not present in IE6/7/8/9, S5, O11 331 | */ 332 | 333 | figure { 334 | margin: 0; 335 | } 336 | 337 | 338 | /* ============================================================================= 339 | Forms 340 | ========================================================================== */ 341 | 342 | /* 343 | * Corrects margin displayed oddly in IE6/7 344 | */ 345 | 346 | form { 347 | margin: 0; 348 | } 349 | 350 | /* 351 | * Define consistent border, margin, and padding 352 | */ 353 | 354 | fieldset { 355 | border: 1px solid #c0c0c0; 356 | margin: 0 2px; 357 | padding: 0.35em 0.625em 0.75em; 358 | } 359 | 360 | /* 361 | * 1. Corrects color not being inherited in IE6/7/8/9 362 | * 2. Corrects text not wrapping in FF3 363 | * 3. Corrects alignment displayed oddly in IE6/7 364 | */ 365 | 366 | legend { 367 | border: 0; /* 1 */ 368 | padding: 0; 369 | white-space: normal; /* 2 */ 370 | *margin-left: -7px; /* 3 */ 371 | } 372 | 373 | /* 374 | * 1. Corrects font size not being inherited in all browsers 375 | * 2. Addresses margins set differently in IE6/7, FF3+, S5, Chrome 376 | * 3. Improves appearance and consistency in all browsers 377 | */ 378 | 379 | button, 380 | input, 381 | select, 382 | textarea { 383 | font-size: 100%; /* 1 */ 384 | margin: 0; /* 2 */ 385 | vertical-align: baseline; /* 3 */ 386 | *vertical-align: middle; /* 3 */ 387 | } 388 | 389 | /* 390 | * Addresses FF3/4 setting line-height on 'input' using !important in the UA stylesheet 391 | */ 392 | 393 | button, 394 | input { 395 | line-height: normal; /* 1 */ 396 | } 397 | 398 | /* 399 | * 1. Improves usability and consistency of cursor style between image-type 'input' and others 400 | * 2. Corrects inability to style clickable 'input' types in iOS 401 | * 3. Removes inner spacing in IE7 without affecting normal text inputs 402 | * Known issue: inner spacing remains in IE6 403 | */ 404 | 405 | button, 406 | input[type="button"], 407 | input[type="reset"], 408 | input[type="submit"] { 409 | cursor: pointer; /* 1 */ 410 | -webkit-appearance: button; /* 2 */ 411 | *overflow: visible; /* 3 */ 412 | } 413 | 414 | /* 415 | * Re-set default cursor for disabled elements 416 | */ 417 | 418 | button[disabled], 419 | input[disabled] { 420 | cursor: default; 421 | } 422 | 423 | /* 424 | * 1. Addresses box sizing set to content-box in IE8/9 425 | * 2. Removes excess padding in IE8/9 426 | * 3. Removes excess padding in IE7 427 | Known issue: excess padding remains in IE6 428 | */ 429 | 430 | input[type="checkbox"], 431 | input[type="radio"] { 432 | box-sizing: border-box; /* 1 */ 433 | padding: 0; /* 2 */ 434 | *height: 13px; /* 3 */ 435 | *width: 13px; /* 3 */ 436 | } 437 | 438 | /* 439 | * 1. Addresses appearance set to searchfield in S5, Chrome 440 | * 2. Addresses box-sizing set to border-box in S5, Chrome (include -moz to future-proof) 441 | */ 442 | 443 | input[type="search"] { 444 | -webkit-appearance: textfield; /* 1 */ 445 | -moz-box-sizing: content-box; 446 | -webkit-box-sizing: content-box; /* 2 */ 447 | box-sizing: content-box; 448 | } 449 | 450 | /* 451 | * Removes inner padding and search cancel button in S5, Chrome on OS X 452 | */ 453 | 454 | input[type="search"]::-webkit-search-decoration, 455 | input[type="search"]::-webkit-search-cancel-button { 456 | -webkit-appearance: none; 457 | } 458 | 459 | /* 460 | * Removes inner padding and border in FF3+ 461 | * www.sitepen.com/blog/2008/05/14/the-devils-in-the-details-fixing-dojos-toolbar-buttons/ 462 | */ 463 | 464 | button::-moz-focus-inner, 465 | input::-moz-focus-inner { 466 | border: 0; 467 | padding: 0; 468 | } 469 | 470 | /* 471 | * 1. Removes default vertical scrollbar in IE6/7/8/9 472 | * 2. Improves readability and alignment in all browsers 473 | */ 474 | 475 | textarea { 476 | overflow: auto; /* 1 */ 477 | vertical-align: top; /* 2 */ 478 | } 479 | 480 | 481 | /* ============================================================================= 482 | Tables 483 | ========================================================================== */ 484 | 485 | /* 486 | * Remove most spacing between table cells 487 | */ 488 | 489 | table { 490 | border-collapse: collapse; 491 | border-spacing: 0; 492 | } -------------------------------------------------------------------------------- /_sass/rouge-base16-dark.scss: -------------------------------------------------------------------------------- 1 | /* 2 | generated by rouge http://rouge.jneen.net/ 3 | original base16 by Chris Kempson (https://github.com/chriskempson/base16) 4 | */ 5 | 6 | .highlight table td { padding: 5px; } 7 | .highlight table pre { margin: 0; } 8 | .highlight, .highlight .w { 9 | color: #d0d0d0; 10 | } 11 | .highlight .err { 12 | color: #151515; 13 | background-color: #ac4142; 14 | } 15 | .highlight .c, .highlight .cd, .highlight .cm, .highlight .c1, .highlight .cs { 16 | color: #888; 17 | } 18 | .highlight .cp { 19 | color: #f4bf75; 20 | } 21 | .highlight .nt { 22 | color: #f4bf75; 23 | } 24 | .highlight .o, .highlight .ow { 25 | color: #d0d0d0; 26 | } 27 | .highlight .p, .highlight .pi { 28 | color: #d0d0d0; 29 | } 30 | .highlight .gi { 31 | color: #90a959; 32 | } 33 | .highlight .gd { 34 | color: #ac4142; 35 | } 36 | .highlight .gh { 37 | color: #6a9fb5; 38 | font-weight: bold; 39 | } 40 | .highlight .k, .highlight .kn, .highlight .kp, .highlight .kr, .highlight .kv { 41 | color: #aa759f; 42 | } 43 | .highlight .kc { 44 | color: #d28445; 45 | } 46 | .highlight .kt { 47 | color: #d28445; 48 | } 49 | .highlight .kd { 50 | color: #d28445; 51 | } 52 | .highlight .s, .highlight .sb, .highlight .sc, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .s1 { 53 | color: #90a959; 54 | } 55 | .highlight .sr { 56 | color: #75b5aa; 57 | } 58 | .highlight .si { 59 | color: #8f5536; 60 | } 61 | .highlight .se { 62 | color: #8f5536; 63 | } 64 | .highlight .nn { 65 | color: #f4bf75; 66 | } 67 | .highlight .nc { 68 | color: #f4bf75; 69 | } 70 | .highlight .no { 71 | color: #f4bf75; 72 | } 73 | .highlight .na { 74 | color: #6a9fb5; 75 | } 76 | .highlight .m, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mb, .highlight .mx { 77 | color: #90a959; 78 | } 79 | .highlight .ss { 80 | color: #90a959; 81 | } 82 | -------------------------------------------------------------------------------- /assets/css/ie.scss: -------------------------------------------------------------------------------- 1 | nav { 2 | display: none; 3 | } -------------------------------------------------------------------------------- /assets/css/style.scss: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | @import "jekyll-theme-midnight"; 5 | -------------------------------------------------------------------------------- /assets/fonts/OpenSans-Bold-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/fonts/OpenSans-Bold-webfont.eot -------------------------------------------------------------------------------- /assets/fonts/OpenSans-Bold-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/fonts/OpenSans-Bold-webfont.ttf -------------------------------------------------------------------------------- /assets/fonts/OpenSans-Bold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/fonts/OpenSans-Bold-webfont.woff -------------------------------------------------------------------------------- /assets/fonts/OpenSans-BoldItalic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/fonts/OpenSans-BoldItalic-webfont.eot -------------------------------------------------------------------------------- /assets/fonts/OpenSans-BoldItalic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/fonts/OpenSans-BoldItalic-webfont.ttf -------------------------------------------------------------------------------- /assets/fonts/OpenSans-BoldItalic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/fonts/OpenSans-BoldItalic-webfont.woff -------------------------------------------------------------------------------- /assets/fonts/OpenSans-Italic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/fonts/OpenSans-Italic-webfont.eot -------------------------------------------------------------------------------- /assets/fonts/OpenSans-Italic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/fonts/OpenSans-Italic-webfont.ttf -------------------------------------------------------------------------------- /assets/fonts/OpenSans-Italic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/fonts/OpenSans-Italic-webfont.woff -------------------------------------------------------------------------------- /assets/fonts/OpenSans-Light-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/fonts/OpenSans-Light-webfont.eot -------------------------------------------------------------------------------- /assets/fonts/OpenSans-Light-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/fonts/OpenSans-Light-webfont.ttf -------------------------------------------------------------------------------- /assets/fonts/OpenSans-Light-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/fonts/OpenSans-Light-webfont.woff -------------------------------------------------------------------------------- /assets/fonts/OpenSans-LightItalic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/fonts/OpenSans-LightItalic-webfont.eot -------------------------------------------------------------------------------- /assets/fonts/OpenSans-LightItalic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/fonts/OpenSans-LightItalic-webfont.ttf -------------------------------------------------------------------------------- /assets/fonts/OpenSans-LightItalic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/fonts/OpenSans-LightItalic-webfont.woff -------------------------------------------------------------------------------- /assets/fonts/OpenSans-Regular-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/fonts/OpenSans-Regular-webfont.eot -------------------------------------------------------------------------------- /assets/fonts/OpenSans-Regular-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/fonts/OpenSans-Regular-webfont.ttf -------------------------------------------------------------------------------- /assets/fonts/OpenSans-Regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/fonts/OpenSans-Regular-webfont.woff -------------------------------------------------------------------------------- /assets/fonts/OpenSans-Semibold-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/fonts/OpenSans-Semibold-webfont.eot -------------------------------------------------------------------------------- /assets/fonts/OpenSans-Semibold-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/fonts/OpenSans-Semibold-webfont.ttf -------------------------------------------------------------------------------- /assets/fonts/OpenSans-Semibold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/fonts/OpenSans-Semibold-webfont.woff -------------------------------------------------------------------------------- /assets/fonts/OpenSans-SemiboldItalic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/fonts/OpenSans-SemiboldItalic-webfont.eot -------------------------------------------------------------------------------- /assets/fonts/OpenSans-SemiboldItalic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/fonts/OpenSans-SemiboldItalic-webfont.ttf -------------------------------------------------------------------------------- /assets/fonts/OpenSans-SemiboldItalic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/fonts/OpenSans-SemiboldItalic-webfont.woff -------------------------------------------------------------------------------- /assets/images/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/images/1.png -------------------------------------------------------------------------------- /assets/images/2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/images/2.PNG -------------------------------------------------------------------------------- /assets/images/BPDG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/images/BPDG.png -------------------------------------------------------------------------------- /assets/images/Bitcoin Privacy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/images/Bitcoin Privacy.jpg -------------------------------------------------------------------------------- /assets/images/Bitcoin Privacy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/images/Bitcoin Privacy.png -------------------------------------------------------------------------------- /assets/images/RD Stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/images/RD Stack.png -------------------------------------------------------------------------------- /assets/images/RD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/images/RD.png -------------------------------------------------------------------------------- /assets/images/RD1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/images/RD1.png -------------------------------------------------------------------------------- /assets/images/Test 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/images/Test 1.png -------------------------------------------------------------------------------- /assets/images/bullet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/images/bullet.png -------------------------------------------------------------------------------- /assets/images/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/images/favicon-32x32.png -------------------------------------------------------------------------------- /assets/images/hr.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/images/hr.gif -------------------------------------------------------------------------------- /assets/images/nav-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/images/nav-bg.gif -------------------------------------------------------------------------------- /assets/images/sml.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/assets/images/sml.jpg -------------------------------------------------------------------------------- /assets/js/respond.js: -------------------------------------------------------------------------------- 1 | if(typeof Object.create!=="function"){ 2 | Object.create=function(o){ 3 | function F(){ 4 | }; 5 | F.prototype=o; 6 | return new F(); 7 | }; 8 | } 9 | var ua={toString:function(){ 10 | return navigator.userAgent; 11 | },test:function(s){ 12 | return this.toString().toLowerCase().indexOf(s.toLowerCase())>-1; 13 | }}; 14 | ua.version=(ua.toString().toLowerCase().match(/[\s\S]+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1]; 15 | ua.webkit=ua.test("webkit"); 16 | ua.gecko=ua.test("gecko")&&!ua.webkit; 17 | ua.opera=ua.test("opera"); 18 | ua.ie=ua.test("msie")&&!ua.opera; 19 | ua.ie6=ua.ie&&document.compatMode&&typeof document.documentElement.style.maxHeight==="undefined"; 20 | ua.ie7=ua.ie&&document.documentElement&&typeof document.documentElement.style.maxHeight!=="undefined"&&typeof XDomainRequest==="undefined"; 21 | ua.ie8=ua.ie&&typeof XDomainRequest!=="undefined"; 22 | var domReady=function(){ 23 | var _1=[]; 24 | var _2=function(){ 25 | if(!arguments.callee.done){ 26 | arguments.callee.done=true; 27 | for(var i=0;i<_1.length;i++){ 28 | _1[i](); 29 | } 30 | } 31 | }; 32 | if(document.addEventListener){ 33 | document.addEventListener("DOMContentLoaded",_2,false); 34 | } 35 | if(ua.ie){ 36 | (function(){ 37 | try{ 38 | document.documentElement.doScroll("left"); 39 | } 40 | catch(e){ 41 | setTimeout(arguments.callee,50); 42 | return; 43 | } 44 | _2(); 45 | })(); 46 | document.onreadystatechange=function(){ 47 | if(document.readyState==="complete"){ 48 | document.onreadystatechange=null; 49 | _2(); 50 | } 51 | }; 52 | } 53 | if(ua.webkit&&document.readyState){ 54 | (function(){ 55 | if(document.readyState!=="loading"){ 56 | _2(); 57 | }else{ 58 | setTimeout(arguments.callee,10); 59 | } 60 | })(); 61 | } 62 | window.onload=_2; 63 | return function(fn){ 64 | if(typeof fn==="function"){ 65 | _1[_1.length]=fn; 66 | } 67 | return fn; 68 | }; 69 | }(); 70 | var cssHelper=function(){ 71 | var _3={BLOCKS:/[^\s{][^{]*\{(?:[^{}]*\{[^{}]*\}[^{}]*|[^{}]*)*\}/g,BLOCKS_INSIDE:/[^\s{][^{]*\{[^{}]*\}/g,DECLARATIONS:/[a-zA-Z\-]+[^;]*:[^;]+;/g,RELATIVE_URLS:/url\(['"]?([^\/\)'"][^:\)'"]+)['"]?\)/g,REDUNDANT_COMPONENTS:/(?:\/\*([^*\\\\]|\*(?!\/))+\*\/|@import[^;]+;)/g,REDUNDANT_WHITESPACE:/\s*(,|:|;|\{|\})\s*/g,MORE_WHITESPACE:/\s{2,}/g,FINAL_SEMICOLONS:/;\}/g,NOT_WHITESPACE:/\S+/g}; 72 | var _4,_5=false; 73 | var _6=[]; 74 | var _7=function(fn){ 75 | if(typeof fn==="function"){ 76 | _6[_6.length]=fn; 77 | } 78 | }; 79 | var _8=function(){ 80 | for(var i=0;i<_6.length;i++){ 81 | _6[i](_4); 82 | } 83 | }; 84 | var _9={}; 85 | var _a=function(n,v){ 86 | if(_9[n]){ 87 | var _b=_9[n].listeners; 88 | if(_b){ 89 | for(var i=0;i<_b.length;i++){ 90 | _b[i](v); 91 | } 92 | } 93 | } 94 | }; 95 | var _c=function(_d,_e,_f){ 96 | if(ua.ie&&!window.XMLHttpRequest){ 97 | window.XMLHttpRequest=function(){ 98 | return new ActiveXObject("Microsoft.XMLHTTP"); 99 | }; 100 | } 101 | if(!XMLHttpRequest){ 102 | return ""; 103 | } 104 | var r=new XMLHttpRequest(); 105 | try{ 106 | r.open("get",_d,true); 107 | r.setRequestHeader("X_REQUESTED_WITH","XMLHttpRequest"); 108 | } 109 | catch(e){ 110 | _f(); 111 | return; 112 | } 113 | var _10=false; 114 | setTimeout(function(){ 115 | _10=true; 116 | },5000); 117 | document.documentElement.style.cursor="progress"; 118 | r.onreadystatechange=function(){ 119 | if(r.readyState===4&&!_10){ 120 | if(!r.status&&location.protocol==="file:"||(r.status>=200&&r.status<300)||r.status===304||navigator.userAgent.indexOf("Safari")>-1&&typeof r.status==="undefined"){ 121 | _e(r.responseText); 122 | }else{ 123 | _f(); 124 | } 125 | document.documentElement.style.cursor=""; 126 | r=null; 127 | } 128 | }; 129 | r.send(""); 130 | }; 131 | var _11=function(_12){ 132 | _12=_12.replace(_3.REDUNDANT_COMPONENTS,""); 133 | _12=_12.replace(_3.REDUNDANT_WHITESPACE,"$1"); 134 | _12=_12.replace(_3.MORE_WHITESPACE," "); 135 | _12=_12.replace(_3.FINAL_SEMICOLONS,"}"); 136 | return _12; 137 | }; 138 | var _13={mediaQueryList:function(s){ 139 | var o={}; 140 | var idx=s.indexOf("{"); 141 | var lt=s.substring(0,idx); 142 | s=s.substring(idx+1,s.length-1); 143 | var mqs=[],rs=[]; 144 | var qts=lt.toLowerCase().substring(7).split(","); 145 | for(var i=0;i-1&&_23.href&&_23.href.length!==0&&!_23.disabled){ 315 | _1f[_1f.length]=_23; 316 | } 317 | } 318 | if(_1f.length>0){ 319 | var c=0; 320 | var _24=function(){ 321 | c++; 322 | if(c===_1f.length){ 323 | _20(); 324 | } 325 | }; 326 | var _25=function(_26){ 327 | var _27=_26.href; 328 | _c(_27,function(_28){ 329 | _28=_11(_28).replace(_3.RELATIVE_URLS,"url("+_27.substring(0,_27.lastIndexOf("/"))+"/$1)"); 330 | _26.cssHelperText=_28; 331 | _24(); 332 | },_24); 333 | }; 334 | for(i=0;i<_1f.length;i++){ 335 | _25(_1f[i]); 336 | } 337 | }else{ 338 | _20(); 339 | } 340 | }; 341 | var _29={mediaQueryLists:"array",rules:"array",selectors:"object",declarations:"array",properties:"object"}; 342 | var _2a={mediaQueryLists:null,rules:null,selectors:null,declarations:null,properties:null}; 343 | var _2b=function(_2c,v){ 344 | if(_2a[_2c]!==null){ 345 | if(_29[_2c]==="array"){ 346 | return (_2a[_2c]=_2a[_2c].concat(v)); 347 | }else{ 348 | var c=_2a[_2c]; 349 | for(var n in v){ 350 | if(v.hasOwnProperty(n)){ 351 | if(!c[n]){ 352 | c[n]=v[n]; 353 | }else{ 354 | c[n]=c[n].concat(v[n]); 355 | } 356 | } 357 | } 358 | return c; 359 | } 360 | } 361 | }; 362 | var _2d=function(_2e){ 363 | _2a[_2e]=(_29[_2e]==="array")?[]:{}; 364 | for(var i=0;i<_4.length;i++){ 365 | _2b(_2e,_4[i].cssHelperParsed[_2e]); 366 | } 367 | return _2a[_2e]; 368 | }; 369 | domReady(function(){ 370 | var els=document.body.getElementsByTagName("*"); 371 | for(var i=0;i=_44)||(max&&_46<_44)||(!min&&!max&&_46===_44)); 554 | }else{ 555 | return false; 556 | } 557 | }else{ 558 | return _46>0; 559 | } 560 | }else{ 561 | if("device-height"===_41.substring(l-13,l)){ 562 | _47=screen.height; 563 | if(_42!==null){ 564 | if(_43==="length"){ 565 | return ((min&&_47>=_44)||(max&&_47<_44)||(!min&&!max&&_47===_44)); 566 | }else{ 567 | return false; 568 | } 569 | }else{ 570 | return _47>0; 571 | } 572 | }else{ 573 | if("width"===_41.substring(l-5,l)){ 574 | _46=document.documentElement.clientWidth||document.body.clientWidth; 575 | if(_42!==null){ 576 | if(_43==="length"){ 577 | return ((min&&_46>=_44)||(max&&_46<_44)||(!min&&!max&&_46===_44)); 578 | }else{ 579 | return false; 580 | } 581 | }else{ 582 | return _46>0; 583 | } 584 | }else{ 585 | if("height"===_41.substring(l-6,l)){ 586 | _47=document.documentElement.clientHeight||document.body.clientHeight; 587 | if(_42!==null){ 588 | if(_43==="length"){ 589 | return ((min&&_47>=_44)||(max&&_47<_44)||(!min&&!max&&_47===_44)); 590 | }else{ 591 | return false; 592 | } 593 | }else{ 594 | return _47>0; 595 | } 596 | }else{ 597 | if("device-aspect-ratio"===_41.substring(l-19,l)){ 598 | return _43==="aspect-ratio"&&screen.width*_44[1]===screen.height*_44[0]; 599 | }else{ 600 | if("color-index"===_41.substring(l-11,l)){ 601 | var _48=Math.pow(2,screen.colorDepth); 602 | if(_42!==null){ 603 | if(_43==="absolute"){ 604 | return ((min&&_48>=_44)||(max&&_48<_44)||(!min&&!max&&_48===_44)); 605 | }else{ 606 | return false; 607 | } 608 | }else{ 609 | return _48>0; 610 | } 611 | }else{ 612 | if("color"===_41.substring(l-5,l)){ 613 | var _49=screen.colorDepth; 614 | if(_42!==null){ 615 | if(_43==="absolute"){ 616 | return ((min&&_49>=_44)||(max&&_49<_44)||(!min&&!max&&_49===_44)); 617 | }else{ 618 | return false; 619 | } 620 | }else{ 621 | return _49>0; 622 | } 623 | }else{ 624 | if("resolution"===_41.substring(l-10,l)){ 625 | var res; 626 | if(_45==="dpcm"){ 627 | res=_3d("1cm"); 628 | }else{ 629 | res=_3d("1in"); 630 | } 631 | if(_42!==null){ 632 | if(_43==="resolution"){ 633 | return ((min&&res>=_44)||(max&&res<_44)||(!min&&!max&&res===_44)); 634 | }else{ 635 | return false; 636 | } 637 | }else{ 638 | return res>0; 639 | } 640 | }else{ 641 | return false; 642 | } 643 | } 644 | } 645 | } 646 | } 647 | } 648 | } 649 | } 650 | }; 651 | var _4a=function(mq){ 652 | var _4b=mq.getValid(); 653 | var _4c=mq.getExpressions(); 654 | var l=_4c.length; 655 | if(l>0){ 656 | for(var i=0;i0){ 675 | s[c++]=","; 676 | } 677 | s[c++]=n; 678 | } 679 | } 680 | if(s.length>0){ 681 | _39[_39.length]=cssHelper.addStyle("@media "+s.join("")+"{"+mql.getCssText()+"}",false); 682 | } 683 | }; 684 | var _4e=function(_4f){ 685 | for(var i=0;i<_4f.length;i++){ 686 | _4d(_4f[i]); 687 | } 688 | if(ua.ie){ 689 | document.documentElement.style.display="block"; 690 | setTimeout(function(){ 691 | document.documentElement.style.display=""; 692 | },0); 693 | setTimeout(function(){ 694 | cssHelper.broadcast("cssMediaQueriesTested"); 695 | },100); 696 | }else{ 697 | cssHelper.broadcast("cssMediaQueriesTested"); 698 | } 699 | }; 700 | var _50=function(){ 701 | for(var i=0;i<_39.length;i++){ 702 | cssHelper.removeStyle(_39[i]); 703 | } 704 | _39=[]; 705 | cssHelper.mediaQueryLists(_4e); 706 | }; 707 | var _51=0; 708 | var _52=function(){ 709 | var _53=cssHelper.getViewportWidth(); 710 | var _54=cssHelper.getViewportHeight(); 711 | if(ua.ie){ 712 | var el=document.createElement("div"); 713 | el.style.position="absolute"; 714 | el.style.top="-9999em"; 715 | el.style.overflow="scroll"; 716 | document.body.appendChild(el); 717 | _51=el.offsetWidth-el.clientWidth; 718 | document.body.removeChild(el); 719 | } 720 | var _55; 721 | var _56=function(){ 722 | var vpw=cssHelper.getViewportWidth(); 723 | var vph=cssHelper.getViewportHeight(); 724 | if(Math.abs(vpw-_53)>_51||Math.abs(vph-_54)>_51){ 725 | _53=vpw; 726 | _54=vph; 727 | clearTimeout(_55); 728 | _55=setTimeout(function(){ 729 | if(!_3a()){ 730 | _50(); 731 | }else{ 732 | cssHelper.broadcast("cssMediaQueriesTested"); 733 | } 734 | },500); 735 | } 736 | }; 737 | window.onresize=function(){ 738 | var x=window.onresize||function(){ 739 | }; 740 | return function(){ 741 | x(); 742 | _56(); 743 | }; 744 | }(); 745 | }; 746 | var _57=document.documentElement; 747 | _57.style.marginLeft="-32767px"; 748 | setTimeout(function(){ 749 | _57.style.marginTop=""; 750 | },20000); 751 | return function(){ 752 | if(!_3a()){ 753 | cssHelper.addListener("newStyleParsed",function(el){ 754 | _4e(el.cssHelperParsed.mediaQueryLists); 755 | }); 756 | cssHelper.addListener("cssMediaQueriesTested",function(){ 757 | if(ua.ie){ 758 | _57.style.width="1px"; 759 | } 760 | setTimeout(function(){ 761 | _57.style.width=""; 762 | _57.style.marginLeft=""; 763 | },0); 764 | cssHelper.removeListener("cssMediaQueriesTested",arguments.callee); 765 | }); 766 | _3c(); 767 | _50(); 768 | }else{ 769 | _57.style.marginLeft=""; 770 | } 771 | _52(); 772 | }; 773 | }()); 774 | try{ 775 | document.execCommand("BackgroundImageCache",false,true); 776 | } 777 | catch(e){ 778 | } 779 | 780 | -------------------------------------------------------------------------------- /docs/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at opensource@github.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] 44 | 45 | [homepage]: http://contributor-covenant.org 46 | [version]: http://contributor-covenant.org/version/1/4/ 47 | -------------------------------------------------------------------------------- /docs/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to the Midnight theme 2 | 3 | Hi there! We're thrilled that you'd like to contribute to the Midnight theme. Your help is essential for keeping it great. 4 | 5 | the Midnight theme is an open source project supported by the efforts of an entire community and built one contribution at a time by users like you. We'd love for you to get involved. Whatever your level of skill or however much time you can give, your contribution is greatly appreciated. There are many ways to contribute, from writing tutorials or blog posts, improving the documentation, submitting bug reports and feature requests, helping other users by commenting on issues, or writing code which can be incorporated into the Midnight theme itself. 6 | 7 | Following these guidelines helps to communicate that you respect the time of the developers managing and developing this open source project. In return, they should reciprocate that respect in addressing your issue, assessing changes, and helping you finalize your pull requests. 8 | 9 | 10 | ## Looking for support? 11 | 12 | We'd love to help. Check out [the support guidelines](SUPPORT.md). 13 | 14 | ## How to report a bug 15 | 16 | Think you found a bug? Please check [the list of open issues](https://github.com/pages-themes/midnight/issues) to see if your bug has already been reported. If it hasn't please [submit a new issue](https://github.com/pages-themes/midnight/issues/new). 17 | 18 | Here are a few tips for writing *great* bug reports: 19 | 20 | * Describe the specific problem (e.g., "widget doesn't turn clockwise" versus "getting an error") 21 | * Include the steps to reproduce the bug, what you expected to happen, and what happened instead 22 | * Check that you are using the latest version of the project and its dependencies 23 | * Include what version of the project your using, as well as any relevant dependencies 24 | * Only include one bug per issue. If you have discovered two bugs, please file two issues 25 | * Even if you don't know how to fix the bug, including a failing test may help others track it down 26 | 27 | **If you find a security vulnerability, do not open an issue. Please email security@github.com instead.** 28 | 29 | ## How to suggest a feature or enhancement 30 | 31 | If you find yourself wishing for a feature that doesn't exist in the Midnight theme, you are probably not alone. There are bound to be others out there with similar needs. Many of the features that the Midnight theme has today have been added because our users saw the need. 32 | 33 | Feature requests are welcome. But take a moment to find out whether your idea fits with the scope and goals of the project. It's up to you to make a strong case to convince the project's developers of the merits of this feature. Please provide as much detail and context as possible, including describing the problem you're trying to solve. 34 | 35 | [Open an issue](https://github.com/pages-themes/midnight/issues/new) which describes the feature you would like to see, why you want it, how it should work, etc. 36 | 37 | 38 | 39 | ## Your first contribution 40 | 41 | We'd love for you to contribute to the project. Unsure where to begin contributing to the Midnight theme? You can start by looking through these "good first issue" and "help wanted" issues: 42 | 43 | * [Good first issues](https://github.com/pages-themes/midnight/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) - issues which should only require a few lines of code and a test or two 44 | * [Help wanted issues](https://github.com/pages-themes/midnight/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) - issues which may be a bit more involved, but are specifically seeking community contributions 45 | 46 | *p.s. Feel free to ask for help; everyone is a beginner at first* :smiley_cat: 47 | 48 | ## How to propose changes 49 | 50 | Here's a few general guidelines for proposing changes: 51 | 52 | * If you are making visual changes, include a screenshot of what the affected element looks like, both before and after. 53 | * Follow the [Jekyll style guide](https://ben.balter.com/jekyll-style-guide). 54 | * If you are changing any user-facing functionality, please be sure to update the documentation 55 | * Each pull request should implement **one** feature or bug fix. If you want to add or fix more than one thing, submit more than one pull request 56 | * Do not commit changes to files that are irrelevant to your feature or bug fix 57 | * Don't bump the version number in your pull request (it will be bumped prior to release) 58 | * Write [a good commit message](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) 59 | 60 | At a high level, [the process for proposing changes](https://guides.github.com/introduction/flow/) is: 61 | 62 | 1. [Fork](https://github.com/pages-themes/midnight/fork) and clone the project 63 | 2. Configure and install the dependencies: `script/bootstrap` 64 | 3. Make sure the tests pass on your machine: `script/cibuild` 65 | 4. Create a new branch: `git checkout -b my-branch-name` 66 | 5. Make your change, add tests, and make sure the tests still pass 67 | 6. Push to your fork and [submit a pull request](https://github.com/pages-themes/midnight/compare) 68 | 7. Pat your self on the back and wait for your pull request to be reviewed and merged 69 | 70 | **Interesting in submitting your first Pull Request?** It's easy! You can learn how from this *free* series [How to Contribute to an Open Source Project on GitHub](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github) 71 | 72 | ## Bootstrapping your local development environment 73 | 74 | `script/bootstrap` 75 | 76 | ## Running tests 77 | 78 | `script/cibuild` 79 | 80 | ## Code of conduct 81 | 82 | This project is governed by [the Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. 83 | 84 | ## Additional Resources 85 | 86 | * [Contributing to Open Source on GitHub](https://guides.github.com/activities/contributing-to-open-source/) 87 | * [Using Pull Requests](https://help.github.com/articles/using-pull-requests/) 88 | * [GitHub Help](https://help.github.com) 89 | -------------------------------------------------------------------------------- /docs/SUPPORT.md: -------------------------------------------------------------------------------- 1 | ## Where to get help 2 | 3 | If you think you've found a bug in the Midnight theme, please [check the existing issues](https://github.com/pages-themes/midnight/issues), and if no one has reported the problem, [open a new issue](https://github.com/pages-themes/midnight/issues/new). 4 | 5 | If you have a general question about the theme, how to implement it, or how to customize it for your site you have two options: 6 | 7 | 1. Search for your query on [`support.github.com`](https://support.github.com/?q=pages+Midnight+theme), which will also look for similar topics on [`github.community`](https://github.community/search?q=pages+Midnight+theme) 8 | 2. Ask your question of the Jekyll community on [talk.jekyllrb.com](https://talk.jekyllrb.com/) 9 | 3. [Contact GitHub Support](https://github.com/contact?form%5Bsubject%5D=GitHub%20Pages%20theme%20pages-themes/midnight) 10 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/6488f139d0708998100fb265bc8c88548fb3ad99/favicon.ico -------------------------------------------------------------------------------- /get.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | [![bitcoinerheader](https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/master/assets/images/BPDG.png)](https://bitcoinprivacy.guide) 6 | 7 |
8 | 9 | # Sourcing Your Bitcoin 10 | 11 | ### Table of Contents 12 | 13 | 1. [Why no-KYC?](#why-no-kyc) 14 | 2. [Where to buy no-KYC?](#where-to-buy-no-kyc) 15 | 3. [Other options](#other-options) 16 | 4. [Trade-offs](#trade-offs) 17 | 18 | ### Why no-KYC? 19 | 20 | KYC or 'Know your customer' is a regulation that any businesses with a banking relationship has to abide by and Bitcoin exchanges are no different. These rules are imposed worldwide and are geared towards ensuring that a business acting as a money exchange and/or transmitter has 'suitable' information on every customer they serve. 21 | 22 | 95% of Bitcoin on-ramps today require KYC information. If you purchase through one of these regulated entities, you essentially tag your bitcoin addresses to your personal identity. This makes it much easier for chain surveillance firms, the companies they work with or worse, governments, to potentially... 23 | 24 | * Track your spending habits 25 | * Prevent you from using other regulated services 26 | * Confiscate your bitcoin 27 | * Come after you for tax liabilities 28 | * Generally know more about you than they should 29 | 30 | If you already own some bitcoin from a KYC source, you can decide on the best course of action and read more on the risks of KYC [here](https://bitcoinqna.github.io/noKYConly/). At the very least, ensure that you keep your KYC and non-KYC stacks of bitcoin completely separate. 31 | 32 | Given these risks it seems logical that step 1 of your Bitcoin privacy journey should be to ensure that when obtaining bitcoin, the fewer people who know, the better. Buying from a no-KYC source facilitates this. 33 | 34 | ### Where to buy no-KYC? 35 | 36 | #### Easy 37 | 38 | 1. Sign up for [Hodl Hodl](https://hodlhodl.com/) 39 | 2. Click 'Buy BTC' 40 | 3. Select desired payment method 41 | 4. Select the offer you wish to take 42 | 5. Specify the amount you wish to buy (if the seller is offering a range) 43 | 6. Enter receive address to which you want the bitcoin to be sent 44 | 7. Generate an escrow password 45 | 8. Wait for seller to deposit their bitcoin to the escrow and for 1 confirmation 46 | 9. Send the funds using your chosen payment method and confirm this on Hodl Hodl 47 | 10. Once the seller confirms receipt of payment, the bitcoin will be sent to your address 48 | 49 | 50 | #### More in-depth 51 | 52 | 1. Download [Bisq](https://bisq.network/downloads/) onto your computer, run it and wait for it to sync 53 | 2. Click on account and add the payment method you intend to use to purchase bitcoin with 54 | 3. Go to 'Buy BTC' and search for sellers offering bitcoin in exchange for your chosen payment method 55 | 4. Click 'Take Offer' 56 | 5. Specify the amount you wish to buy (if the seller is offering a range) 57 | 6. Fund trade wallet with BTC 58 | 7. Confirm trade 59 | 8. Wait for 1 blockchain confirmation 60 | 9. You will then see seller's payment details to send to 61 | 10. Once the seller confirms receipt of payment, the bitcoin (including your deposit) will be sent to your Bisq wallet 62 | 63 | ### Other options 64 | 65 | - **Peer to Peer Exchanges** 66 | - [LocalCryptos](https://localcryptos.com/) 67 | - [Local Coin Swap](https://localcoinswap.com/) 68 | - [Agora Desk](https://agoradesk.com/) 69 | 70 | - **ATMs** 71 | - [ATMs](https://coinatmradar.com/) *Check for individual KYC requirements* 72 | 73 | - **Vouchers** 74 | - [Azteco](https://azte.co/index.php#intro) 75 | 76 | - **Misc** 77 | - [Earn it](https://www.lopp.net/bitcoin-information/buying-earning.html#earning) 78 | - [Buy in person at a meetup](https://bitcoin-only.com/#meetups) 79 | - [Mine it](https://keybase.pub/diverterbtc/Mining%20for%20the%20Streets.pdf) 80 | 81 | 82 | ### Trade-offs 83 | 84 | Whilst buying from a no-KYC source will undoubtedly give you far more privacy, going down this route is not without its limitations. Some of the challenges you may face include... 85 | 86 | * Higher premiums for instant purchases (*this can be mitigated by creating your own buy [offer](https://www.bitcoinqna.com/post/creating-a-buy-offer-on-hodl-hodl) and having patience*) 87 | * You may struggle to buy larger amounts in a single transaction 88 | * If you are limited to one payment method, liquidity may be limited 89 | * The user experience is not as easy as centralised KYC offerings 90 | 91 | *** 92 | 93 | Now you know how to obtain bitcoin privately, lets [secure it](https://bitcoinprivacy.guide/secure.html). 94 | 95 | 96 | 97 | -------------------------------------------------------------------------------- /index.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | [![bitcoinerheader](https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/master/assets/images/BPDG.png)](https://bitcoinprivacy.guide) 6 | 7 | ## Intro 8 | 9 | We won't beat around the bush. Bitcoin privacy is not easy, especially for newcomers. There are many pitfalls in which you can trip yourself up. This site is designed to walk you through the basic steps to gain a good level of privacy when interacting with the Bitcoin network. These steps are written in a deliberate order to ensure that those starting from absolute zero give themselves the greatest privacy opportunity from day 1. If you are already a bitcoiner, but after reading this feel that you have missed or done something wrong, fear not, the best time to start taking steps to improve your privacy is now. 10 | 11 | Bitcoin privacy is a spectrum that is constantly shifting with different protocol changes, wallet or node features, and regulatory frameworks. However, there are some core principles that are likely to remain unchanged for the foreseeable future and we aim to walk you through those here. Please do not feel the need to implement all of these from day 1. Think of this site as your Bitcoin privacy toolbox, work on adding to it slowly over time as you gain understanding. 12 | 13 | Let's get started! 14 | 15 | ## Table of Contents 16 | 17 | 1. [Sourcing your Bitcoin](get.md) 18 | 2. [Securing your Bitcoin](secure.md) 19 | 3. [Segregating your Bitcoin](segregate.md) 20 | 4. [Scrutinising your Bitcoin transactions](scrutinise.md) 21 | 5. [Separating your Bitcoin from its past](separate.md) 22 | 6. [Safeguarding your Bitcoin](safeguard.md) 23 | 7. [Spending your Bitcoin](spend.md) 24 | 8. [Supplementary tools](supplementary.md) 25 | 26 |
27 | 28 | [Pull requests](https://github.com/BitcoinQnA/BitcoinPrivacyGuide) and suggestions are welcomed 29 | 30 | 31 | *** 32 | 33 |

34 | By Bitcoin Q+A | 35 | Support | 36 | More resources 37 |

38 |

39 | -------------------------------------------------------------------------------- /jekyll-theme-midnight.gemspec: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | Gem::Specification.new do |s| 4 | s.name = 'jekyll-theme-midnight' 5 | s.version = '0.1.1' 6 | s.license = 'CC0-1.0' 7 | s.authors = ['Matt Graham', 'GitHub, Inc.'] 8 | s.email = ['opensource+jekyll-theme-midnight@github.com'] 9 | s.homepage = 'https://github.com/pages-themes/midnight' 10 | s.summary = 'Midnight is a Jekyll theme for GitHub Pages' 11 | 12 | s.files = `git ls-files -z`.split("\x0").select do |f| 13 | f.match(%r{^((_includes|_layouts|_sass|assets)/|(LICENSE|README)((\.(txt|md|markdown)|$)))}i) 14 | end 15 | 16 | s.platform = Gem::Platform::RUBY 17 | s.add_runtime_dependency 'jekyll', '> 3.5', '< 5.0' 18 | s.add_runtime_dependency 'jekyll-seo-tag', '~> 2.0' 19 | s.add_development_dependency 'html-proofer', '~> 3.0' 20 | s.add_development_dependency 'rubocop', '~> 0.50' 21 | s.add_development_dependency 'w3c_validators', '~> 1.3' 22 | end 23 | -------------------------------------------------------------------------------- /safeguard.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | [![bitcoinerheader](https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/master/assets/images/BPDG.png)](https://bitcoinprivacy.guide) 6 | 7 |
8 | 9 | ## Safeguarding your Bitcoin 10 | 11 | ### Table of Contents 12 | 13 | 1. [What is cold storage?](#why-safeguard) 14 | 2. [Desktop node](#desktop-node-version) 15 | 3. [Plug + Play node](#plug-play-node-version) 16 | 3. [DIY node](#diy-node-version) 17 | 4. [Other options](#other-options) 18 | 5. [Trade-offs](#trade-offs) 19 | 20 | 21 | ### Why safeguard? 22 | 23 | So far all we have discussed are mobile wallets that favour convenience because they are internet connected devices that allow you quick and easy access to your bitcoin. The drawback with convenience is that internet connected devices bring their own exposure which may not be desireable if you are storing larger amounts of bitcoin. So how can we safeguard that bitcoin in a more secure way? 24 | 25 | Cold storage refers to a method of bitcoin storage that has never touched the internet. For most users this takes the form of a hardware wallet which is a dedicated device designed with one aim, to generate and secure your private keys. When looking for a cold storage method, look for 'air gapped' devices like the [Coldcard](https://coldcardwallet.com/) or [Cobo Vault](https://cobo.com/hardware-wallet/cobo-vault). These devices never need to be plugged into your *potentially* malware infected computer to sign transactions and allow you to spend your bitcoin, adding a huge layer of protection from attack. 26 | 27 | ### Desktop Node Version 28 | 29 | **Bitcoin Core + Specter Desktop + Coldcard** 30 | 31 | 1. Set up your [Coldcard](https://coldcardwallet.com/docs/quick) 32 | 2. Download [Bitcoin Core](https://bitcoin.org/en/download) 33 | 2. Open Core, go to 'options' and edit the config file to add the line `server=1` 34 | 3. Restart Core, initital block download (IBD) will now recommence. 35 | 4. Download [Specter Desktop](https://github.com/cryptoadvance/specter-desktop/releases) 36 | 5. Select 'run local Specter server' 37 | 6. Bitcoin Core will be automatically detected 38 | 7. In Specter press 'add new device' then give it a name and select the device type 39 | 8. On your ColdCard export 'Electrum Wallet' to your Coldcard SD card and insert into your computer 40 | 9. In Specter 'choose files' and select the **.JSON** file you just exported 41 | 10. Press continue and the device will be added 42 | 11. Press 'add new wallet', then 'single key' 43 | 12. Name the wallet, choose Segwit and select your Coldcard 44 | 13. Press continue then 'create wallet' 45 | 14. Wait for IBD to complete in core 46 | 15. Select your newly created wallet in Specter and press receive to see your first address 47 | 48 | [Here](https://www.youtube.com/watch?v=4koKF2MDXtk) is a fantastic video version of the above steps. 49 | 50 | ### Plug + Play Node Version 51 | 52 | **myNode One + Specter + ColdCard** 53 | 54 | 1. Setup your [Coldcard](https://coldcardwallet.com/docs/quick) 55 | 2. Setup your [myNode One](http://mynodebtc.com/guide/getting_started) 56 | 3. Wait for initital block download (IBD) to complete 57 | 4. Enable and open Specter from your myNode dashboard 58 | 5. In Specter press 'add new device' then give it a name and select the device type 59 | 6. On your ColdCard export 'Electrum Wallet' to your Coldcard SD card and insert into your computer 60 | 7. In Specter 'choose files' and select the **.JSON** file you just exported 61 | 8. Press continue and the device will be added 62 | 9. Press 'add new wallet' then 'single key' 63 | 10. Name the wallet, choose Segwit and select your Coldcard 64 | 11. Press continue then 'create wallet' 65 | 12. Wait for IBD to complete in Core 66 | 13. Select your newly created wallet in Specter and press receive to see your first address 67 | 68 | ### DIY Node Version 69 | 70 | **RoninDojo + Electrum Desktop + Coldcard** 71 | 72 | 1. Set up your [Coldcard](https://coldcardwallet.com/docs/quick) 73 | 2. Assemble your RoninDojo node [hardware](https://wiki.ronindojo.io/en/hardware) 74 | 3. Flash SD card then insert into device 75 | 4. Complete Manjaro setup 76 | 5. SSH into the device and install RoninDojo, ensuring you say 'yes' to installing Electrum Rust Server (electrs) 77 | 6. Wait for IBD and Electrs compaction to complete 78 | 7. Download [Electrum](https://electrum.org/#download) desktop wallet 79 | 8. [Connect](https://wiki.ronindojo.io/en/gui-setup/step5) Electrum wallet to your Electrum Rust Server 80 | 9. On your ColdCard export 'Electrum Wallet' to your Coldcard SD card and insert into your computer 81 | 10. In Electrum wallet press 'choose' then select the **.JSON** file that you just exported to the SD card and press next 82 | 11. Wallet will load and you should see a warning asking you to connect your Coldcard, ignore this message and press no 83 | 12. Press receive to see your first address 84 | 85 | 86 | ### Other options 87 | 88 | There are plenty of other hardware wallet and node combinations, most will require some form of Electrum Server to act as a bridge between the underlying bitcoin software on your node and desktop wallet which the most commonly used hardware wallet interface. 89 | 90 | 91 | ### Trade-offs 92 | 93 | * As touched on in the [secure](https://bitcoinprivacy.guide/secure.html) page, your backup **is** your bitcoin. This is no different for mobile or hardware wallets. Guard it with your life. 94 | 95 | * If you have just coinjoined some of your bitcoin and are keen to get it sent off to cold storage, be mindful of how you construct your transaction. Merging UTXO's shows common ownership to anyone watching on chain. 96 | 97 | * When getting any form of bitcoin related hardware delivered you are susceptible to supply chain attack. This means that an attacker could intercept the package and swap it out with a malicious device designed to steal your bitcoin. Whilst this is unlikely, it is something worth taking into account when setting up your devices. Ensure you follow the check procedures outlined by the product manufacturer when you receive. 98 | 99 | * Another thing worth considering is your payment method and delivery address. You can buy no-KYC bitcoin in cash from a meetup for maximum privacy, but if you buy a Coldcard from Coinkite (a public bitcoin company) using your credit card and have it delivered to your home address you're certainly giving away some clues! 100 | 101 | 102 | *** 103 | 104 | Now you have obtained, secured, segregated, labelled and coinjoined your bitcoin into both mobile and hardware wallets that are backed by your own node, let's look at how to [spend](https://bitcoinprivacy.guide/spend.html) your bitcoin in a private way. 105 | -------------------------------------------------------------------------------- /script/bootstrap: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | gem install bundler 6 | bundle install 7 | -------------------------------------------------------------------------------- /script/cibuild: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | bundle exec jekyll build 6 | bundle exec htmlproofer ./_site --check-html --check-sri 7 | bundle exec rubocop -D 8 | bundle exec script/validate-html 9 | gem build jekyll-theme-midnight.gemspec 10 | -------------------------------------------------------------------------------- /script/release: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Tag and push a release. 3 | 4 | set -e 5 | 6 | # Make sure we're in the project root. 7 | 8 | cd $(dirname "$0")/.. 9 | 10 | # Make sure the darn thing works 11 | 12 | bundle update 13 | 14 | # Build a new gem archive. 15 | 16 | rm -rf jekyll-theme-midnight-*.gem 17 | gem build -q jekyll-theme-midnight.gemspec 18 | 19 | # Make sure we're on the master branch. 20 | 21 | (git branch | grep -q 'master') || { 22 | echo "Only release from the master branch." 23 | exit 1 24 | } 25 | 26 | # Figure out what version we're releasing. 27 | 28 | tag=v`ls jekyll-theme-midnight-*.gem | sed 's/^jekyll-theme-midnight-\(.*\)\.gem$/\1/'` 29 | 30 | # Make sure we haven't released this version before. 31 | 32 | git fetch -t origin 33 | 34 | (git tag -l | grep -q "$tag") && { 35 | echo "Whoops, there's already a '${tag}' tag." 36 | exit 1 37 | } 38 | 39 | # Tag it and bag it. 40 | 41 | gem push jekyll-theme-midnight-*.gem && git tag "$tag" && 42 | git push origin master && git push origin "$tag" 43 | -------------------------------------------------------------------------------- /script/validate-html: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | # frozen_string_literal: true 3 | 4 | require 'w3c_validators' 5 | 6 | def validator(file) 7 | extension = File.extname(file) 8 | if extension == '.html' 9 | W3CValidators::NuValidator.new 10 | elsif extension == '.css' 11 | W3CValidators::CSSValidator.new 12 | end 13 | end 14 | 15 | def validate(file) 16 | puts "Checking #{file}..." 17 | 18 | path = File.expand_path "../_site/#{file}", __dir__ 19 | results = validator(file).validate_file(path) 20 | 21 | return puts 'Valid!' if results.errors.empty? 22 | 23 | results.errors.each { |err| puts err.to_s } 24 | exit 1 25 | end 26 | 27 | validate 'index.html' 28 | validate File.join 'assets', 'css', 'style.css' 29 | -------------------------------------------------------------------------------- /scrutinise.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | [![bitcoinerheader](https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/master/assets/images/BPDG.png)](https://bitcoinprivacy.guide) 6 | 7 |
8 | 9 | ## Scrutinise your Bitcoin transactions 10 | 11 | ### Table of Contents 12 | 13 | 1. [What are we scrutinising?](#what-are-we-scrutinising) 14 | 2. [Node considerations](#node-considerations) 15 | 3. [Node options](#node-options) 16 | 4. [Trade-offs](#trade-offs) 17 | 18 | 19 | ### What are we scrutinising? 20 | 21 | As outlined in the [secure](https://bitcoinprivacy.guide/secure.html) page, if you aren't trusting your own node to verify your transactions then you are trusting someone else's. A node is a computer running the 'bitcoin software' that comes with its own copy of the 'bitcoin rules.' Each time a node sees a transaction it will scrutinise the details against its own ruleset to ensure everything is present and correct and that the creator of the transaction isn't trying to cheat the system. By having your wallet connected to your own node, you can be sure that every transaction you receive is compliant to the rules that you, and everyone else participating in the network agrees upon. 22 | 23 | If you are trusting someone else's node, you are abiding by their rules. Their rules could be allowing false transactions to hit your wallet leading you to believe you are receiving bitcoin when in reality you aren't. Try spending those bitcoin with someone who is abiding by the 'real' or widely adopted rules and you will be rejected. 24 | 25 | From a privacy perspective, trusting someone else's node means that they can see... 26 | 27 | * Every transaction you send 28 | * Every transaction you receive 29 | * All of your balances 30 | * In some cases every address in your wallet (even the currently empty ones) 31 | 32 | In a perfect world everyone would have their own node setup before they even get any bitcoin. That way they never have to leak any transactional privacy by relying on other people's nodes to verify their transactions for them. The problem is, it takes seconds to download a phone wallet and receive bitcoin and it takes 3-5 days to set-up a node and download the blockchain so the natural progression works in the reverse. 33 | 34 | If, like most, you already have a wallet with bitcoin in that is backed by someone else's node, fear not. All you need to do is set up a new wallet (they're free remember) that is backed by your own node and send your funds across. For an extra level of security I would recommend [coinjoining](https://bitcoinprivacy.guide/separate.html) them before sending but this is not absolutely essential. 35 | 36 | [Here](https://www.bit-buy-bit.com/podcast-1/episode/1c6e67f7/ep38-bitcoin-podcast-with-bitcoin-qa-nodes) is a podcast episode where I talk through the basics of nodes. 37 | 38 | ### Node considerations 39 | 40 | The main things to consider when choosing a node to run... 41 | 42 | * Your technical ability 43 | * Your budget 44 | * What [features](https://www.bitcoinqna.com/nodecompare) you require 45 | * Running costs 46 | * Bandwidth 47 | * The level of support/community available 48 | * Wallet compatability 49 | 50 | 51 | ### Node options 52 | 53 | | Difficulty | Description | Setup Guide | Works with Samourai or Fully Noded? | 54 | |---------------|------------------------------------|--------------------------------------------------------------------------|-------------------------------| 55 | | Super Easy | Bitcoin Core on a computer | [Bitcoin Core](https://bitcoin.org/en/full-node#windows-instructions) | No - Built in wallet or works with Specter desktop | 56 | | Plug + Play | myNode One | [myNode](http://mynodebtc.com/guide/getting_started) | Both | 57 | | Plug + Play | Nodl One or Nodl Dojo | [Nodl](https://docs.lightning-solutions.eu/nodl-box/quick-start/getting-started) | Both | 58 | | Self build | RoninDojo | [RoninDojo](https://wiki.ronindojo.io) | Both, but more Samourai focused | 59 | 60 | 61 | ### Trade-offs 62 | 63 | Depending on the setup you go for, every node comes with it's own tradeoffs. If you want a plug and play option with sturdy hardware that requires little maintenance, it's going to cost you much more than a DIY option built to a budget spec. Another example would be that Bitcoin Core offers the easiest setup but lacks the ability to allow mobile wallets to connect to it. Not good if you want to spend bitcoin when away from your laptop! 64 | 65 | Consider carefully what is important to you before making your decision and don't be afraid to reach out for support. All of the projects mentioned above have very supportive community chat groups that can offer you advice. 66 | 67 | Running a node is a big step for many but is an absolute must for the ultimate transaction level privacy. 68 | 69 | *** 70 | 71 | Now you have obtained, secured, segregated and labelled your bitcoin in a wallet backed by your own node, lets [separate it](https://bitcoinprivacy.guide/separate.html) from its past. 72 | -------------------------------------------------------------------------------- /secure.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | [![bitcoinerheader](https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/master/assets/images/BPDG.png)](https://bitcoinprivacy.guide) 6 | 7 |
8 | 9 | # Securing your Bitcoin 10 | 11 | ### Table of Contents 12 | 13 | 1. [Why secure your own bitcoin?](#why-secure-your-own-bitcoin) 14 | 2. [Android](#android) 15 | 3. [iOS](#ios) 16 | 4. [Other options](#other-options) 17 | 4. [Backup](#backup) 18 | 5. [Trade-offs](#trade-offs) 19 | 20 | 21 | ### Why secure your own bitcoin? 22 | 23 | There goes a saying in Bitcoin, "not your keys, not your coins." What this essentially means is that, if you are not in control of your private keys (your recovery/seed words) then you are not in control of your bitcoin. Fortunately, if you are buying from a no-KYC source then you will almost certainly require your own wallet to conduct trades. From a privacy perspective if you do not control your own keys, for example if you have your bitcoin held with a custodian, then you essentially have zero privacy. Whoever controls those keys has the ability to not only see all of your funds, but spend them as they see fit. 24 | 25 | [Here](https://www.bit-buy-bit.com/podcast-1/episode/26df4d37/ep35-bitcoin-podcast-with-itcoin-qa) is a podcast episode where I walk through in details the basics of bitcoin wallets. 26 | 27 | ### Android 28 | 29 | 1. Download [Samourai Wallet](https://samouraiwallet.com/download) 30 | 2. Select mainnet and enable tor 31 | 3. Start new wallet 32 | 4. Create a passphrase (*it is crucial that you secure this. Without this and your recovery words you cannot access your bitcoin*) 33 | 5. Set a pin code 34 | 6. Write down your recovery words (*it is crucial that you secure this backup. Without this and your passphrase you cannot access your bitcoin*) 35 | 7. Tap the blue + and then press receive 36 | 8. You will now see your first bitcoin address that you can receive to 37 | 38 | 39 | ### iOS 40 | 41 | *Fully Noded requires your own node but is currently the only well tested iOS wallet that offers coin control.* 42 | 43 | 1. Download [Fully Noded](https://apps.apple.com/gb/app/fully-noded/id1436425586) 44 | 2. Scan the connection QR provided by your node 45 | 3. Press the Bitcoin logo followed by the + in the top corner 46 | 4. Select single sig 47 | 5. Write down your recovery words (*it is crucial that you secure this. Without it you cannot access your bitcoin*) 48 | 7. Press invoice 49 | 8. You will now see your first bitcoin address to which you can receive funds 50 | 51 | 52 | ### Other options 53 | 54 | - **Desktop Wallets** 55 | - [Bitcoin Core](https://bitcoincore.org/en/download/) (*has a built in node*) 56 | - [Specter Desktop](https://github.com/cryptoadvance/specter-desktop) (*requires your own node*) 57 | 58 | 59 | ### Backup 60 | 61 | Your bitcoin backup is your bitcoin. Anyone with access to it has access to your bitcoin. 62 | 63 | * Samourai Wallet creates an encrypted backup of your wallet automatically on your phone 64 | 65 | For extra redundancy most people keep their seed words on some form of [metal](https://jlopp.github.io/metal-bitcoin-storage-reviews/) storage. 66 | 67 | You should ensure that your chosen method of backup is resistant to... 68 | 69 | * Theft/Loss 70 | * Fire/Water/Elements damage 71 | * Degradation 72 | 73 | ### Trade-offs 74 | 75 | Unless your chosen wallet is backed by your own node, you are trusting someone elses. This means that your transactional data and wallet balances are being served by someone else and they can theoretically eavesdrop on your on-chain activity. However, most users aren't likely to run a node **before** they even hold their own keys, the natural learning progression doesn't work that way. If you feel confident in setting up your own node first then skip ahead to the [scrutinise](https://bitcoinprivacy.guide/scrutinise.html) section and then come back here to continue with the guide. 76 | 77 | But if that sounds a bit too much for you right now don't panic, we will fix that later in the guide. 78 | 79 | Holding your own keys is a big responsibility, there are no refunds in Bitcoin. 80 | 81 | *** 82 | 83 | Now you know how to obtain secure privately, let's [segregate it](https://bitcoinprivacy.guide/segregate.html). 84 | -------------------------------------------------------------------------------- /segregate.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | [![bitcoinerheader](https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/master/assets/images/BPDG.png)](https://bitcoinprivacy.guide) 6 | 7 |
8 | 9 | # Segregating your Bitcoin 10 | 11 | ### Table of Contents 12 | 13 | 1. [What is segregation?](#what-is-segregation) 14 | 2. [Address re-use](#address-re-use) 15 | 3. [Android](#android) 16 | 4. [iOS](#ios) 17 | 5. [Trade-offs](#trade-offs) 18 | 19 | 20 | ### What is segregation? 21 | 22 | Segregation simply means having the ability to keep your different 'chunks' of bitcoin separate from one another. These chunks of bitcoin are known as unspent transaction outputs (UTXOs). Why would we want to keep them separate? Let's imagine that your wallet holds 1 BTC split between 2 UTXOs that are 0.5 BTC each and you want to send me 0.6 BTC. This transaction would result in your wallet combining those two UTXO's together to create an output that pays me 0.6 BTC and you would have a change output of around 0.4 BTC less any fees. 23 | 24 | So what? Well now let's imagine that one of your 0.5 BTC was a change output from a 'frowned upon' service or source and the person you're paying is a regulated entity that is actively performing chain analysis. They could refuse access to their service, block your account, or even report you to the authorities. This is just one example designed to demonstrate that one transaction could leak a lot of information about you and your transactional history - not good for your privacy! 25 | 26 | So how do we mitigate against such a privacy leak? By using a [wallet](https://bitcoinprivacy.guide/secure.html) that offers coin control and labelling. Coin cointrol is a simply the ability to select which UTXOs are used to construct any given transaction. Ensuring that your UTXO's are effectively labelled will enable you to decide which UTXOs you want to include in future transactions. You can label any way you'd like but it is generally good practice to include the source of the funds in a format that suits you. 27 | 28 | Samourai Wallet and Fully Noded are two of very few mobile wallets that enable this all important feature. Desktop wallets like [Specter](https://github.com/cryptoadvance/specter-desktop) or [Bitcoin Core](https://bitcoin.org/en/download) generally offer more in this regard but are obviously not a portable solution. 29 | 30 | ### Address re-use 31 | 32 | 99% of bitcoin wallets that exist today will automatically serve you a new receive address every time the previous one receives any funds. All you need to be aware of is not sharing the same one twice with different entities as you can leak some privacy for the same reason as outlined in the example above. Remember, addresses are free and infinite. 33 | 34 | ### Android 35 | 36 | #### Samourai - Coin Control 37 | 38 | 1. Press the 3 dots in the top right corner 39 | 2. Show unspent outputs 40 | 3. Long press on the UTXO(s) you want to use to create the transaction 41 | 4. Press the send arrow in the top right 42 | 5. Enter the recipient address and amount 43 | 6. Send 44 | 45 | #### Samourai - Labelling 46 | 47 | 1. Press the 3 dots in the top right corner 48 | 2. Show unspent outputs 49 | 3. Double tap the UTXO(s) you want to label 50 | 4. Press add note 51 | 52 | Your labels in Samourai Wallet are saved automatically in the encrypted backup file that is stored on your phone. If you need to restore your wallet ensure you used this method rather than using your seed words to retain your labels. 53 | 54 | ### iOS 55 | 56 | #### Fully Noded - Coin Control 57 | 58 | 1. Tap the active wallet tab 59 | 2. Tap the "utxo's" button 60 | 3. Tap a utxo(s) to select it for a spend 61 | 4. Tap the 🔗 button to create the transaction 62 | 5. Enter the amount 63 | 6. FN will check if you have an address copied to clipboard, if not you can scan a QR to select the recipient address 64 | 7. Send 65 | 66 | #### Fully Noded - Labelling 67 | 68 | *FN does labelling via addresses and not UTXOs so you should avoid address manual address reuse* 69 | 70 | 1. Tap the active wallet tab 71 | 2. Press advanced 72 | 3. Hit import address 73 | 4. You can now add or overwrite and address label 74 | 75 | The labels you create in Fully Noded are stored on your node. Create a secure copy of your `wallet.dat` file to back these up. 76 | 77 | ### Trade-offs 78 | 79 | The only real tradeoff with labelling your UTXO's and practicing coin control is the minimal extra steps required to do each one. Just remember, if you do not specify which UTXOs to spend in a transaction, your wallet will do it for you with no regard for each chunk of bitcoin's previous history. 80 | 81 | 82 | *** 83 | 84 | Now you have obtained, secured, segregated and labelled your bitcoin to maximise your privacy, let's work on [scrutinising](https://bitcoinprivacy.guide/scrutinise.html) your transactions. 85 | -------------------------------------------------------------------------------- /separate.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | [![bitcoinerheader](https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/master/assets/images/BPDG.png)](https://bitcoinprivacy.guide) 6 | 7 |
8 | 9 | ## Separating your Bitcoin from it's past 10 | 11 | ### Table of Contents 12 | 13 | 1. [What are we separating?](#what-are-we-separating) 14 | 2. [Coinjoin considerations](#coinjoin-considerations) 15 | 3. [Android](#android) 16 | 4. [Other options](#other-options) 17 | 5. [Trade-offs](#trade-offs) 18 | 19 | 20 | ### What are we separating? 21 | 22 | The Bitcoin blockchain is completely public, anyone can hop onto a block explorer and look up any transaction from the last hour or the last 10 years. Depending on the tools available and their level of expertise they could analyse and follow any one of these transactions to build up a picture of an entity's spending habits. Chain surveillance firms do exactly this, and using heuristics (*assumptions*) they can cluster transactions together to follow a given entity accross the chain. Aside from this being an invasion of your privacy it also poses the risks we covered in [sourcing](https://bitcoinprivacy.guide/get.html) your bitcoin. 23 | 24 | Coinjoin is a privacy tool that prevents this and there are different types of implementations, each with their own take on the same basic idea. Two or more users pool their UTXOs together into a collaborative transaction that is formed in a unique way. The way the transaction is constructed makes it very difficult for surveillance firms to know exactly which transaction output belongs to which of the input owners. 25 | 26 | This is where the separation part comes in... A proper coinjoin implementation will completely break all deterministic links with the coins 'pre coinjoin' past. At best anyone looking at the transaction can come up with a number of possible scenarios as to who owns which piece of bitcoin but they can never be 100% sure. Now imagine you carry out multiple rounds of coinjoin one after the other, the transaction graph quickly becomes very confusing and impossible to track. 27 | 28 | [Here](https://www.bit-buy-bit.com/podcast-1/episode/2a64f9e1/ep43-bitcoin-podcast-with-bitcoin-qa-coinjoin) is a podcast episode where I talk through the basics of coinjoin. 29 | 30 | ### Coinjoin considerations 31 | 32 | * There are fees involved with coinjoins, ensure you understand them fully before starting out 33 | * Your spending habits after you coinjoin are very important. We will cover those [later](https://bitcoinprivacy.guide/spend.html) 34 | * Avoid centralised 'mixers' as they actually take control of your bitcoin for a short period of time 35 | * You should run your own Dojo before using Whirlpool for maximum privacy. *All of the node implementations (apart from core) mentioned on the previous page come packaged with Dojo.* 36 | 37 | 38 | ### Android 39 | 40 | Samourai Wallet offers the easiest and most effective coinjoin implementation, Whirlpool. Below is a simple walkthrough but to read a more in-depth look at it's features see [here](https://www.bitcoinqna.com/post/whirlpool-faq) 41 | 42 | 1. Calculate your Whirlpool [fees](https://www.whirlpoolfees.com/) based on your chosen amounts and pool sizes 43 | 1. Send some bitcoin into your wallet as outlined [earlier](https://bitcoinprivacy.guide/secure.html#android) 44 | 2. Click the blue + and press Whirlpool 45 | 3. Once Whirlpool loads, press the icon in the bottom right corner 46 | 4. Press mix UTXOs 47 | 5. Select which UTXOs you want to mix 48 | 6. Pick how quickly you would like the mix to be initiated 49 | 7. Review the transaction details 50 | 8. Begin cycle 51 | 9. Press yes to the box asking if you want to mark your change as 'Do not Spend' 52 | 10. Your mix is now underway and you will see your mixed sats in the postmix section of your wallet after a short wait 53 | 11. If you leave your funds in postmix you will be eligible for free and unlimited remixes (*chosen at random*) 54 | 55 | **Bonus** 56 | 57 | * For easier mix management and 24/7 remixing you can pair your Samourai Wallet with Whirlpool GUI (a desktop app) and Whirlpool CLI that come packaged with myNode, Nodl and RoninDojo. The graphic below is an example of how it all fits together. 58 | 59 |

60 | 61 |

62 | 63 | 64 | ### Other options 65 | 66 | #### iOS 67 | 68 | There is currently no coinjoin option for iOS. Recommended course of action... 69 | 70 | * Buy a cheap android phone 71 | * Install Samourai Wallet 72 | * Follow steps above 73 | 74 | #### Joinmarket 75 | 76 | [Joinmarket](https://github.com/openoms/bitcoin-tutorials/blob/master/joinmarket/README.md) is by no means a beginner option, something worth exploring as you become more experienced. 77 | 78 | ### Trade-offs 79 | 80 | Coinjoin is a complex topic to wrap your head around and fraught with pitfalls in which you can leak your privacy. Fortunately, tools like Whirlpool are making things almost foolproof. Coinjoin does not erase the past, it simply affords you forward looking privacy. Remember that you can easily undo much of the privacy gained by practicing poor postmix spending habits e.g. merging multiple UTXOs. 81 | 82 | 83 | *** 84 | 85 | Now you have obtained, secured, segregated, labelled and coinjoined your bitcoin in a wallet backed by your own node let's look at how to [safeguard](https://bitcoinprivacy.guide/safeguard.html) it for any long term savings. 86 | -------------------------------------------------------------------------------- /spend.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | [![bitcoinerheader](https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/master/assets/images/BPDG.png)](https://bitcoinprivacy.guide) 6 | 7 |
8 | 9 | ## Spending your Bitcoin 10 | 11 | ### Table of Contents 12 | 13 | 1. [Spending considerations](#spending-considerations) 14 | 2. [Android](#android) 15 | 3. [iOS](#ios) 16 | 17 | ### Spending considerations 18 | 19 | Spending your bitcoin can be a tricky task to get right from a privacy perspective. Fortunately if you have followed the previous steps you are in a perfect position to nail it. We have already covered off many of the pitfalls such as merging UTXOs, particularly those from 'conflicting' sources such as KYC and no-KYC but here is a brief rundown of things to consider when spending bitcoin (even to yourself). 20 | 21 | * Check your labels before spending 22 | * Avoid merging UTXOs where possible 23 | * Label your change outputs 24 | * Make every spend a coinjoin (*see below*) 25 | 26 | 27 | ### Android 28 | 29 | **Samourai Wallet Postmix Tools** 30 | 31 | * Stonewall 32 | 33 | Stonewall builds your transaction in a unique way to increase the deniability of links between the sender and recipient. Once the spending conditions are met the wallet will create this type of transaction automatically and will display the level of entropy the proposed transaction will have. Stonewall is actually a 'fake' mini coin join using only your own UTXOs. STONEWALL can be created from your deposit or postmix accounts, but the algorithm will never mix UTXOs from those accounts together. 34 | 35 | **Useful for** - Any type of spend 36 | 37 | * Stonewall X2 38 | 39 | Stonewall X2 creates a mini coin join with another Samourai user. It mixes some of both Samourai users UTXOs when paying to any third party to create a high entropy transaction. You don't even need to be in the same room as your fellow Samourai user to create a Stonewall X2 as you can simply share QR codes via encrypted chat. 40 | 41 | **Useful for** - Any type of spend 42 | 43 | * Stowaway 44 | 45 | Stowaway is Samourai's implementation of Payjoin. When paying another trusted Samourai user it creates a transaction that looks just like any other Bitcoin transaction on chain but it's actually a form of mini coin join. The most powerful thing about Stowaway is that the amount being sent will never actually be visible to anyone looking at the blockchain. Stowaway also uses sender AND recipient UTXOs on the input side of the transaction which completely destroys the common-input ownership heuristic for chain analysis firms. Just like Stonewall X2, Stowaway can be constructed in person or remotely. 46 | 47 | **Useful for** - Spending to another Samourai user 48 | 49 | 50 | * Ricochet 51 | 52 | Ricochet creates additional 'hops' or 'distance' between your Samourai wallet activity and the recipient address. This can be beneficial if you are sending to a service such as an exchange who may want to pry into the history of your UTXO’s. 53 | 54 | **Useful for** - Spending to centralised entities that may be using chain analysis 55 | 56 | 57 | ### iOS 58 | 59 | There are currently no iOS wallets that have privacy preserving spend tools. This section will be updated if that changes. 60 | 61 | Recommended course of action is to follow the basic steps outlined [here](#spending-considerations). 62 | 63 | Or... 64 | 65 | * Buy a cheap android phone 66 | * Install Samourai Wallet 67 | * Follow steps above 68 | 69 | *** 70 | 71 | Now you have obtained, secured, segregated, labelled and coinjoined your bitcoin into both mobile and hardware wallets that are backed by your own node and learned how to spend in a privacy focused way. Let's look at some of the [supplementary](https://bitcoinprivacy.guide/supplementary.html) tools available to further lock down your Bitcoin related privacy. 72 | -------------------------------------------------------------------------------- /supplementary.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | [![bitcoinerheader](https://raw.githubusercontent.com/BitcoinQnA/BitcoinPrivacyGuide/master/assets/images/BPDG.png)](https://bitcoinprivacy.guide) 6 | 7 |
8 | 9 | ## Supplementary Tools 10 | 11 | ### Table of Contents 12 | 13 | 1. [Tor](#tor-browser) 14 | 2. [VPN](vpn-services) 15 | 2. [Messaging](#messaging) 16 | 3. [E-mail](#email) 17 | 3. [Phones](#phones) 18 | 4. [Password managers](#password-managers) 19 | 3. [Other](#other) 20 | 21 |
22 | 23 | ### Tor browser 24 | 25 | [Tor](https://www.torproject.org/download/) is a web broswer that runs on the Tor network. It masks your IP address and gives you much greater online privacy. All of the tools mentioned in this guide also run natively over Tor. 26 | 27 | ### VPN services 28 | 29 | A VPN provides privacy by 'tunneling' your web traffic to a different server which is generally located somewhere in a different country. Whilst this does prevent your ISP from spying on your online activity, you do place some trust in the VPN server you are connecting to. 30 | 31 | * [Mullvad](https://mullvad.net/en/) 32 | * [ProtonVPN](https://protonvpn.com/) 33 | 34 | ### Messaging 35 | 36 | Communication services that use encryption to avoid spying. 37 | 38 | * [Signal](https://signal.org/en/) 39 | * [Keybase](https://keybase.io/) 40 | * [Session](https://getsession.org/) 41 | * [Telegram](https://telegram.org/) (*Use secret chats*) 42 | * [Matrix](https://matrix.org/) 43 | * [Threema](https://threema.ch/en) 44 | * [Wire](https://wire.com/en/) 45 | 46 | 47 | ### E-mail 48 | 49 | E-mail services that use encryption to avoid spying. 50 | 51 | * [Proton Mail](https://protonmail.com/) 52 | * [Tutanota](https://tutanota.com/) 53 | * [Ctemplar](https://ctemplar.com) 54 | 55 | E-mail forwarding/alias services to avoid sharing your real email: 56 | 57 | * [Simple Login](https://simplelogin.io) 58 | * [Nullbox](https://nullbox.co) 59 | 60 | 61 | ### Phones 62 | 63 | Privacy focused forks of Android with google services removed. 64 | 65 | * [Graphene OS](https://grapheneos.org/) 66 | * [Guide](https://www.youtube.com/watch?v=oO0UFZjuotg) 67 | 68 | * [Copperhead OS](https://copperhead.co/android/) 69 | * [Purchase](https://mamushi.io/) 70 | 71 | * [Calyx OS](https://calyxos.org/) 72 | * [Explainer](https://www.youtube.com/watch?v=heVNcdq2MKA) 73 | 74 | ### Password managers 75 | 76 | * [Bitwarden](https://bitwarden.com/) 77 | * [KeePass](https://keepass.info/) 78 | 79 | ### Other 80 | 81 | * [Standard Notes](https://standardnotes.org/) - Cross platform notes app that uses encryption 82 | * [Tails OS](https://tails.boum.org/) - Portable OS that boots from a USB stick 83 | * [Open Keychain](https://www.openkeychain.org/) - PGP key manager and encryption tool 84 | 85 | *** 86 | 87 |

88 | Guide by Bitcoin Q+A | 89 | Support 90 |

91 |

92 | --------------------------------------------------------------------------------