Я пытаюсь отправить уведомление пользователю о какой-либо активности. Я пытался использовать события, но когда событие запускается, оно передается всем учетным записям пользователей, которые в данный момент активны в сети. Есть ли другой способ сделать то же самое в Ethereum.
Нет, нет. Эфириум — это публичный реестр. Это означает: а) все, что вы делаете, является публичным, все видят все, что вы делаете. б) Все натянуто. Если пользователь хочет что-то увидеть, он может запросить блокчейн, вы не можете отправить что-то на конкретный адрес.
Конечно, вы могли бы создать что-то подобное. Но такие решения по-прежнему будут общедоступными и будут зависеть от клиентской реализации. Однако вся идея блокчейна заключается в независимости от центральных посредников и клиентской реализации.
Если вы хотите реализовать что-то подобное: создайте сопоставление, которое сопоставляет адрес -> ваше сообщение в контракте. Затем клиент может регулярно проверять наличие обновлений в этом отображении.
Вы можете создавать темы в своих журналах, индексируя определенные поля в своем событии.
event BidPlaced(address indexed bidder, uint amount);
Затем вы можете отфильтровать эти события по проиндексированным полям в своем интерфейсе и отображать пользователю только соответствующие уведомления.
var contract = web3.eth.contract(abi).at(contractAddress);
contract.BidPlaced({ bidder: "0x0000..." }).get(console.log);
Джо