You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Your Bitcoin wallet is generated using a 12 word seed which you are encouraged to save on paper. (The order of the words is important.) This seed will allow you to access your funds in the case of a loss or failure of your machine
6
+
7
+
There is an outstanding pull request to allow you to access your seed in the user interface.
Copy file name to clipboardExpand all lines: docs/protocol/bitcoin.md
+12-6Lines changed: 12 additions & 6 deletions
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,4 @@
1
-
##Bitcoin
1
+
# Bitcoin
2
2
3
3
The early release of OpenBazaar 2.0 will only accept the cryptocurrency Bitcoin. There is a Shapeshift integration so you can still purchase items on OpenBazaar with other cryptocurrencies via Shapeshift. There are plans to facilitate direct purchases with other cryptocurrencies in the near future.
4
4
@@ -8,10 +8,10 @@ Bitcoin enables a "trustless" escrow system using multi-signature transactions w
8
8
9
9
The activation of SegWit in Bitcoin Core should decrease transaction fees in the short term but there are multiple cryptocurrencies that can offer additional or superior features such as lower transaction fees, shorter block times or stronger privacy.
10
10
11
-
In theory, the OpenBazaar protocol could work with any cryptocurrency, not just Bitcoin. In practice, there are certain features a cryptocurrency must have to be added seamlessly to the OpenBazaar protocol. Multi-signature transactions must be enabled and a UTXO is preferential to the account model. In summary, cryptocurrencies that are a close derivative to Bitcoin are stronger candidates for integrations in the short term.
11
+
In theory, the OpenBazaar protocol could work with any cryptocurrency, not just Bitcoin. In practice, there are certain features a cryptocurrency must have to be added seamlessly to the OpenBazaar protocol. Multi-signature transactions must be enabled and a UTXO model is preferential to the account model. In summary, cryptocurrencies that are a close derivative to Bitcoin are stronger candidates for integrations in the short term.
12
12
13
-
####Multi-sig scripts
14
-
If you'd like to learn more about how Bitcoin works we'd suggest reading the <ahref="https://bitcoin.org/en/developer-guide">Bitcoin Developer Guide</a>. However, we can provide a quick overview of how the escrow system works.
13
+
## Multi-sig scripts
14
+
If you'd like to learn more about how Bitcoin works we'd suggest reading the <ahref="https://bitcoin.org/en/developer-guide">Bitcoin Developer Guide</a> or [Mastering Bitcoin](https://www.amazon.com/Mastering-Bitcoin-Programming-Open-Blockchain/dp/1491954388/) by Andreas Antonopoulos. However, we can provide a quick overview of how the escrow system works.
15
15
16
16
In Bitcoin, the coins are not technically sent to a bitcoin "address" or account. Instead, they are sent to a simple computer program (or script). This script sets the terms upon which the coins are allowed to be transferred. A person seeking to spend bitcoins provides the inputs to the script function and the bitcoin software will execute it. If the script returns `True` (and all other transaction checks pass) then the bitcoins may be transferred to another script.
17
17
@@ -45,7 +45,13 @@ OP_ELSE
45
45
OP_ENDIF
46
46
```
47
47
48
-
####Bitcoin Wallets
48
+
## Bitcoin Wallets
49
49
The OpenBazaar protocol specification has nothing to say about which Bitcoin wallet should be used with the protocol. To improve the user experience the reference implementation comes bundled with a built-in wallet. The default wallet implements something call Simplified Payment Verification (SPV) which provides strong cryptographic validation of incoming Bitcoin transactions while using very little of the computer's resources. The drawback to SPV mode is it leaks enough private data to allow potential attackers to figure out which transactions came from the wallet. That information by itself doesn't say who the *owner* of the wallet is, though other investigative techniques might provide that information.
50
50
51
-
For this reason, there is a setting in the openbazaar-go config file that allows a user to use bitcoind (a full Bitcoin implementation) with openbazaar-go. Bitcoind is a very heavyweight software and is typically only used by power users, but it does a much better job than SPV at providing transactional privacy.
51
+
For this reason, there is a setting in the openbazaar-go config file that allows a user to use bitcoind (a full Bitcoin implementation) with openbazaar-go. Bitcoind is a very heavyweight software and is typically only used by power users, but it does a much better job than SPV at providing transactional privacy.
52
+
53
+
## Bitcoin Fees
54
+
55
+
How are Bitcoin fees calculated?
56
+
57
+
Bitcoin transaction fees are estimated using the 21 Bitcoin fees API. More details [here](https://bitcoinfees.21.co/api).
OpenBazaar nodes will be able to be identified with hashes (unique identifiers) that are machine readable and not particularly human readable.
3
+
OpenBazaar nodes can be identified with hashes (unique identifiers) that are machine readable but not particularly human readable. OpenBazaar uses ed25519 elliptic identity keys; your peer ID is the multihash encoded SHA256 hash of the public key. OpenBazaar currently generates keys deterministically based on the initial mnemonic which can be used to regenerate the OpenBazaar and Bitcoin identities in case of database loss (see backups).
4
4
5
5
It is planned that human readable names mapping to these unique identifers will be implemented in the near future using Blockstack's subdomain system. More details on this system are [here](https://github.com/blockstack/blockstack-core/blob/master/docs/subdomains.md). This feature won't be ready for the early versions of OpenBazaar 2.0.
Copy file name to clipboardExpand all lines: docs/protocol/ipfs.md
+12-6Lines changed: 12 additions & 6 deletions
Original file line number
Diff line number
Diff line change
@@ -1,9 +1,15 @@
1
-
## IPFS
1
+
# IPFS
2
+
3
+
## Introduction to IPFS
2
4
<ahref="https://ipfs.io/">IPFS</a> stands for InterPlanetary File System. It is a hypermedia distribution protocol which forms the core the OpenBazaar network. It uses a Kademlia DHT, to route downloaders to those seeding files. What makes it unique is how IPFS serializes the data to create a cryptographically authenticated data structure known as a *Merkle**DAG*.
3
5
4
-
[Note: much of this description of IPFS is taken verbatim from <ahref="http://whatdoesthequantsay.com/2015/09/13/ipfs-introduction-by-example">Christian Lundkvist</a> since he did such a great job]
6
+
## OpenBazaar fork of IPFS
7
+
8
+
The OpenBazaar daemon uses a fork of the [go-ipfs](www.github.com/ipfs/go-ipfs) repository so you will not be able to access non-OpenBazaar related content when connected to the OpenBazaar network. There are different protocol strings to segregate the OpenBazaar network from the main IPFS network and an increased TTL on certain types of DHT data. Offline stores are seeded on the network for a week rather than the default 24 hours. You can find the full diff in the README of the forked [repo](https://github.com/OpenBazaar/go-ipfs). The fork is bundled in the vendor package and will be used automatically when you compile and run the server. Note that you will still see github.com/ipfs/go-ipfs import statements instead of github.com/OpenBazaar/go-ipfs despite the package being a fork. This is done to avoid a major refactor of import statements and make rebasing IPFS much easier.
9
+
10
+
[Note: much of the following description of IPFS is taken verbatim from <ahref="http://whatdoesthequantsay.com/2015/09/13/ipfs-introduction-by-example">Christian Lundkvist</a> since he did such a great job]
5
11
6
-
####IPFS Objects
12
+
## IPFS Objects
7
13
8
14
Before data is seeded it is wrapped in an IPFS object. Objects have two fields:
9
15
@@ -44,7 +50,7 @@ Let's create a visualization of the above IPFS object:
44
50
45
51
<imgsrc="https://imgur.com/download/56T4pfc">
46
52
47
-
####Small Files
53
+
### Small Files
48
54
Small files (<256 kB) are represented as an IPFS object with the file data in the `Data` field and no `Links`. For example, a text file that says "Hello World" would look like this:
49
55
```
50
56
{
@@ -55,7 +61,7 @@ Small files (<256 kB) are represented as an IPFS object with the file data in th
55
61
And in a more visual form:
56
62
<imgsrc="https://imgur.com/download/m2VwTzR">
57
63
58
-
####Large Files
64
+
### Large Files
59
65
Files >256 kB in size are split into chunks no larger than 256 kB and these chunks are linked to by the parent IPFS object (with filenames omitted). For example:
60
66
61
67
```
@@ -102,7 +108,7 @@ The files hello.txt and my_file.txt both contain the string Hello World!\n. The
102
108
When representing this directory structure as an IPFS object it looks like this:
103
109
<imgsrc="https://imgur.com/download/0PM5xk9">
104
110
105
-
####Versioning
111
+
### Versioning
106
112
IPFS can represent the data structures used by Git to allow for versioned file systems. A `Commit` object has one or more links with names parent0, parent1 etc pointing to previous commits, and one link with name object (this is called tree in Git) that points to the file system structure referenced by that commit.
107
113
108
114
We give as an example our previous file system directory structure, along with two commits: The first commit is the original structure, and in the second commit we’ve updated the file my_file.txt to say Another World! instead of the original Hello World!.
0 commit comments