Bỏ qua đến nội dung chính

Blockchain hoạt động như thế nào: Giải thích từng bước

Để hiểu blockchain hoạt động như thế nào, cần theo dõi một giao dịch từ khi bắt đầu đến lúc được xác nhận cuối cùng. Dù công nghệ nền tảng bao gồm mật mã học tinh vi và kỹ thuật hệ thống phân tán, quy trình cốt lõi lại rất gọn gàng: giao dịch được tạo, phát tán, xác minh, gom vào khối và ghi vĩnh viễn trên một sổ cái dùng chung.

Hướng dẫn này sẽ đi qua từng bước của quy trình blockchain, dùng Bitcoin làm ví dụ chính, đồng thời chỉ ra điểm khác biệt ở các blockchain khác như Ethereum. Khi đọc xong, bạn sẽ hiểu chính xác điều gì xảy ra từ lúc bạn bấm "Send" đến khi giao dịch trở thành một phần không thể đảo ngược của blockchain.

Bước 1: Tạo giao dịch

Mọi tương tác blockchain đều bắt đầu bằng việc tạo giao dịch. Khi bạn quyết định gửi tiền mã hóa, phần mềm ví sẽ tạo một thông điệp giao dịch chứa nhiều thông tin.

Đầu vào và đầu ra giao dịch

Bitcoin dùng mô hình Unspent Transaction Output (UTXO). Hãy hình dung UTXO như các tờ tiền số trong ví. Nếu bạn từng nhận 0.5 BTC và 0.3 BTC trong hai giao dịch riêng, bạn có hai UTXO với tổng 0.8 BTC. Khi bạn muốn gửi 0.6 BTC, ví của bạn sẽ:

  1. Chọn các UTXO đủ để bao phủ số tiền (0.5 + 0.3 = 0.8 BTC).
  2. Tạo giao dịch với địa chỉ người nhận là một đầu ra (0.6 BTC).
  3. Tạo một đầu ra tiền thừa trả về địa chỉ của chính bạn (0.2 BTC trừ phí giao dịch).
  4. Các UTXO đã chọn trở thành "đã chi tiêu", và các đầu ra mới trở thành UTXO mới.

Ethereum dùng mô hình dựa trên tài khoản khác, giống tài khoản ngân hàng truyền thống hơn. Mỗi địa chỉ có số dư, và giao dịch chỉ đơn giản là ghi nợ người gửi, ghi có người nhận.

Ký số

Trước khi giao dịch được phát tán, nó phải được ký bằng private key của người gửi. Đây là lý do bảo mật của seed phrase cực kỳ quan trọng — private key của bạn được suy ra từ seed phrase, và bất kỳ ai sở hữu nó đều có thể ký giao dịch thay bạn.

Quy trình ký diễn ra như sau:

  1. Dữ liệu giao dịch được băm bằng SHA-256 (Bitcoin) hoặc Keccak-256 (Ethereum).
  2. Giá trị băm được ký bằng private key của người gửi qua thuật toán ECDSA.
  3. Chữ ký số thu được được gắn vào giao dịch.
  4. Bất kỳ ai cũng có thể xác minh chữ ký bằng public key của người gửi, xác nhận rằng giao dịch được chủ sở hữu khóa cho phép, mà không cần thấy private key.

Đây là nguyên lý nền tảng: ký là bằng chứng sở hữu. Private key của bạn không bao giờ rời thiết bị trong quá trình này. Chỉ chữ ký được chia sẻ với mạng, và chữ ký đó không thể bị dùng để suy ngược private key.

Bước 2: Phát tán giao dịch

Sau khi được ký, giao dịch được phát tán lên mạng blockchain. Ví của bạn kết nối tới một hoặc nhiều node (máy tính chạy phần mềm blockchain) và gửi dữ liệu giao dịch.

Lan truyền ngang hàng

Mạng blockchain hoạt động theo mô hình peer-to-peer (P2P). Không có máy chủ trung tâm. Khi một node nhận giao dịch của bạn, nó thực hiện các kiểm tra xác thực ban đầu và nếu hợp lệ sẽ chuyển tiếp cho các node ngang hàng đã kết nối. Các node đó tiếp tục xác thực và chuyển tiếp. Trong vài giây, giao dịch lan ra toàn mạng — thường đến đa số node trong vòng 2 đến 15 giây.

Mempool

Sau khi lan truyền, giao dịch của bạn vào mempool (memory pool) — khu chờ các giao dịch chưa xác nhận do mỗi node duy trì. Mempool không phải một hồ chung duy nhất; mỗi node có phiên bản riêng, có thể chênh nhẹ do độ trễ mạng và chính sách từng node.

Các giao dịch trong mempool được xếp hạng chủ yếu theo fee rate (satoshi trên mỗi byte trong Bitcoin, hoặc gas price trong Ethereum). Miner và validator ưu tiên giao dịch phí cao để tối đa doanh thu. Khi nhu cầu mạng cao, mempool có thể tăng lớn, và giao dịch phí thấp có thể chờ hàng giờ, thậm chí hàng ngày mới được xác nhận.

Phí giao dịch

Phí giao dịch có hai mục đích:

  1. Khuyến khích miner/validator đưa giao dịch của bạn vào một khối.
  2. Ngăn spam bằng cách làm cho việc làm ngập mạng bằng giao dịch vô nghĩa trở nên tốn kém.

Trong Bitcoin, phí được tính theo kích thước giao dịch tính bằng byte (không phải số tiền gửi). Một giao dịch gửi 10 BTC có thể tốn phí bằng giao dịch gửi 0.001 BTC nếu cùng kích thước byte.

Trong Ethereum, phí theo mô hình EIP-1559 với base fee (bị đốt) và priority tip (trả cho validator). Base fee điều chỉnh động theo mức độ tắc nghẽn mạng.

Bước 3: Xác thực giao dịch

Trước khi một giao dịch có thể vào khối, các node sẽ độc lập xác thực nó theo các quy tắc giao thức. Việc xác thực này rất quan trọng để duy trì tính toàn vẹn của blockchain.

Các kiểm tra xác thực

Mỗi node thực hiện nhiều kiểm tra với mọi giao dịch nhận được:

  • Tính hợp lệ cú pháp: Giao dịch có đúng định dạng theo đặc tả giao thức không?
  • Xác minh chữ ký: Chữ ký số có khớp public key của người gửi không? Điều này xác nhận giao dịch được private key holder cho phép.
  • Kiểm tra double-spend: Các UTXO được tham chiếu (Bitcoin) còn chưa chi tiêu không, hoặc tài khoản (Ethereum) có đủ số dư không?
  • Xác thực script: Script khóa và mở khóa có chạy đúng không? (Bitcoin dùng ngôn ngữ script tên là Script để định nghĩa điều kiện chi tiêu.)
  • Mức phí đủ dùng: Giao dịch có phí đủ để vượt ngưỡng chuyển tiếp tối thiểu của node không?
  • Giới hạn kích thước: Giao dịch có nằm trong ràng buộc kích thước của giao thức không?

Nếu giao dịch trượt bất kỳ kiểm tra nào, nó sẽ bị từ chối và không được chuyển tiếp tới node khác. Việc xác thực phi tập trung này khiến blockchain kháng giao dịch gian lận — mỗi node đều độc lập kiểm tra mọi giao dịch theo cùng một bộ quy tắc.

Bước 4: Tạo khối

Miner (trong hệ proof-of-work) hoặc validator (trong hệ proof-of-stake) thu thập giao dịch đã xác thực từ mempool và ghép chúng thành một khối ứng viên.

Cấu trúc khối

Một khối điển hình gồm:

Block Header:

  • Version: Phiên bản giao thức.
  • Previous block hash: Giá trị băm SHA-256 của header khối trước đó. Đây là thứ tạo thành "chain" trong blockchain.
  • Merkle root: Một giá trị băm duy nhất tóm tắt mọi giao dịch trong khối.
  • Timestamp: Thời điểm gần đúng khối được tạo.
  • Difficulty target (PoW): Ngưỡng mà block hash phải thấp hơn để khối hợp lệ.
  • Nonce (PoW): Bộ đếm mà miner tăng dần khi tìm hash hợp lệ.

Block Body:

  • Transaction count: Số lượng giao dịch được chứa.
  • Transaction list: Dữ liệu giao dịch thực tế.
  • Coinbase transaction: Giao dịch đặc biệt đầu tiên tạo coin mới như phần thưởng khối và gom toàn bộ phí giao dịch. Đây là giao dịch duy nhất trong khối không có đầu vào — nó tạo tiền mới từ con số 0 theo lịch phát hành của giao thức.

Chọn giao dịch

Miner thường chọn giao dịch để tối đa doanh thu, ưu tiên các giao dịch có fee rate cao nhất. Tuy nhiên, họ vẫn phải tuân thủ giới hạn kích thước khối (4 MB block weight trong Bitcoin) hoặc giới hạn gas khối (xấp xỉ 30 triệu gas trong Ethereum). Điều này tạo ra thị trường tự nhiên cho không gian khối — khi nhu cầu cao, người dùng cạnh tranh bằng cách trả phí cao hơn.

Một số miner có thể có chính sách bổ sung, như đưa một số loại giao dịch vào bất kể phí, hoặc loại bỏ giao dịch tương tác với địa chỉ bị trừng phạt.

Xây dựng Merkle Tree

Merkle tree được xây bằng cách lặp lại việc băm các cặp transaction hash:

  1. Mỗi giao dịch được băm riêng.
  2. Các hash liền kề được ghép cặp và băm cùng nhau.
  3. Quá trình lặp lên trên cây cho đến khi còn một hash duy nhất: Merkle root.

Merkle root cho bản tóm tắt gọn của toàn bộ giao dịch. Nếu bất kỳ giao dịch nào bị sửa, Merkle root sẽ đổi ngay, lập tức lộ dấu hiệu can thiệp. Cấu trúc này cũng cho phép Simplified Payment Verification (SPV), nơi client nhẹ có thể xác minh giao dịch có trong khối mà không cần tải toàn bộ khối.

Bước 5: Đồng thuận và tạo khối

Khối ứng viên phải đi qua cơ chế đồng thuận của mạng để được chấp nhận. Đây là nơi các blockchain khác nhau tách biệt rõ rệt.

Proof of Work (Bitcoin)

Trong proof-of-work, các miner cạnh tranh tìm giá trị nonce sao cho khi kết hợp với dữ liệu block header và băm, tạo ra hash thấp hơn difficulty target của mạng. Về bản chất đây là tìm kiếm vét cạn:

  1. Miner tạo block header với mọi trường bắt buộc.
  2. Miner băm header bằng SHA-256 (áp dụng hai lần trong Bitcoin).
  3. Nếu hash thu được thấp hơn difficulty target, khối hợp lệ.
  4. Nếu không, miner tăng nonce và thử lại.
  5. Quá trình này lặp hàng tỷ lần mỗi giây trên toàn bộ miner.

Difficulty target điều chỉnh mỗi 2,016 khối (xấp xỉ hai tuần) để giữ thời gian trung bình mỗi khối là 10 phút, bất kể tổng sức mạnh đào trên mạng là bao nhiêu.

Khi miner tìm thấy hash hợp lệ, họ giải xong "câu đố" và có thể phát tán khối lên mạng. Miner đầu tiên tìm lời giải hợp lệ nhận block reward (hiện là 3.125 BTC sau halving tháng 4 năm 2024) cộng toàn bộ phí giao dịch trong khối.

Proof of Stake (Ethereum)

Ethereum dùng proof of stake, nơi validator được chọn ngẫu nhiên để đề xuất khối dựa trên lượng ETH đã stake (khóa làm tài sản thế chấp). Quy trình khác biệt về bản chất:

  1. Một validator được chọn giả-ngẫu-nhiên để đề xuất khối cho mỗi slot 12 giây.
  2. Người đề xuất tạo khối và phát tán.
  3. Một ủy ban validator attest (bỏ phiếu) rằng khối hợp lệ.
  4. Khi thu đủ attestations, khối được xem là justified và sau đó finalized.

Proof of stake loại bỏ phần tính hash tốn năng lượng của proof of work nhưng vẫn giữ an ninh thông qua động lực kinh tế — validator có nguy cơ mất ETH đã stake (slashing) nếu hành xử độc hại.

Để so sánh sâu hơn, xem hướng dẫn Consensus Mechanisms.

Bước 6: Lan truyền khối

Khi một khối hợp lệ được tạo ra, nó phải được phân phối toàn mạng.

Lan truyền qua mạng

Miner hoặc validator thành công sẽ phát tán khối mới tới các node ngang hàng; các node này xác thực khối rồi chuyển tiếp tiếp. Lan truyền khối thường mất 1 đến 10 giây để đến phần lớn mạng, tùy kích thước khối và điều kiện mạng.

Compact Block Relay (BIP 152)

Bitcoin dùng Compact Block Relay để tăng tốc lan truyền. Vì đa số node đã có các giao dịch trong mempool, khối mới chỉ cần truyền bản tóm tắt gọn (transaction ID ngắn) thay vì toàn bộ dữ liệu giao dịch. Node có thể dựng lại khối đầy đủ từ mempool của chúng, giảm nhu cầu băng thông khoảng 90%.

Orphan Block

Đôi khi hai miner tìm được khối hợp lệ gần như cùng lúc, tạo fork tạm thời. Mạng tự giải quyết: chain nào nhận khối kế tiếp trước sẽ trở thành chain dài nhất, còn khối kia thành orphan (hoặc stale block). Giao dịch trong orphan block được trả lại mempool và thường được đưa vào khối kế tiếp trên chain chiến thắng.

Bước 7: Xác thực khối và mở rộng chuỗi

Khi một node nhận khối mới, nó độc lập xác thực toàn bộ khối trước khi chấp nhận.

Xác thực đầy đủ

Node sẽ kiểm tra:

  • Tính hợp lệ block header: Đúng định dạng, previous block hash hợp lệ, proof of work đạt difficulty target (hoặc chữ ký validator hợp lệ trong PoS).
  • Tính hợp lệ giao dịch: Mọi giao dịch trong khối đều qua các kiểm tra xác thực như mô tả ở Bước 3.
  • Tính nhất quán Merkle root: Merkle root tính lại khớp với giá trị trong block header.
  • Kích thước/trọng số khối: Khối không vượt giới hạn giao thức.
  • Tính hợp lệ coinbase: Block reward và việc thu phí đúng theo quy tắc giao thức hiện tại.
  • Khoảng timestamp: Timestamp của khối nằm trong ngưỡng chấp nhận.

Nếu mọi kiểm tra đều đạt, node thêm khối vào bản sao blockchain cục bộ và cập nhật tập UTXO (hoặc state trie trong Ethereum). Sau đó node chuyển tiếp khối cho các node ngang hàng.

Bước 8: Xác nhận giao dịch

Khi giao dịch của bạn được đưa vào một khối hợp lệ, nó nhận xác nhận đầu tiên. Mỗi khối mới xây trên khối chứa giao dịch của bạn sẽ thêm một xác nhận nữa.

Vì sao nhiều xác nhận lại quan trọng

Một xác nhận nghĩa là giao dịch đã vào blockchain, nhưng khối đó vẫn có thể thành orphan nếu một chain cạnh tranh vượt lên. Mỗi xác nhận bổ sung khiến khả năng tái tổ chức giảm theo cấp số mũ:

ConfirmationsBitcoin Wait TimeSecurity Level
0 (unconfirmed)Dễ bị double-spend
1~10 phútPhù hợp cho số tiền nhỏ
3~30 phútMức bảo mật hợp lý
6~60 phútChuẩn cho số tiền đáng kể
12+~2 giờBảo mật rất cao

Chuẩn thường được nhắc đến là 6 confirmations với Bitcoin, nghĩa là xác suất tái tổ chức chain thành công (và do đó double-spend) cực kỳ thấp — kẻ tấn công sẽ cần kiểm soát hơn 50% hash power của mạng và duy trì trong hơn một giờ.

Ethereum cho finality nhanh hơn. Trong điều kiện bình thường, giao dịch đạt finality (không thể đảo ngược nếu không đốt ít nhất một phần ba tổng ETH đã stake) trong khoảng 12 đến 15 phút.

Các loại finality

  • Probabilistic finality (Bitcoin): Giao dịch càng khó đảo ngược theo từng xác nhận, nhưng không có mốc tuyệt đối không thể đảo ngược. Sáu xác nhận là ngưỡng thực tế được chấp nhận rộng rãi.
  • Economic finality (Ethereum PoS): Sau khi finalized, để đảo ngược giao dịch cần đốt lượng ETH stake trị giá hàng tỷ đô la — phi lý về kinh tế với bất kỳ kẻ tấn công nào.
  • Absolute finality (một số chain dựa trên BFT): Giao dịch không thể đảo ngược ngay khi khối được xác nhận. Các chain như mạng dựa trên Tendermint có thuộc tính này.

Toàn cảnh: Hành trình của một giao dịch

Tóm tắt toàn bộ vòng đời:

  1. Bạn khởi tạo chuyển tiền từ ví.
  2. Ví của bạn tạo giao dịch, chọn đầu vào/đầu ra (UTXO) hoặc chỉ định số tiền chuyển (mô hình tài khoản).
  3. Private key của bạn ký giao dịch, chứng minh bạn đã cho phép.
  4. Giao dịch đã ký được phát tán lên mạng P2P.
  5. Node xác thực giao dịch và thêm vào mempool.
  6. Miner/validator chọn giao dịch của bạn từ mempool và đưa vào khối ứng viên.
  7. Khối được tạo qua proof of work hoặc proof of stake.
  8. Khối mới lan truyền toàn mạng.
  9. Node xác thực và chấp nhận khối, mở rộng chain.
  10. Giao dịch của bạn tích lũy xác nhận khi có thêm khối mới xây lên trên.

Toàn bộ quá trình này — từ lúc tạo đến xác nhận đầu tiên — mất khoảng 10 phút với Bitcoin và 12 giây với Ethereum, dù giao dịch của bạn có thể chờ thêm trong mempool trước khi được chọn.

SafeSeed Tool

Bảo mật giao dịch của bạn bắt đầu từ khóa. Hãy dùng SafeSeed Seed Phrase Generator để tạo seed phrase BIP-39 an toàn về mặt mật mã. Mọi bước trong quy trình blockchain — từ ký giao dịch đến chứng minh quyền sở hữu — đều phụ thuộc vào độ an toàn của private key, vốn được suy ra từ seed phrase của bạn.

Khái niệm nâng cao

Transaction Malleability

Trong các phiên bản Bitcoin ban đầu, có thể sửa transaction ID (txid) mà không làm giao dịch mất hiệu lực — thuộc tính gọi là transaction malleability. Điều này phần lớn đã được xử lý nhờ nâng cấp Segregated Witness (SegWit) năm 2017, tách dữ liệu chữ ký khỏi dữ liệu giao dịch, đảm bảo txid không thể bị thay đổi sau khi ký.

Replace-By-Fee (RBF)

Bitcoin hỗ trợ Replace-By-Fee, cho phép người gửi gửi lại giao dịch với phí cao hơn để tăng tốc xác nhận. Giao dịch mới thay thế giao dịch cũ trong mempool. Điều này hữu ích khi mạng tắc nghẽn và phí ban đầu của bạn quá thấp. Ví hỗ trợ RBF sẽ đánh dấu giao dịch có thể thay thế, và phiên bản phí cao hơn được ưu tiên.

Transaction Batching

Sàn giao dịch và các bên gửi lớn thường batch nhiều khoản thanh toán vào một giao dịch duy nhất với nhiều đầu ra. Cách này tiết kiệm không gian hơn gửi từng giao dịch riêng, từ đó giảm tổng phí và lượng không gian khối sử dụng.

Câu hỏi thường gặp

Một giao dịch blockchain mất bao lâu?

Thời gian giao dịch khác nhau theo từng blockchain. Bitcoin trung bình tạo một khối mỗi 10 phút, nhưng giao dịch của bạn có thể phải chờ trong mempool trước khi được đưa vào khối. Ethereum tạo khối mỗi 12 giây. Các giải pháp Layer 2 như Lightning Network có thể hoàn tất thanh toán trong mili giây. Tổng thời gian từ lúc gửi đến xác nhận đầu tiên phụ thuộc vào mức tắc nghẽn mạng và mức phí bạn trả.

Nếu tôi gửi nhầm địa chỉ thì sao?

Giao dịch blockchain không thể đảo ngược. Nếu bạn gửi tiền mã hóa đến sai địa chỉ, không có cơ quan trung tâm nào có thể hoàn tác giao dịch. Nếu địa chỉ thuộc về ai đó, bạn cần liên hệ trực tiếp và hy vọng họ hoàn trả. Nếu địa chỉ không hợp lệ hoặc không thuộc về ai, số tiền coi như mất vĩnh viễn. Luôn kiểm tra kỹ địa chỉ trước khi gửi.

Giao dịch blockchain có thể thất bại không?

Trong Bitcoin, một giao dịch được tạo và ký đúng cách cuối cùng sẽ được xác nhận (dù có thể mất rất lâu nếu phí quá thấp). Trong Ethereum, giao dịch có thể thất bại (revert) nếu quá trình thực thi smart contract gặp lỗi hoặc hết gas. Trong cả hai trường hợp, phí giao dịch vẫn bị tiêu hao. Một số ví cung cấp mô phỏng giao dịch để dự đoán khả năng thành công trước khi bạn gửi.

Transaction hash (txid) là gì?

Transaction hash (txid hoặc transaction ID) là mã định danh duy nhất của mỗi giao dịch. Nó được tạo bằng cách băm dữ liệu giao dịch. Bạn có thể dùng txid để theo dõi giao dịch trên block explorer (như mempool.space cho Bitcoin hoặc etherscan.io cho Ethereum). Txid được gán ngay khi giao dịch được tạo và không thay đổi sau khi xác nhận.

Vì sao phí giao dịch biến động?

Phí giao dịch được quyết định bởi cung và cầu đối với không gian khối. Khi nhiều người cùng giao dịch, họ cạnh tranh không gian khối giới hạn bằng cách trả phí cao hơn. Trong giai đoạn yên ắng, phí giảm xuống. Không gian khối Bitcoin là cố định (trọng số 4 MB mỗi khối, mỗi 10 phút), nên phí có thể tăng vọt khi nhu cầu cao. EIP-1559 của Ethereum cung cấp base fee dễ dự đoán hơn, điều chỉnh theo thuật toán dựa trên mức sử dụng mạng.

Khác nhau giữa giao dịch đã xác nhận và chưa xác nhận là gì?

Giao dịch chưa xác nhận tồn tại trong mempool nhưng chưa được đưa vào khối. Nó đang chờ xử lý và về lý thuyết có thể bị thay thế hoặc bị loại bỏ. Giao dịch đã xác nhận đã được đưa vào khối và thêm vào blockchain. Mỗi khối mới xây trên nó sẽ tăng số xác nhận và khiến giao dịch ngày càng khó đảo ngược.

Miner có thể không đưa giao dịch của tôi vào khối không?

Có. Miner và validator có thể tự chọn giao dịch nào đưa vào khối của họ. Họ không bắt buộc phải đưa bất kỳ giao dịch cụ thể nào. Tuy nhiên, động lực kinh tế khiến họ có xu hướng mạnh mẽ đưa vào càng nhiều giao dịch có phí càng tốt. Trên thực tế, bất kỳ giao dịch hợp lệ nào có phí đủ cạnh tranh cuối cùng cũng sẽ được một miner nào đó đưa vào, kể cả khi một vài người bỏ qua.

Hướng dẫn liên quan