serai/docs/integrations/Scenarios.md
Luke Parker be921ab2d3 Document various Scenarios
- Pong
- Wrap
- SRI -> BTC
- BTC -> Monero
- Add Liquidity (fresh)
- Add Liquidity (SRI holder)
2022-07-21 23:22:48 -05:00

98 lines
2.5 KiB
Markdown

# Scenarios
### Pong
Pong has Serai receive funds, just to return them. It's a demonstration of the
in/out flow.
```
Shorthand::Raw(
In Instruction {
target: Incoming Asset Contract,
data: native_transfer(Incoming Asset Sender)
}
)
```
### Wrap
Wrap wraps an asset from a connected chain into a Serai Asset, making it usable
with applications on Serai, such as Serai DEX.
```
Shorthand::Raw(
In Instruction {
target: Serai Address
}
)
```
### Swap SRI to Bitcoin
For a SRI to Bitcoin swap, a SRI holder would perform an
[Application Call](../Serai.md#application-calls) to Serai DEX, purchasing
seraiBTC. Once they have seraiBTC, they are able to call `native_transfer`,
transferring the BTC underlying the seraiBTC to a specified Bitcoin address.
### Swap Bitcoin to Monero
For a Bitcoin to Monero swap, the following Shorthand would be used.
```
Shorthand::Swap {
coin: Monero,
minimum: Minimum Monero from Swap,
out: Monero Address
}
```
This Shorthand is expected to generally take:
- 1 byte to identify as Swap.
- 1 byte to not override `origin`.
- 1 byte for `coin`.
- 4 bytes for `minimum`.
- 1 byte for `out`'s `destination`'s ordinal byte.
- 65 bytes for `out`'s `destination`'s address.
- 1 byte to not include `data` in `out`.
Or 74 bytes.
### Add Liquidity (Fresh)
For a user who has never used Serai before, they have three requirements to add
liquidity:
- Minting the Serai asset they wish to add liquidity for
- Acquiring Serai, as liquidity is symmetric
- Acquiring Serai for gas fees
The Add Liquidity Shorthand enables all three of these actions, and actually
adding the liquidity, in just one transaction from a connected network.
```
Shorthand::AddLiquidity {
minimum: Minimum SRI from Swap,
gas: Amount of SRI to keep for gas
address: Serai address for the liquidity tokens and gas
}
```
For adding liquidity from Bitcoin, this Shorthand is expected to generally take:
- 1 byte to identify as Add Liquidity.
- 1 byte to not override `origin`.
- 5 bytes for `minimum`.
- 4 bytes for `gas`.
- 32 bytes for `address`.
Or 43 bytes.
### Add Liquidity (SRI Holder)
For a user who already has SRI, they solely need to have the asset they wish to
add liquidity for via their SRI. They can either purchase it from Serai DEX, or
wrap it as detailed above.
Once they have both their SRI and the asset they wish to provide liquidity for,
they would use a Serai transaction to call the DEX, adding the liquidity.