Tiền điện tử - Crypto, Blockchain

Tìm hiểu thuật ngữ “BĂM” là gì?

hàm băm là dấu vân tay kỹ thuật số

Trước khi đi sâu vào chủ đề khai thác Bitcoin, chúng ta cần nhanh chóng tìm hiểu về một khái niệm là nền tảng của tiền điện tử. Nhưng thuật ngữ này lại nghe khá dân dã mà không có vẻ gì là kỹ thuật cả, đó là “hashing” hay tiếng Việt gọi là “băm”. Vậy Băm là gì? chúng ta sẽ cùng nhau tìm hiểu trong bài viết này.

Để thực sự hiểu cách thức hoạt động của Bitcoin và các loại tiền điện tử khác, điều quan trọng trước tiên là phải hiểu khái niệm “băm”. BĂM là gì

Khi bạn nhìn thấy từ “băm”, có lẽ nhiều người đang liên tưởng đến công việc bếp núc như là băm thịt, băm tỏi…. Về mạt hình tượng nó cũng khá tương tự như vậy.

Băm là gì?

Băm là một phương pháp mã hóa chuyển đổi bất kỳ dạng dữ liệu nào thành một chuỗi văn bản duy nhất có độ dài cố định. BĂM là gì

Mật mã học là việc thực hành và nghiên cứu các kỹ thuật để liên lạc an toàn khỏi sự dòm ngó và để lộ bí mật bởi những người quan sát bên ngoài. Trong thời đại internet, mật mã được sử dụng để bảo vệ thông tin máy tính hoặc “dữ liệu”.

Tiền điện tử chúng ta cũng có thể gọi là tiền mã hoá theo đúng bản chất của nó, tiền tố Crypt trong Cryptocurrcency cũng là mật mã. BĂM là gì

Băm là một phần cơ bản của mật mã. Và đóng một vai trò rất lớn đằng sau công việc mã hoá của tiền điện tử.

Nói một cách đơn giản, băm có nghĩa là khi nhập văn bản có độ dài bất kể và thông qua hàm băm sẽ tạo ra dữ liệu đầu ra có độ dài CỐ ĐỊNH.

hàm băm là gì?

Bất kỳ phần dữ liệu nào cũng có thể được “băm”, bất kể kích thước, loại hoặc độ dài của nó. Hàm băm được tạo ra luôn có cùng độ dài. BĂM là gì

Trong các ví dụ bên dưới, chúng ta ví dụ về việc sử dụng hàm băm SHA-1 (các bạn có thể truy cập vào đây để thử), bất kể độ dài của đầu vào là gì thì đầu ra luôn dài 40 ký tự.

thuật toán băm là gì

Giả sử đầu tiên chúng ta điền dữ liệu đầu vào là “hocpriceaction.com” thì hàm băm SHA-1 sẽ cho ra giá trị băm là “2c074237ce73d65a12ad85186a3dfe87c06aee02”.

Bây giờ chúng ta cho dữ liệu đầu vào dài hơn nhiều lần, cụ thể đó là: “hocpriceaction.com – Chinh phục thị trường tài chính với phương pháp giao dịch Price Action” thì giá trị băm đưa ra là “a59a860abc6e6be8b1ee603416fef15ea7327170”

băm trong Bitcoin là gì

Trong ví dụ cụ thể này, độ dài cố định của hàm băm SHA-1 là 40 ký tự, hàm này sẽ được giải thích sau còn bây giờ chúng ta đang đi phần tổng quát trước.

Hiện tại, chỉ cần biết rằng các hàm băm khác có thể xuất ra các độ dài cố định khác nhau. Hầu hết đều có độ dài cố định là dài hơn 40 ký tự.

Một hàm băm như một vân tay kỹ thuật số

Một phần dữ liệu duy nhất sẽ luôn tạo ra cùng một hàm băm. BĂM là gì

Ví dụ: nếu bạn chạy chữ “hocpriceaction.com” một triệu lần thông qua hàm băm thì hàm băm ở trên sẽ xuất hiện một triệu lần tương tự như nhau. cụ thể từ “hocpriceaction.com” thì hàm băm SHA-1 của nó sẽ luôn là: “2c074237ce73d65a12ad85186a3dfe87c06aee02 “.

Và chỉ có “hocpriceaction.com” mới tạo ra hàm băm đó.

Bất kỳ thay đổi nào đối với từ “hocpriceaction.com” chẳng hạn như đổi thanh “Hocpriceaction.com” và hàm băm sẽ tạo ra một giá trị băm hoàn toàn khác.

Đây là lý do tại sao băm được gọi là “dấu vân tay” kỹ thuật số. Nó là duy nhất. BĂM là gì

Giống như dấu vân tay của bạn là duy nhất đối với bạn và chắc chắn không có người thứ hai có vân tay giống như bạn, hàm băm là duy nhất cho một dữ liệu đầu vào cụ thể.

hàm băm là dấu vân tay kỹ thuật số

Một hàm băm không thể đảo ngược được

INPUT – dữ liệu đầu vào của hàm băm được gọi là “preimage”. Nhưng để đơn giản hóa mọi thứ, chúng ta chỉ cần dùng “đầu vào”. BĂM là gì

OUTPUT là dữ liệu đầu ra của hàm băm và được gọi là “giá trị băm” hoặc “thông báo” hoặc đơn giản là “băm”.

Hàm băm được thiết kế để hoạt động theo cách một chiều. BĂM là gì

Vì hàm băm là hàm một chiều nên đầu ra, hay gọi là “băm”, không thể được sử dụng để suy ngược lại đầu vào là gì.

Điều này có nghĩa là nếu tất cả những gì bạn nhìn thấy chỉ là giá trị băm, bạn sẽ KHÔNG thể giải mã được dữ liệu gốc ở đầu vào mà nó hình thành lên hàm băm làm đại diện.

Hàm băm tạo ra các giá trị băm không thể đảo ngược. Không thể đảo ngược có nghĩa là nếu bạn chỉ có hàm băm thì bạn không thể sử dụng nó để tìm ra phần dữ liệu ban đầu là gì. Điều này cho phép dữ liệu gốc được giữ an toàn và không xác định.

Giống như ví dụ ở trên chúng ta đã biết được “hocpriceaction.com” sẽ cho ra băm là “2c074237ce73d65a12ad85186a3dfe87c06aee02 “. Nhưng nếu bây giờ chỉ đưa cho bạn giá trị băm là “2c074237ce73d65a12ad85186a3dfe87c06aee02 ” thì chắc chắn bạn không thể nào suy ra được dữ liệu đầu vào của nó là gì, hay bạn không thể biết đó là “hocpriceaction.com”

Hàm băm là gì?

Hàm băm là một phép toán chuyển đổi dữ liệu đầu vào có độ dài tùy ý thành đầu ra có độ dài cố định được thực thi bằng một thuật toán nhất định.

Thuật toán chỉ là một bộ hướng dẫn từng bước để thực hiện các phép tính được thực hiện bởi một chương trình phần mềm. BĂM là gì

Không thành vấn đề nếu đầu vào là một chữ cái, một từ, một câu đầy đủ, một trang trong một cuốn sách hay toàn bộ cuốn sách, Đó là phần tùy ý.

Mỗi đầu vào sẽ tạo ra một đầu ra duy nhất được biểu thị dưới dạng một chuỗi chữ và số có độ dài cố định.

Hàm băm hữu ích che giấu mọi manh mối về hình thức đầu vào có thể trông như thế nào. BĂM là gì

Ví dụ: không thể xác định được dữ liệu đầu vào dài hay ngắn hay chứa số gì hoặc chữ cái nào. Ngoài ra, chỉ thay đổi một ký tự trong đầu vào sẽ dẫn đến kết quả đầu ra hoàn toàn khác.

Nhưng hàm băm phổ biến

Tất cả các hàm băm đều hoạt động theo cách tương tự. Bạn nhập dữ liệu và hàm băm sẽ “xáo trộn” dữ liệu và đưa ra giá trị băm.

Các hàm băm phổ biến bao gồm: BĂM là gì

  • MD-5: Viết tắt của từ Message Digest 5 (MD5) là hàm băm phổ biến. Trước đây, nó được coi là an toàn nhưng ngày nay, tin tặc đã khám phá ra cách giải mã thuật toán và có thể thực hiện việc đó chỉ trong vài giây.
  • SHA: Thuật toán băm an toàn (SHA) là một loại hàm băm khác. Có một số biến thể của SHA được nhóm thành bốn họ: SHA-0, SHA-1, SHA-2 và SHA-3: Nhìn chung, bản số càng cao thì bản phát hành càng gần đây và thuật toán càng an toàn hơn.

Vì mục đích của chúng ta, hàm băm duy nhất bạn cần biết lúc này là Thuật toán băm an toàn (SHA). Cụ thể hơn là họ SHA-2 vì nó chứa một thành viên đặc biệt trong họ có tên SHA-256.

thuật toán băm SHA 256

Nó đặc biệt vì đây là hàm băm được sử dụng trong một số phần của hệ thống Bitcoin mà bạn sẽ tìm hiểu trong các bài học sau. Hiện tại, điều quan trọng là bạn chỉ cần biết rằng SHA-256 là một loại hàm băm và là loại được Bitcoin sử dụng.

Cho dù đầu vào là một trang trong bộ truyện Tam quốc diễn nghĩa hay toàn bộ bộ sách thì đầu ra của hàm băm SHA-256 sẽ luôn có độ dài giống nhau được hiển thị dưới dạng 64 ký tự chữ và số.

Hàm băm hoạt động như thế nào?

Ở trên chúng ta đã nắm được khái niệm băm và các thuật ngữ liên quan. Bây giờ, hãy tìm hiểu cách nó hoạt động!

Băm là một phép toán dễ thực hiện nhưng cực kỳ khó đảo ngược. Quá trình băm biến một phần dữ liệu thành mã nhị phân, chỉ là một tập hợp các số 0 và 1.

Sau đó, nó chia nhỏ các con số và áp dụng một số “sự lộn xộn” bí mật, được thực hiện bởi một thứ gọi là “hàm băm”. BĂM là gì

Vậy thì…

Quá trình băm trong tiền điện tử diễn ra như thế nào?

Khi được băm trong Bitcoin và các loại tiền điện tử khác, kết quả cuối cùng thường là một chuỗi số và chữ cái dài 64 chữ số.

Vì việc chuyển đổi được thực hiện bằng thuật toán mã hóa (hàm băm) nên không xác định được công thức lộn xộn tạo ra chuỗi 64 chữ và số nên nó không thể đảo ngược lại dữ liệu ban đầu.

Chuỗi ký tự giống như câu văn. Chúng được hình thành bởi sự kết hợp của các ký tự. Hãy nghĩ về hàm băm như một tập hợp các chữ cái và số ngẫu nhiên. BĂM là gì

các hàm băm là duy nhất

Một dữ liệu duy nhất sẽ luôn tạo ra cùng một hàm băm.

Ví dụ: mỗi khi chuỗi dữ liệu trên được chạy qua hàm băm, nó sẽ luôn tạo ra cùng một hàm băm.

Nhưng điều gì sẽ xảy ra nếu chúng ta chỉ thực hiện một thay đổi nhỏ trên chuỗi? (Đánh dấu màu vàng). Chúng ta sẽ thay chữ a thường bằng chữ A viết hoa. BĂM là gì

các hàm băm giống nhau về số ký tự

Mặc dù đó là một thay đổi NHỎ trong chữ liệu đầu vào, nhưng giá trị băm bây giờ nhận được đã HOÀN TOÀN khác. BĂM là gì

Bạn có thể thấy cách sử dụng hàm băm để phát hiện giả mạo vì ngay cả một thay đổi nhỏ đối với dữ liệu đầu vào cũng dẫn đến một đầu ra hoàn toàn khác.

Điều rất quan trọng là bạn phải nhớ điểm này vì trong phần dưới đây, bạn sẽ thấy cách sử dụng điểm này để ngăn chặn các giao dịch trước đó bị giả mạo.

Hàm băm chỉ có một chiều

Bạn không thể lấy hàm băm hiện có và cố gắng đảo ngược nó để tìm chuỗi giá trị đầu vào. BĂM là gì

Vì vậy, nếu tất cả những gì bạn biết chỉ là hàm băm thì không có cách nào để biết đầu vào ban đầu là gì. Bạn không thể nào có thể đảo ngược hoặc hack hàm băm.

các hàm băm không thể đảo ngược

Cuối cùng, độ dài của đầu ra giá trị băm KHÔNG tăng khi thông tin đầu vào tăng lên. Hàm băm lấy dữ liệu đầu vào có độ dài BẤT KỲ và trả về giá trị có độ dài CỐ ĐỊNH.

Nếu bạn đặt toàn bộ văn bản của cuốn truyện Tam quốc có hàng trăm ngàn từ, kết quả băm sẽ vẫn chỉ dài 64 ký tự.

Và một lần nữa, nếu bạn viết sai chính tả dù chỉ một chữ cái trong cuốn truyện và chạy nó qua hàm băm, nó sẽ tạo ra một hàm băm hoàn toàn khác so với ở trên.

Điều này sẽ cho phép bạn biết ngay rằng cuốn truyện đã được sửa đổi dù có là một dấu chấm đi chăng nữa mà không cần phải kiểm tra toàn bộ cuốn sách theo cách thủ công! Khá thuận tiện phải không nào.

Ví dụ về băm

Cho đến đây, trong các vấn đề nêu trên, bạn đã biết băm là gì và cách băm hoạt động cơ bản như thế nào rồi phải không.

Nhưng để thực sự hiểu rõ chức năng của các chương trình chuyên biệt này, sẽ rất hữu ích khi xem các ví dụ thực tế hoạt động! BĂM là gì

Hãy xem quá trình băm hoạt động như thế nào bằng cách sử dụng hàm băm thực tế.

Vì SHA-256 là hàm băm được chọn sử dụng cho hệ thống Bitcoin nên hãy sử dụng nó cho ví dụ của chúng ta bên dưới đây. Các bạn có thể truy cập vào sử dụng hàm băm SHA-256 tại đây.

Đây là ví dụ đầu vào đầu tiên của chúng ta:

Phương pháp giao dịch Price Action

Khi đưa vào hàm băm SHA-256, câu này tạo ra giá trị băm như sau, hoặc nó còn được gọi là “thông báo” hoặc đơn giản là “băm”: BĂM là gì

140041e63adc3c69f842371a09f3302049ff2139016f35a88a87e4fa6b707c99

Bạn có thể thấy rằng giá trị băm là sự kết hợp của các chữ cái và số. Và nó có độ dài chính xác là 64 ký tự.

Ngoài điều đó ra, thực sự không có nhiều điều gì đặc biệt mà bạn có thể học được khi nhìn vào đoạn mã băm này.

Không có một mô hình, quy tắc hay công thức hoặc manh mối nào về đầu vào là gì được thể hiện trong nó. Nó chỉ trông giống như một loạt những điều vô nghĩa.

Đầu ra có thể có vẻ ngẫu nhiên. Và không thể nào bạn có thể đoán được đầu vào chỉ bằng cách nhìn vào đầu ra.

Nếu bạn chạy lại dữ liệu đầu vào thông qua hàm băm SHA-256, bạn sẽ nhận lại được kết quả đầu ra, tức giá trị băm chính xác như cũ. Như vậy thì dù chúng ta nhìn nó có vẻ ngẫu nhiên nhưng nó không thực sự ngẫu nhiên, bởi nếu ngẫu nhiên thì nó sẽ không thể cho ra một kết quả nhiều lần như vậy (và chắc chắn luôn luôn như vậy).

Đầu vào giống nhau sẽ LUÔN tạo ra cùng một đầu ra. BĂM là gì

Bây giờ, hãy thực hiện một thay đổi nhỏ đối với đầu vào của ví dụ đầu tiên, đó là chúng ta sẽ thêm dấu chấm vào cuối câu và xem điều gì sẽ xảy ra:

Phương pháp giao dịch Price Action.

Kết quả giá trị băm mà chúng ta nhận được là: BĂM là gì

e2275919d42806b28f7dff8b7533198da8c39f24ca27eb79fbb0225ba0f05715

Để dễ so sánh, chúng ta sẽ đặt vào một bảng đối sánh như sau:

Phương pháp giao dịch Price Action 140041e63adc3c69f842371a09f3302049ff2139016f35a88a87e4fa6b707c99
Phương pháp giao dịch Price Action. e2275919d42806b28f7dff8b7533198da8c39f24ca27eb79fbb0225ba0f05715

Bạn có thể thấy rằng đây là một kết quả hoàn toàn khác so với lần nhập dữ liệu đầu vào đầu tiên, dù chỉ khác một dấu chấm. Thậm chí so sánh đến các vị trí thứ tự tương ứng cũng không có bất kỳ ký tự nào giống nhau.

Để không phải hoài nghi, chúng ta hãy thực hiện thêm một thay đổi nữa đối với thông tin đầu vào:

Phương pháp giao dịch Price Action/

Chúng ta sẽ thay dấu chấm bằng dấu gạch chéo, hãy xem kết quả giá trị băm mà thuật toán SHA-256 cho ra như thế nào nhé: BĂM là gì

0bf47ea0768cbf9726f79b3b4bc60bb3919b1a3ca647906705562b854c6b4fcc

Chúng ta lại đặt vào bảng so sánh:

Phương pháp giao dịch Price Action 140041e63adc3c69f842371a09f3302049ff2139016f35a88a87e4fa6b707c99
Phương pháp giao dịch Price Action. e2275919d42806b28f7dff8b7533198da8c39f24ca27eb79fbb0225ba0f05715
Phương pháp giao dịch Price Action/ 0bf47ea0768cbf9726f79b3b4bc60bb3919b1a3ca647906705562b854c6b4fcc

Có thể thấy rằng nó cũng ra một giá trị băm khác hoàn toàn.

Băm được sử dụng để làm gì?

Chúng ta đã có thể hiểu được Băm là gì và cơ chế hoạt động của băm là như thế nào. Nhưng chúng ta vẫn chưa hiểu nó làm gì ở trong hệ thống Bitcoin, hay cụ thể thì hệ thống Bitcoin sẽ làm gì với những giá trị băm đó. Chúng ta sẽ đi vào tìm hiểu ở phần này.

mục đích của hàm băm là gì

Mục đích của việc băm là gì? BĂM là gì

Mục đích chính của việc băm là xác minh tính toàn vẹn của một phần dữ liệu.

Vì hàm băm được tạo là ĐỘC NHẤT đối với dữ liệu đầu vào nên nó hoạt động như một “dấu vân tay” duy nhất của dữ liệu đầu vào.

Điều này làm cho hàm băm trở nên hữu ích trong việc xác minh tính toàn vẹn của dữ liệu được gửi qua các kênh liên lạc không an toàn như internet. Tính toàn vẹn dữ liệu chỉ có nghĩa là dữ liệu không bị thay đổi theo cách không được chấp thuận.

Giá trị băm của dữ liệu nhận được có thể được so sánh với giá trị băm của dữ liệu trước khi được gửi để xác định xem dữ liệu có bị thay đổi hay không. BĂM là gì

Nếu anh A đăng cả dữ liệu đầu vào và giá trị băm mà anh A đã tạo từ dữ liệu đó, bạn có thể tạo giá trị băm từ dữ liệu bạn nhận được của anh A và so sánh các giá trị băm.

Sử dụng một ví dụ rất đơn giản, giả sử hai người A và B sắp gặp nhau để ăn trưa và ngay trước khi bước ra khỏi cửa nhà, anh A nhớ lại lần cuối cùng họ gặp nhau…

Mặc dù tính cách của anh B rất tốt nhưng mùi hơi miệng của anh ấy lại không dễ chịu chút nào. Vì vậy anh A muốn gửi cho anh B một tin nhắn, “Hãy sử dụng singum nhé!

Nhưng trước khi gửi cái này, anh A chạy nó thông qua hàm băm (SHA-256). Và giá trị băm là:

“7ebebd242086ffaa636a8ed3e10f60fa158bc8be087ed361b47be6c3df020489”

Anh A gửi cho anh B hàm băm này trước. BĂM là gì

SAU ĐÓ anh A gửi cho anh B tin nhắn văn bản thực tế đó là “Hãy sử dụng singum nhé!

Khi anh B nhận được tin nhắn của anh A, anh B nghĩ, “Cái quái gì vậy? Có thật là anh ấy vừa nói điều đó với tôi không? Anh ấy không bất lịch sự đến thế chứ? Hay tin nhắn đã bị hack hay gặp lỗi hệ thống trong quá trình truyền tải và tin nhắn ban đầu đã bị thay đổi?”

Vì vậy, anh B thử chạy tin nhắn mình nhận được thông qua hàm băm tương tự. Và đương nhiên anh B không tin vào mắt mình: BĂM là gì

“7ebebd242086ffaa636a8ed3e10f60fa158bc8be087ed361b47be6c3df020489”

Và rồi, anh B tự ái huỷ cuộc hẹn. Vâng một câu chuyện rất lãng xẹt nhưng nó thể hiện cho bạn thấy giá trị của hàm băm trong hệ thống mạng Bitcoin, nơi mà không có cảm xúc chi phối và cũng chẳng có sự né tránh hay giận dỗi gì ở đây cả.

Ứng dụng băm trong mật khẩu đăng nhập

Một ví dụ thực tế rất gần gũi đó là mật khẩu mà chúng ta sẻ dụng nhiều trên các trang web của mạng internet.

Điều này có thể làm bạn ngạc nhiên, nhưng bạn có thể gặp phải vấn đề băm trong cuộc sống hàng ngày…bất cứ khi nào bạn đăng nhập để kiểm tra email của mình.

ứng dụng băm trong mật khẩu đăng nhập

Khi bạn tạo địa chỉ email và mật khẩu, nhà cung cấp dịch vụ email của bạn có thể không lưu mật khẩu thực của bạn.

Thay vào đó, nhà cung cấp email của bạn chạy mật khẩu của bạn thông qua hàm băm và lưu hàm băm của mật khẩu của bạn.

Mỗi khi bạn cố gắng đăng nhập vào tài khoản email của mình, nhà cung cấp email của bạn sẽ băm mật khẩu bạn nhập và so sánh hàm băm này với hàm băm mà hệ thống của họ đã lưu.

Chỉ khi hai giá trị băm khớp nhau, bạn mới được phép truy cập email của mình.

Hãy xem tại sao họ KHÔNG lưu mật khẩu thực của bạn… BĂM là gì

Nếu mật khẩu thực được lưu trữ và tin tặc xâm nhập vào hệ thống của họ, họ có thể đánh cắp chúng. Điều này chắc chắn không tốt cho người dùng sử dụng cùng một mật khẩu cho nhiều trang web! Vị họ có thể truy cập trái phép nhiều website khác nhau chỉ dựa trên một thông tin lấy cắp được.

Một giải pháp là băm mật khẩu… BĂM là gì

Bằng cách băm mật khẩu, công ty bảo vệ thông tin người dùng. Ngay cả khi tin tặc đột nhập vào hệ thống, các đối tượng sẽ không có quyền truy cập vào mật khẩu thực tế mà chỉ có các mã băm.

Hãy nhớ rằng, các giá trị băm không thể đảo ngược được nên tin tặc không thể tìm ra mật khẩu thực sự là gì chỉ bằng cách nhìn vào hàm băm. Việc băm đảm bảo rằng dữ liệu được lưu trữ ở trạng thái xáo trộn, do đó khó bị đánh cắp hơn. BĂM là gì

Bất cứ khi nào bạn đăng nhập, nhà cung cấp email của bạn không lưu trữ mật khẩu văn bản thuần túy, tất cả những gì họ cần là hàm băm.

Khi bạn nhập mật khẩu, nó sẽ chạy qua hàm băm. Đầu ra được khớp với hàm băm được lưu trong cơ sở dữ liệu. Nếu các giá trị băm giống nhau thì mật khẩu là chính xác và bạn truy cập được vào hệ thống

Nhập sai mật khẩu sẽ tạo ra hàm băm khác với mật khẩu đã lưu. Các giá trị băm sẽ KHÔNG khớp, vì vậy nỗ lực đăng nhập của bạn sẽ THẤT BẠI.

Như bạn có thể thấy, hàm băm sẽ cắt xén dữ liệu và khiến nó không thể đọc được. Ngay cả khi tin tặc giành được quyền truy cập vào máy chủ của nhà cung cấp dịch vụ email của bạn thì các dữ liệu được lưu trữ cũng không thể được giải mã. BĂM là gì

Lời kết

Trên đây chúng ta đã hoàn tất quá trình tìm hiểu rất chi tiết về băm là gì và giá trị ứng dụng của nó vào trong mạng Bitcoin nói riêng cũng như nhiều hệ thống tiền điện tử khác nói chung.

Tìm hiểu đến đây mới chỉ là những bước ban đầu nhưng có thể thấy được tiền điện tử là một phát kiến vĩ đại của nhân loại có phải không nào. Bây giờ chúng ta hãy đến với bài học tiếp theo nhé.