THẢO LUẬN

thg 3 19, 2018 4:41 SA

Cảm ơn bạn.

0

Dĩ nhiên thì hiệu năng sẽ là bài toán cho người lập trình. Tuy nhiên vì sử dụng mạng ngang hàng. Thì cơ chế của một đồng tiền Ảo phải có một điểm trung gian để các máy client connect đến. Mỗi một quốc gia sẽ có một nút mạng như thế, ta có thể hiểu là 1 "Node". Và ở đó có hệ thống máy chủ lớn chứa các giao dịch và tính toán các giá trị cần thiết (như bạn yêu cầu). Do đó người dùng gần như k cần quá quan tâm đến liệu máy mình đủ mạnh để join vào mạng blockchain hay k. Thực tế thì điện thoại hoặc thiết bị IoT (tivi, tủ lạnh...) cũng có thể truy cập được blockchain như bình thường.

0

Mình xin phép được giải đáp các thắc mắc của bạn nhé 😉

a. như vậy thì mỗi giao dịch được xác nhận thì mất tối đa 10 phút ?

Thời gian 1 block được tạo ra là không cố định, thời gian 10 phút / 1 block của Bitcoin chỉ là thời gian trung bình mà thôi, tức là đôi khi có 2 block cách nhau 2, 3 phút, và đôi khi cũng có 2 block cách nhau 15, 20 phút.

Thế nên rất khó để xác định thời gian tối thiểu hay thời gian tối đa để 1 giao dịch được xác nhận.

Hiện tại, một giao dịch được xác định nhanh hay chậm còn tuỳ thuộc vào phí mà giao dịch đó trả cho thợ mỏ nữa, phí thấp thì xác định có mà chờ cả ngày bạn ạ (^^;)

b. Ứng với mỗi block đó thì nhét tất cả các transaction đang đợi giao dịch ? Nếu đúng thì xảy ra một vấn đề là có block chỉ vài transaction, nhưng cũng có block chứa tới cả 100 ngàn giao dịch ? Kích thước của mỗi block có ảnh hưởng gì đến blockchain hay ko ?

Mỗi giao dịch có chứa thông tin, do đó nó có dung lượng. Mỗi block có giới hạn về kích cỡ, như bitcoin là 1MB (hiện nay là 4MB block weight sau khi đã kích hoạt segwit), thế nên số lượng giao dịch có thể chứa trong 1 block sẽ bị giới hạn. Thợ mỏ có thể nhét bao nhiêu giao dịch vào block cũng được, miễn là nó không vượt qua giới hạn đã được cả mạng lưới đồng thuận.

a. Tại một thời điểm có cả nghìn hệ thống khác nhau join vào mạng và cuộc chạy đua xem ai là người tìm ra hash cho block tiếp theo nhanh nhất thì người đó chiến thắng với phần thưởng lớn nhất ? (ở trên bạn có nói ai tìm được hash dài nhất thì chiến thắng nhưng cái chữ dài nhất ở đây hiểu như thế nào ?).

Có rất nhiều thuật toán PoW khác nhau, nhưng nhìn chung tất cả đều hoạt động như bạn nói ở trên: Tranh nhau giải một bài toán. Ai giải được trước thì người đó có tất cả phần thưởng, những người khác sẽ không được gì. Ở bitcoin thì bài toán PoW là dùng thuật toán SHA256 để mã hoá thông tin block để ra một kết quả, nếu kết quả này nhỏ hơn một target (mà cả hệ thống đều biết và đồng thuận từ trước), thì block đó được coi là hợp lệ. Bạn có thể tìm hiểu thêm về Bitcoin Block cũng như Bitcoin PoW ở video này: https://viblo.asia/p/bitcoin-the-hype-the-myth-and-the-truth-part-2-Az45bbAQ5xY

b. Với người chiến thắng sẽ nhận hết phần thưởng hay hệ thống sẽ phân chia theo công sức của mỗi thành viên tham gia ?

Ai tìm được ra lời giải cho bài toán PoW sẽ nhận được hết, những người khác sẽ không được gì. Tuy nhiên, hiện nay việc giải bài toán PoW ngày càng trở nên khó khăn và dường như bạn sẽ không thể giải được nếu chỉ tự "đào" một mình. Do đó các mining pool ra đời. Hiểu đơn giản là nhiều thợ mỏ sẽ "lập thành một hội" với nhau, và có thể chia đều thành quả cho các thành viên tham gia tuỳ theo sức mạnh cống hiến.

c. Như thuật toán ở trên có nói tăng độ khó sao cho cứ 10 phút mới sinh ra 1 block, cái này mình cũng chưa hiểu rõ là tính 10 phút là cho ông có tốc độ nào ? và cứ 10 phút hệ thống lại khởi động cho cuộc đua ai là người nhanh nhất ?

Như mình đã nói ở trên, 10 phút là tốc độ trung bình. Cả mạng lưới sẽ tiến hành điều chỉnh độ khó của bài toán PoW sau mỗi 2016 blocks (~ 2 tuần). Độ khó ở đây chính là giá trị target ở trên, thợ mỏ cần tìm ra một số ngẫu nhiên, để khi hash nó cùng với các thông tin trong block được một số nhỏ hơn target này (target càng nhỏ thì càng phải thử nhiều lần để tìm ra đáp án). Giả sự hiện tại mạng lưới có độ khó là T. Thấy đào bitcoin có lợi nhuận lớn, nhiều thợ mỏ mới tham gia mạng lưới, dẫn đến sức mạnh tính toán của mạng lưới tăng -> thời gian đào được block nhanh -> thời gian trung bình nhỏ hơn 10 phút -> sau 2016 blocks, mạng lưới sẽ tính toán lại, để làm tăng độ khó lên (giảm target xuống) -> thời gian đào được block lại chậm đi -> thời gian trung bình được duy trì trong khoảng 10 phút.

Ngược lại, thời gian trung bình mà lớn hơn 10 phút (do nhiều thợ mỏ bỏ đi) -> ở lần điều chỉnh tới, độ khó sẽ được điều chỉnh giảm đi.

Sau khi tìm được một block, tất cả lại bắt tay vào giải bài toán mới: bài toán PoW cho block tiếp theo!

Bạn có thể tìm hiểu thêm tại video này nhé 😉 https://viblo.asia/p/bitcoin-the-hype-the-myth-and-the-truth-part-1-OeVKBo7JZkW

+3

Hay qúa anh ạ

0
thg 3 19, 2018 3:13 SA

bài viết cụ thể, chi tiết, cám ơn tác giả 😃

0

Cảm ơn bài biết rất hữu ích của bạn,mình có một số chỗ chưa hiểu rõ mong bạn chi cho.

  1. Với Bitcoin cứ 10 phút mới sinh ra 1 block

a. như vậy thì mỗi giao dịch được xác nhận thì mất tối đa 10 phút ?

b. Ứng với mỗi block đó thì nhét tất cả các transaction đang đợi giao dịch ? Nếu đúng thì xảy ra một vấn đề là có block chỉ vài transaction, nhưng cũng có block chứa tới cả 100 ngàn giao dịch ? Kích thước của mỗi block có ảnh hưởng gì đến blockchain hay ko ?

  1. Trong quá trình xác minh giao dịch và tìm sự đồng thuật(PoW):

a. Tại một thời điểm có cả nghìn hệ thống khác nhau join vào mạng và cuộc chạy đua xem ai là người tìm ra hash cho block tiếp theo nhanh nhất thì người đó chiến thắng với phần thưởng lớn nhất ? (ở trên bạn có nói ai tìm được hash dài nhất thì chiến thắng nhưng cái chữ dài nhất ở đây hiểu như thế nào ?).

b. Với người chiến thắng sẽ nhận hết phần thưởng hay hệ thống sẽ phân chia theo công sức của mỗi thành viên tham gia ?

c. Như thuật toán ở trên có nói tăng độ khó sao cho cứ 10 phút mới sinh ra 1 block, cái này mình cũng chưa hiểu rõ là tính 10 phút là cho ông có tốc độ nào ? và cứ 10 phút hệ thống lại khởi động cho cuộc đua ai là người nhanh nhất ?

0
thg 3 19, 2018 1:52 SA

ra phần tiếp theo thì báo mình nha 😄

+1

Hehe, thank you bro, rất vui vì nó hữu ích

0

Aha cảm ơn bạn nhé, ban đầu tui viết 2, sau rồi lại thấy thích số 4 hơn, sửa lại ..

0
thg 3 18, 2018 5:08 CH

So excited bro 😄

0

tks anh, hóng tiếp phần 2

0
Avatar
đã bình luận cho bài viết
thg 3 18, 2018 2:16 CH

bài viết rất hữu ích với những newbie như em 😦. Many thanks 😄

+1
thg 3 18, 2018 2:13 CH

tks anh, bài viết rất hay ạ

0

Em cảm ơn anh!

0
thg 3 18, 2018 2:07 SA

Thanks e. 😊

0

đáp án là 4 chứ ạ

0

Tức là mỗi lần muốn kiểm tra lịch sử giao dịch mình sẽ lại phải duyệt qua toàn bộ blockchain đó, nếu như chain đó có hàng triệu block thì query đó sẽ rất tốn hiệu năng nhỉ?

+1

Nó chính là hàm KiemTraTienTrongVi() đó bạn.

0

còn về phần bookmark thì mình khắc phục sao anh ? Cám ơn anh nhiều ạ 😃)

0
thg 3 17, 2018 1:48 SA

tks ad

0
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí