3500 từ kì diệu giúp bạn hiểu về blockchain

vietanhsongngu.com - Bài này cực dài với 21 pages được Trương Nhật Minh dịch ra song ngữ Anh Việt rồi để giúp chúng ta hiểu 1 phần nào với topic khá hot hiện nay là Bitcoin và blockchain.

3500 từ kì diệu giúp bạn hiểu về blockchain

3500 từ kì diệu giúp bạn hiểu về blockchain

Unless you’ve been hiding under a rock, I’m sure you’ve heard of Bitcoin and blockchain. After all, they are one of the most trending topics these days — the ultimate buzzwords of the year. Even people who’ve never mined cryptocurrency or understand how it works, are talking about it.

Trừ khi từ trên núi xuống, hẳn các bạn đều đã nghe qua Bitcoin và blockchain. Nói gì thì nói, chúng là một trong số những chủ đề nóng nhất ngày nay – là cụm từ phổ biến nhất trong năm. Ngay cả người chưa từng đào tiền kĩ thuật số bao giờ hay không hiểu nguyên lý hoạt động của nó cũng đang bàn tán về chủ đề này.

 

My non-techie friends are completely at a loss when it comes to understanding these new technologies, and have been bugging me for weeks to explain it to them. There must be thousands of other regular internet users out there who feel the same.

Những người bạn không chuyên về kĩ thuật của tôi hoàn toàn mù tịt về những công nghệ mới như thế này, và họ liên tục làm phiền tôi tuần này sang tuần khác rằng phải giải thích cho họ. Hẳn hàng ngàn người dùng internet phổ thông khác ngoài kia cũng cảm thấy điều tương tự.

 

As a super early miner of Bitcoin, I’ve taken it upon myself to write this post in the plainest English so that anyone can understand today’s most trending technology.

Với tư cách là một thợ đào Bitcoin từ rất sớm, tôi nghĩ mình nên viết bài này một cách đơn giản nhất để bất cứ ai cũng đều hiểu được thứ công nghệ đang dẫn đầu xu hướng ngày nay.

 

Blockchain: Why do we even need something this complex?

Blockchain: Tại sao chúng ta lại cần đến thứ phức tạp như vậy?

“For every complex problem there is an answer that is clear, simple, and wrong.” — H. L. Mencken

“Đối với mọi vấn đề phức tạp luôn có một câu trả lời rõ ràng, đơn giản nhưng sai.” – H.L.Mencken

Unlike most posts on Bitcoin and blockchain, which usually begin right away with trying to define blockchain, I want to explain first the problem it solves.

Không giống như đa phần bài viết về Bitcoin hay blockchain khi họ thường bắt đầu ngay bằng việc cố định nghĩa blockchain là gì, tôi muốn đưa ra vấn đề mà nó giải quyết được trước tiên.

Imagine Joe is your best friend. He’s traveling overseas and on the fifth day of his vacation he calls you and says: “Dude, I need some money. I’ve completely run out.”

Thử tưởng tượng Joe là bạn thân nhất của bạn. Anh ta đang vi vu ở nước ngoài và vào ngày thứ năm của kì nghỉ, anh ta gọi bạn và bảo: “Ê mày, tao cần ít tiền. Túi tao nhẵn rồi.”

You, being the nice person you are, reply “sending some right away,” and hang up.

Là một người tốt bụng, bạn đáp lại rằng “để đó tao chuyển cho mày ngay”, và cúp máy.

You then call your account manager at your bank and tell him, “Please transfer $1000 from my account to Joe’s account.”

Sau đó bạn liền gọi cho người quản lý tài khoản ngân hàng của bạn và bảo anh ta, “Hãy chuyển $1000 từ tài khoản của tôi sang tài khoản của Joe.”

Your account manager replies, “Yes, sir.”

Anh ta đáp rằng , “Vâng, thưa ông.”

He opens up the register, checks your account balance to see if you have enough balance to transfer $1000 to Joe. Because you’re a rich person you have plenty to spare; thus, he makes an entry in the register like the following:

Anh ta lôi bản kê ra, kiểm tra xem số dư tài khoản của bạn có đủ để chuyển $1000 cho Joe hay không. Vì bạn khá giàu có nên số dư còn rất nhiều; do đó, anh ta lập một bút toán trong bản kê như sau:

You call Joe and tell him, “I’ve transferred the money. Next time you go to the bank you can withdraw the $1000 that I have just transferred.”

Bạn gọi cho Joe và báo rằng : “Tao chuyển tiền rồi đấy. Lần sau cứ vào ngân hàng, mày sẽ rút được $1000 tao vừa mới chuyển qua.”

What just happened? You and Joe both trusted the bank to manage your money. There was no real movement of physical bills to transfer the money. All that was needed was an entry in the register. Or more precisely, an entry in the register that neither you nor Joe controls or owns.

Chuyện gì vừa xảy ra vậy? Bạn và Joe đều tin tưởng ngân hàng sẽ quản lý tiền của bạn. Không hề có một sự chuyển giao giấy tờ nào về việc chuyển tiền cả. Tất cả những gì cần thiết chỉ là một bút toán trong bản kê mà thôi. Hay chính xác hơn là một bút toán trong bản kê mà cả bạn vào Joe đều không thể kiểm soát hay sở hữu.

 

And that is the problem of the current systems.

Và đó chính là vấn đề của hệ thống hiện nay.

“To establish trust between ourselves, we depend on individual third-parties.”

“Để tin tưởng lẫn nhau, chúng ta lại đi phụ thuộc vào một bên thứ ba.”

For years, we’ve depended on these middlemen to trust each other. You might ask, “what is the problem depending on them?”

Nhiều năm qua, chúng ta đã phụ thuộc vào các bên trung gian này để tin tưởng lẫn nhau. Có thể bạn sẽ hỏi: “Tin tưởng họ thì có vấn đề gì?”

The problem is that they are singular in number. If chaos has to be injected in the society, all it requires is one person/organization to go corrupt, intentionally or unintentionally:

Vấn đề chính là số lượng ngân hàng rất ít. Chỉ cần một cá nhân hay tổ chức nào đó tham nhũng, dù là cố tình hay vô ý, thì xã hội sẽ rơi vào cảnh hỗn loạn:

●        What if that register in which the transaction was logged gets burnt in a fire?

●        Nếu bản kê chứa giao dịch bị đốt cháy thì sao?

●        What if, by mistake, your account manager had written $1500 instead of $1000?

●        Nếu như chỉ vì sơ ý mà thay vì $1000, người quản lý tài khoản của bạn lại viết nhầm thành $1500 thì sao?

●        What if he did that on purpose?

●        Nếu anh ta cố ý làm vậy thì sao?

“For years, we have been putting all our eggs in one basket”

“Nhiều năm qua, chúng ta đã và đang đặt toàn bộ trứng của mình vào cùng một rổ”

 Could there be a system where we can still transfer money without needing the bank?

Liệu có hệ thống nào mà chúng ta vẫn có thể chuyển tiền được mà không cần tới ngân hàng không?

To answer this question, we’ll need to drill down further and ask ourselves a better question (after all, only better questions lead to better answers).

Để trả lời câu hỏi này, chúng ta sẽ cần phải đào sâu hơn và tự mình đặt ra câu hỏi hay hơn (dù gì thì chỉ những câu hỏi hay mới dẫn tới những đáp án tốt).

Think about it for a second, what does transferring money means? Just an entry in the register. The better question would then be:

Hãy thử dành một giây nghĩ về nó xem, chuyển tiền nghĩa là gì? Chỉ là bút toán trong bản kê. Câu hỏi hay hơn phải là:

“Is there a way to maintain the register among ourselves instead of someone else doing it for us?”

“Liệu có cách nào duy trì bản kê giữa chúng ta thay vì phải nhờ một ai khác làm giùm không?”

Now, that is a question worth exploring. And the answer is what you might have already guessed. The blockchain is the answer.

Đó mới chính là câu hỏi đáng để suy ngẫm. Và hẳn bạn cũng đã đoán ra câu trả lời rồi. Đáp án là blockchain.

It is a method to maintain that register among ourselves instead of depending on someone else to do it for us.

Nó là một phương pháp duy trì bản kê đó giữa chúng ta mà không cần phụ thuộc vào một ai khác.

Are you still with me? Good. Because now, when several questions have started popping in your mind, we will learn how this distributed register works.

Bạn có theo kịp không? Tốt. Vì giờ, khi bạn đã nảy ra một vài câu hỏi trong đầu, chúng ta sẽ tìm hiểu xem bản kê phân tán này hoạt động thế nào.

So, how does it work?

Vậy nó hoạt động thế nào?

The requirement of this method is that there must be enough people who would like not to depend on a third-party. Only then this group can maintain the register on their own.

Phương thức này yêu cầu số người không muốn phụ thuộc vào bên thứ ba phải đủ lớn. Chỉ khi đó thì nhóm người này mới có thể tự mình duy trì bản kê.

“It might make sense just to get some Bitcoin in case it catches on. If enough people think the same way, that becomes a self-fulfilling prophecy.” — Satoshi Nakamoto in 2009

“Khi Bitcoin thật sự trở nên phổ biến, việc giữ một ít trong số chúng là hợp lí. Nếu những người có cùng cách nghĩ đó đủ lớn thì viễn cảnh đó sẽ tự biến thành sự thật.” – Satoshi Nakamoto, năm 2009

How many are enough? At least three. But for our example, we will assume ten individuals want to give up on banks or any other third-party that manages transactions. Upon mutual agreement, they have details of each other’s accounts all the time — without knowing the other’s identity.

Bao nhiêu người là đủ? Ít nhất phải là ba. Nhưng trong ví dụ dưới đây, chúng ta sẽ giả sử có mười cá nhân muốn từ bỏ ngân hàng hay bất kì bên thứ ba nào kiểm soát giao dịch. Khi đã đạt được sự đồng thuận lẫn nhau, những người này đã có thông tin chi tiết về tài khoản của người khác bất kể lúc nào mà lại không hề biết danh tính của nhau.

1. An empty folder

1. Thư mục trống

Everyone contains an empty folder with themselves to start with. As we’ll progress, all these ten individuals will keep adding pages to their currently empty folders. And this collection of pages will form the register that tracks the transactions.

Ban đầu, mọi người đều có riêng mình một thư mục trống. Khi mọi việc tiến triển, toàn bộ mười cá nhân này sẽ tiếp tục thêm nhiều trang vào thư mục trống hiện tại của họ. Và tập hợp các trang này sẽ hình thành nên bản kê, thứ sẽ theo dõi các giao dịch.

2. When a transaction happens

2. Khi giao dịch diễn ra

Next, everyone in the network sits with a blank page and a pen in their hands. Everyone is ready to write any transaction that occurs within the system.

Tiếp theo, mọi người trong mạng lưới ngồi lại với một trang trống và một cây bút trong tay. Tất cả đều sẵn sàng ghi lại bất kì giao dịch nào xảy ra bên trong hệ thống.

Now, if #2 wants to send $10 to #9.

Giờ, nếu người số 2 muốn chuyển $10 cho người số 9 thì sao.

To make the transaction, #2 shouts and tells everyone, “I want to transfer $10 to #9. So, everyone, please make a note of it on your pages.”

Để tiến hành giao dịch, số 2 hô lên và báo với mọi người rằng : “Tôi muốn chuyển $10 cho số 9. Vì vậy, mọi người hãy ghi chép lại việc này vào trang của mình nào.”

Everyone checks whether #2 has enough balance to transfer $10 to #9. If she has enough balance, everyone then makes a note of the transaction on their blank pages.

Mọi người kiểm tra xem số 2 có đủ tiền để chuyển $10 cho số 9 không. Nếu cô ta có đủ số dư, mọi người sau đó sẽ ghi lại phiên giao dịch vào trang trống của họ.

Giao dịch đầu tiên trong trang

The transaction is then considered to be complete.

Sau đó, phiên giao dịch được xem như hoàn tất.

 

 

3. Transactions continue happening

3. Giao dịch vẫn tiếp tục diễn ra

As the time passes, more people in the network feel the need to transfer money to others. Whenever they want to make a transaction, they announce it to everyone else. As soon as a person listens to the announcement, (s)he writes it on his/her page.

Khi thời gian dần trôi qua, có nhiều người hơn trong mạng lưới cảm thấy cần phải chuyển tiền cho người khác. Bất cứ khi nào muốn tiến hành giao dịch, họ thông báo việc đó cho những người còn lại. Ngay khi có người lắng nghe thông báo đó, anh ta/ cô ta sẽ điền phiên giao dịch đó vào trang của mình.

This exercise continues until everyone runs out of space on the current page. Assuming a page has space to record ten transactions, as soon as the tenth transaction is made, everybody runs out of the space.

Hành động này tiếp tục cho tới khi trang hiện tại của mọi người hết chỗ để viết. Giả sử một trang có thể ghi lại được 10 giao dịch thì ngay khi cả 10 giao dịch này được tiến hành, mọi người đều hết chỗ trống để viết.

 

It’s time to put the page away in the folder and bring out a new page and repeat the process from the step 2 above.

Đây là thời điểm loại bỏ trang đó trong thư mục rồi mang ra một trang mới và tiếp tục quy trình từ bước 2 trở đi.

4. Putting away the page

4. Loại bỏ một trang

Before we put away the page in our folders, we need to seal it with a unique key that everyone in the network agrees upon. By sealing it, we will make sure that no one can make any changes to it once its copies have been put away in everyone’s folder — not today, not tomorrow and not even after a year. Once in the folder, it will always stay in the folder — sealed. Moreover, if everyone trusts the seal, everyone trusts the contents of the page. And this sealing of the page is the crux of this method.

Trước khi loại bỏ một trang ra khỏi thư mục của mình, chúng ta cần phải “niêm phong” nó với một “con dấu đặc biệt” mà mọi người trong mạng lưới đều đồng ý. Bằng cách niêm phong nó, chúng ta sẽ đảm bảo rằng không ai có thể thay đổi được nội dung bên trong một khi bản sao chép của nó đã được loại bỏ khỏi thư mục của mọi người – không phải vào ngày hôm nay, ngày mai hay thậm chí là sau đó một năm. Một khi đã ở trong thư mục, nó sẽ luôn luôn ở đó – bị niêm phong lại. Hơn nữa, nếu mọi người đều tin tưởng vào dấu niêm, họ sẽ đặt niềm tin của mình vào nội dung bên trong trang đó. Và cách niêm phong trang như vậy chính là “mấu chốt” của phương thức này.

[Jargon Box] It is called ‘mining’ on the page to secure it, but for the simplicity of it, we’ll keep calling it ‘sealing.’

[Jargon Box] Nó được gọi là hoạt động “đào” ở trang đó để cố định nó lại, nhưng để đơn giản, chúng ta sẽ tiếp tục gọi việc này là “niêm phong”.

Earlier the third-party/middleman gave us the trust that whatever they have written in the register will never be altered. In a distributed and decentralized system like ours, this seal will provide the trust instead.

Trước đây, bên thứ ba khiến chúng ta tin tưởng rằng bất cứ thứ gì họ ghi vào bản kê đều không thể nào thay đổi được. Thay vì vậy, trong hệ thống phân quyền phân tán như của chúng ta thì dấu niêm này sẽ là thứ đảm bảo niềm tin của các bên.

Interesting! How do we seal the page then?

Thật thú vị! Vậy làm cách nào để niêm phong trang đó lại?

Before we learn how we can seal the page, we need to know how the seal works, in general. And as a pre-requisite to it is learning about something that I like to call…

Trước khi tìm hiểu cách thức niêm phong một trang, chúng ta cần phải nắm rõ cách thức chung mà dấu niêm hoạt động. Và điều tiên quyết là phải nắm rõ một thứ mà tôi hay gọi là …

The magic machine

Cỗ máy kì diệu

Imagine a machine surrounded by thick walls. If you send a box with something inside it from the left, it will spit out a box containing something else.

Thử tưởng tượng một cỗ máy bị tường dày bao bọc xung quanh. Nếu bạn gửi một hộp chứa thứ gì đó bên trong từ bên trái, nó sẽ cho ra một hộp chứa thứ khác.

[Jargon Box] This machine is called ‘Hash Function,’ but we aren’t in a mood to be too technical. So, for today, these are ‘The Magic Machines.’

[Jargon Box] Cỗ máy này được gọi là ‘hàm hash’, nhưng chúng ta không muốn đề cập quá nhiều về kĩ thuật. Cho nên, chúng là những ‘cỗ máy kì diệu’.

Suppose, you send the number 4 inside it from the left, we’d find that it spat out the following word on its right: ‘dcbea.’

Giả sử, bạn gửi số 4 vào cỗ máy từ phía bên trái, chúng ta thấy rằng nó sẽ cho ra một chuỗi theo sau phía bên phải: ‘dcbea’.

How did it convert the number 4 to this word? No one knows. Moreover, it is an irreversible process. Given the word, ‘dcbea,’ it is impossible to tell what the machine was fed on the left. But every time you’d feed the number 4 to the machine, it will always spit out the same word, ‘dcbea.’

Làm sao mà nó chuyển số 4 sang dãy kí tự này? Không ai biết hết. Hơn nữa, nó là quá trình không thể đảo ngược. Với chuỗi ‘dcbea’ này, không thể biết được thứ được đưa vào phía bên trái cỗ máy là cái gì. Nhưng mỗi lần bạn đưa số 4 vào cỗ máy, nó sẽ luôn luôn cho ra cùng một chuỗi, ‘dcbea’.

hash(4) == dcbea

Let’s try sending in a different number. How about 26?

Hãy thử gửi một số khác. Số 26 thì sao?

hash(26) == 94c8e

We got ‘94c8e’ this time. Interesting! So, the words can contain the numbers too.

Lần này chúng ta có ‘94c8e’. Thật thú vị! Vậy là chuỗi còn chứa cả các con số nữa.

What if I ask you the following question now:

Nếu giờ tôi đặt cho bạn một câu hỏi như sau:

“Can you tell me what should I send from the left side of the machine such that I get a word that starts with three leading zeroes from the right side of it? For example, 000ab or 00098 or 000fa or anything among the others.”

“Bạn có thể cho tôi biết thứ tôi nên gửi từ phía bên trái cỗ máy để tôi có thể nhận được một chuỗi bắt đầu bằng ba số 0 ở phía bên phải? Ví dụ, 000ab hoặc 00098 hoặc 000fa hoặc bất kì thứ nào khác.”

 

Think about the question for a moment.

Thử suy nghĩ câu hỏi này một chút xem.

I’ve told you the machine has a property that we cannot calculate what we must send from the left after we’re given the expected output on the right. With such a machine given to us, how can we answer the question I asked?

Tôi đã bảo bạn rằng cỗ máy này có đặc tính là chúng ta không thể tính toán thứ cần phải gửi vào phía bên trái sau khi nhận được giá trị đầu ra mong đợi ở phía bên phải. Với một cỗ máy như vậy, làm sao chúng ta có thể trả lời câu hỏi mà tôi đã đặt ra?

I can think of one method. Why not try every number in the universe one by one until we get a word that starts with three leading zeroes?

Tôi có thể nghĩ tới một phương pháp. Tại sao không thử mọi số trên vũ trụ này, từng số một, cho tới khi chúng ta nhận được một chuỗi bắt đầu với ba chữ số 0?

 

Being optimistic, after several thousand attempts, we’ll end up with a number that will yield the required output on the right.

Lạc quan là, sau hàng ngàn phép thử, cuối cùng chúng ta cũng tìm được con số thoả mãn yêu cầu giá trị đầu ra phía bên phải.

It was extremely difficult to calculate the input given the output. But at the same time, it will always be incredibly easy to verify if the predicted input yields the required output. Remember that the machine spits out the same word for a number every time.

Cực kì khó để tính giá trị đầu vào với một giá trị đầu ra cho trước. Nhưng song song đó, lại luôn rất dễ để xác minh liệu giá trị đầu vào có tạo được giá trị đầu ra được yêu cầu không. Hãy nhớ rằng với cùng một số, cỗ máy này sẽ cho ra cùng một chuỗi mọi lúc.

How difficult do you think the answer is if I give you a number, say 72533, and ask you the question, “Does this number, when fed into the machine, yield a word that starts with three leading zeroes?”

Bạn nghĩ câu trả lời sẽ khó như thế nào nếu tôi cho bạn một con số, là 72533, và hỏi bạn rằng, “Liệu số này, khi được đưa vào cỗ máy, có cho ra chuỗi bắt đầu với ba chữ số 0?

All you need to do is, throw the number in the machine and see what did you get on the right side of it. That’s it.

Tất cả những gì bạn cần làm là đưa số đó vào cỗ máy và xem thử thứ bạn nhận được ở phía bên phải. Vậy đó.

The most important property of such machines is that — “Given an output, it is extremely difficult to calculate the input, but given the input and the output, it is pretty easy to verify if the input leads to the output.”

Đặc tính quan trọng nhất của những cỗ máy như vậy là – “Với một giá trị đầu ra cho trước, rất khó để tính toán giá trị đầu vào, nhưng với giá trị đầu vào và đầu ra cho trước, cực kì dễ để xác minh liệu giá trị đầu vào có dẫn tới được giá trị đầu ra hay không.”

We’ll remember this one property of the Magic Machines (or Hash Functions) through the rest of the post:

Chúng ta sẽ nhớ đặc tính này của Cỗ máy kì diệu (hay hàm Hash) xuyên suốt bài viết này:

Given an output, it is extremely difficult to calculate the input, but given an input and output, it is pretty easy to verify if the input leads to the output.

“Với một giá trị đầu ra cho trước, rất khó để tính toán giá trị đầu vào, nhưng với giá trị đầu vào và đầu ra cho trước, cực kì dễ để xác minh liệu giá trị đầu vào có dẫn tới được giá trị đầu ra hay không.”

How to use these machines to seal a page?

Làm cách nào để cỗ máy này niêm phong được một trang?

We’ll use this magic machine to generate a seal for our page. Like always, we’ll start with an imaginary situation.

Chúng ta sẽ sử dụng cỗ máy kì diệu này để tạo một dấu niêm lên trang của chúng ta. Như thường lệ, chúng ta sẽ bắt đầu với một tình huống tưởng tượng.

Imagine I give you two boxes. The first box contains the number 20893. I, then, ask you, “Can you figure out a number that when added to the number in the first box and fed to the machine will give us a word that starts with three leading zeroes?

Thử tưởng tượng rằng tôi cho bạn hai chiếc hộp. Cái thứ nhất chứa số 20893. Sau đó, tôi hỏi bạn, “Liệu bạn có thể tìm được số nào mà khi được cộng với số ở hộp thứ nhất rồi đưa vào cỗ máy sẽ cho ra một chuỗi bắt đầu bằng ba chữ số 0?

This is a similar situation as we saw previously and we have learned that the only way to calculate such a number is by trying every number available in the entire universe.

Đây là một tình huống tương tự trước đó và chúng ta đã học được rằng cách duy nhất để tính toán con số như vậy là thử mọi số có thể trong toàn vũ trụ.

After several thousand attempts, we’ll stumble upon a number, say 21191, which when added to 20893 (i.e. 21191 + 20893 = 42084) and fed to the machine, will yield a word that satisfies our requirements.

Sau hàng ngàn phép thử, chúng ta tình cờ bắt gặp con số 21191, là số mà khi được cộng với 20893 (21191 + 20893 = 42084) và được đưa vào cỗ máy,  sẽ cho ra chuỗi thoả mãn yêu cầu.

In such a case, this number, 21191 becomes the seal for the number 20893. Assume there is a page that bears the number 20893 written on it. To seal that page (i.e. no one can change the contents of it), we will put a badge labeled ‘21191’ on top of it. As soon as the sealing number (i.e. 21191) is stuck on the page, the page is sealed.

Trong trường hợp như vậy, con số này, 21191 trở thành dấu niêm cho số 20893. Giả sử có một trang trong đó số 20893 được viết. Để niêm phong trang này lại (không ai có thể thay đổi nội dung của nó), chúng ta sẽ đặt một huy hiệu với nhãn ‘21191’ ở bên trên. Ngay khi số niêm (21191) được đính vào trang, trang đó sẽ được niêm phong.

 

[Jargon Box] The sealing number is called ‘Proof Of Work,’ meaning that this number is the proof that efforts had been made to calculate it. We are good with calling it ‘sealing number’ for our purposes.

[Jargon Box] Số niêm được gọi là ‘Bằng chứng công việc’, có nghĩa là con số này là bằng chứng cho nỗ lực tính toán ra nó. Vì mục đích của chúng ta, cũng ổn khi gọi nó là ‘số niêm’.

If anyone wants to verify whether the page was altered, all he would have to do is — add the contents of the page with the sealing number and feed to the magic machine. If the machine gives out a word with three leading zeroes, the contents were untouched. If the word that comes out doesn’t meet our requirements, we can throw away the page because its contents were compromised, and are of no use.

Nếu ai đó muốn xác thực rằng liệu trang này có bị thay đổi gì hay không, tất cả những gì anh ta phải làm là – cộng nội dung trong trang đó với số niêm và đưa vào cỗ máy kì diệu. Nếu cỗ máy cho ra một chuỗi bắt đầu bằng ba chữ số 0 thì nội dung bên trong chưa bị động vào. Nếu chuỗi cho ra không thoả yêu cầu, chúng ta có thể vứt bỏ trang đó bởi vì nội dung của nó bị xâm nhập và không có giá trị sử dụng.

We’ll use a similar sealing mechanism to seal all our pages and eventually arrange them in our respective folders.

Chúng ta sẽ sử dụng cơ chế niêm phong tương tự để niêm lại toàn bộ trang của mình và sau đó sắp xếp chung vào thư mục của chúng ta.

Finally, sealing our page…

Cuối cùng, niêm phong trang của chúng ta…

To seal our page that contains the transactions of the network, we’ll need to figure out a number that when appended to the list of transactions and fed to the machine, we get a word that starts with three leading zeroes on the right.

Để niêm phong trang của mình, thứ chứa các giao dịch bên trong mạng lưới, chúng ta sẽ cần phải tìm ra một số mà khi được bổ sung vào danh sách các giao dịch và đưa vào cỗ máy thì chúng ta sẽ nhận được chuỗi bắt đầu với ba chữ số 0 ở đầu bên phải.

Note: I have been using the phrase ‘word starting with three leading zeroes’ only as an example. It illustrates how Hashing Functions work. The real challenges are much more complicated than this.

Lưu ý: Tôi chỉ đang sử dụng cụm ‘chuỗi bắt đầu với ba chữ số 0’ như một ví dụ. Nó minh hoạ cho cách mà hàm Hash hoạt động. Thách thức thực sự còn phức tạp hơn thế này nhiều.

Once that number is calculated after spending time and electricity on the machine, the page is sealed with that number. If ever, someone tries to change the contents of the page, the sealing number will allow anyone to verify the integrity of the page.

Một khi con số đó được tính toán sau khi tiêu tốn thời gian và điện năng vào cỗ máy, trang được niêm phong lại cùng nó. Nếu như, có ai đó cố thay đổi nội dung của trang đó, số niêm sẽ cho phép bất kì ai đều có thể xác minh tính toàn vẹn của trang.

Now that we know about sealing the page, we will go back to the time when we had finished writing the tenth transaction on the page, and we ran out of space to write more.

Giờ khi đã biết cách niêm phong một trang, chúng ta sẽ quay lại thời điểm hoàn tất viết 10 giao dịch trong một trang, và chúng ta hết chỗ để viết tiếp.

As soon as everyone runs out of the page to write further transactions, they indulge in calculating the sealing number for the page so that it can be tucked away in the folder. Everyone in the network does the calculation. The first one in the network to figure out the sealing number announces it to everyone else.

Ngay khi mọi người hết chỗ để ghi những giao dịch tiếp theo, họ tiến hành tính toán số niêm cho trang đó nhằm giấu nó ra khỏi thư mục. Mọi người trong mạng lưới thực hiện việc tính toán. Người đầu tiên tìm ra số niêm sẽ thông báo nó với những người còn lại.

Immediately on hearing the sealing number, everyone verifies if it yields the required output or not. If it does, everyone labels their pages with this number and put it away in their folders.

Ngay sau khi nghe thấy số niêm, mọi người xác thực xem thử nó có tạo giá trị đầu ra được yêu cầu hay không. Nếu có, mọi người dán nhãn con số đó lên trang của mình và loại bỏ nó ra khỏi thư mục của họ.

But what if for someone, say #7, the sealing number that was announced doesn’t yield the required output? Such cases are not unusual. The possible reasons for this could be:

Nhưng nếu đối với ai đó, ví dụ như người số 7, thì số niêm được thông báo chưa thoả giá trị đầu ra yêu cầu?

  • He might have misheard the transactions that were announced in the network
  • Anh ta có thể đã nghe nhầm giao dịch được thông báo trong mạng lưới
  • He might have miswritten the transactions that were announced in the network
  • Anh ta có thể đã viết nhầm giao dịch được thông báo trong mạng lưới
  • He might have tried to cheat or be dishonest when writing transactions, either to favor himself or someone else in the network
  • Anh ta có thể đã thử gian lận hoặc không trung thực khi ghi xuống các giao dịch, nhằm có lợi cho bản thân anh ta hoặc một ai đó khác trong mạng lưới

No matter what the reason is, #7 has only one choice — to discard his page and copy it from someone else so that he too can put it in the folder. Unless he doesn’t put his page in the folder, he cannot continue writing further transactions, thus, forbidding him to be part of the network.

Dù lí do có là gì đi nữa thì người số 7 chỉ có duy nhất một lựa chọn – loại bỏ trang của mình và sao chép nó từ một người khác, nhờ vậy mà anh ta cũng có thể đặt nó vào thư mục. Khi chưa đặt trang của mình vào thư mục, anh ta không thể tiếp tục ghi các giao dịch tiếp theo, vì vậy, nó cấm anh ta trở thành một phần của mạng lưới.

Whatever sealing number the majority agrees upon, becomes the honest sealing number.

Bất cứ số niêm nào được đa số đồng ý đều trở thành số niêm trung thực.

Then why does everyone spend resources doing the calculation when they know that someone else will calculate and announce it to them? Why not sit idle and wait for the announcement?

Vậy tại sao mọi người lại tốn công tính toán trong khi biết rằng một ai đó khác sẽ làm và thông báo nó cho họ? Tại sao không ngồi yên một chỗ mà đợi thông báo?

Great question. This is where the incentives come in the picture. Everyone who is the part of the Blockchain is eligible for rewards. The first one to calculate the sealing number gets rewarded with free money for his efforts (i.e. expended CPU power and electricity).

Một câu hỏi hay đấy. Đây là lúc mà các ưu đãi xuất hiện trong bức tranh. Mọi người, những ai là một phần của blockchain, đều có tư cách nhận thưởng. Người đầu tiên tính ra số niêm sẽ nhận được phần thưởng là một khoản tiền miễn phí cho nỗ lực của họ (ví dụ: tiêu tốn năng lượng của CPU và điện năng).

Simply imagine, if #5 calculates the sealing number of a page, he gets rewarded with some free money, say $1, that gets minted out of thin air. In other words, the account balance of #5 gets incremented with $1 without decreasing anyone else’s account balance.

Thử suy nghĩ một cách đơn giản, nếu người số 5 tính ra được số niêm của một trang, anh ta được thưởng một số tiền miễn phí, ví dụ như $1, được đúc từ thinh không. Nói cách khác, tài khoản của người số 5 được tăng thêm $1 mà không làm giảm số dư tài khoản của người khác.

That’s how Bitcoin got into existence. It was the first currency to be transacted on a Blockchain (i.e. distributed registers). And in return, to keep the efforts going on in the network, people were awarded Bitcoins.

Đó là cách mà Bitcoin ra đời. Nó là đồng tiền đầu tiên được giao dịch trên nền tảng blockchain (bản kê phân tán). Và ở chiều ngược lại, để duy trì nỗ lực trong mạng lưới, người ta được thưởng bằng Bitcoin. 

When enough people possess Bitcoins, they grow in value, making other people want Bitcoins; making Bitcoins grow in value even further; making even more people wanting Bitcoins; making them grow in value even further; and so on.

Khi có đủ người sở hữu Bitcoin, họ tăng giá trị -> người khác muốn Bitcoin -> giá trị của Bitcoin tăng hơn -> nhiều người hơn nữa thèm muốn Bitcoin -> giá trị của Bitcoin tăng hơn nữa; và cứ thế tiếp diễn.

The rewards make everyone keep working in the network.

Phần thưởng khiến mọi người tiếp tục hoạt động trong mạng lưới.

And once everyone tucks away the page in their folders, they bring out a new blank page and repeat the whole process all over again — doing it forever.

Và một khi mọi người lấy đi một trang trong thư mục của mình, họ mang ra một trang trống mới và lặp lại toàn bộ quá trình lần nữa – cứ thế mãi mãi.

[Jargon Box] Think of a single page as a Block of transactions and the folder as the Chain of pages (Blocks), therefore, turning it into a Blockchain.

[Jargon Box] Cứ nghĩ rằng một trang đơn lẻ là một khối giao dịch và thư mục là chuỗi các trang (khối), do đó, biến nó thành một blockchain.

And that, my friends, is how Blockchain works.

Và đó, bạn của tôi ơi, là cách mà blockchain hoạt động.

Except that there’s one tiny thing I didn’t tell you. Yet.

Ngoại trừ một thứ nho nhỏ mà tôi vẫn chưa nói cho bạn.

Imagine there are five pages in the folder already — all sealed with a sealing number. What if I go back to the second page and modify a transaction to favor myself? The sealing number will let anyone detect the inconsistency in the transactions, right? What if I go ahead and calculate a new sealing number too for the modified transactions and label the page with that instead?

Thử tưởng tượng có sẵn 5 trang trong một thư mục – tất cả đều được niêm phong bằng số niêm. Nếu tôi quay lại trang thứ hai và chỉnh sửa giao dịch để làm lợi cho bản thân thì sao? Số niêm sẽ cho phép bất cứ ai phát hiện sự không nhất quán trong các giao dịch, đúng chứ? Nếu tôi cũng tiếp tục tính toán ra số niêm mới cho các giao dịch được sửa đổi và dán nhãn nó vào trang thì sao?

To prevent this problem of someone going back and modifying a page (Block) as well as the sealing number, there’s a little twist to how a sealing number is calculated.

Để ngăn chặn vấn đề có ai đó quay lại và chỉnh sửa một trang (block) cũng như số niêm, có một chút “xoắn” về cách mà số niêm được tính toán.

Protecting modifications to the sealing numbers

Ngăn chặn chỉnh sửa số niêm

Remember how I told you that I had given you two boxes — one containing the number 20893 and another empty for you to calculate? In reality, to calculate the sealing number in a Blockchain, instead of two boxes, there are three — two pre-filled and one to be calculated.

Hãy nhớ lại tôi đã nói với bạn như thế nào về 2 chiếc hộp – một cái chứa số 20893 và cái còn lại rỗng đang chờ bạn tính toán? Trên thực tế, để tính toán số niêm trong một blockchain, thay vì có hai hộp, có tới ba – hai hộp được điền trước và một cái dùng để tính toán.

And when the contents of all those three boxes are added and fed to the machine, the answer that comes out from the right side must satisfy the required conditions.

Và khi nội dung của toàn bộ ba hộp được cộng lại và đưa vào cỗ máy, đáp án xuất hiện phía bên phải phải thoả mãn các điều kiện cho trước.

We already know that one box contains the list of transactions and one box will contain the sealing number. The third box contains the output of the magic machine for the previous page.

Chúng ta đã biết rằng một hộp chứa danh sách các giao dịch và một hộp chứa số niêm. Hộp thứ ba chứa giá trị đầu ra của cỗ máy kì diệu đối với trang trước.

With this neat little trick, we have made sure that every page depends on its previous page. Therefore, if someone has to modify a historical page, he would also have to change the contents and the sealing number of all the pages after that, to keep the chain consistent.

Với thủ thuật nhỏ gọn này, chúng ta đã đảm bảo được rằng mọi trang đều phụ thuộc vào trang trước nó. Do đó, nếu một ai đó muốn chỉnh sửa lịch sử của một trang, anh ta sẽ phải thay đổi nội dung và số niêm của toàn bộ trang phía sau để chuỗi được nhất quán.

If one individual, out of the ten we imagined in the beginning, tries to cheat and modify the contents of the Blockchain (the folder containing the pages with the list of transactions), he would have to adjust several pages and also calculate the new sealing numbers for all those pages. We know how difficult it is to calculate the sealing numbers. Therefore, one dishonest guy in the network cannot beat the nine honest guys.

Nếu một cá nhân, nằm trong số 10 người chúng ta tưởng tượng lúc ban đầu, cố tình gian lận và chỉnh sửa nội dung của blockchain (thư mục chứa các trang cùng với danh sách các giao dịch), anh ta phải thay đổi nhiều trang và cũng phải tính toán nhiều số niêm cho toàn bộ chúng. Chúng ta biết rõ để tính toán ra số niêm khó khăn thế nào. Do đó, 1 người không trung thực trong mạng lưới không thể đánh bại được 9 người trung thực kia. 

What will happen is, from the page the dishonest guy tries to cheat, he would be creating another chain in the network, but that chain would never be able to catch up with the honest chain — simply because one guy’s efforts and speed cannot beat cumulative efforts and speed of nine. Hence, guaranteeing that the longest chain in a network is the honest chain.

Thứ sẽ xảy ra là, từ cái trang mà người không trung thực đó gian lận, anh ta lại tạo ra một chuỗi khác trong mạng lưới nhưng chuỗi đó lại không bao giờ bắt kịp chuỗi thực – đơn giản là bởi nỗ lực và tốc độ của một người không thể đánh bại được nỗ lực và tốc độ tích luỹ của chín người kia. Vì vậy, chắc chắn rằng chuỗi dài nhất trong mạng lưới là chuỗi thực.

Chuỗi dài nhất là chuỗi thực.

When I told you that one dishonest guy cannot beat nine honest guys, did it ring any bell in your head?

Khi tôi nói với bạn rằng một người không trung thực không thể đánh bại chín người trung thực, liệu có hồi chuông nào vang lên trong đầu bạn không?

What if, instead of one, six guys turn dishonest?

Nếu như, thay vì một, thì lại có sáu người không trung thực thì sao?

In that case, the protocol will fall flat on its face. And it is known as “51% Attack”. If the majority of the individuals in the network decides to turn dishonest and cheat the rest of the network, the protocol will fail its purpose.

Đối với trường hợp đó, giao thức sẽ “ngã sấp mặt”. Và nó được biết đến là “tấn công 51%”. Nếu đa số các cá nhân trong mạng lưới quyết định trở nên không trung thực và gian lận với phần còn lại thì bản thân giao thức đã thất bại trong việc đạt được mục đích ban đầu.

And that’s the only vulnerable reason why Blockchains might collapse if they ever will. Know that it is unlikely to happen, but we must all know the vulnerable points of the system. It is built on the assumption that the majority of a crowd is always honest.

Và đó là nguyên nhân duy nhất mà Blockchain sẽ sụp đổ nếu chuyện đó xảy ra. Dù biết rằng việc đó không thể nào xảy ra được, nhưng chúng ta cũng đều phải biết điểm yếu của hệ thống. Nó được thiết lập dựa trên giả thiết rằng phần đông luôn trung thực.

And that, my friends, is all there is about Blockchains. If you ever find someone feeling left behind and wondering, “WTF is the Blockchain?” you know where you can point them to.

Và đó, bạn của tôi ơi, là toàn bộ những gì về Blockchain. Nếu bạn phát hiện một ai đó cảm thấy bị bỏ rơi và luôn tự hỏi “Blockchain là cái quái gì?” thì bạn biết nơi mà bạn chỉ cho họ rồi đấy. 

 

Trương Nhật Minh

Source: English Can Change Your Life

nhận xét: