Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
import { Callout } from 'nextra-theme-docs'

# Shielded Transfers

You can construct shielded transfers similarly to transparent transfers, except that rather than providing implicit addresses as the `source` and `target`,
you will need to provide a spending key and payment address, respectively.
You can construct shielded transfers similarly to transparent transfers, except
that rather than providing implicit addresses as the `source` and `target`, you
will need to provide a spending key and payment address, respectively.

Before building your transaction, you will want to make sure the [shielded wallet is synced](./shielded-sync.mdx).
Before building your transaction, you will want to make sure the
[shielded wallet is synced](./shielded-sync.mdx).

### Constructing the Transfer

This example assumes you have a spending key with sufficient shielded balance, a recipient payment address, and the
public key of an implicit account with gas funds.
This example assumes you have a spending key with sufficient shielded balance, a
recipient payment address, and the public key of an implicit account with gas
funds.

```rust
use namada_sdk::Namada;
Expand Down Expand Up @@ -56,4 +61,33 @@ async fn construct_transfer(sdk: impl Namada) {
Err(e) => println!("Tx error: {:?}", e)
}
}
```
```

### Frontend sustainability fee

For transactions that move assets into or out of the shielded pool, the namada
SDK provides the possibility to charge an optional fee to support the operations
of the frontend provider. The specific transactions are:

- `TxShieldingTransfer`
- `TxUnshieldingTransfer`
- `TxOsmosisSwap`
- `TxIbcTransfer`
- `GenIbcShieldingTransfer`
Comment on lines +68 to +76
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you provide some more detail on the general flow? Are operators expected to build their own instance of Namadillo on top of some release that makes certain SDK additions? Sorry I kinda have no idea myself. I think there should be more detail on how to integrate the SDK changes into one's own hosted Namada (or let me know if this is obvious and I'm just clueless)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are instructions for the users of the SDK, so our interface team building Namadillo or other teams building alternatives to it. For operators of Namadillo these are not the right docs and I can't help with them as I don't know how this feature has been integrated into it


<Callout type="warning">
For fully shielded osmosis swaps (from shieleded address to shielded address),
the operator should refrain from charging a fee.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why should the operator refrain from charging a fee? I think a small justification is worthwhile here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added in 542849f

</Callout>

These structures provide an optional field in one of two forms:

```rust
pub frontend_sus_fee: Option<(C::TransferTarget, Dec)>,
pub frontend_sus_fee: Option<(C::PaymentAddress, Dec)>,
```

where the first element of the tuple is the receiver of the fee (an address
controlled by the operator) and the second one is the fee expressed as a
percentage of the shielded/unshielded amount. This percentage will be charged on
top of the amount specified by the user.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you write some more details about what the operator can expect to happen each time a user transacts with the MASP? For example, will an extra tx be generated and asked to be signed that pays fees?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tried something in 542849f

Loading