Skip to content

Commit

Permalink
Feat/i18n ru (#4)
Browse files Browse the repository at this point in the history
  • Loading branch information
RuslanGlaznyov authored Nov 20, 2023
1 parent 40fb26b commit 2b575f2
Show file tree
Hide file tree
Showing 107 changed files with 4,661 additions and 32 deletions.
2 changes: 1 addition & 1 deletion packages/docs/next.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ const withNextra = require("nextra")({
module.exports = {
...withNextra(),
i18n: {
locales: ['en-US', 'uk-UA', 'zh-CN'],
locales: ['en-US', 'uk-UA', 'zh-CN', 'ru-RU'],
defaultLocale: 'en-US'
},
images: {
Expand Down
8 changes: 8 additions & 0 deletions packages/docs/pages/_meta.ru-RU.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"index": "Namada",
"introduction": "Начало работы",
"users": "Руководство пользователя",
"operators": "Руководство для операторов",
"integrating-with-namada" : "Итерация с Namada",
"networks": "Сети"
}
34 changes: 34 additions & 0 deletions packages/docs/pages/index.ru-RU.mdx
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)
12 changes: 12 additions & 0 deletions packages/docs/pages/integrating-with-namada.ru-RU.mdx
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)
4 changes: 4 additions & 0 deletions packages/docs/pages/integrating-with-namada/_meta.ru-RU.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"sdk" : "Использование SDK",
"indexer": "Индексатор"
}
105 changes: 105 additions & 0 deletions packages/docs/pages/integrating-with-namada/indexer.ru-RU.mdx
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)
60 changes: 60 additions & 0 deletions packages/docs/pages/integrating-with-namada/sdk.ru-RU.mdx
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)
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" : "Интеграция интерфейса"
}
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()]);
```
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)
```

После раскрытия открытого ключа учетная запись может быть использована для подписания транзакций.
Loading

0 comments on commit 2b575f2

Please sign in to comment.