- contractERC20Interface{0 I @- U' t. T8 E% i' E
- stringpublicconstantname="TokenName";
- stringpublicconstantsymbol="SYM";# E( g' Y! o& G5 n( p
- uint8publicconstantdecimals=18;//18isthemostcommonnumberofdecimalplaces7 m! G- c) [8 Q1 m1 E- W
- functiontotalSupply()publicconstantreturns(uint);/ {+ Y3 Q0 t9 P: L8 z* r6 e( j
- functionbalanceOf(addresstokenOwner)publicconstantreturns(uintbalance);
- functionallowance(addresstokenOwner,addressspender)publicconstantreturns(uintremaining);# g2 `! Q" p5 A+ q
- functiontransfer(addressto,uinttokens)publicreturns(boolsuccess);( ]3 v' B5 g6 t5 c) p
- functionapprove(addressspender,uinttokens)publicreturns(boolsuccess);
- functiontransferFrom(addressfrom,addressto,uinttokens)publicreturns(boolsuccess);3 {# t1 s0 d& o+ t# t
- eventTransfer(addressindexedfrom,addressindexedto,uinttokens);5 J' B, e; I+ P2 w) ?. S
- eventApproval(addressindexedtokenOwner,addressindexedspender,uinttokens);
- }
- pragmasolidity^0.4.16;
- <div> interfacetokenRecipient{functionreceiveApproval(address_from,uint256_value,address_token,bytes_extraData)public;}
- contractTokenERC20{
- stringpublicname;5 D$ I+ C. r3 D% {. z! y
- stringpublicsymbol;
- uint8publicdecimals=18;//18是建议的默认值3 r4 t" }* k3 @( b$ k; v# P
- uint256publictotalSupply;8 g1 K* e) g% U6 u6 K. q! X
- mapping(address=>uint256)publicbalanceOf;//
- mapping(address=>mapping(address=>uint256))publicallowance;6 |5 [4 k1 z5 F1 t
- eventTransfer(addressindexedfrom,addressindexedto,uint256value);
- eventBurn(addressindexedfrom,uint256value);
- functionTokenERC20(uint256initialSupply,stringtokenName,stringtokenSymbol)public{, R$ i1 b: h* |# p1 J
- totalSupply=initialSupply*10**uint256(decimals);
- balanceOf[msg.sender]=totalSupply;" B" i3 V2 q) X6 B, q3 @- G
- name=tokenName;- M" a; X _: P3 C& |6 w
- symbol=tokenSymbol;
- }: u- O2 }; G, O
- function_transfer(address_from,address_to,uint_value)internal{
- require(_to!=0x0);
- require(balanceOf[_from]>=_value);
- require(balanceOf[_to]+_value>balanceOf[_to]);& A/ |! e6 d2 a. C+ J% h& B* u! F
- uintpreviousBalances=balanceOf[_from]+balanceOf[_to];
- balanceOf[_from]-=_value;
- balanceOf[_to]+=_value;
- Transfer(_from,_to,_value);
- assert(balanceOf[_from]+balanceOf[_to]==previousBalances);/ n/ V; y: j+ I
- }* ]2 _2 @; k) t [
- functiontransfer(address_to,uint256_value)public{
- _transfer(msg.sender,_to,_value);
- }% [2 p3 u1 b! o9 u p. p3 ?$ L5 I
- functiontransferFrom(address_from,address_to,uint256_value)publicreturns(boolsuccess){
- require(_value=_value);
- balanceOf[msg.sender]-=_value;1 W3 y/ v: S4 h/ X
- totalSupply-=_value;9 D0 B6 T" m2 C- _ i2 u6 c
- Burn(msg.sender,_value);
- returntrue;% U9 X( v! p2 f9 }, ]- M
- }</div>