The first alpha release is complete. This isn't intended to be used for actual file storage, just to demonstrate what Sia might look like. Feedback is appreciated, but we are aware of a large number of bugs and points of insecurity. There's a lot that hasn't been implemented yet. Think of it more as a proof-of-concept than a traditional alpha.
Check it out at siacoin.com/download.html
There you will find an explanation on how to download and install Sia. Unfortunately, we don't have Windows binaries yet.
We have an IRC channel now, #sia-talk on freenode. We have registered a few other channels for future use, but until there's a need for them we plan on keeping them mostly dormant.
Things you can do with the current alpha:
Create wallets
Send money between wallets
Upload files to wallets (max 256 atoms, explained later)
Download files
The block speed for the alpha release is 256 seconds per block. Unfortunately, many actions such as upload take several blocks to complete, though never more than 4. This can make the production Sia a little slow to play around with. (If it really bothers you, you can recompile with a shorter interval.) The full version of Sia will have block speeds somewhere between 1 block every 2-16 hours. However, it will also support accelerated actions, which can only occur under certain but easily achieved constraints. Most people will not realize that Sia moves at a pace of 1 step every few hours, because they will be using cryptographic proofs behind the scenes to accelerate their actions. These accelerations won't be supported in Sia until the beta.
Notes:
- Empty wallets do not get deleted.
- Participants do not get kicked for not having files.
- Participants do get kicked for missing a single heartbeat. This can cause problems for unstable connections
- Sometimes participants don't join the quorum in-sync. This is rare, and the fix is to just try again.
- After creating a new quorum, you must wait a full block before adding any siblings.
- You may encounter some hard crashes. This is because a good error-handling framework is still in the works.
What are Atoms?An atom is a unit of storage on the Sia network. Uploaders are allowed to pick their own redundancy, which means that the amount of data which can be stored in an atom is variable. At full redundancy (every sibling has the complete file), only 4kb can be stored per atom, the max file size is 1MB, and the redundancy is equal to the quorum size. (For the alpha, the quorum size is 32). At a lower redundancy (like double redundancy), an atom is 4KB * 16 hosts, which means the max file size is slightly more flexible.
Picking a RedundancyRedundancy works by picking a value,
k, which represents the number of siblings that need to remain online in order for the file to be recoverable. The amount of redundancy is QuorumSize/K. At k=32 (the current quorum size), the redundancy is 1, meaning there is exactly 1 copy of the file on the network. At k=16, there are 2 complete copies of the file on the network, and the original file can be rebuilt from any 16 siblings.
Setting up a QuorumRight now, all quorums are pseudo-decentralized, which means that anybody can establish a quorum, and anybody can join a quorum that has extra space for siblings. To establish a quorum, run the server executable and type 'e'. This creates a new quorum bootstrapped to your current address and chosen port number. To join a quorum, type 'j', and input the address of any host in the quorum you wish to join.
Messing AroundFeel free to dig into the source code a bit. To reduce the quorum size (which reduces the block speed), change QuorumSize in src/quorum/quorum.go. To change the step length (currently set to 8 seconds, reducing this will also reduce the block speed), change StepDuration in src/participant/listen.go.
We realize right now that setting up a quorum is a bit of a pain, and that there are lots of frustrating things that can go wrong while keeping one running. This is merely a result of the early stage of the software. Later versions will be easier to use, less dependent on a stable internet connection, and will not have occasional synchronization hiccups.
Moving Forward:The first thing we're doing is taking a 3-4 day break from coding. It's easy to get your head buried and miss out on what's happening in the rest of the world. We'll be using this time to take a broader perspective on Sia and figure out what the next best steps are.
We're also setting a deadline for a alpha v2 release in 3-4 weeks. This alpha will have:
+ increased DOS (denial-of-service) protection
+ automatic port forwarding
+ smooth, cryptographic synchronization among hosts
+ wallets that get deleted upon running out of money
+ nonces for transactions, meaning a signed transaction can only be used once
+ proof-of-storage with cheating protection and auto-cheating implemented. (Auto cheating is something you do if you don't have the file, for example if your disk corrupts.
After that we'll be looking toward building the meta-quorums, cryptographic DOS protection (
), an instant-transaction network, and a more comfortable scripting environment.
If you have questions, you can post here, chat with us in the IRC channel, or shoot us an email.