La idea es simple: puede enviar transacciones utilizando cualquier billetera ethereum, y cada billetera tiene datos adicionales para enviar llamados "datos de transacción". Por ejemplo, quiero que los usuarios puedan escribir en ese campo de datos el nombre del producto que están comprando, una cadena simple o tal vez un valor entero (índice de un producto). ¿Es eso posible? Solo quiero que los usuarios puedan no solo interactuar con mi contrato usando metamask o mist, sino también usando sus billeteras en línea, etc.
Como leí en los documentos, tengo que usar una función pagadera alternativa estándar, como
contract Test {
function() payable {}
}
y de alguna manera leer el msg.data
. ¿Cómo es posible leerlo? Busqué las preguntas pero ninguna tenía la respuesta correcta. Pero hay más: la función de respaldo solo se ejecuta 2300 gas
, entonces, ¿cómo puedo manejarla?
El límite de 2300 gas
se introdujo para reducir el riesgo de comportamiento malicioso (como re-entrant attack
el utilizado en el famoso hackeo de DAO) de los contratos que reciben ether. El límite es suficiente para enviar un event
correo electrónico, por lo que, en el peor de los casos, su aplicación puede escuchar ese evento y luego procesar la compra.
Sin embargo, este límite no está relacionado con la default fallback
función sino con los métodos de envío: send()
y transfer()
. Para este último, puede anular el límite usando el .gas(xxx)
método. Y obviamente puede usar la función de bajo nivel call()
que no tiene limitaciones para el gas.
Puede agregar datos a cualquiera de esta función, recuerde codificarlos primero usando herramientas como esta .
porfavorito
Jakub Wojciechowski
msg.data
. Aquí puede encontrar instrucciones detalladas sobre cómo analizarlos ethereum.stackexchange.com/questions/5684/… .porfavorito
Jakub Wojciechowski
msg.data
función de pago y procesarlo en otro lugar.