From 48755f704fe20e8dcb60d45dbb6a605ad5fb6558 Mon Sep 17 00:00:00 2001 From: MrChico Date: Thu, 14 May 2020 12:42:59 +0200 Subject: [PATCH] Add revert reason strings (#11) Co-authored-by: Alex Beregszaszi --- deposit_contract.sol | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/deposit_contract.sol b/deposit_contract.sol index f4e36b225..05509516b 100644 --- a/deposit_contract.sol +++ b/deposit_contract.sol @@ -76,18 +76,18 @@ contract DepositContract is IDepositContract { bytes32 deposit_data_root ) override external payable { // Extended ABI length checks since dynamic types are used. - require(pubkey.length == PUBKEY_LENGTH); - require(withdrawal_credentials.length == WITHDRAWAL_CREDENTIALS_LENGTH); - require(signature.length == SIGNATURE_LENGTH); + require(pubkey.length == PUBKEY_LENGTH, "DepositContract: invalid pubkey length"); + require(withdrawal_credentials.length == WITHDRAWAL_CREDENTIALS_LENGTH, "DepositContract: invalid withdrawal_credentials length"); + require(signature.length == SIGNATURE_LENGTH, "DepositContract: invalid signature length"); // Avoid overflowing the Merkle tree (and prevent edge case in computing `branch`) - require(deposit_count < MAX_DEPOSIT_COUNT); + require(deposit_count < MAX_DEPOSIT_COUNT, "DepositContract: merkle tree full"); // Check deposit amount - require(msg.value >= MIN_DEPOSIT_AMOUNT); - require(msg.value % GWEI == 0); + require(msg.value >= MIN_DEPOSIT_AMOUNT, "DepositContract: deposit value too low"); + require(msg.value % GWEI == 0, "DepositContract: deposit value not multiple of gwei"); uint deposit_amount = msg.value / GWEI; - require(deposit_amount < 2**64); + require(deposit_amount < 2**64, "DepositContract: deposit value too high"); // Emit `DepositEvent` log bytes memory amount = to_little_endian_64(uint64(deposit_amount)); @@ -110,7 +110,7 @@ contract DepositContract is IDepositContract { sha256(abi.encodePacked(amount, bytes24(0), signature_root)) )); // Verify computed and expected deposit data roots match - require(node == deposit_data_root); + require(node == deposit_data_root, "DepositContract: reconstructed DepositData does not match supplied deposit_data_root"); // Add deposit data root to Merkle tree (update a single `branch` node) deposit_count += 1;