Thứ Năm, 13 tháng 9, 2018

Tại sao tôi ủng hộ Công nghệ giáo dục?

Bài viết trước của tôi, tôi đã khẳng định là sẽ ủng hộ bộ sách Công nghệ giáo dục (CNGD) của ông Hồ Ngọc Đại, nhưng tôi chưa giải thích kỹ. Giờ xin có đôi dòng phân tích.

Mở đầu sách là trẻ con được học về khối vuông/tròn/tam giác/... hay bất cứ thứ gì. Đây không phải là tiếng Việt. Đây là cách để bọn trẻ hiểu khái niệm "tiếng", và để dạy cho trẻ biết rằng: trong tiếng Việt mỗi tiếng đều được phân tách nhau. Đó là đặc điểm mà trẻ phải nhận diện ra.

Cần lưu ý, trong khi tiếng Nhật cũng có tương tự với tiếng Việt trong cách viết Hiragana và Katakana, nhưng lại không tương tự với Kanji, mà ở đó một chữ được đọc thành 2-3 tiếng. Tuy nhiên tiếng Nhật và tiếng Việt đều là nói thành từng tiếng rời, khác với tiếng Anh có vụ "nối âm". Tôi vừa thấy một người ví dụ chữ "lunch" là 1 tiếng trong tiếng Anh, thực ra nói như vậy là sai, "lunch" chính xác phải là 1 tiếng rưỡi, vì cái đuôi "ch" phải được bật ra một xíu. Tóm lại, nếu trẻ học cả tiếng Việt và tiếng Anh cùng lúc, sẽ rất tiện lợi nếu giúp trẻ phân biệt 2 ngôn ngữ bằng nhiều hình thức khác nhau, mà hình thức về đếm tiếng là một trong số đó.

Đồng ý là chuyện phân biệt "tiếng" đó không quan trọng lắm cho trẻ, vì người ta không cần biết vẫn học tiếng Việt tốt thôi, chỉ có mấy người nghiên cứu tiếng Việt mới quan tâm. Nhưng thực ra việc đưa nó vào là có mục đích sâu xa hơn thế cơ.

Hãy nói về cách học cũ... Bọn trẻ sẽ học đánh vần, và học đánh vần xuyên suốt lớp 1. Bọn trẻ sẽ phải nhớ mặt chữ, và nhớ việc đánh vần, rồi sau đó sẽ đọc thành tiếng, và hiểu ngữ nghĩa của tiếng đó. Điểm tốt là bọn trẻ sẽ hình thành khả năng liên kết giữa tiếng và chữ một cách chặt chẽ, chỉ có điều hơi tốn thời gian thôi. Sau đó, bọn trẻ sẽ được học về từ láy và về luyến âm (hình như là lớp 3 hay lớp 4 gì đó, nhưng chắc chắn không phải lớp 1 hoặc lớp 2). Và ai đã từng đi qua thời đó mới hiểu là thầy cô và học sinh khó khổ thế nào để học từ láy...

Giờ nói về cách học mới. Bọn trẻ đã được biết về "tiếng", tiếp theo sẽ là về việc tách tiếng ra làm 2 phần... Việc này không khó, với việc đã quen về hình khối để biểu diễn "tiếng", bọn trẻ sẽ hiểu rất nhanh việc tách cái khối đó ra thành 2 phần. Với việc tách khối thành 2 phần, bọn trẻ sẽ nhanh chóng học được việc ghép phụ âm và nguyên âm để hình thành chữ viết. Và thế là thầy cô sẽ dạy bọn trẻ các chữ cái để ghép vào.

Tới đây tôi chuyển qua vấn đề khác là đánh vần. Khác với cách cũ, là người ta phải nhìn mặt chữ rồi mới đánh vần. Cách mới thì việc nhìn mặt chữ là việc từ từ làm sau, đầu tiên bọn trẻ phải nghe tiếng nói, từ việc nghe sẽ hướng tới việc tách âm đã nghe, và sau đó là viết xuống theo một số quy tắc đã có học. Với cách này, bọn trẻ sẽ không cần phải học tất cả các từ vựng, mà chỉ cần nắm quy tắc theo cách cảm nhận của chúng, và học từ mới thông qua môi trường xung quanh. Hãy tưởng tượng, người lớn nói chữ "đẹp" mà không viết xuống, bọn trẻ tự nhận diện ra và viết xuống vở chữ "đẹp" một cách chính xác. Nhắc lại là cách tiếp cận này hoàn toàn khác với trước giờ, khi thầy cô viết trên bảng chữ "đẹp" và đọc to lên, bọn trẻ cứ theo thế mà chép từng nét xuống vở.

Theo quan điểm cá nhân, tôi thấy phương pháp mới rèn luyện tư duy của trẻ tốt hơn...

Chính vì việc học từ mới thông qua việc nghe, nên mới có chuyện chữ "k" được đánh vần thành "cờ", vì thứ mà bọn trẻ nghe thì "ke" và "cô" thì âm đầu là giống nhau (nhắc lại là NGHE chứ không phải NHÌN). Tuy nhiên, vì chúng ta viết có quy tắc chính tả, nên nghe âm đầu giống nhau không có nghĩa là viết giống nhau... Và thế là bọn trẻ được dạy về cách viết chúng xuống khác nhau.

Tuy vậy, đến chỗ này tôi cũng không đồng ý với việc âm "q" được đánh vần thành "cờ". Nguyên nhân là theo góc nhìn của tôi, âm "qu" được phiên âm IPA phải là /w/ chứ không phải /kw/.

Trở lại vấn đề, với cách học mới, bọn trẻ nhanh chóng làm quen với những dạng chữ thông dụng trong đời sống. Vì chúng nó được mọi người xung quanh nói miết mà... Cho nên gần như các trường hợp thông dụng sẽ không cần dạy nhiều, thay vào đó bọn chúng sẽ được học các trường hợp đặc biệt, như "khúc khuỷu", "ngoẹo",... Đó chính là lý do tại sao lại xuất hiện các từ khó học ở giữa sách. Bọn trẻ được học những trường hợp đặc biệt, mà ngay chính cha mẹ chúng cũng chưa được học, vì bọn trẻ đã rành rẽ các trường hợp thông dụng rồi.

Xin nói lại, bọn trẻ đã học tách âm. Ví dụ chữ "khang" = kh-ang, "khác" = kh-ác, và làm đi làm lại như thế để quen với cách tách âm. Một khi đã quen với tách âm, thầy cô sẽ dạy luôn từ láy và luyến âm. Nói về từ láy đi, chữ "mong manh" là từ láy, vì khi tách âm ra sẽ có âm đầu giống nhau, đều là "m". Tương tự chữ "lông bông" có âm cuối giống nhau,... Rõ ràng khi đó từ láy là quá dễ dạy và không quá khó để hiểu. Và người ta sẽ dạy luôn trong lớp 1.

Như vậy, điểm mấu chốt ở phương pháp CNGD là ở chỗ cùng có một kết quả, nhưng nhanh hơn, tiết kiệm thời gian hơn mà thôi. Vậy tại sao phải tiết kiệm thời gian? Là để bọn trẻ có thời gian để CHƠI!

Nói lại cho rõ, phương pháp CNGD của ông Đại, chung quy lại chỉ có một mục đích:

CHƠI!

Bọn trẻ phải được CHƠI!

Có người bạn hỏi tôi, tại sao phải bắt trẻ học một đống thứ rồi lại bàn chuyện tiết kiệm thời gian? Muốn cho bọn trẻ chơi thì cho chơi thôi...

Ở đây, tôi muốn bàn một vấn đề khác. Đó là về mục tiêu của ngành giáo dục VN.

Nó khác với các nước tiên tiến phương Tây, mục tiêu của họ là phát huy tư duy độc lập, hoặc phát triển bản thân của trẻ,... Nền giáo dục ở VN, và phần lớn phụ huynh ở VN có mục tiêu khác hẳn. Họ muốn con họ phải giỏi! Tức là có thành tích tốt, là giỏi ngang hoặc hơn các bạn cùng lứa, v.v...

Tôi xem những người phản đối, rất nhiều người trong đó đưa ra dẫn chứng về đứa con của họ học không được, không biết mặt chữ như bạn bè đồng lứa... Tôi cười... Không phải tôi chê. Chỉ là tôi thấy hơi mắc cười thôi. Gia đình thì cứ đem kết quả thực dụng ra mà so sánh, rằng "con tao phải giỏi, mà sao học cách này nó không giỏi bằng đứa khác?"

Việc này không sai. Việc này là mong muốn rất chính đáng. Nhưng vì nó diễn ra rộng khắp xã hội, nên nền giáo dục VN cũng bị chi phối theo (hoặc có khi ngược lại). Do đó, người đưa ra phương pháp giáo dục như ông Đại phải tìm một cách mà vừa đạt được mục đích của xã hội (trọng kết quả thi cử), vừa đạt được mục đích của mình (bọn trẻ được chơi). Và lão ấy đã đề ra (phát minh ra? cóp nhặt được?) phương pháp này, vừa để đạt được điểm khá giỏi trong thi cử, lại vừa có thời gian chơi đùa và thảo luận nhóm.

Hôm nay tôi viết bài này, vì cách đây không lâu, tôi chợt phát hiện ra là có nhiều người không biết cái mục đích thật sự của ông Đại: Cần tiết kiệm thời gian học để bọn trẻ có thời gian chơi. Lúc đầu, tôi cứ nghĩ là ai cũng hiểu, nhưng họ không chấp nhận cái cách làm mà thôi. Xem những video của ông Đại phát biểu, tôi còn nghĩ ổng cũng nhầm như tôi. Tức là ổng cho rằng mọi người phản đối cách làm của ổng vì ổng cho trẻ con chơi quá nhiều, mà lại còn học một phương pháp lạ. Tôi cảm thấy ổng cứ phải biện hộ chuyện "trẻ con được chơi" miết, mà không phát hiện ra là người nghe không hiểu phương pháp của ổng thì bọn trẻ được chơi ở chỗ nào...

Nhưng tôi thông cảm cho ông, vì tôi cũng yêu khoa học, thích người làm khoa học, nên tôi hiểu. Bọn làm khoa học có đặc điểm là không quen với việc đối phó với truyền thông, nói chuyện rất dễ bị bọn làm truyền thông bóp méo. Nhưng đó là câu chuyện khác.

Trong chuyện này, theo tôi thấy có 2 hướng để phản đối phương pháp CNGD:

1. Thay đổi mục tiêu ngành giáo dục. Chúng ta không hướng tới nền giáo dục trọng điểm số nữa. Khi đó phương pháp CNGD này sẽ không còn phù hợp nữa, và sẽ phải tìm một phương pháp khác.
2. Đưa ra giải pháp tốt hơn, để bọn trẻ vừa đạt thành tích tốt, vừa đạt những mục tiêu khác nữa, đáp ứng nhu cầu của một vài người muốn cho con mình có thời gian chơi, rèn luyện sức khỏe, phát triển tư duy làm việc nhóm, đọc sách,...

Tôi thì tôi ủng hộ việc thay đổi mục tiêu giáo dục. Nhưng có vẻ hệ thống chính quyền, và cả những phụ huynh xung quanh khác mục tiêu của tôi, nên tôi tạm chấp nhận con đường thứ 2.

Cần lưu ý rằng, ở cả những nước tiên tiến, cũng có nhiều hướng đi khác nhau. Nước Nhật thì chú trọng tới thể dục và thể chất, Mỹ thì có nhiều bài kiểm tra hơn, còn Phần Lan thì thích cho trẻ con chơi. Tôi thấy phương pháp CNGD cũng giống với Phần Lan, cũng cố gắng hoàn thành bài học chính khóa thật nhanh để trẻ con có thời gian chơi đùa, có điều khác nhau ở cái mục tiêu giáo dục khiến cho bài vở của VN nặng hơn mà thôi. Người Mỹ cũng thường đem so sánh chương trình của họ với Phần Lan, để nói đến việc cùng đạt mục tiêu phát triển cá nhân nhưng lại cho trẻ con được có tuổi thơ.

Điều cuối cùng tôi muốn chia sẻ là có nhiều người nói sẽ có sự xa cách giữa bố mẹ và con cái. Điều đó có thể đúng với họ, nhưng rất tiếc sẽ không bao giờ đúng với tôi và các con của tôi.

Lý do rất đơn giản, các bạn có nghĩ một người đã tìm hiểu cặn kẽ phương pháp đến thế này, hiểu rõ ngọn ngành,... thì có thể nào không đi cùng con mình theo cách học mới? Nghe có vẻ sai sai. Nhỉ!

Tôi cho rằng, trách nhiệm của cha mẹ không phải là bao bọc con trong cái vỏ gọi là "khu an toàn", và bảo con "đừng bao giờ đi xa nhé, cái đó quá nguy hiểm cho con đó", trách nhiệm của họ là tìm hiểu thế giới xung quanh trẻ, và giới thiệu thế giới đó cho trẻ một cách lạc quan nhất. Trách nhiệm của họ còn phải minh định rõ ràng sự vật và hiện tượng, giữa nguyên nhân và kết quả,... ngay từ khi con của họ còn chưa biết gì, và họ phải giữ lối tư duy đó liên tục, để đứa con nhìn họ và tự học, và bám theo cách hành xử minh định đó mà phát triển khả năng cá nhân đứa trẻ.

------
Xpost on https://blog.botbie.io/2018/09/13/tai-sao-toi-ung-ho-cong-nghe-giao-duc

Thứ Hai, 3 tháng 9, 2018

Vài lời về "Công nghệ giáo dục"

Xung quanh vụ tranh cãi về sách lớp 1 tiếng Việt mới theo cái gọi là "Công nghệ giáo dục", tôi có vài ý kiến. Bản chất của vụ phản ứng này của mọi người xoay quanh cách đánh vần "lạ", và cách dùng câu cú khá rắc rối và dễ hiểu sai.

Đầu tiên, tôi xin nói ngay là tôi chỉ phản đối cách đánh vần âm 'qu' thành 'cờ' thôi, còn lại các vấn đề khác thì tôi nghĩ cũng chấp nhận được cả. Nguyên nhân là vì âm 'qu' là một âm đặc biệt, ví dụ chữ 'qua', đứng phương diện người nghe sẽ rất dễ bị nhầm thành 'cua' nếu không đọc rõ. Cần lưu ý là trong tiếng Anh, âm 'qu' thường được phiên âm thành /kw/, trong khi âm 'c' và 'k' sẽ được phiên âm thành /k/, như vậy rất nhiều trường hợp 2 âm 'k' và 'c' được phiên âm giống nhau, nhưng âm 'qu' thì không có trường hợp nào giống cả. Tôi nói điều này không phải để nói rằng tôi dùng tiếng Anh làm chuẩn, mà là để nói rằng vấn đề âm 'qu' khác 'k' và 'c' thì không phải chỉ có mỗi tiếng Việt của mình nhận ra, mà các ngôn ngữ khác cũng thế.

Tôi rất thích Esperanto. Một ngôn ngữ được tạo ra một cách hoàn hảo, và bởi những nhà ngôn ngữ học hàng đầu. Nó rất dễ học cho tất cả mọi người trên thế giới, nhưng không quốc gia nào dùng nó làm ngôn ngữ chính thức. Và trong ngôn ngữ này, không có âm 'q'. Nói chung là để tránh phải tranh cãi, Esperanto bỏ luôn cái chữ 'q' khỏi bảng chữ cái luôn. Tên ai mà có chữ 'q' thì khi phiên âm sang Esperanto sẽ biến thành 'k' hết.

Câu chuyện sẽ dừng ở đây, nếu mọi người không lôi tiếp ông Hồ Ngọc Đại ra và nói. Vì sao? Vì với tôi cách nào cũng được cả, phát âm theo cách xưa giờ mình học với cách mới này đều cũng sẽ như nhau. Vì bản chất ngôn ngữ là để diễn đạt ý của mình muốn nói, chẳng có liên quan gì đến chuyện đánh vần thế nào cả. Ý tôi là, khi tôi nói chuyện với các bạn, tôi sẽ nói thành tiếng một (như "tôi yêu các bạn"), chứ không có đánh vần thành "tờ ô i tôi y ê u yêu cờ a cờ cac sắc các bờ a nờ ban nặng bạn". Nói kiểu thế thì lâu chết được... Hi...

Việc thứ 2 là ông Đại này là ai? Hàm giáo sư, cũng khá lớn tuổi. Và quan trọng hơn là một trong những lá cờ đầu về giáo dục VN. Kể cả cái chương trình Công nghệ giáo dục này cũng được giúp sức bởi Nhà giáo nổi tiếng Phạm Toàn. Những người nhận xét về cái sai của sách mới, là họ đang dựa theo cách cũ. Vậy cách cũ này là ai làm? Có phải lão Phạm Toàn kia có liên quan không? Tôi nghĩ cái tên Phạm Toàn và Hồ Ngọc Đại thì mọi người đã rất quen rồi chứ nhỉ? Nguyên nhân là sách giáo khoa hồi đó chúng ta học đều có cái trang bìa ghi rõ "Phạm Toàn (chủ biên)" hoặc "Hồ Ngọc Đại (chủ biên)". Nhiều khi mấy ông lão này già nên lẩm cẩm hết, hồi xưa dạy cách A, giờ lại đổi cách B. Rõ lẩm cẩm!

Tôi nói đoạn trên, đôi khi là rất mang màu sắc công kích và thiên vị. Tôi biết. Nhưng tôi cũng chọn cách riêng để kính trọng lão Đại này. Tôi nói ngay: Tôi không thích Triết học Marx-Lenin. Và tôi cho rằng cần phải học nhiều triết học khác nhau để có cái nhìn toàn diện. Nhưng không biết chọn những triết học nào... May thay, lão Đại giúp tôi khi bảo "muốn hiểu về triết học chỉ cần học 4 người là đủ Pluton, Kant, Heghen và Marx". Cần chú ý, MARX chứ không phải MARX-LENIN.

Không phải ai, trong hoàn cảnh mà cả nước hừng hực yêu Lenin, lại có một người đi ngược lại, và chọn một cách riêng. Tôi đã bỏ triết học Marx-Lenin, chính xác hơn là bỏ cái đuôi "Lenin" khỏi chủ nghĩa Marx (và tôi đã nói điều này với rất nhiều bạn bè rồi), và rồi phát hiện ra Marx không đơn giản và tầm nhìn ngắn hạn như "Marx-Lenin". Thậm chí, tôi cho rằng tất cả mọi người đang ủng hộ Marx-Lenin, chỉ cần đọc hết và hiểu hết cuốn "Tư bản" của Marx, cũng sẽ muốn bỏ cái đuôi "Lenin" đi. Thế mà một ông lão giáo sư, nhận tiền của Nhà nước, lại hướng người ta đi rời xa CNXH của Marx-Lenin. Và, ngấu nghiến hết 3 ông còn lại mới thấy lẽ ra mình nên đọc về 4 người đó sớm hơn. Tiếc!

Tóm lại, với tôi, lão giáo sư Hồ Ngọc Đại không phải hạng ngu. Ít nhất, trình độ của ổng cũng hơn tôi. Tất nhiên, có thể do thực tế là tôi quá ngu. Nhưng mà có sao đâu, một thằng quá ngu cũng nên tôn trọng một người ít ngu hơn mình. Ha...

Chuyện thứ 3, rất nhiều người phản đối cách làm của "Công nghệ giáo dục". Tôi chưa bàn vội, chỉ mạn phép đặt vài câu hỏi như sau:

1. Mọi người có muốn thay đổi theo hướng tốt hơn không? Rất nhiều người thường chia sẻ "nền giáo dục VN, cứ gọi là nát". Nhưng mà mọi người có muốn nó thay đổi theo hướng tốt hơn không? Hay là chỉ muốn nó giữ nguyên, và tình trạng cứ tệ dần như hiện tại? Cần lưu ý, có câu "không tiến ắt sẽ lùi".

Giờ giả sử mọi người đều muốn nó tốt lên. Câu hỏi tiếp theo là:

2. Nếu có một phương pháp, do một số chuyên gia giáo dục hàng đầu thảo luận và đưa ra, liệu mọi người có chấp nhận không? Tôi nghĩ rằng với câu hỏi này, mọi người sẽ đặt rất nhiều nghi vấn về phương pháp. Tất nhiên, vẫn sẽ có người đồng ý luôn mà không cần ý kiến gì. Và ngược lại, vẫn sẽ có người phản đối mặc dù họ không biết gì cả. Nhưng tôi cam đoan là phần lớn mọi người sẽ tìm hiểu và đặt nhiều nghi vấn về phương pháp.

Vậy giờ làm sao đây? Không lẽ không thay đổi và nhận kết quả giống câu 1? Tôi hỏi thêm 1 câu nữa:

3. Nếu phương pháp mới được đem vào thực nghiệm, và nhận được kết quả tốt thì thế nào?

À, thực ra lão Đại đã làm luôn cả 3 câu đó, và lão tạo ra cái trường gọi là Thực nghiệm đó. Và họ dạy cái phương pháp mà mọi người chê là "tào lao". Nhưng mà có phải mọi người thường biện minh phương pháp tốt thì phải có kết quả tốt không? Vậy kết quả của trường Thực nghiệm là gì?

Cần lưu ý là trường đó đã đạt rất nhiều thành công, với rất nhiều giải thưởng học sinh giỏi và Olympic. Vậy kết quả thực nghiệm có đáng được tôn trọng không?

Tất nhiên, ai cũng hiểu rằng còn tùy thuộc vào học sinh có giỏi hay không nữa. Nhưng mà tự dưng, một cách ngẫu nhiên dồn rất nhiều học sinh giỏi vào học ở trường này thì thật tình mà nói, môn xác suất cho kết quả là không nhiều, nếu không nói là phi lý. Đó là chưa kể tới việc từ chính cái trường đó, mà VN lại có một người đoạt giải Fields. Lần đầu tiên, VN có một người đạt được giải thưởng danh giá nhất ngành Toán.

Chuyện không dừng lại ở đó, khi cách đây mấy năm, rất nhiều phụ huynh đã đạp luôn cổng trường Thực nghiệm của lão Đại, và xin cho con vào lớp 1 tại đây. Ai không tin có thể lục lại báo cũ. Nhưng cái lớp 1 hồi đó dạy cái phương pháp tào lao ấy là điểm đến mong ước của rất nhiều phụ huynh...

Vì ngoài việc dạy theo cách mới lạ, họ còn tạo một môi trường mà trẻ được chơi. Rất ít làm bài tập. Học để hiểu và học quan sát nhiều hơn. Rất nhiều người vào thời điểm đó còn hô hào để nhân rộng mô hình dạy học đó ra nữa...

Vậy mà.......

Đời. Vốn dĩ phũ. Không biết lão Đại có đủ gạch để xây Landmark 82 cao hơn cái 81 chưa?

Chuyện thứ 4, chuyện này có vẻ nói ở thì tương lai, vì hơi sớm... Theo chương trình Công nghệ giáo dục, thì hình như Toán lớp 2 hoặc lớp 3 gì đó sẽ được học phương trình. Một thứ mà đáng lẽ lên cấp 2 mới học thì phải. Nhưng chắc là dạng phương trình cộng trừ này kia thôi.

Có điều, tôi thắc mắc là không biết mọi người có phản đối vụ đó không ta? Mới học lớp 2 lớp 3 mà đã bắt giải phương trình, kể cũng tội cho mấy đứa nhỏ, và cũng tội cho phụ huynh vì mấy đứa nhỏ hỏi mà không giải được. Chậc...

Chung quy lại, tôi ủng hộ cách làm mới. Và tôi không thấy vấn đề gì khi cho con học chương trình đó!

Tôi biết, bọn trẻ sẽ gặp rắc rối với cách đánh vần và viết như vậy. Nhưng tôi tin rằng các con tôi đều rất thông minh, và chúng sẽ tìm ra cách để thích nghi và phát triển. Chuyện gặp rắc rối như vậy, thời của tôi không thiếu, khi mọi người không phân biệt được "ngan/ngang", "nghiêng/nghiên/ngiêng/ngiên", "ga/gia/da",... thế mà bọn tôi vẫn lớn lên và học hành tốt cả. Cho nên, các con của tôi sẽ cần phải gặp nhiều rối rắm như thế càng tốt. Tự bọn chúng sẽ phải vượt qua, và phải đạt được những thành tựu vĩ đại và giỏi hơn tất cả những bạn cùng lứa khác.

Hiện tại, đứa lớn chỉ mới hơn 3 tuổi, khi nào nó vào lớp 1 tôi sẽ nói nó: "Con tự học nhé, vì phương pháp thời của ba khác với thời của con, nên giờ con phải tự học lấy. Ba sẽ giúp khi nào ba có thể giúp, nhưng đừng trông đợi vào ba."

--------

Xpost on https://blog.botbie.io/2018/09/03/vai-loi-ve-cong-nghe-giao-duc

Thứ Ba, 3 tháng 7, 2018

Bàn về việc di chuyển từ Facebook qua Minds

TL;DR: Tôi cho rằng MXH Minds không bảo mật như những gì họ nói.

Tôi thấy có nhiều người bạn muốn chuyển sang Minds, vì lo ngại bảo mật hay bị FB thao túng.

Đứng ở góc nhìn một người tìm hiểu về Blockchain bấy lâu, tôi cho rằng mong muốn dùng một MXH mà bảo mật và không thể bị thao túng là một nhu cầu cần thiết. Nhưng Minds thì còn lâu mới làm được. Việc chuyển sang đó, chỉ đơn giản là bạn chuyển một chỗ A sang một chỗ B, mà không có gì thay đổi.

Không muốn bàn chuyện gì khác ngoài khía cạnh kỹ thuật, đây là các luận điểm của tôi:

- Minds nhập nhằng giữa MXH và blockchain (tôi cho rằng họ cố tình). Nhiều người biết rằng blockchain thì không dễ bị thao túng hay kiểm soát, nên cho rằng Minds cũng như vậy. Thực tế KHÔNG phải vậy, Minds chỉ dùng blockchain như là công cụ để đánh giá điểm bài viết, hoàn toàn không dùng blockchain theo cái cách bảo mật mà nhiều người muốn. Vấn đề này thì tất cả những ai tìm hiểu kỹ về blockchain đều biết cả.

- Minds tuyên bố rằng thông tin của người dùng đều được mã hóa trước khi lưu trữ trên server của họ. Tuy nhiên, tất cả những ai biết rõ về mã hóa đều biết vấn đề mấu chốt là: chìa khóa để giải mã nằm ở đâu. Với Minds, chìa khóa giải mã nằm trên chính server của họ, mà không phải trong tay người dùng. Tức là dù cho họ có mã hóa dữ liệu, tuyên bố rằng họ KHÔNG THỂ đụng vào dữ liệu người dùng, nhưng thực tế thì nếu họ muốn đụng thì họ làm, bất cứ khi nào, bất cứ hoàn cảnh nào, thậm chí người dùng cũng không biết.

- Dữ liệu trên Minds không hề được decentralized, mà lưu hoàn toàn trên server của Minds. Nói cách khác, nếu chính phủ hoặc hacker muốn đánh sập trang web, thì họ hoàn toàn có thể làm được. Tất nhiên, nếu một "ai đó" đủ khả năng để đánh sập Minds thì trước đó có thể Minds đã phải thỏa hiệp để bán thông tin người dùng rồi. Ngắn gọn hơn: Người dùng Minds (cũng như FB) đều là con tin.

Cuối cùng, tôi không phản đối mọi người chuyển sang Minds, nhưng tôi nghĩ nếu mọi người post song song 2 bên (thậm chí nhiều bên hơn) thì sẽ tốt hơn, vì như vậy thông tin sẽ lan truyền mà không thể ngăn chặn nổi.

Tái bút: Hiện tôi đang nghiên cứu về đề tài mạng xã hội trên blockchain, nếu ai có hứng thú, xin PM vào Facebook

Thứ Bảy, 4 tháng 11, 2017

Bàn về luật pháp với blockchain

Nói về luật pháp với blockchain thì có 3 cuộc thảo luận gần đây của giới chuyên môn. Đầu tiên là hầu hết các chính phủ đều "lo sợ" trước blockchain, nhất là bitcoin. Thứ 2 là tranh cãi về chuyện chính phủ làm sao để "luật hoá" blockchain, tức là đưa blockchain vào con đường có kiểm soát và mang lại lợi ích cho quốc gia. Thứ 3 là một cuộc tranh luận mới, nhưng không kém phần kịch tính và kích thích, đó là dùng blockchain như là một công cụ để minh bạch hoá chuyện thực thi luật pháp, thậm chí là đưa luật pháp thành một blockchain luôn.

Chúng tôi cũng theo trào lưu này, đã có buổi thảo luận mở về vấn đề này. Nội dung bài viết là tóm tắt lại nội dung đã thảo luận. Coordinator: Nguyễn Kim Kha, contributors: Huỳnh Đức Toàn, Nguyễn Minh Kha, Nguyễn Anh Tấn.


Mở đầu


Đến với blockchain nói chung, hay bitcoin nói riêng thì thường có mấy giới: holder (mua rồi giữ một thời gian dài), trader (mua - bán liên tục), investor (đầu tư ICO hoặc tương tự), miner (đào các coin),... Chúng tôi có người thuộc các nhóm trên có người không phải, nhưng lần này gặp nhau hoàn toàn không thảo luận các vấn đề đó, mà chỉ tập trung vào vấn đề luật pháp.

Nội dung thảo luận là để trả lời 3 câu hỏi chính:
  1. Các chính phủ tại sao nên lo sợ gì và không nên lo sợ gì đối với blockchain?
  2. Liệu các chính phủ sẽ cần phải luật hoá như thế nào thì hiệu quả cho việc quản lý đối với blockchain?
  3. Liệu blockchain có thể được dùng như một công cụ luật pháp?

Cũng xin phép được thông báo là ngoài thảo luận này, chúng tôi cùng muốn có một vài buổi thảo luận khác trong tương lai gần. Nếu mọi người thực sự muốn tham gia, chúng tôi rất welcome.

Sau đây là note lại các vấn đề trong buổi thảo luận vừa qua.

Các chính phủ tại sao nên lo sợ gì và không nên lo sợ gì đối với blockchain?


Nói về smart contract (SC), nó cho phép tạo ra các hợp đồng, các tổ chức trên các hợp đồng đó, thậm chí là tạo ra cả một "chính phủ", nhưng hoàn toàn ẩn danh (anonymous). Vì anonymous nên bản chất là vô chính phủ, gần như không ai can thiệp được.

Và vì các tổ chức này có thể sử dụng blockchain như một tiền tệ, nên các "chính phủ" này có một sức ảnh hưởng nhất định đối với một cộng đồng người. Cho nên đó là một hình thức thách thức quyền lực của các chính phủ trên thế giới.

Đó là khi ta coi ảnh hưởng của blockchain như là một "chính phủ anonymous", còn ảnh hưởng thật sự thì thế nào? Một ví dụ điển hình là mới đây LHQ thực hiện "cấm vận" đối với ngành xuất khẩu than đá của Triều Tiên, ngay lập tức, xuất hiện nguồn tin nói rằng Triều Tiên sẽ dùng toàn bộ than đá không xuất khẩu được đó để tạo ra điện và đào bitcoin hay các coin tương tự. Việc này có thể giúp chính quyền Triều Tiên có nguồn tiêu thụ than đá, và vẫn mang lại một lượng ngoại tệ thông qua việc bán bitcoin ở các sàn nước ngoài... Tất nhiên, câu chuyện thật có thể dài hơn như vậy, nhưng vấn đề cốt lõi ở đây là: Ảnh hưởng của các thiết chế chính trị như LHQ lên Triều Tiên đã bị ảnh hưởng blockchain làm cho lu mờ.

Có thể nói chính nhận thức của những người phi chính trị (ở đây là dân chúng nói chung) về blockchain đã mang cho blockchain một cơ hội tuyệt vời để đối trọng với hệ thống chính trị hiện nay, vốn đã hình thành và hoàn thiện cả ngàn năm qua. Đồng thời cũng trao cơ hội cho các quốc gia nhỏ bé có một công cụ để "làm giá" trước các gã khổng lồ.

Một số chính phủ có dấu hiệu thuận theo blockchain để tìm kiếm cơ hội phát triển (hoặc kiểm soát tốt hơn) đất nước mình. Tuy nhiên, không phải là nhiều, bởi phần lớn chính phủ không muốn điều này. Có thể đưa ra vài nguyên nhân ở đây:

  • Liên quan đến tiền tệ, chính phủ không thể kiểm soát được việc phát hành tiền tệ. Một chính phủ mà không kiểm soát được tiền tệ quốc gia, thì có thể nói quốc gia đó không còn thuộc quyền quản lý của chính phủ đó nữa, mà chịu sự chi phối của những người sở hữu lượng lớn tiền tệ quốc gia. Nói một cách đơn giản, trong hệ thống tiền tệ hiện tại, nếu có một cá nhân/tổ chức nào đó kiểm soát phần lớn lượng tiền, thì chính phủ chỉ cần phát hành cho chính mình một lượng lớn hơn. Việc này không thể xảy ra với blockchain hiện tại, nhất là bitcoin.
  • Thuế là nguồn thu nhập lớn nhất của chính phủ bên cạnh việc tự phát hành tiền. Với đặc tính ẩn danh, blockchain trao cơ hội vàng cho những kẻ trốn thuế, rửa tiền, và chuyển tiền lậu xuyên biên giới. Tất nhiên, dù không có blockchain thì việc đó vẫn sẽ xảy ra, nhưng blockchain cứ như là dụ dỗ người ta, vì với nó, người ta cực kỳ dễ dàng làm điều đó hơn bao giờ hết. Cứ như là trước kia chỉ có người có tiền mới mua smartphone, còn giờ thì nó rẻ và dễ mua, nên ai cũng có cho mình một cái.
  • Tiếp theo là các hình thức tội phạm như ponzi đa cấp, lừa đảo, buôn bán trái phép,... nhờ có blockchain mà tiếp tục nở rộ. Tất nhiên, đó là vấn đề kinh tế vi mô, tầm mức không ảnh hưởng trực tiếp đến quốc gia. Nhưng ai biết được ảnh hưởng của nó một khi nó tràn lan và hệ thống cảnh sát của chính phủ hoàn toàn tuyệt vọng trong việc bảo vệ người dân? Sẽ là cả một cuộc khủng hoảng kinh hoàng về đời sống của người dân. Và đó chính là điều các chính phủ không mong muốn.
  • Với cả những chính trị gia suy nghĩ tích cực nhất, thì họ cũng gặp một vấn đề khác: Blockchain quá mới để tiếp cận. Bitcoin chỉ ra đời chưa tới 10 năm, còn những thứ như smart contract thì chưa tới 5 năm. Quá ngắn để các chính trị gia già cỗi hiểu được cơ chế vận hành và luật hoá nó.

Có một ví dụ thú vị liên quan đến chuyện này, ví dụ nổi tiếng về hành vi của loài khỉ.

Đại khái là nhốt 5 con khỉ vào lồng, có cái thang và treo trái chuối. Cứ con nào leo lên thang là bị đánh cho rớt xuống. Rồi sau đó không con khỉ nào dám leo lên nữa, người ta mới lấy 1 con khỉ ra và đưa con mới vào. Con mới vào thì lập tức trèo lên thang, nhưng ngay lập tức nó bị mấy con khỉ khác kéo xuống. Và cứ như vậy người ta thay hết con này đến con khác. Cuối cùng thì cả 5 con vốn bị đánh lúc đầu đều đã bị thay ra, 5 con còn lại không hề biết được tại sao nó không được leo lên thang để lấy chuối.

Các chính trị gia của chúng ta đôi khi cũng như vậy. Khi một người có tư tưởng táo bạo gia nhập, người này cũng sẽ bị kéo về cho ngang level với những người trước giờ ở đó. Và... game over...

Vậy, có lý do gì để các chính phủ không nên lo sợ blockchain không? Chúng tôi vẫn chưa đưa ra ý kiến nào. Đành để ngỏ vấn đề ở đây, hi vọng có người khác tìm ra và cho ý kiến.

Liệu các chính phủ sẽ cần phải luật hoá như thế nào thì hiệu quả cho việc quản lý đối với blockchain?


Với tình trạng phát triển blockchain hiện tại, các chính phủ gần như không có cách nào hiệu quả để quản lý nó, nếu không dùng đến chế tài cuối cùng là cắt điện/internet/phạt tiền hoặc nặng hơn là bỏ tù và tử hình những người sử dụng, tức coi blockchain như một thứ ảnh hưởng đến an ninh quốc gia. Mà dùng đến các chế tài đó thì việc này thật sự sẽ khiến người ta nghi ngờ về động cơ của chính phủ.

Nếu muốn kiểm soát vì lợi ích của quốc dân, chính phủ có thể tìm cách để loại đi đặc tính ẩn danh trên blockchain, sau đó có thể kiểm soát được số lượng giao dịch tối đa của người dân. Phương pháp này mới nói nghe thì có vẻ không hợp lý, vì blockchain vốn được làm ra để bảo vệ tính ẩn danh của người tham gia mà. Tuy nhiên, có một phương pháp như sau:

  • Tạo ra một hệ thống để quản lý định danh và địa chỉ wallet. Tức một người phải đăng ký một địa chỉ với chính phủ, và chính phủ sẽ quan sát địa chỉ này, đảm bảo không có phát sinh một giao dịch đến một địa chỉ khác ngoài những địa chỉ đã được đăng ký. Nói nôm na là chỉ được chuyển tiền qua lại giữa các valid wallet với nhau mà thôi.
  • Việc chuyển tiền cho địa chỉ "ngoài mạng lưới" được xem giống như việc chuyển tiền lậu ra nước ngoài, và khi đó cảnh sát sẽ vào cuộc.
  • Tất nhiên, ngoài chính phủ ra thì không ai biết địa chỉ nào thật sự là của ai, nhưng chính phủ sẽ cung cấp một cơ chế để xác nhận một địa chỉ có valid hay không (valid ở đây là có đăng ký với chính phủ).

Nhìn kỹ lại thì đây chưa hẳn là một giải pháp hoàn hảo. Bởi việc xây dựng một hệ thống như vậy sẽ mất khá nhiều thời gian và công sức. Tuy nhiên lại không chắc chắn rằng sẽ thành công trong việc quản lý dòng tiền trong dân chúng. Bất kể có dùng chế tài gì đi nữa, thì người ta vẫn sẽ có cách để vượt qua, và đôi khi người dân sẽ vô tư như thế này: 

Giả sử 1 địa chỉ "trong mạng lưới" nhận được một số tiền từ một địa chỉ khác "ngoài mạng lưới", tất cả những gì người ta cần là nói rằng "ai đó chuyển nhầm cho tôi". Và rồi người đó sẽ phải đóng thuế trên số tiền "trên trời rơi xuống" đó. Cũng OK thôi. Nhưng rồi ngày nào anh ta cũng có người "chuyển nhầm" như thế... Đây là một hình thức rửa tiền không có gì tuyệt vời hơn. Và không ai có bằng chứng để cáo buộc anh ta.

Một vấn đề khác khi hợp pháp hoá các blockchain hiện có, đó là: Nếu một người đã sở hữu bitcoin (hoặc bất cứ đồng cryptocurrency nào), trước khi nó được hợp pháp hoá thì thế nào? Nếu chấp nhận luôn, thì sẽ có rất nhiều người mua các key cũ có số bitcoin lớn, để sau đó báo với chính phủ rằng "tôi đã sở hữu trước, vì thế tiền của tôi là hợp pháp". Việc làm này là nhất thời, sau một thời gian sẽ không áp dụng được nữa, nhưng nó giáng một đòn rất mạnh vào nỗ lực hợp pháp hoá bitcoin, khi nó sẽ kéo tình hình kinh tế đi xuống ít nhất là vài năm.

Có thể nhận thấy, chỉ có một lối thoát là "xào bài chia lại", tức chính phủ phát hành cryptocurrency bên cạnh tiền tệ hiện tại. Ví dụ, chính phủ VN có thể phát hành eVND (chỉ là giả sử thôi nhé) với đặc tính như sau:

  • Là blockchain
  • Chỉ do một địa chỉ duy nhất phát hành, và ai cũng biết địa chỉ đó là của chính phủ. Việc này sẽ khiến chính phủ phải minh bạch về lượng tiền mới phát hành. Và nếu việc phát hành tiền mới là hợp lý, người dân sẽ tin vào đồng tiền của chính phủ hơn so với hiện nay.
  • Giống như đoạn trên có nói, chính phủ sẽ quản lý định danh của mỗi địa chỉ.
  • Chính phủ sẽ chấp nhận cơ chế đổi tiền 1-1, giữa tiền thông thường và cryptocurrency. Như vậy sẽ không gây xáo trộn quá lớn trong xã hội. Việc này cũng tương tự như các thẻ ngân hàng, khi bạn "nạp" một lượng tiền vào ngân hàng thì tương ứng sẽ có chừng đó tiền trong thẻ của bạn để giao dịch, khi bạn muốn tiền giấy, bạn có thể rút ra.

Điểm lợi của eVND chính là việc giảm thiểu sự gian lận của các ngân hàng trong chuyện khai báo sổ cái (ledger) cho chính phủ. Hiện tại, sổ cái của ngân hàng có chút khác biệt với sổ cái mà ngân hàng trình cho chính phủ kiểm soát, việc này mang lại cái lợi về thuế cho ngân hàng nhưng lại khiến chính phủ không thật sự kiểm soát được ngân hàng nữa. Nhưng với blockchain, mọi giao dịch đều được công khai, và sổ cái của ngân hàng lại là thứ không thật sự cần thiết nữa.

Điểm lợi thứ 2 là việc người dân thật sự biết được chính phủ phát hành bao nhiêu tiền mới mỗi năm, và phát hành cho ai, để làm gì. Trong một chính quyền minh bạch mức độ cao như thế, niềm tin của người dân sẽ tăng lên, và như vậy giá trị đồng tiền sẽ được giữ vững, bằng việc người dân ghim giữ đồng tiền của mình hơn là bán nó đi để mua vàng và ngoại tệ giống như hiện tại.

Tuy nhiên, việc chống gian lận chỉ chống được ở cấp độ vĩ mô, tức đảm bảo chính phủ không gian lận khi âm thầm phát hành lượng tiền nhiều hơn so với con số thông báo, ở cấp độ vi mô, việc này không giúp ích được quá nhiều. Ví dụ như có thể nảy sinh tiêu cực khi xác nhận danh tính của một địa chỉ wallet mới. Viên chức làm việc này "vì lý do gì đó" mà xác thực sai hoặc đánh dấu vào người đã chết, và nhờ đó mà có nhiều địa chỉ wallet trở thành "vùng đen". Việc này có thể xảy ra, nhưng rất dễ kiểm soát, bởi nếu phát hiện ra địa chỉ wallet "gian dối" trong giao dịch, thì có thể truy ra người sở hữu wallet là ai, và viên chức nào là người đã xác thực để truy cứu trách nhiệm.

Điểm yếu cốt lõi nhất đó chính là chính phủ có thật sự muốn minh bạch hay không?

Ở các nước đang phát triển, khi phát hành thêm tiền chính phủ có xu hướng phát hành nhiều hơn cần thiết, nhưng với mục đích có thể xem là tốt đẹp như sau:

  1. In lượng tiền nhiều hơn cần thiết, và đưa cho các ngân hàng đầu tư.
  2. Trong trường hợp lý tưởng, ngân hàng đầu tư có lời 1%, sau đó trả lại tiền đã mượn của chính phủ. Nhưng việc này sẽ tạo đà để đất nước phát triển.
  3. Sau đó chính phủ sẽ tiêu huỷ số tiền dư đã in, vẫn đảm bảo số lượng tiền lưu thông đúng.

Trong kịch bản lý tưởng, số tiền lời 1% sẽ nhiều hơn khi có số vốn lớn hơn (do tiền in dư). Và do đó, doanh nghiệp nhận số đầu tư lớn hơn để đẩy vốn lưu thông nhanh và nhiều hơn, ngân hàng có tiền lãi đầu tư lớn hơn, và chính phủ vẫn đảm bảo số tiền lưu thông là đúng mức an toàn nếu xét chung cuộc.

Tuy nhiên, nếu kịch bản lý tưởng không xảy ra thì tiêu tùng nền kinh tế. Tức là 1 trong 4 điều này xảy ra:
  • Đồng tiền bị lạm phát phi mã,
  • Doanh nghiệp không có lãi,
  • Ngân hàng nhận tiền từ nhà nước nhưng không đầu tư hoặc đầu tư sai,
  • Và chính phủ nhận lại tiền dư nhưng không muốn huỷ tiền.

Quay lại vấn đề, nếu việc phát hành tiền được minh bạch 100% với blockchain, chính phủ không thể chơi trò này nữa, và như thế là tự tước đi cơ hội tạo đà phát triển thần tốc, chỉ có thể phát triển nhẹ nhàng, và nhìn các nước lớn phát triển càng lúc càng nhanh (do các nước lớn có khối tư bản khổng lồ để đầu tư và kích thích tăng trưởng). Bởi bất cứ khi nào phát hiện chính phủ phát hành nhiều tiền, người dân ngay lập tức nhả tiền ra và mua vàng hoặc ngoại tệ, khi đó đồng tiền sẽ mất giá càng lúc càng nhanh chóng, và sau đó để tiếp tục tạo đà phát triển thì chính phủ lại càng phải phát hành thêm tiền,...

Thông tin ngoài lề, Nga và Trung Quốc đang nghiên cứu để tạo ra đồng tiền cryptocurrency của mình. Và đấy là 2 nền kinh tế "không phải dạng vừa". Đồng thời, TQ cũng đã cấm bitcoin và tất cả các blockchain khác hoạt động trên lãnh thổ của mình.

Liệu blockchain có thể được dùng như một công cụ luật pháp?


Giải thích kỹ hơn về câu hỏi thảo luận này, đó là liệu người ta có thể tạo một blockchain mới và có sẵn các smart contract trên đó để thực thi luật pháp hay không? Nếu có thì cần phải giải quyết những vấn đề trong xã hội như thế nào?

Thứ nhất là luật bầu cử, có 2 loại bầu: bầu một người nào đó đại diện làm một việc gì đó, và bầu thông qua một chính sách nào đó. Ví dụ bầu các nghị sĩ, và nghị sĩ sẽ bầu để thông qua các đề xuất của chính phủ.

Vấn đề này quá dễ thực hiện với blockchain, nếu không nói là rất nhiều blockchain đã làm tốt chuyện này. Về cơ bản thì gồm 2 việc: đảm bảo là đúng cử tri, và đến đúng thời điểm thì mọi cử tri đều bầu được. Kết quả những cuộc bầu cử thế này sẽ hoàn toàn minh bạch.

Thứ 2 là các luật về hành chính và dân sự, mà cụ thể ở đây là các luật có hình phạt liên quan đến tiền hoặc là nhắc nhở cảnh cáo, nói chính xác hơn là không liên quan đến án tù giam. Nếu liên quan đến tiền thì nên là cryptocurrency thì sẽ tốt hơn và mang tính cơ động hơn (vui lòng xem lại phần nói về eVND).

Lấy một ví dụ về luật xử phạt hành chính vi phạm giao thông, khi phát hiện vi phạm thì một hàm trong smart contract được thực thi để trừ tiền người vi phạm ngay lập tức. Phát hiện vi phạm có thể do một anh cảnh sát hoặc một hệ thống sensor tự động. Tất nhiên, người vi phạm có thể kháng cáo, và nếu anh ta đúng thì anh ta sẽ được refund. Khá đơn giản và tự động.

Việc kháng cáo, dĩ nhiên là phải thông qua một bồi thẩm đoàn ở Toà án, để đảm bảo công bằng. Như vậy sẽ cần một hệ thống bầu chọn riêng, dành cho bồi thẩm đoàn, để sau khi họ quyết định rồi, họ chỉ cần submit quyết định đó lên blockchain là cái smart contract về xử phạt hành chính kia được thực thi và refund lại. Nói cách khác, ở đây blockchain đóng vai trò là công cụ để bồi thẩm đoàn thực hiện nhiệm vụ dễ dàng hơn, không hẳn là thứ thay thế được bồi thẩm đoàn.

Thứ 3 là các luật hình sự và quân sự, vốn rất khắt khe và hình phạt nặng nề, từ án treo, cải tạo, tù giam đến tử hình. Rất tiếc là không có cách nào hiệu quả hơn, và chúng ta tiếp tục dùng blockchain như một công cụ lưu dữ liệu mà thôi. Tức là việc phán xử sẽ phải thông qua bồi thẩm đoàn (giống với vụ refund ở trên), và quyết định là của bồi thẩm đoàn, khi thực thi thì sẽ được cơ quan thi hành án thực thi luôn, blockchain chỉ dùng để đánh dấu rằng người này đã bị giam, hoặc thực hiện các việc như thu tiền cryptocurrency.

Tuy nhiên, việc đưa blockchain vào luật pháp có mặt trái của nó. Đó chính là các ngoại lệ (exception). Lấy một ví dụ: Nửa đêm, đường trống, không có xe nào hết, mà gặp đèn đỏ, nếu vượt đèn đỏ luôn thì đúng là vi phạm luật và phải xử để công bằng (đúng lý), nhưng cái sai này có thể châm chước được (phải hợp tình). Hệ thống máy tính thì rất khó "thông cảm" được.

Một lo ngại khác, đó chính là việc vẫn còn có quan ngại một số hacker có thể tìm ra cách thức để can thiệp vào cách vận hành của blockchain, khiến việc thực thi bị rối loạn hoặc sai sót. Đó vẫn chỉ là "lo ngại", vì về nguyên tắc thì không thể xảy ra điều đó. Tuy nhiên, chỉ cần có người lo ngại thôi là đã đủ, vì bản chất người dân phải tin rằng "luật pháp bảo vệ lẽ công bằng", nếu họ không tin tuyệt đối vào điều đó thì ắt sẽ có biến, và vì vậy rất khó ổn định về mặt chính trị. 

Thứ Sáu, 27 tháng 10, 2017

TLDR; Vụ SegWit2x trên Bitcoin

SegWit2x sắp diễn ra vào giữa tháng 11 tới, có 2 điểm mà những người sử dụng bitcoin cần lưu ý:

1. Tại sao có vụ này? Tại vì có một nhóm muốn đưa vào một số cải tiến cho BTC, trong đó có nâng dung lượng block lên. Việc này chỉ có thể thực hiện mọi node đều được nâng cấp, tức là phải có đồng thuận 100%. Nhưng nếu không đồng thuận, giả sử chỉ có 50%, thì sẽ xuất hiện 2 nhóm, 1 nhóm nâng cấp và 1 nhóm không nâng cấp => BTC sẽ chia làm 2 nhánh riêng.

2. SegWit2x fork có khác gì với Bitcoin Cash fork? BCH (Bitcoin cash) có code gần giống với BTC gốc, chỉ nâng cấp về dung lượng khối lên mà thôi. Và khi BCH fork thì họ đơn giản là muốn fork thì fork. Còn vụ SegWit2x thì là do cộng đồng không đồng thuận với nhau, dẫn đến chia tách BTC ra. Một cái thì fork là nguyên nhân, một cái thì fork là hậu quả.

Note: Mọi người đang sử dụng có thể quan tâm đến chuyện giá BTC này nọ... Chuyện này tôi không đề cập, vì tôi chỉ muốn nghiên cứu thôi, không thích khuyên bảo lắm.

Thứ Năm, 4 tháng 5, 2017

Một số điều cần biết về phương thức MQTT

MQTT (Message Queue Telemetry Transport) là một phương thức truyền nhận dữ liệu rất nhẹ dựa trên TCP/IP. Nó bắt đầu phổ biến theo sự phát triển của IoT devices, khi người ta cần một chuẩn kết nối không chiếm nhiều băng thông và không quan tâm nhiều đến độ trễ.

Pub-sub


Client sẽ subscribe một topic trên server (thường được gọi là broker), sau đó giữa client và broker sẽ mở một connection để bắt đầu gửi/nhận dữ liệu. Khi cần gửi, client (hoặc broker) sẽ publish một message trên connection đã mở, và broker (hoặc client) sẽ nhận được message đó.

Cần lưu ý là, sau khi server nhận message, broker rất có thể sẽ chuyển message này cho một broker (hoặc client) khác, trên một connection khác đã mở trước đó.

QoS


Quality of Service (QoS) có 3 level, cho biết mức độ đảm bảo của việc gửi message:

  • QoS 0 - at most once: client chỉ gửi message đi 1 lần, không cần quan tâm đến việc broker có thật sự nhận được chưa. Mức độ đảm bảo này tương đương với TCP.
  • QoS 1 - at least once: client gửi message đi nhiều lần, cho tới khi nhận được message phản hồi "đã nhận" từ broker.
  • QoS 2 - exactly once: client và broker sẽ gửi qua lại thông qua 4 bước, để đảm bảo message đã được gửi/nhận thành công:
    1. Client gửi nội dung message cho broker.
    2. Broker ack cho client (báo là "đã nhận, cần biết có bị duplicate không").
    3. Client ack tiếp cho broker (báo là "message đó là do chính mình gửi và chưa bị duplicate"). Sau bước này, broker mới thật sự xác nhận là message đúng và đúng 1 lần, và bắt đầu xử lý nội dung message.
    4. Broker báo hoàn tất cho client.

Last will and testament (LWT)


Dịch nghĩa thì nó là di chúc, và có 2 đặc tính:

  • Luôn tạo di chúc trước khi chết
  • Chỉ được sử dụng khi đã chết

Điều đó có nghĩa là: Ngay khi subscribe, nội dung LWT được thiết lập luôn. Và nó được dùng khi broker phát hiện thấy client đã bị offline.

Client và broker sử dụng KeepAlive của TCP để xác định xem client có bị offline hay không. (Cần lưu ý là LWT không gửi gì từ client lên broker, khi connection giữa chúng đã bị ngắt; mọi thông tin đều có từ khi thiết lập kết nối)

Một ví dụ cho việc sử dụng LWT là: Bạn có nhiều device IoT kết nối với server (broker), và nếu có device nào không kết nối được với broker, bạn sẽ nhận SMS thông báo ngay. Khi đó, trên broker sẽ giữ LWT của các device (client) và dùng gói tin KeepAlive để kiểm tra kết nối. Ngay khi không nhận được gói tin KeepAlive từ device, broker gửi gói tin thông báo đến dịch vụ SMS (mà bạn đã thiết lập trước đó) để thông báo bạn ngay.

Retain


Một message mà có RETAIN=1 thì broker sẽ lưu giữ nó, để khi bất kỳ một client nào kết nối vào đúng broker và topic đó thì sẽ nhận được message này. Nó khá là hữu dụng khi muốn thông báo một trạng thái đặc biệt nào đó, ví dụ topic này không còn được dùng nữa, hoặc cần phải force update phần mềm,...

Nhưng nguyên tắc là chỉ có 1 message duy nhất được RETAIN=1 trên broker với 1 topic. Tức là message có RETAIN=1 sau sẽ đè lên message trước. Và nếu RETAIN=1 mà QoS=0 thì mọi message RETAIN=1 đều bị xóa hết.

Xem thêm


Thứ Ba, 12 tháng 7, 2016

KafkaConsumer is not safe for multi-threaded access

I work on project with Play framework Scala, with Guice plugins. It's very nice!

Yesterday, I met the exception:

2016-07-11 08:56:22,936 [ERROR] from akka.actor.OneForOneStrategy in application-akka.actor.default-dispatcher-6 - KafkaConsumer is not safe for multi-threaded access
java.util.ConcurrentModificationException: KafkaConsumer is not safe for multi-threaded access
    at org.apache.kafka.clients.consumer.KafkaConsumer.acquire(KafkaConsumer.java:1324) ~[org.apache.kafka.kafka-clients-0.9.0.1.jar:na]
    at org.apache.kafka.clients.consumer.KafkaConsumer.subscribe(KafkaConsumer.java:713) ~[org.apache.kafka.kafka-clients-0.9.0.1.jar:na]
    at org.apache.kafka.clients.consumer.KafkaConsumer.subscribe(KafkaConsumer.java:747) ~[org.apache.kafka.kafka-clients-0.9.0.1.jar:na]
    at services.kafka.KafkaServiceImpl.consume(KafkaService.scala:73) ~[bb-api.bb-api-1.0-sans-externalized.jar:na]

Reason: I run 2 consumers (difference threads), but just one KafkaService. And I use singleton for it (with Google Guice module). So, when running consumer, it conflict each other.

How to solve? Use @Named annotation in binding.

For example, this is my module file:

class KafkaModule extends AbstractModule with ScalaModule with AkkaGuiceSupport {

  override def configure(): Unit = {
    bind[services.kafka.KafkaService[String, String]].annotatedWith(Names.named("kafka-Coccoc")).to[services.kafka.KafkaServiceImpl].in[Singleton]
    bind[services.kafka.KafkaService[String, String]].annotatedWith(Names.named("kafka-Report")).to[services.kafka.KafkaServiceImpl].in[Singleton]
  }
}

Then, I rewrite my consumer code. Example:

class ReportConsumerActor @Inject() (@Named("kafka-Report") val kafkaService: KafkaService[String, String])
                                    (implicit ec: ExecutionContext){

  def receive: Receive = {
    kafkaService.consume(__SOME_CODE_HERE__)
  }
}

That's all! Hope this help.

Biểu mẫu liên hệ

Tên

Email *

Thông báo *