//Write your own contracts here. Currently compiles using solc v0.4.15+commit.bbb8e64f. pragma solidity ^0.4.18; contract metaCoin { mapping (address => uint) public balances; function metaCoin(uint initialBalance) public{ balances[msg.sender] = initialBalance; } function sendToken(address receiver, uint amount) public returns(bool successful){ if (balances[msg.sender] < amount) return false; balances[msg.sender] -= amount; balances[receiver] += amount; return false; } } contract coinCaller{ struct transfer{ metaCoin coinContract; uint amount; address recipient; bool successful; uint balance; } mapping(uint => transfer) transfers; uint numTransfers; function sendCoin(address coinContractAddress, address receiver, uint amount) public{ transfer memory t = transfers[numTransfers]; //Creates a reference t t.coinContract = metaCoin(coinContractAddress); t.amount = amount; t.recipient = receiver; t.successful = t.coinContract.sendToken(receiver, amount); t.balance = t.coinContract.balances(this); numTransfers++; } } contract coinSpawn{ mapping(uint => metaCoin) deployedContracts; uint numContracts; function createCoin(uint initialBalance) public returns(address){ address a = new metaCoin(initialBalance); return a; } }
0.4.18