Tôi cứ mặc định rằng phần thưởng staking sẽ chỉ xuất hiện khi chúng được ghi nhận là đã kiếm được. Module khuyến khích của Babylon không hoạt động theo cách đó.
Cứ mỗi block, phần thưởng được ghi vào một thứ gọi là RewardGauge. Cái gauge đó có đúng hai trường: coins, nghĩa là mọi thứ từng rơi vào đó, và withdrawn_coins, nghĩa là mọi thứ bạn đã rút ra rồi. Số dư thực sự có thể rút của bạn chỉ là một phép trừ giữa chúng.
Không có gì được đẩy trực tiếp vào ví của bạn trong suốt quá trình này.
Tài liệu nói thẳng: phần thưởng không được chủ động gửi ra ngay khi được ghi nhận; chúng nằm trong pool cho đến khi xảy ra một sự kiện rút. Gauge sẽ tích lũy ở nền, bất kể bạn có đang theo dõi hay không. Nó không có quan điểm gì về việc khi nào, hay liệu bạn có đến lấy nó hay không.
Ban đầu điều đó có vẻ ngược đời. Hầu hết các hệ thống staking mà tôi đã xem qua thì hoặc là tự động tái đầu tư (auto-compound) hoặc là tự động phân phối (auto-distribute) — phần thưởng hoặc là làm vị thế của bạn tăng lên, hoặc rơi vào số dư của bạn mà bạn không cần làm gì. Babylon không làm cả hai. Cách duy nhất để đồng coin rời khỏi gauge là một thông điệp duy nhất: MsgWithdrawReward, thông điệp này chuyển số dư đến địa chỉ rút của bạn và chỉ sau đó mới cập nhật withdrawn_coins để khớp.
Vì vậy, “kiếm được phần thưởng” và “có phần thưởng” ở đây là hai trạng thái tách biệt, và cầu nối duy nhất giữa chúng là một giao dịch mà bạn phải tự gửi. Chuỗi giữ con số chính xác tuyệt đối. Nó chỉ không hành động trên con số đó trừ khi bạn yêu cầu.
Việc đặt toàn bộ phần rút lên phía người dùng có làm giảm các lần ghi lên on-chain không cần thiết và lượng gas bị tiêu tốn cho những khoản nhỏ mà chưa ai yêu cầu, hay nó chỉ tạo ra một đống giá trị chưa được nhận một cách lặng lẽ mà phần lớn mọi người rồi cũng quên đi để đến lúc nhớ phải quay lại lấy?
@BabylonLabs_io #baby $BABY
Cứ mỗi block, phần thưởng được ghi vào một thứ gọi là RewardGauge. Cái gauge đó có đúng hai trường: coins, nghĩa là mọi thứ từng rơi vào đó, và withdrawn_coins, nghĩa là mọi thứ bạn đã rút ra rồi. Số dư thực sự có thể rút của bạn chỉ là một phép trừ giữa chúng.
Không có gì được đẩy trực tiếp vào ví của bạn trong suốt quá trình này.
Tài liệu nói thẳng: phần thưởng không được chủ động gửi ra ngay khi được ghi nhận; chúng nằm trong pool cho đến khi xảy ra một sự kiện rút. Gauge sẽ tích lũy ở nền, bất kể bạn có đang theo dõi hay không. Nó không có quan điểm gì về việc khi nào, hay liệu bạn có đến lấy nó hay không.
Ban đầu điều đó có vẻ ngược đời. Hầu hết các hệ thống staking mà tôi đã xem qua thì hoặc là tự động tái đầu tư (auto-compound) hoặc là tự động phân phối (auto-distribute) — phần thưởng hoặc là làm vị thế của bạn tăng lên, hoặc rơi vào số dư của bạn mà bạn không cần làm gì. Babylon không làm cả hai. Cách duy nhất để đồng coin rời khỏi gauge là một thông điệp duy nhất: MsgWithdrawReward, thông điệp này chuyển số dư đến địa chỉ rút của bạn và chỉ sau đó mới cập nhật withdrawn_coins để khớp.
Vì vậy, “kiếm được phần thưởng” và “có phần thưởng” ở đây là hai trạng thái tách biệt, và cầu nối duy nhất giữa chúng là một giao dịch mà bạn phải tự gửi. Chuỗi giữ con số chính xác tuyệt đối. Nó chỉ không hành động trên con số đó trừ khi bạn yêu cầu.
Việc đặt toàn bộ phần rút lên phía người dùng có làm giảm các lần ghi lên on-chain không cần thiết và lượng gas bị tiêu tốn cho những khoản nhỏ mà chưa ai yêu cầu, hay nó chỉ tạo ra một đống giá trị chưa được nhận một cách lặng lẽ mà phần lớn mọi người rồi cũng quên đi để đến lúc nhớ phải quay lại lấy?
@BabylonLabs_io #baby $BABY
