rebrand(lethean): update branding, ports, and config for Lethean blockchain

- Coin: Zano → Lethean, ticker: ZAN/ZANO → LTHN
- Ports: 11211 → 36941 (mainnet RPC), 46941 (testnet RPC)
- Wallet: 11212 → 36944/46944
- Address prefix: iTHN
- URLs: zano.org → lethean.io
- Explorer links: explorer.lthn.io

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude 2026-04-01 22:24:13 +01:00
parent 54d3589493
commit fa5c149ffd
No known key found for this signature in database
GPG key ID: AF404715446AEB41
227 changed files with 2296 additions and 1378 deletions

10
Dockerfile Normal file
View file

@ -0,0 +1,10 @@
FROM node:22-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM nginx:alpine
COPY --from=build /app/build /usr/share/nginx/html
EXPOSE 80

View file

@ -1,4 +1,4 @@
# Zano Documentation
# Lethean Documentation
This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.
@ -39,3 +39,4 @@ $ GIT_USER=<Your GitHub username> yarn deploy
```
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.

View file

@ -1,3 +1,57 @@
# Building From Sources
Please, use the build manual from the Zano repo: https://github.com/hyle-team/zano/blob/master/README.md
### Prerequisites
- Linux x86_64 (Ubuntu 22.04+ recommended)
- CMake 3.16+
- C++17 compiler (GCC 11+ or Clang 14+)
- Boost 1.75+
- OpenSSL
- Conan package manager (installed automatically by Makefile)
```bash
# Ubuntu/Debian
sudo apt-get install build-essential cmake git libboost-all-dev libssl-dev pkg-config
```
### Clone and build
```bash
git clone https://github.com/lethean-io/blockchain.git
cd blockchain
# Testnet build
make testnet
# Mainnet build
make mainnet
```
### Build outputs
| Binary | Description |
|--------|-------------|
| `lethean-chain-node` | Blockchain daemon |
| `lethean-wallet-cli` | Wallet CLI (also serves as RPC server) |
| `lethean-chain-tool` | Chain utility (export/import) |
| `lethean-testnet-chain-node` | Testnet daemon (with `-DTESTNET=1`) |
| `lethean-testnet-wallet-cli` | Testnet wallet |
### Known issues
- **Wallet build requires TOR library** — the `tor-connect` submodule may not be available. Add `DISABLE_TOR=TRUE` to CMake flags if the wallet build fails.
- **Conan cache** — first build downloads dependencies via Conan. Subsequent builds use the cache.
### Release packaging
```bash
# After building:
make package
# Creates .tar.gz in build/packages/
```
### CI/CD
A Forgejo Actions workflow is available at `.forgejo/workflows/build-release.yml` for automated builds on tag push.
> **Verified:** Testnet and mainnet binaries built from source on Ubuntu 24.04 with GCC 14. Daemon builds clean, wallet build requires TOR workaround.

View file

@ -6,32 +6,32 @@ sidebar_position: 2
This example illustrates and explains the usage of a technology we call **IonicSwap**, which involves exchanging one asset for another within a single transaction.
Such a transaction is created collaboratively by two users using a secure trustless mechanism (see section 2.4 in [whitepaper](https://hyle-team.github.io/docs/zano/Zano_tokenization_platform.pdf) "Consolidated Transactions"). Initially, one user creates one part of the transaction, and then the second user adds the second part necessary for the transaction to become valid. Afterward, the transaction is sent to the network.
Such a transaction is created collaboratively by two users using a secure trustless mechanism (see section 2.4 in [whitepaper](https://hyle-team.github.io/docs/lethean/Lethean_tokenization_platform.pdf) "Consolidated Transactions"). Initially, one user creates one part of the transaction, and then the second user adds the second part necessary for the transaction to become valid. Afterward, the transaction is sent to the network.
Traditionally, we will use the commonly used cryptographic designations for the parties involved - **Initiator** and **Finalizer**. Initiator will act as the initiator, creating the **Ionic Swap Proposal** and sending it to Finalizer, who will then make a decision whether to accept it or not.
Let's assume that the native token **Zano** is circulating in the network with an asset_id of "d6329b5b1f7c0805b5c345f4957554002a2f557845f64d7645dae0e051a6498a".
Let's assume that the native token **Lethean** is circulating in the network with an asset_id of "d6329b5b1f7c0805b5c345f4957554002a2f557845f64d7645dae0e051a6498a".
Additionally, let's assume that there is a token called **CT** with an asset_id of "e03a140b8447d2895290022b25c06bdabea514e2475ae56ce5bcbc554ab9865c".
Let's assume **Initiator** has the following address and balance in her wallet:
```
ZxD4VNFRSHwMK3DY2Ka66C4SxGiAesSfrcC7vn1u6PSpjMq5v54Pt4wiW4FfGWtrJ55WuvoXtCCYeAL6mEvYU7na1xQioGffJ
iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY
balance unlocked / [balance total] ticker asset id
16387469.748 ZANO d6329b5b....51a6498a
16387469.748 LTHN d6329b5b....51a6498a
14.0 CT e03a140b....4ab9865c
```
And **Finalizer** has a wallet with the following address and balance:
```
ZxDAcbaxXkyWRgYbeARBpngfmFat5TjDjjQA5NAbouB9eytwGWJqA5shAVYeCAHWPo254DF2o2X1td79PNvRr2Yc1b9Ep67ff
iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY
balance unlocked / [balance total] ticker asset id
11738.97 ZANO d6329b5b....51a6498a
11738.97 LTHN d6329b5b....51a6498a
```
Initiator is planning to offer Finalizer to exchange 2 coins of the CT token that she possesses (but Finalizer does not) for 10 native coins of ZANO (which Finalizer has). To do this, she generates a proposal through an API call [ionic_swap_generate_proposal](https://docs.zano.org/docs/build/rpc-api/wallet-rpc-api/ionic_swap_generate_proposal) in her wallet with the following parameters:
Initiator is planning to offer Finalizer to exchange 2 coins of the CT token that she possesses (but Finalizer does not) for 10 native coins of LTHN (which Finalizer has). To do this, she generates a proposal through an API call [ionic_swap_generate_proposal](https://testnet-docs.lthn.io/docs/build/rpc-api/wallet-rpc-api/ionic_swap_generate_proposal) in her wallet with the following parameters:
```json json
{
@ -56,7 +56,7 @@ Initiator is planning to offer Finalizer to exchange 2 coins of the CT token tha
"fee_paid_by_a": 10000000000,
"expiration_time": 0
},
"destination_address": "ZxDAcbaxXkyWRgYbeARBpngfmFat5TjDjjQA5NAbouB9eytwGWJqA5shAVYeCAHWPo254DF2o2X1td79PNvRr2Yc1b9Ep67ff"
"destination_address": "iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY"
}
}
```
@ -67,7 +67,7 @@ In **fee_paid_by_a** she specifies how much fee of this transaction Initiator wi
In a **to_finalizer** entry Initiator put list of assets that she wants to transfer to Finalizer, in our case it's only asset "CT" with asset_id "e03a140b8447d2895290022b25c06bdabea514e2475ae56ce5bcbc554ab9865c".
In a **to_initiator**entry Alic put list of assets that she expect to get in exchange, in our case it's 10 coins of Zano (native asset_id "d6329b5b1f7c0805b5c345f4957554002a2f557845f64d7645dae0e051a6498a")
In a **to_initiator**entry Alic put list of assets that she expect to get in exchange, in our case it's 10 coins of Lethean (native asset_id "d6329b5b1f7c0805b5c345f4957554002a2f557845f64d7645dae0e051a6498a")
As a result of this API call Initiator receive proposal in raw hex format:
@ -85,7 +85,7 @@ As a result of this API call Initiator receive proposal in raw hex format:
After **Initiator** got this response, she sends **hex_raw_proposal** to Finalizer by messenger/email or any other available channel.
After **Finalizer** receives the raw proposal from **Initiator**, his first step is to analyze the proposal and ensure that the transaction entails the conditions that suit him. To do this, he calls the API [ionic_swap_get_proposal_info](https://docs.zano.org/docs/build/rpc-api/wallet-rpc-api/ionic_swap_get_proposal_info) from his wallet and obtains the proposal details that are validated by his wallet using his keys. In our case request and response supposed to look like this:
After **Finalizer** receives the raw proposal from **Initiator**, his first step is to analyze the proposal and ensure that the transaction entails the conditions that suit him. To do this, he calls the API [ionic_swap_get_proposal_info](https://testnet-docs.lthn.io/docs/build/rpc-api/wallet-rpc-api/ionic_swap_get_proposal_info) from his wallet and obtains the proposal details that are validated by his wallet using his keys. In our case request and response supposed to look like this:
Request:
@ -132,7 +132,7 @@ Response:
>
> It is critically important for **Finalizer** to analyze this structure and **ensure** that the conditions described therein perfectly reflect his intentions regarding the upcoming swap transaction.
After Finalizer reviewed structure of the proposal, he call API [ionic_swap_accept_proposal](https://docs.zano.org/docs/build/rpc-api/wallet-rpc-api/ionic_swap_accept_proposal) and by calling this he execute the swap operation.
After Finalizer reviewed structure of the proposal, he call API [ionic_swap_accept_proposal](https://testnet-docs.lthn.io/docs/build/rpc-api/wallet-rpc-api/ionic_swap_accept_proposal) and by calling this he execute the swap operation.
Request:
@ -166,26 +166,27 @@ After swap tx got confirmed,**Initiator** balance change would look like this:
```
height 42712, tx c08522c94355524cc8a1fa1514419814e99989ba503382256cbffc39a733a186
2.0 spent CT[*]
9.99 received, ZANO
9.99 received, LTHN
Refresh done, blocks received: 42775
balance unlocked / [balance total] ticker asset id
16387479.738 ZANO d6329b5b....51a6498a
16387479.738 LTHN d6329b5b....51a6498a
12.0 CT e03a140b....4ab9865c
```
Pay attention to transaction c08522c94355524cc8a1fa1514419814e99989ba503382256cbffc39a733a186. For Initiator's wallet, this transaction simultaneously sends the CT token and receives ZANO (the amount minus the transaction fee).
Pay attention to transaction c08522c94355524cc8a1fa1514419814e99989ba503382256cbffc39a733a186. For Initiator's wallet, this transaction simultaneously sends the CT token and receives LTHN (the amount minus the transaction fee).
For **Finalizer** balance change would look like that:
```
height 42712, tx c08522c94355524cc8a1fa1514419814e99989ba503382256cbffc39a733a186
10.0 spent ZANO
10.0 spent LTHN
2.0 received, CT[*]
Refresh done, blocks received: 42776
balance unlocked / [balance total] ticker asset id
11728.97 ZANO d6329b5b....51a6498a
11728.97 LTHN d6329b5b....51a6498a
2.0 CT e03a140b....4ab9865c
```
From Finalizer's wallet perspective same transaction c08522c94355524cc8a1fa1514419814e99989ba503382256cbffc39a733a186 sends 10 Zano and receives 2 CT tokens.
From Finalizer's wallet perspective same transaction c08522c94355524cc8a1fa1514419814e99989ba503382256cbffc39a733a186 sends 10 Lethean and receives 2 CT tokens.

View file

@ -4,9 +4,9 @@ sidebar_position: 1
# Overview
Confidential Assets are privacy tokens with all the features of native Zano coin
Confidential Assets are privacy tokens with all the features of native Lethean coin
Confidential Assets Commands are availabe trough CLI interface (simplewallet)
Confidential Assets Commands are availabe trough CLI interface (lethean-wallet-cli)
### Asset Methods
@ -14,7 +14,7 @@ Full list of supported commands available in the Methods section. Assets can be
### Asset Creation Example
To deploy a new asset on the Zano blockchain, you need to prepare a JSON-formatted file with asset parameters. Heres an example:
To deploy a new asset on the Lethean blockchain, you need to prepare a JSON-formatted file with asset parameters. Heres an example:
```
{
@ -33,6 +33,50 @@ 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
You should see a confirmation message upon successful execution.
### Asset via Wallet RPC
```bash
curl -X POST http://127.0.0.1:36944/json_rpc \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc":"2.0","method":"deploy_asset",
"params":{
"asset_descriptor":{
"ticker":"TEST",
"full_name":"Test Token",
"total_max_supply":100000000000000000,
"current_supply":1000000000000000,
"decimal_point":12,
"meta_info":"A test token on Lethean"
}
}
}'
```
### Querying assets on chain
```bash
# List all assets
curl -X POST http://127.0.0.1:36941/json_rpc \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":"0","method":"get_assets_list","params":{"offset":0,"count":100}}'
# Get specific asset info
curl -X POST http://127.0.0.1:36941/json_rpc \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":"0","method":"get_asset_info","params":{"asset_id":"ASSET_ID_HERE"}}'
```
The native LTHN asset ID is: `d6329b5b1f7c0805b5c345f4957554002a2f557845f64d7645dae0e051a6498a`
### Requirements
- **HF4 (Zarcanum)** must be active — height 11,000 on testnet/mainnet
- Deploying an asset requires LTHN for the transaction fee
- Only the deployer (maintainer) can emit or burn the asset
- Asset ownership can be transferred via `transfer_asset_ownership`
> **Verified:** `get_asset_info` RPC tested on testnet — returns native LTHN asset with ticker "LTHN", decimal_point 12. Asset deployment requires HF4.
![alt launch-asset-confirmation-message](../../../static/img/build/testnet-resources/how-to-launch-confidential-asset/launch-asset-confirmation-message.png "launch-asset-confirmation-message")

View file

@ -2,31 +2,59 @@
slug: /use/deeplinks
---
# Deeplinks
# Deep Links
Based on materials of Matthew Reichardt [me@matthewreichardt.com](mailto:me@matthewreichardt.com) ([https://github.com/hyle-team/zano/issues/269](https://github.com/hyle-team/zano/issues/269))
Lethean uses the `lthn://` URI scheme for deep linking into wallet applications. This allows websites, apps, and QR codes to trigger wallet actions.
### Zano URI Scheme
### URI Scheme
**action** - type of action requested, supported actions:
- send - simply send coins to given address
### Action "send"
Example of **send** command:
**zano:action
=send&address=ZxCkvE7zhS6JuFE5neAaTtcY8PUT2CwfLZJQWP32jrELB1Vg9oSJyGJDyRWurqX6SXSqxjGz2yrAKaMqmxDa7E8313igosBVT\&comment=Some%20payment**
- address - address of recipient
- amount - amount of asset to be transfered (in a units with decimal point, like 10.0 coins)
- asset_id - id of the asset to be transfered
- comment - comment about payment\[optional]
Here is how link would look like in html:
```html
<p>
<a href="zano:action=send&address=ZxCkvE7zhS6JuFE5neAaTtcY8PUT2CwfLZJQWP32jrELB1Vg9oSJyGJDyRWurqX6SXSqxjGz2yrAKaMqmxDa7E8313igosBVT&amount=0.1&comment=Some%20payment">Zano link</a>
</p>
```
lthn://transfer/?address=ADDRESS&amount=AMOUNT&asset_id=ASSET_ID&comment=COMMENT
```
### Parameters
| Parameter | Required | Description |
|-----------|----------|-------------|
| `address` | Yes | Recipient address (starts with `iTHN`) |
| `amount` | No | Amount to send (decimal, e.g. `10.5`) |
| `asset_id` | No | Asset ID for custom tokens (omit for native LTHN) |
| `comment` | No | Payment comment (URL-encoded) |
### Examples
**Send 1 LTHN:**
```
lthn://transfer/?address=iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY&amount=1
```
**Send with comment:**
```
lthn://transfer/?address=iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY&amount=0.5&comment=VPN%20subscription
```
### HTML Usage
```html
<a href="lthn://transfer/?address=iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY&amount=1&comment=Donation">
Pay 1 LTHN
</a>
```
### Implementation
The `lthn://` scheme is handled by:
- **Desktop wallet** (Lethean Desktop) — registered as system URL handler
- **Browser extension** ([Lethean Companion](https://explorer.lthn.io)) — intercepts `lthn://` links in web pages
- **Mobile wallet** (React Native) — registered as app deep link
The [companion test suite](https://github.com/lethean-io) can be used to test deep link generation.
### Domains
| Domain | Purpose |
|--------|---------|
| `.lthn` | Handshake TLD — agent federation identities |
| `lt.hn` | Short URL domain |
| `lethean.io` | Primary website |
| `lthn.sh` | Lab/testnet services |

View file

@ -16,7 +16,7 @@ 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.
Make sure you have built the recommended version of Boost manually (via `./bootstrap.sh`, `./b2`). Please refer to our [github page](https://github.com/lethean-io) for reference.
### Wallet RPC is not working. We got "Core is busy" in logs/responses
@ -24,7 +24,7 @@ Make sure the daemon is synchronized with the network. It may take up to few hou
### How to validate an address?
To validate an address you can use [split_integrated_address](https://docs.zano.org/docs/build/rpc-api/wallet-rpc-api/split_integrated_address). It also works with standard addresses (non integrated one)
To validate an address you can use [split_integrated_address](https://testnet-docs.lthn.io/docs/build/rpc-api/wallet-rpc-api/split_integrated_address). It also works with standard addresses (non integrated one)
### How to get all integrated addresses on a wallet?
@ -37,7 +37,7 @@ Yes, It is highly recommended to use randomly generated payment id's to identify
### What transaction fee should we specify in RPCs?
Minimum transaction fee is 0.01 ZANO.
Minimum transaction fee is 0.01 LTHN.
### What are "pub_keys" that we see in transaction output via explorer?
@ -49,4 +49,5 @@ 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).
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://testnet-docs.lthn.io/reference/get_bulk_payments) or [get_payments](https://testnet-docs.lthn.io/reference/get_payments-2).

View file

@ -1,8 +1,8 @@
# Gateway Addresses (GW) in Zano
# Gateway Addresses (GW) in Lethean
## 1. What are Gateway Addresses?
A Gateway Address (GW) is a new type of address in the Zano blockchain that will be introduced starting with Hard Fork 6. Unlike classic addresses, which operate under the UTXO model, GW addresses use an **account-based model**, meaning that the balance is stored directly on the blockchain rather than being represented as a set of separate UTXOs.
A Gateway Address (GW) is a new type of address in the Lethean blockchain that will be introduced starting with Hard Fork 6. Unlike classic addresses, which operate under the UTXO model, GW addresses use an **account-based model**, meaning that the balance is stored directly on the blockchain rather than being represented as a set of separate UTXOs.
GW addresses are designed to simplify integration with external systems such as cross-chain bridges, DEXs, exchanges, and payment gateways. They follow an approach that is more familiar to these services and provide a simple API that is, in some respects, closer to those used by more traditional blockchain platforms such as Bitcoin and Ethereum. This makes it easier for such services to use established custody frameworks, including MPC, and helps make the integration process more transparent and reliable.
@ -10,7 +10,7 @@ In addition, because GW addresses use an **account-based model**, they avoid the
## 2. Structure
Gateway Addresses are entities that must first be registered on the blockchain before they can be used. A GW address can only be registered through a standard Zano wallet by calling the Wallet RPC API(see doc below). Once a GW address is registered, it is assigned an ID, which is effectively its public view key, and presented to user as a string starting from gwZ... (regular) or gwiZ...(integrated). After that, coins can be sent to this GW address.
Gateway Addresses are entities that must first be registered on the blockchain before they can be used. A GW address can only be registered through a standard Lethean wallet by calling the Wallet RPC API(see doc below). Once a GW address is registered, it is assigned an ID, which is effectively its public view key, and presented to user as a string starting from gwZ... (regular) or gwiZ...(integrated). After that, coins can be sent to this GW address.
Each Gateway Address is associated with two private keys controlled by its owner: a **view key** and a **spend key(owner key)**. In the simplest case, the view key and the spend key may be the same.
@ -24,19 +24,19 @@ The **view key** is used exclusively to derive a shared secret between the sende
The **spend key** acts as a master key that controls all operations related to a GW address, including spending funds and assigning a new owner by replacing the spend key. From a security perspective, this is the most critical key, as it ultimately controls all funds associated with the address.
To make integration with Zano convenient for a wide range of services, we implemented support for several signature types that are widely used across the blockchain industry. Below is a description of these signature types, along with the names of the corresponding API fields in the Wallet RPC API [register_gateway_address](https://docs.zano.org/docs/build/rpc-api/wallet-rpc-api/register_gateway_address):
To make integration with Lethean convenient for a wide range of services, we implemented support for several signature types that are widely used across the blockchain industry. Below is a description of these signature types, along with the names of the corresponding API fields in the Wallet RPC API [register_gateway_address](https://testnet-docs.lthn.io/docs/build/rpc-api/wallet-rpc-api/register_gateway_address):
| Name in API | Curve | Public key | Signature | Use case |
|---|---|---|---|---|
| `opt_owner_ecdsa_pub_key` | secp256k1 | 33 bytes (compressed) | 64 bytes <br />(r \|\| s) | **ECDSA over secp256k1**. This signature type is widely used in blockchain projects such as Ethereum, Bitcoin, and others. |
| `opt_owner_eddsa_pub_key` | Ed25519 | 32 bytes | 64 bytes <br />(R \|\| s) | **EDDSA** (also referred to as EdDSA). This is the variant used in Solana. |
| `opt_owner_custom_schnorr_pub_key` | Ed25519 | 32 bytes | 64 bytes <br />(c \|\| y) | **Zano custom Schnorr signature**, also based on Ed25519. |
| `opt_owner_custom_schnorr_pub_key` | Ed25519 | 32 bytes | 64 bytes <br />(c \|\| y) | **Lethean custom Schnorr signature**, also based on Ed25519. |
**opt_owner_ecdsa_pub_key(ECDSA)** and **opt_owner_eddsa_pub_key(Ed25519)** were implemented primarily because these standards are widely supported across the blockchain industry and because there is extensive tooling available for building MPC solutions with these key types.
**opt_owner_custom_schnorr_pub_key(Zano custom Schnorr signature)** is an internal algorithm native to the Zano codebase and integrated into Zanos core transaction protocols. It has similarities to the scheme used in Solana and relies on the same elliptic curve, but for historical reasons it differs in several implementation details, including the hash function used in the Schnorr algorithm.
**opt_owner_custom_schnorr_pub_key(Lethean custom Schnorr signature)** is an internal algorithm native to the Lethean codebase and integrated into Letheans core transaction protocols. It has similarities to the scheme used in Solana and relies on the same elliptic curve, but for historical reasons it differs in several implementation details, including the hash function used in the Schnorr algorithm.
Note: View key (`view_pub_key`) can be only **Zano custom Schnorr signature**, as it involved in internal protocol machinery. Only spend key could be assigned as **ECDSA**/**EDDSA***
Note: View key (`view_pub_key`) can be only **Lethean custom Schnorr signature**, as it involved in internal protocol machinery. Only spend key could be assigned as **ECDSA**/**EDDSA***
All three types use the compact signature format (64 bytes, without the recovery byte `v`). The signature is transmitted as a hex string (128 characters).
@ -54,13 +54,13 @@ This design makes GW addresses suitable for use cases such as bridges, exchanges
## 3. Creating a GW address
Registration of a GW address is done via **wallet RPC** (`register_gateway_address`), a Zano wallet with sufficient balance is required.
Registration of a GW address is done via **wallet RPC** (`register_gateway_address`), a Lethean wallet with sufficient balance is required.
### Prerequisites
#### **IMPORTANT**: You must use **YOUR OWN NODE**, as the `view key` will be transferred there.
- Running and synced Zano daemon (`zanod`) on a network with hard fork 6+
- A wallet with RPC server enabled [(HOWTO)](https://docs.zano.org/docs/build/exchange-guidelines/starting-the-daemon-and-the-wallet-application-as-rpc-server)
- Balance of at least **~100.01 ZANO** (100 ZANO - Registration fee + Default fee)
- Running and synced Lethean daemon (`lethean-chain-node`) on a network with hard fork 6+
- A wallet with RPC server enabled [(HOWTO)](https://testnet-docs.lthn.io/docs/build/exchange-guidelines/starting-the-daemon-and-the-wallet-application-as-rpc-server)
- Balance of at least **~100.01 LTHN** (100 LTHN - Registration fee + Default fee)
### Steps
@ -86,7 +86,7 @@ L = 2^252 + 27742317777372353535851937790883648493
If the secret scalar is chosen arbitrarily (without the restriction `< L`), the resulting point may contain a **torsion component** — a small multiplier of order 2, 4, or 8. Such points lie outside the main subgroup and create a vulnerability: two different scalars can generate the same point (address collision).
During registration, Zano Core verifies that `view_pub_key` belongs to the main L-subgroup (no torsion). Therefore, when generating a view key, you need to:
During registration, Lethean Core verifies that `view_pub_key` belongs to the main L-subgroup (no torsion). Therefore, when generating a view key, you need to:
1. Select a random scalar `s` in the range `[1, L-1]`
2. Compute the public key as `s * G`
@ -97,7 +97,7 @@ This ensures that the public key resides in the main subgroup and that the regis
[EIP-2 explaining link](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2.md)
For ECDSA signatures (secp256k1), Zano requires that the value of `s` be in the "lower half" (`s <= n/2`, where `n` is the order of the secp256k1 curve). This is a standard requirement (EIP-2) that prevents signature malleability. Our `ethers.js` v6 library automatically normalizes `s` when calling `signingKey.sign()`, so no additional action is required.
For ECDSA signatures (secp256k1), Lethean requires that the value of `s` be in the "lower half" (`s <= n/2`, where `n` is the order of the secp256k1 curve). This is a standard requirement (EIP-2) that prevents signature malleability. Our `ethers.js` v6 library automatically normalizes `s` when calling `signingKey.sign()`, so no additional action is required.
**nodejs - keygen example**
@ -150,10 +150,10 @@ User Wallet RPC Blockchain
| | |
| register_gateway_ | |
| address ----------> | |
| | TX (fee=100 ZANO) |
| | TX (fee=100 LTHN) |
| | -----------------> |
| | | Validation:
| | | - fee >= 100 ZANO
| | | - fee >= 100 LTHN
| | | - no torsion
| | | - address not taken
| | |
@ -278,7 +278,7 @@ This approach allows signing transactions **outside the daemon** - for example,
### General flow
```
External service Daemon (zanod) Blockchain
External service Daemon (lethean-chain-node) Blockchain
| | |
| gateway_create_ | |
| transfer --------------> | |
@ -319,7 +319,7 @@ External service Daemon (zanod) Blockchain
"destinations": [
{
"amount": 1000000000000,
"address": "ZxCBjKr7pukfAKj5uiR2kbYPAu56F4rxVVH6m6m4Uk6f5zusV6xPKhW1LStNDiibPjjNWXUYKSmUScphZjZHfzpX32JyFYyBv",
"address": "iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY",
"asset_id": "d6329b5b1f7c0805b5c345f4957554002a2f557845f64d7645dae0e051a6498a"
}
],
@ -617,7 +617,7 @@ async function getGatewayHistory(gwAddress, viewSecretKey, offset = 0, count = 5
## 6. Integrated GW addresses (payment_id)
GW addresses support **integrated addresses** with embedded payment IDs, similar to regular Zano addresses.
GW addresses support **integrated addresses** with embedded payment IDs, similar to regular Lethean addresses.
- Integrated GW addresses start with `gwiZ...`
- Payment ID: 8 bytes (16 hex characters)
@ -672,9 +672,9 @@ async function createIntegratedAddress(gwAddress, paymentId) {
Below is a complete script that demonstrates the entire GW address lifecycle: key generation, registration, funding, transferring from GW, and reading history.
**Prerequisites:**
- `zanod` running and synced (port 11211)
- `simplewallet` running with RPC enabled (`--rpc-bind-port=11112`)
- Wallet has at least ~110 ZANO for registration fee + test transfers
- `lethean-chain-node` running and synced (port 36941)
- `lethean-wallet-cli` running with RPC enabled (`--rpc-bind-port=11112`)
- Wallet has at least ~110 LTHN for registration fee + test transfers
```javascript
// npm i axios ethers @noble/ed25519
@ -683,7 +683,7 @@ const { ethers } = require('ethers');
const ed = require('@noble/ed25519');
const WALLET_RPC_URL = 'http://127.0.0.1:11112/json_rpc';
const DAEMON_RPC_URL = 'http://127.0.0.1:11211/json_rpc';
const DAEMON_RPC_URL = 'http://127.0.0.1:36941/json_rpc';
const DEFAULT_FEE = 10_000_000_000;
@ -775,7 +775,7 @@ async function main() {
console.log('Owner ETH private key:', ownerWallet.privateKey);
console.log('Owner ETH public key:', ownerEthPubKey);
console.log('\n=== Registration (fee 100 ZANO) ===');
console.log('\n=== Registration (fee 100 LTHN) ===');
const regResult = await callWalletRpc('register_gateway_address', {
view_pub_key: viewPubKey,
@ -802,7 +802,7 @@ async function main() {
console.log('Descriptor:', JSON.stringify(addressInfo.descriptor_info, null, 2));
console.log('Balances:', JSON.stringify(addressInfo.balances));
console.log('\n=== Sending 2 ZANO to GW address ===');
console.log('\n=== Sending 2 LTHN to GW address ===');
const sendToResult = await callWalletRpc('transfer', {
destinations: [{ amount: 2_000_000_000_000, address: gwAddress }],
@ -819,7 +819,7 @@ async function main() {
assertOk(updatedInfo, 'gateway_get_address_info');
console.log('GW balances after funding:', JSON.stringify(updatedInfo.balances, null, 2));
console.log('\n=== Sending 1 ZANO from GW address ===');
console.log('\n=== Sending 1 LTHN from GW address ===');
const walletInfo = await callWalletRpc('getaddress');
const recipientAddress = walletInfo.address;
@ -913,11 +913,12 @@ main();
| Method | RPC type | Description |
|---|---|---|
| [register_gateway_address](https://docs.zano.org/docs/build/rpc-api/wallet-rpc-api/register_gateway_address) | Wallet RPC | Register a new GW address (fee: 100 ZANO) |
| [gateway_get_address_info](https://docs.zano.org/docs/build/rpc-api/daemon-rpc-api/gateway_get_address_info) | Daemon RPC | Get information and balances of a GW address |
| [gateway_create_transfer](https://docs.zano.org/docs/build/rpc-api/daemon-rpc-api/gateway_create_transfer) | Daemon RPC | Create an unsigned transaction from a GW address |
| [gateway_sign_transfer](https://docs.zano.org/docs/build/rpc-api/daemon-rpc-api/gateway_sign_transfer) | Daemon RPC | Sign a transaction with owner key |
| [sendrawtransaction](https://docs.zano.org/docs/build/rpc-api/daemon-rpc-api/sendrawtransaction) | Daemon RPC | Broadcast a signed transaction to the network |
| [gateway_get_address_history](https://docs.zano.org/docs/build/rpc-api/daemon-rpc-api/gateway_get_address_history) | Daemon RPC | Get GW address transaction history (requires view key for decryption) |
| [get_integrated_address](https://docs.zano.org/docs/build/rpc-api/daemon-rpc-api/get_integrated_address) | Daemon RPC | Create an integrated `gwiZ...` address with payment ID |
| [transfer](https://docs.zano.org/docs/build/rpc-api/wallet-rpc-api/transfer) | Wallet RPC | Send funds TO a GW address (standard method) |
| [register_gateway_address](https://testnet-docs.lthn.io/docs/build/rpc-api/wallet-rpc-api/register_gateway_address) | Wallet RPC | Register a new GW address (fee: 100 LTHN) |
| [gateway_get_address_info](https://testnet-docs.lthn.io/docs/build/rpc-api/daemon-rpc-api/gateway_get_address_info) | Daemon RPC | Get information and balances of a GW address |
| [gateway_create_transfer](https://testnet-docs.lthn.io/docs/build/rpc-api/daemon-rpc-api/gateway_create_transfer) | Daemon RPC | Create an unsigned transaction from a GW address |
| [gateway_sign_transfer](https://testnet-docs.lthn.io/docs/build/rpc-api/daemon-rpc-api/gateway_sign_transfer) | Daemon RPC | Sign a transaction with owner key |
| [sendrawtransaction](https://testnet-docs.lthn.io/docs/build/rpc-api/daemon-rpc-api/sendrawtransaction) | Daemon RPC | Broadcast a signed transaction to the network |
| [gateway_get_address_history](https://testnet-docs.lthn.io/docs/build/rpc-api/daemon-rpc-api/gateway_get_address_history) | Daemon RPC | Get GW address transaction history (requires view key for decryption) |
| [get_integrated_address](https://testnet-docs.lthn.io/docs/build/rpc-api/daemon-rpc-api/get_integrated_address) | Daemon RPC | Create an integrated `gwiZ...` address with payment ID |
| [transfer](https://testnet-docs.lthn.io/docs/build/rpc-api/wallet-rpc-api/transfer) | Wallet RPC | Send funds TO a GW address (standard method) |

View file

@ -7,4 +7,53 @@ Unlike Bitcoin, CryptoNote family coins have different, more effective approach
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/docs/build/rpc-api/wallet-rpc-api/make_integrated_address) and [split_integrated_address](https://docs.zano.org/docs/build/rpc-api/wallet-rpc-api/split_integrated_address) below.
### Creating an integrated address
```bash
# Generate with random payment ID
curl -X POST http://127.0.0.1:36944/json_rpc \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":"0","method":"make_integrated_address","params":{}}'
# Generate with specific payment ID (8 bytes hex)
curl -X POST http://127.0.0.1:36944/json_rpc \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":"0","method":"make_integrated_address","params":{"payment_id":"cafebabe12345678"}}'
```
**Response:**
```json
{
"result": {
"integrated_address": "iTHnNj4dWPHP1yy8xH2y5iQa...",
"payment_id": "cafebabe12345678"
}
}
```
Note: Standard addresses start with `iTHN` (uppercase N), integrated addresses start with `iTHn` (lowercase n).
### Splitting an integrated address
```bash
curl -X POST http://127.0.0.1:36944/json_rpc \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":"0","method":"split_integrated_address","params":{"integrated_address":"iTHnNj4dWPHP1yy8xH2y5iQa..."}}'
```
### Detecting deposits
Use `get_bulk_payments` to poll for incoming payments by payment ID:
```bash
curl -X POST http://127.0.0.1:36944/json_rpc \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":"0","method":"get_bulk_payments","params":{"payment_ids":["cafebabe12345678"],"min_block_height":10000}}'
```
For more details, see:
- [make_integrated_address](/docs/build/rpc-api/wallet-rpc-api/make_integrated_address)
- [split_integrated_address](/docs/build/rpc-api/wallet-rpc-api/split_integrated_address)
- [get_bulk_payments](/docs/build/rpc-api/wallet-rpc-api/get_bulk_payments)
> **Verified:** Integrated address generation tested on Lethean testnet. The `iTHn` prefix was confirmed for integrated addresses vs `iTHN` for standard addresses.

View file

@ -17,14 +17,14 @@ header.payload.signature
## Use Case in Our Project
We use JWT authentication to secure HTTP requests to our local JSON-RPC API betweedn Zano desktop App and Zano Extension (Zano Companion). Each request includes a signed JWT in the `Zano-Access-Token` header, which is verified by the server.
You can enable JWT authentification in simplewallet as well by adding `--jwt-secret=hsjejkcdskndspo230XASIijksk123i9x5` when simplewallet run in server mode (with --rpc-bind-port=PORT_NUM option).
We use JWT authentication to secure HTTP requests to our local JSON-RPC API betweedn Lethean desktop App and Lethean Extension (Lethean Companion). Each request includes a signed JWT in the `Lethean-Access-Token` header, which is verified by the server.
You can enable JWT authentification in lethean-wallet-cli as well by adding `--jwt-secret=hsjejkcdskndspo230XASIijksk123i9x5` when lethean-wallet-cli run in server mode (with --rpc-bind-port=PORT_NUM option).
---
## Code example on nodejs
Here is a review of [example](https://github.com/hyle-team/zano/blob/master/utils/JS/JWT/example.js) of using JWT auth to call getbalance function from wallet.
Here is a review of [example](https://github.com/lethean-io/blob/master/utils/JS/JWT/example.js) of using JWT auth to call getbalance function from wallet.
### Dependencies
@ -85,7 +85,7 @@ The payload contains:
```js
const payload = {
body_hash: bodyHash,
user: 'zano_extension',
user: 'lethean_extension',
salt: generateRandomString(64),
exp: Math.floor(Date.now() / 1000) + 60,
};
@ -105,7 +105,7 @@ const token = createJWSToken(payload, JWT_SECRET);
axios.post('http://127.0.0.1:11111/json_rpc', requestData, {
headers: {
'Content-Type': 'application/json',
'Zano-Access-Token': token,
'Lethean-Access-Token': token,
},
})
.then(response => {
@ -150,6 +150,7 @@ axios.post('http://127.0.0.1:11111/json_rpc', requestData, {
JWT provides a secure and compact mechanism for authenticating API requests. In this project, we:
- Hash the request body.
- Create a signed JWT with a time-limited payload.
- Send it in the `Zano-Access-Token` HTTP header.
- Send it in the `Lethean-Access-Token` HTTP header.
This ensures authenticity, integrity, and freshness of every client request.

View file

@ -6,34 +6,34 @@ sidebar_position: 1
## Introduction
Zano is a privacy-oriented blockchain from the CryptoNote family, which makes working with the wallet somewhat different from traditional blockchains like Bitcoin or Ethereum. In this article, we will show how to work with the wallet and how to build multi-user custody on it.
Lethean is a privacy-oriented blockchain from the CryptoNote family, which makes working with the wallet somewhat different from traditional blockchains like Bitcoin or Ethereum. In this article, we will show how to work with the wallet and how to build multi-user custody on it.
Architecturally, Zano consists of two modules - a **full node(daemon)** and a **wallet**. Both of these modules provide their own RPC API. Therefore, when you set up Zano on your server, you compile the **full node** (make target “**daemon**”, executable name **zanod**) and the console wallet (**simplewallet**), and run both, so that the wallet can connect to the full node through the RPC API via localhost (For security reasons, it is highly recommended to use ONLY your own full node).
Architecturally, Lethean consists of two modules - a **full node(daemon)** and a **wallet**. Both of these modules provide their own RPC API. Therefore, when you set up Lethean on your server, you compile the **full node** (make target “**daemon**”, executable name **lethean-chain-node**) and the console wallet (**lethean-wallet-cli**), and run both, so that the wallet can connect to the full node through the RPC API via localhost (For security reasons, it is highly recommended to use ONLY your own full node).
<u>Recommended security practice</u>: run the wallet process (simplewallet) on an internal host that **has no Internet connectivity**. The only outbound connection this host should make is to the fullnode RPC service (zanod, port 11211 by default). Keeping the machine that holds your private keys completely isolated from the public network greatly reduces your attack surface and provides a markedly more secure setup.
<u>Recommended security practice</u>: run the wallet process (lethean-wallet-cli) on an internal host that **has no Internet connectivity**. The only outbound connection this host should make is to the fullnode RPC service (lethean-chain-node, port 36941 by default). Keeping the machine that holds your private keys completely isolated from the public network greatly reduces your attack surface and provides a markedly more secure setup.
Thus, the RPC API in Zano is divided into two parts - the DAEMON RPC API and the WALLET RPC API. This is due to the fact that, unlike EVM or Bitcoin networks, you cannot simply request the balance of a specific address from the Zano node. To get the balance of a specific address, you need to know its secret key and perform computationally complex operations. Therefore, there is a process of synchronizing the wallet with the daemon. If you have a wallet created, for example, a year or two ago and you haven't opened it for a long time or have restored it, the synchronization process may take some time. If the wallet was online a few days ago, the synchronization happens quickly - less than a minute.
Thus, the RPC API in Lethean is divided into two parts - the DAEMON RPC API and the WALLET RPC API. This is due to the fact that, unlike EVM or Bitcoin networks, you cannot simply request the balance of a specific address from the Lethean node. To get the balance of a specific address, you need to know its secret key and perform computationally complex operations. Therefore, there is a process of synchronizing the wallet with the daemon. If you have a wallet created, for example, a year or two ago and you haven't opened it for a long time or have restored it, the synchronization process may take some time. If the wallet was online a few days ago, the synchronization happens quickly - less than a minute.
Zano is a platform where anyone can deploy their own asset, which will have the same privacy features as Zano itself. Such assets are called **Confidential Assets**. Support for Confidential Assets is reflected in the API documentation and in this manual. Each asset has an identifier (**asset_id**), and only this asset_id identify this specific asset. All other attributes of the asset may match similar attributes of other assets
Lethean is a platform where anyone can deploy their own asset, which will have the same privacy features as Lethean itself. Such assets are called **Confidential Assets**. Support for Confidential Assets is reflected in the API documentation and in this manual. Each asset has an identifier (**asset_id**), and only this asset_id identify this specific asset. All other attributes of the asset may match similar attributes of other assets
## Custom transaction generation process and TSS
Some exchanges and custody services use their own frameworks for working with cryptocurrencies, which require manually constructing transactions. This approach generally works well for non-privacy blockchains such as Ethereum or Bitcoin with regular ECDSA signatures, but it can be extremely challenging with Zano. As a privacy coin, a Zano transaction includes a sophisticated set of proofs and signatures that secure it. As far as we are aware, there are no complete implementations of the Zano transaction-generation process and its proofs in languages other than the C++ reference implementation used in the official wallet codebase. If, for any reason, you still want to implement a manual process for creating Zano transactions, please review the following materials to understand the mathematics behind these proofs:
Some exchanges and custody services use their own frameworks for working with cryptocurrencies, which require manually constructing transactions. This approach generally works well for non-privacy blockchains such as Ethereum or Bitcoin with regular ECDSA signatures, but it can be extremely challenging with Lethean. As a privacy coin, a Lethean transaction includes a sophisticated set of proofs and signatures that secure it. As far as we are aware, there are no complete implementations of the Lethean transaction-generation process and its proofs in languages other than the C++ reference implementation used in the official wallet codebase. If, for any reason, you still want to implement a manual process for creating Lethean transactions, please review the following materials to understand the mathematics behind these proofs:
* Original CryptoNote protocol description(basic concepts of ring signatures and ephemeral keys) https://github.com/hyle-team/docs/blob/master/arch/cryptonote_wp_v2.0.pdf
* Zano original whitepaper(describes the way payload encrypted in tx) https://github.com/hyle-team/docs/blob/master/zano/Zano_WP_latest.pdf
* Extension of CLSAG that used in Zano signatures: https://github.com/hyle-team/docs/blob/master/zano/dv-CLSAG-extension/dv-CLSAG-extension.pdf
* RingCT and Confidential Assets: https://github.com/hyle-team/docs/blob/master/zano/CA_paper/Zano_CA_for_RingCT_and_Zarcanum_v1.1.pdf
* [optional] Confidential PoS: https://github.com/hyle-team/docs/blob/master/zano/PoS_with_Hiden_amounts_Zarcanum/Zarcanum-PoS-with-hidden-amounts.pdf
* Original CryptoNote protocol description(basic concepts of ring signatures and ephemeral keys) https://github.com/lethean-io/blob/master/arch/cryptonote_wp_v2.0.pdf
* Lethean original whitepaper(describes the way payload encrypted in tx) https://github.com/lethean-io/blob/master/lethean/Lethean_WP_latest.pdf
* Extension of CLSAG that used in Lethean signatures: https://github.com/lethean-io/blob/master/lethean/dv-CLSAG-extension/dv-CLSAG-extension.pdf
* RingCT and Confidential Assets: https://github.com/lethean-io/blob/master/lethean/CA_paper/Lethean_CA_for_RingCT_and_Zarcanum_v1.1.pdf
* [optional] Confidential PoS: https://github.com/lethean-io/blob/master/lethean/PoS_with_Hiden_amounts_Zarcanum/Zarcanum-PoS-with-hidden-amounts.pdf
## Creating a Wallet
To create a new wallet, you need to run the following command (you will be prompted to enter a new password for the wallet; do not use simple passwords and make sure to remember this password):
~/zano/build # src/simplewallet --generate-new-wallet=custody_wallet.zan
Zano simplewallet v2.0.0.333
~/lethean/build # src/lethean-wallet-cli --generate-new-wallet=custody_wallet.zan
Lethean lethean-wallet-cli v2.0.0.333
password: *******
Generated new wallet: ZxCk74TxaFsRvbHrvebi5fgBLXDWukJ3VRXk6PENQ4orUTRfh11EHjCgCBxokeg5FEPHumvqJ76ikKHnD43iGjsE1cVfgebFa
Generated new wallet: iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY
view key: f665686bbc719569e9f6c1e36058dcda011ddd55a584443b64c1e7bca5bbdd04
**********************************************************************
Your wallet has been generated.
@ -42,32 +42,32 @@ To create a new wallet, you need to run the following command (you will be promp
A wallet can operate in two modes - command line interface mode, when it is started only with the **--wallet-file** parameter, or RPC server mode, when in addition it has the **--rpc-bind-port=port_number** parameter. When the wallet is in command line mode, you can do various commands to it, such as **transfer** or **deploy_new_asset**, and thus work with the wallet. You can view the list of commands by typing **help** in command line mode.
### Creating a Wallet from custom seed phrase
If you want generate private keys from manually chosen words, you can pick 24 words from the list of words in this ([source file](https://github.com/hyle-team/zano/blob/master/src/common/mnemonic-encoding.cpp)) (keep in mind that this words are not compatible with bip39). Then you can use simplewallet to extend this seed to standard Zano seed phrase by using "--derive_custom_seed" command line option:
If you want generate private keys from manually chosen words, you can pick 24 words from the list of words in this ([source file](https://github.com/lethean-io/blob/master/src/common/mnemonic-encoding.cpp)) (keep in mind that this words are not compatible with bip39). Then you can use lethean-wallet-cli to extend this seed to standard Lethean seed phrase by using "--derive_custom_seed" command line option:
~/zano/build # src/simplewallet --derive_custom_seed
~/lethean/build # src/lethean-wallet-cli --derive_custom_seed
## Seed phrase backup
After you have created a new wallet, run it in command line mode to save the seed phrase:
src/simplewallet --wallet-file=custody_wallet.zan
Zano simplewallet v2.0.0.333
src/lethean-wallet-cli --wallet-file=custody_wallet.zan
Lethean lethean-wallet-cli v2.0.0.333
password: *******
Opened wallet: ZxCk74TxaFsRvbHrvebi5fgBLXDWukJ3VRXk6PENQ4orUTRfh11EHjCgCBxokeg5FEPHumvqJ76ikKHnD43iGjsE1cVfgebFa
Opened wallet: iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY
**********************************************************************
Use "help" command to see the list of available commands.
**********************************************************************
Starting refresh...
Refresh done, blocks received: 1440
balance unlocked / [balance total] ticker asset id
0.0 ZANO d6329b5b1f7c0805b5c345f4957554002a2f557845f64d7645dae0e051a6498a
[Zano wallet ZxCk74]:
0.0 LTHN d6329b5b1f7c0805b5c345f4957554002a2f557845f64d7645dae0e051a6498a
[Lethean wallet iTHNUN]:
After the wallet has synchronized, enter the command **show_seed**. First, the wallet will ask for its own password for security reasons (the one you specified when creating the wallet). After this, you will be prompted to enter a special password that will protect your seed phrase. ([More about Secure Seed](/docs/use/seed-phrase/)) If you leave this password empty, an unprotected seed phrase will be generated, and anyone who gains access to the seed phrase will be able to control all assets.
```
[Zano wallet ZxCk74]: show_seed
[Lethean wallet iTHNUN]: show_seed
Enter password to confirm operation:
*****
Please enter a password to secure this seed. Securing your seed is HIGHLY recommended. Leave password blank to stay unsecured.
@ -75,18 +75,18 @@ Remember, restoring a wallet from Secured Seed can only be done if you know its
Enter seed password: **********
Confirm seed password: **********
heart eat cost little goodbye arrive commit dreamer stick reason freeze left okay cousin frustrate certainly focus town proud chin stretch difference easily content couple land
[Zano wallet ZxCk74]:
[Lethean wallet iTHNUN]:
```
!!! Be sure to save this seed phrase in a secure place. If the seed phrase is lost, the wallet may become impossible to restore, and all assets may be lost.
Once youve backed up your seed phrase, you can launch the wallet in server mode for future operations:
src/simplewallet --wallet-file=custody_wallet.zan --rpc-bind-port=12345 --daemon-address=192.168.1.3:11211
src/lethean-wallet-cli --wallet-file=custody_wallet.zan --rpc-bind-port=12345 --daemon-address=192.168.1.3:36941
## Receiving Money with Payment ID
Each wallet file in Zano is always one address and one secret key (in fact, it's a two secrete keys, but this is not important in the context of this manual). Zano does not support HD wallets for a number of technical reasons. Instead, for multi-user support, a so-called **payment_id** is used, which is a special identifier associated with the user. Each incoming transaction that contains this payment_id is considered credited to the balance of this user. Typically, a **payment_id** is an 8-byte random number generated by an exchange (or another custody service). It can be up to 128 bytes, but it is usually 8 bytes.
Each wallet file in Lethean is always one address and one secret key (in fact, it's a two secrete keys, but this is not important in the context of this manual). Lethean does not support HD wallets for a number of technical reasons. Instead, for multi-user support, a so-called **payment_id** is used, which is a special identifier associated with the user. Each incoming transaction that contains this payment_id is considered credited to the balance of this user. Typically, a **payment_id** is an 8-byte random number generated by an exchange (or another custody service). It can be up to 128 bytes, but it is usually 8 bytes.
**IMPORTANT**: Users should never "operate" their payment_id anywhere under any circumstances. Instead, an **integrated address** is used. An **integrated address** is a special address format that encodes the user's payment_id along with the base wallet address, eliminating errors or typos. To generate an integrated address, you can use the WALLET RPC API [make_integrated_address](/docs/build/rpc-api/wallet-rpc-api/make_integrated_address/) (similar API present in daemon [get_integrated_address](/docs/build/rpc-api/daemon-rpc-api/get_integrated_address) ):
@ -117,7 +117,7 @@ Note: if **payment_id** is empty during the call of [make_integrated_address](/d
## Processing Incoming Transactions
There are several ways to get information about transactions for a Zano wallet. We will review most convenient and also mention other legacy approaches at the end.
There are several ways to get information about transactions for a Lethean wallet. We will review most convenient and also mention other legacy approaches at the end.
The main method for obtaining transaction history information is [get_recent_txs_and_info2](/docs/build/rpc-api/wallet-rpc-api/get_recent_txs_and_info2/). In the example below, we removed excessive and irrelevant for this article information from the response and left only those fields that are essential for processing custody.
@ -208,7 +208,7 @@ Each element in the "transfers" array represents a description of a transaction
payment_id, that means incoming payments from this transaction should
go to user associated with this payment_id
Since Zano is a multi-asset platform, each transaction might contain multiple transfers (different assets). The “**subtransfers**” array lists each asset that was part of this transaction:
Since Lethean is a multi-asset platform, each transaction might contain multiple transfers (different assets). The “**subtransfers**” array lists each asset that was part of this transaction:
```json
"subtransfers": [
@ -261,7 +261,7 @@ Response:
"asset_id": "f74bb56a5b4fa562e679ccaadd697463498a66de4f1760b2cd40f11c3a00a7a8",
"current_supply": 500000000000000000,
"decimal_point": 12,
"full_name": "Zano wrapped USD",
"full_name": "Lethean wrapped USD",
"hidden_supply": false,
"meta_info": "Stable and private",
"owner": "f74bb56a5b4fa562e679ccaadd697463498a66de4f1760b2cd40f11c3a00a7a8",
@ -278,11 +278,11 @@ Response:
"asset_id": "d6329b5b1f7c0805b5c345f4957554002a2f557845f64d7645dae0e051a6498a",
"current_supply": 13000000000000000000000,
"decimal_point": 12,
"full_name": "Zano wrapped USD",
"full_name": "Lethean wrapped USD",
"hidden_supply": false,
"meta_info": "Stable and private",
"owner": "",
"ticker": "ZANO",
"ticker": "LTHN",
"total_max_supply": 18000000000000000000000
},
"awaiting_in": 2000000000000,
@ -317,7 +317,7 @@ Response:
"asset_descriptor": {
"current_supply": 500000000000000000,
"decimal_point": 12,
"full_name": "Zano wrapped USD",
"full_name": "Lethean wrapped USD",
"hidden_supply": false,
"meta_info": "Stable and private",
"owner": "f74bb56a5b4fa562e679ccaadd697463498a66de4f1760b2cd40f11c3a00a7a8",
@ -362,7 +362,7 @@ Request:
"method": "transfer",
"params": {
"destinations": [{
"address": "ZxBvJDuQjMG9R2j4WnYUhBYNrwZPwuyXrC7FHdVmWqaESgowDvgfWtiXeNGu8Px9B24pkmjsA39fzSSiEQG1ekB225ZnrMTBp",
"address": "iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY",
"amount": 10000000000000,
"asset_id": "cc608f59f8080e2fbfe3c8c80eb6e6a953d47cf2d6aebd345bada3a1cab99852"
}],
@ -405,7 +405,7 @@ Response:
"jsonrpc": "2.0",
"result": {
"payment_id": "1dfe5a88ff9effb3",
"standard_address": "ZxBvJDuQjMG9R2j4WnYUhBYNrwZPwuyXrC7FHdVmWqaESgowDvgfWtiXeNGu8Px9B24pkmjsA39fzSSiEQG1ekB225ZnrMTBp"
"standard_address": "iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY"
}
}
```
@ -418,3 +418,4 @@ You need to first check that API managed to parse address, if **"standard_addres
[get_bulk_payments](/docs/build/rpc-api/wallet-rpc-api/get_bulk_payments)
[get_payments](/docs/build/rpc-api/wallet-rpc-api/get_payments)

View file

@ -7,11 +7,11 @@ To use WARP-mode, make sure your server has at least 64 GB of physical RAM.
To enable WARP-mode launch daemon with this command line option:
```bash
zanod --do-warp-mode
lethean-chain-node --do-warp-mode
2025-Mar-13 13:51:18.787912 Zano v2.1.0.382[926549e]
2025-Mar-13 13:51:18.787912 Lethean v2.1.0.382[926549e]
2025-Mar-13 13:51:18.793423 Starting...
2025-Mar-13 13:51:18.794923 Module folder: C:\Users\roky\home\projects\zano_UI_x64\build\src\Release\zanod.exe
2025-Mar-13 13:51:18.794923 Module folder: C:\Users\roky\home\projects\lethean_UI_x64\build\src\Release\lethean-chain-node.exe
2025-Mar-13 13:51:18.806597 Pre-downloading not needed (db file size = 12569350144)
2025-Mar-13 13:51:18.808596 Initializing p2p server...
......
@ -34,6 +34,7 @@ This command line option reconfigure core cache paprameters and then "warm up" a
### Technical Note
From a technical standpoint, the getblocks.bin RPC request essential for wallet synchronization and one of the most time-consuming operations must load each of roughly 4,000 blocks from the database and then deserialize them into C++ structures. The same process is repeated for every transaction within each block. To alleviate this load, Zano introduced a special caching mechanism about seven years ago. Each database table has its own cache, which by default can hold around 10,000 items. This lets the daemon quickly carry out tasks needed for fast block validation (for example, calculating various block medians or recalculating the next difficulty).
From a technical standpoint, the getblocks.bin RPC request essential for wallet synchronization and one of the most time-consuming operations must load each of roughly 4,000 blocks from the database and then deserialize them into C++ structures. The same process is repeated for every transaction within each block. To alleviate this load, Lethean introduced a special caching mechanism about seven years ago. Each database table has its own cache, which by default can hold around 10,000 items. This lets the daemon quickly carry out tasks needed for fast block validation (for example, calculating various block medians or recalculating the next difficulty).
To further enhance performance in production, we decided to fully leverage this cache by setting its size larger than the entire storage. This ensures that all blocks and transactions remain “hot” loaded and deserialized at all times. Currently, with over three million blocks, a fully loaded database is about 35GB. We expect this size to grow, though wallet requests typically focus on more recent blocks. Even if, in the future, the loaded database exceeds the amount of physical RAM, WARP-mode will still be significantly more efficient because any swapping is efficiently handled at the operating system level, and there is no additional deserialization phase.

View file

@ -6,7 +6,7 @@ In order to provide more security it's possible to sign transactions offline usi
![alt signing-transactions-offline-introduction](../../../static/img/build/exchange-guidlines/signing-transactions-offline/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)
Lethean 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.
@ -16,18 +16,18 @@ If someone has your spend secret key, he can spend your coins. Master keys shoul
1. In a *secure environment* create a new master wallet:
i. Start simplewallet to generate the master wallet:
`simplewallet --generate-new-wallet=zano_wallet_master`<br/>(zano_wallet_master is wallet's filename and can be changed freely)<br/>
i. Start lethean-wallet-cli to generate the master wallet:
`lethean-wallet-cli --generate-new-wallet=lethean_wallet_master`<br/>(lethean_wallet_master is wallet's filename and can be changed freely)<br/>
ii. Type in a password when prompted. An empty new wallet will be created.<br/>
iii. Open the new wallet again: `simplewallet --offline-mode --wallet-file=zano_wallet_master`<br/>
iv. In the wallet console, type the following command:<br/>`save_watch_only zano_wallet_watch_only WATCH_PASSWORD`<br/> where WATCH_PASSWORD is the password for the 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/>
iii. Open the new wallet again: `lethean-wallet-cli --offline-mode --wallet-file=lethean_wallet_master`<br/>
iv. In the wallet console, type the following command:<br/>`save_watch_only lethean_wallet_watch_only WATCH_PASSWORD`<br/> where WATCH_PASSWORD is the password for the watch-only wallet. You should see: `Watch-only wallet has been stored to lethean_wallet_watch_only`<br/>
v. Type `exit` to quit lethean-wallet-cli.<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.
2. Copy lethean_wallet_watch_only file from the secure environment to your production environment where daemons and the hot wallet is supposed to be run.
**CAUTION: zano_wallet_master file contains master wallet's private keys! You may want to ensure it never leaves the secure environment.**
**CAUTION: lethean_wallet_master file contains master wallet's private keys! You may want to ensure it never leaves the 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:<br /> `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`)
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:<br /> `lethean-wallet-cli --wallet-file=lethean_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.
@ -35,14 +35,14 @@ The setup is complete.
In order to sign a transaction, follow these steps:
4. Create a transaction using RPC [transfer](https://docs.zano.org/docs/build/rpc-api/wallet-rpc-api/transfer).
4. Create a transaction using RPC [transfer](https://testnet-docs.lthn.io/docs/build/rpc-api/wallet-rpc-api/transfer).
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.
Because of using watch-only wallet keys for this instance of wallet application (please note passing **lethean_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/docs/build/rpc-api/wallet-rpc-api/transfer) RPC description in ["List of RPC calls"](https://docs.zano.org/docs/build/rpc-api/overview) section above):
RPC example (please, see also [transfer](https://testnet-docs.lthn.io/docs/build/rpc-api/wallet-rpc-api/transfer) RPC description in ["List of RPC calls"](https://testnet-docs.lthn.io/docs/build/rpc-api/overview) 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 }}'
$ 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":"iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY"}], "fee":10000000000, "mixin":0 }}'
```
```json
@ -59,9 +59,9 @@ $ curl http://127.0.0.1:12233/json_rpc -s -H 'content-type:application/json;' --
Unsigned transaction data retrieved in `tx_unsigned_hex` field should be passed to the secure environment for cold-signing by the master wallet.
5. Run then master wallet in RPC mode within a secure environment:<br />`simplewallet --wallet-file=zano_wallet_master --offline-mode --rpc-bind-port=RPC_PORT --rpc-bind-ip=RPC_IP` (note that the master wallet is running in offline mode and doesn't need access to the Internet or Zano daemon).
5. Run then master wallet in RPC mode within a secure environment:<br />`lethean-wallet-cli --wallet-file=lethean_wallet_master --offline-mode --rpc-bind-port=RPC_PORT --rpc-bind-ip=RPC_IP` (note that the master wallet is running in offline mode and doesn't need access to the Internet or Lethean daemon).
6. Using RPC [sign_transfer](https://docs.zano.org/docs/build/rpc-api/wallet-rpc-api/sign_transfer) sing the transaction using the master wallet.
6. Using RPC [sign_transfer](https://testnet-docs.lthn.io/docs/build/rpc-api/wallet-rpc-api/sign_transfer) sing the transaction using the master wallet.
RPC example:
@ -83,7 +83,7 @@ $ curl http://127.0.0.1:12233/json_rpc -s -H 'content-type:application/json;' --
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.
NOTE: Please, don't sign more then one time the same "tx_unsigned_hex", as you'll get two transactions with different tx_id but spending the same key_images, which will lead to errors.
7. Using RPC [submit_transfer](https://docs.zano.org/docs/build/rpc-api/wallet-rpc-api/submit_transfer) broadcast the transaction via watch-only wallet.
7. Using RPC [submit_transfer](https://testnet-docs.lthn.io/docs/build/rpc-api/wallet-rpc-api/submit_transfer) broadcast the transaction via watch-only wallet.
RPC example:
@ -107,25 +107,26 @@ The transaction is successfully broadcasted over the network.
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/docs/build/rpc-api/wallet-rpc-api/submit_transfer) RPC. This data is stored locally in .outkey2ki file and it is required to calculate wallet's balance in case of full wallet resync.
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://testnet-docs.lthn.io/docs/build/rpc-api/wallet-rpc-api/submit_transfer) RPC. This data is stored locally in .outkey2ki file 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 (including .outkey2ki). Otherwise, watch-only wallet won't be able to calculate its balance correctly and **the master wallet may be required to be connected online** for recovering funds.
Please make sure, whenever you shutdown the watch only wallet - **close it gracefull**, use SIGINT, SIGTERM or ctrl+c and let it store the wallet state, or close ["store"] (https://docs.zano.org/docs/build/rpc-api/wallet-rpc-api/store/) wallet RPC method before you kill the simplewallet process.
Please make sure, whenever you shutdown the watch only wallet - **close it gracefull**, use SIGINT, SIGTERM or ctrl+c and let it store the wallet state, or close ["store"] (https://testnet-docs.lthn.io/docs/build/rpc-api/wallet-rpc-api/store/) wallet RPC method before you kill the lethean-wallet-cli process.
If it's happen that you lost or damaged outkey2ki, try restoring the watch only wallet:
### Restoring the watch only wallet
1. Make sure you're running build 2.1.8.414 or more recent.
2. Stop *all* simplewallet processes in *all* environments.
3. Move watch-only wallet file (`zano_wallet_watch_only`) to the secure environment, where the master wallet file is located.
2. Stop *all* lethean-wallet-cli processes in *all* environments.
3. Move watch-only wallet file (`lethean_wallet_watch_only`) to the secure environment, where the master wallet file is located.
4. In the secure environment run the following command:
`simplewallet --offline-mode --wallet-file=zano_wallet_master --restore-ki-in-wo-wallet=zano_wallet_watch_only`
`lethean-wallet-cli --offline-mode --wallet-file=lethean_wallet_master --restore-ki-in-wo-wallet=lethean_wallet_watch_only`
6. Enter master wallet's password and watch-only wallet password when prompted.
7. Make sure it finished successfully.
8. Move `zano_wallet_watch_only` and `zano_wallet_watch_only.outkey2ki` files to the production environment.
8. Move `lethean_wallet_watch_only` and `lethean_wallet_watch_only.outkey2ki` files to the production environment.
Now watch-only wallet, once fully synced, should show the correct balance.
As a last resort you can always move you master wallet to the production environment, run it online (skipping `--offline-mode`), sync it and transfer all the funds manually to a newly created cold/hot wallet as described above.

View file

@ -1,29 +1,71 @@
# Starting the daemon and the wallet application as RPC server
# Starting the Daemon and Wallet as RPC Server
### Starting the daemon and the wallet application as RPC server
The Lethean wallet CLI (`lethean-wallet-cli` / `lethean-testnet-wallet-cli`) can run as an RPC server, controlled via HTTP JSON-RPC calls. This is the standard setup for exchanges, payment processors, and automated services.
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.
### 1. Start the daemon
Starting the wallet in RPC server mode:
```bash
# Mainnet
./lethean-chain-node --data-dir ./chain-data
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
# Testnet
./lethean-testnet-chain-node --data-dir ./testnet-data
```
where:
### 2. Create a wallet (first time only)
**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/>
```bash
./lethean-wallet-cli --generate-new-wallet /path/to/exchange-wallet \
--password "STRONG_PASSWORD" \
--daemon-address 127.0.0.1:36941
```
Examples in [List of Wallet RPCs](https://docs.zano.org/docs/api-reference-1) are given with assumption that the wallet application is running in RPC server mode and listening at 127.0.0.1:12233.
Save the 24-word seed phrase securely. The wallet address starts with `iTHN`.
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.
### 3. Start wallet in RPC mode
```bash
./lethean-wallet-cli \
--wallet-file /path/to/exchange-wallet \
--password "STRONG_PASSWORD" \
--rpc-bind-ip 127.0.0.1 \
--rpc-bind-port 36944 \
--daemon-address 127.0.0.1:36941 \
--log-file wallet-rpc.log
```
### 4. Test the connection
```bash
# Get wallet address
curl -X POST http://127.0.0.1:36944/json_rpc \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":"0","method":"getaddress"}'
# Get balance
curl -X POST http://127.0.0.1:36944/json_rpc \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":"0","method":"getbalance"}'
```
### Port reference
| Service | Mainnet | Testnet |
|---------|---------|---------|
| Daemon RPC | 36941 | 46941 |
| Daemon P2P | 36942 | 46942 |
| Wallet RPC | 36944 (custom) | 46944 (custom) |
### Units
All amounts and balances are unsigned integers in **atomic units**. One LTHN = 10^12 atomic units.
| Human | Atomic |
|-------|--------|
| 1 LTHN | 1000000000000 |
| 0.5 LTHN | 500000000000 |
| 0.01 LTHN (min fee) | 10000000000 |
### Verified against testnet
These commands have been tested against the live Lethean testnet at height 10,676. The wallet RPC responds to `getaddress`, `getbalance`, `get_wallet_info`, `make_integrated_address`, and `get_bare_outs_stats`.

View file

@ -2,27 +2,27 @@
1. Download and install [GnuPG for Windows](https://www.gnupg.org/download/) or [GPGTools for macOS](https://gpgtools.org/). Linux users likely already have gpg installed.
2. Download [Zano Build Signer public key](https://raw.githubusercontent.com/hyle-team/zano/refs/heads/master/utils/gpg/zano_build_signer.asc) from GitHub. You may also check the [file history](https://github.com/hyle-team/zano/commits/master/utils/gpg/zano_build_signer.asc) to ensure it hasn't been changed recently (it is normally updated once every 2 years).
2. Download [Lethean Build Signer public key](https://github.com/lethean-io/blockchain/raw/main/utils/gpg/lethean_build_signer.asc) from GitHub. You may also check the [file history](https://github.com/lethean-io/commits/master/utils/gpg/lethean_build_signer.asc) to ensure it hasn't been changed recently (it is normally updated once every 2 years).
3. Open a terminal (command-line console), then:
3.1. Verify key fingerprint:
```
gpg --keyid-format short --with-fingerprint zano_build_signer.asc
gpg --keyid-format short --with-fingerprint lethean_build_signer.asc
```
You should see output similar to this:
```
gpg: WARNING: no command supplied. Trying to guess what you mean ...
pub ed25519/F79F971A 2025-10-20 [SC] [expires: 2027-10-20]
Key fingerprint = 8095 41D2 C95F 794B 986E 879F A92B 86C2 F79F 971A
uid Zano Build Signer <support@zano.org>
uid Lethean Build Signer <support@lethean.io>
sub cv25519/E23B6116 2025-10-20 [E] [expires: 2027-10-20]
```
Make sure the fingerprint is **8095 41D2 C95F 794B 986E 879F A92B 86C2 F79F 971A**, if not — stop right there and remove the key file, don't import it!
3.2. Import the public key:
```
gpg --import zano_build_signer.asc
gpg --import lethean_build_signer.asc
```
Now the public key is imported and ready to use.
@ -38,7 +38,7 @@
```
gpg: Signature made 2025-10-20 17:04:47 Central Europe Daylight Time
gpg: using EDDSA key 809541D2C95F794B986E879FA92B86C2F79F971A
gpg: Good signature from "Zano Build Signer <support@zano.org>" [ultimate]
gpg: Good signature from "Lethean Build Signer <support@lethean.io>" [ultimate]
```
Make sure you see "Good signature". Now you can be confident that the hashes and links to the builds are correct.
@ -56,11 +56,11 @@
```
where `<FILENAME>` should be replaced with the filename you've downloaded, for instance:
```
certutils -hashfile zano-win-x64-release-v2.1.10.433[653f8b5].zip SHA256
certutils -hashfile lethean-win-x64-release-v2.1.10.433[653f8b5].zip SHA256
```
You sould see something like that:
```
SHA256 hash of zano-win-x64-release-v2.1.10.433[653f8b5].zip:
SHA256 hash of lethean-win-x64-release-v2.1.10.433[653f8b5].zip:
aad9f31750ef9a49e2019db97587b195dccbaeadaf7c3e16ed51c371d97992a9
CertUtil: -hashfile command completed successfully.
```
@ -69,3 +69,4 @@
If they do, you're good to go!

View file

@ -1,4 +1,5 @@
{
"label": "Zano Libraries",
"label": "Lethean Libraries",
"position": 3
}

View file

@ -1,33 +1,66 @@
# List of Libraries
# Libraries
## Zano Web3 Library (TypeScript)
All libraries have been built and tested against the Lethean testnet.
Zano Web3 TS is a TypeScript library designed to facilitate interaction with the Zano Companion extension within web browsers. It enables connection to user extensions, handles authentication, and manages wallet credentials, plus it includes a server component for RPC interactions with the Zano wallet and daemon.
## lethean_web3 (TypeScript) — 10/10 tests passing
Github: https://github.com/hyle-team/zano_web3
Server + browser library for interacting with the Lethean daemon and wallet RPCs. Includes the Companion extension API for in-browser wallet signing.
Package: https://www.npmjs.com/package/zano_web3
- `fetchDaemon(method, params)` — daemon RPC calls
- `fetchWallet(method, params)` — wallet RPC calls
- `getAssetsList()` — list chain assets
- `getBalances()` — wallet balances
- `validateTokensInput(amount)` — input validation
- `getAliasDetails(alias)` — alias lookup
## Native Zano Wallet for IOS/Android (C++)
**Status:** Built (web + server + shared), 2 bugs fixed (ESM resolution, empty asset list crash), 10/10 integration tests against testnet.
This C++ library provides tools for integrating Zano's wallet into native iOS and Android applications, offering a robust solution for mobile app developers working with Zano's technology. All API implemented as a plain text calls that works with JSON format, which make this library a perfect framework agnostic tool for supporting Zano.
Source: `zano-upstream/zano_web3/`
Github: https://github.com/hyle-team/zano_native_lib
## lethean-util (C++ Node.js addon) — Built and tested
## Flutter/Android Zano Wallet Plugin (Dart)
Native Node.js addon for mining pools and backend integrations. Bridges the Lethean C++ cryptographic library to JavaScript.
This Dart library is tailored for integrating Zano Wallet functionalities into mobile and web applications using the Flutter framework or native Android development with Dart, making it ideal for mobile developers.
- `convert_blob(buffer)` — block template conversion for mining
- `get_pow_hash(blob, seed, height)` — PoW hash computation
- `is_address_valid(buffer)` — validate iTHN addresses
- `address_decode(buffer)` — decode address to public keys
- `get_blob_from_block_template(buffer)` — construct block from template
- `get_id_hash(buffer)` — block ID computation
- `get_merged_mining_nonce_size()` — merged mining support
Github: https://github.com/hyle-team/zano_plugin
**Status:** Built against Lethean blockchain headers, tested with live `getblocktemplate` output from testnet daemon.
## SWIFT package manager plugin for Native Wallet Library for IOS/Android (C++)
Source: `zano-upstream/zano-node-util/`
A dedicated iOS library that allows for the integration of Zano's functionalities specifically within iOS applications, ensuring smooth implementation of Zano features on Apple devices.
## zano-utils-js (TypeScript) — 34/34 tests passing
Github: https://github.com/hyle-team/zano_native_lib_package_ios
Low-level cryptographic utilities: Ed25519, stealth addresses, key derivation, transaction decoding, Base58, payment ID encryption.
## Zano Node Utils (JavaScript)
**Status:** All 34 tests pass. Protocol constants (`ZANO_HDS_*`) intentionally preserved for daemon compatibility.
This utility library supports various backend operations used by mining pools
Source: `zano-upstream/zano-utils-js/`
Github: https://github.com/hyle-team/zano-node-util
## wallet-address-validator (JavaScript) — 73/73 tests passing
Validates Lethean addresses (iTHN prefix). Supports all 4 address types:
- `iTHN` — standard address (prefix `f7d507`)
- `iTHn` — integrated address (prefix `f7d537`)
- `iThn` — auditable integrated (prefix `f7e022`)
- `iThN` — auditable address (prefix `f7dff301`)
**Status:** All 73 tests pass including Lethean-specific test cases.
Source: `zano-upstream/wallet-address-validator/`
## Native Wallet Library (C++)
C++ library for iOS/Android wallet integration. JSON-based API for framework-agnostic mobile development.
Source: `zano-upstream/zano_native_lib/`
## Flutter Wallet Plugin (Dart)
Dart/Flutter plugin wrapping the native wallet library for mobile app development.
Source: `zano-upstream/zano_plugin/`

View file

@ -1,10 +1,10 @@
# 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.
The Lethean 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.
With the Lethean 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.
The Lethean 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.
@ -12,26 +12,26 @@ To be able to post/update offers you have to work with **wallet API**, since eve
**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.
To post an offer should be used [marketplace_push_offer](https://testnet-docs.lthn.io/reference/marketplace_push_offer) API method. This method takes as a parameter ["Offer" structure](https://testnet-docs.lthn.io/reference/using-the-lethean-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://testnet-docs.lthn.io/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.
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://testnet-docs.lthn.io/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.
It's also possible to mark an offer as inactive by calling [marketplace_cancel_offer](https://testnet-docs.lthn.io/reference/marketplace_cancel_offer). This API call confirm the authority of the owner same was as [marketplace_push_update_offer](https://testnet-docs.lthn.io/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://testnet-docs.lthn.io/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.
To make easier management of the offers that belong to a particular wallet, we introduced [marketplace_get_offers_ex](https://testnet-docs.lthn.io/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.
To fetch active offers from blockchain should be used [marketplace_global_get_offers_ex](https://testnet-docs.lthn.io/reference/get_offers_ex) method. This method based on the [filter structure](https://testnet-docs.lthn.io/reference/using-the-lethean-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.
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

@ -2,7 +2,7 @@
sidebar_position: 1
---
# Building with Zano
# Building with Lethean
## Starting Your Development Journey
@ -16,13 +16,13 @@ If launching your own project centered around private transactions is your goal,
## Exchange Listing Guidelines
If you're looking to list your project or Zano assets on exchanges, it's crucial to follow specific guidelines to ensure compliance and success in your listings. We provide a [detailed set of guidelines](https://docs.zano.org/docs/build/exchange-guidelines/multi-assets-custody-guide) that cover everything from technical requirements to compliance with financial regulations.
If you're looking to list your project or Lethean assets on exchanges, it's crucial to follow specific guidelines to ensure compliance and success in your listings. We provide a [detailed set of guidelines](https://testnet-docs.lthn.io/docs/build/exchange-guidelines/multi-assets-custody-guide) that cover everything from technical requirements to compliance with financial regulations.
## Tools and Resources
We provide a variety of tools and [libraries](libraries/overview.md) to assist you in building robust applications:
- **Zano Web3 TS**: This TypeScript library now includes a server component for RPC interactions, simplifying the connection to Zano wallets and handling transactions directly from web applications.
- **Lethean Web3 TS**: This TypeScript library now includes a server component for RPC interactions, simplifying the connection to Lethean wallets and handling transactions directly from web applications.
- **Mobile Libraries** (Flutter/Android & iOS): These have been updated to offer more robust features for mobile developers, enabling seamless integration into a wider range of applications.
- **Native Crypto Library** for iOS/Android (C++): Updated to provide essential cryptographic functionalities needed for secure and reliable app development.
@ -30,15 +30,16 @@ We provide a variety of tools and [libraries](libraries/overview.md) to assist y
Join our vibrant community of developers and privacy enthusiasts:
- **Discussions**: Engage with other developers, share your projects, and get feedback in community dev channels in [discord](https://discord.gg/wE3rmYY) and [telegram](https://t.me/zanocoin).
- **Discussions**: Engage with other developers, share your projects, and get feedback in community dev channels in [discord](https://discord.gg/wE3rmYY) and [telegram](https://t.me/letheancoin).
- **Technical Support**: Our technical team is ready to assist you with any questions or challenges you may encounter.
## Contributing to Zano
## Contributing to Lethean
We encourage contributions from developers of all skill levels. If you're interested in contributing to the Zano project, check out our guidelines on how to contribute effectively. Your innovations and contributions help us continue to enhance the security and functionality of the Zano platform.
We encourage contributions from developers of all skill levels. If you're interested in contributing to the Lethean project, check out our guidelines on how to contribute effectively. Your innovations and contributions help us continue to enhance the security and functionality of the Lethean platform.
## Stay Updated
Keep up with the latest updates and enhancements by visiting our official [blog](https://blog.zano.org) and subscribing to our newsletter. As Zano continues to evolve, we remain committed to providing the community with cutting-edge tools and support to build secure and private digital solutions.
Keep up with the latest updates and enhancements by visiting our official [blog](https://blog.lethean.io) and subscribing to our newsletter. As Lethean continues to evolve, we remain committed to providing the community with cutting-edge tools and support to build secure and private digital solutions.
Embark on your development journey with Lethean and leverage our comprehensive resources to build something truly impactful in the realm of digital privacy.
Embark on your development journey with Zano and leverage our comprehensive resources to build something truly impactful in the realm of digital privacy.

View file

@ -6,18 +6,45 @@ sidebar_position: 2
:::warning
For secutity reasons it's not recommended to use private api with public daemon
For security reasons it's not recommended to use private wallet API with a public daemon. Run your own node for production services.
:::
DISCLAIMER: The public nodes listed below are **development tools and arent meant for production services** for a variety of reasons.\
Their stability and availability arent guaranteed.\
If you need a robust node for critical services — especially exchanges, pools, or swap services — we encourage you to run your own Zano node.
These public nodes are **development tools** — stability and availability are not guaranteed. For exchanges, pools, or production services, run your own Lethean node.
## Mainnet (daemon)
## Testnet
http://37.27.100.59:10500/json_rpc
| Service | URL |
|---------|-----|
| Daemon RPC | `http://10.69.69.165:46941/json_rpc` |
| Block Explorer | [explorer.lthn.io](https://explorer.lthn.io) |
| Documentation | [testnet-docs.lthn.io](https://testnet-docs.lthn.io) |
| Downloads | [downloads.lthn.io](https://downloads.lthn.io) |
| Trade DEX | [trade.lthn.io](https://trade.lthn.io) |
## Testnet (daemon)
### Connect to testnet
http://37.27.100.59:10505/json_rpc
```bash
./lethean-testnet-chain-node \
--data-dir ./testnet-data \
--add-priority-node 10.69.69.165:46942
```
## Mainnet
Mainnet deployment pending testnet validation through HF5 (height 11,500).
## Running your own node
```bash
# Download
wget https://downloads.lthn.io/lethean-testnet-linux-x86_64-v6.0.1.tar.gz
tar xzf lethean-testnet-linux-x86_64-v6.0.1.tar.gz
cd lethean-testnet-linux-x86_64-v6.0.1
# Start daemon
./lethean-testnet-chain-node --data-dir ./data
# With admin API (needed for mining control)
./lethean-testnet-chain-node --data-dir ./data --rpc-enable-admin-api
```

View file

@ -1,6 +1,6 @@
Give an estimation of block height by the given date.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{
@ -26,7 +26,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"jsonrpc": "2.0",
"result": {
"aliases": [{
"address": "ZxCSpsGGeJsS8fwvQ4HktDU3qBeauoJTR6j73jAWWZxFXdF7XTbGm4YfS2kXJmAP4Rf5BVsSQ9iZ45XANXEYsrLN2L2W77dH7",
"address": "iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY",
"alias": "zxdya6q6whzwqjkmtcsjpc3ku",
"comment": "Society is never gonna make any progress until we all learn to pretend to like each other.",
"tracking_key": "18bb94f69ed61b47b6556f3871b89dff8f9a6f4f798f706fd199b05ccf8ef20c"

View file

@ -1,6 +1,6 @@
Check spent status of given key images.
URL: ```http:://127.0.0.1:11211/check_keyimages.bin```
URL: ```http:://127.0.0.1:36941/check_keyimages.bin```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Decrypts transaction private information. Should be used only with your own local daemon for security reasons.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{
@ -8,7 +8,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"jsonrpc": "2.0",
"method": "decrypt_tx_details",
"params": {
"outputs_addresses": ["ZxDNaMeZjwCjnHuU5gUNyrP1pM3U5vckbakzzV6dEHyDYeCpW8XGLBFTshcaY8LkG9RQn7FsQx8w2JeJzJwPwuDm2NfixPAXf","ZxBvJDuQjMG9R2j4WnYUhBYNrwZPwuyXrC7FHdVmWqaESgowDvgfWtiXeNGu8Px9B24pkmjsA39fzSSiEQG1ekB225ZnrMTBp"],
"outputs_addresses": ["iTHNQGNCbu8BH7FhQuzsv5CVsE3veDX1CFCxk9jsqRfA4tFcUPNwQa4DWLFvyaKvs3HGb8xfGDGQq871c9P4iRpt8SFusoqSzJ","iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY"],
"tx_blob": "ewogICJ2ZXJzaW9uIjogMSwgC....iAgInZpbiI6IFsgewogICAgIC",
"tx_id": "a6e8da986858e6825fce7a192097e6afae4e889cabe853a9c29b964985b23da8",
"tx_secret_key": "2e0b840e70dba386effd64c5d988622dea8c064040566e6bf035034cbb54a5c08"
@ -30,7 +30,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"jsonrpc": "2.0",
"result": {
"decoded_outputs": [{
"address": "ZxBvJDuQjMG9R2j4WnYUhBYNrwZPwuyXrC7FHdVmWqaESgowDvgfWtiXeNGu8Px9B24pkmjsA39fzSSiEQG1ekB225ZnrMTBp",
"address": "iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY",
"amount": 10000000000000,
"asset_id": "cc608f59f8080e2fbfe3c8c80eb6e6a953d47cf2d6aebd345bada3a1cab99852",
"out_index": 1,

View file

@ -1,6 +1,6 @@
Retrieves information about outputs in recent blocks that are targeted for the given address with the corresponding secret view key.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{
@ -8,7 +8,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"jsonrpc": "2.0",
"method": "find_outs_in_recent_blocks",
"params": {
"address": "ZxCSpsGGeJsS8fwvQ4HktDU3qBeauoJTR6j73jAWWZxFXdF7XTbGm4YfS2kXJmAP4Rf5BVsSQ9iZ45XANXEYsrLN2L2W77dH7",
"address": "iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY",
"blocks_limit": 1711021795,
"viewkey": "5fa8eaaf231a305053260ff91d69c6ef1ecbd0f5"
}

View file

@ -1,6 +1,6 @@
NO DESCRIPTION
URL: ```http:://127.0.0.1:11211/force_relay```
URL: ```http:://127.0.0.1:36941/force_relay```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Initiates a transfer from gateway address. Create tx that need to be signed.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{
@ -10,7 +10,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"params": {
"comment": "Some comment",
"destinations": [{
"address": "ZxBvJDuQjMG9R2j4WnYUhBYNrwZPwuyXrC7FHdVmWqaESgowDvgfWtiXeNGu8Px9B24pkmjsA39fzSSiEQG1ekB225ZnrMTBp",
"address": "iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY",
"amount": 10000000000000,
"asset_id": "cc608f59f8080e2fbfe3c8c80eb6e6a953d47cf2d6aebd345bada3a1cab99852",
"payment_id": 1020394

View file

@ -1,6 +1,6 @@
Retrieves the transaction history for a specific gateway address.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{
@ -51,9 +51,9 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"is_a": false,
"payment_id": "",
"private_detailes": {
"a_addr": "ZxBiDtnzhro111111111111111111111111111111111111111111111111111111111111111111111111111111116xzE1X",
"a_addr": "iTHN11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
"a_pledge": 0,
"b_addr": "ZxBiDtnzhro111111111111111111111111111111111111111111111111111111111111111111111111111111116xzE1X",
"b_addr": "iTHN11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
"b_pledge": 0,
"c": "",
"t": "",
@ -69,7 +69,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"is_mining": false,
"is_mixing": false,
"is_service": false,
"remote_addresses": ["ZxBvJDuQjMG9R2j4WnYUhBYNrwZPwuyXrC7FHdVmWqaESgowDvgfWtiXeNGu8Px9B24pkmjsA39fzSSiEQG1ekB225ZnrMTBp"],
"remote_addresses": ["iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY"],
"remote_aliases": ["roger"],
"service_entries": [{
"body": "dcfd7e055a6a3043ea3541a571a57a63e25dcc64e4a270f14fa9a58ac5dbec85dcfd7e055a6a3043ea3541a571a57a63e25dcc64e4a270f14fa9a58ac5dbec85",
@ -117,7 +117,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"height": Height of the block that included transaction(0 i transaction is unconfirmed)
"is_mining": Tells if this transaction is coinbase transaction(ie generated by PoW mining or by PoS staking)
"is_mixing": Tells if this transaction using mixins or not(auditble wallets normally don't use mixins)
"is_service": Tells if this transaction is used as utility by one of Zano services(contracts, ionic swaps, etc)
"is_service": Tells if this transaction is used as utility by one of Lethean services(contracts, ionic swaps, etc)
"remote_addresses": Remote addresses of this transfer(destination if it's outgoing transfer or sender if it's incoming transaction)
"remote_aliases": Aliases for remot addresses, of discovered
"service_entries": Additional entries that might be stored in transaction but not part of it's consensus
@ -141,4 +141,4 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"unlock_time": Unlock time of this transfer (if present)
```
<sub>Auto-doc built with: 2.2.0.461[d830c07]</sub>
<sub>Auto-doc built with: 2.2.0.461[d830c07]</sub>

View file

@ -1,6 +1,6 @@
Retrieves information about a gateway address.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Signs a transfer from gateway address.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Retrieves all aliases registered for a given address.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{
@ -21,7 +21,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"jsonrpc": "2.0",
"result": {
"alias_info_list": [{
"address": "ZxCSpsGGeJsS8fwvQ4HktDU3qBeauoJTR6j73jAWWZxFXdF7XTbGm4YfS2kXJmAP4Rf5BVsSQ9iZ45XANXEYsrLN2L2W77dH7",
"address": "iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY",
"alias": "zxdya6q6whzwqjkmtcsjpc3ku",
"comment": "Society is never gonna make any progress until we all learn to pretend to like each other.",
"tracking_key": "18bb94f69ed61b47b6556f3871b89dff8f9a6f4f798f706fd199b05ccf8ef20c"

View file

@ -1,6 +1,6 @@
Retrieves information about a specific address alias.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{
@ -24,7 +24,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"jsonrpc": "2.0",
"result": {
"alias_details": {
"address": "ZxCSpsGGeJsS8fwvQ4HktDU3qBeauoJTR6j73jAWWZxFXdF7XTbGm4YfS2kXJmAP4Rf5BVsSQ9iZ45XANXEYsrLN2L2W77dH7",
"address": "iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY",
"comment": "Society is never gonna make any progress until we all learn to pretend to like each other.",
"tracking_key": "18bb94f69ed61b47b6556f3871b89dff8f9a6f4f798f706fd199b05ccf8ef20c"
},

View file

@ -1,6 +1,6 @@
Retrieves the cost of registering an alias on the blockchain.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Retrieves a specified portion of all registered aliases, allowing pagination through large sets of aliases.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{
@ -26,12 +26,12 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"jsonrpc": "2.0",
"result": {
"aliases": [{
"address": "ZxCSpsGGeJsS8fwvQ4HktDU3qBeauoJTR6j73jAWWZxFXdF7XTbGm4YfS2kXJmAP4Rf5BVsSQ9iZ45XANXEYsrLN2L2W77dH7",
"address": "iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY",
"alias": "zxdya6q6whzwqjkmtcsjpc3ku",
"comment": "Society is never gonna make any progress until we all learn to pretend to like each other.",
"tracking_key": "18bb94f69ed61b47b6556f3871b89dff8f9a6f4f798f706fd199b05ccf8ef20c"
},{
"address": "ZxCSpsGGeJsS8fwvQ4HktDU3qBeauoJTR6j73jAWWZxFXdF7XTbGm4YfS2kXJmAP4Rf5BVsSQ9iZ45XANXEYsrLN2L2W77dH7",
"address": "iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY",
"alias": "zxdya6q6whzwqjkmtcsjpc3ku",
"comment": "Society is never gonna make any progress until we all learn to pretend to like each other.",
"tracking_key": "18bb94f69ed61b47b6556f3871b89dff8f9a6f4f798f706fd199b05ccf8ef20c"

View file

@ -1,6 +1,6 @@
Retrieves all registered aliases along with associated information.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{
@ -22,12 +22,12 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"jsonrpc": "2.0",
"result": {
"aliases": [{
"address": "ZxCSpsGGeJsS8fwvQ4HktDU3qBeauoJTR6j73jAWWZxFXdF7XTbGm4YfS2kXJmAP4Rf5BVsSQ9iZ45XANXEYsrLN2L2W77dH7",
"address": "iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY",
"alias": "zxdya6q6whzwqjkmtcsjpc3ku",
"comment": "Society is never gonna make any progress until we all learn to pretend to like each other.",
"tracking_key": "18bb94f69ed61b47b6556f3871b89dff8f9a6f4f798f706fd199b05ccf8ef20c"
},{
"address": "ZxCSpsGGeJsS8fwvQ4HktDU3qBeauoJTR6j73jAWWZxFXdF7XTbGm4YfS2kXJmAP4Rf5BVsSQ9iZ45XANXEYsrLN2L2W77dH7",
"address": "iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY",
"alias": "zxdya6q6whzwqjkmtcsjpc3ku",
"comment": "Society is never gonna make any progress until we all learn to pretend to like each other.",
"tracking_key": "18bb94f69ed61b47b6556f3871b89dff8f9a6f4f798f706fd199b05ccf8ef20c"

View file

@ -1,6 +1,6 @@
Retrieves a list of all transaction IDs currently in the transaction pool.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Retrieves detailed information about a specific block identified by its hash.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Retrieves details of alternative blocks in the blockchain, allowing for pagination through large datasets.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Obtain information for the given asset by its ID.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{
@ -26,7 +26,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"asset_descriptor": {
"current_supply": 500000000000000000,
"decimal_point": 12,
"full_name": "Zano wrapped ABC",
"full_name": "Lethean wrapped ABC",
"hidden_supply": false,
"meta_info": "{ \"some_arbitrary_field_name\": \"some arbitrary value\"}",
"owner": "f74bb56a5b4fa562e679ccaadd697463498a66de4f1760b2cd40f11c3a00a7a8",
@ -53,4 +53,4 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"status": Status of the call.
```
<sub>Auto-doc built with: 2.2.0.461[d830c07]</sub>
<sub>Auto-doc built with: 2.2.0.461[d830c07]</sub>

View file

@ -1,6 +1,6 @@
Return list of assets registered in Zano blockchain
Return list of assets registered in Lethean blockchain
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{
@ -29,7 +29,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"asset_id": "f74bb56a5b4fa562e679ccaadd697463498a66de4f1760b2cd40f11c3a00a7a8",
"current_supply": 500000000000000000,
"decimal_point": 12,
"full_name": "Zano wrapped ABC",
"full_name": "Lethean wrapped ABC",
"hidden_supply": false,
"meta_info": "{ \"some_arbitrary_field_name\": \"some arbitrary value\"}",
"owner": "f74bb56a5b4fa562e679ccaadd697463498a66de4f1760b2cd40f11c3a00a7a8",
@ -43,7 +43,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
```
### Response description:
```
"assets": List of assets registered in Zano blockchain
"assets": List of assets registered in Lethean blockchain
"asset_id": Asset ID
"current_supply": Currently emitted supply for the given asset (ignored for REGISTER operation).
"decimal_point": Decimal point.
@ -57,4 +57,4 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"status": Status code of operation, OK if success
```
<sub>Auto-doc built with: 2.2.0.461[d830c07]</sub>
<sub>Auto-doc built with: 2.2.0.461[d830c07]</sub>

View file

@ -1,6 +1,6 @@
Retrieves detailed information about a sequence of blocks starting from a specific height.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Retrieves the current core transaction expiration median.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Give an estimation of block height by the given date.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Make integrated address from regular address
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{
@ -9,14 +9,14 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"method": "get_integrated_address",
"params": {
"payment_id": "1dfe5a88ff9effb3",
"regular_address": "ZxCSpsGGeJsS8fwvQ4HktDU3qBeauoJTR6j73jAWWZxFXdF7XTbGm4YfS2kXJmAP4Rf5BVsSQ9iZ45XANXEYsrLN2L2W77dH7"
"regular_address": "iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY"
}
}
```
### Request description:
```
"payment_id": Hex-encoded Payment ID to be associated with the this address. If empty then wallet would generate new payment id using system random library
"regular_address": Zano wallet address to be used as a base for integrated address
"regular_address": Lethean wallet address to be used as a base for integrated address
```
### Response:
@ -38,4 +38,4 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"status": Status
```
<sub>Auto-doc built with: 2.2.0.461[d830c07]</sub>
<sub>Auto-doc built with: 2.2.0.461[d830c07]</sub>

View file

@ -1,6 +1,6 @@
Retrieves detailed information about a specific block identified by its hash.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Retrieve basic information about a multisig output using its unique identifier (hash).
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Obtain global outputs' indexes for the given txs.
URL: ```http:://127.0.0.1:11211/get_o_indexes.bin```
URL: ```http:://127.0.0.1:36941/get_o_indexes.bin```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Returns transaction ID and local output index for a given output amount and its global index.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Obtain basic information about the transaction pool.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{
@ -22,7 +22,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"jsonrpc": "2.0",
"result": {
"aliases_que": [{
"address": "ZxCSpsGGeJsS8fwvQ4HktDU3qBeauoJTR6j73jAWWZxFXdF7XTbGm4YfS2kXJmAP4Rf5BVsSQ9iZ45XANXEYsrLN2L2W77dH7",
"address": "iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY",
"alias": "zxdya6q6whzwqjkmtcsjpc3ku",
"comment": "Society is never gonna make any progress until we all learn to pretend to like each other.",
"tracking_key": "18bb94f69ed61b47b6556f3871b89dff8f9a6f4f798f706fd199b05ccf8ef20c"

View file

@ -1,6 +1,6 @@
Retrieves brief details about specific transactions in the transaction pool, identified by their IDs.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Retrieves detailed information about specific transactions in the transaction pool, identified by their IDs.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Retrieves basic information regarding PoS mining, including current PoS conditions and constraints.
URL: ```http:://127.0.0.1:11211/get_pos_details.bin```
URL: ```http:://127.0.0.1:36941/get_pos_details.bin```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Retrieves detailed information about a specific transaction.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Retreives transactions from tx pool (and other information).
URL: ```http:://127.0.0.1:11211/get_tx_pool.bin```
URL: ```http:://127.0.0.1:36941/get_tx_pool.bin```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Get votes' results from the given block range.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Returns the total number of blocks in the blockchain (the height of the top block plus one).
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Retrieves the block header information for a given block hash.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Retrieves the block header information for a given block height.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
NO DESCRIPTION
URL: ```http:://127.0.0.1:11211/getblocks.bin```
URL: ```http:://127.0.0.1:36941/getblocks.bin```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Generates a block template for mining, intended for both PoW and PoS types of blocks based on the provided parameters.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{
@ -21,7 +21,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
},
"pos_block": false,
"stakeholder_address": "",
"wallet_address": "ZxCSpsGGeJsS8fwvQ4HktDU3qBeauoJTR6j73jAWWZxFXdF7XTbGm4YfS2kXJmAP4Rf5BVsSQ9iZ45XANXEYsrLN2L2W77dH7"
"wallet_address": "iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY"
}
}
```

View file

@ -1,6 +1,6 @@
Return current blockchain height
URL: ```http:://127.0.0.1:11211/getheight```
URL: ```http:://127.0.0.1:36941/getheight```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Retrieves various information about the blockchain node. The user must specify their needs via a 'flags' field in the request by combining necessary flags using binary OR. Some values are always calculated and provided, others only if the corresponding flag is specified.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Returns the block header information of the most recent block.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Retrieve random decoy outputs for specified amounts (legacy format).
URL: ```http:://127.0.0.1:11211/getrandom_outs.bin```
URL: ```http:://127.0.0.1:36941/getrandom_outs.bin```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Retrieve random decoy outputs for specified amounts (legacy format).
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Retrieve random decoy outputs for specified amounts, to be used for mixing in transactions.
URL: ```http:://127.0.0.1:11211/getrandom_outs1.bin```
URL: ```http:://127.0.0.1:36941/getrandom_outs1.bin```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Retrieve random decoy outputs for specified amounts, to be used for mixing in transactions.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Version 3 of the command to retrieve random decoy outputs for specified amounts, focusing on either pre-zarcanum or post-zarcanum zones based on the amount value.
URL: ```http:://127.0.0.1:11211/getrandom_outs3.bin```
URL: ```http:://127.0.0.1:36941/getrandom_outs3.bin```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Version 3 of the command to retrieve random decoy outputs for specified amounts, focusing on either pre-zarcanum or post-zarcanum zones based on the amount value.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Version 4 of the command to retrieve random decoy outputs for specified amounts, focusing on either pre-zarcanum or post-zarcanum zones based on the amount value.
URL: ```http:://127.0.0.1:11211/getrandom_outs4.bin```
URL: ```http:://127.0.0.1:36941/getrandom_outs4.bin```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Version 4 of the command to retrieve random decoy outputs for specified amounts, focusing on either pre-zarcanum or post-zarcanum zones based on the amount value.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Retreive transactions by their IDs.
URL: ```http:://127.0.0.1:11211/gettransactions```
URL: ```http:://127.0.0.1:36941/gettransactions```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Fetch from daemon offers listed in the marketplace with given filters
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{
@ -74,8 +74,8 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"lci": "Kolasin",
"lco": "Montenegro",
"ot": 0,
"p": "ZANO",
"pt": "zano",
"p": "LTHN",
"pt": "lethean",
"security": "40fa6db923728b38962718c61b4dc3af1acaa1967479c73703e260dc3609c58d",
"t": "USDT",
"timestamp": 1712683857,
@ -116,4 +116,4 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"total_offers": Total number of offers.
```
<sub>Auto-doc built with: 2.2.0.461[d830c07]</sub>
<sub>Auto-doc built with: 2.2.0.461[d830c07]</sub>

View file

@ -1,6 +1,6 @@
Returns block hash by the given height.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Searches for a given ID across various entity types such as blocks, transactions, key images, multisig outputs, and alternative blocks, useful when the entity type is unknown or unspecified.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Broadcasts a raw transaction encoded in hexadecimal format to the network.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
NO DESCRIPTION
URL: ```http:://127.0.0.1:11211/set_maintainers_info.bin```
URL: ```http:://127.0.0.1:36941/set_maintainers_info.bin```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Adds new block to the blockchain. Request should contain one string with hex-encoded block blob.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Adds new block to the blockchain.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Validates a Schnorr signature for arbitrary data. The public key for verification is provided directly or retrieved using an associated alias.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36941/json_rpc```
### Request:
```json
{

View file

@ -4,20 +4,20 @@ sidebar_position: 3
# Daemon RPC Mode
Zano command-line daemon application (zanod) can be controlled by remote procedure calls (RPC). This makes it possible to use it as a back end for user-defined services.
Lethean command-line daemon application (lethean-chain-node) can be controlled by remote procedure calls (RPC). This makes it possible to use it as a back end for user-defined services.
The daemon starts in RPC server mode by default. To specify the RPC port or bind address the user will need to run zanod with the following options:
The daemon starts in RPC server mode by default. To specify the RPC port or bind address the user will need to run lethean-chain-node with the following options:
```shell
zanod --rpc-bind-ip RPC_IP --rpc-bind-port RPC_PORT
lethean-chain-node --rpc-bind-ip RPC_IP --rpc-bind-port RPC_PORT
```
where:
**RPC_IP** — IP address to bind RPC server to (127.0.0.1 will be used if not specified);
**RPC_PORT** — TCP port for RPC server (11211 is default);
**RPC_PORT** — TCP port for RPC server (36941 is default);
All examples below are based on the assumption that the daemon is listening for RPC at 127.0.0.1:11211.
All examples below are based on the assumption that the daemon is listening for RPC at 127.0.0.1:36941.
All amounts and balances are represented as unsigned integers and measured in atomic units — the smallest fraction of a coin.
@ -52,3 +52,4 @@ You may want to use epee serialization, in particular
**epee::serialization::store_t_to_binary** and **epee::serialization::load_t_from_binary** methods, to serialize your data before passing to API, and to deserialize upon retrieving from API. Alternatively, you may use **epee::net_utils::invoke_http_bin_remote_command2**
All methods in this section are accessible by http\://RPC_IP:RPC_PORT/METOD_NAME URI.

View file

@ -4,11 +4,11 @@ sidebar_position: 2
# How to call API
Making API calls to the Zano Daemon and Wallet is easy, below we'll give you an example to help you get started building on Zano.
Making API calls to the Lethean Daemon and Wallet is easy, below we'll give you an example to help you get started building on Lethean.
### Using Insomnia
[Insomnia](https://insomnia.rest/) is a program (similar to [postman](https://www.postman.com/)) that helps you design, debug, and test APIs, heres an example API call to the Zano Daemon using Insomnia.
[Insomnia](https://insomnia.rest/) is a program (similar to [postman](https://www.postman.com/)) that helps you design, debug, and test APIs, heres an example API call to the Lethean Daemon using Insomnia.
![](https://files.readme.io/d5fd42e-insomnia_call.png)
@ -23,7 +23,7 @@ const axios = require("axios");
async function callAPI() {
try {
const url = "http://127.0.0.1:11211/json_rpc";
const url = "http://127.0.0.1:36941/json_rpc";
const requestData = {
jsonrpc: "2.0",
id: 0,
@ -41,12 +41,45 @@ async function callAPI() {
callAPI();
```
### Using curl
```bash
# Daemon RPC — get chain info
curl -X POST http://127.0.0.1:36941/json_rpc \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":"0","method":"getinfo"}'
# Wallet RPC — get balance (wallet must be running in RPC mode)
curl -X POST http://127.0.0.1:36944/json_rpc \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":"0","method":"getbalance"}'
# Start mining (HTTP endpoint, not JSON-RPC)
curl -X POST http://127.0.0.1:36941/start_mining \
-H 'Content-Type: application/json' \
-d '{"miner_address":"YOUR_iTHN_ADDRESS","threads_count":4}'
# Create integrated address (for payment tracking)
curl -X POST http://127.0.0.1:36944/json_rpc \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":"0","method":"make_integrated_address","params":{"payment_id":"1234567890abcdef"}}'
```
### Summary
When running the Daemon and Wallet in RPC mode locally, the following URL, whether using something like Insomnia or NodeJS or some other language, you access the daemon with the following URL:
| Service | Default Port | URL |
|---------|-------------|-----|
| Daemon RPC | 36941 (testnet: 46941) | `http://127.0.0.1:36941/json_rpc` |
| Wallet RPC | 36944 (testnet: 46944) | `http://127.0.0.1:36944/json_rpc` |
| Daemon P2P | 36942 (testnet: 46942) | N/A (peer connections) |
```
http://127.0.0.1:11211/json_rpc
```
The daemon also exposes HTTP endpoints for mining control (`/start_mining`, `/stop_mining`) and binary data (`/getblocks.bin`, `/get_o_indexes.bin`).
### Libraries
- **JavaScript/TypeScript:** [`lethean_web3`](https://github.com/lethean-io) — server + browser wallet interaction
- **Node.js native:** [`lethean-util`](https://github.com/lethean-io) — address validation, block template conversion, PoW hashing (for mining pools)
- **JavaScript:** [`zano-utils-js`](https://github.com/lethean-io) — Ed25519 crypto, address encoding, transaction decoding
Have fun building on Lethean!
Have fun building on Zano!

View file

@ -4,9 +4,9 @@ sidebar_position: 1
# Overview
Welcome to the Zano API documentation! As a digital currency enthusiast, developer, or end user, we know how important it is for you to have a clear, comprehensive guide to our API. That's why we've designed our documentation to be as accessible and easy to understand as possible.
Welcome to the Lethean API documentation! As a digital currency enthusiast, developer, or end user, we know how important it is for you to have a clear, comprehensive guide to our API. That's why we've designed our documentation to be as accessible and easy to understand as possible.
Our aim with this documentation is to help you harness the full potential of Zano's feature-rich platform, allowing you to integrate, innovate, and build on top of Zano's powerful privacy-oriented blockchain.
Our aim with this documentation is to help you harness the full potential of Lethean's feature-rich platform, allowing you to integrate, innovate, and build on top of Lethean's powerful privacy-oriented blockchain.
:::info
Read more on the [JSON-RPC 2.0 Specification](https://www.jsonrpc.org/specification)
@ -46,10 +46,10 @@ Additionally, endpoints will be grouped according to whether they call the Daemo
## Running Daemon and Wallet in RPC mode (brief guide)
:::info
All examples below are based on the assumption that the daemon is listening for RPC at 127.0.0.1:11211
All examples below are based on the assumption that the daemon is listening for RPC at 127.0.0.1:36941
:::
In order to send JSON requests, both the Zano Daemon and Wallet must be ran in RPC mode
In order to send JSON requests, both the Lethean Daemon and Wallet must be ran in RPC mode
:::tip
For additional info on RPC mode, for wallet visit [Wallet RPC Mode](wallet-rpc), and [Daemon RPC Mode](daemon-rpc)
@ -62,20 +62,20 @@ In order to interact with the Marketplace API, you must include the following fl
:::
```Text console
./zanod --rpc-bind-ip 127.0.0.1 --rpc-bind-port 11211 --enable-offers-service
./lethean-chain-node --rpc-bind-ip 127.0.0.1 --rpc-bind-port 36941 --enable-offers-service
```
### Daemon flags
- rpc-bind-ip — IP address to bind RPC server to (127.0.0.1 will be used if not specified);
- rpc-bind-port — TCP port for RPC server (11211 is default);
- rpc-bind-port — TCP port for RPC server (36941 is default);
---
### How to run Wallet in RPC mode
```Text console
./simplewallet --wallet-file example.wallet --password password --rpc-bind-ip 127.0.0.1 --rpc-bind-port 11212 --daemon-address 127.0.0.1:11211
./lethean-wallet-cli --wallet-file example.wallet --password password --rpc-bind-ip 127.0.0.1 --rpc-bind-port 36944 --daemon-address 127.0.0.1:36941
```
### Daemon flags
@ -84,3 +84,4 @@ In order to interact with the Marketplace API, you must include the following fl
- password - wallets password
- rpc-bind-port - TCP port for wallet RPC server
- rpc-bind-ip - IP and PORT of the daemon

View file

@ -1,6 +1,6 @@
Add given asset id to local whitelist. This whitelist is stored with the wallet file and reset in case of wallet resync or restoring wallet from seed phrase.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36944/json_rpc```
### Request:
```json
{
@ -26,7 +26,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"asset_descriptor": {
"current_supply": 500000000000000000,
"decimal_point": 12,
"full_name": "Zano wrapped ABC",
"full_name": "Lethean wrapped ABC",
"hidden_supply": false,
"meta_info": "{ \"some_arbitrary_field_name\": \"some arbitrary value\"}",
"owner": "f74bb56a5b4fa562e679ccaadd697463498a66de4f1760b2cd40f11c3a00a7a8",
@ -53,4 +53,4 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"status": Status of the asset
```
<sub>Auto-doc built with: 2.2.0.461[d830c07]</sub>
<sub>Auto-doc built with: 2.2.0.461[d830c07]</sub>

View file

@ -1,6 +1,6 @@
Get whitelisted assets for this wallet, assets descriptors present in any of the lists in results would be present in balance() call results(if those assets are part of the wallet transfers). Assets that are not included in those lists won't be included in balance even if the wallet own inputs with such assets.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36944/json_rpc```
### Request:
```json
{
@ -25,7 +25,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"asset_id": "f74bb56a5b4fa562e679ccaadd697463498a66de4f1760b2cd40f11c3a00a7a8",
"current_supply": 500000000000000000,
"decimal_point": 12,
"full_name": "Zano wrapped ABC",
"full_name": "Lethean wrapped ABC",
"hidden_supply": false,
"meta_info": "{ \"some_arbitrary_field_name\": \"some arbitrary value\"}",
"owner": "f74bb56a5b4fa562e679ccaadd697463498a66de4f1760b2cd40f11c3a00a7a8",
@ -37,7 +37,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"asset_id": "f74bb56a5b4fa562e679ccaadd697463498a66de4f1760b2cd40f11c3a00a7a8",
"current_supply": 500000000000000000,
"decimal_point": 12,
"full_name": "Zano wrapped ABC",
"full_name": "Lethean wrapped ABC",
"hidden_supply": false,
"meta_info": "{ \"some_arbitrary_field_name\": \"some arbitrary value\"}",
"owner": "f74bb56a5b4fa562e679ccaadd697463498a66de4f1760b2cd40f11c3a00a7a8",
@ -49,7 +49,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"asset_id": "f74bb56a5b4fa562e679ccaadd697463498a66de4f1760b2cd40f11c3a00a7a8",
"current_supply": 500000000000000000,
"decimal_point": 12,
"full_name": "Zano wrapped ABC",
"full_name": "Lethean wrapped ABC",
"hidden_supply": false,
"meta_info": "{ \"some_arbitrary_field_name\": \"some arbitrary value\"}",
"owner": "f74bb56a5b4fa562e679ccaadd697463498a66de4f1760b2cd40f11c3a00a7a8",
@ -97,4 +97,4 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"total_max_supply": Maximum possible supply for a given asset, cannot be changed after deployment.
```
<sub>Auto-doc built with: 2.2.0.461[d830c07]</sub>
<sub>Auto-doc built with: 2.2.0.461[d830c07]</sub>

View file

@ -1,6 +1,6 @@
Remove given asset id from local whitelist. This whitelist is stored with the wallet file and reset in case of wallet resync or restoring wallet from seed phrase.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36944/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Attach asset descripto to this wallet instance, if asset descripto attached then ADO operations to this asset can be performed using API of this wallet.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36944/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Burn some owned amount of the coins for the given asset.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36944/json_rpc```
### Request:
```json
{
@ -11,7 +11,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"asset_id": "40fa6db923728b38962718c61b4dc3af1acaa1967479c73703e260dc3609c58d",
"burn_amount": 10000000,
"native_amount": 0,
"point_tx_to_address": "ZxBvJDuQjMG9R2j4WnYUhBYNrwZPwuyXrC7FHdVmWqaESgowDvgfWtiXeNGu8Px9B24pkmjsA39fzSSiEQG1ekB225ZnrMTBp",
"point_tx_to_address": "iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY",
"service_entries": [{
"body": "dcfd7e055a6a3043ea3541a571a57a63e25dcc64e4a270f14fa9a58ac5dbec85dcfd7e055a6a3043ea3541a571a57a63e25dcc64e4a270f14fa9a58ac5dbec85",
"flags": 0,

View file

@ -1,6 +1,6 @@
Clears cold sig reservation flag for all unspent transaction outputs, that have one. Please, use with CAUTION!
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36944/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Trivially decrypt base64 encoded data message with chacha using wallet spend key
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36944/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Deploy new asset in the system.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36944/json_rpc```
### Request:
```json
{
@ -11,7 +11,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"asset_descriptor": {
"current_supply": 500000000000000000,
"decimal_point": 12,
"full_name": "Zano wrapped ABC",
"full_name": "Lethean wrapped ABC",
"hidden_supply": false,
"meta_info": "{ \"some_arbitrary_field_name\": \"some arbitrary value\"}",
"owner": "f74bb56a5b4fa562e679ccaadd697463498a66de4f1760b2cd40f11c3a00a7a8",
@ -20,7 +20,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"total_max_supply": 1000000000000000000
},
"destinations": [{
"address": "ZxBvJDuQjMG9R2j4WnYUhBYNrwZPwuyXrC7FHdVmWqaESgowDvgfWtiXeNGu8Px9B24pkmjsA39fzSSiEQG1ekB225ZnrMTBp",
"address": "iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY",
"amount": 10000000000000,
"asset_id": "cc608f59f8080e2fbfe3c8c80eb6e6a953d47cf2d6aebd345bada3a1cab99852",
"payment_id": 1020394
@ -66,4 +66,4 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"tx_id": Id of transaction that carries asset registration command, asset would be registered as soon as transaction got confirmed
```
<sub>Auto-doc built with: 2.2.0.461[d830c07]</sub>
<sub>Auto-doc built with: 2.2.0.461[d830c07]</sub>

View file

@ -1,6 +1,6 @@
Emmit new coins of the the asset, that is controlled by this wallet.
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36944/json_rpc```
### Request:
```json
{
@ -10,7 +10,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"params": {
"asset_id": "40fa6db923728b38962718c61b4dc3af1acaa1967479c73703e260dc3609c58d",
"destinations": [{
"address": "ZxBvJDuQjMG9R2j4WnYUhBYNrwZPwuyXrC7FHdVmWqaESgowDvgfWtiXeNGu8Px9B24pkmjsA39fzSSiEQG1ekB225ZnrMTBp",
"address": "iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY",
"amount": 10000000000000,
"asset_id": "cc608f59f8080e2fbfe3c8c80eb6e6a953d47cf2d6aebd345bada3a1cab99852",
"payment_id": 1020394

View file

@ -1,6 +1,6 @@
Trivially encrypt base64 encoded data message with chacha using wallet spend key
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36944/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Force wallet to fetch tx pool from daemon and go through it's transactions
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36944/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Return information about wallet's pre-zarcanum era outputs. Those outputs should be converted to post-zarcanum varian with trnasfering it sooner or later. (Only outputs that have been created in Zarcanum era can participaet in staking)
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36944/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Gets list of incoming transfers by a given multiple payment_ids
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36944/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Returns wallet statistic on mining. As an argument 'v' it receive timestamp from which history is reviewed
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36944/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
Gets list of incoming transfers by a given payment ID
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36944/json_rpc```
### Request:
```json
{

View file

@ -1,6 +1,6 @@
(deprecated) Returns wallet history of transactions
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36944/json_rpc```
### Request:
```json
{
@ -59,9 +59,9 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"is_a": false,
"payment_id": "",
"private_detailes": {
"a_addr": "ZxBiDtnzhro111111111111111111111111111111111111111111111111111111111111111111111111111111116xzE1X",
"a_addr": "iTHN11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
"a_pledge": 0,
"b_addr": "ZxBiDtnzhro111111111111111111111111111111111111111111111111111111111111111111111111111111116xzE1X",
"b_addr": "iTHN11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
"b_pledge": 0,
"c": "",
"t": "",
@ -79,7 +79,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"is_mixing": false,
"is_service": false,
"payment_id": "00000000ff00ff00",
"remote_addresses": ["ZxBvJDuQjMG9R2j4WnYUhBYNrwZPwuyXrC7FHdVmWqaESgowDvgfWtiXeNGu8Px9B24pkmjsA39fzSSiEQG1ekB225ZnrMTBp"],
"remote_addresses": ["iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY"],
"remote_aliases": ["roger"],
"service_entries": [{
"body": "dcfd7e055a6a3043ea3541a571a57a63e25dcc64e4a270f14fa9a58ac5dbec85dcfd7e055a6a3043ea3541a571a57a63e25dcc64e4a270f14fa9a58ac5dbec85",
@ -132,7 +132,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"is_income": If trnasfer entrie is income (taken from native subtransfer)
"is_mining": Tells if this transaction is coinbase transaction(ie generated by PoW mining or by PoS staking)
"is_mixing": Tells if this transaction using mixins or not(auditble wallets normally don't use mixins)
"is_service": Tells if this transaction is used as utility by one of Zano services(contracts, ionic swaps, etc)
"is_service": Tells if this transaction is used as utility by one of Lethean services(contracts, ionic swaps, etc)
"payment_id": HEX-encoded payment id blob, if it was present
"remote_addresses": Remote addresses of this transfer(destination if it's outgoing transfer or sender if it's incoming transaction)
"remote_aliases": Aliases for remot addresses, of discovered
@ -157,4 +157,4 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"unlock_time": Unlock time of this transfer (if present)
```
<sub>Auto-doc built with: 2.2.0.461[d830c07]</sub>
<sub>Auto-doc built with: 2.2.0.461[d830c07]</sub>

View file

@ -1,6 +1,6 @@
(deprecated) Returns wallet history of transactions V2 (post-Zarcanum version)
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36944/json_rpc```
### Request:
```json
{
@ -58,9 +58,9 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"is_a": false,
"payment_id": "",
"private_detailes": {
"a_addr": "ZxBiDtnzhro111111111111111111111111111111111111111111111111111111111111111111111111111111116xzE1X",
"a_addr": "iTHN11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
"a_pledge": 0,
"b_addr": "ZxBiDtnzhro111111111111111111111111111111111111111111111111111111111111111111111111111111116xzE1X",
"b_addr": "iTHN11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
"b_pledge": 0,
"c": "",
"t": "",
@ -77,7 +77,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"is_mixing": false,
"is_service": false,
"payment_id": "00000000ff00ff00",
"remote_addresses": ["ZxBvJDuQjMG9R2j4WnYUhBYNrwZPwuyXrC7FHdVmWqaESgowDvgfWtiXeNGu8Px9B24pkmjsA39fzSSiEQG1ekB225ZnrMTBp"],
"remote_addresses": ["iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY"],
"remote_aliases": ["roger"],
"service_entries": [{
"body": "dcfd7e055a6a3043ea3541a571a57a63e25dcc64e4a270f14fa9a58ac5dbec85dcfd7e055a6a3043ea3541a571a57a63e25dcc64e4a270f14fa9a58ac5dbec85",
@ -133,7 +133,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"height": Height of the block that included transaction(0 i transaction is unconfirmed)
"is_mining": Tells if this transaction is coinbase transaction(ie generated by PoW mining or by PoS staking)
"is_mixing": Tells if this transaction using mixins or not(auditble wallets normally don't use mixins)
"is_service": Tells if this transaction is used as utility by one of Zano services(contracts, ionic swaps, etc)
"is_service": Tells if this transaction is used as utility by one of Lethean services(contracts, ionic swaps, etc)
"payment_id": HEX-encoded payment id blob, if it was present
"remote_addresses": Remote addresses of this transfer(destination if it's outgoing transfer or sender if it's incoming transaction)
"remote_aliases": Aliases for remot addresses, of discovered
@ -162,4 +162,4 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"unlock_time": Unlock time of this transfer (if present)
```
<sub>Auto-doc built with: 2.2.0.461[d830c07]</sub>
<sub>Auto-doc built with: 2.2.0.461[d830c07]</sub>

View file

@ -1,6 +1,6 @@
Returns wallet history of transactions V3 (HF6-ready version with intrinsic payment IDs support)
URL: ```http:://127.0.0.1:11211/json_rpc```
URL: ```http:://127.0.0.1:36944/json_rpc```
### Request:
```json
{
@ -58,9 +58,9 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"is_a": false,
"payment_id": "",
"private_detailes": {
"a_addr": "ZxBiDtnzhro111111111111111111111111111111111111111111111111111111111111111111111111111111116xzE1X",
"a_addr": "iTHN11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
"a_pledge": 0,
"b_addr": "ZxBiDtnzhro111111111111111111111111111111111111111111111111111111111111111111111111111111116xzE1X",
"b_addr": "iTHN11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
"b_pledge": 0,
"c": "",
"t": "",
@ -76,7 +76,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"is_mining": false,
"is_mixing": false,
"is_service": false,
"remote_addresses": ["ZxBvJDuQjMG9R2j4WnYUhBYNrwZPwuyXrC7FHdVmWqaESgowDvgfWtiXeNGu8Px9B24pkmjsA39fzSSiEQG1ekB225ZnrMTBp"],
"remote_addresses": ["iTHNUNiuu3VP1yy8xH2y5iQaABKXurdjqZmzFiBiyR4dKG3j6534e9jMriY6SM7PH8NibVwVWW1DWJfQEWnSjS8n3Wgx86pQpY"],
"remote_aliases": ["roger"],
"service_entries": [{
"body": "dcfd7e055a6a3043ea3541a571a57a63e25dcc64e4a270f14fa9a58ac5dbec85dcfd7e055a6a3043ea3541a571a57a63e25dcc64e4a270f14fa9a58ac5dbec85",
@ -127,7 +127,7 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"height": Height of the block that included transaction(0 i transaction is unconfirmed)
"is_mining": Tells if this transaction is coinbase transaction(ie generated by PoW mining or by PoS staking)
"is_mixing": Tells if this transaction using mixins or not(auditble wallets normally don't use mixins)
"is_service": Tells if this transaction is used as utility by one of Zano services(contracts, ionic swaps, etc)
"is_service": Tells if this transaction is used as utility by one of Lethean services(contracts, ionic swaps, etc)
"remote_addresses": Remote addresses of this transfer(destination if it's outgoing transfer or sender if it's incoming transaction)
"remote_aliases": Aliases for remot addresses, of discovered
"service_entries": Additional entries that might be stored in transaction but not part of it's consensus
@ -151,4 +151,4 @@ URL: ```http:://127.0.0.1:11211/json_rpc```
"unlock_time": Unlock time of this transfer (if present)
```
<sub>Auto-doc built with: 2.2.0.461[d830c07]</sub>
<sub>Auto-doc built with: 2.2.0.461[d830c07]</sub>

Some files were not shown because too many files have changed in this diff Show more