diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/siac.exe.sig b/3rd-party/Sia-v1.1.0-windows-amd64/siac.exe.sig deleted file mode 100644 index e911f84..0000000 Binary files a/3rd-party/Sia-v1.1.0-windows-amd64/siac.exe.sig and /dev/null differ diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/siad.exe.sig b/3rd-party/Sia-v1.1.0-windows-amd64/siad.exe.sig deleted file mode 100644 index d1094ab..0000000 Binary files a/3rd-party/Sia-v1.1.0-windows-amd64/siad.exe.sig and /dev/null differ diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/01 - siad test.cmd b/3rd-party/Sia-v1.1.1-windows-amd64/01 - siad test.cmd similarity index 100% rename from 3rd-party/Sia-v1.1.0-windows-amd64/01 - siad test.cmd rename to 3rd-party/Sia-v1.1.1-windows-amd64/01 - siad test.cmd diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/LICENSE b/3rd-party/Sia-v1.1.1-windows-amd64/LICENSE similarity index 100% rename from 3rd-party/Sia-v1.1.0-windows-amd64/LICENSE rename to 3rd-party/Sia-v1.1.1-windows-amd64/LICENSE diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/README.md b/3rd-party/Sia-v1.1.1-windows-amd64/README.md similarity index 93% rename from 3rd-party/Sia-v1.1.0-windows-amd64/README.md rename to 3rd-party/Sia-v1.1.1-windows-amd64/README.md index a15b8d5..e1a61cf 100644 --- a/3rd-party/Sia-v1.1.0-windows-amd64/README.md +++ b/3rd-party/Sia-v1.1.1-windows-amd64/README.md @@ -1,4 +1,4 @@ -# [![Sia Logo](http://sia.tech/img/svg/sia-green-logo.svg)](http://sia.tech) v1.1.0 (Andromeda) +# [![Sia Logo](http://sia.tech/img/svg/sia-green-logo.svg)](http://sia.tech) v1.1.1 (Andromeda) ========= [![Build Status](https://travis-ci.org/NebulousLabs/Sia.svg?branch=master)](https://travis-ci.org/NebulousLabs/Sia) @@ -14,6 +14,8 @@ best service at the lowest price. And since there is no barrier to entry for hosts, anyone with spare storage capacity can join the network and start making money. +![UI](http://i.imgur.com/iHoGqoL.png) + Traditional cloud storage has a number of shortcomings. Users are limited to a few big-name offerings: Google, Microsoft, Amazon. These companies have little incentive to encrypt your data or make it easy to switch services later. Their @@ -54,9 +56,9 @@ authority. To acquire siacoins, use an exchange such as [Poloniex](https://polon To get started with Sia, check out the guides below: -- [How to Store Data on Sia](https://medium.com/@jhowell1337/getting-started-with-private-decentralized-cloud-storage-c9565dc8c854) -- [How to Become a Sia Host](http://blog.sia.tech/2016/05/26/how-to-run-a-host-on-sia) -- [Using the Sia API](http://blog.sia.tech/2016/10/20/api-quickstart-guide) +- [How to Store Data on Sia](https://blog.sia.tech/getting-started-with-private-decentralized-cloud-storage-c9565dc8c854) +- [How to Become a Sia Host](https://blog.sia.tech/how-to-run-a-host-on-sia-2159ebc4725) +- [Using the Sia API](https://blog.sia.tech/api-quickstart-guide-f1d160c05235) Usage diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/doc/API.md b/3rd-party/Sia-v1.1.1-windows-amd64/doc/API.md similarity index 90% rename from 3rd-party/Sia-v1.1.0-windows-amd64/doc/API.md rename to 3rd-party/Sia-v1.1.1-windows-amd64/doc/API.md index 544990b..88b8c96 100644 --- a/3rd-party/Sia-v1.1.0-windows-amd64/doc/API.md +++ b/3rd-party/Sia-v1.1.1-windows-amd64/doc/API.md @@ -155,9 +155,10 @@ returns the version of the Sia daemon currently running. Consensus --------- -| Route | HTTP verb | -| ---------------------------- | --------- | -| [/consensus](#consensus-get) | GET | +| Route | HTTP verb | +| --------------------------------------------------------------------------- | --------- | +| [/consensus](#consensus-get) | GET | +| [/consensus/validate/transactionset](#consensusvalidatetransactionset-post) | POST | For examples and detailed descriptions of request and response parameters, refer to [Consensus.md](/doc/api/Consensus.md). @@ -176,6 +177,19 @@ returns information about the consensus set, such as the current block height. } ``` +#### /consensus/validate/transactionset [POST] + +validates a set of transactions using the current utxo set. + +###### Request Body Bytes + +Since transactions may be large, the transaction set is supplied in the POST +body, encoded in JSON format. + +###### Response +standard success or error response. See +[#standard-responses](#standard-responses). + Gateway ------- @@ -465,10 +479,11 @@ standard success or error response. See Host DB ------- -| Request | HTTP Verb | -| ------------------------------------------- | --------- | -| [/hostdb/active](#hostdbactive-get-example) | GET | -| [/hostdb/all](#hostdball-get-example) | GET | +| Request | HTTP Verb | +| ------------------------------------------------------- | --------- | +| [/hostdb/active](#hostdbactive-get-example) | GET | +| [/hostdb/all](#hostdball-get-example) | GET | +| [/hostdb/hosts/___:pubkey___](#hostdbhosts-get-example) | GET | For examples and detailed descriptions of request and response parameters, refer to [HostDB.md](/doc/api/HostDB.md). @@ -501,6 +516,7 @@ numhosts // Optional "algorithm": "ed25519", "key": "RW50cm9weSBpc24ndCB3aGF0IGl0IHVzZWQgdG8gYmU=" } + "publickeystring": "ed25519:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", } ] } @@ -530,11 +546,58 @@ any particular order, and the order may change in subsequent calls. "algorithm": "ed25519", "key": "RW50cm9weSBpc24ndCB3aGF0IGl0IHVzZWQgdG8gYmU=" } + "publickeystring": "ed25519:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", } ] } ``` +#### /hostdb/hosts/___:pubkey___ [GET] [(example)](/doc/api/HostDB.md#host-details) + +fetches detailed information about a particular host, including metrics +regarding the score of the host within the database. It should be noted that +each renter uses different metrics for selecting hosts, and that a good score on +in one hostdb does not mean that the host will be successful on the network +overall. + +###### Path Parameters [(with comments)](/doc/api/HostDB.md#path-parameters) +``` +:pubkey +``` + +###### JSON Response [(with comments)](/doc/api/HostDB.md#json-response-2) +```javascript +{ + "entry": { + "acceptingcontracts": true, + "maxdownloadbatchsize": 17825792, // bytes + "maxduration": 25920, // blocks + "maxrevisebatchsize": 17825792, // bytes + "netaddress": "123.456.789.0:9982", + "remainingstorage": 35000000000, // bytes + "sectorsize": 4194304, // bytes + "totalstorage": 35000000000, // bytes + "unlockhash": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789ab", + "windowsize": 144, // blocks + "publickey": { + "algorithm": "ed25519", + "key": "RW50cm9weSBpc24ndCB3aGF0IGl0IHVzZWQgdG8gYmU=" + } + "publickeystring": "ed25519:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", + }, + "scorebreakdown": { + "ageadjustment": 0.1234, + "burnadjustment": 0.1234, + "collateraladjustment": 23.456, + "priceadjustment": 0.1234, + "storageremainingadjustment": 0.1234, + "uptimeadjustment": 0.1234, + "versionadjustment": 0.1234, + } +} +``` + + Miner ----- @@ -614,6 +677,7 @@ Renter | [/renter/contracts](#rentercontracts-get) | GET | | [/renter/downloads](#renterdownloads-get) | GET | | [/renter/files](#renterfiles-get) | GET | +| [/renter/prices](#renter-prices-get) | GET | | [/renter/delete/___*siapath___](#renterdeletesiapath-post) | POST | | [/renter/download/___*siapath___](#renterdownloadsiapath-get) | GET | | [/renter/rename/___*siapath___](#renterrenamesiapath-post) | POST | @@ -672,11 +736,12 @@ returns active contracts. Expired contracts are not included. { "contracts": [ { - "endheight": 50000, // block height - "id": "1234567890abcdef0123456789abcdef0123456789abcdef0123456789abcdef", - "netaddress": "12.34.56.78:9", - "renterfunds": "1234", // hastings - "size": 8192 // bytes + "endheight": 50000, // block height + "id": "1234567890abcdef0123456789abcdef0123456789abcdef0123456789abcdef", + "lasttransaction": {}, // types.Transaction + "netaddress": "12.34.56.78:9", + "renterfunds": "1234", // hastings + "size": 8192 // bytes } ] } @@ -722,6 +787,21 @@ lists the status of all files. } ``` +#### /renter/prices [GET] + +lists the estimated prices of performing various storage and data operations. + +###### JSON Response [(with comments)](/doc/api/Renter.md#json-response-4) +```javascript +{ + "downloadterabyte": "1234", // hastings + "formcontracts": "1234", // hastings + "storageterabytemonth": "1234", // hastings + "uploadterabyte": "1234", // hastings +} +``` + + #### /renter/delete/___*siapath___ [POST] deletes a renter file entry. Does not delete any downloads or original files, diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/doc/Consensus.md b/3rd-party/Sia-v1.1.1-windows-amd64/doc/Consensus.md similarity index 100% rename from 3rd-party/Sia-v1.1.0-windows-amd64/doc/Consensus.md rename to 3rd-party/Sia-v1.1.1-windows-amd64/doc/Consensus.md diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/doc/Developers.md b/3rd-party/Sia-v1.1.1-windows-amd64/doc/Developers.md similarity index 100% rename from 3rd-party/Sia-v1.1.0-windows-amd64/doc/Developers.md rename to 3rd-party/Sia-v1.1.1-windows-amd64/doc/Developers.md diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/doc/Encoding.md b/3rd-party/Sia-v1.1.1-windows-amd64/doc/Encoding.md similarity index 100% rename from 3rd-party/Sia-v1.1.0-windows-amd64/doc/Encoding.md rename to 3rd-party/Sia-v1.1.1-windows-amd64/doc/Encoding.md diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/doc/File Contract Negotiation.md b/3rd-party/Sia-v1.1.1-windows-amd64/doc/File Contract Negotiation.md similarity index 99% rename from 3rd-party/Sia-v1.1.0-windows-amd64/doc/File Contract Negotiation.md rename to 3rd-party/Sia-v1.1.1-windows-amd64/doc/File Contract Negotiation.md index 66fd5d2..711bf39 100644 --- a/3rd-party/Sia-v1.1.0-windows-amd64/doc/File Contract Negotiation.md +++ b/3rd-party/Sia-v1.1.1-windows-amd64/doc/File Contract Negotiation.md @@ -190,7 +190,7 @@ File Contract Revision 8. The renter signs the revision and sends the signature to the host. -9. The host signs the revision and sends the siganture to the renter. Both +9. The host signs the revision and sends the signature to the renter. Both parties submit the new revision to the transaction pool. The connection deadline is reset to 600 seconds (unless the maximum deadline has been reached), and the loop restarts. diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/doc/Guide to Contributing to Sia.md b/3rd-party/Sia-v1.1.1-windows-amd64/doc/Guide to Contributing to Sia.md similarity index 100% rename from 3rd-party/Sia-v1.1.0-windows-amd64/doc/Guide to Contributing to Sia.md rename to 3rd-party/Sia-v1.1.1-windows-amd64/doc/Guide to Contributing to Sia.md diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/doc/Modules.md b/3rd-party/Sia-v1.1.1-windows-amd64/doc/Modules.md similarity index 100% rename from 3rd-party/Sia-v1.1.0-windows-amd64/doc/Modules.md rename to 3rd-party/Sia-v1.1.1-windows-amd64/doc/Modules.md diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/doc/Running and Writing Tests for Sia.md b/3rd-party/Sia-v1.1.1-windows-amd64/doc/Running and Writing Tests for Sia.md similarity index 100% rename from 3rd-party/Sia-v1.1.0-windows-amd64/doc/Running and Writing Tests for Sia.md rename to 3rd-party/Sia-v1.1.1-windows-amd64/doc/Running and Writing Tests for Sia.md diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/doc/Standard.md b/3rd-party/Sia-v1.1.1-windows-amd64/doc/Standard.md similarity index 100% rename from 3rd-party/Sia-v1.1.0-windows-amd64/doc/Standard.md rename to 3rd-party/Sia-v1.1.1-windows-amd64/doc/Standard.md diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/doc/api/Consensus.md b/3rd-party/Sia-v1.1.1-windows-amd64/doc/api/Consensus.md similarity index 65% rename from 3rd-party/Sia-v1.1.0-windows-amd64/doc/api/Consensus.md rename to 3rd-party/Sia-v1.1.1-windows-amd64/doc/api/Consensus.md index 2ef61d0..11e3713 100644 --- a/3rd-party/Sia-v1.1.0-windows-amd64/doc/api/Consensus.md +++ b/3rd-party/Sia-v1.1.1-windows-amd64/doc/api/Consensus.md @@ -20,9 +20,10 @@ endpoint returns information about the state of the blockchain. Index ----- -| Route | HTTP verb | -| ---------------------------- | --------- | -| [/consensus](#consensus-get) | GET | +| Route | HTTP verb | +| --------------------------------------------------------------------------- | --------- | +| [/consensus](#consensus-get) | GET | +| [/consensus/validate/transactionset](#consensusvalidatetransactionset-post) | POST | #### /consensus [GET] @@ -45,3 +46,16 @@ returns information about the consensus set, such as the current block height. "target": [0,0,0,0,0,0,11,48,125,79,116,89,136,74,42,27,5,14,10,31,23,53,226,238,202,219,5,204,38,32,59,165] } ``` + +#### /consensus/validate/transactionset [POST] + +validates a set of transactions using the current utxo set. + +###### Request Body Bytes + +Since transactions may be large, the transaction set is supplied in the POST +body, encoded in JSON format. + +###### Response +standard success or error response. See +[#standard-responses](#standard-responses). diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/doc/api/Daemon.md b/3rd-party/Sia-v1.1.1-windows-amd64/doc/api/Daemon.md similarity index 100% rename from 3rd-party/Sia-v1.1.0-windows-amd64/doc/api/Daemon.md rename to 3rd-party/Sia-v1.1.1-windows-amd64/doc/api/Daemon.md diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/doc/api/Gateway.md b/3rd-party/Sia-v1.1.1-windows-amd64/doc/api/Gateway.md similarity index 100% rename from 3rd-party/Sia-v1.1.0-windows-amd64/doc/api/Gateway.md rename to 3rd-party/Sia-v1.1.1-windows-amd64/doc/api/Gateway.md diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/doc/api/Host.md b/3rd-party/Sia-v1.1.1-windows-amd64/doc/api/Host.md similarity index 100% rename from 3rd-party/Sia-v1.1.0-windows-amd64/doc/api/Host.md rename to 3rd-party/Sia-v1.1.1-windows-amd64/doc/api/Host.md diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/doc/api/HostDB.md b/3rd-party/Sia-v1.1.1-windows-amd64/doc/api/HostDB.md similarity index 55% rename from 3rd-party/Sia-v1.1.0-windows-amd64/doc/api/HostDB.md rename to 3rd-party/Sia-v1.1.1-windows-amd64/doc/api/HostDB.md index ab36600..66bbb5e 100644 --- a/3rd-party/Sia-v1.1.0-windows-amd64/doc/api/HostDB.md +++ b/3rd-party/Sia-v1.1.1-windows-amd64/doc/api/HostDB.md @@ -18,10 +18,11 @@ identifies hosts by their public key and keeps track of metrics such as price. Index ----- -| Request | HTTP Verb | Examples | -| ------------------------------------------- | --------- | ----------------------------- | -| [/hostdb/active](#hostdbactive-get-example) | GET | [Active hosts](#active-hosts) | -| [/hostdb/all](#hostdball-get-example) | GET | [All hosts](#all-hosts) | +| Request | HTTP Verb | Examples | +| ------------------------------------------------------- | --------- | ----------------------------- | +| [/hostdb/active](#hostdbactive-get-example) | GET | [Active hosts](#active-hosts) | +| [/hostdb/all](#hostdball-get-example) | GET | [All hosts](#all-hosts) | +| [/hostdb/hosts/___:pubkey___](#hostdbhosts-get-example) | GET | [Hosts](#hosts) | #### /hostdb/active [GET] [(example)](#active-hosts) @@ -166,6 +167,130 @@ any particular order, and the order may change in subsequent calls. } ``` +#### /hostdb/hosts/___:pubkey___ [GET] [(example)](#hosts) + +fetches detailed information about a particular host, including metrics +regarding the score of the host within the database. It should be noted that +each renter uses different metrics for selecting hosts, and that a good score on +in one hostdb does not mean that the host will be successful on the network +overall. + +###### Path Parameters +``` +// The public key of the host. Each public key identifies a single host. +// +// Example Pubkey: ed25519:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef + +:pubkey +``` + +###### JSON Response +```javascript +{ + "entry": { + // true if the host is accepting new contracts. + "acceptingcontracts": true, + + // Maximum number of bytes that the host will allow to be requested by a + // single download request. + "maxdownloadbatchsize": 17825792, + + // Maximum duration in blocks that a host will allow for a file contract. + // The host commits to keeping files for the full duration under the + // threat of facing a large penalty for losing or dropping data before + // the duration is complete. The storage proof window of an incoming file + // contract must end before the current height + maxduration. + // + // There is a block approximately every 10 minutes. + // e.g. 1 day = 144 blocks + "maxduration": 25920, + + // Maximum size in bytes of a single batch of file contract + // revisions. Larger batch sizes allow for higher throughput as there is + // significant communication overhead associated with performing a batch + // upload. + "maxrevisebatchsize": 17825792, + + // Remote address of the host. It can be an IPv4, IPv6, or hostname, + // along with the port. IPv6 addresses are enclosed in square brackets. + "netaddress": "123.456.789.0:9982", + + // Unused storage capacity the host claims it has, in bytes. + "remainingstorage": 35000000000, + + // Smallest amount of data in bytes that can be uploaded or downloaded to + // or from the host. + "sectorsize": 4194304, + + // Total amount of storage capacity the host claims it has, in bytes. + "totalstorage": 35000000000, + + // Address at which the host can be paid when forming file contracts. + "unlockhash": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789ab", + + // A storage proof window is the number of blocks that the host has to + // get a storage proof onto the blockchain. The window size is the + // minimum size of window that the host will accept in a file contract. + "windowsize": 144, + + // Public key used to identify and verify hosts. + "publickey": { + // Algorithm used for signing and verification. Typically "ed25519". + "algorithm": "ed25519", + + // Key used to verify signed host messages. + "key": "RW50cm9weSBpc24ndCB3aGF0IGl0IHVzZWQgdG8gYmU=" + }, + + // The string representation of the full public key, used when calling + // /hostdb/hosts. + "publickeystring": "ed25519:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" + }, + + // A set of scores as determined by the renter. Generally, the host's final + // final score is all of the values multiplied together. Modified renters may + // have additional criteria that they use to judge a host, or may ignore + // certin criteia. In general, these fields should only be used as a loose + // guide for the score of a host, as every renter sees the world differently + // and uses different metrics to evaluate hosts. + "scorebreakdown": { + // The multiplier that gets applied to the host based on how long it has + // been a host. Older hosts typically have a lower penalty. + "ageadjustment": 0.1234, + + // The multiplier that gets applied to the host based on how much + // proof-of-burn the host has performed. More burn causes a linear increase + // in score. + "burnadjustment": 23.456, + + // The multiplier that gets applied to a host based on how much collateral + // the host is offering. More collateral is typically better, though above + // a point it can be detrimental. + "collateraladjustment": 23.456, + + // The multiplier that gets applied to a host based on the host's price. + // Lower prices are almost always better. Below a certain, very low price, + // there is no advantage. + "priceadjustment": 0.1234, + + // The multiplier that gets applied to a host based on how much storage is + // remaining for the host. More storage remaining is better, to a point. + "storageremainingadjustment": 0.1234, + + // The multiplier that gets applied to a host based on the uptime percentage + // of the host. The penalty increases extremely quickly as uptime drops + // below 90%. + "uptimeadjustment": 0.1234, + + // The multiplier that gets applied to a host based on the version of Sia + // that they are running. Versions get penalties if there are known bugs, + // scaling limitations, performance limitations, etc. Generally, the most + // recent version is always the one with the highest score. + "versionadjustment": 0.1234 + } +} +``` + Examples -------- @@ -200,6 +325,7 @@ Examples "algorithm": "ed25519", "key": "RW50cm9weSBpc24ndCB3aGF0IGl0IHVzZWQgdG8gYmU=" } + "publickeystring": "ed25519:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", }, { "acceptingcontracts": true, @@ -216,6 +342,7 @@ Examples "algorithm": "ed25519", "key": "WWVzIEJydWNlIFNjaG5laWVyIGNhbiByZWFkIHRoaXM=" } + "publickeystring": "ed25519:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", } ] } @@ -252,6 +379,7 @@ Examples "algorithm": "ed25519", "key": "SSByYW4gb3V0IG9mIDMyIGNoYXIgbG9uZyBqb2tlcy4=" } + "publickeystring": "ed25519:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", }, { "acceptingcontracts": true, @@ -268,6 +396,7 @@ Examples "algorithm": "ed25519", "key": "RW50cm9weSBpc24ndCB3aGF0IGl0IHVzZWQgdG8gYmU=" } + "publickeystring": "ed25519:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", }, { "acceptingcontracts": true, @@ -284,7 +413,52 @@ Examples "algorithm": "ed25519", "key": "WWVzIEJydWNlIFNjaG5laWVyIGNhbiByZWFkIHRoaXM=" } + "publickeystring": "ed25519:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", } ] } ``` + +#### Hosts + +###### Request +``` +/hostdb/hosts/ed25519:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef +``` + +###### Expected Response Code +``` +200 OK +``` + +###### Example JSON Response +```javascript +{ + "entry": { + "acceptingcontracts": false, + "maxdownloadbatchsize": 17825792, + "maxduration": 25920, + "maxrevisebatchsize": 17825792, + "netaddress": "123.456.789.2:9982", + "remainingstorage": 314, + "sectorsize": 4194304, + "totalstorage": 314159265359, + "unlockhash": "abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789", + "windowsize": 144, + "publickey": { + "algorithm": "ed25519", + "key": "SSByYW4gb3V0IG9mIDMyIGNoYXIgbG9uZyBqb2tlcy4=" + } + "publickeystring": "ed25519:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", + }, + "scorebreakdown": { + "ageadjustment": 0.1234, + "burnadjustment": 0.1234, + "collateraladjustment": 23.456, + "priceadjustment": 0.1234, + "storageremainingadjustment": 0.1234, + "uptimeadjustment": 0.1234, + "versionadjustment": 0.1234, + } +} +``` diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/doc/api/Miner.md b/3rd-party/Sia-v1.1.1-windows-amd64/doc/api/Miner.md similarity index 100% rename from 3rd-party/Sia-v1.1.0-windows-amd64/doc/api/Miner.md rename to 3rd-party/Sia-v1.1.1-windows-amd64/doc/api/Miner.md diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/doc/api/Renter.md b/3rd-party/Sia-v1.1.1-windows-amd64/doc/api/Renter.md similarity index 89% rename from 3rd-party/Sia-v1.1.0-windows-amd64/doc/api/Renter.md rename to 3rd-party/Sia-v1.1.1-windows-amd64/doc/api/Renter.md index 454b210..6efd927 100644 --- a/3rd-party/Sia-v1.1.0-windows-amd64/doc/api/Renter.md +++ b/3rd-party/Sia-v1.1.1-windows-amd64/doc/api/Renter.md @@ -26,6 +26,7 @@ Index | [/renter/contracts](#rentercontracts-get) | GET | | [/renter/downloads](#renterdownloads-get) | GET | | [/renter/files](#renterfiles-get) | GET | +| [/renter/prices](#renter-prices-get) | GET | | [/renter/delete/___*siapath___](#renterdeletesiapath-post) | POST | | [/renter/download/___*siapath___](#renterdownloadsiapath-get) | GET | | [/renter/rename/___*siapath___](#renterrenamesiapath-post) | POST | @@ -129,6 +130,9 @@ returns active contracts. Expired contracts are not included. // Address of the host the file contract was formed with. "netaddress": "12.34.56.78:9", + // A signed transaction containing the most recent contract revision. + "lasttransaction": {}, + // Remaining funds left for the renter to spend on uploads & downloads. "renterfunds": "1234", // hastings @@ -211,6 +215,32 @@ lists the status of all files. } ``` +#### /renter/prices [GET] + +lists the estimated prices of performing various storage and data operations. + +###### JSON Response +```javascript +{ + // The estimated cost of downloading one terabyte of data from the + // network. + "downloadterabyte": "1234", // hastings + + // The estimated cost of forming a set of contracts on the network. This + // cost also applies to the estimated cost of renewing the renter's set of + // contracts. + "formcontracts": "1234", // hastings + + // The estimated cost of storing one terabyte of data on the network for + // a month, including accounting for redundancy. + "storageterabytemonth": "1234", // hastings + + // The estimated cost of uploading one terabyte of data to the network, + // including accounting for redundancy. + "uploadterabyte": "1234", // hastings +} +``` + #### /renter/delete/___*siapath___ [POST] deletes a renter file entry. Does not delete any downloads or original files, diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/doc/api/Wallet.md b/3rd-party/Sia-v1.1.1-windows-amd64/doc/api/Wallet.md similarity index 100% rename from 3rd-party/Sia-v1.1.0-windows-amd64/doc/api/Wallet.md rename to 3rd-party/Sia-v1.1.1-windows-amd64/doc/api/Wallet.md diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/doc/assets/codereview.png b/3rd-party/Sia-v1.1.1-windows-amd64/doc/assets/codereview.png similarity index 100% rename from 3rd-party/Sia-v1.1.0-windows-amd64/doc/assets/codereview.png rename to 3rd-party/Sia-v1.1.1-windows-amd64/doc/assets/codereview.png diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/doc/assets/covertool.png b/3rd-party/Sia-v1.1.1-windows-amd64/doc/assets/covertool.png similarity index 100% rename from 3rd-party/Sia-v1.1.0-windows-amd64/doc/assets/covertool.png rename to 3rd-party/Sia-v1.1.1-windows-amd64/doc/assets/covertool.png diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/doc/whitepaper.tex b/3rd-party/Sia-v1.1.1-windows-amd64/doc/whitepaper.tex similarity index 100% rename from 3rd-party/Sia-v1.1.0-windows-amd64/doc/whitepaper.tex rename to 3rd-party/Sia-v1.1.1-windows-amd64/doc/whitepaper.tex diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/siac.exe b/3rd-party/Sia-v1.1.1-windows-amd64/siac.exe similarity index 52% rename from 3rd-party/Sia-v1.1.0-windows-amd64/siac.exe rename to 3rd-party/Sia-v1.1.1-windows-amd64/siac.exe index 8fcebf0..2e06ec8 100644 Binary files a/3rd-party/Sia-v1.1.0-windows-amd64/siac.exe and b/3rd-party/Sia-v1.1.1-windows-amd64/siac.exe differ diff --git a/3rd-party/Sia-v1.1.1-windows-amd64/siac.exe.sig b/3rd-party/Sia-v1.1.1-windows-amd64/siac.exe.sig new file mode 100644 index 0000000..0e84567 Binary files /dev/null and b/3rd-party/Sia-v1.1.1-windows-amd64/siac.exe.sig differ diff --git a/3rd-party/Sia-v1.1.0-windows-amd64/siad.exe b/3rd-party/Sia-v1.1.1-windows-amd64/siad.exe similarity index 64% rename from 3rd-party/Sia-v1.1.0-windows-amd64/siad.exe rename to 3rd-party/Sia-v1.1.1-windows-amd64/siad.exe index 99549d2..8635cb8 100644 Binary files a/3rd-party/Sia-v1.1.0-windows-amd64/siad.exe and b/3rd-party/Sia-v1.1.1-windows-amd64/siad.exe differ diff --git a/3rd-party/Sia-v1.1.1-windows-amd64/siad.exe.sig b/3rd-party/Sia-v1.1.1-windows-amd64/siad.exe.sig new file mode 100644 index 0000000..91797aa Binary files /dev/null and b/3rd-party/Sia-v1.1.1-windows-amd64/siad.exe.sig differ diff --git a/UnitTests/SiaApiFileTreeTests.cpp b/UnitTests/SiaApiFileTreeTests.cpp index 49e4cf9..937fff0 100644 --- a/UnitTests/SiaApiFileTreeTests.cpp +++ b/UnitTests/SiaApiFileTreeTests.cpp @@ -9,8 +9,6 @@ namespace UnitTests { TEST_CLASS(SiaApiFileTree) { - DAEMON_TEST() - private: const SiaHostConfig _hostConfig = { TEST_SERVER_AND_PORT, TEST_SERVER_VERSION }; @@ -84,7 +82,31 @@ namespace UnitTests ret = ft.Query(L"root/sub1/file*.??t"); Assert::AreEqual((size_t)6, ret.size()); } - }; - DEFINE_DAEMON(SiaApiFileTree); + TEST_METHOD(QueryDirsRoot) + { + CSiaCurl siaCurl; + siaCurl.SetHostConfig(_hostConfig); + + json j = + { + { "files", + { + { { "siapath", "root/sub1/file1.dat" },{ "filesize", 1 },{ "available", true },{ "renewing", true },{ "redundancy", 5 },{ "uploadprogress", 100 },{ "expiration", 60000 } }, + { { "siapath", "root/sub1/file2.dat" },{ "filesize", 2 },{ "available", true },{ "renewing", true },{ "redundancy", 5 },{ "uploadprogress", 100 },{ "expiration", 60000 } }, + { { "siapath", "root/sub2/file3.dat" },{ "filesize", 1 },{ "available", true },{ "renewing", true },{ "redundancy", 5 },{ "uploadprogress", 100 },{ "expiration", 60000 } }, + { { "siapath", "root/sub2/file1.txt" },{ "filesize", 2 },{ "available", true },{ "renewing", true },{ "redundancy", 5 },{ "uploadprogress", 100 },{ "expiration", 60000 } }, + { { "siapath", "root/sub3/file2.txt" },{ "filesize", 2 },{ "available", true },{ "renewing", true },{ "redundancy", 5 },{ "uploadprogress", 100 },{ "expiration", 60000 } }, + { { "siapath", "root/sub3/file3.txt" },{ "filesize", 3 },{ "available", true },{ "renewing", true },{ "redundancy", 5 },{ "uploadprogress", 100 },{ "expiration", 60000 } } + } } + }; + + CSiaDriveConfig driveConfig; + CSiaFileTree ft(siaCurl, &driveConfig); + ft.BuildTree(j); + auto ret = ft.QueryDirectories(L"/"); + Assert::AreEqual((size_t)1, ret.size()); + Assert::AreEqual(L"root", ret[0].c_str()); + } + }; } \ No newline at end of file diff --git a/UnitTests/UnitTestConfig.cpp b/UnitTests/UnitTestConfig.cpp index b97ebe3..59ff4cc 100644 --- a/UnitTests/UnitTestConfig.cpp +++ b/UnitTests/UnitTestConfig.cpp @@ -3,6 +3,7 @@ #include "UnitTestConfig.h" std::uint16_t Daemon::_iter = 0; +static const String SIA_PATH = L"..\\..\\..\\..\\3rd-party\\Sia-v1.1.0-windows-amd64"; Daemon::Daemon() { @@ -27,7 +28,7 @@ void Daemon::Cleanup() BOOL failed = TRUE; String path; path.resize(MAX_PATH + 1); - GetFullPathName((L"\"..\\..\\..\\..\\3rd-party\\Sia-v1.1.0-windows-amd64\\data" + std::to_wstring(_i)).c_str(), MAX_PATH, &path[0], nullptr); + GetFullPathName((SIA_PATH + L"\\data" + std::to_wstring(_i)).c_str(), MAX_PATH, &path[0], nullptr); while (failed) { PROCESS_INFORMATION pi2; @@ -67,11 +68,11 @@ void Daemon::Start() { String path; path.resize(MAX_PATH + 1); - GetFullPathName(L"\"..\\..\\..\\..\\3rd-party\\Sia-v1.1.0-windows-amd64\\", MAX_PATH, &path[0], nullptr); + GetFullPathName((SIA_PATH + L"\\").c_str(), MAX_PATH, &path[0], nullptr); String exec; exec.resize(MAX_PATH + 1); - GetFullPathName(L"\"..\\..\\..\\..\\3rd-party\\Sia-v1.1.0-windows-amd64\\siad.exe", MAX_PATH, &exec[0], nullptr); + GetFullPathName((SIA_PATH + L"\\siad.exe").c_str(), MAX_PATH, &exec[0], nullptr); String szCmdline = L" -d .\\data" + std::to_wstring(_i) + L" --api-addr " + String(TEST_SERVER_HOST) + L":" + std::to_wstring(TEST_SERVER_PORT) + L" --no-bootstrap"; CreateProcess(exec.c_str(), &szCmdline[0], nullptr, nullptr, FALSE, 0, nullptr, path.c_str(), &si, &pi);