forked from anoma/namada-docs
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
40fb26b
commit 2b575f2
Showing
107 changed files
with
4,661 additions
and
32 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
{ | ||
"index": "Namada", | ||
"introduction": "Начало работы", | ||
"users": "Руководство пользователя", | ||
"operators": "Руководство для операторов", | ||
"integrating-with-namada" : "Итерация с Namada", | ||
"networks": "Сети" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
import { DocsAscii } from '../components/DocsAscii' | ||
|
||
<DocsAscii/> | ||
|
||
## О Namada | ||
|
||
[Namada](https://namada.net/) это блокчейн, ориентированный на конфиденциальность активов и использующий технологию доказательства с нулевым разглашением. Криптографические возможности Namada обеспечивают пользователям приватность, не зависящую от активов и межцепочечную конфиденциальность, и поддерживаются фондом Anoma. | ||
|
||
#### Ключевые инновации: | ||
|
||
* Zcash-подобные переводы для любых активов (заменяемых и незаменяемых) | ||
* Вознаграждаемое использование приватности как общественного блага | ||
* Взаимодействие с Ethereum через собственный мост с минимизацией доверия | ||
|
||
### Обзор возможностей | ||
|
||
* Proof-of-Stake с управлением для обеспечения безопасности и развития Namada | ||
* Быстрая финализация BFT с 4-секундными блоками | ||
* Двусторонний мост Ethereum с минимальным уровнем доверия IBC-соединения с цепочками, которые уже используют IBC (все цепочки Cosmos) | ||
* Экранированный пул с несколькими активами (MASP) | ||
* Схема конвертации (вознаграждения за экранированный набор) | ||
* Приложение Ledger | ||
|
||
Для более глубокого изученияобучения мы рекомендуем: | ||
|
||
* Статья: [Представляем Namada: межцепочечная конфиденциальность, ориентированная на активы](https://namada.net/blog/introducing-namada-interchain-asset-agnostic-privacy) | ||
* Статья: [Что такое Namada?](https://blog.namada.net/what-is-namada/) | ||
* [Беседы и подкасты](https://namada.net/talks) | ||
|
||
Чтобы узнать больше о протоколе, мы рекомендуем следующие подробные ресурсы: | ||
|
||
* Доклад на ZK8 Namada: [межцепочечная конфиденциальность, не зависящая от активов](https://youtu.be/5K6YxmZPFkE) | ||
* Спецификации Namada | ||
* [Кодовая база](https://github.com/anoma/namada) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# Интеграции | ||
|
||
Данное руководство посвящено интеграции с Namada. Оно предназначено для разработчиков, которые хотят интегрировать Namada в свои приложения, и для инженеров, которые хотят разрабатывать на Namada. | ||
|
||
## Лицензия | ||
|
||
Namada работает под лицензией [GPLv3](https://www.gnu.org/licenses/gpl-3.0.html) которая является свободной для использования и модификации. Более подробная информация приведена в разделе [ЛИЦЕНЗИЯ](https://github.com/anoma/namada/blob/main/LICENSE). | ||
|
||
## Оглавление | ||
|
||
- [SDK](./integrating-with-namada/sdk.mdx) | ||
- [Индексатор](./integrating-with-namada/indexer.mdx) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"sdk" : "Использование SDK", | ||
"indexer": "Индексатор" | ||
} |
105 changes: 105 additions & 0 deletions
105
packages/docs/pages/integrating-with-namada/indexer.ru-RU.mdx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,105 @@ | ||
import Expandable from '../../components/Expandable'; | ||
import { Callout } from 'nextra-theme-docs' | ||
|
||
# Индексатор Namada | ||
|
||
В сотрудничестве с компанией[ Zondax](https://zondax.ch/) был создан индексатор для блокчейна Namada. | ||
|
||
Индексатор Namada (он же `namadexer`) постоянно запрашивает данные блокчейна Namada и вместе с SDK способен отображать блоки, транзакции и другую ценную информацию в реляционной базе данных (postgres). | ||
|
||
Это особенно удобно для проведения аналитических операций с блокчейном, в том числе для хранения исторических данных в удобном для запросов виде. | ||
|
||
## Настройка | ||
|
||
Исходный код индексатора namada можно [найти здесь](https://github.com/zondax/namadexer), и он прост в настройке. | ||
|
||
Индексатор `namadexer` лучше всего работает вместе с [Docker](https://www.docker.com/products/docker-desktop) | ||
|
||
```bash | ||
git clone https://github.com/Zondax/namadexer.git | ||
cd namadexer | ||
make compose | ||
``` | ||
|
||
## Запуск сервера и базы данных | ||
|
||
После запуска DockerFile остается только настроить базу данных postgres, а также сервер, который будет запрашивать базу данных. | ||
|
||
Убедитесь, что `postgres` [установлен на локальной машине](https://www.postgresql.org/download/). | ||
|
||
**Запустите postgres в docker** | ||
|
||
```bash | ||
make postgres | ||
# or run (and change arguments, e.g port): | ||
# docker run --name postgres -e POSTGRES_PASSWORD=wow -e POSTGRES_DB=blockchain -p 5432:5432 -d postgres | ||
``` | ||
|
||
После того как сервер postgres запущен, необходимо настроить сервер, который будет выполнять запросы к базе данных postgres. | ||
|
||
Для настройки сервера выполните следующую команду: | ||
|
||
``` | ||
make run_server | ||
``` | ||
|
||
В случае успеха сервер должен быть запущен как `daemon` на localhost по порту `30303`. | ||
|
||
## Запуск индексатора | ||
|
||
Прежде всего, убедитесь, что файл `Settings.toml` внутри `config/Settings.toml` настроен правильно. | ||
|
||
|
||
<Expandable> | ||
```toml | ||
log_level = "info" | ||
network = "public-testnet-14" | ||
|
||
[database] | ||
host = "0.0.0.0:5435" | ||
user = "postgres" | ||
password = "wow" | ||
dbname = "blockchain" | ||
# Optional field to configure a timeout if database connection | ||
# fails. | ||
connection_timeout = 20 | ||
|
||
|
||
[server] | ||
serve_at = "0.0.0.0" | ||
port = 30303 | ||
|
||
[indexer] | ||
tendermint_addr = "0.0.0.0" | ||
port = 26657 | ||
|
||
[jaeger] | ||
enable = false | ||
host = "localhost" | ||
port = 6831 | ||
|
||
[prometheus] | ||
host = "0.0.0.0" | ||
port = 9000 | ||
``` | ||
|
||
</Expandable> | ||
|
||
<Callout type="info" emoji="👀"> | ||
**Интерпретация toml** | ||
|
||
Важно изменить следующие параметры: | ||
|
||
1. `indexer.tendermint_addr`- Это должен быть адрес и соответствующий порт синхронизированного полного узла Namada | ||
2. `database.host`- Это должен быть tcp-адрес (с портом), на котором запущена база данных postgres. | ||
</Callout> | ||
|
||
После завершения настройки можно запустить индексатор | ||
|
||
```bash | ||
make run_indexer | ||
``` | ||
|
||
## Запрос к базе данных | ||
|
||
Предустановленные конечные точки для запросов к базе данных описаны в [документации здесь.](https://github.com/Zondax/namadexer/blob/main/docs/04-server.md) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
import Expandable from '../../components/Expandable'; | ||
|
||
# Использование Namada SDK | ||
|
||
Комплект разработки программного обеспечения (SDK) Namada можно найти в репо `namada` по пути [`namada/shared`](https://github.com/anoma/namada/tree/main/shared). SDK написан на языке Rust и может быть использован для взаимодействия с блокчейном Namada: создания транзакций, их подписания и отправки в сеть. | ||
|
||
## Быстрый старт | ||
|
||
Хорошей отправной точкой для ознакомления с SDK является [репо namada interface.](https://github.com/anoma/namada-interface/tree/main/packages/shared/lib/src/sdk) Этот репозиторий содержит простое веб-приложение, использующее SDK для взаимодействия с блокчейном Namada. Однако следует отметить дополнительную сложность, возникающую из-за интеграции в приложение javascript с помощью[ wasm-bindgen,](https://rustwasm.github.io/docs/wasm-bindgen/) что не является необходимым. | ||
|
||
## Установка | ||
|
||
Namada SDK можно установить, создав новый проект Rust и добавив в файл Cargo.toml следующее: | ||
|
||
<Expandable> | ||
|
||
```toml | ||
[package] | ||
name = "namada-sdk-starter" | ||
version = "0.1.0" | ||
edition = "2021" | ||
|
||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html | ||
|
||
[dependencies] | ||
async-std = "1.11.0" | ||
async-trait = "0.1.51" | ||
borsh = "0.9.0" | ||
file-lock = "2.0.2" | ||
futures = "0.3.28" | ||
getrandom = { version = "0.2" } | ||
masp_primitives = { git = "https://github.com/anoma/masp.git", rev = "50acc5028fbcd52a05970fe7991c7850ab04358e" } | ||
masp_proofs = { git = "https://github.com/anoma/masp.git", rev = "50acc5028fbcd52a05970fe7991c7850ab04358e", features = ["download-params"]} | ||
# Make sure the rev is to the latest version of namada in the below repo | ||
namada_sdk = { git = "https://github.com/anoma/namada.git", rev = "v0.24.0", default-features = false, features = ["abciplus", "namada-sdk", "std"] } | ||
rand = {version = "0.8", default-features = false} | ||
rand_core = {version = "0.6", default-features = false} | ||
tendermint-config = {git="https://github.com/heliaxdev/tendermint-rs.git", rev="b7d1e5afc6f2ccb3fd1545c2174bab1cc48d7fa7"} | ||
tendermint-rpc = {git="https://github.com/heliaxdev/tendermint-rs.git", rev="b7d1e5afc6f2ccb3fd1545c2174bab1cc48d7fa7", features = ["http-client"]} | ||
thiserror = "1.0.38" | ||
tokio = {version = "1.8.2", default-features = false} | ||
toml = "0.5.8" | ||
zeroize = "1.5.5" | ||
|
||
[patch.crates-io] | ||
borsh = {git = "https://github.com/heliaxdev/borsh-rs.git", rev = "cd5223e5103c4f139e0c54cf8259b7ec5ec4073a"} | ||
borsh-derive = {git = "https://github.com/heliaxdev/borsh-rs.git", rev = "cd5223e5103c4f139e0c54cf8259b7ec5ec4073a"} | ||
borsh-derive-internal = {git = "https://github.com/heliaxdev/borsh-rs.git", rev = "cd5223e5103c4f139e0c54cf8259b7ec5ec4073a"} | ||
borsh-schema-derive-internal = {git = "https://github.com/heliaxdev/borsh-rs.git", rev = "cd5223e5103c4f139e0c54cf8259b7ec5ec4073a"} | ||
|
||
``` | ||
</Expandable> | ||
|
||
После установки sdk можно использовать его для взаимодействия с блокчейном Namada. | ||
|
||
## Оглавление: | ||
|
||
- [Настройка клиента](./sdk/setting-up-a-client.mdx) | ||
- [Настройка кошелька](./sdk/setting-up-a-wallet.mdx) | ||
- [Создание переводов](./sdk/constructing-transfers.mdx) |
7 changes: 7 additions & 0 deletions
7
packages/docs/pages/integrating-with-namada/sdk/_meta.ru-RU.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
{ | ||
"setting-up-a-client" : "Настройка клиента", | ||
"setting-up-a-wallet" : "Настройка кошелька", | ||
"generating-accounts": "Генерация счетов", | ||
"constructing-transfers" : "Конструирование переводов", | ||
"interface-integration" : "Интеграция интерфейса" | ||
} |
69 changes: 69 additions & 0 deletions
69
packages/docs/pages/integrating-with-namada/sdk/constructing-transfers.ru-RU.mdx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
# Конструирование трансферов | ||
|
||
Теперь, когда кошелек и клиент настроены, мы можем создать среду, необходимую для создания переводов. Это может быть несколько сложно, но приведенный ниже шаблонный код должен помочь: Для генерации переводов потребуются следующие импорты: | ||
|
||
```rust | ||
use namada_sdk::args::InputAmount; | ||
``` | ||
|
||
После того как пользователь[ создал учетную запись](./generating-accounts.mdx) и соответствующую структуру, cоздать и отправить транзакции перевода не составляет особого труда. | ||
|
||
```rust | ||
let mut namada = NamadaImpl::new(&http_client, &mut wallet, &mut shielded_ctx, &NullIo) | ||
.await | ||
.expect("unable to construct Namada object") | ||
.chain_id(ChainId::from_str("public-testnet-14.5d79b6958580").unwrap()); | ||
// Transfer the given amount of native tokens from the source account to the | ||
// destination account. | ||
async fn gen_transfer<'a>( | ||
namada: &impl Namada<'a>, | ||
source: &Account, | ||
destination: &Account, | ||
amount: InputAmount, | ||
) -> std::result::Result<ProcessTxResponse, namada_sdk::error::Error> { | ||
let mut transfer_tx_builder = namada | ||
.new_transfer( | ||
TransferSource::Address(Address::from(&source.public_key)), | ||
TransferTarget::Address(Address::from(&destination.public_key)), | ||
namada.native_token(), | ||
amount, | ||
) | ||
.signing_keys(vec![source.private_key.clone()]); | ||
let (mut transfer_tx, signing_data, _epoch) = transfer_tx_builder | ||
.build(namada) | ||
.await | ||
.expect("unable to build transfer"); | ||
namada | ||
.sign(&mut transfer_tx, &transfer_tx_builder.tx, signing_data) | ||
.await | ||
.expect("unable to sign reveal pk tx"); | ||
namada.submit(transfer_tx, &transfer_tx_builder.tx).await | ||
} | ||
``` | ||
|
||
Аналогичным образом могут быть построены и другие транзакции. | ||
|
||
## Экранированные переводы | ||
|
||
Для того чтобы сделать передачу экранированной, необходимо вместо прозрачных адресов и ключей использовать экранированные. | ||
|
||
Важно, чтобы в качестве источника использовался экранированный расширенный ключ `SpendingKey`. | ||
|
||
```rust | ||
use namada::types::masp::{ExtendedSpendingKey, PaymentAddress, TransferSource, TransferTarget}; | ||
|
||
// Make sure to replace 'secret-ex' with an actual Namada extended spending key | ||
let source = ExtendedSpendingKey::from_str("secret-ex").unwrap(); | ||
// Make sure to replace "payment-addr-ex" with an actual Namada payment address | ||
let destination = PaymentAddress::from_str("payment-addr-ex").unwrap(); | ||
let fee_payer = | ||
let mut transfer_tx_builder = namada | ||
.new_transfer( | ||
TransferSource::ExtendedSpendingKey(source), | ||
TransferTarget::Address(Address::from(&destination.public_key)), | ||
namada.native_token(), | ||
amount, | ||
) | ||
// Make sure to replace "transparent-address-ex" with an actual Namada transparent address | ||
.signing_keys(vec![Address::from_str("transparent-address-ex").ok()]); | ||
``` |
76 changes: 76 additions & 0 deletions
76
packages/docs/pages/integrating-with-namada/sdk/generating-accounts.ru-RU.mdx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
# Генерация счетов | ||
|
||
## Представление счетов | ||
|
||
Представление счетов с помощью Namada SDK очень простое. Счет в Namada определяется его открытым ключом (ключами) и закрытым ключом (закрытыми ключами) (множественное число для мультиподписей). Открытый ключ используется для идентификации счета, а закрытый ключ - для подписания транзакций. В приведенном ниже фрагменте мы представляем счет с помощью открытого и закрытого ключей. | ||
|
||
```rust | ||
use namada_sdk::core::types::key::common::{PublicKey, SecretKey}; | ||
struct SimpleAccount { | ||
public_key: PublicKey, | ||
private_key: SecretKey | ||
} | ||
``` | ||
|
||
Для счета с несколькими подписями мы можем представить это в виде вектора ключей. | ||
|
||
```rust | ||
use namada_sdk::core::types::key::common::{PublicKey, SecretKey}; | ||
struct MultisigAccount { | ||
public_keys: Vec<PublicKey>, | ||
private_keys: Vec<SecretKey> | ||
} | ||
``` | ||
|
||
Счета с несколькими подписями, поскольку они инициализируются транзакцией на цепи, всегда будут иметь открытый ключ. Однако если пары ключей генерируются в автономном режиме, то для раскрытия открытого ключа пользователю необходимо провести транзакцию. В связи с этим полезно добавить поле `revealed` в структуру счета. | ||
|
||
```rust | ||
use namada_sdk::core::types::key::common::{PublicKey, SecretKey}; | ||
struct Account { | ||
public_key: PublicKey, | ||
private_key: SecretKey, | ||
revealed: bool | ||
} | ||
``` | ||
|
||
## Раскрытие открытого ключа implicit счета | ||
|
||
Для того чтобы раскрыть открытый ключ implicit счета, пользователь должен отправить транзакцию. | ||
|
||
```rust | ||
use namada_sdk::io::NullIo; | ||
use namada_sdk::NamadaImpl; | ||
use namada_sdk::core::types::chain::ChainId; | ||
|
||
|
||
// Define the namada implementation (assuming we have a wallet, http_client, and shielded_ctx) | ||
let mut namada = NamadaImpl::new(&http_client, &mut wallet, &mut shielded_ctx, &NullIo) | ||
.await | ||
.expect("unable to construct Namada object") | ||
.chain_id(ChainId::from_str("public-testnet-14.5d79b6958580").unwrap()); | ||
|
||
// Generate an account (assuming sk is a SecretKey) | ||
let account = Account { | ||
public_key: sk.to_public(), | ||
private_key: sk, | ||
revealed: false, | ||
}; | ||
|
||
// Build the reveal pk transaction using the NamadaImpl object | ||
let reveal_tx_builder = namada | ||
.new_reveal_pk(account.public_key.clone()) | ||
.signing_keys(vec![account.private_key.clone()]); | ||
let (mut reveal_tx, signing_data, _) = reveal_tx_builder | ||
.build(namada) | ||
.await | ||
.expect("unable to build reveal pk tx"); | ||
// Sign the transaction | ||
namada | ||
.sign(&mut reveal_tx, &reveal_tx_builder.tx, signing_data) | ||
.await | ||
.expect("unable to sign reveal pk tx"); | ||
// Submit the signed tx to the ledger for execution | ||
namada.submit(reveal_tx.clone(), reveal_tx_builder) | ||
``` | ||
|
||
После раскрытия открытого ключа учетная запись может быть использована для подписания транзакций. |
Oops, something went wrong.