Contract 0x82cf44be0768a3600c4bdea58607783a3a7c51ae

 
Txn Hash
Block
From
To
Value
0xc9d644a1cda400cb908e2d4bd1d9604212f9cc102d528e11b473ade67e26083c74802252019-04-01 3:37:43744 days 7 hrs agoFountain: Deployer IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.0002782620
0xf450c9893931d1cf68da8e844aa646d6efa8cec301417551a6a1b3f30bf60afb74473912019-03-27 0:29:07749 days 10 hrs ago0x0dd9fcb49dc177bb2e21d698f4af7d908e454a22 IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.0001233755
0x3426953f83ff6d22415094d8bc568633626758967b7695eaaa2e464127331edc71874022019-02-07 9:18:22797 days 1 hr ago0x49f23832cfb6366b2ef8e3f675a4f91387b93353 IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.00019748
0xd59dc21b09d96fe5472e43cea6a4a08f12df2c7432bd24ed125d915a849d614570807372019-01-17 9:11:16818 days 2 hrs ago0x48e18e7253aed8c967955580e637a09ffaed89de IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.0002467510
0x9f74cb51f63b44461410eda27f81548887e9783f090c133335b545a5faa21a9470601182019-01-13 16:46:59821 days 18 hrs ago0xa8f911f25606400e54fb7a241b89fa06d075d1d1 IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.00098740
0x04a17b98b823b6444b524ab29499b04cd478999498041174aaf34f15292114fd70600552019-01-13 16:29:39821 days 18 hrs ago0xa8f911f25606400e54fb7a241b89fa06d075d1d1 IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.00024675838910.00034
0x22562d0a4f2e0ea51ba1b4d8d5f8f1413f606dfb5b78c2db16d2cdbab5ee1d3e70533122019-01-12 11:15:20822 days 23 hrs ago0x2cc2d8b3af7cd3cbd1f945c1e2a93ab6d456b8c5 IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.00009874
0xc2de181188704caf3da570e6c2f558e20213d1e77c3dd08c9f35ff0b66f64c6d70378022019-01-09 16:39:34825 days 18 hrs ago0x17bbd40f985ee0d34535fe3506206bb5bb624792 IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.00002714251.1
0x80027b198a2412db9128267f10506d4c41a9d35a62a5e6f2bc4e1ca33c7de82370121522019-01-05 2:45:11830 days 8 hrs ago0x76713f2b9985e1cb28778350c30c02b94df74240 IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.00012584255.1
0x85a302c541d4dd52ecb6e5c22e7b639a312d23dde6531e1b9164b616ea6aa42f70093972019-01-04 14:42:04830 days 20 hrs ago0x76713f2b9985e1cb28778350c30c02b94df74240 IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.0002220759
0xefcc6c2bea4e85ba768a964c2061ca0c82f289156f31d66b8cf9e4c21f8aa8ad69834332018-12-31 2:51:21835 days 8 hrs ago0x84b7c964b4ba2bb029fb4957288b51f6fa1b905d IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.0001230555
0x3952f963191d64b667c13a17ffdb9bcaa4397ffda529ddabd4bd50ffc5c6152d69593882018-12-27 1:22:58839 days 9 hrs ago0x9fc6cd1a8ebc2d40c43906b1e698a0460260efea IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.0001596177416.468804096
0x0e170cd42a6b10fc2a4fd78b8f5061baaf535c5701a9d5f84620552166e2e21669592222018-12-27 0:45:45839 days 10 hrs ago0x75db444d0afc350d860a526d3b1c4bbabe09f054 IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.000493520
0x564f931f85c44763cb674b876663bea53c00e6f54db7a3b66eafe181200c134d69591802018-12-27 0:35:32839 days 10 hrs ago0x18df2ede35c6f13acc775d7b151b0d7d4e3db651 IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.000493520
0x1dcec02c6ef2b450444065a5a0f4005ffda7cecf09278f5ef42e3a434124ee1c69574292018-12-26 17:22:31839 days 17 hrs ago0x8ce6ae7e954a5a95ff02161b83308955ebc832cf IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.0003264814
0x638b1c96c096f58d25145fe162485a0d0dc3901d3d4545b64c4efabe42a52dd869572512018-12-26 16:41:14839 days 18 hrs agoFountain: Deployer IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.0025590840
0xd2cf50de1831b48f0be5c445b38c19833cceafda8020f4e1960878c1e10cabbf69572432018-12-26 16:39:38839 days 18 hrs ago0xb60c6f87b939ae24b04e5440664cc2291bc0d2a1 IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.0005044820
0x921156fa91b5f55a1dd178f1c2b78d11792cc9f1a146f6b6fbb609eb500e2b6869570712018-12-26 15:59:42839 days 19 hrs ago0x8ce6ae7e954a5a95ff02161b83308955ebc832cf IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.00040356414
0xc531cb362f39108a79ada4f6a952df659e5617d96ae730b55079246045e4f56e69570062018-12-26 15:44:26839 days 19 hrs ago0xffe628e582ef032ce40b2cb7829dc9e2d173d55f IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.000200165
0xc86da73bc529da00632d3c37a7694f5fa09b8bd8f362a78422e637e49acd52a469570012018-12-26 15:42:37839 days 19 hrs ago0x838213d5cbdb5a5b4423f10bf393a97e8620269e IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.0008044820
0x5c25002057549052c1585c79caafc1153e331e60935fe60ee508ee3a17f631e369569942018-12-26 15:41:19839 days 19 hrs ago0x77f814f8ccba595b83c69e587b159e9887890639 IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.00017698564.4
0x7dd793e210640865af1c28ba560798be0d2fcb5db48f978be858c8dfab2855c469569942018-12-26 15:41:19839 days 19 hrs ago0xb44fb30b4f0fdd0f0c3ce04cd4008a3c3e2ab3d3 IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.00011098564.4
0x36102cd5c6cc43c189c7d2be9ba6b6ca4a5678aca4b31bac80bda286042e2d0869569822018-12-26 15:38:26839 days 19 hrs ago0x8ce6ae7e954a5a95ff02161b83308955ebc832cf IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.00077313614
0xa24c8e44c7fb06b84e717f06b0393ac6a94dd7f8827222c22ef8fddfdc9887bc69569792018-12-26 15:35:57839 days 19 hrs ago0x8ce6ae7e954a5a95ff02161b83308955ebc832cf IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.00077313614
0x005d6ecad8bddbade2d3e1c737805e7ea98bc28ac90fea6958717b5dcf547ac469569732018-12-26 15:34:43839 days 19 hrs ago0x8ce6ae7e954a5a95ff02161b83308955ebc832cf IN  0x82cf44be0768a3600c4bdea58607783a3a7c51ae0 Ether0.00077313614
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0xc9d644a1cda400cb908e2d4bd1d9604212f9cc102d528e11b473ade67e26083c74802252019-04-01 3:37:43744 days 7 hrs ago 0x82cf44be0768a3600c4bdea58607783a3a7c51aeFountain: Deployer0 Ether
[ Download CSV Export 
Loading
Contract Self Destruct called at Txn Hash 0xc9d644a1cda400cb908e2d4bd1d9604212f9cc102d528e11b473ade67e26083c


Contract Source Code Verified (Exact Match)

Contract Name:
FountainToken

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-10-26
*/

pragma solidity ^0.4.25;

library SafeMath {
	function mul (uint256 a, uint256 b) internal pure returns (uint256) {
		if (a == 0) {
			return 0;
		}
		uint256 c = a * b;
		assert(c / a == b);
		return c;
	}

	function div (uint256 a, uint256 b) internal pure returns (uint256) {
		return a / b;
	}

	function sub (uint256 a, uint256 b) internal pure returns (uint256) {
		assert(b <= a);
		return a - b;
	}

	function add (uint256 a, uint256 b) internal pure returns (uint256) {
		uint256 c = a + b;
		assert(c >= a);
		return c;
	}
}

contract ERCBasic {
	event Transfer(address indexed from, address indexed to, uint256 value);

	function totalSupply () public view returns (uint256);
	function balanceOf (address who) public view returns (uint256);
	function transfer (address to, uint256 value) public returns (bool);
}

contract ERC is ERCBasic {
	event Approval(address indexed owner, address indexed spender, uint256 value);

	function transferFrom (address from, address to, uint256 value) public returns (bool);
	function allowance (address owner, address spender) public view returns (uint256);
	function approve (address spender, uint256 value) public returns (bool);
}

contract Ownable {
	event OwnershipTransferred(address indexed oldone, address indexed newone);
	event FoundationOwnershipTransferred(address indexed oldFoundationOwner, address indexed newFoundationOwner);

	address internal owner;
	address internal foundationOwner;

	constructor () public {
		owner = msg.sender;
		foundationOwner = owner;
	}

	modifier onlyOwner () {
		require(msg.sender == owner);
		_;
	}

	modifier hasMintability () {
		require(msg.sender == owner || msg.sender == foundationOwner);
		_;
	}

	function transferOwnership (address newOwner) public returns (bool);
	
	function setFountainFoundationOwner (address foundation) public returns (bool);
}

contract Pausable is Ownable {
	event ContractPause();
	event ContractResume();
	event ContractPauseSchedule(uint256 from, uint256 to);

	uint256 internal pauseFrom;
	uint256 internal pauseTo;

	modifier whenRunning () {
		require(now < pauseFrom || now > pauseTo);
		_;
	}

	modifier whenPaused () {
		require(now >= pauseFrom && now <= pauseTo);
		_;
	}

	function pause () public onlyOwner {
		pauseFrom = now - 1;
		pauseTo = now + 30000 days;
		emit ContractPause();
	}

	function pause (uint256 from, uint256 to) public onlyOwner {
		require(to > from);
		pauseFrom = from;
		pauseTo = to;
		emit ContractPauseSchedule(from, to);
	}

	function resume () public onlyOwner {
		pauseFrom = now - 2;
		pauseTo = now - 1;
		emit ContractResume();
	}
}

contract TokenForge is Ownable {
	event ForgeStart();
	event ForgeStop();

	bool public forge_running = true;

	modifier canForge () {
		require(forge_running);
		_;
	}

	modifier cannotForge () {
		require(!forge_running);
		_;
	}

	function startForge () public onlyOwner cannotForge returns (bool) {
		forge_running = true;
		emit ForgeStart();
		return true;
	}

	function stopForge () public onlyOwner canForge returns (bool) {
		forge_running = false;
		emit ForgeStop();
		return true;
	}
}

contract CappedToken is Ownable {
	using SafeMath for uint256;

	uint256 public token_cap;
	uint256 public token_created;
	uint256 public token_foundation_cap;
	uint256 public token_foundation_created;


	constructor (uint256 _cap, uint256 _foundationCap) public {
		token_cap = _cap;
		token_foundation_cap = _foundationCap;
	}

	function changeCap (uint256 _cap) public onlyOwner returns (bool) {
		if (_cap < token_created && _cap > 0) return false;
		token_cap = _cap;
		return true;
	}

	function canMint (uint256 amount) public view returns (bool) {
		return (token_cap == 0) || (token_created.add(amount) <= token_cap);
	}
	
	function canMintFoundation(uint256 amount) internal view returns(bool) {
		return(token_foundation_created.add(amount) <= token_foundation_cap);
	}
}

contract BasicToken is ERCBasic, Pausable {
	using SafeMath for uint256;

	mapping(address => uint256) public wallets;

	modifier canTransfer (address _from, address _to, uint256 amount) {
		require((_from != address(0)) && (_to != address(0)));
		require(_from != _to);
		require(amount > 0);
		_;
	}

	function balanceOf (address user) public view returns (uint256) {
		return wallets[user];
	}
}

contract DelegatableToken is ERC, BasicToken {
	using SafeMath for uint256;

	mapping(address => mapping(address => uint256)) public warrants;

	function allowance (address owner, address delegator) public view returns (uint256) {
		return warrants[owner][delegator];
	}

	function approve (address delegator, uint256 value) public whenRunning returns (bool) {
		if (delegator == msg.sender) return true;
		warrants[msg.sender][delegator] = value;
		emit Approval(msg.sender, delegator, value);
		return true;
	}

	function increaseApproval (address delegator, uint256 delta) public whenRunning returns (bool) {
		if (delegator == msg.sender) return true;
		uint256 value = warrants[msg.sender][delegator].add(delta);
		warrants[msg.sender][delegator] = value;
		emit Approval(msg.sender, delegator, value);
		return true;
	}

	function decreaseApproval (address delegator, uint256 delta) public whenRunning returns (bool) {
		if (delegator == msg.sender) return true;
		uint256 value = warrants[msg.sender][delegator];
		if (value < delta) {
			value = 0;
		}
		else {
			value = value.sub(delta);
		}
		warrants[msg.sender][delegator] = value;
		emit Approval(msg.sender, delegator, value);
		return true;
	}
}

contract LockableProtocol is BasicToken {
	function invest (address investor, uint256 amount) public returns (bool);
	function getInvestedToken (address investor) public view returns (uint256);
	function getLockedToken (address investor) public view returns (uint256);
	function availableWallet (address user) public view returns (uint256) {
		return wallets[user].sub(getLockedToken(user));
	}
}

contract MintAndBurnToken is TokenForge, CappedToken, LockableProtocol {
	using SafeMath for uint256;
	
	event Mint(address indexed user, uint256 amount);
	event Burn(address indexed user, uint256 amount);

	constructor (uint256 _initial, uint256 _cap, uint256 _fountainCap) public CappedToken(_cap, _fountainCap) {
		token_created = _initial;
		wallets[msg.sender] = _initial;

		emit Mint(msg.sender, _initial);
		emit Transfer(address(0), msg.sender, _initial);
	}

	function totalSupply () public view returns (uint256) {
		return token_created;
	}

	function totalFountainSupply() public view returns(uint256) {
		return token_foundation_created;
	}

	function mint (address target, uint256 amount) public hasMintability whenRunning canForge returns (bool) {
		require(target != owner && target != foundationOwner); // Owner和FoundationOwner不能成为mint的对象
		require(canMint(amount));

		if (msg.sender == foundationOwner) {
			require(canMintFoundation(amount));
			token_foundation_created = token_foundation_created.add(amount);
		}
		
		token_created = token_created.add(amount);
		wallets[target] = wallets[target].add(amount);

		emit Mint(target, amount);
		emit Transfer(address(0), target, amount);
		return true;
	}

	function burn (uint256 amount) public whenRunning canForge returns (bool) {
		uint256 balance = availableWallet(msg.sender);
		require(amount <= balance);

		token_created = token_created.sub(amount);
		wallets[msg.sender] -= amount;

		emit Burn(msg.sender, amount);
		emit Transfer(msg.sender, address(0), amount);

		return true;
	}
}

contract LockableToken is MintAndBurnToken, DelegatableToken {
	using SafeMath for uint256;

	struct LockBin {
		uint256 start;
		uint256 finish;
		uint256 duration;
		uint256 amount;
	}

	event InvestStart();
	event InvestStop();
	event NewInvest(uint256 release_start, uint256 release_duration);

	uint256 public releaseStart;
	uint256 public releaseDuration;
	bool public forceStopInvest;
	mapping(address => mapping(uint => LockBin)) public lockbins;

	modifier canInvest () {
		require(!forceStopInvest);
		_;
	}

	constructor (uint256 _initial, uint256 _cap, uint256 _fountainCap) public MintAndBurnToken(_initial, _cap, _fountainCap) {
		forceStopInvest = true;
	}

	function pauseInvest () public onlyOwner whenRunning returns (bool) {
		require(!forceStopInvest);
		forceStopInvest = true;
		emit InvestStop();
		return true;
	}

	function resumeInvest () public onlyOwner whenRunning returns (bool) {
		require(forceStopInvest);
		forceStopInvest = false;
		emit InvestStart();
		return true;
	}

	function setInvest (uint256 release_start, uint256 release_duration) public onlyOwner whenRunning returns (bool) {
		releaseStart = release_start;
		releaseDuration = release_duration;
		forceStopInvest = false;

		emit NewInvest(release_start, release_duration);
		return true;
	}

	function invest (address investor, uint256 amount) public onlyOwner whenRunning canInvest returns (bool) {
		require(investor != address(0));
		require(investor != owner);
		require(investor != foundationOwner);
		require(amount > 0);
		require(canMint(amount));

		mapping(uint => LockBin) locks = lockbins[investor];
		LockBin storage info = locks[0];
		uint index = info.amount + 1;
		locks[index] = LockBin({
			start: releaseStart,
			finish: releaseStart + releaseDuration,
			duration: releaseDuration / (1 days),
			amount: amount
		});
		info.amount = index;

		token_created = token_created.add(amount);
		wallets[investor] = wallets[investor].add(amount);
		emit Mint(investor, amount);
		emit Transfer(address(0), investor, amount);

		return true;
	}

	function batchInvest (address[] investors, uint256 amount) public onlyOwner whenRunning canInvest returns (bool) {
		require(amount > 0);

		uint investorsLength = investors.length;
		uint investorsCount = 0;
		uint i;
		address r;
		for (i = 0; i < investorsLength; i ++) {
			r = investors[i];
			if (r == address(0) || r == owner || r == foundationOwner) continue;
			investorsCount ++;
		}
		require(investorsCount > 0);

		uint256 totalAmount = amount.mul(uint256(investorsCount));
		require(canMint(totalAmount));

		token_created = token_created.add(totalAmount);

		for (i = 0; i < investorsLength; i ++) {
			r = investors[i];
			if (r == address(0) || r == owner || r == foundationOwner) continue;

			mapping(uint => LockBin) locks = lockbins[r];
			LockBin storage info = locks[0];
			uint index = info.amount + 1;
			locks[index] = LockBin({
				start: releaseStart,
				finish: releaseStart + releaseDuration,
				duration: releaseDuration / (1 days),
				amount: amount
			});
			info.amount = index;

			wallets[r] = wallets[r].add(amount);
			emit Mint(r, amount);
			emit Transfer(address(0), r, amount);
		}

		return true;
	}

	function batchInvests (address[] investors, uint256[] amounts) public onlyOwner whenRunning canInvest returns (bool) {
		uint investorsLength = investors.length;
		require(investorsLength == amounts.length);

		uint investorsCount = 0;
		uint256 totalAmount = 0;
		uint i;
		address r;
		for (i = 0; i < investorsLength; i ++) {
			r = investors[i];
			if (r == address(0) || r == owner) continue;
			investorsCount ++;
			totalAmount += amounts[i];
		}
		require(totalAmount > 0);
		require(canMint(totalAmount));

		uint256 amount;
		token_created = token_created.add(totalAmount);
		for (i = 0; i < investorsLength; i ++) {
			r = investors[i];
			if (r == address(0) || r == owner) continue;
			amount = amounts[i];
			wallets[r] = wallets[r].add(amount);
			emit Mint(r, amount);
			emit Transfer(address(0), r, amount);

			mapping(uint => LockBin) locks = lockbins[r];
			LockBin storage info = locks[0];
			uint index = info.amount + 1;
			locks[index] = LockBin({
				start: releaseStart,
				finish: releaseStart + releaseDuration,
				duration: releaseDuration / (1 days),
				amount: amount
			});
			info.amount = index;
		}

		return true;
	}

	function getInvestedToken (address investor) public view returns (uint256) {
		require(investor != address(0) && investor != owner && investor != foundationOwner);

		mapping(uint => LockBin) locks = lockbins[investor];
		uint256 balance = 0;
		uint l = locks[0].amount;
		for (uint i = 1; i <= l; i ++) {
			LockBin memory bin = locks[i];
			balance = balance.add(bin.amount);
		}
		return balance;
	}

	function getLockedToken (address investor) public view returns (uint256) {
		require(investor != address(0) && investor != owner && investor != foundationOwner);

		mapping(uint => LockBin) locks = lockbins[investor];
		uint256 balance = 0;
		uint256 d = 1;
		uint l = locks[0].amount;
		for (uint i = 1; i <= l; i ++) {
			LockBin memory bin = locks[i];
			if (now <= bin.start) {
				balance = balance.add(bin.amount);
			}
			else if (now < bin.finish) {
				d = (now - bin.start) / (1 days);
				balance = balance.add(bin.amount - bin.amount * d / bin.duration);
			}
		}
		return balance;
	}

	function canPay (address user, uint256 amount) internal view returns (bool) {
		uint256 balance = availableWallet(user);
		return amount <= balance;
	}

	function transfer (address target, uint256 value) public whenRunning canTransfer(msg.sender, target, value) returns (bool) {
		require(target != owner);
		require(canPay(msg.sender, value));

		wallets[msg.sender] = wallets[msg.sender].sub(value);
		wallets[target] = wallets[target].add(value);
		emit Transfer(msg.sender, target, value);
		return true;
	}


	function batchTransfer (address[] receivers, uint256 amount) public whenRunning returns (bool) {
		require(amount > 0);

		uint receiveLength = receivers.length;
		uint receiverCount = 0;
		uint i;
		address r;
		for (i = 0; i < receiveLength; i ++) {
			r = receivers[i];
			if (r == address(0) || r == owner) continue;
			receiverCount ++;
		}
		require(receiverCount > 0);

		uint256 totalAmount = amount.mul(uint256(receiverCount));
		require(canPay(msg.sender, totalAmount));

		wallets[msg.sender] -= totalAmount;
		for (i = 0; i < receiveLength; i++) {
			r = receivers[i];
			if (r == address(0) || r == owner) continue;
			wallets[r] = wallets[r].add(amount);
			emit Transfer(msg.sender, r, amount);
		}
		return true;
	}

	function batchTransfers (address[] receivers, uint256[] amounts) public whenRunning returns (bool) {
		uint receiveLength = receivers.length;
		require(receiveLength == amounts.length);

		uint receiverCount = 0;
		uint256 totalAmount = 0;
		uint i;
		address r;
		for (i = 0; i < receiveLength; i ++) {
			r = receivers[i];
			if (r == address(0) || r == owner) continue;
			receiverCount ++;
			totalAmount += amounts[i];
		}
		require(totalAmount > 0);
		require(canPay(msg.sender, totalAmount));

		wallets[msg.sender] -= totalAmount;
		uint256 amount;
		for (i = 0; i < receiveLength; i++) {
			r = receivers[i];
			if (r == address(0) || r == owner) continue;
			amount = amounts[i];
			if (amount == 0) continue;
			wallets[r] = wallets[r].add(amount);
			emit Transfer(msg.sender, r, amount);
		}
		return true;
	}

	function transferFrom (address from, address to, uint256 value) public whenRunning canTransfer(from, to, value) returns (bool) {
		require(from != owner);
		require(to != owner);
		require(canPay(from, value));

		uint256 warrant;
		if (msg.sender != from) {
			warrant = warrants[from][msg.sender];
			require(value <= warrant);
			warrants[from][msg.sender] = warrant.sub(value);
		}

		wallets[from] = wallets[from].sub(value);
		wallets[to] = wallets[to].add(value);
		emit Transfer(from, to, value);
		return true;
	}

	function batchTransferFrom (address from, address[] receivers, uint256 amount) public whenRunning returns (bool) {
		require(from != address(0) && from != owner);
		require(amount > 0);

		uint receiveLength = receivers.length;
		uint receiverCount = 0;
		uint i;
		address r;
		for (i = 0; i < receiveLength; i ++) {
			r = receivers[i];
			if (r == address(0) || r == owner) continue;
			receiverCount ++;
		}
		require(receiverCount > 0);

		uint256 totalAmount = amount.mul(uint256(receiverCount));
		require(canPay(from, totalAmount));

		uint256 warrant;
		if (msg.sender != from) {
			warrant = warrants[from][msg.sender];
			require(totalAmount <= warrant);
			warrants[from][msg.sender] = warrant.sub(totalAmount);
		}

		wallets[from] -= totalAmount;
		for (i = 0; i < receiveLength; i++) {
			r = receivers[i];
			if (r == address(0) || r == owner) continue;
			wallets[r] = wallets[r].add(amount);
			emit Transfer(from, r, amount);
		}
		return true;
	}

	function batchTransferFroms (address from, address[] receivers, uint256[] amounts) public whenRunning returns (bool) {
		require(from != address(0) && from != owner);

		uint receiveLength = receivers.length;
		require(receiveLength == amounts.length);

		uint receiverCount = 0;
		uint256 totalAmount = 0;
		uint i;
		address r;
		for (i = 0; i < receiveLength; i ++) {
			r = receivers[i];
			if (r == address(0) || r == owner) continue;
			receiverCount ++;
			totalAmount += amounts[i];
		}
		require(totalAmount > 0);
		require(canPay(from, totalAmount));

		uint256 warrant;
		if (msg.sender != from) {
			warrant = warrants[from][msg.sender];
			require(totalAmount <= warrant);
			warrants[from][msg.sender] = warrant.sub(totalAmount);
		}

		wallets[from] -= totalAmount;
		uint256 amount;
		for (i = 0; i < receiveLength; i++) {
			r = receivers[i];
			if (r == address(0) || r == owner) continue;
			amount = amounts[i];
			if (amount == 0) continue;
			wallets[r] = wallets[r].add(amount);
			emit Transfer(from, r, amount);
		}
		return true;
	}
}

contract FountainToken is LockableToken {
	string  public constant name     = "Fountain";
	string  public constant symbol   = "FTN";
	uint8   public constant decimals = 18;

	uint256 private constant TOKEN_CAP     = 10000000000 * 10 ** uint256(decimals);
	uint256 private constant TOKEN_FOUNDATION_CAP = 300000000   * 10 ** uint256(decimals);
	uint256 private constant TOKEN_INITIAL = 0   * 10 ** uint256(decimals);

	constructor () public LockableToken(TOKEN_INITIAL, TOKEN_CAP, TOKEN_FOUNDATION_CAP) {
	}

	function suicide () public onlyOwner {
		selfdestruct(owner);
	}

	function transferOwnership (address newOwner) public onlyOwner returns (bool) {
		require(newOwner != address(0));
		require(newOwner != owner);
		require(newOwner != foundationOwner);
		require(wallets[owner] == 0);
		require(wallets[newOwner] == 0);

		address oldOwner = owner;
		owner = newOwner;
		emit OwnershipTransferred(oldOwner, newOwner);
		
		return true;
	}
	
	function setFountainFoundationOwner (address newFoundationOwner) public onlyOwner returns (bool) {
		require(newFoundationOwner != address(0));
		require(newFoundationOwner != foundationOwner);
		require(newFoundationOwner != owner);
		require(wallets[newFoundationOwner] == 0);

		address oldFoundation = foundationOwner;
		foundationOwner = newFoundationOwner;

		emit FoundationOwnershipTransferred(oldFoundation, foundationOwner);

		uint256 all = wallets[oldFoundation];
		wallets[oldFoundation] -= all;
		wallets[newFoundationOwner] = all;
		emit Transfer(oldFoundation, newFoundationOwner, all);

		return true;
	}
	
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[],"name":"resume","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"delegator","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"uint256"},{"name":"to","type":"uint256"}],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"receivers","type":"address[]"},{"name":"amounts","type":"uint256[]"}],"name":"batchTransfers","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"burn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"release_start","type":"uint256"},{"name":"release_duration","type":"uint256"}],"name":"setInvest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"startForge","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"forge_running","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"resumeInvest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"lockbins","outputs":[{"name":"start","type":"uint256"},{"name":"finish","type":"uint256"},{"name":"duration","type":"uint256"},{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"investor","type":"address"}],"name":"getLockedToken","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"receivers","type":"address[]"},{"name":"amounts","type":"uint256[]"}],"name":"batchTransferFroms","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"amount","type":"uint256"}],"name":"canMint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"delegator","type":"address"},{"name":"delta","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"investors","type":"address[]"},{"name":"amounts","type":"uint256[]"}],"name":"batchInvests","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newFoundationOwner","type":"address"}],"name":"setFountainFoundationOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"releaseStart","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"receivers","type":"address[]"},{"name":"amount","type":"uint256"}],"name":"batchTransferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_cap","type":"uint256"}],"name":"changeCap","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"receivers","type":"address[]"},{"name":"amount","type":"uint256"}],"name":"batchTransfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"wallets","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalFountainSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"warrants","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"forceStopInvest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"investor","type":"address"}],"name":"getInvestedToken","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pauseInvest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopForge","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"investor","type":"address"},{"name":"amount","type":"uint256"}],"name":"invest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"investors","type":"address[]"},{"name":"amount","type":"uint256"}],"name":"batchInvest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token_foundation_cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"suicide","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token_foundation_created","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"availableWallet","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"delegator","type":"address"},{"name":"delta","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"delegator","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token_created","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token_cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"releaseDuration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"InvestStart","type":"event"},{"anonymous":false,"inputs":[],"name":"InvestStop","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"release_start","type":"uint256"},{"indexed":false,"name":"release_duration","type":"uint256"}],"name":"NewInvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[],"name":"ContractPause","type":"event"},{"anonymous":false,"inputs":[],"name":"ContractResume","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"uint256"},{"indexed":false,"name":"to","type":"uint256"}],"name":"ContractPauseSchedule","type":"event"},{"anonymous":false,"inputs":[],"name":"ForgeStart","type":"event"},{"anonymous":false,"inputs":[],"name":"ForgeStop","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"oldone","type":"address"},{"indexed":true,"name":"newone","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"oldFoundationOwner","type":"address"},{"indexed":true,"name":"newFoundationOwner","type":"address"}],"name":"FoundationOwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

60806040526001805460a060020a60ff0219167401000000000000000000000000000000000000000017905534801561003757600080fd5b506000805433600160a060020a0319918216811780845560018054600160a060020a0390921691909316179091556b204fce5e3e2502611000000060028190556af8277896582678ac00000060048190556003849055828452600860209081526040808620869055805186815290519394929386938693869391927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859281900390910190a260408051848152905133916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050600c805460ff1916600117905550505050612e28806101366000396000f3006080604052600436106102455763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663046f7da2811461024a57806306fdde0314610261578063095ea7b3146102eb57806318160ddd1461032357806323b872dd1461034a5780632d21551814610374578063313ce5671461038f5780633badca25146103ba57806340c10f191461044857806342966c681461046c57806342bb66c41461048457806348cc7b6e1461049f57806348eac902146104b4578063491eeb3a146104c95780634fcc1fc0146104de578063560ef1bf1461052857806359dd7ad4146105495780635dd871a3146105e557806366188463146105fd5780636ad953171461062157806370a08231146106af57806373a72b18146106d0578063766e33f4146106f157806376f660f614610706578063800edb9d1461076b57806383f12fec146107835780638456cb59146107da57806389b08f11146107ef5780639433a4981461081057806395d89b41146108255780639aa989791461083a5780639b890104146108615780639cf4836514610876578063a4c673c514610897578063a9059cbb146108ac578063b703aa3a146108d0578063b9b8c246146108e5578063bd632e1014610909578063c04e7e1714610960578063c96cd46f14610975578063d26e14141461098a578063d28cb7b51461099f578063d73dd623146109c0578063dd62ed3e146109e4578063de8ae5c014610a0b578063efc5d18314610a20578063f2fde38b14610a35578063f9b4189114610a56575b600080fd5b34801561025657600080fd5b5061025f610a6b565b005b34801561026d57600080fd5b50610276610abd565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102b0578181015183820152602001610298565b50505050905090810190601f1680156102dd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102f757600080fd5b5061030f600160a060020a0360043516602435610af4565b604080519115158252519081900360200190f35b34801561032f57600080fd5b50610338610b93565b60408051918252519081900360200190f35b34801561035657600080fd5b5061030f600160a060020a0360043581169060243516604435610b99565b34801561038057600080fd5b5061025f600435602435610d80565b34801561039b57600080fd5b506103a4610dec565b6040805160ff9092168252519081900360200190f35b3480156103c657600080fd5b506040805160206004803580820135838102808601850190965280855261030f95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610df19650505050505050565b34801561045457600080fd5b5061030f600160a060020a0360043516602435610fed565b34801561047857600080fd5b5061030f600435611190565b34801561049057600080fd5b5061030f60043560243561126f565b3480156104ab57600080fd5b5061030f6112fb565b3480156104c057600080fd5b5061030f61137d565b3480156104d557600080fd5b5061030f61138d565b3480156104ea57600080fd5b50610502600160a060020a036004351660243561140b565b604080519485526020850193909352838301919091526060830152519081900360800190f35b34801561053457600080fd5b50610338600160a060020a036004351661143d565b34801561055557600080fd5b5060408051602060046024803582810135848102808701860190975280865261030f968435600160a060020a031696369660449591949091019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a99890198929750908201955093508392508501908490808284375094975061159a9650505050505050565b3480156105f157600080fd5b5061030f60043561184d565b34801561060957600080fd5b5061030f600160a060020a036004351660243561187c565b34801561062d57600080fd5b506040805160206004803580820135838102808601850190965280855261030f95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506119679650505050505050565b3480156106bb57600080fd5b50610338600160a060020a0360043516611c44565b3480156106dc57600080fd5b5061030f600160a060020a0360043516611c5f565b3480156106fd57600080fd5b50610338611da7565b34801561071257600080fd5b5060408051602060046024803582810135848102808701860190975280865261030f968435600160a060020a0316963696604495919490910192918291850190849080828437509497505093359450611dad9350505050565b34801561077757600080fd5b5061030f600435612026565b34801561078f57600080fd5b506040805160206004803580820135838102808601850190965280855261030f9536959394602494938501929182918501908490808284375094975050933594506120659350505050565b3480156107e657600080fd5b5061025f612227565b3480156107fb57600080fd5b50610338600160a060020a036004351661227b565b34801561081c57600080fd5b5061033861228d565b34801561083157600080fd5b50610276612293565b34801561084657600080fd5b50610338600160a060020a03600435811690602435166122ca565b34801561086d57600080fd5b5061030f6122e7565b34801561088257600080fd5b50610338600160a060020a03600435166122f0565b3480156108a357600080fd5b5061030f6123f2565b3480156108b857600080fd5b5061030f600160a060020a0360043516602435612472565b3480156108dc57600080fd5b5061030f6125ac565b3480156108f157600080fd5b5061030f600160a060020a0360043516602435612629565b34801561091557600080fd5b506040805160206004803580820135838102808601850190965280855261030f9536959394602494938501929182918501908490808284375094975050933594506128219350505050565b34801561096c57600080fd5b50610338612af3565b34801561098157600080fd5b5061025f612af9565b34801561099657600080fd5b50610338612b1e565b3480156109ab57600080fd5b50610338600160a060020a0360043516612b24565b3480156109cc57600080fd5b5061030f600160a060020a0360043516602435612b57565b3480156109f057600080fd5b50610338600160a060020a0360043581169060243516612bc4565b348015610a1757600080fd5b50610338612bef565b348015610a2c57600080fd5b50610338612bf5565b348015610a4157600080fd5b5061030f600160a060020a0360043516612bfb565b348015610a6257600080fd5b50610338612d09565b600054600160a060020a03163314610a8257600080fd5b426001198101600655600019016007556040517fa968378e910134ded7db0a5144e2c6a2d157f1685baa51f39de6c13a5e8ffa8990600090a1565b60408051808201909152600881527f466f756e7461696e000000000000000000000000000000000000000000000000602082015281565b6000600654421080610b07575060075442115b1515610b1257600080fd5b600160a060020a038316331415610b2b57506001610b8d565b336000818152600960209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60035490565b600080600654421080610bad575060075442115b1515610bb857600080fd5b848484600160a060020a03831615801590610bdb5750600160a060020a03821615155b1515610be657600080fd5b600160a060020a038381169083161415610bff57600080fd5b60008111610c0c57600080fd5b600054600160a060020a0389811691161415610c2757600080fd5b600054600160a060020a0388811691161415610c4257600080fd5b610c4c8887612d0f565b1515610c5757600080fd5b33600160a060020a03891614610ccf57600160a060020a0388166000908152600960209081526040808320338452909152902054935083861115610c9a57600080fd5b610caa848763ffffffff612d2616565b600160a060020a03891660009081526009602090815260408083203384529091529020555b600160a060020a038816600090815260086020526040902054610cf8908763ffffffff612d2616565b600160a060020a03808a166000908152600860205260408082209390935590891681522054610d2d908763ffffffff612d3816565b600160a060020a038089166000818152600860209081526040918290209490945580518a815290519193928c1692600080516020612dbd83398151915292918290030190a3506001979650505050505050565b600054600160a060020a03163314610d9757600080fd5b818111610da357600080fd5b60068290556007819055604080518381526020810183905281517fac04925986d687f5e264774dac7e393e920d61c9b99e92497853eb519484e4dd929181900390910190a15050565b601281565b6000806000806000806000600654421080610e0d575060075442115b1515610e1857600080fd5b885188519096508614610e2a57600080fd5b6000945060009350600092505b85831015610eb4578883815181101515610e4d57fe5b602090810290910101519150600160a060020a0382161580610e7c5750600054600160a060020a038381169116145b15610e8657610ea9565b8751600190950194889084908110610e9a57fe5b90602001906020020151840193505b600190920191610e37565b60008411610ec157600080fd5b610ecb3385612d0f565b1515610ed657600080fd5b3360009081526008602052604081208054869003905592505b85831015610fde578883815181101515610f0557fe5b602090810290910101519150600160a060020a0382161580610f345750600054600160a060020a038381169116145b15610f3e57610fd3565b8783815181101515610f4c57fe5b9060200190602002015190508060001415610f6657610fd3565b600160a060020a038216600090815260086020526040902054610f8f908263ffffffff612d3816565b600160a060020a038316600081815260086020908152604091829020939093558051848152905191923392600080516020612dbd8339815191529281900390910190a35b600190920191610eef565b50600198975050505050505050565b60008054600160a060020a03163314806110115750600154600160a060020a031633145b151561101c57600080fd5b60065442108061102d575060075442115b151561103857600080fd5b60015460a060020a900460ff16151561105057600080fd5b600054600160a060020a0384811691161480159061107c5750600154600160a060020a03848116911614155b151561108757600080fd5b6110908261184d565b151561109b57600080fd5b600154600160a060020a03163314156110d9576110b782612d4e565b15156110c257600080fd5b6005546110d5908363ffffffff612d3816565b6005555b6003546110ec908363ffffffff612d3816565b600355600160a060020a038316600090815260086020526040902054611118908363ffffffff612d3816565b600160a060020a03841660008181526008602090815260409182902093909355805185815290519192600080516020612ddd83398151915292918290030190a2604080518381529051600160a060020a03851691600091600080516020612dbd8339815191529181900360200190a350600192915050565b6000806006544210806111a4575060075442115b15156111af57600080fd5b60015460a060020a900460ff1615156111c757600080fd5b6111d033612b24565b9050808311156111df57600080fd5b6003546111f2908463ffffffff612d2616565b6003553360008181526008602090815260409182902080548790039055815186815291517fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59281900390910190a26040805184815290516000913391600080516020612dbd8339815191529181900360200190a350600192915050565b60008054600160a060020a0316331461128757600080fd5b600654421080611298575060075442115b15156112a357600080fd5b600a839055600b829055600c805460ff19169055604080518481526020810184905281517f4a1179f4d7ff6354606313c42f6054383e9549f9db56ac4b66b424bc940f79ed929181900390910190a150600192915050565b60008054600160a060020a0316331461131357600080fd5b60015460a060020a900460ff161561132a57600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a1790556040517fa039c7af624b7305fc7002f670d116cf0c8b61a558a10ff96be611c5c235751790600090a150600190565b60015460a060020a900460ff1681565b60008054600160a060020a031633146113a557600080fd5b6006544210806113b6575060075442115b15156113c157600080fd5b600c5460ff1615156113d257600080fd5b600c805460ff191690556040517f14245ee125d3810a2a28f6b656b676516364a51e95a688ddf08af4194fc3db1290600090a150600190565b600d60209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b60008060008060008061144e612d93565b600160a060020a038816158015906114745750600054600160a060020a03898116911614155b801561148e5750600154600160a060020a03898116911614155b151561149957600080fd5b600160a060020a0388166000908152600d60209081526040808320838052918290528220600301549097509095506001945092508391505b82821161158e57506000818152602086815260409182902082516080810184528154808252600183015493820193909352600282015493810193909352600301546060830152421161153a57606081015161153390869063ffffffff612d3816565b9450611583565b80602001514210156115835780516201518090420304935061158081604001518583606001510281151561156a57fe5b0482606001510386612d3890919063ffffffff16565b94505b6001909101906114d1565b50929695505050505050565b6000806000806000806000806006544210806115b7575060075442115b15156115c257600080fd5b600160a060020a038b16158015906115e85750600054600160a060020a038c8116911614155b15156115f357600080fd5b89518951909750871461160557600080fd5b6000955060009450600093505b8684101561168f57898481518110151561162857fe5b602090810290910101519250600160a060020a03831615806116575750600054600160a060020a038481169116145b1561166157611684565b885160019096019589908590811061167557fe5b90602001906020020151850194505b600190930192611612565b6000851161169c57600080fd5b6116a68b86612d0f565b15156116b157600080fd5b33600160a060020a038c161461172957600160a060020a038b1660009081526009602090815260408083203384529091529020549150818511156116f457600080fd5b611704828663ffffffff612d2616565b600160a060020a038c1660009081526009602090815260408083203384529091529020555b600160a060020a038b1660009081526008602052604081208054879003905593505b8684101561183c57898481518110151561176157fe5b602090810290910101519250600160a060020a03831615806117905750600054600160a060020a038481169116145b1561179a57611831565b88848151811015156117a857fe5b90602001906020020151905080600014156117c257611831565b600160a060020a0383166000908152600860205260409020546117eb908263ffffffff612d3816565b600160a060020a0380851660008181526008602090815260409182902094909455805185815290519193928f1692600080516020612dbd83398151915292918290030190a35b60019093019261174b565b5060019a9950505050505050505050565b6000600254600014806118745750600254600354611871908463ffffffff612d3816565b11155b90505b919050565b600080600654421080611890575060075442115b151561189b57600080fd5b600160a060020a0384163314156118b55760019150611960565b50336000908152600960209081526040808320600160a060020a0387168452909152902054828110156118ea575060006118fd565b6118fa818463ffffffff612d2616565b90505b336000818152600960209081526040808320600160a060020a03891680855290835292819020859055805185815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a3600191505b5092915050565b60008054819081908190819081908190819081908190600160a060020a0316331461199157600080fd5b6006544210806119a2575060075442115b15156119ad57600080fd5b600c5460ff16156119bd57600080fd5b8b518b5190995089146119cf57600080fd5b6000975060009650600095505b88861015611a59578b868151811015156119f257fe5b602090810290910101519450600160a060020a0385161580611a215750600054600160a060020a038681169116145b15611a2b57611a4e565b8a516001909801978b9087908110611a3f57fe5b90602001906020020151870196505b6001909501946119dc565b60008711611a6657600080fd5b611a6f8761184d565b1515611a7a57600080fd5b600354611a8d908863ffffffff612d3816565b600355600095505b88861015611c32578b86815181101515611aab57fe5b602090810290910101519450600160a060020a0385161580611ada5750600054600160a060020a038681169116145b15611ae457611c27565b8a86815181101515611af257fe5b6020908102909101810151600160a060020a03871660009081526008909252604090912054909450611b2a908563ffffffff612d3816565b600160a060020a03861660008181526008602090815260409182902093909355805187815290519192600080516020612ddd83398151915292918290030190a2604080518581529051600160a060020a03871691600091600080516020612dbd8339815191529181900360200190a3505050600160a060020a0382166000908152600d60209081526040808320838052808352818420600380820180548551608081018752600a54808252600b54908101828a0190815262015180909104828901908152606083018c81526001948501808d529a89905298909a209151825551918101919091559651600288015593519501949094559082905591905b600190950194611a95565b5060019b9a5050505050505050505050565b600160a060020a031660009081526008602052604090205490565b6000805481908190600160a060020a03163314611c7b57600080fd5b600160a060020a0384161515611c9057600080fd5b600154600160a060020a0385811691161415611cab57600080fd5b600054600160a060020a0385811691161415611cc657600080fd5b600160a060020a03841660009081526008602052604090205415611ce957600080fd5b60018054600160a060020a0386811673ffffffffffffffffffffffffffffffffffffffff19831617928390556040519181169450919091169083907ffc952dd6557f6861208ba39acbc0cfe5b4f12e76e6b467ed4200003f2b0cd8b090600090a350600160a060020a0380821660008181526008602090815260408083208054908490559488168084529281902085905580518581529051929392600080516020612dbd833981519152929181900390910190a35060019392505050565b600a5481565b6000806000806000806000600654421080611dc9575060075442115b1515611dd457600080fd5b600160a060020a038a1615801590611dfa5750600054600160a060020a038b8116911614155b1515611e0557600080fd5b60008811611e1257600080fd5b8851955060009450600093505b85841015611e80578884815181101515611e3557fe5b602090810290910101519250600160a060020a0383161580611e645750600054600160a060020a038481169116145b15611e6e57611e75565b6001909401935b600190930192611e1f565b60008511611e8d57600080fd5b611e9d888663ffffffff612d6816565b9150611ea98a83612d0f565b1515611eb457600080fd5b33600160a060020a038b1614611f2b5750600160a060020a038916600090815260096020908152604080832033845290915290205480821115611ef657600080fd5b611f06818363ffffffff612d2616565b600160a060020a038b1660009081526009602090815260408083203384529091529020555b600160a060020a038a1660009081526008602052604081208054849003905593505b85841015612016578884815181101515611f6357fe5b602090810290910101519250600160a060020a0383161580611f925750600054600160a060020a038481169116145b15611f9c5761200b565b600160a060020a038316600090815260086020526040902054611fc5908963ffffffff612d3816565b600160a060020a038085166000818152600860209081526040918290209490945580518c815290519193928e1692600080516020612dbd83398151915292918290030190a35b600190930192611f4d565b5060019998505050505050505050565b60008054600160a060020a0316331461203e57600080fd5b6003548210801561204f5750600082115b1561205c57506000611877565b50600255600190565b60008060008060008060065442108061207f575060075442115b151561208a57600080fd5b6000871161209757600080fd5b8751945060009350600092505b848310156121055787838151811015156120ba57fe5b602090810290910101519150600160a060020a03821615806120e95750600054600160a060020a038381169116145b156120f3576120fa565b6001909301925b6001909201916120a4565b6000841161211257600080fd5b612122878563ffffffff612d6816565b905061212e3382612d0f565b151561213957600080fd5b3360009081526008602052604081208054839003905592505b8483101561221957878381518110151561216857fe5b602090810290910101519150600160a060020a03821615806121975750600054600160a060020a038381169116145b156121a15761220e565b600160a060020a0382166000908152600860205260409020546121ca908863ffffffff612d3816565b600160a060020a0383166000818152600860209081526040918290209390935580518a8152905191923392600080516020612dbd8339815191529281900390910190a35b600190920191612152565b506001979650505050505050565b600054600160a060020a0316331461223e57600080fd5b426000198101600655639a7ec800016007556040517fb7e43176b89d4cefed0cca5fc9b2f8e752d3d192b83123ef306a0a55dcd18a6b90600090a1565b60086020526000908152604090205481565b60055490565b60408051808201909152600381527f46544e0000000000000000000000000000000000000000000000000000000000602082015281565b600960209081526000928352604080842090915290825290205481565b600c5460ff1681565b6000806000806000612300612d93565b600160a060020a038716158015906123265750600054600160a060020a03888116911614155b80156123405750600154600160a060020a03888116911614155b151561234b57600080fd5b600160a060020a0387166000908152600d60209081526040808320838052918290528220600301549096509094509250600191505b8282116123e7575060008181526020858152604091829020825160808101845281548152600182015492810192909252600281015492820192909252600390910154606082018190526123da90859063ffffffff612d3816565b9350600190910190612380565b509195945050505050565b60008054600160a060020a0316331461240a57600080fd5b60065442108061241b575060075442115b151561242657600080fd5b600c5460ff161561243657600080fd5b600c805460ff191660011790556040517fcd16c719d9bfc829719d0e728b877ea1f29c77fd759480f077f4f6bc2a26e02590600090a150600190565b6000600654421080612485575060075442115b151561249057600080fd5b33838382158015906124aa5750600160a060020a03821615155b15156124b557600080fd5b600160a060020a0383811690831614156124ce57600080fd5b600081116124db57600080fd5b600054600160a060020a03878116911614156124f657600080fd5b6125003386612d0f565b151561250b57600080fd5b3360009081526008602052604090205461252b908663ffffffff612d2616565b3360009081526008602052604080822092909255600160a060020a0388168152205461255d908663ffffffff612d3816565b600160a060020a038716600081815260086020908152604091829020939093558051888152905191923392600080516020612dbd8339815191529281900390910190a350600195945050505050565b60008054600160a060020a031633146125c457600080fd5b60015460a060020a900460ff1615156125dc57600080fd5b6001805474ff0000000000000000000000000000000000000000191690556040517f5f6f015054fd8937bdf17b86b7684be4ae883d459fb0bec23bc11f75a13b594490600090a150600190565b60008054819081908190600160a060020a0316331461264757600080fd5b600654421080612658575060075442115b151561266357600080fd5b600c5460ff161561267357600080fd5b600160a060020a038616151561268857600080fd5b600054600160a060020a03878116911614156126a357600080fd5b600154600160a060020a03878116911614156126be57600080fd5b600085116126cb57600080fd5b6126d48561184d565b15156126df57600080fd5b505050600160a060020a0383166000908152600d60209081526040808320838052808352818420600380820180548551608081018752600a54808252600b54908101828a0190815262015180909104828901908152606083018d81526001948501808d529a89905298909a209151825551918101919091559651600288015593519581019590955591839055925490919061277a9086612d38565b600355600160a060020a0386166000908152600860205260409020546127a6908663ffffffff612d3816565b600160a060020a03871660008181526008602090815260409182902093909355805188815290519192600080516020612ddd83398151915292918290030190a2604080518681529051600160a060020a03881691600091600080516020612dbd8339815191529181900360200190a350600195945050505050565b6000805481908190819081908190819081908190600160a060020a0316331461284957600080fd5b60065442108061285a575060075442115b151561286557600080fd5b600c5460ff161561287557600080fd5b60008a1161288257600080fd5b8a51975060009650600095505b87861015612908578a868151811015156128a557fe5b602090810290910101519450600160a060020a03851615806128d45750600054600160a060020a038681169116145b806128ec5750600154600160a060020a038681169116145b156128f6576128fd565b6001909601955b60019095019461288f565b6000871161291557600080fd5b6129258a8863ffffffff612d6816565b93506129308461184d565b151561293b57600080fd5b60035461294e908563ffffffff612d3816565b600355600095505b8786101561183c578a8681518110151561296c57fe5b602090810290910101519450600160a060020a038516158061299b5750600054600160a060020a038681169116145b806129b35750600154600160a060020a038681169116145b156129bd57612ae8565b505050600160a060020a0382166000908152600d602090815260408083208380528083529281902060038101548251608081018452600a54808252600b54908101958201959095529193600190910192820190620151809004815260209081018c90526000838152858252604080822084518155848401516001820155848201516002820155606090940151600394850155928501849055600160a060020a038816815260089091522054612a78908b63ffffffff612d3816565b600160a060020a0386166000818152600860209081526040918290209390935580518d815290519192600080516020612ddd83398151915292918290030190a2604080518b81529051600160a060020a03871691600091600080516020612dbd8339815191529181900360200190a35b600190950194612956565b60045481565b600054600160a060020a03163314612b1057600080fd5b600054600160a060020a0316ff5b60055481565b6000611874612b328361143d565b600160a060020a0384166000908152600860205260409020549063ffffffff612d2616565b600080600654421080612b6b575060075442115b1515612b7657600080fd5b600160a060020a038416331415612b905760019150611960565b336000908152600960209081526040808320600160a060020a03881684529091529020546118fa908463ffffffff612d3816565b600160a060020a03918216600090815260096020908152604080832093909416825291909152205490565b60035481565b60025481565b600080548190600160a060020a03163314612c1557600080fd5b600160a060020a0383161515612c2a57600080fd5b600054600160a060020a0384811691161415612c4557600080fd5b600154600160a060020a0384811691161415612c6057600080fd5b60008054600160a060020a031681526008602052604090205415612c8357600080fd5b600160a060020a03831660009081526008602052604090205415612ca657600080fd5b5060008054600160a060020a0384811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350600192915050565b600b5481565b600080612d1b84612b24565b909211159392505050565b600082821115612d3257fe5b50900390565b600082820183811015612d4757fe5b9392505050565b600060045461187183600554612d3890919063ffffffff16565b600080831515612d7b5760009150611960565b50828202828482811515612d8b57fe5b0414612d4757fe5b6080604051908101604052806000815260200160008152602001600081526020016000815250905600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885a165627a7a723058201f00d1f5a79378f87dd35d47157f870554a507a81b80fe69af26b4fd74f6323e0029

Swarm Source

bzzr://1f00d1f5a79378f87dd35d47157f870554a507a81b80fe69af26b4fd74f6323e
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.