Merge branch 'main' of github.com:PRavaga/zano-docs into main

This commit is contained in:
PRavaga 2023-09-07 00:17:00 +04:00
commit 59de02001f
No known key found for this signature in database
GPG key ID: 2A5FC2B63150943E
85 changed files with 1491 additions and 0 deletions

View file

@ -0,0 +1,3 @@
{
"label": "Exchange Guidlines"
}

View file

@ -0,0 +1,52 @@
# Exchange FAQ
Frequently asked questions for exchanges and services
### Why don't you compile your code and just send binaries to us?
Our project is open source and we believe this would be insecurity in its extreme form.
### Which OS is recommended?
Ubuntu 18.04 LTS or Ubuntu 16.04 LTS
### We got "internal compiler error: Killed"
You ran out of RAM. Try to limit make job slots by specifying `make -j 1`
### We got compiler/linker error mentioning Boost
Make sure you have built the recommended version of Boost manually (via `./bootstrap.sh`, `./b2`). Please refer to our [github page](https://github.com/hyle-team/zano) for reference.
### Wallet RPC is not working. We got "Core is busy" in logs/responses
Make sure the daemon is synchronized with the network. It may take up to few hours when running for the fist time. When it synchronized you'll stop seeing yellow "sync progress" messages in daemon logs.
### How to validate an address?
To validate an address you can use [split_integrated_address](https://docs.zano.org/reference/split_integrated_address). It also works with standard addresses (non integrated one)
### How to get all integrated addresses on a wallet?
A wallet does not store all integrated addresses, thus it is impossible. Integrated address is just your wallet address PLUS encoded hex payment id you provided packed together.
As you can provide ANY payment id you could imagine, you can generate unlimited number of integrated addresses for a wallet.
### Can we use random payment id when generating integrated address for a user?
Yes, It is highly recommended to use randomly generated payment id's to identify each of your users.
### What transaction fee should we specify in RPCs?
Minimum transaction fee is 0.01 ZANO.
### What are "pub_keys" that we see in transaction output via explorer?
ach output in CryptoNote-like currency has it's own public key (i.e. one-time destination key) that cannot be linked with the address or other outputs. The owner of the output calculates the private key when he spends it. Please, refer to [the CryptoNote whitepaper](https://cryptonote.org/whitepaper.pdf) page 7 for details.
### We got "Invalid params" RPC response
Make sure you pass amounts as integers not strings.
### We can't see our own transfer when filtering by payment id with get_bulk_payments or get_payments RPC calls
Make sure you're not sending coins to yourself (from an address to the very same address). Coins which were sent that way will safely reach their destination (and the balances will be correct) but such a transfer won't be seen when you filer transfers by payment id via [get_bulk_payments](https://docs.zano.org/reference/get_bulk_payments) or [get_payments](https://docs.zano.org/reference/get_payments-2).

View file

@ -0,0 +1,10 @@
# Integrated addresses for exchanges
### Starting the daemon and the wallet application as RPC server
Unlike Bitcoin, CryptoNote family coins have different, more effective approach on how to handle user deposits.
An exchange generates only one address for receiving coins and all users send coins to that address. To distinguish different deposits from different users the exchange generates random identifier (called **payment ID**) for each one and a user attaches this payment ID to his transaction while sending. Upon receiving, the exchange can extract payment ID and thus identify the user.<br/>
In original CryptoNote there were two separate things: exchange deposit address (the same for all users) and payment ID (unique for all users). Later, for user convenience and to avoid missing payment ID we combined them together into one thing, called **integrated address**. So nowadays modern exchanges usually give to a user an integrated address for depositing instead of pair of standard deposit address and a payment ID.
For more information on how to handle integrated addresses, please refer to RPCs [make_integrated_address](https://docs.zano.org/reference/make_integrated_address-1) and [split_integrated_address](https://docs.zano.org/reference/split_integrated_address-1) below.

View file

@ -0,0 +1,112 @@
# Signing transactions offline (cold-signing process)
### Introduction
In order to provide more security it's possible to sign transactions offline using a dedicated wallet application instance e.g. running in a secure environment.
![alt signing-transactions-offline-introduction](../../../static/img/signing-transactions-offline-introduction.png "signing-transactions-offline-introduction")
Zano as a CryptoNote coin uses two key pairs (4 keys) per wallet: view key (secret+public) and spend key (secret+public)
So-called "hot wallet" (or watch-only wallet) uses only view secret key. This allows it to distinguish its transactions among others in the blockchain. To spend coins a wallet needs to spend secret key. It is required to sign a tx. Watch-only wallet doesn't have access to spend secret key and thus it can't spend coins.
If someone has your spend secret key, he can spend your coins. Master keys should be handled with care.
### Setup
1. In a secure environment create a new master wallet:
i. Start simplewallet to generate master wallet:
`simplewallet --generate-new-wallet=zano_wallet_master`(zano_wallet_master is wallet's filename and can be changed freely)<br/>
ii. Type in a password when asked. An empty new wallet is created.<br/>
iii. Open new wallet one again: `simplewallet --offline-mode --wallet-file=zano_wallet_master`<br/>
iv. Type the following command into wallet's console: `save_watch_only zano_wallet_watch_only WATCH_PASSWORD` where WATCH_PASSWORD is the password for a watch-only wallet. You should see: `Watch-only wallet has been stored to zano_wallet_watch_only`<br/>
v. Type `exit` to quit simplewallet.<br/>
2. Copy zano_wallet_watch_only file from the secure environment to your production environment where daemons and the hot wallet is supposed to be run.
:::caution NOTE: zano_wallet_master file contains master wallet private keys! You may want it to never leave secure environment.
:::
3. In the production environment start the daemon. Let it sync with the network if running for the first time and make sure it gets synchronized. Then, start the watch-only wallet: `simplewallet --wallet-file=zano_wallet_watch_only --password=WATCH_PASSWORD --rpc-bind-ip=RPC_IP --rpc-bind-port=RPC_PORT --daemon-address=DEAMON_ADDR:DAEMON_PORT --log-file=LOG_FILE_NAME` (see also the Introduction; for the first run you may add `--log-level=0` to avoid too verbose messages, for subsequent runs you may want to use `--log-level=1` or `--log-level=2`)
The setup is complete.
### Example of a transaction cold-signing
In order to sign a transaction, follow these steps:
4. Create a transaction using RPC [transfer](https://docs.zano.org/reference#transfer-2).
Because of using watch-only wallet keys for this instance of wallet application (please note passing **zano_wallet_watch_only** in i.3) a transaction will not be signed and broadcasted. Instead, an unsigned transaction will be prepared and returned back to the caller via RPC.
RPC example (please, see also [transfer](https://docs.zano.org/reference#transfer-2) RPC description in ["List of RPC calls"](https://docs.zano.org/reference/using-the-zano-api-guide#getbalance2) section above):
```shell
$ curl http://127.0.0.1:12233/json_rpc -s -H 'content-type:application/json;' --data-binary '{"jsonrpc":"2.0","id":"0","method":"transfer", "params":{ "destinations":[{"amount":1000000000000, "address":"ZxCb5oL6RTEffiH9gj7w3SYUeQ5s53yUBFGoyGChaqpQdud2uNUaA936Q2ngcEouvmgA48WMZQyv41R2ASstyYHo2Kzeoh7GA"}], "fee":10000000000, "mixin":0, "unlock_time":0 }}'
```
```json
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"tx_hash": "",
"tx_size": 0,
"tx_unsigned_hex": "00-LONG-HEX-00"
}
}
```
Unsigned transaction data retrieved in `tx_unsigned_hex` field should be passed to a secure environment for cold-signing by the master wallet.
5. Run master wallet in RPC mode within a secure environment: `simplewallet --wallet-file=zano_wallet_master --offline-mode --rpc-bind-port=RPC_PORT --rpc-bind-ip=RPC_IP`
6. Using RPC [sing_transfer](https://docs.zano.org/reference/using-the-zano-api-guide#sign_transfer) sing the transaction using the master wallet.
RPC example:
```shell
$ curl http://127.0.0.1:12233/json_rpc -s -H 'content-type:application/json;' --data-binary '{"jsonrpc":"2.0","id":"0","method":"sign_transfer", "params":{ "tx_unsigned_hex" : "00-LONG-HEX-00" }'
```
```json
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"tx_hash": "864dc39fe1f1440651a9c2cc0585ba2f91498778bae86583d37fcc0b251aea4a",
"tx_signed_hex": "00-LONG-HEX-00"
}
}
```
A signed transaction retrieved in `tx_signed_hex` field should be passed back to the production environment to be broadcasted by the watch-only hot wallet.
7. Using RPC [submit_transfer](https://docs.zano.org/reference/using-the-zano-api-guide#submit_transfer) broadcast the transaction using watch-only wallet.
RPC example:
```shell
$ curl http://127.0.0.1:12233/json_rpc -s -H 'content-type:application/json;' --data-binary '{"jsonrpc":"2.0","id":"0","method":"submit_transfer", "params":{ "tx_signed_hex": "00-LONG-HASH-00" }'
```
```json
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"tx_hash": "864dc39fe1f1440651a9c2cc0585ba2f91498778bae86583d37fcc0b251aea4a"
}
}
```
The transaction is successfully broadcasted over the network.
### Important note on watch-only wallets
Watch-only wallet is not able naturally to calculate a balance using only a tracking view secret key and an access to the blockchain. This happens because it can't distinguish spending its own coins as it requires knowing key images for own coins, which are unknown, as key image calculation requires spend secret key.
To workaround this difficulty watch-only wallet extracts and stores key images for own coins each time a signed transaction from a cold wallet is broadcasted using [submit_transfer](https://docs.zano.org/reference/using-the-zano-api-guide#submit_transfer) RPC. This data is stored locally and it is required to calculate wallet's balance in case of full wallet resync.
It's important to keep this data safe and not to delete watch-only wallet's files. Otherwise, watch-only wallet won't be able to calculate a balance correctly and cold wallet may be required to be connected online for recovering funds.

View file

@ -0,0 +1,29 @@
# Starting the daemon and the wallet application as RPC server
### Starting the daemon and the wallet application as RPC server
Zano command-line wallet application (simplewallet) can be run in RPC server mode. In this mode it can be controlled by RPC calls via HTTP and be used as a back-end for an arbitrary service.
Starting the wallet in RPC server mode:
1. Run zanod (the daemon application).
2. Run simplewallet with the following options:
```shell
simplewallet --wallet-file PATH_TO_WALLET_FILE --password PASSWORD
--rpc-bind-ip RPC_IP --rpc-bind-port RPC_PORT
--daemon-address DEAMON_ADDR:DAEMON_PORT --log-file LOG_FILE_NAME
```
where:
**PATH_TO_WALLET_FILE** — path to an existing wallet file (should be created beforehand using --generate-new-wallet command);<br/>
**PASSWORD** — wallet password;<br/>
**RPC_IP** — IP address to bind RPC server to (127.0.0.1 will be used if not specified);<br/>
**RPC_PORT** — TCP port for RPC server;<br/>
**DEAMON_ADDR:DAEMON_PORT** — daemon address and port (may be omitted if the daemon is running on the same machine with the default settings);<br/>
**LOG_FILE_NAME** — path and filename of simplewallet log file.<br/>
Examples in List of Wallet RPCs are given with assumption that the wallet application is running in RPC server mode and listening at 127.0.0.1:12233.
All amounts and balances are represented as unsigned integers and measured in atomic units — the smallest fraction of a coin. One coin equals 10^12 atomic units.

View file

@ -0,0 +1,3 @@
{
"label": "Marketplace"
}

View file

@ -0,0 +1,37 @@
# Marketplace API guide
The Zano blockchain will act as a platform for building distributed services. One of those services is our Marketplace, offering out of the box blockchain solutions.
With the Zano Marketplace you create, update, or deactivate offers. Offers contain information about a user who is selling or buying something. As soon as an offer is published in the blockchain it is visible to everyone. This feature allows developers to build a decentralized online stores, based on offers and escrow contracts.
The Zano daemon has built-in service, that can show all active offers from the blockchain as multi indexed set with diverse filtering options. These offers are active for 2 weeks, after that, an offer needs to be re-posted.
### Posting and updating offers.
To be able to post/update offers you have to work with **wallet API**, since every operation over the offers has it's fee.
**Posting offer.**
To post an offer should be used [marketplace_push_offer](https://docs.zano.org/reference/marketplace_push_offer) API method. This method takes as a parameter ["Offer" structure](https://docs.zano.org/reference/using-the-zano-api-guide#marketplace-offer-structure-and-description) and sends it with the carrier transaction to the blockchain. As soon as transaction got 10 confirmations it will appear in [search API](https://docs.zano.org/reference/get_offers_ex) of the daemon.
**Updating offer.**
It's possible to update an offer if needed to make changes in any of the offer's fields. When wallet create a carrier transaction with updating offer, it includes proof that this update created by the owner of the original offer transaction. To perform update should be used [marketplace_push_update_offer](https://docs.zano.org/reference/marketplace_push_update_offer) wallet API method. In parameters should be specified original offer post transaction ID as a reference, and full details of the new updated version of the offer.
Update procedure may be repeated many times, every time reference transaction id should be used from last update operation or from original posting transaction if there were no updates before.
**Cancelling offer.**
It's also possible to mark an offer as inactive by calling [marketplace_cancel_offer](https://docs.zano.org/reference/marketplace_cancel_offer). This API call confirm the authority of the owner same was as [marketplace_push_update_offer](https://docs.zano.org/reference/marketplace_push_update_offer), so the caller must provide original offer's transaction id as a reference. After carrier transaction with this command is confirmed offer is no longer returned by [search API](https://docs.zano.org/reference/get_offers_ex) of the daemon.
**Enumerating my offer**
To make easier management of the offers that belong to a particular wallet, we introduced [marketplace_get_offers_ex](https://docs.zano.org/reference/marketplace_get_offers_ex) API. This API return list of the active offers that had been posted from the current wallet. Diverse set of filtering and ordering options explained in documentation to this method.
### Reading offers from blockchain.
First of all, to activate Marketplace service in the daemon. By default, this service is deactivated to avoid performance waste.
To activate this service you have to run daemon with **"--enable-offers-service"** command line option.
To fetch active offers from blockchain should be used [marketplace_global_get_offers_ex](https://docs.zano.org/reference/get_offers_ex) method. This method based on the [filter structure](https://docs.zano.org/reference/using-the-zano-api-guide#marketplace-filter-structure-and-description), which provide diverse set of options for filtering and ordering offers.
If you want basically to enumerate all offers in the blockchain you may want to use **offset** and **limit** options from filter. By adding **limit** amount to **offset** in every next method call, you can subsequently fetch all offers from blockchain, even if there are millions of it.

View file

@ -0,0 +1,3 @@
{
"label": "Testnet Resources"
}

View file

@ -0,0 +1,146 @@
# How to launch a confidential asset
:::tip As of the time of writing, asset creation is only supported by the CLI wallet (simplewallet).
Binaries and support for the GUI wallet is expected soon.
:::
## Building a Testnet Wallet
### Linux
**Install prerequisites**
```
sudo apt-get install -y build-essential g++ python-dev autotools-dev libicu-dev libbz2-dev cmake git screen checkinstall zlib1g-dev
```
**Download and build Boost**
```
curl -OL https://boostorg.jfrog.io/artifactory/main/release/1.70.0/source/boost_1_70_0.tar.bz2
echo "430ae8354789de4fd19ee52f3b1f739e1fba576f0aded0897c3c2bc00fb38778 boost_1_70_0.tar.bz2" | shasum -c && tar -xjf boost_1_70_0.tar.bz2
cd boost_1_70_0
./bootstrap.sh --with-libraries=system,filesystem,thread,date_time,chrono,regex,serialization,atomic,program_options,locale,timer,log
./b2
```
**Install OpenSSL**
Please, make sure the paths correspond to your environment (`/home/user/')
```
curl -OL https://www.openssl.org/source/openssl-1.1.1t.tar.gz
echo "a06b067b7e3bd6a2cb52a06f087ff13346ce7360 openssl-1.1.1t.tar.gz" | shasum -c && tar xzf openssl-1.1.1t.tar.gz
cd openssl-1.1.1t/
./config --prefix=/home/user/openssl --openssldir=/home/user/openssl shared zlib
make
make test
make install
```
**Checkout Zano from github (branch `cryptoassets`)**
```
git clone --recursive https://github.com/hyle-team/zano.git -b cryptoassets
```
**Build the binaries for the testnet**
```
cd zano && mkdir build && cd build
cmake -D TESTNET=TRUE ..
make -j1 daemon simplewallet
```
### Windows
Install required prerequisites (Boost, Qt, CMake, OpenSSL)
Rename `utils/configure_local_paths.cmd.example` to `utils/configure_local_paths.cmd` and edit paths in this file so they correspond to your environment.
Run one of `utils/configure_win64_msvsNNNN_testnet`.cmd according to your MSVC version.
Go to the build folder and open generated Zano.sln in MSVC
Build it.
### MacOS
Install required prerequisites.
Set environment variables as stated in `utils/macosx_build_config.command`
```
mkdir build
cd build
cmake -D TESTNET=TRUE ..
make
```
## Creating the Asset
To deploy a new asset on the Zano blockchain, you need to prepare a JSON-formatted file with asset parameters. Heres an example:
```
{
"ticker": "CT",
"full_name": "Confidential token",
"total_max_supply": 100000000000000000,
"current_supply": 1000000000000000,
"decimal_point": 12,
"meta_info": ""
}
```
Then run the following command specifying the route to the file:
```
deploy_new_asset <asset specs file location>
```
You should see a confirmation message upon successful execution
![alt launch-asset-confirmation-message](../../../static/img/launch-asset-confirmation-message.png "launch-asset-confirmation-message")
## Other Asset Commands
### Whitelisting
By default, new assets are not whitelisted and wont show up in the wallets beside deployer. This feature prevents spam and the cluttering of the wallet with unsolicited tokens. It also allows use cases where the asset id is only shared between a closed group of users and others are unable to access the balance in that asset even if they have it in the wallet.
To add it to your wallet, it needs to be explicitly added to the allow list using the following command:
```
add_custom_asset_id <asset id>
```
The Zano dev team will also maintain a shared whitelist of assets enabled by default.
### Transfer
To transfer an asset, the simplewallet uses the same command as a native coin transfer, but youll need to specify the asset id before the receiving address.
```
transfer <mixin count> [asset id:]<receiving address> <amount>
```
Heres an example:
```
transfer 10 e03a140b8447d2895290022b25c06bdabea514e2475ae56ce5bcbc554ab9865c:ZxBrXwuFw9MPCgS9tmgfhu6mrCq21GEjKgEUEtEQtF8ccPiXTxLaMtqKPJHPXVzBq5e4YatGCrR8v9tBf4Fbv5F32YWQUwCVN 100
```
### Checking balance
To check the balance, use the following command:
```
balance
```
![alt lauch-asset-check-balance](../../../static/img/lauch-asset-check-balance.png "lauch-asset-check-balance")
However, the wallet will not automatically refresh. To see any updates or changes to your balance, you'll need to manually refresh the wallet with the following command:
```
refresh
```

View file

@ -0,0 +1,25 @@
# Testnet builds
A list of wallet builds for Zano testnet (Zarcanum update)
### Windows
INST: https://build.zano.org/builds/zano-win-x64-cryptoassets-testnet-v2.0.0.218[c297580]-installer.exe
sha256: 73e3b35ea212126f022e084e0c82136824422acb2ccdfb80ba91c6fe5d656dd4
ZIP: https://build.zano.org/builds/zano-win-x64-cryptoassets-testnet-v2.0.0.218[c297580].zip
sha256: 05b58815456cbf797f42b28e48ee1442e18c9868ed1acd7b7d728a687499b070
### MacOS
https://build.zano.org/builds/zano-macos-x64-testnet-v2.0.0.218[c297580].dmg
sha256: 47ee2bd5fb7bcbbd319d47715d2348f0fedc50b49c707df824b856ff86820710
### Linux
https://build.zano.org/builds/zano-linux-x64-cryptoassets-testnet-devtools-v2.0.0.218[c297580].AppImage
sha256: 3a6c8dea8ff31b79b4ca99321a9981bfaf970215bec5c04e683be0182d7fa2f4
### Chrome extension
https://api.zano.org/downloads/companion/build.zip

51
docs/learn/emission.md Normal file
View file

@ -0,0 +1,51 @@
# Emission
### Where does the emission come from?
Zano (₡ZANO) has a hybrid PoW/PoS consensus algorithm to secure the network and therefore emission is generated from two distinct sources:
Proof of Work (PoW) mining. PoW mining creates new ₡ZANO coins to reward miners for completing the calculation and therefore contributing to the network. 100% of the block reward goes to miners.
Proof of Stake (PoS) staking. PoS staking also creates new ₡ZANO coins to reward stakers for staking their funds and therefore contributing to the network.. 100% of the block reward goes to stakers.
### Emission specifications
Emission |
--- | ---
Block Time | 1 minute
Block Reward | 1 ₡ZANO
Maximum Supply | ∞ (uncapped)
Fee on TXs (flat fee) | 0.01 ₡ZANO
### Emission motivation
Zano made the decision to set the block reward relatively low to avoid unnecessary selling price pressure while keeping the chain safe from TX flood. The block reward is fixed at 1 ₡ZANO per block. We have an uncapped max supply because the assumption that TX flow and its fees would be enough to cover miners' appetite might not be accurate and Bitcoin might become a sad example of this. Having a fixed and slow emission (backed by strong consensus algo) looks like a more safe choice to us.
Zano total supply increases slightly over time while the inflation percentage decreases sligthly over time which can be seen below.
Date | Total Supply (₡ZANO) | Increasement of total supply compared to the year before
--- | --- | ---
01-01-2023 | 13,530,567 | ~4,04%
01-01-2024 | 14,056,167 | ~3,88%
01-01-2025 | 14,581,767 | ~3,74%
01-01-2026 | 15,107,367 | ~3,60%
01-01-2027 | 15,632,967 | ~3,48%
01-01-2028 | 16,158,567 | ~3,36%
01-01-2029 | 16,684,167 | ~3,25%
01-01-2030 | 17,209,767 | ~3,15%
01-01-2031 | 17,735,367 | ~3,05%
01-01-2032 | 18,260,967 | ~2,96%
01-01-2033 | 18,786,567 | ~2,88%
The chart below visually displays the emission (shown in blue) of the number of coins (on the vertical access) and the time duration (in 6 month timestamps) of the total supply.
![alt emission-motiovation](../../static/img/emission-motivation.png "emission-motiovation")
### Why was there a coinswap with Boolberry?
The Zano project is a technological evolution of the Boolberry (₡BBR) project, a previous project of the Zano team. However, at the same time, the project has different emission curve and premine. To not screw over holders of Boolberry (₡BBR) we decided that it would be fair to give ₡BBR holders a choice: they were able to join in on the new model by participating in the coinswap and exchanging their ₡BBR to ₡ZANO, or they were welcome to keep their stake in BBR (which will continue to be supported).
The coinSwap resulted in 7.8M swapped coins. The remaining ~6M of the initial supply were burned the day after the end of coinswap (proof link): https://explorer.zano.org/transaction/4d4ff1cf20fd18cc72eb88e36da5430498d343bcd21122de5b0ba2d324944722
More information on the concluded coinswap can be found here: https://blog.zano.org/the-coinswap-has-concluded/

View file

@ -0,0 +1,41 @@
# Frequently Asked Questions
### What is Zano?
Zano leverages the proven and time-tested cryptographic primitives that were first introduced with CryptoNote. Transactions are made both untraceable, and unlinkable by using stealth addresses and ring-signatures. As first implemented in Boolberry, downstream sender privacy is guaranteed by using output flags.
### What consensus mechanism is used?
Zano uses a hybrid PoS — PoW consensus mechanism. This makes double-spend attacks both un-feasible and improbable. PoS was implemented to complement and enhance the security provided by traditional PoW blockchains.
### What is alias and how does it work?
Each Zano user can register with an alias, for example: @mywallet, a human-readable name associated with a payment address. Zano users can easily send transactions to an alias: their wallets automatically check whether the name is registered in the blockchain.
### What is escrow contracts?
Escrow, like its name, is a mechanism that was designed to facilitate secure anonymous payments between counter-parties. Zano provides the framework for a secure and private transaction without the need for a trusted third party. Our Escrow system (as proposed) will require participants to make additional deposits, which they will forfeit if there is any attempt to act maliciously, or in a way that is contemptuous toward their counter party.
### How can I get Zano coins?
You can mine coins and use staking to increase your balance or trade coins on cryptocurrency exchanges.
### Is Zano a hardfork of Boolberry?
Zano and Boolberry are completely separated blockchains. Boolberry network will remain after Zano launch. None of Boolberry transactions will be copied to Zano network. The Dev team will continue to maintain and support Boolberry however, most of the new features will be developed into the Zano codebase.
### What is mixin and what it's used for?
The mixin count refers to the number of signatures (apart from yours) in the ring signature that authorizes the transaction. Higher mixin value will typically provide more privacy because it will provide greater plausible deniability. It is impossible for any observer to know which is the real source of the funds.
### When trying to send coins I get an error stating that transaction is too large.
This is due to sending many small inputs to the address. The solution is to split up the transaction and send smaller amounts.
### What is a seed phrase?
To access the wallet in the event of a loss, you need something called a mnemonic recovery phrase or seed. This group of words that you received while creating your wallet are designed to add an extra layer of security. With these phrases you can easily restore lost wallets if you dont have the passkey.
### Why application starting time takes so long?
As Zano wallet is a full node application, due to loading a blockchain and multiple wallets synchronizing , start time depends on your system specification and may be bottlenecked by internet connection speed.

View file

@ -0,0 +1,35 @@
# Getting started
Those few steps will make you more familiar with Zano features and capabilities.
### Download and install Zano app
Zano app is available for Windows, Linux and MacOS. It can be downloaded here.
### Open Zano app
![alt login](../../../static/img/open-zano-app.png "Login")
First you need to create a master password. It will let you manage your Zano wallets inside the app. Note that each wallet account will have separate password as well. Hit `Next` when ready.
### Create new wallet
![alt createwallet-1](../../../static/img/create-new-wallet-1.png "create-wallet-1")
Once app is open it will start syncing with the blockchain. While in progress some features such as sending transactions and contracts will be locked. Meanwhile you can still create your first Zano wallet by clicking `Create new wallet` .
![alt createwallet-2](../../../static/img/create-new-wallet-2.png "create-wallet-2")
Enter wallet name and password, then click `Select wallet location`. Note that both can be changed later in wallet details menu.
![alt createwallet-3](../../../static/img/create-new-wallet-3.png "create-wallet-3")
When wallet file is created you can continue with `Create wallet`. This file can be used to quickly import or restore closed wallets in Zano app.
![alt createwallet-4](../../../static/img/create-new-wallet-4.png "create-wallet-4")
To finalise wallet creation store wallet's seed phrase. IMPORTANT: using the seed phrase anyone can restore and take full control of the wallet. Keep it in a secured location and avoid unauthorized access to it by any means. Note that you can review the seed phrase later in wallet details menu.
![alt createwallet-5](../../../static/img/create-new-wallet-5.png "create-wallet-5")
Now the wallet has been created. You can copy wallet address and use it to receive ZANO from exchanges, mining pools and other sources.

View file

@ -1 +1,33 @@
# What is Zano
### Secure & Truly Anonymous
Zano project is a development of a stable and secure coin, designed to use in e-commerce. The technology behind our blockchain provides reliability, security, and flexibility, making it a perfect option for P2P and e-commerce transactions.
Zano is built on a foundation of performance and stability. The network is powered by key code design features like forward and backward compatibility, component-based modular structure, and asynchronous core architecture. While the extensive testing our system has undergone minimizes, all the issues often encountered in the early days of any project.
### Privacy
- The transactions between Zano network members are made untraceable with ring signatures and stealth addresses. Also, the way transaction data is stored on the blockchain allows access by authorized parties only, and none of the private data is ever publicly published.
- The confidentiality of all Zano transactions is hard-coded into the core. By concealing all sending and receiving addresses as we have maximized the level of privacy every Zano user has.
### P2P
- Multi-signature, or simply multisig, is the key mechanism which allows two or more users to control a single wallet. This is mostly used in the escrow service. However, multisig can also be used to create a two-factor authentication mechanism.
- With our escrow service, users can create fully customizable contracts, which are essentially a mechanism that allows for any agreement conditions to be followed by all parties in a trustless way. When using the Zano network, a deposit is required from all parties as a financial incentive to alleviate any malicious activity.
- All Zano network members can have aliases, for example, @username. These aliases can be linked to a payment address, which makes our network more user-friendly. In the long run, aliases will be used in a dedicated messenger, a user reputation service, and an alias-based authentication system.
- APIs and plugins are what makes escrow and other features of our network easy to use for anyone. With this functionality, users are not required to have any coding knowledge to create contracts and implement them in any e-commerce related ventures.
### The Wallet
- The new Zano wallet is designed to bring ease of use to highly secure, highly anonymous cryptocurrency transactions. Our goal is to reinvent wallet design, making CryptoNote transactions available to everyone. With this single cross-platform wallet, untraceable financial transactions become as easy as a banking app.
### Where to buy
Zano is available on following exchanges:
https://coinmarketcap.com/currencies/zano/markets/

View file

@ -0,0 +1,23 @@
# Specifications
|General info| |
|: --------- | ------- |
|Release | 2019 |
|Currency | Zano |
|Symbol | ZANO |
|Hash algorithm | ProgPowZ |
|Language | C++ |
|Blockchain | PoS + PoW |
|**Emission** | |
|Block time | 1 minute |
|Block reward | 1 ZANO |
|Initial total supply | 17517203 ZANO |
|Maximum Supply | ∞ (uncapped) |
|**Resources** | |
|Website | https://zano.org/ |
|Repository | https://github.com/hyle-team/zano |
|Explorer | https://explorer.zano.org/ |
|**Requirements** | |
|Wallet requirements | 2 core x64 CPU, 3 GB RAM |
|Wallet platforms | x64 Windows 7, Linux or Mac OS X 10.9 |

View file

@ -0,0 +1,21 @@
# Estimating PoS earnings
Proof-of-stake earnings depend on current PoS difficulty and the number of coins you have locked for staking. The more coins you stake, the better chance you have to “win” the right to sign the next PoS block. Of course, its important to estimate your chances and predict how much you can earn in some way. Here is the most straightforward way to do so.
First, we need to get the current PoS difficulty, which can be found in the [block explorer](https://explorer.zano.org/). This value is then divided by 1000000000000 (10 ^ 12), which in the Zano network is one coin basis.
Second, we again divide it by `288`. This operation lets us take the PoS mining timestamp frame into account. Without further details, this factor provides hash variety in PoS mining and can be somewhere between 256 and 320. Its reasonable to use the value of 288 here.
Now we have an estimation of how many coins participate in PoS mining currently as `Coins_in_PoS = PoS_difficulty / 1000000000000 / 288` or:
![alt coins-in-pos](../../static/img/coins-in-pos.png "coins-in-pos")
where `C` is the total amount of coins participating in PoS mining, and `D_PoS` is the current PoS difficulty.
As you may know, the Zano network emits an average of 1 coin each minute with a 50-50 spread between PoS and PoW. That makes it `720` potential PoS reward coins per day. So if you owned all the coins in PoS, that could be your total day earnings. And if you divide `C` by `720`, you will get the number of coins you need to mine 1 Zano coin a day. Now, you can estimate the number of coins you will earn as `your_PoS_earnings = 720 * your_staking_coins / C` or, in other words:
![alt pos-earnings](../../static/img/pos-earnings.png "pos-earnings")
where `E_daily` is the estimated number of coins you'll earn per day, and `N` is the number of coins you're staking.
Please keep in mind that all the above is an expectation and can vary heavily.

View file

@ -0,0 +1,40 @@
# Proof-of-stake mining
Proof-of-stake mining or POS for short is typically implemented such that a random coin owner obtains the right to sign a new block. Zano POS implementation keeps miners in full anonymity and is as simple as a push of a button, literally.
Open Zano app, make sure the blockchain is synchronised and turn on `Staking` switch.
![alt proof-of-stake-mining](../../static/img/proof-of-stake-mining.png "proof-of-stake-mining")*<figcaption style={{textAlign: "center" }} >Proof-of-stake mining</figcaption>*
You can observe your progress in the `Staking` tab of your staking wallet. The amount of earnings depends on the wallet balance. Note that funds, that participate in proof-of-stake will be locked. When you turn `Staking` off, balance will get unlocked right away. You can switch `Staking` on and off without any limitations.
### Server mode POS mining
Sometimes it may be convenient to do PoS mining without the GUI application running. Here are steps to achieve it.
1. Download Zano daemon (zanod executable) and simplewallet or build them following the instructions.
2. Navigate to the Zano folder.
3. Start zanod daemon (service).
4. Start simplewallet in RPC mode with PoS mining enabled:
```
./simplewallet --wallet-file=PATH_TO_WALLET_FILE --rpc-bind-port=RPC_PORT_NUMBER --do-pos-mining --password=PASSWORD --log-level=LOG_LEVEL --log-file=PATH_TO_LOG --deaf --pos-mining-reward-address=REWARD_ADDR
```
Some of the parameters are required, and some are optional. Here's what they mean:
- `--wallet-file=PATH_TO_WALLET_FILE` (required) — sets the path to the wallet file where your coins are;
- `--rpc-bind-port=RPC_PORT_NUMBER` (required) — sets the TCP listening port number of the simplewallet RPC server and switches simplewallet into RPC mode. You can use any free TCP port number you want from 0 to 65535, like 55555. If this option is not used, simplewallet will start in normal CLI mode and PoS mining won't be available;
- `--do-pos-mining` (required) — starts PoS mining;
- `--password=PASSWORD` (optional) — password to your wallet. You may use it instead of entering the password interactively on start. **Please, take precautions** while using this parameter. Anyone who can get a processes list of your system with corresponding command lines can see your password. **Use it ONLY if you are absolutely sure you need it!** Please also note, that if your password contains special characters, it may be necessary to escape them when passing as an argument;
- `--log-level=LOG_LEVEL` (optional) — sets the log level, possible values are from 0 (less verbose) to 4 (extremely verbose). May be useful for debugging. Default is 0;
- `--log-file=PATH_TO_LOG` (optional) — sets path to the log file. Default is 'simplewallet.log' in the same folder where simplewallet binary is located;
- `--deaf` (optional) — turns on so called 'deaf mode'. simplewallet's RPC server will reject any requests with error 500. This is useful if you just want to mine PoS and don't want that anyone would be able to do RPCs on your wallet. **Highly recommend**. Default: off;
- `--pos-mining-reward-address=REWARD_ADDR` (optional) — sets an explicit address for receiving mining rewards. By default, all rewards will be received by the same wallet where staking coins are, so its balance will be gradually increasing. If you use this option, staking coins will be kept in the main wallet (specified by--wallet-file parameter), and mining rewards will be sent to the specified REWARD_ADDR. In such a case, the balance of the main wallet won't be changing due to the mining process.
Here's a real-world example of the command using recommended options (**don't forget to tailor it to your needs**):
```
../zano/build/src/simplewallet --wallet-file=zw3b --rpc-bind-port=50005 --do-pos-mining --log-level=0 --log-file=/home/user/zano/wallets/zw3b.log
--deaf --pos-mining-reward-address=aZxat4HAWriVQ3enkGcVsrZRdMseAJswG3CSEwTqZS246VsFQ53w26eZstYsu1jWE74Atz9ajLxFnBsVTafncWNH5SMv4zHFaTS
```

View file

@ -0,0 +1,53 @@
# Solo mining guide
The Zano daemon features an internal stratum-like server that can serve miner clients via the ethProxy protocol. It works like a very light and simple pool that mines to a single address.
:::caution Requirements
2GB graphic card is required for GPU mining
:::
To run a GPU miner with the internal Zano stratum server follow these steps:
- build the daemon (zanod executable)
- run the daemon with an activated stratum server
- run the GPU or CPU miner connected to the daemon
Once all started the miner should connect to the daemon and receive a job from it. Upon finding a solution, the miner should send it to the daemon and the daemon should confirm the solution. Both can run on remote machines.
### Windows quick guide
First, install the Zano app, [create](https://docs.zano.org/docs/getting-started-1) a Zano wallet and wait until blockchain syncing is complete. When syncing is complete close the app.
In order to mine, Zano must be started with the stratum server activated. Open a `cmd` console window and navigate to the Zano folder (`C:\Program Files\Zano by default`):
```text
cd C:\Program Files\Zano
```
Then
```
zanod.exe --stratum --stratum-miner-address=<YOUR WALLET ADDRESS> --log-level=0 --stratum-bind-port=11555
```
Get the latest [mining software](https://zano.org/downloads) for Windows. To make it simple, if you use an Nvidia graphic card choose Cuda miner, for AMD go for OpenCL.
:::info Nvidia/CUDA cards
If you have an NVIDIA card you need to install CUDA GPU Computing Toolkit v10.1 and then add `C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin` to your `Path` environment variable.
:::
Open another `cmd` window and navigate to the progminer folder. Run one of the following commands to start mining.
```
progminer-zano-opencl.exe -P stratum1+tcp://miner@localhost:11555
progminer-zano-cuda.exe -P stratum1+tcp://miner@localhost:11555
progminer-zano-cpu.exe -P stratum1+tcp://miner@localhost:11555
```
You can use many instances of running mining software (`progminer-zano-*.exe`) with only one instance of the Zano daemon (`zanod`).

13
docs/use/aliases.md Normal file
View file

@ -0,0 +1,13 @@
# Aliases
Each Zano user can register with an alias, for example: @easytouse, a human-readable name associated with a payment address and text comment, which is stored in the blockchain. This alias provides a short, easy-to-remember name rather than a long and confusing string of random characters. Blockchain storage ensures that aliases are protected from being altered or commandeered.
Each alias is assigned to a particular wallet. Only one alias can be created per wallet. To register an alias choose `Register an alias` from wallet main window.
To reduce possibility of phishing we set limitations on alias registrations. Users can use any combination of the lower-case Latin letters a-z and the Arabic numerals 0-9. Additionally, there is a length minimum of 6 characters, and a maximum length of 12.
The comment section will be temporarily stored in the blockchain until passing a checkpoint. For more information on pruning mechanism please refer to the [whitepaper](https://docs.zano.org/docs/whitepaper).
![alt alias-registration](../../static/img/alias-registration.png "alias-registration")*<figcaption style={{textAlign: "center" }} >Alias registration</figcaption>*
Aliases can be used for more than just Zano transactions. Think of them as a decentralised address book with universal IDs that can be used for various services based on the Zano platform.

View file

@ -0,0 +1,102 @@
# Auditable wallets FAQ
### What is an auditable wallet?
Auditable is the type of wallet that allows 3rd party to see the balance and transaction history without permission to spend it or interact in any other way.
### How can I tell if wallet is auditable
It's a wallet with an address in a special format that starts with "aZx", for instance: aZxawNXAuekCXcnzutthLaPZQxAyaofb59FpzNBSCQb7iT7D1nsaxdTCvK4Xhn6nfuRpqDiNjeUNx2J9KWfTXHmDWNQ85v2bpbi
### What is the purpose of auditable wallets?
Having an auditable wallet, you can allow someone to watch your balance and transaction history without giving him/her the right to spend your funds.
### Can I get an auditable address for my existing normal wallet?
No. You need to create a new auditable wallet and transfer your coins into it.
### How can I create an auditable wallet?
Using simplewallet CLI application:
```
>simplewallet.exe --generate-new-auditable-wallet my_auditable_wallet_x
Zano_testnet wallet v1.1.7.96[3e463b0]
password: ***
Generated new AUDITABLE wallet: aZxb9v1DFtaK6Z4bW7UUuaZcmq7MZBzz875eZ5N3vSRa2vWz9wBVE3vVKFGNH8414TTjhiwPz7PTV5ttuZP7GsdDQeWbewpmMaX
view key: 3dd8fd870c694818194c1e7a095a51e2e65486e212baca77fce4157f39287f05
tracking seed:
aZxb9v1DFtaK6Z4bW7UUuaZcmq7MZBzz875eZ5N3vSRa2vWz9wBVE3vVKFGNH8414TTjhiwPz7PTV5ttuZP7GsdDQeWbewpmMaX:3dd8fd870c694818194c1e7a095a51e2e65486e212baca77fce4157f39287f05:1595429852
**********************************************************************
Your wallet has been generated.
**********************************************************************
```
### Using an auditable wallet, how can I give someone the ability to track my balance and transaction history?
You should obtain a **tracking seed** for your auditable wallet and give it to someone you'd like to be able to track your wallet. At the moment, it can only be done by using `tracking_seed` command in simplewallet:
```
>simplewallet.exe --wallet-file my_auditable_wallet_x
Zano_testnet wallet v1.1.7.96[3e463b0]
password: ***
Opened auditable wallet: aZxb9v1DFtaK6Z4bW7UUuaZcmq7MZBzz875eZ5N3vSRa2vWz9wBVE3vVKFGNH8414TTjhiwPz7PTV5ttuZP7GsdDQeWbewpmMaX
Starting refresh...
Refresh done, blocks received: 0
balance: 0.000000000000, unlocked balance: 0.000000000000
**********************************************************************
Use "help" command to see the list of available commands.
**********************************************************************
[Zano wallet aZxb9v]: tracking_seed
Auditable watch-only tracking seed for this wallet is:
aZxb9v1DFtaK6Z4bW7UUuaZcmq7MZBzz875eZ5N3vSRa2vWz9wBVE3vVKFGNH8414TTjhiwPz7PTV5ttuZP7GsdDQeWbewpmMaX:3dd8fd870c694818194c1e7a095a51e2e65486e212baca77fce4157f39287f05:1595429852
Anyone having this tracking seed is able to watch your balance and transaction history, but unable to spend coins.
```
Tracking seed technically is an auditable address, secret view key and a creation timestamp combined with a colon:
aZxawNXAuekCXcnzutthLaPZQxAyaofb59FpzNBSCQb7iT7D1nsaxdTCvK4Xhn6nfuRpqDiNjeUNx2J9KWfTXHmDWNQ85v2bpbi:1be5866b6fda704c0c4a08f9c79c774911fda72dcd8cc8c7ca31bc1a6fda4d0b:1593998615
### I got a tracking seed. How can I track the wallet it is bound to?
You need to restore a wallet using the tracking key the same way you restore a regular wallet using a seed. It could be done in simplewallet:
```
>simplewallet.exe --restore-wallet=wallet-name
Zano_testnet wallet v1.1.7.96[3e463b0]
password: ***
please, enter wallet seed phrase or an auditable wallet's tracking seed: ***
Tracking wallet restored: aZxb9v1DFtaK6Z4bW7UUuaZcmq7MZBzz875eZ5N3vSRa2vWz9wBVE3vVKFGNH8414TTjhiwPz7PTV5ttuZP7GsdDQeWbewpmMaX
**********************************************************************
Your wallet has been restored.
To start synchronizing with the daemon use "refresh" command.
Use "help" command to see the list of available commands.
Always use "exit" command when closing simplewallet to save
current session's state. Otherwise, you will possibly need to synchronize
your wallet again. Your wallet keys is NOT under risk anyway.
**********************************************************************
```
Or in GUI wallet:
![alt auditable-wallets-gui-wallet](../../static/img/auditable-wallets-gui-wallet.png "auditable-wallets-gui-wallet")
### Are there any restrictions of using auditable wallets?
Only one: you cannot use mixins when you send coins from an auditable wallet.
***Obsolete***
The following limitations were effective until hardfork 2:
1. An alias cannot be assigned to an auditable address.
2. When sending coins from an auditable address the sender address is always hidden.
3. When sending coins to an auditable address the receiver address is always hidden. Once the blockchain passed hardfork 2 these limitations were removed.
### Can I use integrated addresses with the auditable feature?
Yes. An integrated address for an auditable wallet can be generated as usual. Such addresses will have "aiZ" prefix.
### Can I mine PoS with my auditable wallet?
Yes, you can. Also, you can use a corresponding watch-only wallet to monitor your balance without the risk of leaking your spend key. The only tradeoff is you can not use mixins but only directly spend coins from your auditable wallet.

View file

@ -0,0 +1,47 @@
# Coinswap guide
As you may already know, Boolberry holders can swap their coins to the Zano network. The dev team managed to make this process as simple as possible. Basically, all you need is a transaction from the Boolberry wallet to a desired Zano address. The rest of the swap process will be completed automatically. The Boolberry funds will be burnt and after 20 confirmations your Zano address will receive the amount in Zano.
:::danger
Swapped coins will no longer exist in the Boolberry network and this action is irreversible.
:::
The first step to coin swap is to obtain a Zano address. There is a [Getting started](https://docs.zano.org/docs/getting-started-1) article which will guide you through the process.
:::danger
Make sure you have Boolberry wallet version 93 or higher, available [here](https://boolberry.com/#downloads).
:::
Next step is the coin transfer. Depending on how you prefer to store your coins there are three options.
### Boolberry wallet
Enter your Zano address as 'Send payment address' in the latest Boolberry wallet app. The coinswap notification will appear.
![alt coinswap-guide-boolberry-wallet](../../static/img/coinswap-guide-boolberry-wallet.png "coinswap-guide-boolberry-wallet")
Then enter the desired BBR amount, then press Send to proceed with the coinswap.
### Exchange
At first, you will have to make sure that you exchange uses the latest BBR daemon version which supports the coinswap. If so, you can request a withdrawal from your BBR exchange account to your Zano address and wait for transaction confirmation. Soon you will be able to see funds in your Zano wallet.
### Daemon
If you use the simplewallet daemon here is an example for making the coinswap transfer.
![alt coinswap-guide-daemon-example](../../static/img/coinswap-guide-daemon-example.png "coinswap-guide-daemon-example")
It is also possible to make coin swap with the transfer RPC.
```
$ curl http://127.0.0.1:12233/json_rpc -s -H 'content-type:application/json;' --data-binary '{"jsonrpc":"2.0","id":"5","method":"transfer", "params":{"destinations":[{"address":"<YOUR ZANO ADDRESS", "amount":<AMOUNT>}], "fee":1000000000, "mixin":0}}'
```
For more information please refer to [BBR Documentation](https://docs.boolberry.com/wallet).
### Finalizing the swap
Usually, the coinswap procedure will be completed within an hour. However, it may take up to 24 hours in some cases. You should see a similar incoming transaction shortly.
![alt coinswap-guide-final](../../static/img/coinswap-guide-final.png "coinswap-guide-final")

61
docs/use/deeplinks.md Normal file
View file

@ -0,0 +1,61 @@
# Deeplinks
Based on materials of Matthew Reichardt me@matthewreichardt.com (https://github.com/hyle-team/zano/issues/269)
### Zano URI Scheme
**action** - type of action requested, supported actions:
- send - simply send coins to given address
- escrow - create escrow-contract
- marketplace_offer_create - create marketplace offer
### Action "send"
Example of **send** command:
**zano:action=send&address=ZxCkvE7zhS6JuFE5neAaTtcY8PUT2CwfLZJQWP32jrELB1Vg9oSJyGJDyRWurqX6SXSqxjGz2yrAKaMqmxDa7E8313igosBVT&comment='Some payment'&mixins=11&hide_sender=true&hide_receiver=true**
- address - address of recipient
- comment - comment about payment[optional]
- mixins - number of mixins[optional]
- hide_sender - specify if sender address should be included in transaction(and visible for receiver)
- hide_receiver - specify if receiver address should be included in transaction(and visible for sender later, if wallet been restored from seed phrase)
### Action "marketplace_offer_create"
Example of **marketplace_offer_create** command:
**zano:action=marketplace_offer_create&mixins=11&hide_sender=true&hide_receiver=true&title='Random t-shirt'&description='One size fits all'&category='merch-tshirt'&price=10&img-url=''&contact='@ravaga'&comments='zzzz'**
**Basic params:**
- mixins - number of mixins[optional]
- hide_sender - specify if sender address should be included in transaction(and visible for receiver)
- hide_receiver - specify if receiver address should be included in transaction(and visible for sender later, if wallet been restored from seed phrase)
**Offer details:**
- title offer title
- description detailed offer description
- category store defined category
- price price in ZANO
- img-url ipfs/arweave link to offer image
- contact preferred way of communication (telegram, email, zano alias)
- comments -additional comments about the offer
### Action "escrow"
Example of **escrow** command:
**zano:action=escrow&description='Some Description'&seller_address='ZxCXALhZRodKmqRCWUPNAUCXqprJBNKv4eFsjzcMooAGVM6J2U2vSyTNpxNybwBnvzGWLtSWpBiddSZhph8HNfBn1bVE3c6ix'&amount='10'&my_deposit='5'&seller_deposit='5'&comment='Some comment if needed'**
**Escrow parameters:**
- description Escrow description
- seller_address Address of the wallet that have to accept/reject this offer
- amount Total amount of the deal (not include security deposits)
- my_deposit amount of coins that buyer put as a deposit
- seller_deposit amount of coins that seller supposed to put as a deposit if he accept escrow
- comment any comments regarding this deal
All mentioned information will be encrypted and won't be available for third party.

View file

@ -0,0 +1,41 @@
# Escrow contracts
Zano provides the framework for a secure and private transaction without the need for a trusted third party. Our Escrow system, as proposed, will require participants to make additional deposits, which they will forfeit if there is any attempt to act maliciously, or in a way that is contemptuous toward their counter party. For more information please refer to the "Escrow" section of the [whitepaper](https://docs.zano.org/docs/whitepaper).
### Propsal
Each escrow contract starts with the buyer proposal. Once it's sent the deposit amount will be locked for a `Time until response` period. If during the period seller accepts the terms, Escrow contract will be activated. To initiate the process navigate to wallet `Contracts` tab and choose `New Purchase`. Proposal details are the following.
- Description - title or description for contract subject
- Seller - wallet address of merchant or seller
- Amount - payment amount for goods or services
- Your deposit - sum of collateral and payment amount
- Seller deposit - collateral from seller required by buyer
- Comment - additional information like order ID, delivery address, etc.
- Fee - transaction fee amount
- Time until response - proposal expiration time
- Payment ID - transaction payment identifier provided by seller
![alt contract-propsal](../../static/img/contract-propsal.png "contract-propsal")*<figcaption style={{textAlign: "center" }} >Contract proposal</figcaption>*
### Confirmation
When the seller accepts the proposal a special multi signature transaction will be sent to the blockchain. Then after 10 confirmations a new contract will be started. The seller can now fulfil contract terms like shipping the item to the buyer.
![alt contract-response](../../static/img/contract-response.png "contract-response")*<figcaption style={{textAlign: "center" }} >Contract response</figcaption>*
The buyers contract window will get three options to continue with: `Cancel and return deposits`, `Terminate and burn deposits` and `Complete and release deposits`.
### Cancel and return deposits
The buyer can send a cancellation offer to return both deposits and close the contract. The seller can accept or ignore this offer within a given response time. This option is useful when deal is mutually canceled.
### Terminate and burn deposits
When parties cannot find mutual agreement on any occasions one can decide to burn the deposits completely and close the contract. In that case deposits will not be returned ever.
### Complete and release deposits
If buyer is satisfied with the delivery or a provided service the contract can be closed. Releasing deposits will return both parties collaterals.
![alt contract-confirmation](../../static/img/contract-confirmation.png "contract-confirmation")*<figcaption style={{textAlign: "center" }} >Contract confirmation</figcaption>*

View file

@ -0,0 +1,124 @@
# Install a Zano CLI Wallet (Ubuntu)
**Step 1**
Go to the official site: https://zano.org
![alt install-zano-cli-wallet-step-1](../../static/img/install-zano-cli-wallet-step-1.png "install-zano-cli-wallet-step-1")
**Step 2**
Go to Downloads, which takes you to: https://github.com/hyle-team/zano/releases
![alt install-zano-cli-wallet-step-2](../../static/img/install-zano-cli-wallet-step-2.png "install-zano-cli-wallet-step-2")
**Step 3**
Download Linux (Ubuntu 16.04+) CLI Wallet
![alt install-zano-cli-wallet-step-3](../../static/img/install-zano-cli-wallet-step-3.png "install-zano-cli-wallet-step-3")
**Step 4**
Right click the file and select Properties
![alt install-zano-cli-wallet-step-4](../../static/img/install-zano-cli-wallet-step-4.png "install-zano-cli-wallet-step-4")
**Step 5**
Copy the file name
![alt install-zano-cli-wallet-step-5](../../static/img/install-zano-cli-wallet-step-5.png "install-zano-cli-wallet-step-5")
**Step 6**
Open a terminal in this directory & validate the authenticity of the file by running a checksum (XXX represents your version):
```
sha256sum zano-linux-x64-v<XXX>.tar.bz2
```
(Results should match release notes from Download page)
![alt install-zano-cli-wallet-step-6-1](../../static/img/install-zano-cli-wallet-step-6-1.png "install-zano-cli-wallet-step-6-1")
![alt install-zano-cli-wallet-step-6-2](../../static/img/install-zano-cli-wallet-step-6-2.png "install-zano-cli-wallet-step-6-2")
**Step 7**
If checksums match, decompress & extract the .tar.bz2 file:
```
tar -xvjf zano-linux-x64-release-devtools-v1.5.0.143[336fac2].tar.bz2
```
![alt install-zano-cli-wallet-step-7](../../static/img/install-zano-cli-wallet-step-7.png "install-zano-cli-wallet-step-7")
**Steps 8-10**
8. Delete your original .tar.bz2 file
9. Move the Zano folder to a location of your choice
10. Within the Zano directory, open a terminal and run the daemon to start the node and download the blockchain:
```
./zanod
```
![alt install-zano-cli-wallet-step-8-10-1](../../static/img/install-zano-cli-wallet-step-8-10-1.png "install-zano-cli-wallet-step-8-10-1")
![alt install-zano-cli-wallet-step-8-10-2](../../static/img/install-zano-cli-wallet-step-8-10-2.png "install-zano-cli-wallet-step-8-10-2")
**Step 11**
Wait for the blockchain to download and sync. This may take quite a few hours, depending on your download speed. And leave the daemon running! Well need that to create our new wallet.
![alt install-zano-cli-wallet-step-11](../../static/img/install-zano-cli-wallet-step-11.png "install-zano-cli-wallet-step-11")
**Step 12**
Once sync is complete, open another terminal in the Zano directory with the simplewalletbinary—that's our CLI wallet executable. Give command:
```
./simplewallet --generate-new-wallet=name.wallet
```
Replace “name” with your new wallets name, e.g.,:
```
./simplewallet --generate-new-wallet=zanocli.wallet
```
![alt install-zano-cli-wallet-step-12](../../static/img/install-zano-cli-wallet-step-12.png "install-zano-cli-wallet-step-12")
**Step 13**
When asked, enter a password for your wallet. You should use a password generator, found in password managers such as KeePass.
![alt install-zano-cli-wallet-step-13](../../static/img/install-zano-cli-wallet-step-13.png "install-zano-cli-wallet-step-13")
**Steps 14-15**
14. To open your new wallet, give the following command in the same terminal (again, substituting "name"):
```
./simplewallet --wallet-file name.wallet
```
15. Enter your password, when prompted. Notice that the wallet displays your receive address after “Opened wallet.” You will use this to fund your new wallet.
![alt install-zano-cli-wallet-step-15](../../static/img/install-zano-cli-wallet-step-15.png "install-zano-cli-wallet-step-15")
**Steps 16-17**
16. Now we must get our wallets seed phrase, as well as set an additional password for the seed itself. Give the command:
```
show_seed
```
17. Again, when prompted provide a password for the seed phrase youre about to get. Confirm the password, and be sure to save both it and your seed phrase!!
![alt install-zano-cli-wallet-step-17](../../static/img/install-zano-cli-wallet-step-17.png "install-zano-cli-wallet-step-17")
**You've successfully installed your new Zano Wallet!**

View file

@ -0,0 +1,14 @@
# Locked balance
On occasion, you may notice that part of your wallet balance is temporarily locked. The reason behind it is complex, but let us offer a simplified explanation here. For more details, please refer to the [whitepaper](https://docs.zano.org/docs/whitepaper).
As you may know already theres no such thing as account balance in the blockchain. Instead each wallet consists of inputs and outputs. Due to the nature of incoming transactions, the amount in a wallet balance can get fragmented. When you try to send a particular amount, your transaction will be split in outgoing and change amounts. Here is example.
```
Alice has 100 coins and sends 50 to Bob
Transaction of 100 coins creates in the blockchain
50 coins goes to Bob and 50 coins goes to Alice
```
Zano architecture demands 10 confirmations for this change transaction and that amount gets locked in the wallet. Therefore, lock time is 10 blocks behind or approximately 10 minutes.

View file

@ -0,0 +1,49 @@
# Managing wallets
Zano app lets you manage multiple ZANO wallets, which can be easily created, restored and removed from the app. The core of each wallet is a seed phrase. It's a sequence of 24 words, that can be used to recovery your wallet private and public keys. Every time you create a new wallet within the app, a unique sequence is generated. It's important to always keep it safe and accessible.
For your convenience it's not necessary to use a seed phrase to manage your wallet. When you create a wallet the wallet file is generated as well. The file is secured with additional password and grants access to wallet features and the seed phrase. It can be copied to another device and used with another app.
### Creating wallets
There are 3 ways to create a wallet in Zano app. From the `Wallets` `Add` section choose
- Create new wallet
1. Enter wallet name and password
2. Click `Select wallet location` to choose wallet file location and name
3. Continue with `Create wallet`
4. Save shown seed phrase in a secure place and click `Create`
![alt creating-wallets](../../static/img/creating-wallets.png "creating-wallets")*<figcaption style={{textAlign: "center" }} >Create new wallet</figcaption>*
- Restore from backup
1. Enter new wallet info
2. Recover and enter previously stored seed phrase
3. Click `Select wallet location` to choose wallet file location and name
4. Continue with `Create wallet`
![alt restore-from-backup](../../static/img/restore-from-backup.png "restore-from-backup")*<figcaption style={{textAlign: "center" }} >Restore from backup</figcaption>*
### Wallet details
Each Zano wallet can be identified by a custom name assigned on creation. This name can be edited in `Details` section anytime. Information about wallet file location and it's seed phrase available here as well. Note that you can copy the seed phrase by clicking right mouse button over it and choosing `COPY` from the context menu.
You can remove a wallet from the Zano app by clicking `Close wallet` in the same section. Note that wallet file will remain unaffected and you can import it again anytime if necessary.
![alt wallet-details](../../static/img/wallet-details.png "wallet-details")*<figcaption style={{textAlign: "center" }} >Wallet details</figcaption>*
### Changing wallet password
In case you want to change wallet file password, you need to use `Restore from backup``. The following step will be required.
1. Make sure you have the seed phrase saved
2. Click `Close wallet` from wallet `Details`
3. Delete wallet file
4. Click `+Add` from `Wallets` menu and choose `Restore from backup`
5. Enter new wallet info
6. Recover and enter previously stored seed phrase
7. Click `Select wallet location` to choose wallet file location and name
8. Continue with `Create wallet`

View file

@ -0,0 +1,27 @@
# Reporting issues
Hyle team puts a lot of hard work to bring you the best blockchain experience possible and it's highly unlikeable you will face any troubles using Zano. However if you experience any technical issues we suggest you make a report to our development team.
All you need to do is to follow the [report link](https://jira.hyle.io/secure/CreateIssue!default.jspa) which can also be found in top of [docs page](https://docs.zano.org/docs/docs.zano.org). The describe your situation and submit a request.
### Log files
In most cases log files are essential for troubleshooting. It could be wise to attach them to the report you submit. Specifically, `Zano.log` or `zanod.log` would be useful for our dev team. They are stored in different locations depending on OS:
**Windows**
```
C:\Users\<USER NAME>\AppData\Roaming\Zano
```
**MacOS**
```
/Users/<USER NAME>/Library/Application Support/Zano
```
**Linux**
```
~/.Zano
```

View file

@ -0,0 +1,92 @@
# Tip Bot Guide
A simple guide on how to get tipping Zano on Discord
Using Zanos Discord TipBot is fairly straightforward and intuitive, but here well give an overview of its usage to help you get started, quickly.
#### Get Discord
In order to use the Discord TipBot, we must first have Discord installed, head over to their website (or your package manager) and get signed up!
https://discord.com/download/
#### Join Zanos Discord Channel
Now that we have Discord, head over to our discord
channel and join the rest of the community! Simply click
the link below.
https://discord.gg/wE3rmYY
### The Tip Bot
Welcome to Zano Discord, now that youre here, you should have something that looks like the below image:
#### Head to TipBot Settings
Head to the Bounties category and select the tip-bot-settings channel, here lies a summary of the tip bots usage.
![alt head-to-tipbot-settings](../../static/img/head-to-tipbot-settings.png "head-to-tipbot-settings")
### Get tipping!
Let's take a look at the tip bots functionality, the below image shows what we can do with the bot.
![alt welcome-to-tip-bot-zano](../../static/img/welcome-to-zano-tip-bot.png "welcome-to-tip-bot-zano")
#### Deposit
Before we can begin tipping, we must have some Zano in our tip bot wallet, to do this click on Deposit, get your wallet address and send some Zano to it.
![alt tip-bot-zano-deposit](../../static/img/tip-bot-zano-deposit.png "tip-bot-zano-deposit")
#### Register alias
Before you can withdraw Zano others have tipped you, you must register an alias, more on aliases can be found here: https://docs.zano.org/docs/aliases
Click register alias and enter your alias.
![alt zano-tip-bot-register-alias](../../static/img/zano-tip-bot-register-alias.png "zano-tip-bot-register-alias")
#### How to tip
Tipping users is done with one simple command, to see this command, click how to tip
![alt how-to-tip-zano](../../static/img/how-to-tip-zano.png "how-to-tip-zano")
:::tip Tip command
$tip
:::
Simply replace and with the values you want to use, a real world example within discord looks something like this
![alt tip-example](../../static/img/tip-example.png "tip-example")
#### Balance
To view how much Zano you have, simply click balance, and the tip bot will show how much Zano is in your wallet.
![alt tip-bot-balance](../../static/img/tip-bot-balance.png "tip-bot-balance")
#### History & simple view
There are 2 history buttons, one designated History, and the other History (simple view).
![alt tip-bot-history](../../static/img/tip-bot-history.png "tip-bot-history")
History is formatted as a table, whereas History (simple) is a simple one-liner.
#### Rate
If you want to know the current price of Zano, click Rate, to see the current price in $USD.
![alt tip-bot-rate](../../static/img/tip-bot-rate.png "tip-bot-rate")
#### Redeem coupon
If you have a coupon code, the Redeem Coupon button allows you to exchange your coupon for Zano coins.
Simply click the button and enter your coupon code.
![alt tip-bot-redeem-coupon](../../static/img/tip-bot-redeem-coupon.png "tip-bot-redeem-coupon")

View file

@ -0,0 +1,205 @@
# Using a Zano CLI Wallet (Ubuntu)
Open a terminal in the directory with Zanod. Start your node, by giving the command:
```
./zanod
```
Open another terminal in the same directory (with simplewallet). Start your wallet, by giving the following command, substituting the name of your wallet:
```
./simplewallet --wallet-file name.wallet
```
Enter your password, when prompted. Notice that the wallet displays your receive address after “Opened wallet.” You will use this to fund your new wallet.
![alt using-zano-ubuntu-enter-password](../../static/img/using-zano-ubuntu-enter-password.png "using-zano-ubuntu-enter-password")
You are now ready to get yourself some ZANO! Two exchanges to consider:
Trade Ogre: https://tradeogre.com.
Stex: https://www.stex.com/
P.S. Zanod (your node) can be left running, if youll be transferring funds to your wallet soon. If not, close your wallet by giving the command:
```
exit
```
After youve funded your new Zano CLI wallet, open it again and check for your funds (steps 1-2 above). If theyre not visible, wait a bit and then give the command:
```
refresh
```
Now lets send some ZANO to a friend!
The command for sending ZANO consists of four important bits of information:
`. the command itself
2. the number of UTXOs with which to mix yours (between 10-50/maximum available)
3. the receiving address
4. the amount of ZANO you wish to send
For example:
(1) (2) (3) (4)
![alt using-zano-ubuntu-send-bits-example](../../static/img/using-zano-ubuntu-send-bits-example.png "using-zano-ubuntu-send-bits-example")
### Creating an Auditable CLI Wallet
Owing to the inherent privacy of Zano wallets, no third parties can see their content on the blockchain, as with other cryptocurrencies with transparent ledgers.
There are instances, however, in which a user may want, or even need, the balance and transaction history of a wallet to be visible to a third-party (e.g., a public foundation). In such a case, one can use an Zano auditable CLI wallet (the auditable wallets are currently only available as CLI).
For further information on the auditable wallet, see https://docs.zano.org/docs/auditable-wallets
Give the following command, substituting "name":
```
./simplewallet --generate-new-auditable-wallet name.wallet
```
When prompted, enter your new password, preferably generated from a password generator.
![alt using-zano-ubuntu-enter-new-password](../../static/img/using-zano-ubuntu-enter-new-password.png "using-zano-ubuntu-enter-new-password")
You now have an auditable CLI. Anyone to whom you provide the tracking seed will be able to see the wallet's balance and transaction history.
If you ever need to retrieve the tracking seed, simply open the wallet and give the following command:
```
tracking_seed
```
![alt using-zano-ubuntu-tracking-seed](../../static/img/using-zano-ubuntu-tracking-seed.png "using-zano-ubuntu-tracking-seed")
Now, we must get our seed phrase, in case we ever need to restore our auditable CLI wallet. Within the wallet, give the command:
```
show_seed
```
Again, when prompted, supply and confirm another password, specific to the seed itself.
![alt using-zano-ubuntu-show-seed](../../static/img/using-zano-ubuntu-show-seed.png "using-zano-ubuntu-show-seed")
Lastly, note that the address of an auditable wallet always begins with an initial "a", in contrast to a standard wallet, which always begins with "Zx":
```
aZxazX8e7rgRdRgrukJnQ3US3P81jas2TZfY7tz99Hab7yUyB8rAGkAhoHH3jrBpSBJP8PyrU3YsHb7HRtmXk4CjeYvjCHVPU3g
```
### Restoring a CLI Wallet from Seed
For whatever reason, you may lose your original Zano CLI wallet (your name.wallet file) or its password. All is not lost, if you safeguarded your seed.
After starting zanod, open another terminal in the simple-wallet directory. Give the following command, supplying your seed phrase:
```
./simplewallet --restore-wallet your 24 word seedphrase
```
You will then be asked to reenter the seedphrase, enter the password specific to that seedphrase, and then enter your restored wallet's password.
![alt using-zano-ubuntu-restore-wallet](../../static/img/using-zano-ubuntu-restore-wallet.png "using-zano-ubuntu-restore-wallet")
### Creating a Watch-Only CLI Wallet
If you wish to allow someone to merely view your wallet, without being able to spend from it, you'll create a watch-only wallet. Open the wallet for which you wish to generate a watch-only wallet. Within the console, give the command, substituting the name of, and new password for, your new watch-only wallet:
```
save_watch_only new_name.wallet password_for_wallet
```
![alt using-zano-ubuntu-watch-only](../../static/img/using-zano-ubuntu-watch-only.png "using-zano-ubuntu-watch-only")
### Other Useful in-Terminal Flags
To skip supplying your password when opening wallet
```
--password arg
```
Use daemon instance at : for changing default host and port
```
--daemon-address arg
```
Prevents connecting to Zanod (daemon) for working offline (e.g., for cold-signing)
```
--offline-mode
```
Disables Tor from running with your wallet; this may be necessary if the Tor network itself is down.
```
--disable-tor-relay
```
Restores wallet from seed
```
--restore-wallet
```
Provides the destination for the log file, relative to the simplewalletbinary
```
--log-file arg
```
Sets the level of detail for the log
```
--log-level arg
```
Sets the level of detail for the log (same effect as above)
```
--set-log arg
```
Generates a new wallet that is auditable by a third party
```
--generate-new-auditable-wallet
```
And finally, to run any of the following commands outside of the wallet:
```
--command arg
```
**Other Useful in-Wallet Commands**
address = Shows current wallet public address
balance = Shows current wallet balance
exit = Closes the wallet
export_history [filename needed?] = Exports tx history into a CSV file
export_recent_transfers = Writes recent transfer txs in json to wallet_recent_transfers.txt (in Zano directory)
help = Shows a list of flags and commands
list_recent_transfers = Shows recent maximum 1000 sent amounts, offset default = 0, count default = 100
refresh = Resynchronize transactions and balance
resync = Resets all transfers and re-synchronize the wallet
save = Saves wallet synchronized data
show_seed = Displays secret 24 word phrase used to recover wallet
sweep_below <mixin_count>
<amount_lower_limit> [payment_id]: Tries to transfer all coins with amount below the given limit to the given address

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

BIN
static/img/coins-in-pos.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 339 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 470 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 948 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

BIN
static/img/pos-earnings.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 448 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

BIN
static/img/tip-bot-rate.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

BIN
static/img/tip-example.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB