Revisé el documento oficial y encontré una página sobre cómo transferir usando polkadot-jshttps://polkadot.js.org/docs/api/examples/promise/make-transfer
const transfer = api.tx.balances.transfer(BOB, 12345); const hash = await transfer.signAndSend(alice); Quiero saber si puedo dividir el método signAndSend en dos y ejecutarlo en diferentes máquinas. como en una máquina cliente, en el navegador calcula la firma.
const transfer = api.tx.balances.transfer(BOB, 12345); const signature = await transfer.signAsync(alice);y luego, en el lado del servidor, envíe la transacción de transferencia.
const mockSigner = createMockSigner(signature); // signature is computed from the client side and send to server over HTTP const transfer = api.tx.balances.transfer(BOB, 12345); const res = transfer.send({signer: mockSigner});El ejemplo anterior no funciona, solo quiero expresar si puedo firmar y enviar en diferentes máquinas.
Definitivamente es posible firmar una transacción en una computadora y enviarla desde una segunda computadora.
PolkadotJS Tools contiene un método para crear y firmar una transacción sin conexión. Puedes encontrar la fuente aquí . Tenga en cuenta que la construcción de la transacción en el navegador aún requerirá acceso a un nodo de lunares (el endpoint en el código).
El comando signer sendOffline tiene exactamente la misma API, pero no transmitirá la transacción. El envío y el envío sin conexión deben estar conectados a un nodo para obtener los metadatos actuales y construir una transacción válida. Su API tiene el formato:
Por lo tanto, necesitaría ejecutar un cliente ligero en el navegador para tener acceso a la información del bloque actual o conectarse a algún otro punto final del nodo fuera del navegador.
La versión de firma fuera de línea: https://gist.github.com/xcaptain/4d190232411dcf27441d9fadd7ff6988
La versión de firma en línea:
const transfer = api.tx.balances.transfer(BOB, 12345); const signedExtrinsic = await transfer.signAsync(alice).toJSON(); await api.rpc.author.submitExtrinsic(signedExtrinsic);No sé cuál es la diferencia, pero ambos funcionan.