* Implement static call
* Refactor static call tests
* Reuse call's post for staticcall
* Change variable names and add docstring comments
* Rename variable name
* change the comment
* Fix the tests based on the merge
* Fix the tests
* Remove extra declaration of WriteProtection
* Fix static call test
* Add the missing condition in callcode
* Support modular exponentiation for concrete data
* Add elliptic curve operations
* Fix type hints and refactor code
* Support usage of the rest of the native contracts
* Remove unused imports
* Add tests for elliptic curve functions
* Use a constant for native functions count
* Update py_ecc version
* Use PRECOMPILE_COUNT over hardcoded value
* Use shortened list comprehensives
* Clean up imports
* Use precompile count in checking precompile calls
* Refactor code
* add test to reproduce nested function bug
* add test for other level of bitvecfunc
* add appropriate handling for nested bitvecfuncs
* add return character
* ignore hybrid functions for condition permeation
* add tests to check if correct inputs are found
* copy bitvecfunc logic to generic handlers
* clean up & move logic to separate module
Removes cyclic dependency and redundant code
* style
* fix imports
* do uniq & iff application
* implement initial If for bvf
* style
* add return
* only deal with eq comparison
* fix type issues
* Fix a crash
* Fix the issue in statechange module
* Fix for mypy
* Use correct operator
* Refactor cli
* enhance cli
* Re-Refactor the cli structure for more flexibility
* Add cli tests for error
* Move the cmd_line_test to the previous directory
* Add documentation
* Add more tests and change docs
* Add more tests for storage slots and execution
* support a for analyze and add more tests
* Improve cli interface
* Fix previous errors
* Refactor with black
* Add help command
* Add new tests, fix an edge case and improve code and help messages
* Implement EXTCODECOPY
* Cache the code received from Dynld
* Reuse code_copy_helper return value
* Add tests to cover the extcodecopy cases
* Shift the addr function to WorldState
* Refactor with black
* Change based on recent PRs
* Add docstrings
* Shorten the code
* Add the steps in transaction
* Fix the account transfer and add initial state
* Support for py35
* Support creation account
* Support display of txSeed and remove saving world state from plugin
* Add type hints to functions
* Change the output jsonv2 name
* Change report tests
* Fix the addresses
* Use caller over origin and remove extra statements
* Add properties over functions
* Use initial storage
* Remove usage of tx_template
* use tx accounts over laser svm
* Remove unused imports
* Fix based on the previous merge
* Use a better initial state
* Add creation transaction
* Remove address 0
* Transaction list suggestion (#1044)
* add documentation to added functions in report
* dump dictionary to string before returning
* remove balance write
* separate transaction sequence generation into separate functions
* apply style rules
* fix typo
* Fix some issues
* Refactor with black
* Update mythril/analysis/solver.py
Co-Authored-By: JoranHonig <JoranHonig@users.noreply.github.com>
* Update mythril/analysis/solver.py
Co-Authored-By: JoranHonig <JoranHonig@users.noreply.github.com>
* Update mythril/analysis/solver.py
Co-Authored-By: JoranHonig <JoranHonig@users.noreply.github.com>
* Update mythril/analysis/solver.py
Co-Authored-By: JoranHonig <JoranHonig@users.noreply.github.com>
* Update mythril/analysis/solver.py
Co-Authored-By: JoranHonig <JoranHonig@users.noreply.github.com>
* Fix the type hinting
* Remove the caller field
* add actor address to symbolic
This will allow us to simulate semi-symbolic transaction senders
* add value transfer to transaction global state creation
* add proper balance tracking to world state and account
* use address value vs string
* disable actor address variable
* use address directly
* allow balance functions with int types
* use value as getters since bitvecs aren't hashable
* implement correct value transfer for suicide
* use actor from actor pool
* allow use of Or with *arg pattern
* use bitvec instead of strings
* add dynamic balance implementation to state datamodels
* cleanup svm interface
* use balance lambda in suicide op implementation
* use bitvec instead of string address
* update world state and account creation in symbolic
* update tests to include overflow results
* apply style rules
* ignore previous open states for now
* update native test to conform to new laser interface
* fix incorrect types in the symbolic virtual machine
* allow multiple types as input for address in account
* fix type hint in symbolic.py
* get int out of string in call
* fix type in call op implementation
* adapt test_transaction to conform to new laser interface
* use static address to keep contracts from trying to enter themselves
and make address type more dynamic
* update evm test to conform to new laser interface
* implement suicide to uncreated account
* apply style rules
* dynamically create colormap
This removes the need for a globally maintained accountlist
* get value out of address
* add accounts getter
* change symbolic test call to be valid with respect to the world
state and account apis
* remove dependency on globally recorded accounts
* fix typing issues
* fix type annotations in symbolic.py
* fix remaining mypy warnings
* simplify assertion check
* execute lambda to get balance
* make variable name plural
* add documentation to svm constructor
* use list comprehension to make code cleaner
* remove comment
* change variable name to plural
* remove commented code
* change variable name to conform to changed interface