Một câu hỏi đơn giản có thể đặt ra là: Nếu ta có một hệ thống/platform phục vu cho một business nào đó mà nó đủ sự tin cậy (trust) - tôi sẽ dùng từ “trust” để ngắn gọn hơn trong bài viết này - giữa các bên thì ta cần quái gì những thứ khác hỗ trợ, kiểu như blockchain chẳng hạn. Qua đó, một nhận định đơn giản rằng: blockchain sẽ phát huy tối đa khả năng của nó trong các business thiếu trust. Ngoài ra nói đến blockchain ta hay nhắc đến một term khác đó là “decentralized”. Tại sao blockchain lại phải là decentralization? Thực ra cũng chả ai khẳng định cái định nghĩa blockchain là nó phải được dùng trong các trường hợp trustless decentralization, tuy nhiên nếu ta dùng blockchain trong một usecase về centralization, kiểu như ứng dụng blockchain trong các hệ thống trusted centralization thì thà ta centralize cái database trong một trusted system với một API há chảng phải tốt hơn sao. Bởi vì centralization dần dần sẽ dẫn đến permissioning. Mà permissioing sẽ lại dẫn đến những hệ lụy xấu như độc quyền, độc tài, mất tính bảo mật cá nhân,etc. Cái này ta sẽ từ từ làm sáng tỏ sau. Ngoài ra đồng bộ hóa một local read-only database sẽ rẻ hơn rất nhiều so với việc ứng dụng blockchain. Do đó, ta dễ dàng nhận thấy rằng, blockchain sẽ phát huy cao nhất đúng ý niệm của nó nếu ta nhìn nó dưới khía cạnh của trustless decentralization. Và nói một cách gay gắt hơn thì blockchain sẽ ko phải là blockchain nếu nó không phải là một trustless decentralization.
Vậy, điều này có nghĩa là gì? Nghĩa là ta cần phải implement ý niệm blockchain dưới dạng một hình thể decentralized và nó được phục vụ trong môi trường trustless. Bitcoin là một trong những ví dụ điển hình. Trước khi lan man tiếp, tôi nghĩ ta phải cần làm rõ cái khái niệm “trustless”. Thế nào là “trustless”?
Trong đời sống hiện tại rõ ràng một xu hướng thế này: Sức mạnh/quyền lực (power) được dùng để thâu tóm quyền lực. Tức là nếu bạn càng có quyền thì bạn càng có khả năng có nhiều quyền hơn nữa :D. Giống như thời phong kiến, khi bạn làm vua, bạn có quyền hạn tuyệt đối, vua muốn làm gì cũng được, làm gì có cái gọi là quyền cá nhân của công dân khi đứng trước mặt vua. Nói nôm na thì quyền sẽ đẻ ra quyền. Và cái ý niệm “trustlessness” được đẻ ra là để chống lại sự tập trung quyền hạn.
Nghĩa là sao? Tức là ví dụ như chính phủ dựa trên quyền lực của nó, yêu cầu bạn phải tuân theo các luật lệ mặc dù chính phủ được xây dựng từ người mà dân bầu. Do đó, ta bắt buộc phải tin tưởng vào toàn bộ các dịch vụ, tiền tệ, etc. mà chính phủ mang lại (không thì chỉ có nước đi tù :D), và đương nhiên, chính phủ nào cũng thế và người dân nước nào cũng vậy. Tuy nhiên, “trustlessness” chính là một thế giới mà ta không bị ép buộc phải tin tưởng (trust) các thứ bên trên. Trong thế giới này, một bộ ban ngành sẽ phải thể hiện sự tin cậy cho dân chúng trước khi dân chúng đặt niềm tin vào đó. Và trong đó, thậm chí nếu ta ko tin thì ta vẫn có thể làm việc với họ và qua đó ta có thể có một bản lề để dần dần đặt niềm tin lên đó trong tương lai. “Trustlessness” nói đơn giản chính là việc tôi có thể làm việc với bạn mà không cần phải tin tưởng bạn. Centralization - tập trung hóa - chính là một biểu hiện của việc tập trung quyền lực. Một khi quyền lực được đặt vào một chỗ, một trung tâm, một vị trí thì các nhà “giao dịch” quyền lực sẽ lợi dụng nó để điều hành việc mua bán nào đó.
Qua đó, ta thấy rằng, “trustlessness” sẽ tạo cho người tham gia một thế giới/môi trường mà ở đó không ai ép buộc ai phải tin tưởng lẫn nhau, tuy nhiên họ hoàn toàn vẫn có thể giao dịch qua lại. Ở đó, quyền lực không bị tập trung, mà ngược lại phân tán, ai tham gia cũng bình đẳng ở một phương diện nào đó :D.
Okay, đến đây ta cùng nhau nhìn nhận blockchain dưới khái niệm trustless decentralization. Vậy làm thế nào để ta xây dựng được một trustless virtual decentralization? tôi dùng từ “virtual” vì rõ ràng mọi giao dịch đều diễn ra bằng việc dùng cryptocurrency - ta hay gọi là tiền aỏ. Thế giới của cryptocurrency là thế giới ảo, nhưng ledger hay sổ cái được lưu tại các node lại là thế giới thực, ta có thể nhìn thấy rõ ràng tại các node. Chính vì vậy, ta cần một phương thức, protocol để kết nối thế giới ảo này với thế giới thât, để làm sao tiền ảo này có thể mua bán và các giao dịch đều được ghi vào trong ledger của từng node trong thế giới thật? PoW (Proof of Work) là một protocol như thế. Tại sao lại là PoW mà ko phải PoS hay các protocol khác?
Trước khi trả lời câu hỏi này, tôi nghĩ ta cần nhắc lại trustless và blockchain ở đây là trustless virtual decentralization. Và chính vì “virtual” nên một trong những vấn đề quan trọng của thế giới ảo chính là việc theo dõi thời gian trôi qua. Tức là làm thế nào để ta biết được sự biến đổi về thời gian trong thế giới ảo, ta lấy cơ sở nào để tin vào việc đó? Tại sao lại như vậy, bởi vì mỗi một transaction process cần có thời gian chứng thực, rồi gán block mới vào blockchain. Cả quá trình chứng thực, sử dụng tiền ảo đều được thực hiện trong thế giới ảo. Và để ta tin rằng, các tác vụ trên thế giới ảo này được thực hiện hoàn hảo, đủ tin cậy, không gặp vấn đề về sec, etc. thì ta phải nắm được sự biến đổi về thời gian của các qúa trình này.
Liệu ta có thể tin vào một trusted clock system kiểu NTP hay không? Hmm, hẳn các bạn chơi game sẽ biết rằng, một số game kiểu Diablo hay MU gì gì đó ngày trước tôi cũng hay chơi, chúng ta hay có cái trò hack đồ. Thực ra cái trò hack đồ này về mặt bản chất tức là lợi dụng việc thay đổi system clock. Vì mỗi một món đồ sẽ được tham chiếu theo thời gian, tại một thời gian cụ thể, sẽ có các món đồ rơi ra. Các hacker chỉ đơn giản là hack cái system clock đó tới một thời gian cụ thể và cái món đồ đó cứ thế được rơi ra lặp đi lặp lại :D. Okay, tuy nhiên đây chỉ là game, nếu như việc sử dụng tiền trong các giao dịch mà dựa trên system clock thì chuyện gì sẽ xảy ra. Rất có thể rằng, một hacker như bạn sẽ làm loạn system clock gây ra việc ai đó là nạn nhân của bạn không thể nhìn thấy một vài giao dịch. Sau đó bạn có thể khai báo rằng tiền ảo của bạn chưa được dùng trong khi đó phần còn lại của thế giới thấy được số tiền đó đã được chuyển đến ví của nạn nhân của bạn và hàng hóa sẽ được chuyển đến cho bạn trong thế giới thực. Bằng thủ thuật như vậy, bạn có thể mua được rất nhiều hàng từ thế giới thực.
Qua đó ta thấy rằng, rất khó để đặt niềm tin vào một trusted system clock để xây dựng một trustless virtual system. Vậy ta phải tin vào gì? Ta “có thể” tin vào các định luật của vật lý, cụ thể là nhiệt động lực học. Định luật 2 của nhiệt động lực học “ý kiến” thế này: entropy của một hệ kín có thể tăng, nhưng không giảm. Đứng một góc nhìn nào đó, thì việc đo entropy chính là một cách để phân biệt sự biến đổi của thời gian giữa quá khứ và tương lai. Và đây chính là cái mà PoW tin vào. Đơn giản là vì việc tiêu thụ năng lượng chính là làm tăng entropy. Ta đặt việc tiêu thụ năng lượng này vào trong computation như CPU, RAM, etc. thì ta thấy được lượng nhiệt tỏa ra chính là cái làm tăng entropy. Điều này minh chứng một cách rõ ràng rằng, nếu các blockchain sử dụng PoW protocol, nó sẽ tiêu tốn rất nhiều năng lượng. Kết quả của cả một quá trình chứng thực (trong bitcoin chẳng hạn) tỏa ra một lượng nhiệt lớn từ các resources (CPU, RAM, etc.) hình thành nên một minh chứng cho việc thời gian thay đổi. PoW chính là một ví dụ nổi bật cho minh chứng trên.
Vậy phải chăng Bitcoin là một ví dụ điển hình cho cái gọi là trustless virtual decentralization? Những blockchain platform khác thì sao, thậm chí chúng còn cung cấp smart contract bên cạnh các coin cho giao dịch? Ethereum cho public hay Hyperledger cho private chẳng hạn?
Với quan điểm cá nhân hẹp hòi của mình, tôi nghĩ rằng bitcoin chính là đại diện hay nhất cho trustless virtual decentralization, là đại diện thể hiện mạnh mẽ nhất đến lúc này cho khái niệm blockchain. Thế tương lai của Ethereum, Hyperledger thì sao? Cá nhân tớ có một vài ngu ý thế này về Ethereum trước, sau đó sẽ đến Hyperledger nhé.
Ethereum:
Nói chung là tớ thực sự nể mấy chú Nga, họ giỏi, đồng nghiệp cũ cũng là một người tớ tự gọi là thầy cũng là một người Nga, thật sự có may mắn khi được làm việc với họ. Ngoài việc tư duy bá, họ uống bia với rượu như nước lã :d. Okay, quay lại vấn đề thì người sáng lập E// là một chú Nga: Vitalik Buterin, rất giỏi :D. Tuy nhiên, đã là người thì sẽ có lỗi, và chú Vitalik này cũng thế, E// cũng vậy. Một số ý kiến sau mà tớ cho rằng là yếu điểm của E//:
- Block size limit lớn
- SCRIPT là CPU-bound Turing-complete
- Kế hoạch chuyển lên sử dụng PoS thay vì PoW
- Vitalik Buterin chính là sự tập trung hóa trong việc phát triển E//
- Block size limit lớn
Ta nhận thấy rõ ràng rằng, E// đã được phát triển trong vòng 3 năm, tuy nhiên kích cỡ blockchain đã đạt đến mức 1Tb. Trong khi đó bitcoin thì là khoảng 190Gb trong vòng 9 năm tồn tại. Block size lớn dẫn đến 2 hậu quả như sau:
- Khó khăn hơn trong việc đồng bộ hóa E// fullnode so với Bitcoin fullnode. Chính vì vậy mà thay vào đó trong thực tế, hầu hết các dự án E// đều là SPV.
- Các miners cần nhiều connections hơn nữa để giải quyết vấn đề về việc có quá nhiều transactions chuyển đến (cái này là do latency chứ ko phải bandwidth). Điều này là giảm số lượng của miners dẫn đến khả năng về nguy cơ có ai đó đạt được 51% hashpower để kiểm soát toàn bộ E// network. Qua đó ta thấy rõ ràng rằng, vấn đề này dẫn đến khả năng centralization cao hơn, gây ra những hậu quả về mà tôi đã đề cập trước đây về centralization.
- CPU-bound Turing complete script.
Đây là một vấn đề khá là khó :d. Tôi nghĩ ta có thể đồng tình với nhau rằng “flexibility” càng cao thì đồng nghĩa với việc scope cho khả năng có bug càng lớn. Tức là khả năng xuất hiện bug trong hệ thống có thể xảy ra trong nhiều khu vực hơn trong một hệ thống. Nhắc đến bug trong E// thì ko thể không nhắc đến một bug kinh điển là devops199 khi mà ông này “lỡ tay” tiêu hủy 300M USD tiền ảo. E// có khả năng biểu thị phạm vi tính toán lớn hơn bitcoin rất nhiều cho nên đồng nghĩa với việc scope cho khả năng xuất hiện bug trong E// cũng lớn hơn nhiều lần. Sự cố devops199 là một ví dụ như vậy.
Tuy nhiên bug là một điều hiển nhiên trong thực tế, chả có cái gì hoàn hảo cả, vạn vật đều khiếm khuyết. Tuy nhiên, cái vấn đề to lớn ở đây chính là các blockchain (Bitcoin, E//) implementation đều gán liền với consensus algorithm - thuật toán đồng thuận. Thuật toán này không phải voting, nó là consensus nên nó sẽ phải trải dài trên toàn bộ blockchain network, không phải trong một nhóm hay một section cụ thể nào đó trong blockchain network. Và trong một thực thể tính toán lớn như E// thì khi bug được tìm thấy, gần như ko thể để vá khi mà bạn commit tiền của bạn vào trong network (sự cố devops199 cho thấy rõ ràng vấn đề này). Nếu một bug tương tự tìm thấy thì số tiền của bạn sẽ đơn giản là bị “mất”.
Và tất nhiên, E// đã rollback để giải quyết các sự cố trên. Tuy nhiên, tôn chỉ của E// ban đầu là “code is law” nhưng sau khi E// rollback thì đây chính là sự thể hiện của việc “Ethereum foundation is law”. Tức là lúc này, sự implementation của E// nằm trong tay của E// Foundation, tức là centralization. Trong Bitcoin, quy mô của script là nhỏ hơn, scope cho việc xuất hiện bug là thấp hơn. Nó cũng dễ dàng hơn cho việc fix các bug trong off-chain code - nó sử dụng on-chain code để enforcement, không phải execution - hơn là fix bug trong on-chain code. Offchain- đơn giản nghĩa là ít dữ liệu của người dùng hơn được lưu on-chain. Điều này sẽ làm cho blocksize nhỏ hơn và privacy sẽ tốt hơn. Về vấn đề off-chain code, ta sẽ nhắc đên Lightning Network cho Bitcoin sau.
Qua đó ta thấy được rằng, Turing complete không phải để thể hiện “sức mạnh” về khả năng tính toán, cái mà một hệ thống blockchain cần chính là sự tin cậy (đặc biệt trong tiền tệ). Mà E// đang chưa thể hiện được sự tin cậy, trong khi đó Bitcoin với việc tránh dùng Turing complete script đang cho thấy sự tin cậy cao hơn.
- Kế hoạch dùng PoS thay vì PoW.
Trong PoS, mọi thứ sẽ phải được thực hiện theo trình tự nhưng PoS không có khả năng để bảo vệ việc “rollback”. Vì đơn giản, ông nào tham gia network mà có nhiều stake (nói nôm na là cổ phần) hơn thì có quyển quyết hơn. Chính vì vậy mà transaction của bạn có thể không được thực hiện, tiền có thể ko đến được với bạn và bị rollback vì một stakeholder nào đó vì đơn giản hắn ta giàu hơn bạn :D. So sánh với PoW thì rollback rất khó, trong thực tế là gần như không thể nếu bạn không sở hữu hơn 50% hashrate.
PoS là một cái gì đó khá không hay, các blockchain platform sử dụng PoS phát hành token hay quá trình ICO của họ cũng sẽ thể hiện vấn đề này. Đây lại là một hình thái khác của cái gọi là “centralization”.
- Sự tập trung hóa trong việc phát triển E// và xoay quanh Buterin
Rõ ràng ta thấy rằng, chả ai biết SatoShi Nakamoto - ông tổ của Bitcoin là ai. Có thể rằng, Satoshi chỉ là một cái tên nào đó, là một ai đó vẫn đang đóng góp vào sự phát triển của bitcoin và tham gia cộng đồng phát triển bitcoin như là một người bình thường. Satoshi cũng là một người bình thường, và đương nhiên ông ý cũng có lỗi chứ. Và thực tế là gì, rất nhiều những vision cũ của Satoshi trong việc phát triển bitcoin đã ko còn được sử dụng. Bitcoin giờ thuộc về cộng đồng. Nhưng E// lại là khác, mọi thứ đều xoay quanh Buterin. Điều này lại một lần nữa cho thấy “centralization”.
Okay, ta đã bàn khá nhiều về Bitcoin và E//. Tuy nhiên blockchain là một ý niệm rộng, 2 thứ trên chỉ là một implementation trong lĩnh vực tiền ảo, còn có rất nhiều blockchain được phát triển cho các asset khác nữa. Bên cạnh đó, nhắc đến blockchain không thể nhăc đến một khái niệm hay ho: Smart contract. Rất nhiều người nói rằng, E// hay các public blockchain khác cung cấp smart contract nên người dùng có thể dễ dàng giao dịch mà ko cần bên thứ 3 chứng thực. Vậy smart contract là gì?
SMART CONTRACT: các bạn sẽ thấy rất rất nhiều khái niệm về smart contract trên mạng. Nhưng tôi muốn mở rộng hơn một chút. Sự xuất hiện của ngân hàng hay các platform về mua bán qua mạng ngoài việc giúp bạn mua hàng online thì ngoài ra nó bao hàm một ý nghĩa khác: Tức là tôi muốn nhận được tiền nếu tôi cung cấp dịch vụ cho bạn. Ta đơn giản hóa mọi việc đi, nếu bạn cung cấp một dịch vụ cho ai đó, bạn muốn CHẮC CHẮN rằng bạn sẽ được trả tiền khi họ dùng dịch vụ của bạn thì bạn cần một bên thứ 3 đảm bảo việc đó, và smart contract đơn giản nghĩa là vậy. Và các hoạt động như crowdfunding, ICO, DAO, etc. dưới góc nhìn nào đó cũng chính là việc: Tôi muốn được đảm bảo rằng tôi sẽ được trả tiền cho các dịch vụ của tôi. Nghĩa là sao: Tức là nếu tôi là người phát hành ICO, tôi hứa là tôi sẽ phát triển blockchain này nếu các bạn mua token vì tôi sẽ có vốn, công việc phát triển blockchain của tôi sẽ được trả tiền. Nó giống như đầu tư mạo hiểm vào trong các startup vậy. Và quả thực nó khá là mạo hiểm. Mà xét dưới ý niệm của blockchain thì làm gì có tư duy về ICO, nói hơi gay gắt tức là mấy cái trò ICO, DAO gì gì đó không phải là blockchain.
Bên cạnh đó, nếu chỉ cần cái gọi là “smart contract” - mang ý nghĩa đảm bảo về việc “tôi sẽ nhận được tiền nếu bạn dùng service của tôi” thì tư tưởng trong offchain là đủ. Tức là tôi chỉ cần mã hóa kết quả của một dịch vụ nào đó, yêu cầu một HTLC với encryption key, yêu cầu trả tiền bằng việc releasing cái key đó, thế là xong. Còn HTLC là gì thì mời các bạn search internet nhé :d. Bên cạnh đó, toàn bộ quá trình này sẽ không cần phải chạy trên (on) consensus layer mà chỉ cần chạy “on top” của consensus layer. Đây chính là hình thái về offchain.
Và đây, một trong những thứ hay ho trong cái sự vụ đảm bảo về việc sự tin cậy lẫn nhau bằng việc sử dụng smart contract chính là: Oracle problem. Khái niệm của nó ở đây:
An oracle is just a provider of data. An oracle gives smart contracts answers to questions about the world. In most cases, without an oracle supplying information, there would be no way for a smart contract to be able to know the things it needs to know in order to do its job.
https://medium.com/@DelphiSystems/the-oracle-problem-856ccbdbd14f
Okay, ta thấy được rằng, smart contract sẽ phải cần một nguồn thông tin đầu vào vô cùng tin cậy aka oracle solution. Tuy nhiên. để xây dựng một oracle solution thì quả thực khó. Bên cạnh đó, sự tương tác sẽ thế giới thực với thế giới ảo cũng không phải là nhiều. Thế cho nên nếu ta dùng smart contract mà không có một oracle solution thì smart contract trở lên vô nghĩa. Vì đơn giản rằng, ở ngoài kia có rất nhiều người muốn lừa tiền của bạn. Cho nên, cái ta cần là một phương thức nào đó để tạo oracle solution riêng cho mình, đưa các thông tin của bạn từ thế giới thực lên thế giới ảo và bạn có thể đóng giao dịch đơn phương nếu bạn cảm thấy đối tác bạn đang giao dịch có vấn đề. Những khía cạnh này thì Lightning network đã và đang phát triển.
Nhìn chung mà nói thì tôi nghĩ các bạn có thể tìm hiểu qua về những thứ mà tư tưởng của Lightning network mang lại, khá là hay ho.
Thế vậy, những ông permissioned blockchain như hyperledger thì sao? Liệu có đất diễn không? Cá nhân tôi nghĩ là nhiều là đằng khác :d. Tuy nhiên những ông này ta sẽ không xét vào chung khái niệm “blockchain” mà cái danh từ blockchain dành cho nó mang một màu sắc hơi hướng marketing :D. Đơn giản vì, ông nào tham gia cái permissioned blockchain đều biết lẫn nhau, họ sẽ tạo ra những “smart contract” cho từng business của họ. Việc ứng dụng “blockchain” ở đây chỉ đơn thuần là minh bạch hóa các thông tin trong business giữa các bên mà thôi. Thực ra không có nó các business vẫn hoạt động bình thường, các contract vẫn được ký, dữ liệu vẫn được lưu ở đâu đó, nhưng có điều là chúng dễ bị modified, số liệu đầu ra đầu vào qua mỗi khâu không minh bạch, chưa kể lại cần bên thứ 3 chứng thực, etc. Cho nên nếu ta ứng dụng “blockchain” ở đây với “smart contract” sẽ giảm thiểu các rủi ro cho các bên khi tham gia business.
Cho nên, các ông lớn ở các business khác nhau họ đã và đang xây dựng các nền tảng “blockchain” cho các business của họ. Ví dụ như Nokia có Sensing as a service - một nền tảng cho phép mua bán các dữ liệu về sensor và nó hiện đang là member của hyperledger. Tuy nhiên,như blog trước tôi có nói, việc xây dựng “blockchain” này không khó, nhưng liệu ai dám khẳng định, người xây các “blockchain” platform này cho các bạn sẽ ko tiết lộ thông tin của các bạn :D.
Nói tóm lại, hãy để blockchain đúng nghĩa là blockchain của nó - trustless decentralization. Việc nó có tồn tại được hay không thì phải xem sự chấp nhận của xã hội với một đồng tiền chung như Bitcoin. Điều này quả thực khó :d. Còn lại những platform nhằm phục vụ tính minh bạch trong thông tin hay ta còn gọi là permissioned blockchain thì sẽ nở rộ trong thời gian tới cho từng business :
Comments