Transaction Hash:
Block:
20157826 at Jun-24-2024 12:00:11 AM +UTC
Transaction Fee:
0.002730652303902576 ETH
$6.31
Gas Used:
812,472 Gas / 3.360918658 Gwei
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x0041CCa0...859dA901D | 0.026234920753736099 Eth | 0.027504594239473703 Eth | 0.001269673485737604 | ||
0x049668bd...7fC7D6353 | 0.000272777452018503 Eth | 0.002898374571948937 Eth | 0.002625597119930434 | ||
0x09FE7750...F6b517c8f | 0.000223838550986916 Eth | 0.002961393558692966 Eth | 0.00273755500770605 | ||
0x1245CE01...18fBe3779 | 1.82159712797950896 Eth | 1.859687332551637083 Eth | 0.038090204572128123 | ||
0x125D011A...367E7523b | 0.004735238343087872 Eth | 0.007443636343679931 Eth | 0.002708398000592059 | ||
0x17807BA6...B705c4C68 | 0.029557258162413927 Eth | 0.031397998300080542 Eth | 0.001840740137666615 | ||
0x1f9090aa...8e676c326
Miner
| 3.162494472649843979 Eth | 3.163713180649843979 Eth | 0.001218708 | ||
0x20ea45C8...04c4AC422 | 0.004188101092275138 Eth | 0.008808276252093707 Eth | 0.004620175159818569 | ||
0x23285d76...dB21efF02 | 0.007332878044564663 Eth | 0.039074715188004766 Eth | 0.031741837143440103 | ||
0x23361C16...7C99e85c8 | 0.001377872822535562 Eth | 0.015678186191407019 Eth | 0.014300313368871457 | ||
0x276f7188...95DEa0BC0 | 0.017057326185521938 Eth | 0.019596673156997146 Eth | 0.002539346971475208 | ||
0x27a8f27f...53CB45E2f | 0.005302803656442965 Eth | 0.007166814083772498 Eth | 0.001864010427329533 | ||
0x304AF7a8...922bBA875 | 0.008926310046404818 Eth | 0.040668147189844921 Eth | 0.031741837143440103 | ||
0x30a25ad8...F8601c5d4 |
1.954889109764643641 Eth
Nonce: 2
|
1.369418668175947573 Eth
Nonce: 3
| 0.585470441588696068 | ||
0x3B048b8A...bdfE6dEa9 | 0.009978247627647311 Eth | 0.01128455267293324 Eth | 0.001306305045285929 | ||
0x3C77419e...bb55424f1 | 0.075161990344544025 Eth | 0.088480147526617068 Eth | 0.013318157182073043 | ||
0x3EA2f1E4...57eAC8764 | 0.039749379426028313 Eth | 0.041019052911765917 Eth | 0.001269673485737604 | ||
0x3eFEEE40...23e7314AB | 0.008137375665109136 Eth | 0.00940704915084674 Eth | 0.001269673485737604 | ||
0x44050e88...7c0be5e10 | 0.000739177126085465 Eth | 0.002902771870060756 Eth | 0.002163594743975291 | ||
0x515b3F66...985b76948 | 0.009557980616577902 Eth | 0.011976597250003363 Eth | 0.002418616633425461 | ||
0x529fC1a4...5055957D7 | 0.147719845670531504 Eth | 0.188141281988639461 Eth | 0.040421436318107957 | ||
0x56aEd1EA...59005AA52 | 1.134127565494811691 Eth | 1.136766317947698834 Eth | 0.002638752452887143 | ||
0x620382dD...AF1699b13 | 0.004337644196424123 Eth | 0.007043734399914052 Eth | 0.002706090203489929 | ||
0x6241ACCC...c4B731385 | 0.00717893844116685 Eth | 0.013554155375252319 Eth | 0.006375216934085469 | ||
0x64124E5E...6645E0B2D | 0.004128569829507777 Eth | 0.009678036953307979 Eth | 0.005549467123800202 | ||
0x664A73aF...55B409425 | 0.004890063042132236 Eth | 0.006746871387475359 Eth | 0.001856808345343123 | ||
0x7400668d...30B0905A1 | 0.921276943561306566 Eth | 0.940322045847370628 Eth | 0.019045102286064062 | ||
0x74d701eD...686b7c70e | 0.009466237521880147 Eth | 0.013617473588408591 Eth | 0.004151236066528444 | ||
0x7A18bd76...d0C43B7B0 | 0.02973288101778707 Eth | 0.032976639148704315 Eth | 0.003243758130917245 | ||
0x7A772ff7...5fbcCFdac | 0.003239462972230326 Eth | 0.007738452114727603 Eth | 0.004498989142497277 | ||
0x7c9Af046...97c70528F | 0.009554546153247567 Eth | 0.012170986424875221 Eth | 0.002616440271627654 | ||
0x7ddB6165...C6238af3C | 0.205610216572858008 Eth | 0.221395447408762303 Eth | 0.015785230835904295 | ||
0x7e37EfA6...247F68cA9 | 0.032215119612868029 Eth | 0.033484793098605633 Eth | 0.001269673485737604 | ||
0x7Ee326e9...Ede33FD76 | 0.166143192084115588 Eth | 0.169228859864484008 Eth | 0.00308566778036842 | ||
0x85125432...0a7a2F4af | 0.009465055495077912 Eth | 0.011143156986303324 Eth | 0.001678101491225412 | ||
0x8a7Ce226...8E4450Ab3 | 0.102492050467572748 Eth | 0.106172113780240472 Eth | 0.003680063312667724 | ||
0x92c3717A...90469325A | 0.302939504118558281 Eth | 0.334681341261998384 Eth | 0.031741837143440103 | ||
0x940e3146...1262D640f | 0.007910891761432318 Eth | 0.011476494549122725 Eth | 0.003565602787690407 | ||
0x9a76e856...39576F18C | 0.005708708764548976 Eth | 0.018405443621925017 Eth | 0.012696734857376041 | ||
0x9af741D0...9EF05F61d | 0.004303447694792821 Eth | 0.005777612414321037 Eth | 0.001474164719528216 | ||
0xa2528B5a...b3CFcF773 | 0.015690331131268121 Eth | 0.026577676611574666 Eth | 0.010887345480306545 | ||
0xa9Ea6847...3C586c199 | 0.003997901139775563 Eth | 0.010853871897004116 Eth | 0.006855970757228553 | ||
0xb030Be69...408587Aa1 | 0.004858422907242651 Eth | 0.008577626814313936 Eth | 0.003719203907071285 | ||
0xB906b222...4001d4f14 | 0.302272489460727978 Eth | 0.303938935910758583 Eth | 0.001666446450030605 | ||
0xBaDEe5e0...aC7EAA84e | 0.00955986213555377 Eth | 0.013415087858673498 Eth | 0.003855225723119728 | ||
0xBdbE1727...3e9f0Fb67 | 0.011494005605412564 Eth | 0.014712993365766576 Eth | 0.003218987760354012 | ||
0xBeC4e72e...dFddf75Ed | 0.000342550469373 Eth | 0.032084387612813103 Eth | 0.031741837143440103 | ||
0xBEEC0888...Ad3136844 | 0.037181544616968374 Eth | 0.038490106431782528 Eth | 0.001308561814814154 | ||
0xc3198495...415684d1F | 0.004286666563433188 Eth | 0.006209197637854391 Eth | 0.001922531074421203 | ||
0xc45e688C...06931d5bf | 2.164528896594441965 Eth | 2.166419431502364922 Eth | 0.001890534907922957 | ||
0xc9Ed68D3...a9B9f4ad8 | 0.004568859045279099 Eth | 0.007239519462865129 Eth | 0.00267066041758603 | ||
0xCeF9C7E3...5fF66A645 | 0.003679879092844454 Eth | 0.008208655801154133 Eth | 0.004528776708309679 | ||
0xD2bdf92B...3ceEA002A | 0.006689129179062586 Eth | 0.014636205382406866 Eth | 0.00794707620334428 | ||
0xDb81F287...BEb40C4dc | 0.008453627706346843 Eth | 0.014914871621944085 Eth | 0.006461243915597242 | ||
0xDE1Aa581...73DFB8313 | 0.003102925215751769 Eth | 0.007155910212550626 Eth | 0.004052984996798857 | ||
0xE407c896...A014A6530 | 0.004011800316977982 Eth | 0.010870269154142106 Eth | 0.006858468837164124 | ||
0xE4E6aD9f...4f146e3b4 | 0.105182658379385122 Eth | 0.107103674464456226 Eth | 0.001921016085071104 | ||
0xE761A5E0...9a061bb2A | 0.82648171395475392 Eth | 0.827751387440491524 Eth | 0.001269673485737604 | ||
0xE8375A3F...2Db895885 | 0.000086846525548168 Eth | 0.004002058935178143 Eth | 0.003915212409629975 | ||
0xE918dA9A...833d083F0 | 0.030041669873952001 Eth | 0.031311353298109995 Eth | 0.001269683424157994 | ||
0xE9424Bda...423bAFaE8 | 0.0283 Eth | 0.060041837143440103 Eth | 0.031741837143440103 | ||
0xEa22c5D7...560d32f92 | 0.005032904696245291 Eth | 0.009099997411906823 Eth | 0.004067092715661532 | ||
0xea88AC58...c769eB487 | 0.027290648400393442 Eth | 0.032063619365080238 Eth | 0.004772970964686796 | ||
0xeD5E3aA4...61A49fF29 | 5.995664745175180572 Eth | 6.008754199606772026 Eth | 0.013089454431591454 | ||
0xedcc46d5...5c415911B | 0.014977062515680704 Eth | 0.017132942366928394 Eth | 0.00215587985124769 | ||
0xEe13e635...dd912b141 | 0 Eth | 0.000000000000000003 Eth | 0.000000000000000003 | ||
0xEEFB9e60...497E4B979 | 0.418871950144692847 Eth | 0.422092522301757859 Eth | 0.003220572157065012 | ||
0xF39A426C...1fe04df84 | 0.00260484337448827 Eth | 0.011323541618696424 Eth | 0.008718698244208154 | ||
0xf565cDC0...40Fd2A5fa | 0.000202748223063207 Eth | 0.00253067273828241 Eth | 0.002327924515219203 | ||
0xf77521Bc...8c04C9033 | 0.006212256060588112 Eth | 0.031605725775340194 Eth | 0.025393469714752082 | ||
0xf7D3eCa7...2DB17882E | 0.1025180722667261 Eth | 0.118583058737455382 Eth | 0.016064986470729282 | ||
0xf9114897...539f29C44 | 0.047241561287717825 Eth | 0.059938296145093866 Eth | 0.012696734857376041 | ||
0xfA5E28Ef...FD4dcEF54 | 0.000234337922781013 Eth | 0.001512652083360285 Eth | 0.001278314160579272 | ||
0xfb609A7d...504022b58 | 0.030253268370977776 Eth | 0.03204178548394255 Eth | 0.001788517112964774 | ||
0xFBFd51C1...191C9dA60 | 0.001016434909192427 Eth | 0.005514943039844748 Eth | 0.004498508130652321 | ||
0xFC3B60BC...66221F315 | 0.005369885472411106 Eth | 0.019163505292989229 Eth | 0.013793619820578123 | ||
0xfce7B5ba...51Df30836 | 0.005017038929927603 Eth | 0.007011050132468098 Eth | 0.001994011202540495 | ||
0xfd58EB00...2B7dD6a11 | 2.743866476808009307 Eth | 2.745136150293746911 Eth | 0.001269673485737604 |
Execution Trace
ETH 0.582739789284793492
BulkTransfer.distribute( recipients=[0x529fC1a45Ed9d383822DD0b5Becb4285055957D7, 0x1245CE0180Fb54CF8a446692459B58418fBe3779, 0x23285d76e062EAFa4cb5dbA6461aA4adB21efF02, 0xBeC4e72eD6774fcE5Ca4f0063B309b4dFddf75Ed, 0xE9424Bda18c8c084D5584C0Fae704A4423bAFaE8, 0x304AF7a86a0644A6c3D0B38D2E71105922bBA875, 0x92c3717A1318cf0e02883Ca0BAE73bd90469325A, 0xf77521BcCbfB6607D90CfC7ac6FBe308c04C9033, 0x7400668de2cF223142D7F2CEe8b2eBC30B0905A1, 0xf7D3eCa7C5f164E953689685B8f6e832DB17882E, 0x7ddB6165bD9069976d0D243a5413358C6238af3C, 0x23361C165dF7bAc1f9372C0D1C9E2577C99e85c8, 0xFC3B60BCB3eA240F44A0CE0118A89f566221F315, 0x3C77419e4436aB222678eeC79D49232bb55424f1, 0xeD5E3aA45f217CC1Ae1413074afaF5861A49fF29, 0xf9114897D8B1796aD884922D9c53adA539f29C44, 0x9a76e856878Fe8c6d80A06B9989d4CB39576F18C, 0xa2528B5a0cFF462dEA2416a7c5A2cd0b3CFcF773, 0xF39A426C6C81BFf86498589a739ddD41fe04df84, 0xD2bdf92BF7546A5B9beBf6659Db442e3ceEA002A, 0xE407c896374F70F1A7A57C552950Ea0A014A6530, 0xa9Ea6847D4861b9140E14CAb4fc56283C586c199, 0xDb81F2874bCfB183A609cC2E0177D89BEb40C4dc, 0x6241ACCC6757C8fd20DBb645814B8dCc4B731385, 0x64124E5E7587DFdFa38FE44CAfb2EC46645E0B2D, 0xea88AC58bdBD5912b5287Ee3F37A2d3c769eB487, 0x20ea45C8773be815E95A93302fe624904c4AC422, 0xCeF9C7E3d3f8317f8DC3E0CfB04e02B5fF66A645, 0x7A772ff7Ddd092666AF713Cddb997F45fbcCFdac, 0xFBFd51C1B46A5Aaa07200A1E181C525191C9dA60, 0x74d701eD10Bd155e2e581A0d0BccA92686b7c70e, 0xEa22c5D79448EdDC683bD5d39a31513560d32f92, 0xDE1Aa581C8aC4eE219619b469Fc9d1073DFB8313, 0xE8375A3F342868872Ea8b7EBbF58A772Db895885, 0xBaDEe5e0363448d47B185A1f7fB78E2aC7EAA84e, 0xb030Be6931Bd089674FEF0F697e3D6F408587Aa1, 0x8a7Ce2266E270e18F634AA11C33ad438E4450Ab3, 0x940e3146A0F97152470C44Dfd4674CA1262D640f, 0x7A18bd765EC7C4Df631CF8762fB6a3ad0C43B7B0, 0xEEFB9e60e33C4dAED5E2EDddd25AAdB497E4B979, 0xBdbE1727eBE3bd3afb796e8834A729C3e9f0Fb67, 0x7Ee326e9FDB690dB418906dD8c9798CEde33FD76, 0x09FE7750BfCFE0c8096b92f68aE5DF3F6b517c8f, 0x125D011ADE1e91d3d801a17C51e44B1367E7523b, 0x620382dD5189c8e27e63E3CDCC2b3E9AF1699b13, 0xc9Ed68D33b400dC6f3A19885342c220a9B9f4ad8, 0x56aEd1EA03EFEBdEA57c9afb3eF3Ae259005AA52, 0x049668bd29cb7e7cc86Ac8B6D9C854D7fC7D6353, 0x7c9Af04677Aa6Bb1591D396d9535AF997c70528F, 0x276f7188204F9b23d960B8f6F59798c95DEa0BC0, 0x515b3F66E9F58703F1f62c31b9dEE96985b76948, 0xf565cDC0c4125ac213803Ccef7e754D40Fd2A5fa, 0x44050e88593382D9883594872a6Dc0F7c0be5e10, 0xedcc46d5Ca1Af923b7F067490Cd1d985c415911B, 0xfce7B5ba8682c140F9851368E36174451Df30836, 0xc3198495055A2b75c593fD85a659b08415684d1F, 0xE4E6aD9f49c41D6c78B85e6EdbF2A644f146e3b4, 0xc45e688C14F4f9c5fb0786a2181C81906931d5bf, 0x27a8f27f12ffA2C787C32488b52425153CB45E2f, 0x664A73aFE82f1A786A95bE90F113d8355B409425, 0x17807BA63957B6E504a41E98915f6b4B705c4C68, 0xfb609A7dDA3ed3c2AA73E5ec1174897504022b58, 0x85125432d4579AB579337fB6716d4250a7a2F4af, 0xB906b222C1A94500588b35090e48ef74001d4f14, 0x9af741D0Ea10DE95f8B564364B1d2759EF05F61d, 0xBEEC08888f8BFAE5193279A2260C590Ad3136844, 0x3B048b8Af52F5379559BEA2940353eEbdfE6dEa9, 0xfA5E28EfFdFFf9b0e56ef6B43008e62FD4dcEF54, 0xE918dA9A4987aB2321a2596f05c59d4833d083F0, 0x3EA2f1E4e885E5b73C929E199cdcD5e57eAC8764, 0x7e37EfA6B2fAaC505b50017695370d6247F68cA9, 0xfd58EB009ec629C79819C82F9F4fd482B7dD6a11, 0x3eFEEE40cb4294e094C06F162F042CA23e7314AB, 0x0041CCa0Ee0d3bCb6c818Dc5036d31c859dA901D, 0xE761A5E025afB6620B85c429aCB9d1e9a061bb2A], amounts=[40421436318107957, 38090204572128123, 31741837143440103, 31741837143440103, 31741837143440103, 31741837143440103, 31741837143440103, 25393469714752082, 19045102286064062, 16064986470729282, 15785230835904295, 14300313368871457, 13793619820578123, 13318157182073043, 13089454431591454, 12696734857376041, 12696734857376041, 10887345480306545, 8718698244208154, 7947076203344280, 6858468837164124, 6855970757228553, 6461243915597242, 6375216934085469, 5549467123800202, 4772970964686796, 4620175159818569, 4528776708309679, 4498989142497277, 4498508130652321, 4151236066528444, 4067092715661532, 4052984996798857, 3915212409629975, 3855225723119728, 3719203907071285, 3680063312667724, 3565602787690407, 3243758130917245, 3220572157065012, 3218987760354012, 3085667780368420, 2737555007706050, 2708398000592059, 2706090203489929, 2670660417586030, 2638752452887143, 2625597119930434, 2616440271627654, 2539346971475208, 2418616633425461, 2327924515219203, 2163594743975291, 2155879851247690, 1994011202540495, 1922531074421203, 1921016085071104, 1890534907922957, 1864010427329533, 1856808345343123, 1840740137666615, 1788517112964774, 1678101491225412, 1666446450030605, 1474164719528216, 1308561814814154, 1306305045285929, 1278314160579272, 1269683424157994, 1269673485737604, 1269673485737604, 1269673485737604, 1269673485737604, 1269673485737604, 1269673485737604] )
- ETH 0.040421436318107957
0x529fc1a45ed9d383822dd0b5becb4285055957d7.CALL( )
- ETH 0.038090204572128123
0x1245ce0180fb54cf8a446692459b58418fbe3779.CALL( )
- ETH 0.031741837143440103
0x23285d76e062eafa4cb5dba6461aa4adb21eff02.CALL( )
- ETH 0.031741837143440103
0xbec4e72ed6774fce5ca4f0063b309b4dfddf75ed.CALL( )
- ETH 0.031741837143440103
0xe9424bda18c8c084d5584c0fae704a4423bafae8.CALL( )
- ETH 0.031741837143440103
0x304af7a86a0644a6c3d0b38d2e71105922bba875.CALL( )
- ETH 0.031741837143440103
0x92c3717a1318cf0e02883ca0bae73bd90469325a.CALL( )
- ETH 0.025393469714752082
0xf77521bccbfb6607d90cfc7ac6fbe308c04c9033.CALL( )
- ETH 0.019045102286064062
0x7400668de2cf223142d7f2cee8b2ebc30b0905a1.CALL( )
- ETH 0.016064986470729282
0xf7d3eca7c5f164e953689685b8f6e832db17882e.CALL( )
- ETH 0.015785230835904295
0x7ddb6165bd9069976d0d243a5413358c6238af3c.CALL( )
- ETH 0.014300313368871457
0x23361c165df7bac1f9372c0d1c9e2577c99e85c8.CALL( )
- ETH 0.013793619820578123
0xfc3b60bcb3ea240f44a0ce0118a89f566221f315.CALL( )
- ETH 0.013318157182073043
0x3c77419e4436ab222678eec79d49232bb55424f1.CALL( )
- ETH 0.013089454431591454
0xed5e3aa45f217cc1ae1413074afaf5861a49ff29.CALL( )
- ETH 0.012696734857376041
0xf9114897d8b1796ad884922d9c53ada539f29c44.CALL( )
- ETH 0.012696734857376041
0x9a76e856878fe8c6d80a06b9989d4cb39576f18c.CALL( )
- ETH 0.010887345480306545
0xa2528b5a0cff462dea2416a7c5a2cd0b3cfcf773.CALL( )
- ETH 0.008718698244208154
0xf39a426c6c81bff86498589a739ddd41fe04df84.CALL( )
- ETH 0.00794707620334428
0xd2bdf92bf7546a5b9bebf6659db442e3ceea002a.CALL( )
- ETH 0.006858468837164124
0xe407c896374f70f1a7a57c552950ea0a014a6530.CALL( )
- ETH 0.006855970757228553
0xa9ea6847d4861b9140e14cab4fc56283c586c199.CALL( )
- ETH 0.006461243915597242
0xdb81f2874bcfb183a609cc2e0177d89beb40c4dc.CALL( )
- ETH 0.006375216934085469
0x6241accc6757c8fd20dbb645814b8dcc4b731385.CALL( )
- ETH 0.005549467123800202
0x64124e5e7587dfdfa38fe44cafb2ec46645e0b2d.CALL( )
- ETH 0.004772970964686796
0xea88ac58bdbd5912b5287ee3f37a2d3c769eb487.CALL( )
- ETH 0.004620175159818569
0x20ea45c8773be815e95a93302fe624904c4ac422.CALL( )
- ETH 0.004528776708309679
0xcef9c7e3d3f8317f8dc3e0cfb04e02b5ff66a645.CALL( )
- ETH 0.004498989142497277
0x7a772ff7ddd092666af713cddb997f45fbccfdac.CALL( )
- ETH 0.004498508130652321
0xfbfd51c1b46a5aaa07200a1e181c525191c9da60.CALL( )
- ETH 0.004151236066528444
0x74d701ed10bd155e2e581a0d0bcca92686b7c70e.CALL( )
- ETH 0.004067092715661532
0xea22c5d79448eddc683bd5d39a31513560d32f92.CALL( )
- ETH 0.004052984996798857
0xde1aa581c8ac4ee219619b469fc9d1073dfb8313.CALL( )
- ETH 0.003915212409629975
0xe8375a3f342868872ea8b7ebbf58a772db895885.CALL( )
- ETH 0.003855225723119728
0xbadee5e0363448d47b185a1f7fb78e2ac7eaa84e.CALL( )
- ETH 0.003719203907071285
0xb030be6931bd089674fef0f697e3d6f408587aa1.CALL( )
- ETH 0.003680063312667724
0x8a7ce2266e270e18f634aa11c33ad438e4450ab3.CALL( )
- ETH 0.003565602787690407
0x940e3146a0f97152470c44dfd4674ca1262d640f.CALL( )
- ETH 0.003243758130917245
0x7a18bd765ec7c4df631cf8762fb6a3ad0c43b7b0.CALL( )
- ETH 0.003220572157065012
0xeefb9e60e33c4daed5e2edddd25aadb497e4b979.CALL( )
- ETH 0.003218987760354012
0xbdbe1727ebe3bd3afb796e8834a729c3e9f0fb67.CALL( )
- ETH 0.00308566778036842
0x7ee326e9fdb690db418906dd8c9798cede33fd76.CALL( )
- ETH 0.00273755500770605
0x09fe7750bfcfe0c8096b92f68ae5df3f6b517c8f.CALL( )
- ETH 0.002708398000592059
0x125d011ade1e91d3d801a17c51e44b1367e7523b.CALL( )
- ETH 0.002706090203489929
0x620382dd5189c8e27e63e3cdcc2b3e9af1699b13.CALL( )
- ETH 0.00267066041758603
0xc9ed68d33b400dc6f3a19885342c220a9b9f4ad8.CALL( )
- ETH 0.002638752452887143
0x56aed1ea03efebdea57c9afb3ef3ae259005aa52.CALL( )
- ETH 0.002625597119930434
0x049668bd29cb7e7cc86ac8b6d9c854d7fc7d6353.CALL( )
- ETH 0.002616440271627654
0x7c9af04677aa6bb1591d396d9535af997c70528f.CALL( )
- ETH 0.002539346971475208
0x276f7188204f9b23d960b8f6f59798c95dea0bc0.CALL( )
- ETH 0.002418616633425461
0x515b3f66e9f58703f1f62c31b9dee96985b76948.CALL( )
- ETH 0.002327924515219203
0xf565cdc0c4125ac213803ccef7e754d40fd2a5fa.CALL( )
- ETH 0.002163594743975291
0x44050e88593382d9883594872a6dc0f7c0be5e10.CALL( )
- ETH 0.00215587985124769
0xedcc46d5ca1af923b7f067490cd1d985c415911b.CALL( )
- ETH 0.001994011202540495
0xfce7b5ba8682c140f9851368e36174451df30836.CALL( )
- ETH 0.001922531074421203
0xc3198495055a2b75c593fd85a659b08415684d1f.CALL( )
- ETH 0.001921016085071104
0xe4e6ad9f49c41d6c78b85e6edbf2a644f146e3b4.CALL( )
- ETH 0.001890534907922957
0xc45e688c14f4f9c5fb0786a2181c81906931d5bf.CALL( )
- ETH 0.001864010427329533
0x27a8f27f12ffa2c787c32488b52425153cb45e2f.CALL( )
- ETH 0.001856808345343123
0x664a73afe82f1a786a95be90f113d8355b409425.CALL( )
- ETH 0.001840740137666615
0x17807ba63957b6e504a41e98915f6b4b705c4c68.CALL( )
- ETH 0.001788517112964774
0xfb609a7dda3ed3c2aa73e5ec1174897504022b58.CALL( )
- ETH 0.001678101491225412
0x85125432d4579ab579337fb6716d4250a7a2f4af.CALL( )
- ETH 0.001666446450030605
0xb906b222c1a94500588b35090e48ef74001d4f14.CALL( )
- ETH 0.001474164719528216
0x9af741d0ea10de95f8b564364b1d2759ef05f61d.CALL( )
- ETH 0.001308561814814154
0xbeec08888f8bfae5193279a2260c590ad3136844.CALL( )
- ETH 0.001306305045285929
0x3b048b8af52f5379559bea2940353eebdfe6dea9.CALL( )
- ETH 0.001278314160579272
0xfa5e28effdfff9b0e56ef6b43008e62fd4dcef54.CALL( )
- ETH 0.001269683424157994
0xe918da9a4987ab2321a2596f05c59d4833d083f0.CALL( )
- ETH 0.001269673485737604
0x3ea2f1e4e885e5b73c929e199cdcd5e57eac8764.CALL( )
- ETH 0.001269673485737604
0x7e37efa6b2faac505b50017695370d6247f68ca9.CALL( )
- ETH 0.001269673485737604
0xfd58eb009ec629c79819c82f9f4fd482b7dd6a11.CALL( )
- ETH 0.001269673485737604
0x3efeee40cb4294e094c06f162f042ca23e7314ab.CALL( )
- ETH 0.001269673485737604
0x0041cca0ee0d3bcb6c818dc5036d31c859da901d.CALL( )
- ETH 0.001269673485737604
0xe761a5e025afb6620b85c429acb9d1e9a061bb2a.CALL( )
distribute[BulkTransfer (ln:668)]
sendValue[BulkTransfer (ln:677)]
payable[BulkTransfer (ln:677)]
// Sources flattened with hardhat v2.19.1 https://hardhat.org // SPDX-License-Identifier: MIT // File @openzeppelin/contracts/utils/[email protected] // Original license: SPDX_License_Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File @openzeppelin/contracts/access/[email protected] // Original license: SPDX_License_Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File @openzeppelin/contracts/token/ERC20/extensions/[email protected] // Original license: SPDX_License_Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/IERC20Permit.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. * * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't * need to send a transaction, and thus is not required to hold Ether at all. */ interface IERC20Permit { /** * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens, * given ``owner``'s signed approval. * * IMPORTANT: The same issues {IERC20-approve} has related to transaction * ordering also apply here. * * Emits an {Approval} event. * * Requirements: * * - `spender` cannot be the zero address. * - `deadline` must be a timestamp in the future. * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` * over the EIP712-formatted function arguments. * - the signature must use ``owner``'s current nonce (see {nonces}). * * For more information on the signature format, see the * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP * section]. */ function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; /** * @dev Returns the current nonce for `owner`. This value must be * included whenever a signature is generated for {permit}. * * Every successful call to {permit} increases ``owner``'s nonce by one. This * prevents a signature from being used multiple times. */ function nonces(address owner) external view returns (uint256); /** * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}. */ // solhint-disable-next-line func-name-mixedcase function DOMAIN_SEPARATOR() external view returns (bytes32); } // File @openzeppelin/contracts/token/ERC20/[email protected] // Original license: SPDX_License_Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: 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 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 amount) external returns (bool); } // File @openzeppelin/contracts/utils/[email protected] // Original license: SPDX_License_Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * * Furthermore, `isContract` will also return true if the target contract within * the same transaction is already scheduled for destruction by `SELFDESTRUCT`, * which only has an effect at the end of a transaction. * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract. * * _Available since v4.8._ */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } /** * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason or using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } // File @openzeppelin/contracts/token/ERC20/utils/[email protected] // Original license: SPDX_License_Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.3) (token/ERC20/utils/SafeERC20.sol) pragma solidity ^0.8.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; /** * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value, * non-reverting calls are assumed to be successful. */ function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } /** * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful. */ function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } /** * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value, * non-reverting calls are assumed to be successful. */ function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 oldAllowance = token.allowance(address(this), spender); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance + value)); } /** * @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value, * non-reverting calls are assumed to be successful. */ function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance - value)); } } /** * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value, * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval * to be set to zero before setting it to a non-zero value, such as USDT. */ function forceApprove(IERC20 token, address spender, uint256 value) internal { bytes memory approvalCall = abi.encodeWithSelector(token.approve.selector, spender, value); if (!_callOptionalReturnBool(token, approvalCall)) { _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0)); _callOptionalReturn(token, approvalCall); } } /** * @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`. * Revert on invalid signature. */ function safePermit( IERC20Permit token, address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) internal { uint256 nonceBefore = token.nonces(owner); token.permit(owner, spender, value, deadline, v, r, s); uint256 nonceAfter = token.nonces(owner); require(nonceAfter == nonceBefore + 1, "SafeERC20: permit did not succeed"); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); require(returndata.length == 0 || abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). * * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead. */ function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false // and not revert is the subcall reverts. (bool success, bytes memory returndata) = address(token).call(data); return success && (returndata.length == 0 || abi.decode(returndata, (bool))) && Address.isContract(address(token)); } } // File contracts/alpha/BulkTransfer.sol // Original license: SPDX_License_Identifier: MIT pragma solidity ^0.8.0; contract BulkTransfer is Ownable { using Address for address payable; using SafeERC20 for IERC20; function distribute( address[] calldata recipients, uint256[] calldata amounts ) external payable { uint256 sumAmount; uint256 count = recipients.length; require(count == amounts.length, "length mismatch"); for (uint256 i; i < count; ) { payable(recipients[i]).sendValue(amounts[i]); sumAmount += amounts[i]; unchecked { ++i; } } require(sumAmount <= msg.value, "insufficient funds"); } receive() external payable {} /** * @dev It allows the admin to recover tokens sent to the contract * @param token_: the address of the token to withdraw * @param amount_: the number of tokens to withdraw * * This function is only callable by owner */ function recoverToken(address token_, uint256 amount_) external onlyOwner { IERC20(token_).safeTransfer(_msgSender(), amount_); } /** * @dev It allows the admin to recover ETH sent to the contract * @param amount_: the number of ETH to withdraw * * This function is only callable by owner */ function recoverETH(uint256 amount_) external onlyOwner { payable(_msgSender()).sendValue(amount_); } }