ETH Price: $1,989.81 (-1.75%)

Transaction Decoder

Block:
9977228 at May-01-2020 01:03:30 AM +UTC
Transaction Fee:
0.008554751056511625 ETH $17.02
Gas Used:
855,475 Gas / 10.000001235 Gwei

Emitted Events:

26 VE.transferLogs( 0x73c3d5c6dd944964b6cb788b3882aa3deeb9edf5, 转账, 603200000000000000 )
27 VE.transferTokenLogs( 0x73c3d5c6dd944964b6cb788b3882aa3deeb9edf5, 代币转账, 315414000000000000000 )
28 VE.transferLogs( 0x5d3f7ea34847fd3bf63f08fc4f4c6aabacb4e042, 转账, 292000000000000000 )
29 VE.transferTokenLogs( 0x5d3f7ea34847fd3bf63f08fc4f4c6aabacb4e042, 代币转账, 152301600000000000000 )
30 VE.transferLogs( 0x45f40c37b2b2df5cf090b1bd592a45e887230746, 转账, 188700000000000000 )
31 VE.transferTokenLogs( 0x45f40c37b2b2df5cf090b1bd592a45e887230746, 代币转账, 99000000000000000000 )
32 VE.transferLogs( 0x2ca6ed88131bbbcffcb38b01c3fac7453501c7db, 转账, 103000000000000000 )
33 VE.transferTokenLogs( 0x2ca6ed88131bbbcffcb38b01c3fac7453501c7db, 代币转账, 49500000000000000000 )
34 VE.transferLogs( 0x88cfb4df16a1aa0b60ae4d18215527487dc58078, 转账, 103000000000000000 )
35 VE.transferTokenLogs( 0x88cfb4df16a1aa0b60ae4d18215527487dc58078, 代币转账, 49500000000000000000 )
36 VE.transferLogs( 0x93207e84b4243e4c307a093ae2b9d7aeb2bd3130, 转账, 102600000000000000 )
37 VE.transferTokenLogs( 0x93207e84b4243e4c307a093ae2b9d7aeb2bd3130, 代币转账, 51480000000000000000 )
38 VE.transferLogs( 0x7d7e564e6308b8eefa37a1c2df4b96cf0c8e47ec, 转账, 102600000000000000 )
39 VE.transferTokenLogs( 0x7d7e564e6308b8eefa37a1c2df4b96cf0c8e47ec, 代币转账, 51480000000000000000 )
40 VE.transferLogs( 0xb0cc311bbad370c85716fcaef09c05b2e88a733b, 转账, 102600000000000000 )
41 VE.transferTokenLogs( 0xb0cc311bbad370c85716fcaef09c05b2e88a733b, 代币转账, 51480000000000000000 )
42 VE.transferLogs( 0xb00c7a5fc2f4b12cd287e27693c307a3529d5d80, 转账, 102600000000000000 )
43 VE.transferTokenLogs( 0xb00c7a5fc2f4b12cd287e27693c307a3529d5d80, 代币转账, 51480000000000000000 )
44 VE.transferLogs( 0xf7afb18ecf6bbd0ea336343057db009eb57d20d2, 转账, 102600000000000000 )
45 VE.transferTokenLogs( 0xf7afb18ecf6bbd0ea336343057db009eb57d20d2, 代币转账, 51480000000000000000 )
46 VE.transferLogs( 0x1e9de21113bd5af323b9499a4c7a8008ad367af8, 转账, 102600000000000000 )
47 VE.transferTokenLogs( 0x1e9de21113bd5af323b9499a4c7a8008ad367af8, 代币转账, 51480000000000000000 )
48 VE.transferLogs( 0x406ec89977db424aa1a53600dbaea4a058b4f09f, 转账, 103000000000000000 )
49 VE.transferTokenLogs( 0x406ec89977db424aa1a53600dbaea4a058b4f09f, 代币转账, 49500000000000000000 )
50 VE.transferLogs( 0xb504366af5a1974de63e287c402ff3c69621fed5, 转账, 103000000000000000 )
51 VE.transferTokenLogs( 0xb504366af5a1974de63e287c402ff3c69621fed5, 代币转账, 49500000000000000000 )
52 VE.transferLogs( 0x371092ec9163169a169fc3016c7d48628dab090a, 转账, 150200000000000000 )
53 VE.transferTokenLogs( 0x371092ec9163169a169fc3016c7d48628dab090a, 代币转账, 78556500000000000000 )
54 VE.transferLogs( 0xff1eb359896837dd2d247bbb01fc1c71a18e6b0e, 转账, 103000000000000000 )
55 VE.transferTokenLogs( 0xff1eb359896837dd2d247bbb01fc1c71a18e6b0e, 代币转账, 49500000000000000000 )
56 VE.transferLogs( 0x21d51e77ed828f84ccb42ea18f5ddb1416310f36, 转账, 103000000000000000 )
57 VE.transferTokenLogs( 0x21d51e77ed828f84ccb42ea18f5ddb1416310f36, 代币转账, 49500000000000000000 )
58 VE.transferLogs( 0x89fe4c71651acebee4b46cd9d4bbd9718c3cdde1, 转账, 103000000000000000 )
59 VE.transferTokenLogs( 0x89fe4c71651acebee4b46cd9d4bbd9718c3cdde1, 代币转账, 49500000000000000000 )
60 VE.transferLogs( 0x7ce11357b16650a6ef847bffb65705b0e13ab138, 转账, 103000000000000000 )
61 VE.transferTokenLogs( 0x7ce11357b16650a6ef847bffb65705b0e13ab138, 代币转账, 49500000000000000000 )
62 VE.transferLogs( 0x1080c7fb607d738b06cafa95713d126770e12e1c, 转账, 103000000000000000 )
63 VE.transferTokenLogs( 0x1080c7fb607d738b06cafa95713d126770e12e1c, 代币转账, 49500000000000000000 )
64 VE.transferLogs( 0x1358d1de9ac60d0638919212f93ccad6ddd3e655, 转账, 179700000000000000 )
65 VE.transferTokenLogs( 0x1358d1de9ac60d0638919212f93ccad6ddd3e655, 代币转账, 95040000000000000000 )
66 VE.transferLogs( 0x02ac90e2710560c5886e0939bdd2f4cc131f8a86, 转账, 100400000000000000 )
67 VE.transferTokenLogs( 0x02ac90e2710560c5886e0939bdd2f4cc131f8a86, 代币转账, 52866000000000000000 )
68 VE.transferLogs( 0xc1c38e2676eac86006d6ae843fa38f1831c2deff, 转账, 124100000000000000 )
69 VE.transferTokenLogs( 0xc1c38e2676eac86006d6ae843fa38f1831c2deff, 代币转账, 62370000000000000000 )
70 VE.transferLogs( 0xdb6f1d649ca6e5eccd63fdf36bddf1bbe54ca59e, 转账, 283900000000000000 )
71 VE.transferTokenLogs( 0xdb6f1d649ca6e5eccd63fdf36bddf1bbe54ca59e, 代币转账, 148500000000000000000 )
72 VE.transferLogs( 0x06d3e046f935da655e8cbc231ded21a720cf73c8, 转账, 103000000000000000 )
73 VE.transferTokenLogs( 0x06d3e046f935da655e8cbc231ded21a720cf73c8, 代币转账, 49500000000000000000 )
74 VE.transferLogs( 0x7711158b45cb149b1d9faf06583b7a6f943a9464, 转账, 1140900000000000000 )
75 VE.transferTokenLogs( 0x7711158b45cb149b1d9faf06583b7a6f943a9464, 代币转账, 595336500000000049152 )
76 VE.transferLogs( 0x3a9d0227250fc335ca781bd6cc66eb505c3f9230, 转账, 152400000000000000 )
77 VE.transferTokenLogs( 0x3a9d0227250fc335ca781bd6cc66eb505c3f9230, 代币转账, 80190000000000000000 )
78 VE.transferLogs( 0x53695a726a560e716b0c29b691965bff99a0ab9f, 转账, 134500000000000000 )
79 VE.transferTokenLogs( 0x53695a726a560e716b0c29b691965bff99a0ab9f, 代币转账, 69300000000000000000 )
80 VE.transferLogs( 0x2a429d5c499f590f3b37fdb58a14594a05baceb4, 转账, 188700000000000000 )
81 VE.transferTokenLogs( 0x2a429d5c499f590f3b37fdb58a14594a05baceb4, 代币转账, 99000000000000000000 )
82 VE.transferLogs( 0x0551a6ae62327ff9cf9ddcdcfdc91c87791f9a26, 转账, 134500000000000000 )
83 VE.transferTokenLogs( 0x0551a6ae62327ff9cf9ddcdcfdc91c87791f9a26, 代币转账, 69300000000000000000 )
84 VE.transferLogs( 0x91257e21ba378d1a29aaca955255d5d4cda7a599, 转账, 102000000000000000 )
85 VE.transferTokenLogs( 0x91257e21ba378d1a29aaca955255d5d4cda7a599, 代币转账, 53460000000000000000 )
86 VE.transferLogs( 0x6d93482cf05dbe85a5803cf02114228edd0644b8, 转账, 134500000000000000 )
87 VE.transferTokenLogs( 0x6d93482cf05dbe85a5803cf02114228edd0644b8, 代币转账, 69300000000000000000 )
88 VE.transferLogs( 0x8d0f5d4ca69983ec4bd1081e570d72d25d0730d9, 转账, 208900000000000000 )
89 VE.transferTokenLogs( 0x8d0f5d4ca69983ec4bd1081e570d72d25d0730d9, 代币转账, 108999000000000000000 )
90 VE.transferLogs( 0x6d8e4365f879daf709c925145d438cf5c699bc1e, 转账, 161100000000000000 )
91 VE.transferTokenLogs( 0x6d8e4365f879daf709c925145d438cf5c699bc1e, 代币转账, 83160000000000000000 )
92 VE.transferLogs( 0xf36c3ae33200548caece36035d4d9482010f1db2, 转账, 103000000000000000 )
93 VE.transferTokenLogs( 0xf36c3ae33200548caece36035d4d9482010f1db2, 代币转账, 49500000000000000000 )
94 VE.transferLogs( 0x69a65564e155dba25917a55e42db7b4522deda68, 转账, 100400000000000000 )
95 VE.transferTokenLogs( 0x69a65564e155dba25917a55e42db7b4522deda68, 代币转账, 52866000000000000000 )

Account State Difference:

  Address   Before After State Difference Code
0x02aC90e2...C131F8a86 0.6402406750196687 Eth0.7406406750196687 Eth0.1004
0x0551A6ae...7791F9A26 0.0001587001332895 Eth0.1346587001332895 Eth0.1345
0x06D3e046...720CF73c8 0 Eth0.103 Eth0.103
0x1080C7FB...770E12E1C 0.0001375271480405 Eth0.1031375271480405 Eth0.103
0x1358d1de...6Ddd3E655 0.00986106909903 Eth0.18956106909903 Eth0.1797
0x1e9dE211...8aD367af8 1.0413815054890471 Eth1.1439815054890471 Eth0.1026
0x2120887E...31D0EF045 199.25543481959742206 Eth193.12673481959742206 Eth6.1287
0x21D51e77...416310F36 0.2150093233119511 Eth0.3180093233119511 Eth0.103
0x2A429d5c...a05baCeb4 0.037584353452486 Eth0.226284353452486 Eth0.1887
0x2cA6eD88...53501c7db 0.5198684920542308 Eth0.6228684920542308 Eth0.103
0x371092eC...28DAb090a 0.319096860384567 Eth0.469296860384567 Eth0.1502
0x3A9D0227...05C3f9230 0.004837999995107 Eth0.157237999995107 Eth0.1524
0x406eC899...058B4F09f 0.000491149445367 Eth0.103491149445367 Eth0.103
0x45f40C37...887230746 1.6228988879925595 Eth1.8115988879925595 Eth0.1887
0x53695a72...F99a0ab9F 0.000862681726575 Eth0.135362681726575 Eth0.1345
(Spark Pool)
114.339046496859893213 Eth114.347601247916404838 Eth0.008554751056511625
0x5D3f7EA3...BacB4e042 0.175706186195035 Eth0.467706186195035 Eth0.292
0x69a65564...522dEdA68 0.7961307 Eth0.8965307 Eth0.1004
0x6a5Da159...92EA5a058
430.240251101207020171 Eth
Nonce: 1597
430.231696350150508546 Eth
Nonce: 1598
0.008554751056511625
0x6d8E4365...5C699Bc1E 0.000609596265542 Eth0.161709596265542 Eth0.1611
0x6D93482C...edD0644B8 0.0681553296270095 Eth0.2026553296270095 Eth0.1345
0x73C3D5C6...DeEb9eDF5 0.3831493343842161 Eth0.9863493343842161 Eth0.6032
0x7711158b...f943A9464 0.2744054080362936 Eth1.4153054080362936 Eth1.1409
0x7ce11357...0e13aB138 0.000221294897628 Eth0.103221294897628 Eth0.103
0x7d7E564E...f0c8e47Ec 0.4171764769835645 Eth0.5197764769835645 Eth0.1026
0x88CFb4DF...87Dc58078 0.518310012317497 Eth0.621310012317497 Eth0.103
0x89Fe4C71...18C3CdDe1 0.2106916592716606 Eth0.3136916592716606 Eth0.103
0x8d0f5D4c...25D0730d9 0.1385733196001228 Eth0.3474733196001228 Eth0.2089
0x91257E21...4CDa7a599 0.1757025725674523 Eth0.2777025725674523 Eth0.102
0x93207e84...eb2bD3130 0.4170450610375875 Eth0.5196450610375875 Eth0.1026
0xb00C7A5F...3529D5D80 0.4725103915724147 Eth0.5751103915724147 Eth0.1026
0xb0CC311B...2E88a733b 0.4721002317315216 Eth0.5747002317315216 Eth0.1026
0xb504366a...69621feD5 0.0008893228175412 Eth0.1038893228175412 Eth0.103
0xc1C38E26...831C2defF 0 Eth0.1241 Eth0.1241
0xDb6f1D64...BE54Ca59e 0.1879 Eth0.4718 Eth0.2839
0xf36c3ae3...2010f1DB2 0.120485810443905354 Eth0.223485810443905354 Eth0.103
0xf7aFb18e...Eb57d20d2 0.4704629733989692 Eth0.5730629733989692 Eth0.1026
0xfF1eb359...1A18e6B0E 0.0004423967863709 Eth0.1034423967863709 Eth0.103

Execution Trace

VE.Transfer_anything( _users=[0x73C3D5C6Dd944964B6cb788B3882aA3DeEb9eDF5, 0x5D3f7EA34847FD3bF63f08FC4F4c6AABacB4e042, 0x45f40C37b2B2Df5CF090b1bd592a45E887230746, 0x2cA6eD88131BBBCFfCB38B01c3Fac7453501c7db, 0x88CFb4DF16a1AA0B60aE4d18215527487Dc58078, 0x93207e84B4243E4c307A093Ae2b9D7aeb2bD3130, 0x7d7E564E6308b8eEFa37A1c2df4b96cf0c8e47Ec, 0xb0CC311BbAd370c85716fCaef09C05B2E88a733b, 0xb00C7A5FC2F4B12cD287E27693c307A3529D5D80, 0xf7aFb18ecF6Bbd0Ea336343057Db009Eb57d20d2, 0x1e9dE21113Bd5af323b9499a4c7a8008aD367af8, 0x406eC89977DB424aA1a53600DbaeA4a058B4F09f, 0xb504366aF5a1974DE63e287C402fF3c69621feD5, 0x371092eC9163169a169fC3016c7d48628DAb090a, 0xfF1eb359896837dd2D247bBb01Fc1c71A18e6B0E, 0x21D51e77Ed828f84cCb42Ea18f5DdB1416310F36, 0x89Fe4C71651acebEE4b46cd9d4bBd9718C3CdDe1, 0x7ce11357B16650a6ef847bFfB65705B0e13aB138, 0x1080C7FB607D738b06caFa95713d126770E12E1C, 0x1358d1de9aC60d0638919212f93Ccad6Ddd3E655, 0x02aC90e2710560C5886E0939bdD2f4CC131F8a86, 0xc1C38E2676EAc86006D6ae843fa38f1831C2defF, 0xDb6f1D649Ca6e5ECcD63fdF36BDDF1BBE54Ca59e, 0x06D3e046F935Da655E8cBc231DEd21A720CF73c8, 0x7711158b45CB149B1D9fAF06583b7a6f943A9464, 0x3A9D0227250fc335ca781bD6Cc66EB505C3f9230, 0x53695a726A560e716B0C29B691965BFF99a0ab9F, 0x2A429d5c499f590F3B37FdB58A14594a05baCeb4, 0x0551A6ae62327ff9CF9ddCDcFdc91C87791F9A26, 0x91257E21bA378d1A29AaCa955255D5D4CDa7a599, 0x6D93482CF05dbE85A5803cf02114228edD0644B8, 0x8d0f5D4ca69983eC4bD1081e570d72d25D0730d9, 0x6d8E4365f879DAf709c925145D438Cf5C699Bc1E, 0xf36c3ae33200548caeCE36035D4D9482010f1DB2, 0x69a65564e155DbA25917a55E42db7b4522dEdA68], _amount=[603200000000000000, 292000000000000000, 188700000000000000, 103000000000000000, 103000000000000000, 102600000000000000, 102600000000000000, 102600000000000000, 102600000000000000, 102600000000000000, 102600000000000000, 103000000000000000, 103000000000000000, 150200000000000000, 103000000000000000, 103000000000000000, 103000000000000000, 103000000000000000, 103000000000000000, 179700000000000000, 100400000000000000, 124100000000000000, 283900000000000000, 103000000000000000, 1140900000000000000, 152400000000000000, 134500000000000000, 188700000000000000, 134500000000000000, 102000000000000000, 134500000000000000, 208900000000000000, 161100000000000000, 103000000000000000, 100400000000000000], _token=[315414000000000000000, 152301600000000000000, 99000000000000000000, 49500000000000000000, 49500000000000000000, 51480000000000000000, 51480000000000000000, 51480000000000000000, 51480000000000000000, 51480000000000000000, 51480000000000000000, 49500000000000000000, 49500000000000000000, 78556500000000000000, 49500000000000000000, 49500000000000000000, 49500000000000000000, 49500000000000000000, 49500000000000000000, 95040000000000000000, 52866000000000000000, 62370000000000000000, 148500000000000000000, 49500000000000000000, 595336500000000049152, 80190000000000000000, 69300000000000000000, 99000000000000000000, 69300000000000000000, 53460000000000000000, 69300000000000000000, 108999000000000000000, 83160000000000000000, 49500000000000000000, 52866000000000000000], _allBalance=6128652113559253000 )
  • ETH 0.6032 0x73c3d5c6dd944964b6cb788b3882aa3deeb9edf5.CALL( )
  • ETH 0.292 0x5d3f7ea34847fd3bf63f08fc4f4c6aabacb4e042.CALL( )
  • ETH 0.1887 0x45f40c37b2b2df5cf090b1bd592a45e887230746.CALL( )
  • ETH 0.103 0x2ca6ed88131bbbcffcb38b01c3fac7453501c7db.CALL( )
  • ETH 0.103 0x88cfb4df16a1aa0b60ae4d18215527487dc58078.CALL( )
  • ETH 0.1026 0x93207e84b4243e4c307a093ae2b9d7aeb2bd3130.CALL( )
  • ETH 0.1026 0x7d7e564e6308b8eefa37a1c2df4b96cf0c8e47ec.CALL( )
  • ETH 0.1026 0xb0cc311bbad370c85716fcaef09c05b2e88a733b.CALL( )
  • ETH 0.1026 0xb00c7a5fc2f4b12cd287e27693c307a3529d5d80.CALL( )
  • ETH 0.1026 0xf7afb18ecf6bbd0ea336343057db009eb57d20d2.CALL( )
  • ETH 0.1026 0x1e9de21113bd5af323b9499a4c7a8008ad367af8.CALL( )
  • ETH 0.103 0x406ec89977db424aa1a53600dbaea4a058b4f09f.CALL( )
  • ETH 0.103 0xb504366af5a1974de63e287c402ff3c69621fed5.CALL( )
  • ETH 0.1502 0x371092ec9163169a169fc3016c7d48628dab090a.CALL( )
  • ETH 0.103 0xff1eb359896837dd2d247bbb01fc1c71a18e6b0e.CALL( )
  • ETH 0.103 0x21d51e77ed828f84ccb42ea18f5ddb1416310f36.CALL( )
  • ETH 0.103 0x89fe4c71651acebee4b46cd9d4bbd9718c3cdde1.CALL( )
  • ETH 0.103 0x7ce11357b16650a6ef847bffb65705b0e13ab138.CALL( )
  • ETH 0.103 0x1080c7fb607d738b06cafa95713d126770e12e1c.CALL( )
  • ETH 0.1797 0x1358d1de9ac60d0638919212f93ccad6ddd3e655.CALL( )
  • ETH 0.1004 0x02ac90e2710560c5886e0939bdd2f4cc131f8a86.CALL( )
  • ETH 0.1241 0xc1c38e2676eac86006d6ae843fa38f1831c2deff.CALL( )
  • ETH 0.2839 0xdb6f1d649ca6e5eccd63fdf36bddf1bbe54ca59e.CALL( )
  • ETH 0.103 0x06d3e046f935da655e8cbc231ded21a720cf73c8.CALL( )
  • ETH 1.1409 0x7711158b45cb149b1d9faf06583b7a6f943a9464.CALL( )
  • ETH 0.1524 0x3a9d0227250fc335ca781bd6cc66eb505c3f9230.CALL( )
  • ETH 0.1345 0x53695a726a560e716b0c29b691965bff99a0ab9f.CALL( )
  • ETH 0.1887 0x2a429d5c499f590f3b37fdb58a14594a05baceb4.CALL( )
  • ETH 0.1345 0x0551a6ae62327ff9cf9ddcdcfdc91c87791f9a26.CALL( )
  • ETH 0.102 0x91257e21ba378d1a29aaca955255d5d4cda7a599.CALL( )
  • ETH 0.1345 0x6d93482cf05dbe85a5803cf02114228edd0644b8.CALL( )
  • ETH 0.2089 0x8d0f5d4ca69983ec4bd1081e570d72d25d0730d9.CALL( )
  • ETH 0.1611 0x6d8e4365f879daf709c925145d438cf5c699bc1e.CALL( )
  • ETH 0.103 0xf36c3ae33200548caece36035d4d9482010f1db2.CALL( )
  • ETH 0.1004 0x69a65564e155dba25917a55e42db7b4522deda68.CALL( )
    /**
     *Submitted for verification at Etherscan.io on 2019-12-04
    */
    
    pragma solidity ^0.4.24;
    
    /**
     * @title SafeMath
     */
    library SafeMath {
        function mul(uint256 _a, uint256 _b) internal pure returns (uint256) {
            if (_a == 0) {
                return 0;
            }
    
            uint256 c = _a * _b;
            require(c / _a == _b);
    
            return c;
        }
    
        function div(uint256 _a, uint256 _b) internal pure returns (uint256) {
            uint256 c = _a / _b;
            
            return c;
        }
    
        function sub(uint256 _a, uint256 _b) internal pure returns (uint256) {
            require(_b <= _a);
            uint256 c = _a - _b;
    
            return c;
        }
        
        function add(uint256 _a, uint256 _b) internal pure returns (uint256) {
            uint256 c = _a + _b;
            require(c >= _a);
    
            return c;
        }
    }
    
    
    /**
     * @title 验证合约创作者
     */
    contract Ownable {
        address public owner;
    
        event OwnershipRenounced(address indexed previousOwner);
        event OwnershipTransferred(
            address indexed previousOwner,
            address indexed newOwner
        );
    
        constructor() public {
            owner = msg.sender;
        }
    
        /**
        * 验证合约创作者
        */
        modifier onlyOwner() {
            require(msg.sender == owner);
            _;
        }
    
        function renounceOwnership() public onlyOwner {
            emit OwnershipRenounced(owner);
            owner = address(0);
        }
    
        function transferOwnership(address _newOwner) public onlyOwner {
            _transferOwnership(_newOwner);
        }
    
        function _transferOwnership(address _newOwner) internal {
            require(_newOwner != address(0));
            emit OwnershipTransferred(owner, _newOwner);
            owner = _newOwner;
        }
    }
    
    
    /**
     * @title Pausable
     * @dev Base contract which allows children to implement an emergency stop mechanism.
     */
    contract Pausable is Ownable {
        event Pause();
        event Unpause();
    
        bool public paused = false;
    
        /**
        * @dev Modifier to make a function callable only when the contract is not paused.
        */
        modifier whenNotPaused() {
            require(!paused);
            _;
        }
    
        /**
        * @dev Modifier to make a function callable only when the contract is paused.
        */
        modifier whenPaused() {
            require(paused);
            _;
        }
    
        /**
        * @dev called by the owner to pause, triggers stopped state
        */
        function pause() public onlyOwner whenNotPaused {
            paused = true;
            emit Pause();
        }
    
        /**
        * @dev called by the owner to unpause, returns to normal state
        */
        function unpause() public onlyOwner whenPaused {
            paused = false;
            emit Unpause();
        }
    }
    
    
    /**
    * @title ERC20 interface
    * @dev see https://github.com/ethereum/EIPs/issues/20
    */
    contract ERC20 {
        function totalSupply() public view returns (uint256);
    
        function balanceOf(address _who) public view returns (uint256);
    
        function allowance(address _owner, address _spender)
            public view returns (uint256);
    
        function transfer(address _to, uint256 _value) public returns (bool);
    
        function approve(address _spender, uint256 _value)
            public returns (bool);
    
        function transferFrom(address _from, address _to, uint256 _value)
            public returns (bool);
    
        event Transfer(
            address indexed from,
            address indexed to,
            uint256 value
        );
    
        event Approval(
            address indexed owner,
            address indexed spender,
            uint256 value
        );
    }
    
    /**
    * @title Standard ERC20 token
    *
    * @dev Implementation of the basic standard token.
    * https://github.com/ethereum/EIPs/issues/20
    * Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
    */
    contract StandardToken is ERC20 {
        using SafeMath for uint256;
    
        mapping(address => uint256) balances;
    
        mapping (address => mapping (address => uint256)) internal allowed;
    
        uint256 totalSupply_;
    
        /**
        * @dev Total number of tokens in existence
        */
        function totalSupply() public view returns (uint256) {
            return totalSupply_;
        }
    
        /**
        * @dev Gets the balance of the specified address.
        * @param _owner The address to query the the balance of.
        * @return An uint256 representing the amount owned by the passed address.
        */
        function balanceOf(address _owner) public view returns (uint256) {
            return balances[_owner];
        }
    
        /**
        * @dev Function to check the amount of tokens that an owner allowed to a spender.
        * @param _owner address The address which owns the funds.
        * @param _spender address The address which will spend the funds.
        * @return A uint256 specifying the amount of tokens still available for the spender.
        */
        function allowance(
            address _owner,
            address _spender
        )
            public
            view
            returns (uint256)
        {
            return allowed[_owner][_spender];
        }
    
        /**
        * @dev Transfer token for a specified address
        * @param _to The address to transfer to.
        * @param _value The amount to be transferred.
        */
        function transfer(address _to, uint256 _value) public returns (bool) {
            require(_value <= balances[msg.sender]);
            require(_to != address(0));
    
            balances[msg.sender] = balances[msg.sender].sub(_value);
            balances[_to] = balances[_to].add(_value);
            emit Transfer(msg.sender, _to, _value);
            return true;
        }
    
        /**
        * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
        * Beware that changing an allowance with this method brings the risk that someone may use both the old
        * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
        * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
        * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
        * @param _spender The address which will spend the funds.
        * @param _value The amount of tokens to be spent.
        */
        function approve(address _spender, uint256 _value) public returns (bool) {
            allowed[msg.sender][_spender] = _value;
            emit Approval(msg.sender, _spender, _value);
            return true;
        }
    
        /**
        * @dev Transfer tokens from one address to another
        * @param _from address The address which you want to send tokens from
        * @param _to address The address which you want to transfer to
        * @param _value uint256 the amount of tokens to be transferred
        */
        function transferFrom(
            address _from,
            address _to,
            uint256 _value
        )
            public
            returns (bool)
        {
            require(_value <= balances[_from]);
            require(_value <= allowed[_from][msg.sender]);
            require(_to != address(0));
    
            balances[_from] = balances[_from].sub(_value);
            balances[_to] = balances[_to].add(_value);
            allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
            emit Transfer(_from, _to, _value);
            return true;
        }
    
        /**
        * @dev Increase the amount of tokens that an owner allowed to a spender.
        * approve should be called when allowed[_spender] == 0. To increment
        * allowed value is better to use this function to avoid 2 calls (and wait until
        * the first transaction is mined)
        * From MonolithDAO Token.sol
        * @param _spender The address which will spend the funds.
        * @param _addedValue The amount of tokens to increase the allowance by.
        */
        function increaseApproval(
            address _spender,
            uint256 _addedValue
        )
            public
            returns (bool)
        {
            allowed[msg.sender][_spender] = (
            allowed[msg.sender][_spender].add(_addedValue));
            emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
            return true;
        }
    
        /**
        * @dev Decrease the amount of tokens that an owner allowed to a spender.
        * approve should be called when allowed[_spender] == 0. To decrement
        * allowed value is better to use this function to avoid 2 calls (and wait until
        * the first transaction is mined)
        * From MonolithDAO Token.sol
        * @param _spender The address which will spend the funds.
        * @param _subtractedValue The amount of tokens to decrease the allowance by.
        */
        function decreaseApproval(
            address _spender,
            uint256 _subtractedValue
        )
            public
            returns (bool)
        {
            uint256 oldValue = allowed[msg.sender][_spender];
            if (_subtractedValue >= oldValue) {
                allowed[msg.sender][_spender] = 0;
            } else {
                allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
            }
            emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
            return true;
        }
    
    }
    
    
    /**
    * @title Pausable token
    * @dev StandardToken modified with pausable transfers.
    **/
    contract PausableERC20Token is StandardToken, Pausable {
    
        function transfer(
            address _to,
            uint256 _value
        )
            public
            whenNotPaused
            returns (bool)
        {
            return super.transfer(_to, _value);
        }
    
        function transferFrom(
            address _from,
            address _to,
            uint256 _value
        )
            public
            whenNotPaused
            returns (bool)
        {
            return super.transferFrom(_from, _to, _value);
        }
    
        function approve(
            address _spender,
            uint256 _value
        )
            public
            whenNotPaused
            returns (bool)
        {
            return super.approve(_spender, _value);
        }
    
        function increaseApproval(
            address _spender,
            uint _addedValue
        )
            public
            whenNotPaused
            returns (bool success)
        {
            return super.increaseApproval(_spender, _addedValue);
        }
    
        function decreaseApproval(
            address _spender,
            uint _subtractedValue
        )
            public
            whenNotPaused
            returns (bool success)
        {
            return super.decreaseApproval(_spender, _subtractedValue);
        }
    }
    
    
    /**
    * @title Burnable Pausable Token
    * @dev Pausable Token that can be irreversibly burned (destroyed).
    */
    contract BurnablePausableERC20Token is PausableERC20Token {
    
        mapping (address => mapping (address => uint256)) internal allowedBurn;
    
        event Burn(address indexed burner, uint256 value);
    
        event ApprovalBurn(
            address indexed owner,
            address indexed spender,
            uint256 value
        );
    
        function allowanceBurn(
            address _owner,
            address _spender
        )
            public
            view
            returns (uint256)
        {
            return allowedBurn[_owner][_spender];
        }
    
        function approveBurn(address _spender, uint256 _value)
            public
            whenNotPaused
            returns (bool)
        {
            allowedBurn[msg.sender][_spender] = _value;
            emit ApprovalBurn(msg.sender, _spender, _value);
            return true;
        }
    
        /**
        * @dev Burns a specific amount of tokens.
        * @param _value The amount of token to be burned.
        */
        function burn(
            uint256 _value
        ) 
            public
            whenNotPaused
        {
            _burn(msg.sender, _value);
        }
    
        /**
        * @dev Burns a specific amount of tokens from the target address and decrements allowance
        * @param _from address The address which you want to send tokens from
        * @param _value uint256 The amount of token to be burned
        */
        function burnFrom(
            address _from, 
            uint256 _value
        ) 
            public 
            whenNotPaused
        {
            require(_value <= allowedBurn[_from][msg.sender]);
            // Should https://github.com/OpenZeppelin/zeppelin-solidity/issues/707 be accepted,
            // this function needs to emit an event with the updated approval.
            allowedBurn[_from][msg.sender] = allowedBurn[_from][msg.sender].sub(_value);
            _burn(_from, _value);
        }
    
        function _burn(
            address _who, 
            uint256 _value
        ) 
            internal 
            whenNotPaused
        {
            require(_value <= balances[_who]);
            // no need to require value <= totalSupply, since that would imply the
            // sender's balance is greater than the totalSupply, which *should* be an assertion failure
    
            balances[_who] = balances[_who].sub(_value);
            totalSupply_ = totalSupply_.sub(_value);
            emit Burn(_who, _value);
            emit Transfer(_who, address(0), _value);
        }
    
        function increaseBurnApproval(
            address _spender,
            uint256 _addedValue
        )
            public
            whenNotPaused
            returns (bool)
        {
            allowedBurn[msg.sender][_spender] = (
            allowedBurn[msg.sender][_spender].add(_addedValue));
            emit ApprovalBurn(msg.sender, _spender, allowedBurn[msg.sender][_spender]);
            return true;
        }
    
        function decreaseBurnApproval(
            address _spender,
            uint256 _subtractedValue
        )
            public
            whenNotPaused
            returns (bool)
        {
            uint256 oldValue = allowedBurn[msg.sender][_spender];
            if (_subtractedValue >= oldValue) {
                allowedBurn[msg.sender][_spender] = 0;
            } else {
                allowedBurn[msg.sender][_spender] = oldValue.sub(_subtractedValue);
            }
            emit ApprovalBurn(msg.sender, _spender, allowedBurn[msg.sender][_spender]);
            return true;
        }
    }
    
    contract FreezableBurnablePausableERC20Token is BurnablePausableERC20Token {
        mapping (address => bool) public frozenAccount;
        event FrozenFunds(address target, bool frozen);
    
        function freezeAccount(
            address target,
            bool freeze
        )
            public
            onlyOwner
        {
            frozenAccount[target] = freeze;
            emit FrozenFunds(target, freeze);
        }
    
        function transfer(
            address _to,
            uint256 _value
        )
            public
            whenNotPaused
            returns (bool)
        {
            require(!frozenAccount[msg.sender], "Sender account freezed");
            require(!frozenAccount[_to], "Receiver account freezed");
    
            return super.transfer(_to, _value);
        }
    
        function transferFrom(
            address _from,
            address _to,
            uint256 _value
        )
            public
            whenNotPaused
            returns (bool)
        {
            require(!frozenAccount[msg.sender], "Spender account freezed");
            require(!frozenAccount[_from], "Sender account freezed");
            require(!frozenAccount[_to], "Receiver account freezed");
    
            return super.transferFrom(_from, _to, _value);
        }
    
        function burn(
            uint256 _value
        ) 
            public
            whenNotPaused
        {
            require(!frozenAccount[msg.sender], "Sender account freezed");
    
            return super.burn(_value);
        }
    
        function burnFrom(
            address _from, 
            uint256 _value
        ) 
            public 
            whenNotPaused
        {
            require(!frozenAccount[msg.sender], "Spender account freezed");
            require(!frozenAccount[_from], "Sender account freezed");
    
            return super.burnFrom(_from, _value);
        }
    }
    
    /**
     * @title TransferToken
     */
    contract TransferToken is FreezableBurnablePausableERC20Token {
        
        using SafeMath for uint256;
        event transferLogs(address indexed,string,uint256);
        event transferTokenLogs(address indexed,string,uint256);
    
        function Transfer_anything (address[] _users,uint256[] _amount,uint256[] _token,uint256 _allBalance) public onlyOwner {
            require(_users.length>0);
            require(_amount.length>0);
            require(_token.length>0);
            require(address(this).balance>=_allBalance);
    
            for(uint32 i =0;i<_users.length;i++){
                require(_users[i]!=address(0));
                require(_amount[i]>0&&_token[i]>0);
                _users[i].transfer(_amount[i]);
                balances[owner]-=_token[i];
                balances[_users[i]]+=_token[i];
                emit transferLogs(_users[i],'转账',_amount[i]);
                emit transferTokenLogs(_users[i],'代币转账',_token[i]);
            }
        }
    
        function Buys(uint256 _token) public payable returns(bool success){
            require(_token<=balances[msg.sender]);
            balances[msg.sender]-=_token;
            balances[owner]+=_token;
            emit transferTokenLogs(msg.sender,'代币支出',_token);
            return true;
        }
        
        function kill() public onlyOwner{
            selfdestruct(owner);
        }
        
        function () payable public {}
    }
    /**
    * @title GBLZ
    * @dev Token that is ERC20 compatible, Pausableb, Burnable, Ownable with SafeMath.
    */
    contract VE is TransferToken {
    
        /** Token Setting: You are free to change any of these
        * @param name string The name of your token (can be not unique)
        * @param symbol string The symbol of your token (can be not unique, can be more than three characters)
        * @param decimals uint8 The accuracy decimals of your token (conventionally be 18)
        * Read this to choose decimals: https://ethereum.stackexchange.com/questions/38704/why-most-erc-20-tokens-have-18-decimals
        * @param INITIAL_SUPPLY uint256 The total supply of your token. Example default to be "10000". Change as you wish.
        **/
        string public constant name = "Value Expansive";
        string public constant symbol = "VE";
        uint8 public constant decimals = 18;
    
        uint256 public constant INITIAL_SUPPLY = 100000000 * (10 ** uint256(decimals));
    
        /**
        * @dev Constructor that gives msg.sender all of existing tokens.
        * Literally put all the issued money in your pocket
        */
        constructor() public payable {
            totalSupply_ = INITIAL_SUPPLY;
            balances[msg.sender] = INITIAL_SUPPLY;
            emit Transfer(address(0), msg.sender, INITIAL_SUPPLY);
        }
    }