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
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)
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
- Submit voluntary exit message: Ký bằng validator signing key và broadcast lên mạng
- 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)
- Withdrawable epoch: Sau khi exit, validator phải đợi thêm một withdrawal delay (~256 epochs ≈ 27 giờ)
- Balance swept: Beacon Chain sweep phát hiện validator đã withdrawable và chuyển toàn bộ balance về withdrawal credential
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:
PUSH0và 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ợ
08 Rủi ro và Bảo mật
| Rủi ro | Mô tả | Biện pháp |
|---|---|---|
| Mất BLS withdrawal key | Không thể chuyển 0x00→0x01, reward bị kẹt mãi | Backup mnemonic nhiều bản, lưu offline |
| Withdrawal address sai | ETH gửi về địa chỉ không kiểm soát | Verify kỹ địa chỉ trước khi submit |
| Phishing tool | Dùng tool giả mạo lấy BLS key | Chỉ dùng tool chính thức từ Ethereum Foundation |
| Exchange withdrawal address | Exchange kiểm soát tiền, có thể đóng băng | Dù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.