mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2025-01-10 19:51:20 +00:00
42 lines
1.2 KiB
Solidity
42 lines
1.2 KiB
Solidity
pragma solidity 0.4.23;
|
|
|
|
contract ValidatorRegistration {
|
|
event ValidatorRegistered(
|
|
bytes32 indexed pubKey,
|
|
uint256 withdrawalShardID,
|
|
address indexed withdrawalAddressbytes32,
|
|
bytes32 indexed randaoCommitment
|
|
);
|
|
|
|
mapping (bytes32 => bool) public usedPubkey;
|
|
|
|
uint public constant VALIDATOR_DEPOSIT = 32 ether;
|
|
|
|
// Validator registers by sending a transaction of 32ETH to
|
|
// the following deposit function. The deposit function takes in
|
|
// validator's public key, withdrawal shard ID (which shard
|
|
// to send the deposit back to), withdrawal address (which address
|
|
// to send the deposit back to) and randao commitment.
|
|
function deposit(
|
|
bytes32 _pubkey,
|
|
uint _withdrawalShardID,
|
|
address _withdrawalAddressbytes32,
|
|
bytes32 _randaoCommitment
|
|
)
|
|
public payable
|
|
{
|
|
require(
|
|
msg.value == VALIDATOR_DEPOSIT,
|
|
"Incorrect validator deposit"
|
|
);
|
|
require(
|
|
!usedPubkey[_pubkey],
|
|
"Public key already used"
|
|
);
|
|
|
|
usedPubkey[_pubkey] = true;
|
|
|
|
emit ValidatorRegistered(_pubkey, _withdrawalShardID, _withdrawalAddressbytes32, _randaoCommitment);
|
|
}
|
|
}
|