Экранированные переводы

В Namada экранированные переводы осуществляются с помощью пула Multi-Asset Shielded Pool(открывается в новой вкладке) (MASP). MASP представляет собой схему с нулевым знанием (zk-SNARK(открывается в новой вкладке)), которая расширяет схему Zcash Sapling(открывается в новой вкладке), добавляя поддержку отправки произвольных активов. Все активы в пуле имеют одинаковый набор анонимности, это означает, что чем больше транзакций выдается MASP, тем сильнее гарантии приватности.

Использование MASP

Если вы знакомы с Zcash, то набор операций, которые вы можете выполнять с помощью MASP, аналогичен:

  • Экранированные переводы: от прозрачных до экранированных адресов

  • Экранированные переводы: экранированные на экранированные адреса

  • Неэкранированные переводы: от экранированных к прозрачным адресам

Мы различаем два вида ключей:

  • Spending Key(далее ключ расходов) - это тип закрытого ключа, который позволяет любому пользователю, владеющему им, расходовать баланс связанного с ним адреса. Для экранированных адресов владение ключом расходов также позволяет пользователю просматривать баланс адреса и данные о транзакциях.

  • Viewing Key(далее ключ просмотра) позволяет любому пользователю, владеющему им, просматривать и раскрывать информацию о транзакциях. Он является производным от ключа Spending Key и имеет тот же псевдоним.

Экранированные переводы

Для осуществления экранированного перевода пользователь должен иметь прозрачный счет с некоторым балансом токенов.

Генерация ключа траты

Новый ключ можно сгенерировать случайным образом:

namadaw masp gen-key --alias <your-spending-key-alias>

Эта команда также сгенерирует соответствующий Viewing Key, имеющий тот же псевдоним

Создание нового платежного адреса

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

namadaw masp gen-addr \
    --key <your-spending-key-alias> \
    --alias <your-payment-address-alias>

При выполнении этой команды каждый раз генерируется свой платежный адрес. Платежные адреса можно использовать или отбрасывать по своему усмотрению, а любые связи между адресами не могут быть расшифрованы другим пользователем без ключа расходования средств.

Отправить перевод на экранированный счет

Получив платежный адрес, можно перевести остаток средств с прозрачного счета на экранированный:

namadac transfer \
    --source <your-established-account-alias> \
    --target <your-payment-address-alias> \
    --token btc \
    --amount <amount-to-shiel

Просмотр баланса

После того как перевод был передан, подтвержден и исполнен на блокчейне, можно просмотреть баланс своего расходного ключа:

namadac balance --owner <your-spending-key-alias>

Экранированные переводы

После того как у пользователя появился защищенный баланс, он может быть переведен на другой защищенный адрес:

namadac transfer \
    --source <your-spending-key-alias> \
    --target <destination-payment-address> \
    --token btc \
    --amount <amount-to-transfer> \
    --signing-keys <your-implicit-account-alias>

Неэкранированные переводы

Возможен также перевод остатка на прозрачный счет:

namadac transfer \
    --source <your-spending-key-alias> \
    --target <some-transparent-address-alias> \
    --token btc \
    --amount <amount-to-unshield> \
    --signing-keys <your-implicit-account-alias>

Экранированный адрес/генерация ключей

Генерация ключа траты

Когда клиент генерирует расходный ключ, для него автоматически создается ключ просмотра. Ключ расходования выступает в качестве "источника" любого перевода с любого полученного от него экранированного адреса. Ключ просмотра может определять общее количество неизрасходованных банкнот, которые разрешено расходовать ключу расхода.

Генерация платежных адресов

Платежные адреса могут быть получены как от ключей расходования, так и от ключей просмотра. Платежный адрес выступает в качестве адреса назначения, по которому все поступившие на этот адрес токены могут быть потрачены соответствующим ключом расходования. Потратить и просмотреть баланс платежного адреса может только ключ расходования и ключ просмотра платежного адреса соответственно. Ниже приведены примеры того, как могут быть сгенерированы платежные адреса:namadaw masp gen-addr --alias my-pa1 --key my-sk

namadaw masp gen-addr --alias my-pa1 --key my-sk
namadaw masp gen-addr --alias my-pa2 --key my-vk

Ручное добавление ключей/адресов

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

namadaw masp add --alias my-sk --value xsktest1qqqqqqqqqqqqqq9v0sls5r5de7njx8ehu49pqgmqr9ygelg87l5x8y4s9r0pjlvu69au6gn3su5ewneas486hdccyayx32hxvt64p3d0hfuprpgcgv2q9gdx3jvxrn02f0nnp3jtdd6f5vwscfuyum083cvfv4jun75ak5sdgrm2pthzj3sflxc0jx0edrakx3vdcngrfjmru8ywkguru8mxss2uuqxdlglaz6undx5h8w7g70t2es850g48xzdkqay5qs0yw06rtxcvedhsv
namadaw masp add --alias my-vk --value xfvktest1qqqqqqqqqqqqqqpagte43rsza46v55dlz8cffahv0fnr6eqacvnrkyuf9lmndgal7erg38awgq60r259csg3lxeeyy5355f5nj3ywpeqgd2guqd73uxz46645d0ayt9em88wflka0vsrq29u47x55psw93ly80lvftzdr5ccrzuuedtf6fala4r4nnazm9y9hq5yu6pq24arjskmpv4mdgfn3spffxxv8ugvym36kmnj45jcvvmm227vqjm5fq8882yhjsq97p7xrwqt7n63v
namadaw masp add --alias my-pa --value patest10qy6fuwef9leccl6dfm7wwlyd336x4y32hz62cnrvlrl6r5yk0jnw80kus33x34a5peg2xc4csn

Проведение экранированных операций

Экранирование транзакций

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

namadac transfer --source Bertha --amount 50 --token BTC --target my-pa

Снятие защиты с транзакций

Снятие экранирования - это процесс перевода остатков токенов из экранированного набора в прозрачный. Когда пользователь осуществляет перевод с экранированного счета (с использованием соответствующего ключа расходования) на прозрачный счет, вновь переведенные средства считаются "неэкранированными". Плата за газ взимается с адреса подписанта (который по умолчанию должен соответствовать целевому адресу). После завершения транзакции ключ-расходник больше не сможет расходовать переведенную сумму. Ниже приведен пример выполнения неэкранированной транзакции:

namadac transfer --target Bertha --amount 45 --token BTC --source my-sk

Экранированные транзакции

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

namadac transfer --source my-sk --amount 5 --token BTC --target your-pa

Просмотр экранированных балансов

Ключ просмотра, являющийся производным от ключа трат, позволяет любому пользователю, владеющему этим ключом, просматривать остатки, привязанные к соответствующему ключу трат. С помощью этого ключа просмотра можно как расшифровать весь баланс соответствующего ключа просмотра, так и запросить его подмножество:

namadac balance
namadac balance --owner <the-spending-key-you-created>
namadac balance --owner <the-spending-key-you-created> --token BTC
namadac balance --token BTC

Вывод списка экранированных ключей/адресов

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

namadaw masp list-keys
namadaw masp list-keys --unsafe-show-secret
namadaw masp list-keys --unsafe-show-secret --decrypt
namadaw masp list-addrs

Поиск экранированных ключей/адресов

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

namadaw masp find --alias my-alias
namadaw masp find --alias my-alias --unsafe-show-secret

Last updated