Transaction Hash:
Block:
4833341 at Jan-01-2018 02:35:50 AM +UTC
Transaction Fee:
0.00369825 ETH
$9.31
Gas Used:
73,965 Gas / 50 Gwei
Emitted Events:
8 |
MyToken.Transfer( from=[Receiver] AIAcrowdsale, to=[Sender] 0xd6e911edff4b1b3475fd276948324b98b295abd7, value=49160000 )
|
9 |
AIAcrowdsale.FundTransfer( backer=[Sender] 0xd6e911edff4b1b3475fd276948324b98b295abd7, amount=491600000000000000, isContribution=True )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x0547bb9a...1b5Bf7CA1 | 484.806959375 Eth | 485.298559375 Eth | 0.4916 | ||
0x219101D6...f7a8f7988 | |||||
0x969e98cC...565d947DD | |||||
0xD6E911ED...8b295ABd7 |
0.50163162375 Eth
Nonce: 6
|
0.00633337375 Eth
Nonce: 7
| 0.49529825 | ||
0xEA674fdD...16B898ec8
Miner
| (Ethermine) | 959.482387050296995529 Eth | 959.486085300296995529 Eth | 0.00369825 |
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); } }