tengo este codigo:
pragma solidity ^0.4.11;
contract Bank {
struct Balance {
address owner;
uint vault;
uint profit;
}
Balance balance;
mapping (address => uint) balances;
function Bank() {
balance.owner = msg.sender;
balance = Balance(msg.sender, 0, 0);
}
function getBalance() constant returns (uint) {
if(msg.sender == balance.owner) {
return this.balance;
}
throw;
}
function withdrawOwner() returns (bool) {
if(msg.sender == balance.owner) {
balance.vault = balance.vault - balance.profit;
bool sent = balance.owner.send(balance.profit);
balance.profit = 0;
return sent;
}
return false;
}
function withdraw() returns (bool) {
uint customerBalance = balances[msg.sender];
if(customerBalance == 0) {
throw;
}
balance.vault -= customerBalance;
balances[msg.sender] = 0;
return msg.sender.send(customerBalance);
}
function deposit() payable returns (bool) {
uint take = 100;
uint depositAmount = msg.value;
balance.vault += depositAmount;
balance.profit += take;
balances[msg.sender] = depositAmount - take;
if(msg.value < 20) {
throw;
}
return true;
}
}
La gasolina estimada dice 4.700.000, lo que parece alto. ¿Es por el lanzamiento o por el envío? A juzgar por eso, con un precio de éter de alrededor de $ 200, ¿eso costaría $ 18?
Estoy multiplicando 20Gwei * 4.7e6 = 94000000000000000 = 0.094 ether
Agregué una estructura simulada y un mapeo a su ejemplo y lo compilé en Remix.
pragma solidity ^0.4.11;
// mock contracts
contract c{
// mock mapping
mapping (address=>uint) balances;
// mock struct
struct foo {
uint vault;
}
function withdraw() returns (bool) {
// init struct
foo memory balance;
uint customerBalance = balances[msg.sender];
if(customerBalance == 0) {
throw;
}
balance.vault -= customerBalance;
balances[msg.sender] = 0;
return msg.sender.send(customerBalance);
}
}
El compilador regresa. Gastas tu gasolina en otro lado. Proporcione el contrato completo.
Costo de transacción: 160457 gas. Costo de ejecución: 81525 gas.
UPD: Costo total del contrato
Costo de transacción: 379244 gas. Costo de ejecución: 245228 gas.
Result: "0x0000000000000000000000000000000000000000000000000000000000000001" Transaction cost: 23673 gas. Execution cost: 17401 gas. Decoded: bool: true
para retirar en Remix
0xCrema.eth
justin thomas
VicenteLg