_target.call.value(msg.value)() là hàm để chuyển tiền cho địa chỉ _target, nghĩa là địa chỉ King contract (và nó trả về true - transaction thành công, hoặc false - transaction thất bại)
khi King contract nhận được tiền, nó sẽ kích hoạt fallback function
tại dòng king.transfer(msg.value); King contract sẽ chuyển tiền đó cho king hiện tại. Tuy nhiên, nếu king hiện tại là một contract không có payable fallback function thì dòng đó sẽ bị revert, dù e có chuyển 1 tỉ eth cũng không thành công, transaction thất bại, do đó không thể trở thành King được.
Có nghĩa là, sau khi e dùng một contract không có payable fallback function và biến contract đó thành King thì không ai có thể chiếm lại được quyền King nữa.
đoạn này ý nghĩa là e sẽ chuyển cho contract King một khoản eth với giá trị bằng msg.value
về cơ bản thì chỉ cần _target.call.value(msg.value)() là đủ
tuy nhiên call trong solidity là một hàm low level, vậy nên nếu transaction không thành công nó cũng sẽ không xảy ra execption gì cả mà chỉ trả về giá trị false, vì thế ta sẽ cho vào if và revert() nó ra để biết là nó đã lỗi (thất bại)
Phần kết luận hình như bạn bị nhầm. 1 class thì đâu có sồ nhiều đâu bạn, làm sao Blocks, Procs, Lambdas lại là 3 class được. Bản thân 1 class cũng là 1 object thuộc Lớp Class, nên không có số nhiều cho 1 class
Có 1 cách các bạn không cần sử dụng hàm constructor nghĩa là cũng không cần sử dụng bind(), nhưng mình không hiểu sao nó không sử dụng được với app laravel, mình viết ở app reactjs thì được?, bạn nào biết thì comment chỉ giúp mình nhá 😄 luôn đó là:
=> Chỉnh config lại chút . Mình đang dùng laravel mix bản 5.6 . ban đầu cũng lỗi như vậy. Sau đó mình xem trên google thì phải chỉnh lại . Mình đã chỉnh được.. Có gì bạn add skype mình nhé. truongminhtri_015100 . sẵn sàng giúp đỡ bạn. hihi.
Mình ủng hộ chia sẻ, nhưng những bạn newbie hơn bạn đọc rồi hiểu theo hướng như thế thì sao. Mình nghĩ là việc chia sẻ dựa trên kinh nghiệm cá nhân nhưng cũng nên làm rõ những phần cơ bản. Trong bài của bạn nó khá sơ sài và có 1 số nhầm lẫn mà người đọc như mình không hiểu hết. Cụ thể:
Làm sao để sử dụng React - 1 framework của JS hoạt động đới với môi trường phát triển mobile. -> bạn có chắc React là 1 framework?
Thay vì render DOM của browser -> mình đang hiểu thành 2 khái niệm DOM của browser và DOM của React native có phải không? Nó khác nhau hay không. Nếu không có DOM của react native thì react native sử dụng cái gì?
Ở cái hình này. Mình thấy mũi tên chỉ đến iOS là bridge. Thế android nó sử dụng cái gì để giao tiếp? Và cái "???" kia nghĩa là gì?
THẢO LUẬN
à giờ thì em đã hiểu cách sử dụng contract để tấn công nó lại linh hoạt vậy , em cảm ơn anh
_target.call.value(msg.value)()
là hàm để chuyển tiền cho địa chỉ_target
, nghĩa là địa chỉ King contract (và nó trả vềtrue
- transaction thành công, hoặcfalse
- transaction thất bại)khi King contract nhận được tiền, nó sẽ kích hoạt fallback function
tại dòng
king.transfer(msg.value);
King contract sẽ chuyển tiền đó cho king hiện tại. Tuy nhiên, nếu king hiện tại là một contract không cópayable fallback function
thì dòng đó sẽ bị revert, dù e có chuyển 1 tỉ eth cũng không thành công, transaction thất bại, do đó không thể trở thành King được.Có nghĩa là, sau khi e dùng một contract không có
payable fallback function
và biến contract đó thành King thì không ai có thể chiếm lại được quyền King nữa.hay...
sao mình làm y chang lun mà nó vẫn báo lỗi ta???
Bạn init datatable như bình thường sau đó dùng jquery để add class thôi bạn. Ví dụ
Trong đó cái id example_filter và example_paginate là do datatable nó sinh ra
em chưa hiểu lắm đoạn sau khi em làm king xong. Em dùng 1 tài khoản khác cố gắng để trở thành KIng lại không được là vì lí do gì ạ
Vì em đang hiểu là đoạn _target.call.value(msg.value)() chỉ để check gửi transaction có thành công hay không thôi.
Đâu có liên quan gì tới người tiếp theo gửi 1 lượng ether lớn hơn để trở thành KING đâu ạ, ví dụ 10 ether
Cơ bản thì bạn hiểu đúng rồi.
switchMap
nó sẽ cancel observable hiện tại ngay khi nó tiếp nhận 1 query mới ("abc").đoạn này ý nghĩa là e sẽ chuyển cho contract King một khoản eth với giá trị bằng
msg.value
về cơ bản thì chỉ cần
_target.call.value(msg.value)()
là đủtuy nhiên
call
trong solidity là một hàm low level, vậy nên nếu transaction không thành công nó cũng sẽ không xảy ra execption gì cả mà chỉ trả về giá trịfalse
, vì thế ta sẽ cho vàoif
vàrevert()
nó ra để biết là nó đã lỗi (thất bại)anh có bổ sung lên bài viết rồi, e tham khảo nhé
cảm ơn thớt, bài viết rất hữu ích =))
thank bạn nhá, mình cũng vừa tìm hiểu vừa viết bài nên còn thiếu xót nhiều lắm!!
@dat12012 cám ơn bạn, nhờ có các bạn hỗ trợ mình cũng khá hơn rồi )
cài skype vào đi.
à chỗ result. bạn kết hợp dùng filter sau đó map. nhìn sẽ chuyên nghiệp hơn.
Phần kết luận hình như bạn bị nhầm. 1 class thì đâu có sồ nhiều đâu bạn, làm sao Blocks, Procs, Lambdas lại là 3 class được. Bản thân 1 class cũng là 1 object thuộc Lớp Class, nên không có số nhiều cho 1 class
bạn có sử dụng mxh nào khác không vậy? mình không sử dụng skype
thanks bạn
Có 1 cách các bạn không cần sử dụng hàm constructor nghĩa là cũng không cần sử dụng bind(), nhưng mình không hiểu sao nó không sử dụng được với app laravel, mình viết ở app reactjs thì được?, bạn nào biết thì comment chỉ giúp mình nhá 😄 luôn đó là:
=> Chỉnh config lại chút . Mình đang dùng laravel mix bản 5.6 . ban đầu cũng lỗi như vậy. Sau đó mình xem trên google thì phải chỉnh lại . Mình đã chỉnh được.. Có gì bạn add skype mình nhé. truongminhtri_015100 . sẵn sàng giúp đỡ bạn. hihi.
bài viết hay. nhưng chỗ chỗ khởi tạo list node. bạn nên dùng let result = []; mảng rỗng chứ không phải empty string
Mình ủng hộ chia sẻ, nhưng những bạn newbie hơn bạn đọc rồi hiểu theo hướng như thế thì sao. Mình nghĩ là việc chia sẻ dựa trên kinh nghiệm cá nhân nhưng cũng nên làm rõ những phần cơ bản. Trong bài của bạn nó khá sơ sài và có 1 số nhầm lẫn mà người đọc như mình không hiểu hết. Cụ thể:
@thanhnguyen uh đúng rồi em, đưa vào chạy trước câu lệnh
wget
ýNếu vẫn không được thì em thử chuyển sang dùng image Debian hay Ubuntu xem sao