Transaction Hash:
Block:
4816919 at Dec-29-2017 07:06:10 AM +UTC
Transaction Fee:
0.00094382571644928 ETH
$3.42
Gas Used:
88,965 Gas / 10.608955392 Gwei
Emitted Events:
70 |
MyToken.Transfer( from=[Receiver] AIAcrowdsale, to=[Sender] 0xe6486f4e2b0d6be46d14ac1ae38f732667bebf51, value=200000000 )
|
71 |
AIAcrowdsale.FundTransfer( backer=[Sender] 0xe6486f4e2b0d6be46d14ac1ae38f732667bebf51, amount=2000000000000000000, isContribution=True )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x0547bb9a...1b5Bf7CA1 | 194.893504276 Eth | 196.893504276 Eth | 2 | ||
0x219101D6...f7a8f7988 | |||||
0x5A0b54D5...D3E029c4c
Miner
| (Spark Pool) | 2,620.308044527303122732 Eth | 2,620.308988353019572012 Eth | 0.00094382571644928 | |
0x969e98cC...565d947DD | |||||
0xE6486f4e...667bEbf51 |
2.005 Eth
Nonce: 0
|
0.00405617428355072 Eth
Nonce: 1
| 2.00094382571644928 |
Execution Trace
[AIAcrowdsale (ln:60)]
saleActive[AIAcrowdsale (ln:61)]
getRateAt[AIAcrowdsale (ln:66)]
transfer[AIAcrowdsale (ln:67)]
FundTransfer[AIAcrowdsale (ln:68)]
transfer[AIAcrowdsale (ln:69)]
File 1 of 2: AIAcrowdsale
File 2 of 2: MyToken
pragma solidity ^0.4.18; contract myOwned { address public contractOwner; function myOwned() public { contractOwner = msg.sender; } modifier onlyOwner { require(msg.sender == contractOwner); _;} function exOwner(address newOwner) onlyOwner public { contractOwner = newOwner;} } interface token { function transfer(address receiver, uint amount) public; } contract AIAcrowdsale is myOwned { uint public startDate; uint public stopDate; uint public fundingGoal; uint public amountRaised; token public contractTokenReward; address public contractWallet; mapping(address => uint256) public balanceOf; event GoalReached(address receiver, uint amount); event FundTransfer(address backer, uint amount, bool isContribution); function AIAcrowdsale ( uint _startDate, uint _stopDate, uint _fundingGoal, address _contractWallet, address _contractTokenReward ) public { startDate = _startDate; stopDate = _stopDate; fundingGoal = _fundingGoal * 1 ether; contractWallet = _contractWallet; contractTokenReward = token(_contractTokenReward); } function getCurrentTimestamp () internal constant returns (uint256) { return now; } function saleActive() public constant returns (bool) { return (now >= startDate && now <= stopDate && amountRaised < fundingGoal); } function getRateAt(uint256 at) public constant returns (uint256) { if (at < startDate) {return 0;} else if (at < (startDate + 168 hours)) {return 10000;} else if (at < (startDate + 336 hours)) {return 9000;} else if (at < (startDate + 528 hours)) {return 8100;} else if (at <= stopDate) {return 7300;} else if (at > stopDate) {return 0;} } function getRateNow() public constant returns (uint256) { return getRateAt(now); } function () public payable { require(saleActive()); require(amountRaised < fundingGoal); uint amount = msg.value; balanceOf[msg.sender] += amount; amountRaised += amount; uint price = 0.0001 ether / getRateAt(now); contractTokenReward.transfer(msg.sender, amount / price); FundTransfer(msg.sender, amount, true); contractWallet.transfer(msg.value); } function saleEnd() public onlyOwner { require(!saleActive()); require(now > stopDate ); contractWallet.transfer(this.balance); contractTokenReward.transfer(contractWallet, this.balance); } }
File 2 of 2: MyToken
pragma solidity ^0.4.15; contract MyOwned { address public owner; function MyOwned() public { owner = msg.sender; } modifier onlyOwner { require(msg.sender == owner ); _; } function transferOwnership(address newOwner) onlyOwner public { owner = newOwner; } } interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData) public; } contract MyToken is MyOwned { string public name; string public symbol; uint8 public decimals; uint256 public totalSupply; mapping (address => uint256) public balanceOf; mapping (address => bool) public frozenAccount; event FrozenFunds(address target,bool frozen); event Transfer(address indexed from,address indexed to,uint256 value); function MyToken(uint256 initialSupply,string tokenName,string tokenSymbol,uint8 decimalUnits){ balanceOf[msg.sender] = initialSupply; totalSupply = initialSupply; name = tokenName; symbol = tokenSymbol; decimals = decimalUnits; } function transfer(address _to, uint256 _value){ require(!frozenAccount[msg.sender]); require (balanceOf[msg.sender] >= _value); require (balanceOf[_to] + _value >= balanceOf[_to]); balanceOf[msg.sender] -= _value; balanceOf[_to] += _value; Transfer(msg.sender, _to, _value); } function freezeAccount(address target,bool freeze) onlyOwner { frozenAccount[target] = freeze; FrozenFunds(target, freeze); } function mintToken(address target, uint256 mintedAmount) onlyOwner { balanceOf[target] += mintedAmount; Transfer(0, this, mintedAmount); Transfer(this, target, mintedAmount); } }