рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдзреЛрдВ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдСрдбрд┐рдЯ рдХреЗ рд▓рд┐рдП рдЧрд╛рдЗрдбред рднрд╛рдЧ 3: рдорд┐рдердХ

рдЪреЗрддрд╛рд╡рдиреА


рдпрд╣ рд▓реЗрдЦ рдСрдЯреЛ рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдХреА рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛ рдХреА рд░реЗрдЯрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрдиреБрдмрдВрдзреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд╛рдирдмреВрдЭрдХрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрд╢реНрд▓реЗрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЕрдзреНрдпрдпрди "рдмреЗрд╣рддрд░-рдмрджрддрд░" рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЖрдзрд╛рд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдиреБрдмрдВрдзреЛрдВ рдХреЗ рдПрдХ рдмрдбрд╝реЗ рдирдореВрдиреЗ рдкрд░ рдПрдХ рдЕрдВрдзрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреА рдкреНрд░рдХреГрддрд┐ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЕрддреНрдпрдВрдд рдХрдард┐рди рд╣реИред рдпрд╣ рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЕрдиреБрдмрдВрдз рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рд╕реА рддреНрд░реБрдЯрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рддрд░реНрдХ рдХреЗ рдПрдХ рдмрдбрд╝реЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░ рд╕рдХрддреА рд╣реИ, рдФрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╣реЗрдпреБрд░рд┐рд╕реНрдЯрд┐рдХ рд╕рдВрдХреЗрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рдПрдХ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдХреЛ рдПрдХ рд╡реНрдпрд╛рдкрдХ рдмрдЧ рдвреВрдВрдврдХрд░ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рдпреЛрдВ рдиреЗ рдмрд╕ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ред рдЕрдиреБрдмрдВрдз рдХреА рддреИрдпрд╛рд░реА рдФрд░ рд╕рдВрдХрд▓рди рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рднреА рдПрдХ рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛ рд╕рдХрддреА рд╣реИрдВред рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди рд╕рднреА рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛рдлреА рдпреБрд╡рд╛ рд╣реИрдВ, рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЕрдкреВрд░рдгреАрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рди рд▓реЗрдВред


рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдкрд╛рдардХ рдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рд╕рдордЭ рджреЗрдирд╛ рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рддрд░реАрдХреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рдмрдЬрд╛рдп "рдПрдХ рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдПрдВ"ред рдПрдХ рдЙрдЪрд┐рдд рд╡рд┐рдХрд▓реНрдк рдПрдХ рдмрд╛рд░ рдореЗрдВ рдХрдИ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдП рдЧрдП рдЕрдиреБрдмрдВрдз рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реИред


рд▓реЙрдиреНрдЪ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрдЕрдк рдФрд░ рддреИрдпрд╛рд░реА


Mythril рдПрдХ рд╕рд╛рде рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЕрдЪреНрдЫреЗ рд▓реЗрдЦ рд╣реИрдВ: рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг , рдпрд╣ рдпрд╛ рдпрд╣ ред рдЬрд╛рд░реА рд░рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдорд┐рдерд╛рдЗрд▓рд░ рдХреА рдЕрдкрдиреА рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рдмрдирд╛рддреЗ рд╣реИрдВ (рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╣рдо рдЙрд╕рдореЗрдВ рдХреНрдпрд╛ рдмрджрд▓рд╛рд╡ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?):


git clone https://github.com/ConsenSys/mythril-classic.git cd mythril-classic docker build -t myth . 

рдЕрдм рдЗрд╕реЗ рд╣рдорд╛рд░реЗ contracts/flattened.sol рдкрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ contracts/flattened.sol (рдореИрдВ рдЙрд╕реА рдЕрдиреБрдмрдВрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереА ), рдЬрд┐рд╕рдореЗрдВ рджреЛ рдореБрдЦреНрдп рдЕрдиреБрдмрдВрдз рд╣реИрдВ, Ownable рд╕реЗ рдпреЛрдЧреНрдп рдФрд░ рд╣рдорд╛рд░реА Booking ред рдХрдВрдкрд╛рдЗрд▓рд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╣рдореЗрдВ рдЕрднреА рднреА рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреА рддрд░рд╣ рд╣реА рдареАрдХ рдХрд┐рдпрд╛, рдбреЙрдХрд░реАрдлрд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реБрдП рдЬреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛:


 COPY --from=ethereum/solc:0.4.20 /usr/bin/solc /usr/bin 

рдЫрд╡рд┐ рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж, рдЖрдк рдЕрдиреБрдмрдВрдз рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рднреА рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд -v4 рдФрд░ --verbose-report рдЭрдВрдбреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЖрдЗрдП рдЬрд╛рдиреЗ:


 docker run -v $(pwd):/tmp \ -w /tmp myth:latest \ -v4 \ --verbose-report \ -x contracts/flattened.sol 

рдпрд╣рд╛рдВ рд╣рдо рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЪрдкрдЯрд╛ рдЕрдиреБрдмрдВрдз рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдЕрд▓рдЧ Booking.sol рдЕрдиреБрдмрдВрдз рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдФрд░ Mythril рдХреЛ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 docker run -v $(pwd):/tmp \ -w /tmp myth:latest \ --solc-args="--allow-paths /tmp/node_modules/zeppelin-solidity/ zeppelin-solidity=/tmp/node_modules/zeppelin-solidity" \ -v4 \ --verbose-report \ -x contracts/Booking.sol 

рдореИрдВ рдЪрдкрдЯрд╛ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдХреЛрдб рдореЗрдВ рдмрд╣реБрдд рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдорд╛рдЗрдереНрд░рд┐рд▓ рдореЗрдВ рдПрдХ рдЕрддреНрдпрдВрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдореЛрдб - --truffle , рдЬреЛ truffle рд╣рд░ рдЪреАрдЬ рдХрд╛ --truffle truffle , рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЬрд╛рдБрдЪ truffle рд╣реИред рдПрдХ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рдЕрдиреБрдмрдВрдз рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдмреГрд╣рджрд╛рдиреНрддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ Mythril рд╕рднреА рдЕрдиреБрдмрдВрдзреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдЧрд╛ рдЬреЛ рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ Ownable рдХрд╛ рдЦреБрдж рдХрд╛ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдЕрдиреБрдмрдВрдз рд╣реИ, рдФрд░ рд╣рдо рдХреЗрд╡рд▓ Booking рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рд╣реИ:


 docker run -v $(pwd):/tmp -w /tmp myth:latest -x contracts/flattened.sol:Booking -v4 --verbose-report 

рд╕реНрдЯрд╛рд░реНрдЯ рдФрд░ рдбрд┐рдкреНрд▓реЙрдп рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ


рд╣рдо рдЙрдкрд░реЛрдХреНрдд рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:


 mythril.laser.ethereum.svm [WARNING]: No contract was created during the execution of contract creation Increase the resources for creation execution (--max-depth or --create-timeout) The analysis was completed successfully. No issues were detected. 

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рдЕрдиреБрдмрдВрдз рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ "рдирд┐рд╢реНрдЪрд┐рдд" рдерд╛ред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ рд╕рднреА рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП -v4 рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдФрд░ рдПрдХ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреЛ рдпрд╛рдж рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИред рдЗрд╕ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдорд╛рдЗрдереНрд░рд┐рд▓ рдХрд╛ рд╕рд╣реА рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред


рдЗрд╕рд▓рд┐рдП, рд╣рдо рдорд┐рдерд╛рдЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд░рд╣реЗ рд╣реИрдВ: It uses concolic analysis, taint analysis and control flow checking to detect a variety of security vulnerabilities ред рдпрджрд┐ рдЖрдк рдЗрди рд╢рд░реНрддреЛрдВ рд╕реЗ рдмрд╣реБрдд рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдореИрдВ рдпрд╣рд╛рдВ рд╡рд┐рдХреАрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рдХреА рдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ x86 рдХреЗ рд▓рд┐рдП рдЯреЗрдВрдЯ рдЪреЗрдХрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫреА рдкреНрд░рд╕реНрддреБрддрд┐ рджреА рдЧрдИ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: Mythril рдПрдХ рдЕрдиреБрдмрдВрдз рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИ, рдЙрди рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрдиреБрдмрдВрдз рдХреЗ "рдЯреВрдЯреЗ рд╣реБрдП" рд░рд╛рдЬреНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЫрдВрдЯрдиреА рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд░рд╛рд╕реНрддреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣рд╛рдБ рдКрдкрд░ рд▓реЗрдЦ рд╕реЗ рдПрдХ рдирдореВрдирд╛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдЖрд░реЗрдЦ рд╣реИ:


 1.      .   symbolic-,        . 2.      ,     ,   trace .    ,      ,    . 3.     . 4.       trace-. 5.  symbolic execution   trace,   symbolic ,    ,     ,     . 6.     ,          .    , . 7.   :   ,   ,   input-,     ,      .   input-   ,   .6    . 8.   .4 

рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ Mythril рдХреЛрдб рдореЗрдВ рдПрдХ рд╢рд╛рдЦрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рд╕рдордЭ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдЪрд░ рдХреЗ рд╕реЗрдЯ рдореЗрдВ рдПрдХ рдФрд░ рджреВрд╕рд░реА рд╢рд╛рдЦрд╛ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╢рд╛рдЦрд╛ рдореЗрдВ, Mythril рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдореБрдЦрд░, transfer , рдЖрддреНрдо-рдЕрд╡рд┐рдирд╛рд╢реА рдФрд░ рдЕрдиреНрдп рд╕реБрд░рдХреНрд╖рд╛-рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ opcodes рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдорд╛рдЗрдереНрд░рд┐рд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рд▓реЗрдирджреЗрди рдХрд╛ рд╕реЗрдЯ рд╕реБрд░рдХреНрд╖рд╛ рднрдВрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдорд╛рдЗрдереНрд░рд┐рд▓ рдЙрди рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдХрд╛рдЯ рджреЗрддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдХрднреА рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЗрд╕рдХреА рдореБрдЦреНрдп рдЪрд╛рд▓ рд╣реИред Mythril рдЖрдВрддреЛрдВ рдФрд░ рд╢рд╛рдЦрд╛ рдЪрд▓рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ ред


рд╕реНрдорд╛рд░реНрдЯ рдЕрдиреБрдмрдВрдз рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдирд┐рд░реНрдзрд╛рд░рдХ рдкреНрд░рдХреГрддрд┐ рдХреЗ рдХрд╛рд░рдг, рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдПрдХ рд╣реА рдХреНрд░рдо рд╣рдореЗрд╢рд╛ рдордВрдЪ, рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдпрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рд░рд╛рдЬреНрдп рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рд╕рдЦреНрддреА рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдореЗрдВ рдХрд╛рд░реНрдп рдХрдо рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рд╕рдВрд╕рд╛рдзрди рдмреЗрд╣рдж рд╕реАрдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдорд╛рдЗрдереНрд░рд┐рд▓, рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдФрд░ рджреЗрд╢реА рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд╕рдВрдпреЛрдЬрди рдЬреИрд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рдж рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдорд╛рдЗрдереНрд░рд┐рд▓ "рд░рд╛рдЬреНрдп" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рдЕрдиреБрдмрдВрдз рдХрд╛ рдХреЛрдб, рдЗрд╕рдХрд╛ рд╡рд╛рддрд╛рд╡рд░рдг, рд╡рд░реНрддрдорд╛рди рдХрдорд╛рдВрдб рдХрд╛ рдПрдХ рд╕рдВрдХреЗрддрдХ, рдЕрдиреБрдмрдВрдз рдХрд╛ рднрдВрдбрд╛рд░рдг рдФрд░ рд╕реНрдЯреИрдХ рдХреА рд╕реНрдерд┐рддрд┐ рд╣реИред рдпрд╣рд╛рдБ рдкреНрд░рд▓реЗрдЦрди рд╣реИ:


 The machine state ╬╝ is defined as the tuple (g, pc, m, i, s) which are the gas available, the program counter pc тИИ P256, the memory contents, the active number of words in memory (counting continuously from position 0), and the stack contents. The memory contents ╬╝m are a series of zeroes of size 256. 

рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдХреНрд░рдордг рдХрд╛ рдЧреНрд░рд╛рдл рдЕрдзреНрдпрдпрди рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рд╣реИред рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╕рдлрд▓ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рдЧреНрд░рд╛рдл рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд▓реЙрдЧ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдорд╛рдЗрдереНрд░рд┐рд▓ - рдЧреНрд░рд╛рдл рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдЧреНрд░рд╛рдл рдХреЛ рдорд╛рдирд╡-рдкрдардиреАрдп рд░реВрдк рдореЗрдВ --graph ред


рдЕрдм рдХрдореЛрдмреЗрд╢ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдХрд┐ рдорд╛рдЗрдереНрд░рд┐рд▓ рдХреНрдпрд╛ рдХрд░реЗрдЧрд╛, рд╣рдо рдпрд╣ рд╕рдордЭрдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗ рдХрд┐ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдХреЛ рдкрд╛рд░реНрд╕ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдпрд╣ рдХрд╣рд╛рдВ рд╕реЗ рдЖрдпрд╛ рд╣реИ [WARNING]: No contract was created during the execution of contract creation ред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ --create-timeout рдФрд░ --max-depth (рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╣реИ) рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рджреЛрд╖ рджреЗрдирд╛ рдерд╛ - рдЗрд╕рдореЗрдВ рдХреБрдЫ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ред рдпрд╣рд╛рдБ рдЙрд╕рдХрд╛ рдХреЛрдб рд╣реИ:


 function Booking( string _description, string _fileUrl, bytes32 _fileHash, uint256 _price, uint256 _cancellationFee, uint256 _rentDateStart, uint256 _rentDateEnd, uint256 _noCancelPeriod, uint256 _acceptObjectPeriod ) public payable { require(_price > 0); require(_price > _cancellationFee); require(_rentDateStart > getCurrentTime()); require(_rentDateEnd > _rentDateStart); require(_rentDateStart+_acceptObjectPeriod < _rentDateEnd); require(_rentDateStart > _noCancelPeriod); m_description = _description; m_fileUrl = _fileUrl; m_fileHash = _fileHash; m_price = _price; m_cancellationFee = _cancellationFee; m_rentDateStart = _rentDateStart; m_rentDateEnd = _rentDateEnd; m_noCancelPeriod = _noCancelPeriod; m_acceptObjectPeriod = _acceptObjectPeriod; } 

Mythril рдХреЗ рдПрдХреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдпрд╛рдж рдХрд░реЗрдВред рдЯреНрд░реЗрд╕ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдмрд╛рдж рдХреЗ рд╕рднреА рдирд┐рд╖реНрдкрд╛рджрди рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХрд┐рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ _price == 0 рд╕рд╛рде _price == 0 , рддреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ require(_price > 0) рдкрд░ рдЕрдкрд╡рд╛рдж рдЫреЛрдбрд╝ рджреЗрдЧрд╛ require(_price > 0) ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ Mythril рдХрдИ _price рдорд╛рдиреЛрдВ рд╕реЗ _price рдХрд░рддрд╛ рд╣реИ, рддреЛ рднреА рдирд┐рд░реНрдорд╛рддрд╛ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, _price <= _cancellationFee ред рдЗрд╕ рдЕрдиреБрдмрдВрдз рдореЗрдВ, рд╕рдЦреНрдд рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рдПрдХ рджрд░реНрдЬрди рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ, рдФрд░ Mythril, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдорд╛рдиреНрдп рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХрд╛ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд╣ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЕрдЧрд▓реА рд╢рд╛рдЦрд╛ рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЫрдВрдЯрдиреА рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕рдХреЗ рдкрд╛рд╕ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдореМрдХрд╛ рдирд╣реАрдВ рд╣реИ - рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдВрдпреЛрдЬрди рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЕрдиреБрдмрдВрдз рдХреА рдЧрдгрдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ - рд╕рднреА рддрд░реАрдХреЗ рдХрд┐рд╕реА рддрд░рд╣ рдХреА require(...) рдкрд░ рдЖрд░рд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓рддреА рд╣реИред


рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ: рдкрд╣рд▓рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд╕рднреА require рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рджреЗрдВред рддрдм Mythril рдХрд┐рд╕реА рднреА рд╕реЗрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ рдФрд░ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдиреБрдмрдВрдз рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рд╕реЗ, рдорд╛рдЗрдереНрд░рд┐рд▓ рдХреЛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓реЗрдВрдЧреА рдЬреЛ рдХрд┐ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рджрд┐рдП рдЧрдП рдЧрд▓рдд рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрднрд╡ рд╣реИрдВред рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рдП, рддреЛ рдЕрдЧрд░ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдирд┐рд░реНрдорд╛рддрд╛ _cancellationFee рдХреЗ рдХрд┐рд░рд╛рдП рдХреА рдХреАрдордд рдХрд╛ рдПрдХ рдЕрд░рдм рдЧреБрдирд╛ _mprice , рддреЛ _mprice рдПрдХ рдмрдЧ _mprice , рддреЛ рдРрд╕реЗ рдмрдЧ рдореЗрдВ рдХреЛрдИ рдлрд╛рдпрджрд╛ рдирд╣реАрдВ рд╣реИ - рдРрд╕рд╛ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдХрднреА рдмреНрд▓реЙрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рд╕рдВрд╕рд╛рдзрди рдЦрд░реНрдЪ рд╣реЛрдВрдЧреЗред рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЕрдиреБрдмрдВрдз рдЕрднреА рднреА рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рд╕реБрд╕рдВрдЧрдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдЯрдХрд╛ рд╣реБрдЖ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдЧреЗ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдзрд┐рдХ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдирд┐рд░реНрдорд╛рдг рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдорд┐рдерд┐рд▓рд░ рдЙрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢ рди рдХрд░реЗрдВ рдЬреЛ рдЕрдиреБрдмрдВрдз рдареАрдХ рд╕реЗ рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ рдХрднреА рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред


рдореИрдВрдиреЗ рдХрдИ рдШрдВрдЯреЗ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдмрд┐рддрд╛рдП рдХрд┐ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдФрд░ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдореЗрдВ рдХрд╣рд╛рдВ-рдХрд╣рд╛рдВ рддреИрдирд╛рддреА рдЯреВрдЯрддреА рд╣реИред рдореЗрд░реА рдкрд░реЗрд╢рд╛рдирд┐рдпреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд┐рд░реНрдорд╛рддрд╛ getCurrentTime() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╡рд░реНрддрдорд╛рди рд╕рдордп рджреЗрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреЙрд▓ Mythril рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддреА рд╣реИред рдореИрдВ рдпрд╣рд╛рдБ рдЗрди рдХрд╛рд░рдирд╛рдореЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдБрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдирд┐рдпрдорд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЗрди рд╕реВрдХреНрд╖реНрдорддрд╛рдУрдВ рдХреЛ рдСрдбрд┐рдЯрд░ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдЪреБрдирд╛: рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдмрд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕реЗ рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ getCurrentTime() , рдмрд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд╕реАрдзреЗ рдЖрд╡рд╢реНрдпрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд┐рдпрд╛ (рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЧреНрд░рд╛рд╣рдХ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:


  function Booking( ) public payable { m_description = "My very long booking text about hotel and beautiful sea view!"; m_fileUrl = "https://ether-airbnb.bam/some-url/"; m_fileHash = 0x1628f3170cc16d40aad2e8fa1ab084f542fcb12e75ce1add62891dd75ba1ffd7; m_price = 1000000000000000000; // 1 ETH m_cancellationFee = 100000000000000000; // 0.1 ETH m_rentDateStart = 1550664800 + 3600 * 24; // current time + 1 day m_rentDateEnd = 1550664800 + 3600 * 24 * 4; // current time + 4 days m_acceptObjectPeriod = 3600 * 8; // 8 hours m_noCancelPeriod = 3600 * 24; // 1 day require(m_price > 0); require(m_price > m_cancellationFee); require(m_rentDateStart > 1550664800); require(m_rentDateEnd > m_rentDateStart); require((m_rentDateStart + m_acceptObjectPeriod) < m_rentDateEnd); require(m_rentDateStart > m_noCancelPeriod); } 

рдкреНрд▓рд╕, рд╕рдм рдХреБрдЫ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ max-depth рдкреИрд░рд╛рдореАрдЯрд░ рднреА рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдиреЗ рдЗрд╕ --max-depth=34 рд╕рд╛рде рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ --max-depth=34 AAX t2.medium рдЙрджрд╛рд╣рд░рдг рдкрд░ --max-depth=34 ред рдЙрд╕реА рд╕рдордп, рдореЗрд░реЗ рд▓реИрдкрдЯреЙрдк рдкрд░, рдЬреЛ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИ, рд╕рдм рдХреБрдЫ рдмрд┐рдирд╛ рдХрд┐рд╕реА max-depth рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рд╢рд╛рдЦрд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдЕрдирдВрдд ( рдХреЛрдб ) рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдШреБрдорд╛рдПрдВ, рд▓реЗрдХрд┐рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╡рд╛рдВрдЫрд┐рдд рдЕрдиреБрдмрдВрдз рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ:


 mythril.laser.ethereum.svm [INFO]: 248 nodes, 247 edges, 2510 total states mythril.laser.ethereum.svm [INFO]: Achieved 59.86% coverage for code: ............. 

рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рд╕рд┐рд░реНрдл рдЙрд╕ рдЧреНрд░рд╛рдлрд╝ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдмрд╛рдХреА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╕реНрд╡рдпрдВ рдкрдврд╝рд┐рдПред рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╡рд┐рднрд┐рдиреНрди рд╢рд╛рдЦрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрдВрднреАрд░ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрдбрд╝реЗ рдЕрдиреБрдмрдВрдзреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдПрдХ рддреЗрдЬ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рднреА рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред


рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░реЗрдВ


рдЕрдм рд╣рдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЕрдкрдиреЗ рдХреЛ рдЬреЛрдбрд╝реЗрдВрдЧреЗред рдорд╛рдЗрдереНрд░рд┐рд▓ рдЙрди рд╢рд╛рдЦрд╛рдУрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдореЗрдВ рдкреНрд░рд╕рд╛рд░рдг, рдЖрддреНрдорд╡рд┐рд╢реНрд▓реЗрд╖рдг, рдЕрднрд┐рдХрдерди рдФрд░ рдЕрдиреНрдп рдХреНрд░рд┐рдпрд╛рдПрдВ рдЬреЛ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрддреА рд╣реИрдВред рдпрджрд┐ рдЙрдкрд░реЛрдХреНрдд рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЕрдиреБрдмрдВрдз рдХреЛрдб рдореЗрдВ рдХрд╣реАрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдорд╛рдЗрдереНрд░рд┐рд▓ рдЙрди рддрд░реАрдХреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕ рд╢рд╛рдЦрд╛ рдореЗрдВ рдЖрдирд╛ рд╕рдВрднрд╡ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рд╢рд╛рдЦрд╛ рдХреЗ рд▓рд┐рдП рд▓реЗрдирджреЗрди рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ!


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреАрдбрд╝рд┐рдд Booking рдЕрдиреБрдмрдВрдз рдХреЗ рд▓рд┐рдП Mythril рдиреЗ рдХреНрдпрд╛ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рд╣реИред рдкрд╣рд▓реА рдЪреЗрддрд╛рд╡рдиреА:


 ==== Dependence on predictable environment variable ==== SWC ID: 116 Severity: Low Contract: Booking Function name: fallback PC address: 566 Estimated Gas Usage: 17908 - 61696 Sending of Ether depends on a predictable variable. The contract sends Ether depending on the values of the following variables: - block.timestamp Note that the values of variables like coinbase, gaslimit, block number and timestamp are predictable and/or can be manipulated by a malicious miner. Don't use them for random number generation or to make critical decisions. -------------------- In file: contracts/flattened.sol:142 msg.sender.transfer(msg.value-m_price) 

рдФрд░ рдпрд╣ рдЙрдарддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐


 require(m_rentDateStart > getCurrentTime()); 

рдлреЙрд▓рдмреИрдХ рдлрдВрдХреНрд╢рди рдореЗрдВред


рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ Mythril рдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ getCurrentTime() рдореЗрдВ рдЫреБрдкрд╛ рд╣реБрдЖ рд╣реИред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдЕрдиреБрдмрдВрдз рдХрд╛ рдЕрд░реНрде рдПрдХ рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЛ рдХрд┐ Mythril рдкреНрд░рд╕рд╛рд░рдг рдХреЗ рд╕рд╛рде block.timestamp рдХреЛ block.timestamp рд╣реИ! рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдпрд╣ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдирд┐рд░реНрдгрдп рдЙрд╕ рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдЦрд╛рди рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдФрд░, рдпрджрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд┐рд╕реА рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдиреАрд▓рд╛рдореА рдпрд╛ рдЕрдиреНрдп рдиреАрд▓рд╛рдореА рдЕрдиреБрдмрдВрдз рдХреЗ рдЗрд╕ рд╕реНрдерд╛рди рдкрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ, рддреЛ рдХрд┐рд╕реА рдХреЛ рд╕рд╛рдордиреЗ рдЪрд▓ рд░рд╣реЗ рд╣рдорд▓реЛрдВ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред


рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдЗрд╕ рддрд░рд╣ рд╕реЗ рдиреЗрд╕реНрдЯреЗрдб рдХреЙрд▓ рдореЗрдВ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдЫрд┐рдкрд╛рддреЗ рд╣реИрдВ рддреЛ Mythril рдмреНрд▓реЙрдХрдЪрд┐рдо рдкрд░ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рджреЗрдЦрддрд╛ рд╣реИ:


 function getCurrentTime() public view returns (uint256) { - return now; + return getCurrentTimeInner(); } + function getCurrentTimeInner() internal returns (uint256) { + return now; + } 

рдФрд░ рд╣рд╛рдБ! Mythril рдХреЛ block.timestamp рдФрд░ рдкреНрд░рд╕рд╛рд░рдг рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рджреЗрдЦрдирд╛ рдЬрд╛рд░реА рд╣реИ, рдпрд╣ рдСрдбрд┐рдЯрд░ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рдж рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рд╣рдорд▓рд╛рд╡рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдЪрд░ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдФрд░ рдЕрдиреБрдмрдВрдз рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХрдИ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рдмрд╛рдж рдХрд┐рдП рдЧрдП рдирд┐рд░реНрдгрдп рдХреЛ рддрд░реНрдХ рджреНрд╡рд╛рд░рд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореБрдЦреМрдЯрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ Mythril рдЖрдкрдХреЛ рдЗрд╕реЗ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджреНрдпрдкрд┐ рдпрд╣ рдЗрд╕ рддрдереНрдп рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдЪрд░ рдХреЗ рдмреАрдЪ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдХрдиреЗрдХреНрд╢рди рдЖрдкрдХреЗ рд▓рд┐рдП getCurrentTime() рдЬрд╛рдПрдВрдЧреЗ: рдпрджрд┐ рдЖрдк getCurrentTime() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдордЬрд╛рдХ рдЙрдбрд╝рд╛рддреЗ рд╣реИрдВ рдФрд░ рдЯреНрд░рд┐рдкрд▓ рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХреА рдЧрд╣рд░рд╛рдИ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЪреЗрддрд╛рд╡рдиреА рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреА рд╣реИред Mythril рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдирдИ рд░рд╛рдЬреНрдп рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рдмрд╣реБрдд рдЧрд╣рд░реЗ рд╕реНрддрд░реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд╛рд▓ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред


рдмреЗрд╢рдХ, рдПрдХ рдЧрдВрднреАрд░ рдореМрдХрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХреЗрд╡рд▓ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдпрд╛ рдХрдЯрдСрдл рдХрд╣реАрдВ рди рдХрд╣реАрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рдЧрд╣рд░рд╛рдИ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдЙрддреНрдкрд╛рдж рд╕рдХреНрд░рд┐рдп рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╣реИ, рд░рд╛рдЗрдЯ рдСрдл рд░рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рдордп, рдореИрдВ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ max-depth рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реБрдП рджреЗрдЦрддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рди рд▓реЗрдВ, рд╣рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рд╕рдмреВрдд рдорд┐рд▓ рдЧрдП рд╣реИрдВ рдХрд┐ Mythril рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрдиреЗрдХреНрд╢рди рдХреЗ рдмреАрдЪ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ рдЪрд░ред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЕрдиреБрдмрдВрдз рдХреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдХрд┐рд╕реА рдХреЛ рднреА рдкреНрд░рд╕рд╛рд░рдг рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрдиреБрдмрдВрдз рдХреЛ рдкреНрд░рд╕рд╛рд░рдг рднреЗрдЬрддрд╛ рд╣реИред рд╣рдордиреЗ рдХрд┐рд╕реА рдХреЛ рднреА рдИрдерд░ рдХрд╛ 1/5 рд╣рд┐рд╕реНрд╕рд╛ рд▓реЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рддрднреА рдЬрдм рдЕрдиреБрдмрдВрдз рд░рд╛рдЬреНрдп рдореЗрдВ рд╣реИ (рдпрд╛рдиреА рдЧреНрд░рд╛рд╣рдХ рджреНрд╡рд╛рд░рд╛ рдИрдерд░ рдХреЗ рд╕рд╛рде рдХрд┐рд░рд╛рдП рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА)ред рдпрд╣рд╛рдБ рд╕рдорд╛рд░реЛрд╣ рд╣реИ:


 function collectTaxes() external onlyState(State.PAID) { msg.sender.transfer(address(this).balance / 5); } 

рдорд┐рдерд╛рдЗрд▓ рд╕рдорд╕реНрдпрд╛ рдкрд╛рдпрд╛ рдЧрдпрд╛:


 ==== Unprotected Ether Withdrawal ==== SWC ID: 105 Severity: High Contract: Booking Function name: collectTaxes() PC address: 2492 Estimated Gas Usage: 2135 - 2746 Anyone can withdraw ETH from the contract account. Arbitrary senders other than the contract creator can withdraw ETH from the contract account without previously having sent a equivalent amount of ETH to it. This is likely to be a vulnerability. -------------------- In file: contracts/flattened.sol:149 msg.sender.transfer(address(this).balance / 5) -------------------- -------------------- Transaction Sequence: { "2": { "calldata": "0x", "call_value": "0xde0b6b3a7640000", "caller": "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef" }, "3": { "calldata": "0x01b613a5", "call_value": "0x0", "caller": "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef" } } 

рдорд╣рд╛рди, рдЕрд░реНрдерд╛рддреНред Mythril рдиреЗ рджреЛ рд▓реЗрдирджреЗрди рднреА рдХрд┐рдП, рдЬреЛ рдЗрд╕ рддрдереНрдп рдХреЛ рдЬрдиреНрдо рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЕрдиреБрдмрдВрдз рд╕реЗ рдИрдерд░ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдм State.PAID рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ State.RENT рдмрджрд▓реЗрдВред рдЗрд╕ рддрд░рд╣,:


 - function collectTaxes() external onlyState(State.PAID){ + function collectTaxes() external onlyState(State.RENT) { 

рдЕрдм collectTaxes() рдХреЗрд╡рд▓ рддрднреА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЕрдиреБрдмрдВрдз рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реЛред State.RENT рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдФрд░ рдЗрд╕ рд╕рдордп рд╢реЗрд╖ рд░рд╛рд╢рд┐ рдкрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреБрдмрдВрдз рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдорд╛рд▓рд┐рдХ рдХреЛ рдкреВрд░рд╛ рдкреНрд░рд╕рд╛рд░рдг рднреЗрдЬ рджрд┐рдпрд╛ рд╣реИред рдФрд░ рдпрд╣рд╛рдБ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ Mythril рдЗрд╕ рдмрд╛рд░ рддреНрд░реБрдЯрд┐ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ==== Unprotected Ether Withdrawal ==== ! рдХреЗрд╡рд▓ рдХрдВрдбрд┐рд╢рди onlyState(State.RENT) рдХреА рд╢рд░реНрдд рдХреЗ рддрд╣рдд, рдПрдирд╛рд▓рд╛рдЗрдЬрд░ рдХреЛ рдЙрд╕ рдХреЛрдб рдмреНрд░рд╛рдВрдЪ рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛ рдЬреЛ рдиреЙрди-рдЬреАрд░реЛ рдмреИрд▓реЗрдВрд╕ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рд╕реЗ рдИрдерд░ рднреЗрдЬрддреА рд╣реИред Mythril рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдЖрдк рд╕рднреА рдкреНрд░рд╕рд╛рд░рдг рдХреЛ рдкрдЯреНрдЯреЗрджрд╛рд░ рдХреЛ рднреЗрдЬрдХрд░ рдХреЗрд╡рд▓ State.RENT рдореЗрдВ State.RENT рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЧреИрд░-рд╢реВрдиреНрдп рд╢реЗрд╖ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреА рдЗрд╕ рд╢рд╛рдЦрд╛ рдореЗрдВ рдкрд╣реБрдВрдЪрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдФрд░ Mythril рдмрд┐рд▓реНрдХреБрд▓ рдСрдбрд┐рдЯрд░ рдХреЛ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ!


рдЙрд╕реА рддрд░рд╣, рдорд╛рдЗрдереНрд░рд┐рд▓ рдЖрддреНрдордирд┐рд░реНрднрд░ рдФрд░ рдореБрдЦрд░ рдкрд╛рдПрдВрдЧреЗ, рдЬреЛ рдСрдбрд┐рдЯрд░ рдХреЛ рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдЕрдиреБрдмрдВрдз рдЕрдиреБрдмрдВрдз рдХреЗ рд╡рд┐рдирд╛рд╢ рдпрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдп рдореЗрдВ рдЯреВрдЯрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЗрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдирд╣реАрдВ рджреВрдВрдЧрд╛, рдмрд╕ рдКрдкрд░ рджрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рд╕рдорд╛рди рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, рдХреЗрд╡рд▓ selfdestruct рдмреБрд▓рд╛рддреЗ рд╣реБрдП, рдФрд░ рдЙрд╕рдХреЗ рддрд░реНрдХ рдХреЛ рдореЛрдбрд╝ рджреЗрдВред


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ Mythril рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдирд┐рд╖реНрдкрд╛рджрди рд╣реИ, рдФрд░ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг, рд╕реНрд╡рдпрдВ, рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд┐рдП рдмрд┐рдирд╛, рдХрдИ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "+", "-" рдФрд░ рдЕрдиреНрдп рдЕрдВрдХрдЧрдгрд┐рддреАрдп рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЗ рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧ рдХреЛ "рдкреВрд░реНрдгрд╛рдВрдХ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣" рдХреА рднреЗрджреНрдпрддрд╛ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдХрд┐рд╕реА рдПрдХ рдСрдкрд░реЗрдВрдб рдХреЛ рд╣рдорд▓рд╛рд╡рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдлрд┐рд░ рд╕реЗ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВ, рдорд╛рдпрдереНрд░рд┐рд▓ рдХреА рд╕рдмрд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдФрд░ рджреЗрд╢реА рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╣реИ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рддрд░реНрдХ рд╢рд╛рдЦрд╛ рдореЗрдВ рдЕрдЧреНрд░рдгреА рд╣реИред


рдирд┐рд╖реНрдХрд░реНрд╖


рдмреЗрд╢рдХ, рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдкреВрд░реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдорд╛рдЗрдереНрд░рд┐рд▓ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХрдИ рд▓реЗрдЦреЛрдВ рдХреЛ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмреНрд▓реЙрдХрдЪреЗрди рдореЗрдВ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрдиреБрдмрдВрдз рдФрд░ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛, рд╕реБрдВрджрд░ рдХреЙрд▓ рдЧреНрд░рд╛рдлрд╝ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛, рд░рд┐рдкреЛрд░реНрдЯ рддреИрдпрд╛рд░ рдХрд░рдирд╛ред Mythril рдЖрдкрдХреЛ рдЕрдкрдиреА рдЦреБрдж рдХреА рдЯреЗрд╕реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ, рдЕрдиреБрдмрдВрдз рдкрд░ рдПрдХ рдкрд╛рдпрдерди-рдЖрдзрд╛рд░рд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдФрд░ рдЖрдкрдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ, рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рдиреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд▓рдЪреАрд▓реЗрдкрди рдХреА рдордирдорд╛рдиреА рдбрд┐рдЧреНрд░реА рдХреЗ рд╕рд╛рде рдЕрд╕рдВрддреБрд╖реНрдЯ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЦреБрдж рдХреА рд░рдгрдиреАрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред


рдорд╛рдЗрдереНрд░рд┐рд▓ рдЕрднреА рднреА рдПрдХ рдХрд╛рдлреА рдпреБрд╡рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╣реИ, рдпрд╣ рдЖрдИрдбреАрдП рдкреНрд░реЛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХреБрдЫ рд▓реЗрдЦреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдмрд╣реБрдд рдХрдо рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИрдВред рдХрдИ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдореВрд▓реНрдп рдХреЗрд╡рд▓ Mythril рдХреЛрдб рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ cli.py рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдПрдХ рдкреВрд░реНрдг рдФрд░ рдЧрд╣рди рд╡рд┐рд╡рд░рдг рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИред


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рдЕрдиреБрдмрдВрдз рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рд╣реЛрддрд╛ рд╣реИ, рддреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрдЧрд╣ рд▓реЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреБрдЪрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдорд╛рдЗрдереНрд░рд┐рд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрде рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рджреЗрдЦреЗрдВ рдХрд┐ рдЖрдкрдХреА рд╕рд░реНрд╡реЛрддреНрддрдо рдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рдЕрдиреБрдмрдВрдзреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдСрдбрд┐рдЯрд░ рдЭреВрдареЗ-рд╕рдХрд╛рд░рд╛рддреНрдордХ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЬрдмрд░рди рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛред


рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, Mythril рд╕реНрдорд╛рд░реНрдЯ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯреНрд╕ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдФрд░ рдмреЗрд╣рдж рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рд╣реИ рдФрд░ рдлрд┐рд▓рд╣рд╛рд▓ рдХрд┐рд╕реА рднреА рдСрдбрд┐рдЯрд░ рдХреЗ рд╢рд╕реНрддреНрд░рд╛рдЧрд╛рд░ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо рдХреЛрдб рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕реЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдФрд░ рдЪрд░ рдХреЗ рдмреАрдЪ рдЫрд┐рдкреЗ рд╣реБрдП рд╕рдВрдмрдВрдзреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред


рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, Mythril рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рд╣реИрдВ:


  1. рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЕрдзреНрдпрдпрди рдХреЗ рддрд╣рдд рдЕрдиреБрдмрдВрдз рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╢рд░реНрддреЛрдВ рдХреЛ рд╕рдВрдХреАрд░реНрдг рдХрд░реЗрдВред рдпрджрд┐, рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рджреМрд░рд╛рди, рдорд╛рдЗрдереНрд░рд┐рд▓ рд╢рд╛рдЦрд╛рдУрдВ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдВрд╕рд╛рдзрди рдЦрд░реНрдЪ рдХрд░реЗрдЧрд╛ рдЬреЛ рдХрднреА рднреА рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреАрдбрд╝реЗ рдЦреЛрдЬрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЦреЛ рджреЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╛рд╡рд┐рдд рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред
  2. рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЕрдиреБрдмрдВрдз рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рд╣реИ, mythril.laser.ethereum.svm [WARNING]: No contract was created during the execution of contract creation Increase the resources for creation execution (--max-depth or --create-timeout) рдЬреИрд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдпрд╛рдж рди рдХрд░реЗрдВ mythril.laser.ethereum.svm [WARNING]: No contract was created during the execution of contract creation Increase the resources for creation execution (--max-depth or --create-timeout) , рдЕрдиреНрдпрдерд╛ рдЖрдк рдЧрд▓рддреА рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдИ рдмрдЧ рдирд╣реАрдВ рд╣реИред
  3. рдЖрдк рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдХреЛрдб рдореЗрдВ рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЕрдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдЪреБрдирдиреЗ рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдореЗрдВ Mythril рдХреЛ рдХрдо рд╡рд┐рд╡рд┐рдзрддрд╛ рдорд┐рд▓ рд╕рдХрддреА рд╣реИред max-depth рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рдмрд┐рдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, рддрд╛рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ "рдХрд╛рдЯ" рди рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рддреНрд░реБрдЯрд┐ рдХреЛ рдореБрдЦреМрдЯрд╛ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВред
  4. рдкреНрд░рддреНрдпреЗрдХ рдЪреЗрддрд╛рд╡рдиреА рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╣рд▓реНрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рднреА рдХрднреА-рдХрднреА рдЕрдиреБрдмрдВрдз рдХреЛрдб рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реЛрддреА рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдореЛрдирд┐рдХреЛрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕реЗ рдирд┐рдкрдЯреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдЙрди рд▓реЗрдЦреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛ рд╣реИ рдЬреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ рдпрд╛ рдиреАрдЪреЗ рд╣реИрдВ:


рднрд╛рдЧ 1. рдкрд░рд┐рдЪрдпред рд╕рдВрдХрд▓рди, рдЪрдкрдЯрд╛, рдПрдХрд░реВрдкрддрд╛ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг
рднрд╛рдЧ 2. рдЦрд┐рд╕рдХрдирд╛
3. Mythril ( )
4. Manticore ( )
5. Echidna ( )

Source: https://habr.com/ru/post/hi442114/


All Articles