Estoy tratando de enviar una notificación a un usuario sobre alguna actividad. Traté de usar eventos, pero cuando se activa un evento, va a todas las cuentas de usuario que están actualmente activas en la red. ¿Hay alguna otra forma de hacer lo mismo en Ethereum?
No no hay. Ethereum es un libro público. Eso significa a) todo lo que haces es público, todo el mundo ve todo lo que haces. b) Todo es tirón. Si un usuario quiere ver algo, puede consultar la cadena de bloques, no puede enviar algo a una dirección específica.
Por supuesto que podrías crear algo similar. Pero soluciones como esa seguirían siendo públicas y dependerían de la implementación del cliente. Sin embargo, la idea general de la cadena de bloques es la independencia de los intermediarios centrales y la implementación del cliente.
Si desea implementar algo así: cree un mapeo que mapee la dirección -> su mensaje en el contrato. Luego, el cliente puede verificar regularmente si hay actualizaciones en este mapeo.
Puede crear temas en sus registros indexando campos específicos en su evento
event BidPlaced(address indexed bidder, uint amount);
Luego puede filtrar estos eventos por los campos indexados en su interfaz y mostrar solo notificaciones relevantes para el usuario
var contract = web3.eth.contract(abi).at(contractAddress);
contract.BidPlaced({ bidder: "0x0000..." }).get(console.log);
José