Giao thức Bitcoin và đồng thuận | Học trực tuyến CNTT, học lập trình từ cơ bản đến nâng cao

Giao thức Bitcoin và đồng thuận

Chia sẻ kiến thức 11/11/2021

Buổi học đầu tiên của khóa học Phổ cập Blockchain do Founder/CTO KardiaChain Huy Nguyễn trực tiếp giảng dạy khai giảng vào ngày 10/11, thu hút sự tham gia của hơn 250 bạn trẻ quan tâm đến Blockchain. Dưới đây là nội dung tóm tắt của buổi học, với chủ đề "Giao thức Bitcoin và đồng thuận" - do Vĩnh Lộc - một bạn trẻ tham gia khóa học ghi chép và chia sẻ. 

1. Bitcoin là gì?

a) Bối cảnh

  • Nghiên cứu từ năm ’90; nhưng ra đời chính thức năm 2008 bởi Satoshi Nakomoto
  • Chỉ 4% dân số thế giới biết về blockchain → cách mạng blockchain vẫn còn sớm

b) Khái niệm

  • Blockchain: công nghệ phi tập trung – dựa trên công nghệ thông tin
  • Bitcoin: đồng tiền đầu tiên dựa trên blockchain

c) Cypherpunk

  • Occupy the Wall Street: suy thoái kinh tế
  • Cypherpunks: nhóm người – tin vào phi tập trung, cả về kinh tế & công nghệ

d) Satoshi Nakamoto

Sáng kiến, giải quyết 2 vấn đề:

  • Thiếu nhất quán trong lịch sử giao dịch
  • Nguy cơ giả danh & lừa đảo

Giải quyết bằng cách:

  • Blockchain: lịch sử giao dịch
  • Proof of work: chống giả danh

Tính chất:

  • Anonymous: ẩn danh
  • Decentralized: phi tập trung
  • Immutable: không thể thay đổi
  • Trustless: không dựa trên tin tưởng
  • Global: toàn cầu
  • Consensus: động thuận

e) Bitcoin vs Ngân hàng

Các bước phân tán niềm tin

Trước-2000: ngân hàng: đóng vai trò trung gian – gây dựng & tập trung niềm tin vào một tổ chức

2000-2010: mạng xã hội – bắt đầu phân tán niềm tin cho đám đông

2010-nay: blockchain & bitcoin – tăng độ phân tán

Cách blockchain thay thế nhà băng

  • Quản lí danh tính: mã hoá để ẩn danh
  • Dịch vụ: chuyển tiền ngang hàng (peer-to-peer hay P2P)
  • Ghi chép giao dịch & tài khoản: đồng bộ hoá lịch sử
  • Niềm tin: tin vào code (thay vì hợp đồng & lời nói)

Câu hỏi thêm

  • Điểm khác nhau giữa decentralized (phi tập trung) & distributed (phân tán)

    Một hệ thống có thể vừa centralized vừa distributed. Ví dụ: Facebook có nhiều máy server (distributed) nhưng vẫn bị quản lí bởi một tổ chức (công ty Meta)

    • Decentralize nói về “quyền lực” hoặc “quyền quyết định” có nằm trong tay một người/tổ chức hay không
    • Distributed nói về số lượng máy tính phục vụ một mục đích

2. Identity – Danh tính

a) Vai trò

  • Authentication: xác thực & truy cứu
    • chống lừa đảo
    • trao đổi
  • Integrity: trung thực

b) Ví dụ

  • Nhà có địa chỉ và khoá nhà
  • Email có định danh email (example@company.com) và mật khẩu
  • Bitcoin có public key và private key
    • Public key: két sắt
    • Private key: chìa khoá để mở két

c) Bảo mật public key

Tạo public key rất đơn giản để tạo & xem; nhưng private key thì chỉ một người được tạo, xem, và sử dụng

Cách bảo mật: bằng thuật toán một chiều:

  • Có thể tạo 2^160 public key (nhiều hơn số hát cát trong 263 hành tinh)
  • → không thể trùng public key

3. Transaction – Giao dịch

a) Validity – Tính hợp lệ

Giao dịch hợp lệ cần 3 điều kiện

  • Chủ sở hữu
  • có đủ tiền
  • và chỉ chuyển tiền một lần

b) Mô phỏng

Phi tập trung: đưa ra nhiều khó khăn cho việc xác nhận 3 điều kiện trên

BTC có thể đáp ứng 3 điều kiện đó bằng mô hình Unspent Transaction Output (UTXO với TX=transaction**)**

  • tưởng tượng như heo đất vì heo đất đã đập thì không gắn lại được
  • mô hình: Gloria – sở hữu Heo đất A ($100) và Heo đất B ($50); Gloria muốn chuyển 101 cho Rustie
Mô phỏng Gloria chuyển tiền cho Rustie

💡 Giải thích: Bước 1: Gloria đập Heo A và chuyển 100 cho Rustie; Bước 2: Gloria đập Heo B và chuyển thêm 1 đồng cho Rustie; Bước 3: Gloria lấy phần dư $49 bỏ vào Heo đất C (mới) Kết quả: Gloria có Heo đất C ($49); Rustie nhận được đủ $101 ($100 + $1)

Ngoài ra, các blockchain khác có thể sử dụng những mô hình khác, VD: ETH sử dụng tài khoản

4. Record-keeping – Lưu trữ

a) Distributed databases – cơ sở dữ liệu phân tán

Cách của ngân hàng không thể hoạt động dưới mô hình phi tập trung

→ cần cơ sở dữ liệu phân tán

b) Blockchain sử dụng cơ sở dữ liệu như thế nào?

Điểm yếu:

  • Chậm: cần đồng bộ hoá dữ liệu
  • Khó: thiếu chính xác
  • Kích thước: lớn, khó scale

Giải quyết:

  • Blockchain giải quyết bằng batch processing (đóng gói để xử lí): gom nhiều giao dịch để xử lí một lần (thay vì xử lí từng giao dịch một)
  • Mỗi người sẽ chỉ phải xử lí giao dịch mỗi 10′ hoặc 20′
  • thay vì phải xử lí liên tục trong thời gian ngắn

Câu hỏi thêm

  • Số lượng giao dịch lớn → Kích thước database lớn → Giải quyết phân tán như thế nào?

    Nhiều giải pháp; và Bitcoin (cùng với các cryptocurrency khác) đã triển khai & ứng dụng để tối ưu hoá bộ nhớ – VD: sharding.

  • Mỗi node có phải là một máy không? Hay mỗi node là nhiều máy?

    Mỗi node là một máy.

    Mở rộng hơn, hệ thống blockchain hiện đại rất phức tạp & mỗi máy có thể chạy một môi trường khác nhau. Tuy nhiên, blockchain yêu cầu các máy phải chấp nhận cùng một giao thức.

    Hiện đại, mỗi máy có thể đóng nhiều vai trò (chỉ quan sát? hoặc chỉ mine?)

  • Trong blockchain, có đúng là mọi người đều có thể quan sát giao dịch?

    Đúng. Nhờ đó, mọi người đều có thể tham gia xác thực giao dịch (đào coin aka coin mining)

  • Khi một block không được thêm vào chain, thì giao dịch trong block đó có hợp lệ không?

    Không. Tuy nhiên, vẫn có thể thử lại giao dịch (nếu như vẫn đủ điều kiện).

5. Consensus – Đồng thuận (bằng Proof-of-Work)

💡 Bitcoin ($BTC) và Ethereum ($ETH) là những blockchain đời đầu, sử dụng Proof-of-Work (PoW). Tuy nhiên, sau này, có những blockchain mới dùng những cơ chế đồng thuận khác, như Proof-of-Stake (PoS) hoặc Proof-of-Authority (PoA)

a) Đặt vấn đề

Hoàn cảnh: cộng đồng cần xác thực giao dịch (aka quyết định chấp thuận giao dịch)

Vấn đề: làm sao cộng đồng có thể đưa ra quyết định & đảm bảo không gian lận?

  • nhanh
  • rẻ
  • chống tấn công
  • double spend attack

b) Các hướng giải quyết

Cách giải quyết 1: Mọi người đều chấp thuận giao dịch (bằng biểu quyết)

  • Điểm yếu: không giải quyết được chuyện giả danh & gian lận bầu cử
    • ví dụ: dùng tài khoản giả để tự chấp thuận giao dịch của mình

Cách giải quyết 2: Thêm chi phí cho việc tạo tài khoản & xác thực giao dịch

  • Cách hoạt động:
    • Để xác thực giao dịch, mọi người phải cùng giải quyết một “bài toán” khó;
    • Bài toán này chỉ có thể giải bằng cách đoán mò (trial-and-error);
    • Việc giải có độ khó cao; nhưng việc “chấm điểm lời giải” thì rất dễ;
    • Ai giải quyết bài toán này nhanh hơn, thì sẽ được nhận quyền xác thực giao dịch & phần thường cho công việc xác thực;
    • Khi số lượng người tham gia càng nhiều, thì bài toán ngày càng khó hơn;
  • Điểm mạnh: chống giả danh (vì giả danh tốn quá nhiều chi phí)
  • Điểm yếu: chậm & tốn điện năng

→ Tranh cãi về độ cần thiết của Proof-of-Work:

  • phe chống đối: lãng phí điện năng – không cần thiết
  • phe ủng hộ: điện năng cần thiết để tao ra giá trị của Bitcoin (tạo độ khan hiếm)

Câu hỏi thêm

  • Nếu độ khó của mining tăng quá cao, thì có ảnh hưởng xấu gì đến tính phi tập trung không?

    Có (tương đối). Hiện tại, có nhiều mining pool (cụm máy chạy coin mining) chiếm quá nhiều tỉ trọng trong hệ thống, dẫn tới ảnh hưởng an ninh hệ thống (51% attack).

    What Is a 51% Attack?

  • Nếu giao dịch hợp lệ, nhưng block bị từ chối, thì giải quyết như thế nào?

    Nếu giao dịch hợp lệ, thì giao dịch đó vẫn có thể được chuyển vào block tiếp theo. Tuy nhiên, việc này tạo độ trễ cho giao dịch.

  • Làm thế nào để hệ thống blockchain nhận được compute power/hash power?

    Đối với Bitcoin ($BTC): Bằng cách đo thời gian giải trung bình giữa các block (cố định là 10′)

  • Nếu chỉ hao tốn tiền điện, thì BTC có thực sự có giá trị nội tại?

    Theo anh Huy, BTC thực sự tốn năng lượng (điện), thời gian (10 phút) & vật chất (máy tính) để tạo ra công dụng (giao dịch). Vì vậy, BTC có giá trị nội tại.

  • Những trường hợp nào có thể xảy ra 51% attack?

    Xem phần đọc thêm (Reading)

  • Phần thưởng BTC nhận được khi mining là trích từ giao dịch? Hay từ đâu?

    Cả hai. Thợ đào (miner) sẽ nhận một phần phí từ giao dịch, và một phần thưởng mới mới hoàn toàn từ hệ thống.

    Mở rộng hơn, hệ thống sẽ in thêm BTC để thưởng cho miner dựa trên giao thức. Giao thức sẽ giảm số phần thưởng theo thời gian (giả định rằng giá BTC tăng theo thời gian).

  • Nếu hai block được thêm vào chain cùng một lúc, thì sẽ có hai chain khác nhau. Vậy giải quyết như thế nào?

    Giải quyết bằng tốc độ phân tán giữa hai chain. Chain nào phân tán nhanh hơn (và có nhiều block hơn) thì sẽ được chấp thuận về lâu dài.

  • Làm thế nào để miner chọn lọc giao dịch cấu thành một block?

    Vì miner được nhận phí giao dịch, nên họ sẽ gom nhiều giao dịch hợp lệ nhất có thể.

6. Tổng kết

  • Triết lí & thiết kế blockchain

a) Danh tính

Blockchain cần public key & private key để xác thực danh tính

  • public key có thể dễ tạo;
  • nhưng private key thì khó tạo & cần bảo mật

b) Giao dịch

Unspent Transaction Output UTXO: kết quả giao dịch chưa dùng:

  • đánh số giao dịch (để tạo lịch sử)
  • mô hình heo đất

c) Lưu trữ hồ sơ

Ai cũng giữ sổ cái

Hệ thống cung cấp giao thức để đồng bộ sổ cái

d) Đồng thuận

Biểu quyết dựa trên proof-of-work

Vĩnh Lộc

Nếu bỏ lỡ buổi học, bạn có thể theo dõi lại tại đây: 

Khoá học “PHỔ CẬP BLOCKCHAIN CÙNG HUY NGUYỄN” bao gồm 10 buổi, được FUNiX tổ chức miễn phí online vào tối thứ 4 hàng tuần. Khóa học sẽ mang đến cho các bạn trẻ yêu thích blockchain cơ hội học hỏi kiến thức, kinh nghiệm thực chiến, kết nối với các chuyên gia, từ đó có khả năng tự phát triển dự án, sản phẩm riêng.

Anh Huy Nguyễn từng là quản lý cấp cao tại Google, tham gia làm diễn giả, cố vấn cho các sinh viên khoa công nghệ thông tin của Đại học UC Berkeley và nhiều trường đại học khác tại Silicon Valley. Ở Việt Nam, anh cũng làm diễn giả chính tại nhiều sự kiện, workshop tại các tổ chức, trường đại học lớn. Tuy nhiên, đây là lần đầu tiên anh nhận lời thiết kế, xây dựng chương trình và giảng dạy trực tiếp trong một khóa học công nghệ.

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
Chat với FUNiX GPT ×

yêu cầu gọi lại

error: Content is protected !!