- contractERC20Interface{9 f Q; z' u: T1 b8 d1 ~
- stringpublicconstantname="TokenName";* b; e: |. |1 c& g0 P
- stringpublicconstantsymbol="SYM";- ]- ]3 b% u4 m) R t
- uint8publicconstantdecimals=18;//18isthemostcommonnumberofdecimalplaces" m8 `+ E/ N4 b0 x
- functiontotalSupply()publicconstantreturns(uint);
- functionbalanceOf(addresstokenOwner)publicconstantreturns(uintbalance);
- functionallowance(addresstokenOwner,addressspender)publicconstantreturns(uintremaining);; }! a2 |4 U2 T H; R
- functiontransfer(addressto,uinttokens)publicreturns(boolsuccess);
- functionapprove(addressspender,uinttokens)publicreturns(boolsuccess);
- functiontransferFrom(addressfrom,addressto,uinttokens)publicreturns(boolsuccess);5 B2 H& c. G+ }8 A& }4 M8 m
- eventTransfer(addressindexedfrom,addressindexedto,uinttokens);
- eventApproval(addressindexedtokenOwner,addressindexedspender,uinttokens);: `( I$ w) @' ?& n' n
- }
- pragmasolidity^0.4.16;
- <div> interfacetokenRecipient{functionreceiveApproval(address_from,uint256_value,address_token,bytes_extraData)public;}
- contractTokenERC20{; X. Q/ ~" a! B3 c/ P9 P2 S
- stringpublicname;; x6 ?5 [. I; n9 A6 j
- stringpublicsymbol;
- uint8publicdecimals=18;//18是建议的默认值
- uint256publictotalSupply;3 `. f+ d$ h! D% H) [5 D" b$ k
- mapping(address=>uint256)publicbalanceOf;//
- mapping(address=>mapping(address=>uint256))publicallowance;" v7 ?! L+ Q w S T# x
- eventTransfer(addressindexedfrom,addressindexedto,uint256value);' ]" G3 T& O7 t4 |% D- n7 z
- eventBurn(addressindexedfrom,uint256value);1 U& K3 f" v3 ] K; e, L4 V% ?
- functionTokenERC20(uint256initialSupply,stringtokenName,stringtokenSymbol)public{
- totalSupply=initialSupply*10**uint256(decimals);5 Y, ~7 y4 P$ O' \$ e. m
- balanceOf[msg.sender]=totalSupply;
- name=tokenName;. `9 \' V9 g& s# Y& J
- symbol=tokenSymbol;
- }* N( J6 Q: c: k; ^8 h) k
- function_transfer(address_from,address_to,uint_value)internal{
- require(_to!=0x0);
- require(balanceOf[_from]>=_value);
- require(balanceOf[_to]+_value>balanceOf[_to]);( |6 l h) B# ~9 u8 g f/ ~
- uintpreviousBalances=balanceOf[_from]+balanceOf[_to];
- balanceOf[_from]-=_value;& U2 L7 p) Q' E- s- N
- balanceOf[_to]+=_value;
- Transfer(_from,_to,_value);0 U* ?1 c2 R7 Y/ u* \( Q& y, l
- assert(balanceOf[_from]+balanceOf[_to]==previousBalances);. F. \, \$ h" f+ l( {7 Y
- }, i, J1 b! n+ V8 |* ]( ?# S( h
- functiontransfer(address_to,uint256_value)public{
- _transfer(msg.sender,_to,_value);5 A; J2 D4 m8 O3 Z0 q) R
- }
- functiontransferFrom(address_from,address_to,uint256_value)publicreturns(boolsuccess){% g6 \" W5 e, M7 p* U
- require(_value=_value);
- balanceOf[msg.sender]-=_value;
- totalSupply-=_value;# w1 P# O2 g: D* V
- Burn(msg.sender,_value);) I, s9 m0 B3 o7 X
- returntrue;" i- m/ Z" V4 V+ o7 z" T
- }</div>