README.md in zold-0.6 vs README.md in zold-0.6.1

- old
+ new

@@ -15,25 +15,10 @@ [![Maintainability](https://api.codeclimate.com/v1/badges/7489c1d2bacde40ffc09/maintainability)](https://codeclimate.com/github/zerocracy/zold/maintainability) **NOTICE**: It's an experiment and a very early draft! Please, feel free to submit your ideas or pull requests. -ZOLD principles include: - - * The entire code base is open source; - * There is no mining, the only way to get ZOLD is to receive it from someone else; - * Only 2<sup>63</sup> numerals (no fractions) can technically be issued; - * The first wallet belongs to the issuer and may have a negative balance; - * A wallet is a plain text file; - * There is no central ledger, each wallet has its own personal ledger; - * Each transaction in the ledger is confirmed by [RSA](https://simple.wikipedia.org/wiki/RSA_%28algorithm%29) encryption; - * The network of communicating nodes maintains wallets of users; - * Anyone can add a node to the network. - -1 ZLD by convention equals to 2<sup>24</sup> (16,777,216) _zents_. -Thus, the technical capacity of the currency is 549,755,813,888 ZLD (half a trillion). - ## How to Use Install Ruby 2.2+, [Rubygems](https://rubygems.org/pages/download), and then run: ```bash @@ -42,24 +27,13 @@ ``` Then, either run it as a node: ```bash -$ zold start +$ zold node ``` -Or do one of the following: - - * `zold remote` manipulates the list off remote nodes; - * `zold create` creates a new wallet (you have to provide PGP keys); - * `zold fetch` downloads all copies of the wallet from the network; - * `zold merge` merges all copies of the wallet into the local one; - * `zold pull` first `fetch`, then `merge`; - * `zold show` prints out all known details of a wallet (incl. its balance); - * `zold pay` creates a new transaction; - * `zold push` pushes a wallet to the network. - For more options and commands just run: ```bash $ zold --help ``` @@ -68,63 +42,9 @@ yet, you can run: ```bash $ ssh-keygen -t rsa -b 4096 ``` - -## Glossary - -**Node** is an HTTP server with a RESTful API, a maintainer of wallets -and a command line Ruby gem [`zold`](https://rubygems.org/gems/zold). - -**Network** is a set of all nodes available online. - -**Score** is the amount of "hash sufficies" a node has at any given moment of time. - -**Wallet** is a text file with a ledger of all transactions inside. - -**Transaction** is a money transferring operation between two wallets. - -**MSS** (minimum summary score) is a summary of all scores required to trust a wallet. - -## Score - -Each node calculates its own score. First, it takes the current timestamp -in UTC [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), -for example `2017-07-19T21:24:51Z ` (with a trailing space). Then, it appends -its own host name or IP address to it, space, TCP port number, and a space. -Then, it attempts to append any -arbitrary text (has to match `[a-zA-Z0-9]+`) to the end of it and to calculate SHA-256 of the text -in the hexadecimal format, for example: - -``` -Input: "2017-07-19T21:24:51Z b1.zold.io 4096 the-suffix" -SHA-256: "eba36e52e1ee674d198f486e07c8496853ffc8879e7fe25329523177646a96a0" -``` - -The node attempts to try different sufficies until one of them produces -SHA-256 hash that ends with `0000000` (seven zeros). For example, this -suffix `11edb424c` works (it took 212 minutes to find it on 2.3GHz Intel Core i7): - -``` -Input: "2017-07-19T21:24:51Z b1.zold.io 4096 11edb424c" -SHA-256: "34f48e0eee1ed12ad74cb39418f2f6e7442a776a7b6182697957650e00000000" -``` - -When the first suffix is found, the score of the node is 1. Then, to -increase the score by one, the node has to find the next suffix, which -can be added to the first 20 characters of the previous hash -in order to obtain a new hash with trailing zeros, for example: - -``` -Input: "34f48e0eee1ed12ad74c " -SHA-256: "..." -``` - -And so on. - -The score is valid only when the starting time point is earlier than -current time, but not earlier than 24 hours ago. ## Operations ### Remote