withdraw implemented

Former-commit-id: f4ec0e7067ecc9406e7b3ef56659d5924b547c87 [formerly 6720442b533ed1bc406087452e5328363f1f01b9]
Former-commit-id: e2108b302ee39b6882c3de60b3ef19449c91e32b
This commit is contained in:
Fynn 2018-01-17 17:22:15 +01:00
parent 785d99de02
commit a3eb8fb155

View File

@ -1,6 +1,12 @@
pragma solidity ^0.4.19; pragma solidity ^0.4.19;
import "RLP.sol";
contract VMC { contract VMC {
using RLP for RLP.RLPItem;
using RLP for RLP.Iterator;
using RLP for bytes;
struct Validator { struct Validator {
// Amount of wei the validator holds // Amount of wei the validator holds
uint deposit; uint deposit;
@ -124,8 +130,18 @@ contract VMC {
return index; return index;
} }
function withdraw(uint _validatorIndex, bytes10 _sig) public returns(bool) { function withdraw(int _validatorIndex, bytes10 _sig) public returns(bool) {
// TODO var msgHash = keccak256("withdraw");
var result = validators[_validatorIndex].validationCodeAddr.call.gas(sigGasLimit)(msgHash, _sig) == true;
if (result) {
validators[_validatorIndex].returnAddr.transfer(validators[_validatorIndex].deposit);
isValcodeDeposited[validators[_validatorIndex].validationCodeAddr] = false;
delete validators[_validatorIndex];
stackPush(_validatorIndex);
--numValidators;
log1(msgHash, bytes32(_validatorIndex));
return result;
}
} }
function sample(int _shardId) public constant returns(address) { function sample(int _shardId) public constant returns(address) {
@ -175,8 +191,8 @@ contract VMC {
return shardList; return shardList;
} }
function addHeader(bytes12 header) public returns(bool) { function addHeader(bytes _header) public returns(bool) {
// TODO // TODO
} }