Estoy haciendo una dApp y quiero agregar un botón donde un usuario (el que tiene su billetera conectada) puede enviar exactamente 0.01 SOL a otro usuario. Ya escribí la función en mi programa Rust y después de probarla con anchor test , parece estar funcionando cuando uso el par de claves de mi propia billetera personal para firmar la transacción. Sin embargo, ahora estoy escribiendo la función de controlador de eventos en la interfaz de mi aplicación web y no estoy seguro de qué pasar para el parámetro de signers si quiero que el usuario firme la transacción. ¿Qué paso si no sé su clave secreta? ¿Hay alguna forma de generar el par de claves de un usuario solo a partir de su clave pública o necesitaría usar el adaptador de billetera Solana para esto? Cualquier ayuda sería apreciada. ¡Esta es la primera vez que trabajo con Solana!
Esta es la función:
const tipSol = async (receiverAddress) => { try { const provider = getProvider(); const program = new Program(idl, programID, provider); const lamportsToSend = LAMPORTS_PER_SOL / 100; const amount = new anchor.BN(lamportsToSend); await program.rpc.sendSol(amount, { accounts: { from: walletAddress, to: receiverAddress, systemProgram: SystemProgram.programId, }, signers: ? }) console.log('Successfully sent 0.01 SOL!') window.alert(`You successfully tipped ${receiverAddress} 0.01 SOL!`) } catch (error) { console.error('Failed to send SOL:', error); window.alert('Failed to send SOL:', error); } }