Add transfer processing to BeaconChain

This commit is contained in:
Paul Hauner
2019-03-07 17:23:11 +11:00
parent 15e4aabd8a
commit 1ef2652cac
8 changed files with 196 additions and 17 deletions

View File

@@ -365,7 +365,9 @@ pub enum TransferInvalid {
/// (from_validator)
FromValidatorIneligableForTransfer(u64),
/// The validators withdrawal credentials do not match `transfer.pubkey`.
WithdrawalCredentialsMismatch,
///
/// (state_credentials, transfer_pubkey_credentials)
WithdrawalCredentialsMismatch(Hash256, Hash256),
/// The deposit was not signed by `deposit.pubkey`.
BadSignature,
/// Overflow when adding to `transfer.to` balance.

View File

@@ -64,7 +64,10 @@ pub fn verify_transfer(
);
verify!(
from_validator.withdrawal_credentials == transfer_withdrawal_credentials,
Invalid::WithdrawalCredentialsMismatch
Invalid::WithdrawalCredentialsMismatch(
from_validator.withdrawal_credentials,
transfer_withdrawal_credentials
)
);
let message = transfer.signed_root();