Así que recibo el siguiente error cuando intento enviar las monedas a otra dirección, y con el depurador, no puedo averiguar dónde está el problema. ¿Qué estoy haciendo mal? (Acabo de empezar a aprender solidez hace unos días).
solidez de pragma ^0.4.0;
contract HelloWorld {
mapping (address => uint) balances;
address owner;
event Transfer(address indexed _from, address indexed _to, uint256 _value);
function HelloWorld() {
balances[msg.sender] = 1500;
owner = msg.sender;
}
function getBalances(address addr) returns(uint) {
return balances[addr];
}
function getOwner() returns(address) {
return owner;
}
function sendCoin(address receiver, uint amount) returns(bool success) {
if(balances[msg.sender] < amount) return false; // Check amount of coins
balances[msg.sender] -= amount;
balances[receiver] += amount;
Transfer(msg.sender, receiver, amount);
return true;
}
}
Error:
Ok, lo arreglé reemplazando msg.sender con la dirección del propietario var declarada en el constructor. ¿Alguien sabe por qué ahora funciona?
contract HelloWorld {
mapping (address => uint) balances;
address owner;
event Transfer(address indexed _from, address indexed _to, uint256 _value);
function HelloWorld() {
balances[msg.sender] = 1500;
owner = msg.sender;
}
function getBalance(address addr) returns(uint) {
return balances[addr];
}
function getOwner() returns(address) {
return owner;
}
function sendCoin(address receiver, uint amount) returns(bool success) {
if(amount > balances[owner]) return false; // Check balance
balances[owner] -= amount;
balances[receiver] += amount;
Transfer(owner, receiver, amount);
return true;
}
}
Ajoy Bhatia