DOCS
  • Namada
  • Начало работы
    • Быстрый старт
    • Установить Namada
      • Установка из исходных файлов
        • Предварительные компоненты
        • Устранение неисправностей при установке из источника
      • Установка из бинарных файлов
        • Использование двоичных файлов
        • Предварительные компоненты
      • Из Docker
    • Установка CometBFT
    • Конфиденциальность
    • Безопасность и сообщения об ошибках
  • Руководство пользователя
    • Руководство по работе с кошельком Namada
      • Кошелек файловой системы
      • Веб-кошелек
      • Аппаратный кошелек
    • Прозрачные счета
      • Счета с несколькими подписями на Namada
      • Отправка и получение токенов NAM
    • MASP
      • Экранированные вознаграждения
      • Экранированные переводы
    • Тарифы Namada
    • Делегирование доли
    • Голосование
      • Голосование в цепочке
      • Голосование вне цепочки
    • PGF
      • Стать стюардом
      • Голосование за стюардов и предложения PGF
      • Предложение о финансировании
    • Перевод активов через IBC
  • Руководство для операторов
    • Запуск полного узла
      • Переменные среды
      • Настройка полного узла
      • Настройка ведения журнала Namada
      • Базовый каталог
    • Валидаторы Namada
      • Требования к аппаратному обеспечению
      • Настройка валидатора Genesis
      • Запустите свой узел в качестве валидатора genesis
      • Генерация учетной записи валидатора
      • Связывание (Staking)
      • Proof-of-Stake
    • Развертывание локальной сети
    • IBC Relayers
    • Поиск и устранение неисправностей в работе оператора
    • Namada Ethereum Bridge
      • Ретрансляция транзакций Ethereum
  • Интеграции
    • Использование Namada SDK
      • Настройка клиента SDK
      • Настройка кошелька SDK
      • Генерация счетов
      • Конструирование трансферов
      • Использование SDK с интерфейсом Namada
    • Индексатор Namada
  • Сети Namada
    • Mainnets
    • Testnets
      • Настройка среды
      • Этапы миграции для тестовых сетей
      • Инструкции валидатора Pre-genesis
      • Заявка на получение статуса валидатора генезиса
      • Присоединение к последней тестовой сети
      • Стать валидатором post genesis
      • История тестовых сетей
      • Использование крана testnet
      • Namada FAQ
      • Тестнет Namada Campfire
Powered by GitBook
On this page
  1. Интеграции
  2. Использование Namada SDK

Конструирование трансферов

PreviousГенерация счетовNextИспользование SDK с интерфейсом Namada

Last updated 1 year ago

Теперь, когда кошелек и клиент настроены, мы можем создать среду, необходимую для создания переводов. Это может быть несколько сложно, но приведенный ниже шаблонный код должен помочь: Для генерации переводов потребуются следующие импорты:

use namada_sdk::args::InputAmount;

После того как пользователь и соответствующую структуру, cоздать и отправить транзакции перевода не составляет особого труда.

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.

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()]);
создал учетную запись