OKB.VN
Staking — Ethereum PoS

Withdrawal Credential là gì?

0x00 vs 0x01 — Cơ chế rút ETH staking, partial vs full withdrawal và cách chuyển đổi credential
⏱ 10 phút đọc📊 Intermediate🔗 Staking

Tóm tắt nhanh

Withdrawal credential là địa chỉ nhận ETH khi validator rút tiền. Có hai loại: 0x00 (BLS key cũ, không tự rút được) và 0x01 (execution address, hỗ trợ rút tự động). Sau Shanghai upgrade (tháng 4/2023), validator 0x01 tự động nhận reward tích lũy vượt 32 ETH và có thể exit hoàn toàn. Validator 0x00 cần chuyển đổi sang 0x01 để có quyền này.

01 Withdrawal Credential là gì?

Khi deposit 32 ETH để chạy validator trên Ethereum, bạn phải chỉ định một withdrawal credential — địa chỉ nhận ETH khi bạn rút tiền về sau này. Đây là thông tin được ghi vĩnh viễn vào deposit contract và không thể thay đổi tùy tiện.

Withdrawal credential quan trọng vì hai lý do:

  • Partial withdrawal: Phần reward vượt quá 32 ETH được tự động gửi về withdrawal address định kỳ
  • Full withdrawal: Khi validator exit, toàn bộ balance gốc và reward được gửi về withdrawal address này
⚠️ Không thể thay đổi tùy tiện: Một khi set withdrawal credential, bạn chỉ có thể đổi theo một chiều duy nhất: từ 0x00 sang 0x01. Không thể đổi sang địa chỉ khác sau khi đã cập nhật lên 0x01. Hãy chọn địa chỉ mà bạn kiểm soát lâu dài.

02 0x00 — BLS Withdrawal Credential (Legacy)

Khi Ethereum Beacon Chain ra mắt tháng 12/2020, hệ thống withdrawal chưa được thiết kế hoàn chỉnh. Các validator đầu tiên deposit dùng 0x00 credential — lấy BLS withdrawal public key làm địa chỉ rút tiền.

Đặc điểm 0x00

  • Prefix byte là 0x00, tiếp theo là hash của BLS withdrawal public key
  • Không hỗ trợ partial withdrawal — reward tích lũy trên Beacon Chain, không tự động gửi về
  • Không hỗ trợ full withdrawal tự động sau khi exit — phải chuyển sang 0x01 trước
  • BLS withdrawal key thường được derive từ mnemonic seed phrase gốc

Hàng chục nghìn validator từ thời early adopter vẫn còn dùng 0x00 credential. Họ đã accumulate nhiều năm reward nhưng chưa nhận được vì credential chưa được cập nhật. Đây là một trong những "kho báu ẩn" lớn trong Ethereum ecosystem.

03 0x01 — Execution Layer Withdrawal Credential (Modern)

0x01 credential dùng địa chỉ Ethereum execution layer thông thường (0x...) làm withdrawal destination. Đây là standard hiện tại và được khuyến nghị cho mọi validator mới.

Đặc điểm 0x01

  • Prefix byte là 0x01, tiếp theo là 11 bytes zero và 20 bytes Ethereum address
  • Hỗ trợ partial withdrawal: Reward tự động gửi về execution address định kỳ (khoảng 5-8 ngày/lần)
  • Hỗ trợ full withdrawal: Sau khi voluntary exit, balance gửi về execution address trong khoảng 1-5 ngày
  • Có thể dùng địa chỉ EOA hoặc smart contract (multisig, hardware wallet)
💡 Dùng địa chỉ cold storage: Vì withdrawal address không thể đổi sau khi cập nhật 0x01, nên dùng hardware wallet hoặc multisig để tối đa bảo mật. Tránh dùng hot wallet hoặc exchange address.

04 Partial Withdrawal — Nhận Reward Tự Động

Partial withdrawal là tính năng quan trọng nhất được thêm vào bởi Shanghai/Capella upgrade. Nó giải quyết vấn đề reward "bị kẹt" trong Beacon Chain mà nhiều staker gặp phải.

Cơ chế hoạt động

Beacon Chain sweep qua tất cả validator theo thứ tự index. Với mỗi validator có 0x01 credential và balance vượt quá 32 ETH, protocol tự động tạo một "withdrawal sweep" — chuyển phần balance vượt quá (reward tích lũy) về execution address.

Với ~1 triệu validator hiện tại, thời gian sweep một vòng đầy đủ khoảng 5-8 ngày. Điều này nghĩa là staker nhận partial withdrawal tự động mỗi tuần — không cần làm gì thêm.

Ví dụ thực tế

Validator có balance 32.5 ETH (32 ETH gốc + 0.5 ETH reward): partial withdrawal chuyển 0.5 ETH về execution address, validator balance trở về 32 ETH và tiếp tục attest bình thường. Validator không bị ảnh hưởng gì, chỉ "nhận lương" định kỳ.

05 Full Withdrawal và Validator Exit

Full withdrawal xảy ra khi validator hoàn toàn rời khỏi active set. Quá trình này gồm nhiều bước và mất thời gian đáng kể:

Quy trình Voluntary Exit

  1. Submit voluntary exit message: Ký bằng validator signing key và broadcast lên mạng
  2. Exit queue: Validator vào exit queue — protocol giới hạn số validator exit mỗi epoch để tránh đột ngột giảm staking security. Thời gian đợi tùy thuộc vào độ dài queue (có thể từ vài ngày đến vài tuần)
  3. Withdrawable epoch: Sau khi exit, validator phải đợi thêm một withdrawal delay (~256 epochs ≈ 27 giờ)
  4. Balance swept: Beacon Chain sweep phát hiện validator đã withdrawable và chuyển toàn bộ balance về withdrawal credential
💡 Slashing ảnh hưởng đến full withdrawal: Nếu validator bị slashed, một phần ETH bị burn trước khi withdrawal. Số ETH nhận về ít hơn 32 ETH gốc deposit. Đây là lý do cần cẩn thận trong việc quản lý validator key.

06 Shanghai/Capella Upgrade — Bước ngoặt

Trước tháng 4/2023, ETH stake trong Beacon Chain hoàn toàn bị khóa — không thể rút dù validator có muốn. Shanghai upgrade (execution layer) và Capella upgrade (consensus layer) ra mắt ngày 12/4/2023 đã thay đổi điều này.

Những thay đổi quan trọng

  • Kích hoạt partial withdrawal tự động cho 0x01 credential
  • Cho phép full withdrawal sau khi voluntary exit
  • Thêm opcode mới: PUSH0 và các EVM improvement
  • Hỗ trợ BLS-to-execution-change để validator 0x00 chuyển sang 0x01

Nhiều lo ngại trước Shanghai rằng lượng ETH rút ra sẽ gây áp lực bán lớn. Thực tế, lượng ETH nạp vào staking sau Shanghai cao hơn lượng rút ra, cho thấy staking demand tăng khi tính thanh khoản được cải thiện — một minh họa thực tế của network effect.

07 Cách Đổi từ 0x00 sang 0x01

Nếu validator đang dùng 0x00 credential, bạn cần chuyển sang 0x01 để có thể nhận partial withdrawal và sau này thực hiện full withdrawal. Quá trình này sử dụng BLS-to-execution-change message.

Điều kiện cần

  • BLS withdrawal key (derive từ mnemonic/seed phrase gốc khi tạo validator)
  • Validator index và current withdrawal credentials để verify
  • Ethereum execution address muốn set làm withdrawal destination

Công cụ

  • staking-deposit-cli của Ethereum Foundation: tool chính thức, chạy offline để bảo mật
  • ethdo: tool CLI cho validator operations
  • Một số staking UI như Wagyu Key Gen cũng hỗ trợ
⚠️ Thực hiện offline: Khi ký BLS-to-execution-change message, nên thực hiện trên máy offline (air-gapped) vì cần access BLS withdrawal key — mức độ nhạy cảm cao nhất. Sau khi ký xong, mới kết nối internet để submit.

08 Rủi ro và Bảo mật

Rủi roMô tảBiện pháp
Mất BLS withdrawal keyKhông thể chuyển 0x00→0x01, reward bị kẹt mãiBackup mnemonic nhiều bản, lưu offline
Withdrawal address saiETH gửi về địa chỉ không kiểm soátVerify kỹ địa chỉ trước khi submit
Phishing toolDùng tool giả mạo lấy BLS keyChỉ dùng tool chính thức từ Ethereum Foundation
Exchange withdrawal addressExchange kiểm soát tiền, có thể đóng băngDùng self-custody wallet

Withdrawal credential là một trong những quyết định quan trọng nhất của staker. Không giống signing key (có thể migrate sang validator client mới), withdrawal credential gắn liền với validator mãi mãi. Nên coi trọng việc backup BLS withdrawal key tương đương với backup của 32 ETH deposit.

Với liquid staking như Lido hay Rocket Pool, protocol quản lý withdrawal credential thay người dùng. User nhận stETH hoặc rETH — tokens đại diện cho ETH stake. Khi redeem, protocol xử lý withdrawal process, người dùng không cần quản lý credential trực tiếp.

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

Withdrawal credential là địa chỉ nhận ETH khi validator rút stake hoặc nhận staking reward tự động. Hai loại: 0x00 (BLS key cũ, không tự động rút) và 0x01 (execution address, hỗ trợ partial và full withdrawal). Đây là thông tin ghi vĩnh viễn vào deposit contract khi validator deposit 32 ETH.

0x00 dùng BLS key — không hỗ trợ tự động rút reward. 0x01 dùng Ethereum execution address — hỗ trợ partial withdrawal (rút reward tự động hàng tuần) và full withdrawal khi exit. Validator 0x00 có thể chuyển sang 0x01 bằng BLS-to-execution-change message, nhưng không thể đổi ngược lại.

Partial withdrawal tự động chuyển phần reward vượt quá 32 ETH về execution address mỗi 5-8 ngày, validator vẫn hoạt động bình thường. Full withdrawal xảy ra khi validator tự nguyện exit — toàn bộ balance (32 ETH + reward tích lũy, trừ slashing penalty nếu có) được chuyển về withdrawal address sau thời gian chờ.

Dùng BLS-to-execution-change message, ký bằng BLS withdrawal key (derive từ mnemonic gốc). Cần staking-deposit-cli của Ethereum Foundation hoặc ethdo tool. Nên thực hiện offline để bảo mật. Sau khi submit, credential được cập nhật vĩnh viễn — không thể đổi sang địa chỉ khác sau này.

📚 Khám phá thêm theo chủ đề
113 bài phân tích kỹ thuật — Blockchain Infrastructure từ nền tảng đến nâng cao
📋 Xem tất cả bài viết →