README.md in zold-0.29.27 vs README.md in zold-0.29.28

- old
+ new

@@ -13,24 +13,43 @@ [![Gem Version](https://badge.fury.io/rb/zold.svg)](http://badge.fury.io/rb/zold) [![Test Coverage](https://img.shields.io/codecov/c/github/zold-io/zold.svg)](https://codecov.io/github/zold-io/zold?branch=master) [![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](http://rubydoc.info/github/zold-io/zold/master/frames) [![Maintainability](https://api.codeclimate.com/v1/badges/2861728929db934eb376/maintainability)](https://codeclimate.com/github/zold-io/zold/maintainability) +[![Hits-of-Code](https://hitsofcode.com/github/zold-io/zold)](https://hitsofcode.com/github/zold-io/zold) -**NOTICE**: It's an experiment and a very early draft! Please, feel free to -submit your ideas and/or pull requests. +To understand what Zold cryptocurrency is about you may want +to watch [this video](https://youtu.be/5A9uBwMow0M) first. Then, you may +want to read [this blog](https://blog.zold.io/2018/07/08/mission.html) post. +Then, you have to read the [Green Paper](https://papers.zold.io/green-paper.pdf) +(just four pages). In a nutshell, Zold is a cryptocurrency with the following +features: -Here is the [White Paper](https://papers.zold.io/wp.pdf). + * No Blockchain + * No General Ledger + * Very fast, because de-centralized + * 100 times cheaper than Bitcoin + * Proof-of-work + * Unique consensus protocol + * Pre-mined with total capacity of 2 billion ZLD + * Anonymous + * Written in Ruby +More details you can find in the [White Paper](https://papers.zold.io/wp.pdf). + +You can also find us at the [Bitcointalk](https://bitcointalk.org/index.php?topic=5095078) forum. + Join our [Telegram group](https://t.me/zold_io) to discuss it all live. The license is [MIT](https://github.com/zold-io/zold/blob/master/LICENSE.txt). -The web wallet is here: [wts.zold.io](https://wts.zold.io). - ## How to Use +You can try the web wallet [here](https://wts.zold.io), but the best way +to use Zold is through the command line tool, which has all the features +and should remind you Git, if you are a programmer. + First, install [Ruby 2.3+](https://www.ruby-lang.org/en/documentation/installation/), [Rubygems](https://rubygems.org/pages/download), and the [gem](https://rubygems.org/gems/zold). Here is [how](https://github.com/zold-io/zold/blob/master/INSTALL.md). @@ -188,11 +207,11 @@ > Is there a way to increase the number of threads in order to maximize computing power of multiple core machines? Yes, you can use `--threads` command line argument for your node and the number of threads will be as big as you wish. -## JSON Details +## Front-end JSON Details When you open up the front web page of your node, you will see a JSON document with a lot of technical details. Here is the explanation of the majority of them: `version` is the current version of the running software. @@ -268,9 +287,91 @@ To be continued... `date` is the current date and time on the server. `hours_alive` is the time in hours your server is alive without a reboot. + +## HTTP RESTful API + +Well, maybe it's not purely RESTful, but each node has a simple +set of HTTP entry points, which you can use to retrieve information +about wallets, node status, log details, and some other things. Here +is a more or less complete list of them: + + * `GET /`: returns the JSON explained above + + * `GET /score`: returns the text presentation of the current Score + + * `GET /version`: returns the version of the software + + * `GET /protocol`: returns the protocol ID + + * `GET /wallet/ID`: returns the JSON with wallet details + + * `GET /wallet/ID/balance`: returns wallet balance in zents (text/plain) + + * `GET /wallet/ID/key`: returns wallet public RSA key + + * `GET /wallet/ID/mtime`: returns ISO-8601 time of wallet file modification + + * `GET /wallet/ID/size`: returns the size of the wallet file in bytes + + * `GET /wallet/ID/age`: returns the age of the wallet, in seconds + + * `GET /wallet/ID/txns`: returns the amount of transactions in the wallet + + * `GET /wallet/ID/debt`: returns the tax debt of the wallet in zents + + * `GET /wallet/ID/digest`: returns SHA-256 digest of the wallet file + + * `GET /wallet/ID/mnemo`: returns the mnemo short string of the wallet + + * `GET /wallet/ID/txns.json`: returns the full list of transactions in the wallet in JSON document + + * `GET /wallet/ID.txt`: returns the text presentation of the wallet + + * `GET /wallet/ID.html`: returns the HTML presentation of the wallet + + * `GET /wallet/ID.bin`: returns the entire wallet file + + * `GET /wallet/ID/copies`: returns the list of copies of the wallet + + * `GET /wallet/ID/copy/NAME`: returns the entire content of a single copy of the wallet + + * `PUT /wallet/ID`: accepts a new content of the wallet, in order to + modify the one stored on the server (PUSH operation) + + * `GET /wallets`: returns the list of all wallets maintained by the node, + in plain text, separated by EOL + + * `GET /remotes`: returns the list of remote nodes in JSON + + * `GET /ledger`: returns the list of recently visible transactions + + * `GET /ledger.json`: returns the list of recently visible transactions, in JSON + +There are a few other entry points, which exist most for debugging purposes, +they may not be supported by alternative implementations of the node software: + + * `GET /pid`: returns the process ID of the software + + * `GET /trace`: returns the entire log of the node + + * `GET /farm`: returns the statistics of the Farm + + * `GET /metronome`: returns the statistics of the Metronome + + * `GET /threads`: returns the statistics of all Ruby threads + + * `GET /ps`: returns the statistics of all currently running Unix processes + + * `GET /queue`: returns the statistics of the node queue + + * `GET /journal`: returns the journal, in HTML + + * `GET /journal/item?id=ID`: returns the content of a single journal entry + +There could be other entry points, not documented here. ## SDK Here is how you use Zold SDK from your Ruby app. First, you should add `zold` [gem](https://rubygems.org/gems/zold)