Interactuando con Minitswap
Interactuando con Minitswap
Proporcionar
provide
es una función que permite a los usuarios suministrar tokens INIT a Initia L1. Los proveedores ganan comisiones de swap por las transacciones procesadas a través de Minitswap.
Interfaz de función de movimiento:
public entry fun provide(
account: &signer,
amount: u64,
min_return_amount: Option<u64>,
)
amount
: La cantidad de L1 INIT que se proporcionará.min_return_amount
: Garantiza que la transacción falle si el monto de la devolución es menor que el especificado.
Uso de ejemplo:
CLIinicia.js
initiad tx move execute 0x1 minitswap provide \
--args "u64:100 option<u64>:100" \
--from [key-name] \
--gas auto --gas-adjustment 1.5 --gas-prices 0.15uinit \
--node [rpc-url]:[rpc-port] --chain-id [chain-id]
Retirar
withdraw
permite a los usuarios reclamar tokens INIT depositados previamente.
Interfaz de función de movimiento:
public entry fun withdraw(
account: &signer,
amount: u64,
min_return_amount: Option<u64>,
)
amount
: Especifica el monto de la acción a retirar.min_return_amount
: La transacción falla si la devolución es menor que la especificada.
Uso de ejemplo:
CLIinicia.js
initiad tx move execute 0x1 minitswap withdraw \
--args "u64:100 option<u64>:100" \
--from [key-name] \
--gas auto --gas-adjustment 1.5 --gas-prices 0.15uinit \
--node [rpc-url]:[rpc-port] --chain-id [chain-id]
Intercambio
swap
permite el intercambio de L1 INIT por L2 INIT transferido a través de IBC.
Interfaz de función de movimiento:
public entry fun swap(
account: &signer,
offer_asset_metadata: Object<Metadata>,
return_asset_metadata: Object<Metadata>,
amount: u64,
min_return_amount: Option<u64>
)
offer_asset_metadata
: Metadatos de la moneda proporcionada.return_asset_metadata
: Metadatos de la moneda que se devolverá.amount
: Cantidad de monedas proporcionada.min_return_amount
: Garantiza que el intercambio falle si el rendimiento es inferior al especificado.
Para obtener más información sobre metadatos, consulte obtención de metadatos .
Uso de ejemplo:
CLIinicia.js
initiad tx move execute 0x1 minitswap swap \
--args "object:0x12.. object: 0x12.. u64:100 option<u64>:100" \
--from [key-name] \
--gas auto --gas-adjustment 1.5 --gas-prices 0.15uinit \
--node [rpc-url]:[rpc-port] --chain-id [chain-id]
Reequilibrar
El reequilibrio permite a Pegkeeper comprar el INIT L2 al precio promedio que ha comprado Pegkeeper.
Interfaz de función de movimiento:
public entry fun rebalance(
account: &signer,
l2_asset_metadata: Object<Metadata>,
amount: u64,
min_return_amount: Option<u64>
)
l2_asset_metadata
: Metadatos del INIT L2 a adquirir.amount
: Cantidad de L1 INIT que se proporcionará.min_return_amount
: Cantidad mínima de L2 INIT a devolver. Si el monto real devuelto es menor quemin_return_amount
, el tx fallará.
Uso de ejemplo:
CLIinicia.js
initiad tx move execute 0x1 minitswap rebalance \
--args "object:0x12.. u64:100 option<u64>:100" \
--from [key-name] \
--gas auto --gas-adjustment 1.5 --gas-prices 0.15uinit \
--node [rpc-url]:[rpc-port] --chain-id [chain-id]
Intercambiar simular
swap_simulation
es una función de visualización para estimar el valor de retorno de dicho swap.
#[view]
public fun swap_simulation(
offer_metadata: Object<Metadata>,
return_metadata: Object<Metadata>,
offer_amount: u64,
): (u64, u64) // (return amount, fee amount)
offer_asset_metadata
: Metadatos de la moneda proporcionada.return_asset_metadata
: Metadatos de la moneda que será devuelta.amount
: Cantidad de moneda proporcionada.
Uso de ejemplo:
rizoCLIinicia.js
curl -X POST "[LCD_URI]/initia/move/v1/accounts/0x1/modules/minitswap/view_functions/swap_simulation" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-d "{ \"args\": [ \"[BCS_ENCODED_OBJECT, BCS_ENCODED_OBJECT, BCS_ENCODED_OFFER_AMOUNT]\" ]}"
#{
# "data": "[\"100\",\"100\"]",
# "events": [],
# "gas_used": "5699"
#}
Intercambio mediante gancho IBC
Generalmente, los usuarios utilizarán minitswap para intercambiar L2 INIT por L1 INIT. Sin embargo, usar minitswap requiere dos pasos: 1. L2 INIT debe enviarse a L1 a través de IBC y 2. intercambiar el L2 INIT transferido a L1 INIT. En este caso, los usuarios tienen la carga de tener que enviar dos transacciones tanto desde L2 como desde L1. Para resolver dicha carga, se puede utilizar el swap_transfer
módulo y el enlace IBC para que los pasos anteriores se puedan realizar en una sola transacción.
transferencia de intercambio
La transferencia de intercambio es un módulo creado para el intercambio y la transferencia entre cadenas sin problemas. La dirección publicada es la siguiente:
mahalo-2:
0x42cd8467b1c86e59bf319e5664a09b6b5840bb3fac64f5ce690b5041c530565a
intercambio de moneda a
minit_swap_to
es una función para usar minitswap a través del gancho IBC. La interfaz de la función Mover es la siguiente
public entry fun minit_swap_to(
account: &signer,
offer_asset_metadata: Object<Metadata>,
return_asset_metadata: Object<Metadata>,
amount: u64,
min_return_amount: Option<u64>,
to: address,
)
offer_asset_metadata
: Metadatos que la moneda debe proporcionar.return_asset_metadata
: Metadatos de la moneda que se devolverá.amount
: Cantidad de moneda a proporcionar.min_return_amount
: Valor mínimo para el swap. Si el monto devuelto es menor quemin_return_amount
, el tx fallará.to
: Dirección para recibir la moneda devuelta.
Uso de ejemplo:
import {
bcs,
Coin,
Height,
LCDClient,
MnemonicKey,
MsgExecute,
MsgTransfer,
Wallet,
} from '@initia/initia.js';
async function main() {
const lcd = new LCDClient('[rest-url]', {
gasPrices: '0.15uinit',
gasAdjustment: '1.5',
});
const key = new MnemonicKey({
mnemonic: 'beauty sniff protect ...',
});
const wallet = new Wallet(lcd, key);
const moduleAddresss = '0x...';
const offerAmount = 1000;
const hookMsg = {
move: {
message: {
module_address: moduleAddresss,
module_name: 'swap_trasnfer',
function_name: 'minit_swap_to',
type_args: [],
args: [
bcs.object().serialize('0x...').toBase64(), // metadata to offer
bcs.object().serialize('0x...').toBase64(), // metadata to return
bcs.u64().serialize(100).toBase64(), // offer amount
bcs.option(bcs.u64()).serialize(offerAmount).toBase64(), // min return amount
bcs.address().serialize('init1...').toBase64(), // to
],
},
},
};
const msgs = [
new MsgTransfer(
'transfer',
'channel-..',
new Coin('l2/...', offerAmount),
key.accAddress,
`${moduleAddresss}::${hookMsg.move.message.module_name}::${hookMsg.move.message.function_name}`,
new Height(0, 0),
((new Date().valueOf() + 1000 * 60) * 1000000).toString(), // timeout
JSON.stringify(hookMsg)
),
];
// sign tx
const signedTx = await wallet.createAndSignTx({ msgs });
// send(broadcast) tx
lcd.tx.broadcastSync(signedTx).then(res => console.log(res));
// {
// height: 0,
// txhash: '0F2B255EE75FBA407267BB57A6FF3E3349522DA6DBB31C0356DB588CC3933F37',
// raw_log: '[]'
// }
}
main();
Conclusión
Minitswap en Initia L1 proporciona un mecanismo sólido para la provisión, retiro e intercambio de tokens de liquidez, lo que permite a los usuarios participar activamente en el ecosistema financiero descentralizado mientras ganan tarifas de transacción. Siguiendo los ejemplos detallados y las interfaces de funciones proporcionadas, los usuarios pueden interactuar de manera efectiva con Minitswap para una gestión óptima de activos y estrategias comerciales.
Last updated