Upgrade SIA
This commit is contained in:
BIN
3rd-party/Sia-v1.1.0-windows-amd64/siac.exe.sig
vendored
BIN
3rd-party/Sia-v1.1.0-windows-amd64/siac.exe.sig
vendored
Binary file not shown.
BIN
3rd-party/Sia-v1.1.0-windows-amd64/siad.exe.sig
vendored
BIN
3rd-party/Sia-v1.1.0-windows-amd64/siad.exe.sig
vendored
Binary file not shown.
@@ -1,4 +1,4 @@
|
|||||||
# [](http://sia.tech) v1.1.0 (Andromeda)
|
# [](http://sia.tech) v1.1.1 (Andromeda)
|
||||||
=========
|
=========
|
||||||
|
|
||||||
[](https://travis-ci.org/NebulousLabs/Sia)
|
[](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
|
hosts, anyone with spare storage capacity can join the network and start
|
||||||
making money.
|
making money.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
Traditional cloud storage has a number of shortcomings. Users are limited to a
|
Traditional cloud storage has a number of shortcomings. Users are limited to a
|
||||||
few big-name offerings: Google, Microsoft, Amazon. These companies have little
|
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
|
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:
|
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 Store Data on Sia](https://blog.sia.tech/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)
|
- [How to Become a Sia Host](https://blog.sia.tech/how-to-run-a-host-on-sia-2159ebc4725)
|
||||||
- [Using the Sia API](http://blog.sia.tech/2016/10/20/api-quickstart-guide)
|
- [Using the Sia API](https://blog.sia.tech/api-quickstart-guide-f1d160c05235)
|
||||||
|
|
||||||
|
|
||||||
Usage
|
Usage
|
@@ -155,9 +155,10 @@ returns the version of the Sia daemon currently running.
|
|||||||
Consensus
|
Consensus
|
||||||
---------
|
---------
|
||||||
|
|
||||||
| Route | HTTP verb |
|
| Route | HTTP verb |
|
||||||
| ---------------------------- | --------- |
|
| --------------------------------------------------------------------------- | --------- |
|
||||||
| [/consensus](#consensus-get) | GET |
|
| [/consensus](#consensus-get) | GET |
|
||||||
|
| [/consensus/validate/transactionset](#consensusvalidatetransactionset-post) | POST |
|
||||||
|
|
||||||
For examples and detailed descriptions of request and response parameters,
|
For examples and detailed descriptions of request and response parameters,
|
||||||
refer to [Consensus.md](/doc/api/Consensus.md).
|
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
|
Gateway
|
||||||
-------
|
-------
|
||||||
|
|
||||||
@@ -465,10 +479,11 @@ standard success or error response. See
|
|||||||
Host DB
|
Host DB
|
||||||
-------
|
-------
|
||||||
|
|
||||||
| Request | HTTP Verb |
|
| Request | HTTP Verb |
|
||||||
| ------------------------------------------- | --------- |
|
| ------------------------------------------------------- | --------- |
|
||||||
| [/hostdb/active](#hostdbactive-get-example) | GET |
|
| [/hostdb/active](#hostdbactive-get-example) | GET |
|
||||||
| [/hostdb/all](#hostdball-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,
|
For examples and detailed descriptions of request and response parameters,
|
||||||
refer to [HostDB.md](/doc/api/HostDB.md).
|
refer to [HostDB.md](/doc/api/HostDB.md).
|
||||||
@@ -501,6 +516,7 @@ numhosts // Optional
|
|||||||
"algorithm": "ed25519",
|
"algorithm": "ed25519",
|
||||||
"key": "RW50cm9weSBpc24ndCB3aGF0IGl0IHVzZWQgdG8gYmU="
|
"key": "RW50cm9weSBpc24ndCB3aGF0IGl0IHVzZWQgdG8gYmU="
|
||||||
}
|
}
|
||||||
|
"publickeystring": "ed25519:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -530,11 +546,58 @@ any particular order, and the order may change in subsequent calls.
|
|||||||
"algorithm": "ed25519",
|
"algorithm": "ed25519",
|
||||||
"key": "RW50cm9weSBpc24ndCB3aGF0IGl0IHVzZWQgdG8gYmU="
|
"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
|
Miner
|
||||||
-----
|
-----
|
||||||
|
|
||||||
@@ -614,6 +677,7 @@ Renter
|
|||||||
| [/renter/contracts](#rentercontracts-get) | GET |
|
| [/renter/contracts](#rentercontracts-get) | GET |
|
||||||
| [/renter/downloads](#renterdownloads-get) | GET |
|
| [/renter/downloads](#renterdownloads-get) | GET |
|
||||||
| [/renter/files](#renterfiles-get) | GET |
|
| [/renter/files](#renterfiles-get) | GET |
|
||||||
|
| [/renter/prices](#renter-prices-get) | GET |
|
||||||
| [/renter/delete/___*siapath___](#renterdeletesiapath-post) | POST |
|
| [/renter/delete/___*siapath___](#renterdeletesiapath-post) | POST |
|
||||||
| [/renter/download/___*siapath___](#renterdownloadsiapath-get) | GET |
|
| [/renter/download/___*siapath___](#renterdownloadsiapath-get) | GET |
|
||||||
| [/renter/rename/___*siapath___](#renterrenamesiapath-post) | POST |
|
| [/renter/rename/___*siapath___](#renterrenamesiapath-post) | POST |
|
||||||
@@ -672,11 +736,12 @@ returns active contracts. Expired contracts are not included.
|
|||||||
{
|
{
|
||||||
"contracts": [
|
"contracts": [
|
||||||
{
|
{
|
||||||
"endheight": 50000, // block height
|
"endheight": 50000, // block height
|
||||||
"id": "1234567890abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
|
"id": "1234567890abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
|
||||||
"netaddress": "12.34.56.78:9",
|
"lasttransaction": {}, // types.Transaction
|
||||||
"renterfunds": "1234", // hastings
|
"netaddress": "12.34.56.78:9",
|
||||||
"size": 8192 // bytes
|
"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]
|
#### /renter/delete/___*siapath___ [POST]
|
||||||
|
|
||||||
deletes a renter file entry. Does not delete any downloads or original files,
|
deletes a renter file entry. Does not delete any downloads or original files,
|
@@ -190,7 +190,7 @@ File Contract Revision
|
|||||||
|
|
||||||
8. The renter signs the revision and sends the signature to the host.
|
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
|
parties submit the new revision to the transaction pool. The connection
|
||||||
deadline is reset to 600 seconds (unless the maximum deadline has been
|
deadline is reset to 600 seconds (unless the maximum deadline has been
|
||||||
reached), and the loop restarts.
|
reached), and the loop restarts.
|
@@ -20,9 +20,10 @@ endpoint returns information about the state of the blockchain.
|
|||||||
Index
|
Index
|
||||||
-----
|
-----
|
||||||
|
|
||||||
| Route | HTTP verb |
|
| Route | HTTP verb |
|
||||||
| ---------------------------- | --------- |
|
| --------------------------------------------------------------------------- | --------- |
|
||||||
| [/consensus](#consensus-get) | GET |
|
| [/consensus](#consensus-get) | GET |
|
||||||
|
| [/consensus/validate/transactionset](#consensusvalidatetransactionset-post) | POST |
|
||||||
|
|
||||||
#### /consensus [GET]
|
#### /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]
|
"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).
|
@@ -18,10 +18,11 @@ identifies hosts by their public key and keeps track of metrics such as price.
|
|||||||
Index
|
Index
|
||||||
-----
|
-----
|
||||||
|
|
||||||
| Request | HTTP Verb | Examples |
|
| Request | HTTP Verb | Examples |
|
||||||
| ------------------------------------------- | --------- | ----------------------------- |
|
| ------------------------------------------------------- | --------- | ----------------------------- |
|
||||||
| [/hostdb/active](#hostdbactive-get-example) | GET | [Active hosts](#active-hosts) |
|
| [/hostdb/active](#hostdbactive-get-example) | GET | [Active hosts](#active-hosts) |
|
||||||
| [/hostdb/all](#hostdball-get-example) | GET | [All hosts](#all-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)
|
#### /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
|
Examples
|
||||||
--------
|
--------
|
||||||
|
|
||||||
@@ -200,6 +325,7 @@ Examples
|
|||||||
"algorithm": "ed25519",
|
"algorithm": "ed25519",
|
||||||
"key": "RW50cm9weSBpc24ndCB3aGF0IGl0IHVzZWQgdG8gYmU="
|
"key": "RW50cm9weSBpc24ndCB3aGF0IGl0IHVzZWQgdG8gYmU="
|
||||||
}
|
}
|
||||||
|
"publickeystring": "ed25519:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"acceptingcontracts": true,
|
"acceptingcontracts": true,
|
||||||
@@ -216,6 +342,7 @@ Examples
|
|||||||
"algorithm": "ed25519",
|
"algorithm": "ed25519",
|
||||||
"key": "WWVzIEJydWNlIFNjaG5laWVyIGNhbiByZWFkIHRoaXM="
|
"key": "WWVzIEJydWNlIFNjaG5laWVyIGNhbiByZWFkIHRoaXM="
|
||||||
}
|
}
|
||||||
|
"publickeystring": "ed25519:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -252,6 +379,7 @@ Examples
|
|||||||
"algorithm": "ed25519",
|
"algorithm": "ed25519",
|
||||||
"key": "SSByYW4gb3V0IG9mIDMyIGNoYXIgbG9uZyBqb2tlcy4="
|
"key": "SSByYW4gb3V0IG9mIDMyIGNoYXIgbG9uZyBqb2tlcy4="
|
||||||
}
|
}
|
||||||
|
"publickeystring": "ed25519:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"acceptingcontracts": true,
|
"acceptingcontracts": true,
|
||||||
@@ -268,6 +396,7 @@ Examples
|
|||||||
"algorithm": "ed25519",
|
"algorithm": "ed25519",
|
||||||
"key": "RW50cm9weSBpc24ndCB3aGF0IGl0IHVzZWQgdG8gYmU="
|
"key": "RW50cm9weSBpc24ndCB3aGF0IGl0IHVzZWQgdG8gYmU="
|
||||||
}
|
}
|
||||||
|
"publickeystring": "ed25519:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"acceptingcontracts": true,
|
"acceptingcontracts": true,
|
||||||
@@ -284,7 +413,52 @@ Examples
|
|||||||
"algorithm": "ed25519",
|
"algorithm": "ed25519",
|
||||||
"key": "WWVzIEJydWNlIFNjaG5laWVyIGNhbiByZWFkIHRoaXM="
|
"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,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
@@ -26,6 +26,7 @@ Index
|
|||||||
| [/renter/contracts](#rentercontracts-get) | GET |
|
| [/renter/contracts](#rentercontracts-get) | GET |
|
||||||
| [/renter/downloads](#renterdownloads-get) | GET |
|
| [/renter/downloads](#renterdownloads-get) | GET |
|
||||||
| [/renter/files](#renterfiles-get) | GET |
|
| [/renter/files](#renterfiles-get) | GET |
|
||||||
|
| [/renter/prices](#renter-prices-get) | GET |
|
||||||
| [/renter/delete/___*siapath___](#renterdeletesiapath-post) | POST |
|
| [/renter/delete/___*siapath___](#renterdeletesiapath-post) | POST |
|
||||||
| [/renter/download/___*siapath___](#renterdownloadsiapath-get) | GET |
|
| [/renter/download/___*siapath___](#renterdownloadsiapath-get) | GET |
|
||||||
| [/renter/rename/___*siapath___](#renterrenamesiapath-post) | POST |
|
| [/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.
|
// Address of the host the file contract was formed with.
|
||||||
"netaddress": "12.34.56.78:9",
|
"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.
|
// Remaining funds left for the renter to spend on uploads & downloads.
|
||||||
"renterfunds": "1234", // hastings
|
"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]
|
#### /renter/delete/___*siapath___ [POST]
|
||||||
|
|
||||||
deletes a renter file entry. Does not delete any downloads or original files,
|
deletes a renter file entry. Does not delete any downloads or original files,
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 86 KiB |
Binary file not shown.
BIN
3rd-party/Sia-v1.1.1-windows-amd64/siac.exe.sig
vendored
Normal file
BIN
3rd-party/Sia-v1.1.1-windows-amd64/siac.exe.sig
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
3rd-party/Sia-v1.1.1-windows-amd64/siad.exe.sig
vendored
Normal file
BIN
3rd-party/Sia-v1.1.1-windows-amd64/siad.exe.sig
vendored
Normal file
Binary file not shown.
@@ -9,8 +9,6 @@ namespace UnitTests
|
|||||||
{
|
{
|
||||||
TEST_CLASS(SiaApiFileTree)
|
TEST_CLASS(SiaApiFileTree)
|
||||||
{
|
{
|
||||||
DAEMON_TEST()
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const SiaHostConfig _hostConfig = { TEST_SERVER_AND_PORT, TEST_SERVER_VERSION };
|
const SiaHostConfig _hostConfig = { TEST_SERVER_AND_PORT, TEST_SERVER_VERSION };
|
||||||
|
|
||||||
@@ -84,7 +82,31 @@ namespace UnitTests
|
|||||||
ret = ft.Query(L"root/sub1/file*.??t");
|
ret = ft.Query(L"root/sub1/file*.??t");
|
||||||
Assert::AreEqual((size_t)6, ret.size());
|
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());
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
@@ -3,6 +3,7 @@
|
|||||||
#include "UnitTestConfig.h"
|
#include "UnitTestConfig.h"
|
||||||
|
|
||||||
std::uint16_t Daemon::_iter = 0;
|
std::uint16_t Daemon::_iter = 0;
|
||||||
|
static const String SIA_PATH = L"..\\..\\..\\..\\3rd-party\\Sia-v1.1.0-windows-amd64";
|
||||||
|
|
||||||
Daemon::Daemon()
|
Daemon::Daemon()
|
||||||
{
|
{
|
||||||
@@ -27,7 +28,7 @@ void Daemon::Cleanup()
|
|||||||
BOOL failed = TRUE;
|
BOOL failed = TRUE;
|
||||||
String path;
|
String path;
|
||||||
path.resize(MAX_PATH + 1);
|
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)
|
while (failed)
|
||||||
{
|
{
|
||||||
PROCESS_INFORMATION pi2;
|
PROCESS_INFORMATION pi2;
|
||||||
@@ -67,11 +68,11 @@ void Daemon::Start()
|
|||||||
{
|
{
|
||||||
String path;
|
String path;
|
||||||
path.resize(MAX_PATH + 1);
|
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;
|
String exec;
|
||||||
exec.resize(MAX_PATH + 1);
|
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";
|
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);
|
CreateProcess(exec.c_str(), &szCmdline[0], nullptr, nullptr, FALSE, 0, nullptr, path.c_str(), &si, &pi);
|
||||||
|
Reference in New Issue
Block a user