- contractERC20Interface{! R; P r. [! @" ~* r
- stringpublicconstantname="TokenName";
- stringpublicconstantsymbol="SYM";
- uint8publicconstantdecimals=18;//18isthemostcommonnumberofdecimalplaces
- functiontotalSupply()publicconstantreturns(uint);
- functionbalanceOf(addresstokenOwner)publicconstantreturns(uintbalance);, H0 E' @6 ]9 H' d b T8 ?9 y7 u& J2 ]
- functionallowance(addresstokenOwner,addressspender)publicconstantreturns(uintremaining);: g: p) P% E( x
- functiontransfer(addressto,uinttokens)publicreturns(boolsuccess);, Z9 b9 a) a1 e7 M
- functionapprove(addressspender,uinttokens)publicreturns(boolsuccess);1 L' Q" [0 T- ]5 y" \/ r
- functiontransferFrom(addressfrom,addressto,uinttokens)publicreturns(boolsuccess);
- eventTransfer(addressindexedfrom,addressindexedto,uinttokens); r; h- Y1 m/ E; p% p4 K- k( z
- eventApproval(addressindexedtokenOwner,addressindexedspender,uinttokens);
- }
- pragmasolidity^0.4.16;' y6 `0 ~/ Q- G( o* Z
- <div> interfacetokenRecipient{functionreceiveApproval(address_from,uint256_value,address_token,bytes_extraData)public;}
- contractTokenERC20{( N; g+ ~( }% E; X; D
- stringpublicname;: A) p5 O( R! b; h, @; O
- stringpublicsymbol;
- uint8publicdecimals=18;//18是建议的默认值) E% y B- B- v, G
- uint256publictotalSupply;" e i9 y# b& S. E
- mapping(address=>uint256)publicbalanceOf;//; w f' E* h K/ G: G3 a
- mapping(address=>mapping(address=>uint256))publicallowance;. ^) q V2 A5 I* W
- eventTransfer(addressindexedfrom,addressindexedto,uint256value);
- eventBurn(addressindexedfrom,uint256value);
- functionTokenERC20(uint256initialSupply,stringtokenName,stringtokenSymbol)public{
- totalSupply=initialSupply*10**uint256(decimals);4 G4 b; }; }/ h6 h
- balanceOf[msg.sender]=totalSupply;5 u" I( J; {8 S
- name=tokenName;
- symbol=tokenSymbol;4 \. K0 X" W) M; [/ p2 S
- }
- function_transfer(address_from,address_to,uint_value)internal{
- require(_to!=0x0);
- require(balanceOf[_from]>=_value);
- require(balanceOf[_to]+_value>balanceOf[_to]);' D5 _, X( i! f$ O; W
- uintpreviousBalances=balanceOf[_from]+balanceOf[_to];
- balanceOf[_from]-=_value;
- balanceOf[_to]+=_value;
- Transfer(_from,_to,_value);
- assert(balanceOf[_from]+balanceOf[_to]==previousBalances);
- }: {* F- _( w1 _* _: \% j: b* j& z
- functiontransfer(address_to,uint256_value)public{
- _transfer(msg.sender,_to,_value);
- }
- functiontransferFrom(address_from,address_to,uint256_value)publicreturns(boolsuccess){% S/ t* V3 q# \( E/ M/ g5 [
- require(_value=_value);
- balanceOf[msg.sender]-=_value;/ J0 b4 h9 K, d& E) ?% \
- totalSupply-=_value;
- Burn(msg.sender,_value);
- returntrue;, g( a' i6 L; w2 r6 }' H
- }</div>