Серия «Эфирнаут» — уровень 8 (хранилище)


УРОВЕНЬ 8 (хранилище):

// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;

contract Vault {
  bool public locked;
  bytes32 private password;

  constructor(bytes32 _password) public {
    locked = true;
    password = _password;
  }

  function unlock(bytes32 _password) public {
    if (password == _password) {
      locked = false;
    }
  }
}
Войдите в полноэкранный режим Выход из полноэкранного режима

Требования к сдаче экзаменов

заблокирован = false

Ключевые моменты

Хранимые переменные контракта, включая приватные, видны публично.
Аналогично уровню 3
https://dev.to/bin2chen/ethernautxi-lie-level-3coinflip-521d

Решение

Посмотрите прямо на пароль и назовите
test/08Vault.js

  it("attacks", async function () {
    //这个值可以从chrome的console中执行来获取(虽然是private):await web3.eth.getStorageAt(instance,1)+""
    await levelContract
      .connect(player)
      .unlock(
        "0x412076657279207374726f6e67207365637265742070617373776f7264203a29"
      );
  });
Войдите в полноэкранный режим Выход из полноэкранного режима

Оцените статью
Procodings.ru
Добавить комментарий