Invocar un pago con contrato inteligente

Estoy tratando de crear una función en mi contrato inteligente que invocará un pago del usuario, por ejemplo, cuando se hace clic en un botón, metamask solicitará confirmar el pago de 0.10 ETH a mi contrato, entiendo las funciones pagables y he probado esto en remix y puedo pagar mi contrato pero quiero saber cómo 'invocar' un pago con una cantidad predefinida de Ether y solicitarlo al usuario. Gracias

Respuestas (1)

Los contratos no pueden invocar transacciones de cuentas de propiedad externa (EOA), ya que iniciar transacciones requiere que un (EOA) firme con su clave privada. No estoy seguro de su aplicación en particular, pero ¿podría resolverse con un contrato de depósito en garantía? Como el usuario podría enviar fondos a un depósito en garantía para retener hasta que el contrato principal lo requiera y luego, posiblemente, enviarlos. Además, si solo desea aceptar transacciones que tengan un cierto valor, usaría:

function userSendsEth() {
     require(msg.value > someamount)
     //Any additional functionality
}
Gracias por eso, otra opción sería enviar Ether al contrato (hecho por el usuario) y usar msg.value para verificar la cantidad que enviaron. Si es así, ¿cómo harían esto?
Sí, actualicé lo anterior, aún requeriría que el usuario inicie la transacción, aunque no el contrato. Pero garantizaría que el usuario envíe la cantidad que especifique como someamount.
Eso es genial, he creado una interfaz para mi dapp. Cuando el usuario va a pagar, ¿cómo especifica cuánto quiere enviar el contrato?
Puede incluir un campo de entrada para que lo especifiquen a través de la interfaz de usuario. O si están usando MetaMask, también pueden incluir la entrada de valor allí.