Lista de temas
fuente:
pragma solidity ^0.4.18;
import 'zeppelin-solidity/contracts/ownership/Ownable.sol';
import 'openzeppelin-solidity/contracts/math/SafeMath.sol';
contract Fallout is Ownable {
using SafeMath for uint256;
mapping (address => uint) allocations;
/* constructor */
function Fal1out() public payable {
owner = msg.sender;
allocations[owner] = msg.value;
}
function allocate() public payable {
allocations[msg.sender] = allocations[msg.sender].add(msg.value);
}
function sendAllocation(address allocator) public {
require(allocations[allocator] > 0);
allocator.transfer(allocations[allocator]);
}
function collectAllocations() public onlyOwner {
msg.sender.transfer(this.balance);
}
function allocatorBalance(address allocator) public view returns (uint) {
return allocations[allocator];
}
}
requisitos de espacio libre:
reclamar la propiedad del contrato de abajo para completar este nivel. convertirá en el propietario del contrato.
Análisis y resolución de
Esta pregunta en realidad ...... primero en aprender acerca de los constructores y destructores Solidez ella.
De hecho, algo similar y Java, un constructor de la clase inicializa el tiempo de ejecución, cuando el destructor se recupera la destrucción realizada.
Características del constructor que contrato y el nombre ( "nombre de la clase") de la misma
Por ejemplo, el siguiente ejemplo:
pragma solidity ^0.4.13;
contract MyCoin{
uint amount;
address owner;
function MyCoin() public{ //构造函数,和合约同名
amount=90;
owner=msg.sender;
}
function getBalance() public constant returns (uint){
return amount;
}
function kill() public{ //析构函数,销毁时候执行
if(owner==msg.sender){
selfdestruct(owner);
}
}
}
Así que busque en esta pregunta:
contract Fallout is Ownable {
using SafeMath for uint256;
mapping (address => uint) allocations;
/* constructor */
function Fal1out() public payable {
owner = msg.sender;
allocations[owner] = msg.value;
}
Esta función anotada, la función ejecutiva es permitir que el propietario del contrato.
Se puede encontrar, nombre de contrato Fallout
, y el nombre de la función Fal1out
.
Así que no lo hace un constructor, el contrato utiliza el constructor por defecto (sentimiento es java)
Y porque modificador Shi public
, un individuo puede sintonizar ...... así:
Podemos ver ya el propietario:
Presentación, el despacho:
Después de la liquidación dio un poco de historia, el original realmente han cometido este error desarrollado, cambió el contrato no cambió el nombre del constructor: