accept transfers
608060405234801561001057600080fd5b50d3801561001d57600080fd5b50d2801561002a57600080fd5b50604051610a0f380380610a0f8339818101604052602081101561004d57600080fd5b50516d30cf8e866d7078300fe38000000060008181556001600160a01b03831680825260016020908152604080842085905580519485525191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35061094d806100c26000396000f3fe608060405234801561001057600080fd5b50d3801561001d57600080fd5b50d2801561002a57600080fd5b50600436106100c35760003560e01c8063395093511161008b57806339509351146101f357806370a082311461021f57806395d89b4114610245578063a457c2d71461024d578063a9059cbb14610279578063dd62ed3e146102a5576100c3565b806306fdde03146100c8578063095ea7b31461014557806318160ddd1461018557806323b872dd1461019f578063313ce567146101d5575b600080fd5b6100d06102d3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561010a5781810151838201526020016100f2565b50505050905090810190601f1680156101375780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101716004803603604081101561015b57600080fd5b506001600160a01b0381351690602001356102f9565b604080519115158252519081900360200190f35b61018d61035f565b60408051918252519081900360200190f35b610171600480360360608110156101b557600080fd5b506001600160a01b03813581169160208101359091169060400135610365565b6101dd610624565b6040805160ff9092168252519081900360200190f35b6101716004803603604081101561020957600080fd5b506001600160a01b038135169060200135610629565b61018d6004803603602081101561023557600080fd5b50356001600160a01b031661070c565b6100d0610727565b6101716004803603604081101561026357600080fd5b506001600160a01b038135169060200135610746565b6101716004803603604081101561028f57600080fd5b506001600160a01b0381351690602001356107c4565b61018d600480360360408110156102bb57600080fd5b506001600160a01b03813581169160200135166107d8565b6040518060400160405280600a815260200169109a5d151bdc9c995b9d60b21b81525081565b3360008181526002602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60005490565b6001600160a01b0383166000908152600160205260408120548211156103cb576040805162461bcd60e51b81526020600482015260166024820152750e6e4c640c4c2d8c2dcc6ca40dcdee840cadcdeeaced60531b604482015290519081900360640190fd5b6001600160a01b038416331480159061040957506001600160a01b038416600090815260026020908152604080832033845290915290205460001914155b15610514576001600160a01b0384166000908152600260209081526040808320338452909152902054821115610486576040805162461bcd60e51b815260206004820152601b60248201527f73726320616c6c6f77616e6365206973206e6f7420656e6f7567680000000000604482015290519081900360640190fd5b604080518082018252601e81527f616c6c6f77616e6365207375627472616374696f6e206f766572666c6f7700006020808301919091526001600160a01b03871660009081526002825283812033825290915291909120546104ef91849063ffffffff61080316565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610557826040518060600160405280602181526020016108f9602191396001600160a01b038716600090815260016020526040902054919063ffffffff61080316565b6001600160a01b0380861660009081526001602081815260408084209590955584518086018652601c81527f746f2062616c616e6365206164646974696f6e206f766572666c6f77000000008183015293881683525291909120546105c391849063ffffffff61089a16565b6001600160a01b0380851660008181526001602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b601281565b60006001600160a01b03831661063e57600080fd5b604080518082018252601b81527f616c6c6f77616e6365206164646974696f6e206f766572666c6f770000000000602080830191909152336000908152600282528381206001600160a01b038816825290915291909120546106a791849063ffffffff61089a16565b3360008181526002602090815260408083206001600160a01b0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6001600160a01b031660009081526001602052604090205490565b6040518060400160405280600381526020016210951560ea1b81525081565b60006001600160a01b03831661075b57600080fd5b604080518082018252601e81527f616c6c6f77616e6365207375627472616374696f6e206f766572666c6f770000602080830191909152336000908152600282528381206001600160a01b038816825290915291909120546106a791849063ffffffff61080316565b60006107d1338484610365565b9392505050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600081848411156108925760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561085757818101518382015260200161083f565b50505050905090810190601f1680156108845780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600083830182858210156108ef5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561085757818101518382015260200161083f565b5094935050505056fe66726f6d2062616c616e6365207375627472616374696f6e206f766572666c6f77a26474726f6e58200b19d6f1b623efc370df5874c29ce6ab9005aebcb067acd94be71eaec1df3f9364736f6c63430005120031000000000000000000000000cf649401692e5eea5fd28000f452e7f35acc720b
pragma solidity ^0.5.8;
interface ITRC20 { function transfer(address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); function totalSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); }
library SafeMath {
function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, errorMessage);
return c;
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
}
contract BTT is ITRC20 { using SafeMath for uint256; string constant public name = "BitTorrent"; string constant public symbol = "BTT"; uint8 constant public decimals = 18;
uint256 private totalSupply_;
mapping(address => uint256) private balanceOf_;
mapping(address => mapping(address => uint256)) private allowance_;
constructor(address fund) public {
totalSupply_ = 9900 * 1e8 * 1e18 * 1e3;
balanceOf_[fund] = totalSupply_;
emit Transfer(address(0x00), fund, totalSupply_);
}
function totalSupply() public view returns (uint256) {
return totalSupply_;
}
function balanceOf(address guy) public view returns (uint256){
return balanceOf_[guy];
}
function allowance(address src, address guy) public view returns (uint256){
return allowance_[src][guy];
}
function approve(address guy, uint256 sad) public returns (bool) {
allowance_[msg.sender][guy] = sad;
emit Approval(msg.sender, guy, sad);
return true;
}
function transfer(address dst, uint256 sad) public returns (bool) {
return transferFrom(msg.sender, dst, sad);
}
function transferFrom(address src, address dst, uint256 sad)
public returns (bool)
{
require(balanceOf_[src] >= sad, "src balance not enough");
if (src != msg.sender && allowance_[src][msg.sender] != uint256(-1)) {
require(allowance_[src][msg.sender] >= sad, "src allowance is not enough");
allowance_[src][msg.sender] = allowance_[src][msg.sender].sub(sad, "allowance subtraction overflow") ;
}
balanceOf_[src] = balanceOf_[src].sub(sad, "from balance subtraction overflow");
balanceOf_[dst] = balanceOf_[dst].add(sad, "to balance addition overflow") ;
emit Transfer(src, dst, sad);
return true;
}
function increaseAllowance(address guy, uint256 addedValue) public returns (bool) {
require(guy != address(0));
allowance_[msg.sender][guy] = allowance_[msg.sender][guy].add(addedValue, "allowance addition overflow") ;
emit Approval(msg.sender, guy, allowance_[msg.sender][guy]);
return true;
}
function decreaseAllowance(address guy, uint256 subtractedValue) public returns (bool) {
require(guy != address(0));
allowance_[msg.sender][guy] = allowance_[msg.sender][guy].sub(subtractedValue, "allowance subtraction overflow") ;
emit Approval(msg.sender, guy, allowance_[msg.sender][guy]);
return true;
}
}