Đoàn Chính Nghiêm

Ở đây bạn và tôi có thể gặp nhau về sở thích, cách sống và tư duy

Ethereum 2.0 – Siêu máy tính dùng chung của nhân loại

Mặc dù hiện tại version 2.0 của Ethereum vẫn còn nhiều tranh cãi, con đường đi vẫn còn nhiều chông gai. Một số vấn đề vẫn chưa chốt được giải pháp. Nhưng cộng đồng Ethereum vẫn tích cực thử-sai và tiến lên phía trước. Vấn đề Z chưa chốt giải pháp, nhưng cứ làm A, B, C cái đã, vừa làm vừa nghĩ, vừa điều chỉnh.

Tinh thần và phong cách làm việc của Ethereum rất giống với tinh thần khởi nghiệp của các startup, của những người trẻ. JUST DO IT.
(Trái ngược với sự bảo thủ và cố chấp của những ông già trong cộng đồng Bitcoin).

Điều này là dễ hiểu, vì lãnh tụ của Ethereum vẫn còn rất trẻ và vẫn chưa “mất tích”. Tinh thần của cộng đồng chính là sự thể hiện mở rộng (hay bản sao) của tinh thần người lãnh đạo (Giống như bất cứ công ty hay tổ chức “tập trung” nào.)
—-

Ethereum 2.0 hướng tới trở thành 1 siêu máy tính công khai, phi tập trung của nhân loại, với hàng nghìn, hàng chục nghìn bộ xử lý tính toán song song.
Đây là những gì mình kỳ vọng vào Ethereum 2.0 dựa trên những đánh giá về kỹ thuật:
  • Hiệu năng lớn: có thể lên đến 100k tps trong phase1.5. Và có thể lên đến hàng triệu tps (giao dịch xử lý được trong 1 giây) trong phase 2.
  • Với Ethereum WebAssembly (ewasm) thay thế cho EVM, có thể triển khai các smartcontract cực kỳ phức tạp, hiệu năng cao, gần như native.
  • Để lập trình ứng dụng Dapps trên Ethereum, Không chỉ solidity mà có thể sử dụng rất nhiều các ngôn ngữ lập trình khác như C, C++,C#, Rust,kotlin, swift, pascal,…..(chỉ cần biên dịch sang WebAssembly là có thể chạy được.
  • Phí giao dịch cực rẻ. Vì mạng có hiệu năng cực cao, nên sự cạnh tranh sẽ cực thấp, gần như là không có cạnh tranh.
  • Với shard chain, thì các node của ethereum có thể chạy dễ dàng trên các laptop cùi bắp, hay trên điện thoại.
Một tương lai KHẢ THI về mặt kỹ thuật, và là kỳ vọng của rất nhiều người.
Theo kế hoạch là chúng ta cần chờ 1,2 năm nữa. Nhưng tương lai thì khó nói trước điều gì. nhỉ.
Hãy đặt niềm tin và cổ vũ cho tinh thần của Ethereum.

Truy vết nguồn coin và “rửa coin” trên blockchain

Các giao dịch blockchain có thể truy vết được không?.
Câu trả lời là có và không.
Có đối với các giao dịch phổ thông mà chính các bạn vẫn hay sử dụng.
Không đối với các những người biết cách “rửa coin”.
—–
Vậy truy vết nguồn coin như thế nào.
Rất đơn giản, mọi giao dịch trên các public blockchain đều công khai, ai cũng có thể xem được. Tiền chuyển từ tài khoản nào sang tài khoản nào, vào lúc nào.
Mặc dù nó chỉ là các dãy số, chữ số vô nghĩa, người ta sẽ không thể biết ai là chủ nhân của các ví, cho đến khi…..bạn chuyển nó lên sàn để bán.
Lúc đó các sàn sẽ biết đó là ví của bạn, hoặc ít nhất liên đới đến bạn. Nếu tiền bẩn thì sàn cứ khóa tài khoản cho chắc cho đến khi lần ra các mối quan hệ, ai là người chuyển tiền cho bạn. Vì lợi ích, họ sẵn sàng cung cấp thông tin cho các cơ quan chức năng để bảo vệ chính họ.
Hình minh họa là biểu thị mô tả việc luân chuyển coin trong các tài khoản thông qua các giao dịch được trực quan hóa.
—–
Vậy có cách nào để rửa thật sạch, không thể bị truy vết hay không.
Câu trả lời là có.
Có 1 số Dapps phục vụ cho việc rửa tiền bằng cách chống truy vết.
Chống truy vết bằng cách nào?
  • Bạn có thể nạp vào smart contract 100 ETH bằng tài khoản A. Dapps sẽ cấp cho bạn 1 mã rút tiền.
  • Sau đó có thể rút 100 ETH về tài khoản B bằng cách nhập mã rút tiền vào.
  • Mấu chốt ở đây: Có cả trăm người nạp cùng số lượng 100 ETH và cũng rút cùng số lượng 100 ETH (trừ đi 1 khoản phí nhỏ).
    Trong đó có cả tiền sạch, có cả tiền bẩn, mọi thứ trộn lẫn vào nhau. Lúc ra thì tất cả đều có màu “trắng ngà”. Người ta sẽ không biết ai trong số hàng trăm ví rút tiền là tội phạm.
1 trong các Dapps phục vụ cho việc này là tornado.cash, hỗ trợ rửa tiền ETH, BNB, ngoài mức 100 ETH, 100 BNB thì có nhiều mức khác như 0.1, 1, 10 .
—–
Các dịch vụ như vậy gọi chung là Cryptocurrency tumbler hoặc cryptocurrency mixing service.
https://en.wikipedia.org/wiki/Cryptocurrency_tumbler
Bitcoin cũng có các dịch vụ tương tự. Nhưng không phải Dapps. Khi sử dụng các dịch vụ như vậy cũng cần chọn các dịch vụ uy tín (lừa đảo rất nhiều)
—–
Lưu ý: Post này chỉ nhằm mục đích chia sẻ kiến thức về blockchain và crypto, những thực tế đang diễn ra trên thế giới blockchain. Mình từ chối mọi trách nhiệm và rủi ro nếu bạn sử dụng các ví dụ, dẫn chứng được đưa ra trong bài viết.

Blockchain tưởng cao siêu hóa ra lại quen thuộc.

Với phần lớn dân IT và các lập trình viên, họ rất quen thuộc với khái niệm database. Đó là thứ mà các lập trình viên nhìn thấy và làm việc với nó hàng ngày.
Đã có nhiều bạn dân IT hỏi mình rằng các blockchain lưu trữ dữ liệu như thế nào, có phải mỗi block là 1 file đúng không.
Thực ra cấu trúc các “block nối tiếp nhau thành chuỗi” của blockchain nằm ở tầng “logic”. Còn việc lưu trữ dữ liệu thì đa phần các chain nổi tiếng vẫn sử dụng các database mà dân IT thường sử dụng thôi.
  • Bitcoin core: LevelDB (của google, lưu dạng key-value giống như memcache hay redis)
  • Ethereum’s Rust: rocksdb (fork ra từ LevelDB)
  • Go Ethereum, Ethereum C++, python: cũng LevelDB luôn
  • Stellar (và cả PI network mà rất nhiều bạn quan tâm): SQLite, PostgreSQL (cái này thì quá đỗi thân thuộc rồi).
Vậy, cấu trúc dữ liệu blockchain chỉ là mindset, là logic, là mô hình tổ chức dữ liệu, hay cao hơn đó là 1 TRIẾT LÝ.
Còn về công nghệ, nó vẫn là những thứ mà cả trăm ngàn lập trình viên ở Việt Nam sử dụng hàng ngày, chả có gì cao siêu cả.
Ngôn ngữ thì vẫn là C, C++, Golang, Python, …..
Database thì vẫn là SQL hay các key-value database,….
Về network thì vẫn là các kết nối TCP.
——
Trong lập trình, thì thứ quan trọng nhất không phải ngôn ngữ lập trình, không phải toán, không phải lý, mà chính là ý tưởng và kiến thức và tư duy về lĩnh vực mà phần mềm đang giải quyết.

Bài toán các vị tướng Byzantine – Giao thức đồng thuận BFT

Có lẽ mọi người hay nghe đến các giao thức đồng thuận PoS,DPoS nhiều hơn rất nhiều so với BFT, và có vẻ nó cũng dễ hiểu hơn.
Nhưng có 1 thực tế là BFT phổ biến thứ 2 chỉ sau PoW (Hiện tại có thể đã vượt lên cả PoW), vì BFT thường được sử dụng kết hợp với các giao thức khác như PoS, PoW,POA,… hay chỉ sử dụng mỗi BFT. Vậy BFT là gì và nó hoạt động như thế nào?
BFT là viết tắt của Byzantine Fault Tolerance. Nghĩa là “Khả năng chịu lỗi Byzantine”

ĐỂ HIỂU ĐƯỢC BFT, TRƯỚC HẾT, MÌNH SẼ NÓI VỀ NGUỒN GỐC CỦA CÁI TÊN NÀY.

Bài toán các vị tướng Byzantine được đưa ra bởi 3 nhà khoa học máy tính Leslie Lamport, Robert Shostak và Marshall Pease vào năm 1982.
Bài toán các vị tướng Byzantine miêu tả về một nhóm các vị tướng trong đội quân Byzantine (quân đội đế quốc Đông La Mã), tiến hành vây hãm 1 thành phố, mỗi tướng đóng quân tại 1 điểm khác nhau xung quanh thành phố này.
Các vị tướng cần trao đổi để đạt được đến 1 thỏa thuận về kế hoạch tác chiến.
Trong trường hợp đơn giản nhất, các vị tướng cần đạt được sự đồng thuận về việc nên tấn công hay rút lui. Nếu tấn công và để giành thắng lợi thì cần phần lớn các tướng cùng tấn công, nếu chỉ có 1 bộ phận nhỏ tấn tông thì họ sẽ thất bại vì lực lượng mỏng.
Các vấn đề chính của bài toán này là:
  • Nếu có 1 số tướng làm phản, gửi thông tin nhiễu loạn, không thống nhất đến các tướng khác.
    Ví dụ có 3 vị tướng, A muốn tấn công, B muốn rút lui. C làm phản, gửi thông điệp tấn công đến A, nhưng lại gửi thông điệp rút lui đến B
    ==>A tưởng là đa số (⅔) tấn công, có thể ăn chắc phần thắng⇒ tấn công
    Không ngờ khi ra trận thì có mỗi A⇒ Thất bại vì yếu thế hơn.
  • Người đưa tin bị bắt, nội dung thư bị sửa đổi.
  • Tướng này mạo danh tướng kia để gửi thông tin sai.
  • 1 vị tướng, 1 cánh quân bị tiêu diệt mà các bên còn lại không biết, nên cứ chờ.
Đó là vấn đề được đưa ra, và nó rất giống với các vấn đề về sự giao tiếp để đạt được sự đồng thuận giữa các node trong mạng lưới blockchain.
Trong các hệ thống blockchain, may mắn thay, có thể sử dụng chữ ký điện tử, nên sẽ không gặp phải vấn đề mạo danh, hay nội dung thông điệp bị sửa đổi. Vấn đề lớn nhất sẽ nằm ở vấn đề “gian lận”, hay “làm phản”, hay bị lỗi
—–
Để giải quyết vấn đề của các vị tướng Byzantine, PoW cũng là 1 giải pháp.

NAKAMOTO SATOSHI CŨNG TỪNG TRỰC TIẾP GIẢI THÍCH VỀ CÁCH BITCOIN DÙNG POW ĐỂ GIẢI QUYẾT BÀI TOÁN CÁC VỊ TƯỚNG BYZANTINE TRONG MỘT EMAIL GỬI ĐI NGÀY 14/11/2008. XEM TẠI ĐÂY HTTPS://SATOSHI.NAKAMOTOINSTITUTE.ORG/…/CRYPTOGR…/11/…

Ngoài ra thì có rất nhiều cách khác nữa để giải quyết bài toán này, trong đó có 1 phương pháp gọi là **BFT (Byzantine Fault Tolerance). **
BFT có rất nhiều biến thể, như PBFT, rBFT,IBFT,,… vân vân và mây mây.
Trong phạm vi bài này, mình xin phép tóm gọi lại mindset của giao thức đồng thuận BFT như sau:
  • Trong số các node blockchain, có những node đặc biệt tham gia vào việc tạo block và bỏ phiếu cho các block, gọi là các validator.
  • Các validator thay phiên nhau tạo các block (khi đến lượt thì tạo, và tạo phát ăn luôn, không có độ khó như PoW). Tạo xong thì đề xuất cho hội đồng các validator để vote.
  • Mục tiêu là hệ thống vẫn có thể tiếp tục hoạt động bình thường nếu có tối đa 1/3 validator bị lỗi,hoặc gian lận
    (cụ thể là f validator trong tổng số **3f+1 validator, **hoặc có 1 số biến thể như 5f+1,7f+1)
  • Toàn mạng lưới sẽ chấp nhận khi có **tối thiểu ⅔ **tổng số node **đồng ý **
    (cụ thể là >= 2f+1 trong tổng số 3f+1 validator). Có 1 số biến thể như 5f+1, 7f+1,..)
  • Nếu 1 block không đạt được đồng thuận( không đạt ⅔, hay 2f+1) thì bỏ qua và chuyển sang node khác tạo block mới
  • Thông thường BFT sẽ chia làm 3 round:
  • 1: Propose (Đề xuất): 1 validator khi đến lượt sẽ đề xuất 1 khối mới, và gửi nó đến tất cả các validator còn lại.
  • 2: Pre-vote: Các validator cùng bỏ phiếu về việc chuẩn bị commit cho block (vote lần 1).
  • **3. Pre-commit: **Các validator cùng bỏ phiếu về việc đồng ý cho block này được đưa vào chain (commit). Nếu bước này OK thì block sẽ được phát tán ra toàn mạng lưới(commit) cho các node bình thường. Và các validator bắt đầu quy trình tạo block mới.
Chắc sẽ có nhiều bạn thắc mắc, tại sao lại phải vote 2 lần? Câu trả lời là đối với các hệ thống 3f+1 node(chịu được tối đa f node lỗi) thì 1 vòng là không đủ an toàn. Nếu ở các dung sai thấp hơn(như 5f+1 chẳng hạn) thì có thể chỉ cần 1 lần đề xuất và 1 lần vote, Chi tiết có thể mình sẽ viết 1 bài chuyên sâu khác.
**Ưu điểm của BFT: **
  • Đó là tiết kiệm năng lượng, không cần đào, và khả năng chịu lỗi cao.
Nhược điểm:
  • Với mỗi block mới thì hội đồng các validator cần đến 3 vòng giao tiếp ⇒ Giao tiếp quá nhiều==> khi số lượng validator quá nhiều thì quá trình tạo 1 block sẽ bị chậm đi.
  • Nhưng nếu số lượng validator quá ít thì lại không đảm bảo về tính phi tập trung.
BFT kết hợp với các giao thức đồng thuận khác như thế nào:
Ví dụ kết hợp với PoS:
  • Tỷ lệ số block được phép đề xuất dựa trên tỷ lệ cổ phần
  • Trọng số của phiếu cầu dựa trên tỷ lệ cổ phần. thay vì ⅔ số validator thì là ⅔ tổng số cổ phần.
  • Nguồn: Diễn đàn Phổ cập Blockchain

CBDC (Central Bank Digital Currency) Tiền kỹ thuật số của Ngân hàng Trung Ương

CBDC dưới góc nhìn của dân dev.
—
Nếu CBDC được đưa vào sử dụng, thì nên chọn 1 blockchain có đủ các tiêu chí sau:
  • Blockchain public
  • Số lượng node cần > 200
  • Phí giao dịch nên đủ nhỏ(<0.1USD)
  • Thời gian giao dịch đủ nhanh (<20s)
  • Transaction per second: >50.000 TPS
(ETH 2.0 có lẽ sẽ phù hợp)
Nếu triển khai dạng token thì CBDC có thể làm gì (Khả thi về mặt kỹ thuật)
  • Khóa/mở khóa tài khoản nghi vấn của tội phạm
  • Có thể yêu cầu KYC (sử dụng whitelist trong contract)
  • Mặc định thu thuế theo tỷ lệ % trên mỗi giao dịch bằng smartcontract
  • Có thể áp dụng các mức thuế khác nhau đối với các loại tài khoản khác nhau
  • Có thể phát hành thêm hoặc hủy bớt theo nhu cầu, bất cứ lúc nào.
  • Có thể sử dụng cơ chế phi tập trung, hoặc phân cấp trong việc quản trị CBDC . Ví dụ như hội đồng 12 ví, đủ 10/12 đồng ý thì mới được in thêm, hoặc hủy, diễn ra hoàn toàn trên smartcontract.
Lợi ích của CBDC :
  • Tránh thất thu thuế
  • Minh bạch các khoản thu và chi
  • Chuyển tiền xuyên quốc gia tiện lợi, nhanh, rẻ
  • Tăng cường lượng ngoại hối
  • Có thể quản trị nguồn tiền, lượng tiền chặt chẽ hơn theo cơ chế hội đồng bỏ phiếu cho các quyết định quan trọng.
  • Chuyển giao quyền lực đơn giản hơn chỉ bằng cách sử dụng smartcontract
  • Trader, holder có thể cashout coin ra tiền pháp định(CBDC) ngay tập tức, tiện dụng thông qua swap trên các sàn DEX
  • Abc, xyz, mình dốt kinh tế, mời các bạn bổ sung.
  • Nguồn: Diễn đàn phổ cập Blockchain