Commit 9679e244 authored by Infernoman's avatar Infernoman Committed by GitHub
Browse files

Merge pull request #19 from Infernoman/doc-cleanup

Docs Cleanup. Fixes Issue #17
parents 5260463b cf17e827
Showing with 10 additions and 228 deletions
+10 -228
......@@ -3,7 +3,7 @@ Crown Core 0.12.0
Setup
---------------------
[Bitcoin Core](http://bitcoin.org/en/download) is the original Bitcoin client and it builds the backbone of the network. However, it downloads and stores the entire history of Bitcoin transactions (which is currently several GBs); depending on the speed of your computer and network connection, the synchronization process can take anywhere from a few hours to a day or more. Thankfully you only have to do this once. If you would like the process to go faster you can [download the blockchain directly](bootstrap.md).
[Crowncoin Core](http://crowncoin.org/en/download) is the original Crowncoin client and it builds the backbone of the network. However, it downloads and stores the entire history of Crowncoin transactions (which is currently several GBs); depending on the speed of your computer and network connection, the synchronization process can take anywhere from a few hours to a day or more. Thankfully you only have to do this once. If you would like the process to go faster you can [download the blockchain directly](bootstrap.md).
Running
---------------------
......@@ -32,10 +32,7 @@ Drag Crown-Qt to your applications folder, and then run Crown-Qt.
### Need Help?
* See the documentation at the [Crown Wiki](https://en.bitcoin.it/wiki/Main_Page) ***TODO***
for help and more information.
* Ask for help on [#crownpay](http://webchat.freenode.net?channels=crownpay) on Freenode. If you don't have an IRC client use [webchat here](http://webchat.freenode.net?channels=crownpay).
* Ask for help on the [CrownTalk](https://crowntalk.org/) forums.
* Ask for help on [#crowncoin](http://webchat.freenode.net?channels=crowncoin) on Freenode. If you don't have an IRC client use [webchat here](http://webchat.freenode.net?channels=crowncoin).
Building
---------------------
......@@ -46,19 +43,16 @@ The following are developer notes on how to build Crown on your native platform.
Development
---------------------
The Crown repo's [root README](https://github.com/crownpay/crown/blob/master/README.md) contains relevant information on the development process and automated testing.
The Crowncoin repo's [root README](https://github.com/infernoman/crowncoin/blob/master/README.md) contains relevant information on the development process and automated testing.
- [Coding Guidelines](coding.md)
- [Multiwallet Qt Development](multiwallet-qt.md)
- [Release Notes](release-notes.md)
- [Release Process](release-process.md)
- [Source Code Documentation (External Link)](https://dev.visucore.com/bitcoin/doxygen/) ***TODO***
- [Translation Process](translation_process.md)
- [Unit Tests](unit-tests.md)
### Resources
* Discuss on the [CrownTalk](https://crowntalk.org/) forums, in the Development & Technical Discussion board.
* Discuss on [#crownpay](http://webchat.freenode.net/?channels=crownpay) on Freenode. If you don't have an IRC client use [webchat here](http://webchat.freenode.net/?channels=crownpay).
* Discuss on [#crowncoin](http://webchat.freenode.net/?channels=crowncoin) on Freenode. If you don't have an IRC client use [webchat here](http://webchat.freenode.net/?channels=crowncoin).
### Miscellaneous
- [Assets Attribution](assets-attribution.md)
......
......@@ -17,7 +17,3 @@ Crown Core is the original Crown client and it builds the backbone of the networ
However, it downloads and stores the entire history of Crown transactions;
depending on the speed of your computer and network connection, the synchronization
process can take anywhere from a few hours to a day or more.
See the crown wiki at:
https://en.bitcoin.it/wiki/Main_Page ***TODO***
for more help and information.
### Bootstrap the Blockchain Synchronization
Normally the Bitcoin client will download the transaction and network information, called the blockchain, from the network by syncing with the other clients. This process can take quite some time as the [Bitcoin blockchain](https://blockchain.info/charts/blocks-size) is growing bigger and bigger for each day. Luckily there is a safe and fast way to speed up this process. We'll show you how to bootstrap your blockchain to bring your client up to speed in just a few simple steps.
### Requirements
- A fresh install of the Bitcoin client software.
### Download the blockchain via BitTorrent
Jeff Garzik, Bitcoin Core developer, offers an [torrent file](https://bitcointalk.org/index.php?topic=145386.0) for bootstrapping purposes that is updated often. BitTorrent is a protocol that speeds up the downloading of large files by using the other clients in the network. Examples of free and safe open source clients are [Deluge](http://deluge-torrent.org/) or [qBittorrent](http://www.qbittorrent.org/). A guide to installing and configuring the torrent clients can be found [here](http://dev.deluge-torrent.org/wiki/UserGuide) for Deluge and [here](http://qbforums.shiki.hu/) for qBittorrent. A further in-depth tutorial on BitTorrent can be found [here](http://www.howtogeek.com/howto/31846/bittorrent-for-beginners-how-get-started-downloading-torrents/).
With the client installed we'll proceed to download the blockchain torrent file. Use the following magnet link:
magnet:?xt=urn:btih:2d4e6c1f96c5d5fb260dff92aea4e600227f1aea&dn=bootstrap.dat&tr=udp://tracker.openbittorrent.com:80&tr=udp://tracker.publicbt.com:80&tr=udp://tracker.ccc.de:80&tr=udp://tracker.istole.it:80
or go to [Jeff Garzik's topic](https://bitcointalk.org/index.php?topic=145386.0) for a signed magnet link. Alternatively you can use the [.torrent file](http://sourceforge.net/projects/bitcoin/files/Bitcoin/blockchain/bootstrap.dat.torrent/download) found on SourceForge.
![Fig1](img/bootstrap1.png)
The download page should look like this, with a countdown to the download. If it does not work click the direct download link.
The torrent client installed will recognize the download of the torrent file. Save the bootstrap.dat file to the folder you use for downloads. The image below shows the torrent download in qBittorrent, with current speed and ETA highlighted.
![Fig2](img/bootstrap2.png)
### Importing the blockchain
Exit the Bitcoin client software if you have it running. Be sure not to have an actively used wallet in use. We are going to copy the download of the blockchain to the Bitcoin client data directory. You should run the client software at least once so it can generate the data directory. Copy the downloaded bootstrap.dat file into the Bitcoin data folder.
**For Windows users:**
Open explorer, and type into the address bar:
%APPDATA%\Bitcoin
This will open up the data folder. It should look like the image below. Copy over the bootstrap.dat from your download folder to this directory.
![Fig4](img/bootstrap4.png)
**For OSX users:**
Open Finder by pressing Press [shift] + [cmd] + [g] and enter:
~/Library/Application Support/Bitcoin/
**For Linux users:**
The directory is hidden in your User folder. Go to:
~/.bitcoin/
### Importing the blockchain
Now start the Bitcoin client software. It should show "Importing blocks from disk" like the image below.
![Fig5](img/bootstrap5.png)
Wait until the import finishes. The client will download the last days not covered by the import. Congratulations you have successfully imported the blockchain!
### Is this safe?
Yes, the above method is safe. The download contains only raw blockchain data and the client verifies this on import. Do not download the blockchain from unofficial sources, especially if they provide `*.rev` and `*.sst` files. These files are not verified and can contain malicious edits.
......@@ -133,6 +133,6 @@ Threads
- ThreadRPCServer : Remote procedure call handler, listens on port 9998 for connections and services them.
- BitcoinMiner : Generates bitcoins (if wallet is enabled).
- CrowncoinMiner : Generates bitcoins (if wallet is enabled).
- Shutdown : Does an orderly shutdown of everything.
Expectations for DNS Seed operators
====================================
Bitcoin Core attempts to minimize the level of trust in DNS seeds,
but DNS seeds still pose a small amount of risk for the network.
As such, DNS seeds must be run by entities which have some minimum
level of trust within the Bitcoin community.
Other implementations of Bitcoin software may also use the same
seeds and may be more exposed. In light of this exposure this
document establishes some basic expectations for the expectations
for the operation of dnsseeds.
0. A DNS seed operating organization or person is expected
to follow good host security practices and maintain control of
their serving infrastructure and not sell or transfer control of their
DNS seed. Any hosting services contracted by the operator are
equally expected to uphold these expectations.
1. The DNS seed results must consist exclusively of fairly selected and
functioning Bitcoin nodes from the public network to the best of the
operators understanding and capability.
2. For the avoidance of doubt, the results may be randomized but must not
single-out any group of hosts to receive different results unless due to an
urgent technical necessity and disclosed.
3. The results may not be served with a DNS TTL of less than one minute.
4. Any logging of DNS queries should be only that which is necessary
for the operation of the service or urgent health of the Bitcoin
network and must not be retained longer than necessary or disclosed
to any third party.
5. Information gathered as a result of the operators node-spidering
(not from DNS queries) may be freely published or retained, but only
if this data was not made more complete by biasing node connectivity
(a violation of expectation (1)).
6. Operators are encouraged, but not required, to publicly document the
details of their operating practices.
7. A reachable email contact address must be published for inquiries
related to the DNS seed operation.
If these expectations cannot be satisfied the operator should
discontinue providing services and contact the active Bitcoin
Core development team as well as posting on
[bitcoin-dev](https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev).
Behavior outside of these expectations may be reasonable in some
situations but should be discussed in public in advance.
See also
----------
- [bitcoin-seeder](https://github.com/sipa/bitcoin-seeder) is a reference implementation of a DNS seed.
Used in 0.8.0
---------------------
* wallet.dat: personal wallet (BDB) with keys and transactions
* peers.dat: peer IP address database (custom format); since 0.7.0
* blocks/blk000??.dat: block data (custom, 128 MiB per file); since 0.8.0
* blocks/rev000??.dat; block undo data (custom); since 0.8.0 (format changed since pre-0.8)
* blocks/index/*; block index (LevelDB); since 0.8.0
* chainstate/*; block chain state database (LevelDB); since 0.8.0
* database/*: BDB database environment; only used for wallet since 0.8.0
Only used in pre-0.8.0
---------------------
* blktree/*; block chain index (LevelDB); since pre-0.8, replaced by blocks/index/* in 0.8.0
* coins/*; unspent transaction output database (LevelDB); since pre-0.8, replaced by chainstate/* in 0.8.0
Only used before 0.8.0
---------------------
* blkindex.dat: block chain index database (BDB); replaced by {chainstate/*,blocks/index/*,blocks/rev000??.dat} in 0.8.0
* blk000?.dat: block data (custom, 2 GiB per file); replaced by blocks/blk000??.dat in 0.8.0
Only used before 0.7.0
---------------------
* addr.dat: peer IP address database (BDB); replaced by peers.dat in 0.7.0
......@@ -281,7 +281,7 @@ Clone the git repositories for crown and gitian and then checkout the crown vers
```bash
git clone https://github.com/devrandom/gitian-builder.git
git clone https://github.com/crownpay/crown.git
git clone https://github.com/infernoman/bitcoin.git
cd crown
git checkout v${VERSION}
cd ..
......@@ -350,7 +350,7 @@ Output from `gbuild` will look something like
remote: Total 35606 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (35606/35606), 26.52 MiB | 4.28 MiB/s, done.
Resolving deltas: 100% (25724/25724), done.
From https://github.com/crownpay/crown
From https://github.com/infernoman/bitcoin
... (new tags, new branch etc)
--- Building for precise x86_64 ---
Stopping target if it is up
......@@ -408,6 +408,6 @@ Uploading signatures (not yet implemented)
---------------------
In the future it will be possible to push your signatures (both the `.assert` and `.assert.sig` files) to the
[crown/gitian.sigs](https://github.com/crownpay/gitian.sigs/) repository, or if that's not possible to create a pull
[crown/gitian.sigs](https://github.com/infernoman/gitian.sigs/) repository, or if that's not possible to create a pull
request.
There will be an official announcement when this repository is online.
......@@ -94,8 +94,8 @@ Issue the following:
Make note of the hash (which is your collaterla_output) and index.
### Enter your ThroNe details into your throne.conf file
[From the crown github repo](https://github.com/darkcoin/darkcoin/blob/master/doc/throne_conf.md)
### Enter your Throne details into your throne.conf file
[From the crown github repo](https://github.com/infernoman/bitcoin/blob/master/doc/throne_conf.md)
The new throne.conf format consists of a space seperated text file. Each line consisting of an alias, IP address followed by port, throne private key, collateral output transaction id and collateral output index, donation address and donation percentage (the latter two are optional and should be in format "address:percentage").
......
Multiwallet Qt Development and Integration Strategy
===================================================
In order to support loading of multiple wallets in bitcoin-qt, a few changes in the UI architecture will be needed.
Fortunately, only four of the files in the existing project are affected by this change.
Two new classes have been implemented in two new .h/.cpp file pairs, with much of the functionality that was previously
implemented in the BitcoinGUI class moved over to these new classes.
The two existing files most affected, by far, are bitcoingui.h and bitcoingui.cpp, as the BitcoinGUI class will require
some major retrofitting.
Only requiring some minor changes is crown.cpp.
Finally, two new headers and source files will have to be added to bitcoin-qt.pro.
Changes to class BitcoinGUI
---------------------------
The principal change to the BitcoinGUI class concerns the QStackedWidget instance called centralWidget.
This widget owns five page views: overviewPage, transactionsPage, addressBookPage, receiveCoinsPage, and sendCoinsPage.
A new class called *WalletView* inheriting from QStackedWidget has been written to handle all renderings and updates of
these page views. In addition to owning these five page views, a WalletView also has a pointer to a WalletModel instance.
This allows the construction of multiple WalletView objects, each rendering a distinct wallet.
A second class called *WalletFrame* inheriting from QFrame has been written as a container for embedding all wallet-related
controls into BitcoinGUI. At present it contains the WalletView instances for the wallets and does little more than passing on messages
from BitcoinGUI to the currently selected WalletView. It is a WalletFrame instance
that takes the place of what used to be centralWidget in BitcoinGUI. The purpose of this class is to allow future
refinements of the wallet controls with minimal need for further modifications to BitcoinGUI, thus greatly simplifying
merges while reducing the risk of breaking top-level stuff.
Changes to crown.cpp
----------------------
crown.cpp is the entry point into bitcoin-qt, and as such, will require some minor modifications to provide hooks for
multiple wallet support. Most importantly will be the way it instantiates WalletModels and passes them to the
singleton BitcoinGUI instance called window. Formerly, BitcoinGUI kept a pointer to a single instance of a WalletModel.
The initial change required is very simple: rather than calling `window.setWalletModel(&walletModel);` we perform the
following two steps:
window.addWallet("~Default", &walletModel);
window.setCurrentWallet("~Default");
The string parameter is just an arbitrary name given to the default wallet. It's been prepended with a tilde to avoid name collisions in the future with additional wallets.
The shutdown call `window.setWalletModel(0)` has also been removed. In its place is now:
window.removeAllWallets();
......@@ -7,28 +7,3 @@ Crown Core tree 0.12.x release notes can be found here:
Crown Core tree 0.12.x is a fork of Bitcoin Core tree 0.10.2
Older releases
--------------
Crown was previously known as Crown.
Crown tree 0.8.x was a fork of Litecoin tree 0.8, original name was XCoin
which was first released on Jan/18/2014.
Crown tree 0.9.x was the open source implementation of thrones based on
the 0.8.x tree and was first released on Mar/13/2014.
Crown tree 0.10.x used to be the closed source implementation of Darksend
which was released open source on Sep/25/2014.
Crown Core tree 0.11.x was a fork of Bitcoin Core tree 0.9, Crown was rebranded
to Crown.
These release are considered obsolete. Old changelogs can be found here:
- [v0.11.2](release-notes/crown/release-notes-0.11.2.md) released Mar/25/2015
- [v0.11.1](release-notes/crown/release-notes-0.11.1.md) released Feb/10/2015
- [v0.11.0](release-notes/crown/release-notes-0.11.0.md) released Jan/15/2015
- [v0.10.x](release-notes/crown/release-notes-0.10.0.md) released Sep/25/2014
- [v0.9.x](release-notes/crown/release-notes-0.9.0.md) released Mar/13/2014
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment