- contractERC20Interface{
- stringpublicconstantname="TokenName";
- stringpublicconstantsymbol="SYM";; G$ B) q) Q( y: m& ^7 `
- uint8publicconstantdecimals=18;//18isthemostcommonnumberofdecimalplaces
- functiontotalSupply()publicconstantreturns(uint);
- functionbalanceOf(addresstokenOwner)publicconstantreturns(uintbalance);0 M5 }4 h! @. ~4 }# E5 W$ p6 @
- functionallowance(addresstokenOwner,addressspender)publicconstantreturns(uintremaining);
- functiontransfer(addressto,uinttokens)publicreturns(boolsuccess);
- functionapprove(addressspender,uinttokens)publicreturns(boolsuccess);
- functiontransferFrom(addressfrom,addressto,uinttokens)publicreturns(boolsuccess);
- eventTransfer(addressindexedfrom,addressindexedto,uinttokens);
- eventApproval(addressindexedtokenOwner,addressindexedspender,uinttokens);
- }
- pragmasolidity^0.4.16;
- <div> interfacetokenRecipient{functionreceiveApproval(address_from,uint256_value,address_token,bytes_extraData)public;}& ^: w% X% j3 x
- contractTokenERC20{& X9 K+ X& d1 r* C0 V1 }1 O( F
- stringpublicname;
- stringpublicsymbol;
- uint8publicdecimals=18;//18是建议的默认值" z' M, Y3 I& L+ s. L$ I4 B2 d7 @, g
- uint256publictotalSupply;! a' B4 ]& G" H8 W! h) v% d+ c
- mapping(address=>uint256)publicbalanceOf;//) o: }9 L6 W3 x& L. V- v, v+ J7 B8 e
- mapping(address=>mapping(address=>uint256))publicallowance;
- eventTransfer(addressindexedfrom,addressindexedto,uint256value);
- eventBurn(addressindexedfrom,uint256value);
- functionTokenERC20(uint256initialSupply,stringtokenName,stringtokenSymbol)public{
- totalSupply=initialSupply*10**uint256(decimals);( w8 c c" F; o! A% I
- balanceOf[msg.sender]=totalSupply;2 c j) s$ L3 R. T6 w7 {, q
- name=tokenName;
- symbol=tokenSymbol;4 v- ?- k+ Z3 \" ^3 q
- }) a6 s4 T9 m. ~/ {, `9 h+ x" ?4 Q* U
- function_transfer(address_from,address_to,uint_value)internal{0 w, s) Q% [) O [; K
- require(_to!=0x0);' T' X* b! K: r
- require(balanceOf[_from]>=_value);
- require(balanceOf[_to]+_value>balanceOf[_to]);& y. F, D- q. U5 k
- uintpreviousBalances=balanceOf[_from]+balanceOf[_to];
- balanceOf[_from]-=_value;2 P- j) i$ g. M. \7 y
- balanceOf[_to]+=_value;
- Transfer(_from,_to,_value);
- assert(balanceOf[_from]+balanceOf[_to]==previousBalances);) v( l7 h; m5 E; S
- }
- functiontransfer(address_to,uint256_value)public{( k) c# @2 r! b- Q, C! n
- _transfer(msg.sender,_to,_value);
- }
- functiontransferFrom(address_from,address_to,uint256_value)publicreturns(boolsuccess){: E! ?1 Q. G3 s# ^% `
- require(_value=_value);5 o0 Y& f$ [0 ^7 |3 U, `
- balanceOf[msg.sender]-=_value;, p% X0 |5 ]" a6 y
- totalSupply-=_value;! H, t7 N+ ?- z+ v- Q7 E4 Z
- Burn(msg.sender,_value);5 A/ k& [8 J7 S/ }; j+ v& R) _0 E
- returntrue;
- }</div>