Моему Dapp необходимо динамически развертывать контракты. Таким образом, мне нужно где-то хранить адреса этих контрактов, и я выбрал следующее решение:
Фрагмент, который выполняет ведение журнала, таков:
event Created(address indexed _who, address indexed _to_whom, uint money, uint _max_duration);
//...
Created(msg.sender, _to_address, money_quantity, _contract_max_duration);
В web3.js мне трудно понять, как фильтровать журналы на основе: Contract Type , параметра _who и, в конечном итоге , параметра _to_whom .
Я получаю все журналы (в js):
var filter = web3.eth.filter({fromBlock:0, toBlock: 'latest', topics: [/* ????!!! */]});
filter.get(function(error, result) {
console.log(result)
})
В консоли я получаю хэши 3 «тем», которые, как я предлагаю, путем обратного проектирования, являются хэшем типа контракта и двумя другими индексированными параметрами события.
Допустим, я хочу запросить все события типа Contract Type с текущим пользователем в качестве параметра _who . Как мне это сделать? Что вставить в topics
аргумент?
Большое спасибо
По опыту, вопрос использования фильтра довольно сложен, так как использование обратного вызова и синхронизация с блокчейном делают этот тип утилит затруднительным.
Прежде всего, я говорю вам, что в идеале было бы фильтровать именно тот блок, который является единственным, который дает мне результирующую обратную связь и не дает мне сбоев. Самым быстрым было бы использовать внешний журнал для сохранения транзакций и адресов.
Я также рекомендую вам посмотреть этот API , чтобы вы немного знали, как работать с этими темами.
Чай оставляю довольно полезную ссылку с случаем похожим на то, что вы пробуете. Связь
Вебенг