- contractERC20Interface{
- stringpublicconstantname="TokenName";9 ]" o/ D F/ |) I. E# k
- stringpublicconstantsymbol="SYM";5 `4 w9 s( N: X( X9 G: p
- uint8publicconstantdecimals=18;//18isthemostcommonnumberofdecimalplaces7 {) x. W5 ^) |7 \
- functiontotalSupply()publicconstantreturns(uint);3 m; ]9 m& m: F7 w+ t+ Q- y' l
- functionbalanceOf(addresstokenOwner)publicconstantreturns(uintbalance);; ]* b) }& ^/ K1 ]
- functionallowance(addresstokenOwner,addressspender)publicconstantreturns(uintremaining); v9 n9 m ~2 W# |" |6 p
- functiontransfer(addressto,uinttokens)publicreturns(boolsuccess);
- functionapprove(addressspender,uinttokens)publicreturns(boolsuccess);" R' Q3 h5 @; G3 d9 ]0 }0 O
- functiontransferFrom(addressfrom,addressto,uinttokens)publicreturns(boolsuccess);
- eventTransfer(addressindexedfrom,addressindexedto,uinttokens);
- eventApproval(addressindexedtokenOwner,addressindexedspender,uinttokens);1 a& B' g) ~# O( A5 t; E7 G2 X
- }
- pragmasolidity^0.4.16;3 I* v# B' s c4 L W( D+ Z
- <div> interfacetokenRecipient{functionreceiveApproval(address_from,uint256_value,address_token,bytes_extraData)public;}
- contractTokenERC20{
- stringpublicname;/ N1 O6 r' ~' J# q0 z0 Y# Y( z- L
- stringpublicsymbol;0 D3 F/ C; O/ k- O0 A
- uint8publicdecimals=18;//18是建议的默认值
- uint256publictotalSupply;7 x& }1 ~, N- X
- mapping(address=>uint256)publicbalanceOf;//9 k2 T- @6 D6 k, ?: t) _1 R! d
- mapping(address=>mapping(address=>uint256))publicallowance;* @% J0 f" \4 y! ]/ [( }0 L8 L
- eventTransfer(addressindexedfrom,addressindexedto,uint256value);
- eventBurn(addressindexedfrom,uint256value);
- functionTokenERC20(uint256initialSupply,stringtokenName,stringtokenSymbol)public{- ?+ n( H9 p/ r; U7 e# }
- totalSupply=initialSupply*10**uint256(decimals);
- balanceOf[msg.sender]=totalSupply; t: n3 M7 \: q/ }
- name=tokenName;% J( P* X b4 |, U$ z* j
- symbol=tokenSymbol;
- }
- function_transfer(address_from,address_to,uint_value)internal{$ B7 d' z+ k/ |1 q0 V" W8 p8 y
- require(_to!=0x0);8 A9 o9 p8 b5 n4 Y
- require(balanceOf[_from]>=_value);
- require(balanceOf[_to]+_value>balanceOf[_to]);9 c- N) ~& B/ {4 Y+ v, H, p$ J
- uintpreviousBalances=balanceOf[_from]+balanceOf[_to];( @% ^: b- \% E* q, q
- balanceOf[_from]-=_value;& F, F1 w. |/ S3 D$ X4 b
- balanceOf[_to]+=_value;% j4 R& y( ~1 [, X# z3 f# A7 p
- Transfer(_from,_to,_value);
- assert(balanceOf[_from]+balanceOf[_to]==previousBalances);9 l1 [- T3 l, R
- }
- functiontransfer(address_to,uint256_value)public{
- _transfer(msg.sender,_to,_value);
- }
- functiontransferFrom(address_from,address_to,uint256_value)publicreturns(boolsuccess){
- require(_value=_value);9 I9 ~# E0 V' F2 N0 \$ J b. g
- balanceOf[msg.sender]-=_value;: _. I9 u9 ~2 f6 \" ^" T( c
- totalSupply-=_value;
- Burn(msg.sender,_value);/ C( R1 Q% ?- P- |6 d% O+ |7 `
- returntrue;
- }</div>