0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Level 9. King(The Ethernaut)

Last updated at Posted at 2018-04-25

「The Ethernaut by Zeppelin Level 9. King」を翻訳してみました(CryptoZombiesのように?)

原文はこちら

https://ethernaut.zeppelin.solutions
9. Kingをクリック

9. King

難易度 6/6
下記のコントラクトは非常にシンプルなゲームのコードである。
そのゲームとは、
現時点での最大価格よりも多額のETHを送った全てのゲーム参加者は新しい王になるぞ。
そして、先代の王は新しい王に賞金を払い、少しのETHを生成する。
まあ、ネズミ講みたいなものだな((ノ∀`笑))
さて、この楽しい(?)ゲームを破壊することがお主への依頼内容となる。
インスタンスレベルに話を戻すと、(依頼内容は)王様権限を自分自身(のアドレス)に取り戻すことになる。
そのような王様宣言を拒絶することがこのレベルのクリア条件だ。
(すなわち、誰も王にはなれないようにすることだ)

ソースコード

pragma solidity ^0.4.18;

import 'zeppelin-solidity/contracts/ownership/Ownable.sol';

contract King is Ownable {

  address public king;
  uint public prize;

  function King() public payable {
    king = msg.sender;
    prize = msg.value;
  }

  function() external payable {
    require(msg.value >= prize || msg.sender == owner);
    king.transfer(msg.value);
    king = msg.sender;
    prize = msg.value;
  }
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?