Avatar
1
cường hoàng nguyễn Beginner
Có thể nhận Event trong solidity khi không phải caller có được không ?
Em đang thắc mắc liệu có cách nào để ngoài phía client ra thì một bên thứ 3 có thể lắng nghe(listen) Event hay ko ? Và nếu ko có thì chẳng lẽ chỉ có mỗi cách là dùng api của mạng cung cấp thôi hay sao ?

Vậy cách mà mạng lấy được thông tin mỗi khi có ai đó send tới contract là như thế nào ạ ?

  • Answer
blockchain
Remain: 5
1 Answer
Avatar
monkey Beginner
monkey Beginner
  1. Cái event này nếu em có 1 node thì em lắng nghe được em ạ, tuy nhiên là nó có rủi ro là event này sẽ không đến được node do các vấn đề về mạng (Bài toán 2 vị tướng quân)
  2. Vậy cho nên cách làm an toàn nhất là gọi vào blockchain liên tục để lấy block mới nhất, từ đó lấy được ra danh sách transaction và biết được có ai đó giao dịch với contract không em ạ.
  • 0
  • Reply
dạ vâng em cảm ơn anh ạ.

Nhưng nếu mình chỉ quét = transaction hash do client gửi lên thì có sao ko ạ ? Có gặp vấn đề gì ko ạ ?

Như hiện tại thì mỗi khi nhấn confirm là metamask trả về cho client hash của transaction đó rồi.

Thì server sẽ chỉ cần lưu trữ transaction hash của user thôi, và nếu quét thì chỉ cần quét các transaction. Như vậy sẽ tiết kiệm thời gian và công sức hơn.

Giả sử khi ấn confirm user bị cúp mạng thì user cũng sẽ ko call lên blockchain dc, vì thì cũng coi như là chưa có giao dịch nào dc thục hiên.

E làm theo hướng đó có dc ko anh ?

 –  cường hoàng nguyễn 1647829432000
Trên thực tế không có gì đảm bảo được là client sẽ gửi được transaction hash lên server em ạ, giả sử đúng lúc user tạo được transaction ở metamask sau đó mạng mất, và transaction hash không gửi được lên server, vậy thì mục tiêu của em sẽ không đạt được em ạ.  –  monkey 1647829871000
da vang a  –  cường hoàng nguyễn 1647830792000