- contractERC20Interface{/ F/ d1 H' a2 e2 r* K5 S
- stringpublicconstantname="TokenName";
- stringpublicconstantsymbol="SYM";! n/ r! ^7 X3 Y0 `, _
- uint8publicconstantdecimals=18;//18isthemostcommonnumberofdecimalplaces
- functiontotalSupply()publicconstantreturns(uint);& p) f: f) l! ^5 U { F+ [
- functionbalanceOf(addresstokenOwner)publicconstantreturns(uintbalance);
- functionallowance(addresstokenOwner,addressspender)publicconstantreturns(uintremaining);3 `! W" e( M1 B
- functiontransfer(addressto,uinttokens)publicreturns(boolsuccess);+ b1 z1 d2 \6 \. A- Y2 m
- functionapprove(addressspender,uinttokens)publicreturns(boolsuccess);
- functiontransferFrom(addressfrom,addressto,uinttokens)publicreturns(boolsuccess);
- eventTransfer(addressindexedfrom,addressindexedto,uinttokens);
- eventApproval(addressindexedtokenOwner,addressindexedspender,uinttokens);7 k3 a y2 }1 i
- }
- pragmasolidity^0.4.16;7 t) i+ B7 G) u, Z9 y
- <div> interfacetokenRecipient{functionreceiveApproval(address_from,uint256_value,address_token,bytes_extraData)public;}: k- }0 i# V6 y- p9 B9 B9 s" e9 r
- contractTokenERC20{# v% @ F$ `! |7 Q1 e) g
- stringpublicname;
- stringpublicsymbol;7 p8 H h* W" B, B! Y3 U
- uint8publicdecimals=18;//18是建议的默认值3 o; h9 o6 o# m
- uint256publictotalSupply;
- mapping(address=>uint256)publicbalanceOf;//& d F5 o2 [; D7 J* {
- mapping(address=>mapping(address=>uint256))publicallowance;) \+ [; g' K) j* W A y
- eventTransfer(addressindexedfrom,addressindexedto,uint256value);
- eventBurn(addressindexedfrom,uint256value);
- functionTokenERC20(uint256initialSupply,stringtokenName,stringtokenSymbol)public{
- totalSupply=initialSupply*10**uint256(decimals);
- balanceOf[msg.sender]=totalSupply;1 @ {! d0 `$ n* w) b& O2 ~
- name=tokenName;2 m3 T# y" B' e3 r& V
- symbol=tokenSymbol;- @6 w' m1 m. h
- }
- function_transfer(address_from,address_to,uint_value)internal{8 L- |2 o: G3 I& A$ v
- require(_to!=0x0);
- require(balanceOf[_from]>=_value);
- require(balanceOf[_to]+_value>balanceOf[_to]);- s; E: x# y, u- [. ?! @7 K
- uintpreviousBalances=balanceOf[_from]+balanceOf[_to];
- balanceOf[_from]-=_value;
- balanceOf[_to]+=_value;. j/ {4 p2 i' i* M; ?; X) B% x6 U
- Transfer(_from,_to,_value);
- assert(balanceOf[_from]+balanceOf[_to]==previousBalances);
- }
- functiontransfer(address_to,uint256_value)public{0 w; @& y3 P9 [7 V$ H
- _transfer(msg.sender,_to,_value);
- }- b$ U0 ]) n3 f
- functiontransferFrom(address_from,address_to,uint256_value)publicreturns(boolsuccess){
- require(_value=_value);1 y" t/ n; L( E
- balanceOf[msg.sender]-=_value;
- totalSupply-=_value;0 N$ N+ o; F' }" E! {
- Burn(msg.sender,_value);
- returntrue;, R2 I4 v/ R% W' S3 m
- }</div>