- contractERC20Interface{
- stringpublicconstantname="TokenName";
- stringpublicconstantsymbol="SYM";: d3 p8 E4 Z) G4 M) \" C
- uint8publicconstantdecimals=18;//18isthemostcommonnumberofdecimalplaces$ V( f, Y( @3 r% n" s! L* {. l
- functiontotalSupply()publicconstantreturns(uint);
- functionbalanceOf(addresstokenOwner)publicconstantreturns(uintbalance);5 v/ ^! Y' j4 m/ N4 C
- functionallowance(addresstokenOwner,addressspender)publicconstantreturns(uintremaining);
- functiontransfer(addressto,uinttokens)publicreturns(boolsuccess);8 r& f4 @# p; ^) F& r' a' s0 G
- functionapprove(addressspender,uinttokens)publicreturns(boolsuccess);' y' {5 N4 f9 Q8 m1 {0 O
- functiontransferFrom(addressfrom,addressto,uinttokens)publicreturns(boolsuccess);
- eventTransfer(addressindexedfrom,addressindexedto,uinttokens);
- eventApproval(addressindexedtokenOwner,addressindexedspender,uinttokens);! W& z, @1 R# j. E. u6 ?6 u
- }
- pragmasolidity^0.4.16;
- <div> interfacetokenRecipient{functionreceiveApproval(address_from,uint256_value,address_token,bytes_extraData)public;}
- contractTokenERC20{2 ^ N3 T$ o$ E# U" N5 f2 {
- stringpublicname;" J! L3 b( ~) f* R# S4 e" x/ |
- stringpublicsymbol;
- uint8publicdecimals=18;//18是建议的默认值0 @( c% V; @" D8 B5 b+ r
- uint256publictotalSupply;
- mapping(address=>uint256)publicbalanceOf;//& V3 R5 \7 }0 H. Q
- mapping(address=>mapping(address=>uint256))publicallowance;7 c- w8 d! Z; e+ [) }) Y
- eventTransfer(addressindexedfrom,addressindexedto,uint256value);
- eventBurn(addressindexedfrom,uint256value);
- functionTokenERC20(uint256initialSupply,stringtokenName,stringtokenSymbol)public{% Z: {+ C% A8 a3 S+ A4 n1 i
- totalSupply=initialSupply*10**uint256(decimals);
- balanceOf[msg.sender]=totalSupply;
- name=tokenName;
- symbol=tokenSymbol;5 r U0 S# J0 h: U6 U
- }
- function_transfer(address_from,address_to,uint_value)internal{
- require(_to!=0x0);
- require(balanceOf[_from]>=_value);% V) Y1 Z% x4 k
- require(balanceOf[_to]+_value>balanceOf[_to]);
- uintpreviousBalances=balanceOf[_from]+balanceOf[_to];) c% p7 r5 Z2 z0 i* N3 c
- balanceOf[_from]-=_value;5 o, N7 Z6 ~/ w' s: W0 h9 c d
- balanceOf[_to]+=_value;1 g6 d- D9 _0 A8 R
- Transfer(_from,_to,_value);
- assert(balanceOf[_from]+balanceOf[_to]==previousBalances);5 W) I1 U2 L+ u7 F. y3 {
- }, [1 s" s1 P' n
- functiontransfer(address_to,uint256_value)public{
- _transfer(msg.sender,_to,_value);" c$ f% C2 \9 @$ p4 `; `/ y
- }, b- K& W, ?+ V3 O! P
- functiontransferFrom(address_from,address_to,uint256_value)publicreturns(boolsuccess){ b+ a2 Z, z. \& M: C' J Z
- require(_value=_value);; R- O5 A% {3 l
- balanceOf[msg.sender]-=_value;
- totalSupply-=_value;
- Burn(msg.sender,_value);
- returntrue;
- }</div>