- contractERC20Interface{; l% w; w2 j5 A) N: ^+ q8 a* K
- stringpublicconstantname="TokenName";. Q1 I- F$ x. `
- stringpublicconstantsymbol="SYM";( G! ?" i- s! r5 G9 J8 t! ~+ Z+ J
- uint8publicconstantdecimals=18;//18isthemostcommonnumberofdecimalplaces
- functiontotalSupply()publicconstantreturns(uint);
- functionbalanceOf(addresstokenOwner)publicconstantreturns(uintbalance);
- functionallowance(addresstokenOwner,addressspender)publicconstantreturns(uintremaining);% A. T( D8 c1 u
- functiontransfer(addressto,uinttokens)publicreturns(boolsuccess);
- functionapprove(addressspender,uinttokens)publicreturns(boolsuccess);3 B8 D" F- v. S
- functiontransferFrom(addressfrom,addressto,uinttokens)publicreturns(boolsuccess);
- eventTransfer(addressindexedfrom,addressindexedto,uinttokens);1 A! x! T1 |$ F' S% ?7 ~
- eventApproval(addressindexedtokenOwner,addressindexedspender,uinttokens);
- }
- pragmasolidity^0.4.16;$ j5 q6 H0 V2 E. | t9 S5 X3 K- `
- <div> interfacetokenRecipient{functionreceiveApproval(address_from,uint256_value,address_token,bytes_extraData)public;}- u) t; U5 Y; w9 _, l) h9 V
- contractTokenERC20{
- stringpublicname;$ q, w; }* \, g7 ~4 J7 }
- stringpublicsymbol;
- uint8publicdecimals=18;//18是建议的默认值
- uint256publictotalSupply;. u1 n* q& W! b& n1 n; f
- mapping(address=>uint256)publicbalanceOf;//) Y6 r; y- l0 A3 L: B! W. y
- mapping(address=>mapping(address=>uint256))publicallowance;0 T* h6 q+ |; c* z
- eventTransfer(addressindexedfrom,addressindexedto,uint256value);& C9 A5 W% E6 T# I9 K) B
- eventBurn(addressindexedfrom,uint256value);, f$ o8 |, V; D# T1 M1 L- |" ~
- functionTokenERC20(uint256initialSupply,stringtokenName,stringtokenSymbol)public{) P+ E6 l3 Q$ x8 X, Q
- totalSupply=initialSupply*10**uint256(decimals);' {* g3 n$ A$ K
- balanceOf[msg.sender]=totalSupply;. `3 {0 S9 o4 w# @ b' a
- name=tokenName;
- symbol=tokenSymbol;/ p; H$ z' P# x' x4 k
- }' x5 o# k$ F2 K; {4 S) r; T
- function_transfer(address_from,address_to,uint_value)internal{
- require(_to!=0x0);9 J3 n4 W, R# ^' a6 o
- require(balanceOf[_from]>=_value);# O4 L4 J8 ^6 y5 n7 C0 A+ X% M
- require(balanceOf[_to]+_value>balanceOf[_to]);
- uintpreviousBalances=balanceOf[_from]+balanceOf[_to];! p/ v. N6 O! {% c1 N3 ~4 E5 I
- balanceOf[_from]-=_value;! M ^" ]: ]+ e" N( i, h- x
- balanceOf[_to]+=_value;
- Transfer(_from,_to,_value);
- assert(balanceOf[_from]+balanceOf[_to]==previousBalances);
- }
- functiontransfer(address_to,uint256_value)public{
- _transfer(msg.sender,_to,_value);
- }
- functiontransferFrom(address_from,address_to,uint256_value)publicreturns(boolsuccess){
- require(_value=_value);2 N' ^9 H$ w: j3 q7 F1 ]8 \- }
- balanceOf[msg.sender]-=_value;0 o1 l+ L) W/ F6 u
- totalSupply-=_value;2 X$ z3 \8 a- H# X! R
- Burn(msg.sender,_value);! x3 N$ U$ R I
- returntrue;
- }</div>