Abrir canales HRMP
Resumen
Antes de que dos parachains puedan comunicarse directamente, deben abrir canales entre sí. Como cada canal es unidireccional, hay que abrir dos, uno en cada dirección.
Instrucciones técnicas
Entendiendo los parámetros
La apertura de un canal requiere que la cuenta soberana parachain en la Relay Chain tenga saldo en el token nativo (KSM o DOT). Esto es obligatorio, de lo contrario, la apertura del canal fallará, ya que las transacciones no se ejecutarán.
La forma más sencilla de comprobar los parámetros requeridos es abriendo la Relay Chain en Polkadot.js Apps, en Developer -> Chain State -> configuration
-> activeConfig
. Lo que te interesa se verá así (tomado de Polkadot):
hrmpMaxParachainOutboundChannels: 30
hrmpMaxParathreadOutboundChannels: 0
hrmpSenderDeposit: 100,000,000,000
hrmpRecipientDeposit: 100,000,000,000
hrmpChannelMaxCapacity: 1,000
hrmpChannelMaxTotalSize: 102,400
hrmpMaxParachainInboundChannels: 30
hrmpMaxParathreadInboundChannels: 0
hrmpChannelMaxMessageSize: 102,400
Basándonos en la información anterior, podemos ver que se requieren 10 DOT para abrir un canal o para confirmarlo. También podemos ver que hay un número máximo de canales de entrada y salida por parachain - 30 en el caso de Polkadot, en el momento de escribir esto.
Los dos parámetros que hay que especificar al abrir un canal son:
max_capacity
- número máximo de mensajes que pueden ser puestos en cola en el canal.max_message_size
- tamaño máximo del mensaje enviado.
Podemos elegir los valores máximos al abrir el canal en consecuencia.
Llamada codificada en Relay Chain
El primer paso consiste en preparar los datos de llamada codificados para solicitar la apertura de un canal o aceptar una solicitud de canal abierto existente.
- Visite la aplicación polkadot.js en su navegador y seleccione Polkadot o Kusama.
- Ve a
Developer -> Extrinsics
. - Encuentre hrmp bajo todos los palets disponibles y selecciónelos.
- Selecciona la llamada
hrmpInitOpenChannel
y llena los parámetros.- recipient: la parachain con la que quieres abrir el canal.
- proposedMaxCapacity: escoja el valor de activeConfig.
- proposedMaxMessageSize: elija el valor de activeConfig.
- Copia y almacena los datos de llamada codificados para más tarde:
- e.g.
0x3c00d6070000e803000000900100
- e.g.
Puede repetir exactamente los mismos pasos para obtener los datos de llamadas codificadas para hrmpAcceptOpenChannel.
XCM a Relay Chain
La suposición aquí es que usted está usando el estándar de Polkadot pallet-xcm
, que tiene una llamada de envío.
Utilizando una llamada root desde tu parachain, debes enviar un mensaje XCM a la Relay Chain, indicándole que ejecute los datos de llamada codificados que has preparado en el paso anterior.
- Abre tu parachain en polkadot.js app
- Click en
Developer -> Extrinsic
- Busque la paleta XCM en el menú desplegable (probablemente se llame
polkadotXcm
oxcmPallet
) - Selecciona
enviar
como la llamada:- destination:
V1 {XcmV1MultiLocation { parents: 1, interior: Here}}
- message:
V2
(o última versión soportada)- Ahora añada 5 instrucciones al mensaje.
- WithdrawAsset:
{Concrete {0, Here}, Fungible {1000000000000}}
:- 1 DOT o 1 KSM es suficiente para ejecutar esto.
- Debe asegurarse de que su cuenta soberana en la Relay Chain tiene fondos suficientes.
- Consulte la página Herramientas XCM para obtener ayuda sobre el cálculo de la cuenta soberana.
- BuyExecution:
{Concrete {0, Here}, Fungible {1000000000000}, Unlimited}
- Transact:
{Native, 1000000000, <encoded_call_data>}
:- Utilice los datos de llamadas codificados que ha preparado anteriormente.
- RefundSurplus
- DepositAsset:
{Wild {All}, 1, {parents: 0, interior: X1(Parachain(2007))}}
- destination:
- Enviar y luego verificar la ejecución en la Relay Chain
Deberá enviar dos llamadas de este tipo tanto para aceptar la solicitud como para iniciarla (o puede preparar una llamada por lotes). Una vez aceptado un canal, estará disponible al inicio de la siguiente sesión.
Enviar solicitud para abrir el canal HRMP
Para abrir un canal HRMP con Astar o Shiden tendrá que crear una propuesta en nuestro forum. Crea tu propuesta en la categoría correcta:
- Shiden Network: https://forum.astar.network/c/shiden/proposal/10
- Astar Network: https://forum.astar.network/c/astar/proposal/20
Hemos creado una plantilla que puede utilizar para publicar su propuesta, que encontrará aquí.
Flujo de trabajo
Crear Propuesta
Después de crear su propuesta, informaremos a nuestra comunidad, y se espera que usted haga un seguimiento en caso de que la comunidad tenga preguntas. Para continuar con el siguiente paso necesitarás la aprobación de nuestro consejo (gobernanza), que se realizará a través de una encuesta en nuestro foro.
Integración en Testnet
El primer paso es que la parachain incorpore su red de pruebas a la Relay Chain Rococo. Una vez hecho esto, debe informarnos sobre su endpoint y parachain Id.
- Intercambiar puntos finales públicos.
- Intercambio de parachain-Ids.
Abriremos canales, registraremos activos e iniciaremos transferencias de prueba.
Abriendo un canal HRMP
Tras las pruebas en Rococo, iniciaremos el proceso de apertura del canal HRMP y, si es necesario, iniciaremos también el proceso de adición del activo XCM. Lee más sobre la incorporación de activos XCM aquí.