README.md 8.34 KB
Newer Older
Luke Champine's avatar
Luke Champine committed
1
Sia 0.6.0
Luke Champine's avatar
Luke Champine committed
2
=========
David Vorick's avatar
David Vorick committed
3

4
[![Build Status](https://travis-ci.org/NebulousLabs/Sia.svg?branch=master)](https://travis-ci.org/NebulousLabs/Sia)
David Vorick's avatar
David Vorick committed
5
[![GoDoc](https://godoc.org/github.com/NebulousLabs/Sia?status.svg)](https://godoc.org/github.com/NebulousLabs/Sia)
Luke Champine's avatar
Luke Champine committed
6
[![Go Report Card](https://goreportcard.com/badge/github.com/NebulousLabs/Sia)](https://goreportcard.com/report/github.com/NebulousLabs/Sia)
7

David Vorick's avatar
David Vorick committed
8
Binaries can be found at [our website](http://siacoin.com). Code for the graphical front-end can be found at the [Sia-UI](https://github.com/NebulousLabs/Sia-UI) repo.
David Vorick's avatar
David Vorick committed
9

10 11 12 13 14 15 16 17 18 19 20 21 22 23
Sia is a new decentralized cloud storage platform aimed at giving users control
of their data. Data is split into hundreds of erasure coded pieces and
encrypted locally, and then each piece is uploaded to a separate host. A
blockchain is used to create cryptographic contracts ensuring that hosts will
only get paid if they actually store the data. Out of hundreds of hosts, only a
fraction are required to recover the original file.

Anybody can join the network as a host and get income from the storage they
contribute. This openness allows Sia to build and take advantage of a global
network of small datacenters. Combined with advanced algorithms for storing and
retrieving data, Sia is poised to be a highly competitive cloud storage
platform. More information about the technology can be found on our website and
in the 'doc' folder of the repo.

Luke Champine's avatar
Luke Champine committed
24 25 26 27
Sia is currently in beta. The currency was launched on June 7th, 2015, but the
storage platform itself remains in beta. Sia is ready for use with small sums
of money and non-critical files, but until the network has a more proven track
record, we advise against using it as a sole means of storing important data.
David Vorick's avatar
David Vorick committed
28

Luke Champine's avatar
Luke Champine committed
29
This release comes with 2 binaries, siad and siac. siad is a background
Luke Champine's avatar
Luke Champine committed
30
service, or "daemon," that runs the Sia protocol, and siac is a client that is
Luke Champine's avatar
Luke Champine committed
31 32 33 34
used to interact with siad. Siad exposes an HTTP API on 'localhost:9980' which
can be used to interact with the daemon. There is a front-end program called
Sia-UI which can be used to interact with the daemon in a more user-friendly
way. Documentation on the API can be found in doc/API.md.
Luke Champine's avatar
Luke Champine committed
35 36 37 38

Usage
-----

Luke Champine's avatar
Luke Champine committed
39 40 41 42 43 44 45 46
siad and siac are run via command prompt. On Windows, you can just double-
click siad.exe if you don't need to specify any command-line arguments.
Otherwise, navigate to the sia folder and click File->Open command prompt.
Then, start the siad service by entering `siad` and pressing Enter. The
command prompt may appear to freeze; this means siad is waiting for requests.
Windows users may see a warning from the Windows Firewall; be sure to check
both boxes ("Private networks" and "Public networks") and click "Allow
access." You can now run `siac` in a separate command prompt to interact with
Luke Champine's avatar
Luke Champine committed
47
siad. From here, you can send money, mine blocks, upload and download
Luke Champine's avatar
Luke Champine committed
48 49
files, and advertise yourself as a host.

50 51 52 53
Building From Source
--------------------

To build from source, [Go 1.6 must be installed](https://golang.org/doc/install)
Luke Champine's avatar
Luke Champine committed
54
on the system. Then simply use `go get`:
55 56

```
Luke Champine's avatar
Luke Champine committed
57
go get -u github.com/NebulousLabs/Sia/...
58 59
```

Luke Champine's avatar
Luke Champine committed
60 61
This will download the Sia repo to your `$GOPATH/src` folder, and install the
`siad` and `siac` binaries in your `$GOPATH/bin` folder.
62

Luke Champine's avatar
Luke Champine committed
63 64 65 66 67 68 69
To stay up-to-date, run the previous `go get` command again. Alternatively, you
can use the Makefile provided in this repo. Run `git pull origin master` to
pull the latest changes, and `make release-std` to build the new binaries. You
can also run `make test` and `make test-long` to run the short and full test
suites, respectively. Finally, `make cover` will generate code coverage reports
for each package; they are stored in the `cover` folder and can be viewed in
your browser.
70

Luke Champine's avatar
Luke Champine committed
71 72 73
Troubleshooting
---------------

74
- I can't add storage folders on Windows.
Luke Champine's avatar
Luke Champine committed
75

76 77 78
  Currently, admin privileges are required to add storage folders on Windows.
  Close siad and run it from an admin command prompt. Future versions will not
  require admin privileges.
Luke Champine's avatar
Luke Champine committed
79

Luke Champine's avatar
Luke Champine committed
80
- I can't connect to more than 8 peers.
Luke Champine's avatar
Luke Champine committed
81

Luke Champine's avatar
Luke Champine committed
82 83 84 85 86 87 88
  Once Sia has connected to 8 peers, it will stop trying to form new
  connections, but it will still accept incoming connection requests (up to 128
  total peers). However, if you are behind a firewall, you will not be able to
  accept incoming connections. You must configure your firewall to allow Sia
  connections by forwarding your ports. By default, Sia communicates on ports
  9981 and 9982. The specific instructions for forwarding a port vary by
  router. For more information, consult [this guide](http://portfoward.com).
Luke Champine's avatar
Luke Champine committed
89

90 91
  Sia currently has support for UPnP. While not all routers support UPnP, a
  majority of users should have their ports automatically forwarded by UPnP.
Luke Champine's avatar
Luke Champine committed
92

Luke Champine's avatar
Luke Champine committed
93 94
- I mined a block, but I didn't receive any money.

Luke Champine's avatar
Luke Champine committed
95 96
  There is a 144-block confirmation delay before you will receive siacoins from
  mined blocks. If you still have not received the block reward after 144
Luke Champine's avatar
Luke Champine committed
97 98
  blocks, it means your block did not made it into the blockchain.

99
If your issue is not addressed above, you can get in touch with us personally:
100

101
  slack: http://slackin.siacoin.com (ping @taek, @nemo, or @jordan)
Luke Champine's avatar
Luke Champine committed
102

103 104 105 106 107
  email:
  
  david@nebulouslabs.com
  
  luke@nebulouslabs.com
108 109
  
  jordan@nebulouslabs.com
110

Luke Champine's avatar
Luke Champine committed
111 112 113
Version Information
-------------------

Luke Champine's avatar
Luke Champine committed
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
- The renter and host modules have been significantly changed in v0.6.0.
  The renter now forms long-term file contracts instead of making a new
  contract for each file. This requires the introduction of "allowances,"
  which are used to specify how much money the renter should spend on
  contracts. Before you can upload files, you must first specify an
  allowance. The renter will then form contracts according to the allowance,
  which are used to store the uploaded files.

- The host now supports multiple storage folders. Each folder can be configured
  with a maximum size. If you remove a storage folder, its data will be
  redistributed to the other folders. You should always remove the storage
  folder via the API before deleting its contents on your filesystem. The host
  cannot store any data until you specify at least one storage folder.

  Hosts can also delete individual sectors (identified via Merkle root) in
  order to comply with take-down requests.

- v0.6.0 introduces some changes that are incompatible with previous versions.
  For example, host announcements now include a public key, and are signed with
  that key. This allows hosts to reannounce later with a different IP address.
  The renter-host communication protocols have also changed significantly. For
  these reasons, we recommend that you reupload data stored on v0.5.0 to v0.6.0
  hosts. Apologies for the inconvenience.
Luke Champine's avatar
Luke Champine committed
137

Luke Champine's avatar
Luke Champine committed
138
Please tell us about any problems you run into, and any features you want! The
David Vorick's avatar
David Vorick committed
139
advantage of being a beta user is that your feedback will have a large impact
Luke Champine's avatar
Luke Champine committed
140
on what we do in the next few months. Thank you!
Luke Champine's avatar
Luke Champine committed
141 142 143 144

Version History
---------------

145
May 2016:
Luke Champine's avatar
Luke Champine committed
146 147

v0.6.0 (minor release)
Luke Champine's avatar
Luke Champine committed
148
- Switched to long-form renter contracts
Luke Champine's avatar
Luke Champine committed
149 150 151
- Added support for multiple hosting folders
- Hosts are now identified by their public key

Luke Champine's avatar
Luke Champine committed
152 153
January 2016:

Luke Champine's avatar
Luke Champine committed
154 155 156 157
v0.5.2 (patch)
- Faster initial blockchain download
- Introduced headers-only broadcasting

Luke Champine's avatar
Luke Champine committed
158 159 160 161 162
v0.5.1 (patch)
- Fixed bug severely impacting performance
- Restored (but deprecated) some siac commands
- Added modules flag, allowing modules to be disabled

Luke Champine's avatar
Luke Champine committed
163 164 165 166 167 168 169
v0.5.0 (minor release)
- Major API changes to most modules
- Automatic contract renewal
- Data on inactive hosts is reuploaded
- Support for folder structure
- Smarter host

Luke Champine's avatar
Luke Champine committed
170 171
October 2015:

Luke Champine's avatar
Luke Champine committed
172 173 174
v0.4.8 (patch)
- Restored compatibility with v0.4.6

Luke Champine's avatar
Luke Champine committed
175 176 177
v0.4.7 (patch)
- Dropped support for v0.3.3.x

Luke Champine's avatar
Luke Champine committed
178
v0.4.6 (patch)
179
- Removed over-aggressive consistency check
Luke Champine's avatar
Luke Champine committed
180

Luke Champine's avatar
Luke Champine committed
181 182 183 184
v0.4.5 (patch)
- Fixed last prominent bug in block database
- Closed some dangling resource handles

Luke Champine's avatar
Luke Champine committed
185 186 187 188 189
v0.4.4 (patch)
- Uploading is much more reliable
- Price estimations are more accurate
- Bumped filesize limit to 20 GB

Luke Champine's avatar
Luke Champine committed
190 191 192 193 194 195
v0.4.3 (patch)
- Block database is now faster and more stable
- Wallet no longer freezes when unlocked during IBD
- Optimized block encoding/decoding

September 2015:
Luke Champine's avatar
Luke Champine committed
196

197
v0.4.2 (patch)
198 199
- HostDB is now smarter
- Tweaked renter contract creation
David Vorick's avatar
David Vorick committed
200

201
v0.4.1 (patch)
202 203 204
- Added support for loading v0.3.3.x wallets
- Better pruning of dead nodes
- Improve database consistency
David Vorick's avatar
David Vorick committed
205

Luke Champine's avatar
Luke Champine committed
206 207
August 2015:

Luke Champine's avatar
Luke Champine committed
208 209 210 211 212
v0.4.0: Second stable currency release.
- Wallets are encrypted and generated from seed phrases
- Files are erasure-coded and transferred in parallel
- The blockchain is now fully on-disk
- Added UPnP support