Я могу установить два кошелька Dusk и выполнить корректный перевод DUSK, даже если отправка уходит с «не того» — без ошибок цепочки.
Риск начинается ещё до подписания. Обнаружение кошельков Dusk устроено на основе событий, а не как «единственный экземпляр». dApp отправляет dusk:requestProvider, и каждый совместимый кошелёк может ответить dusk:announceProvider, при этом каждый провайдер несёт собственный стабильный uuid и состояние профиля.
Если я просто оставлю providers[0] и вызову dusk_requestProfiles, то я фактически превратил порядок объявлений в выбор кошелька. Транзакция при этом всё ещё может быть совершенно валидной. «Неправильный» провайдер открывает окно подтверждения, «неправильный» профиль предоставляет учётную запись, а dusk_sendTransaction подписывает с того кошелька.
Именно поэтому я никогда не буду считать фразой «существует провайдер Dusk» достаточным основанием. Если доступно более одного провайдера, я хочу, чтобы пользователь выбрал кошелёк по его объявленной идентичности, сохранил этот uuid, затем привязал видимый профиль и учётную запись к выбранному провайдеру, прежде чем я покажу любое подтверждение перевода.
Последствие не в том, что транзакция не удалась. Это хуже, потому что всё работает.
В Dusk обнаружение провайдера сообщает мне, какие кошельки присутствуют. Оно не сообщает, какой кошелёк имел в виду пользователь для списания.
#dusk $DUSK @Dusk
Риск начинается ещё до подписания. Обнаружение кошельков Dusk устроено на основе событий, а не как «единственный экземпляр». dApp отправляет dusk:requestProvider, и каждый совместимый кошелёк может ответить dusk:announceProvider, при этом каждый провайдер несёт собственный стабильный uuid и состояние профиля.
Если я просто оставлю providers[0] и вызову dusk_requestProfiles, то я фактически превратил порядок объявлений в выбор кошелька. Транзакция при этом всё ещё может быть совершенно валидной. «Неправильный» провайдер открывает окно подтверждения, «неправильный» профиль предоставляет учётную запись, а dusk_sendTransaction подписывает с того кошелька.
Именно поэтому я никогда не буду считать фразой «существует провайдер Dusk» достаточным основанием. Если доступно более одного провайдера, я хочу, чтобы пользователь выбрал кошелёк по его объявленной идентичности, сохранил этот uuid, затем привязал видимый профиль и учётную запись к выбранному провайдеру, прежде чем я покажу любое подтверждение перевода.
Последствие не в том, что транзакция не удалась. Это хуже, потому что всё работает.
В Dusk обнаружение провайдера сообщает мне, какие кошельки присутствуют. Оно не сообщает, какой кошелёк имел в виду пользователь для списания.
#dusk $DUSK @Dusk
