From 18b7284f8f84b3e30a8956c1005f6fb8d1427e7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20L=C3=B3pez?= Date: Tue, 27 Aug 2024 16:15:04 +0200 Subject: [PATCH 1/8] Move md to src/ --- .gitmodules | 4 ++-- CODEOWNERS | 16 ++++++++-------- book.toml | 2 +- README.md => src/README.md | 0 SUMMARY.md => src/SUMMARY.md | 0 .../development-guidelines}/README.md | 0 .../development-guidelines}/code_maturity.md | 0 .../development-guidelines}/guidelines.md | 0 .../incident_response.md | 0 .../non-standard-tokens.md | 0 .../development-guidelines}/review_checklist.md | 0 .../token_integration.md | 0 .../development-guidelines}/workflow.md | 0 {learn_evm => src/learn_evm}/README.md | 0 .../learn_evm}/arithmetic-checks.md | 0 {learn_evm => src/learn_evm}/beps_forks.md | 0 {learn_evm => src/learn_evm}/cips_forks.md | 0 {learn_evm => src/learn_evm}/eips_forks.md | 0 {learn_evm => src/learn_evm}/evm_opcodes.md | 0 {learn_evm => src/learn_evm}/tips_upgrades.md | 0 {learn_evm => src/learn_evm}/tracing.md | 0 {learn_evm => src/learn_evm}/yellow-paper.md | 0 .../not-so-smart-contracts}/README.md | 0 .../not-so-smart-contracts}/algorand/README.md | 0 .../algorand/access_controls/README.md | 0 .../algorand/asset_id_check/README.md | 0 .../clear_state_transaction_check/README.md | 0 .../algorand/closing_account/README.md | 0 .../algorand/closing_asset/README.md | 0 .../algorand/denial_of_service/README.md | 0 .../algorand/group_size_check/README.md | 0 .../algorand/inner_transaction_fee/README.md | 0 .../algorand/rekeying/README.md | 0 .../algorand/time_based_replay_attack/README.md | 0 .../unchecked_transaction_fee/README.md | 0 .../cairo/L1_to_L2_address_conversion/README.md | 0 .../not-so-smart-contracts}/cairo/README.md | 0 .../cairo/arithmetic_overflow/README.md | 0 .../cairo/l1_to_l2_message_failure/README.md | 0 .../overconstrained_l1_l2_interaction/README.md | 0 .../cairo/replay_protection/README.md | 0 .../README.md | 0 .../not-so-smart-contracts}/cosmos/README.md | 0 .../cosmos/abci_fast/README.md | 0 .../cosmos/abci_panic/README.md | 0 .../cosmos/broken_bookkeeping/README.md | 0 .../cosmos/incorrect_getsigners/README.md | 0 .../cosmos/messages_priority/README.md | 0 .../cosmos/missing_error_handler/README.md | 0 .../cosmos/non_determinism/README.md | 0 .../cosmos/rounding_errors/README.md | 0 .../cosmos/unregistered_msg_handler/README.md | 0 .../not-so-smart-contracts}/solana/README.md | 0 .../solana/arbitrary_cpi/README.md | 0 .../README.md | 0 .../solana/improper_pda_validation/README.md | 0 .../solana/ownership_check/README.md | 0 .../solana/signer_check/README.md | 0 .../solana/sysvar_account_check/README.md | 0 .../not-so-smart-contracts}/substrate/README.md | 0 .../substrate/arithmetic_overflow/README.md | 0 .../arithmetic_overflow/pallet-overflow.rs | 0 .../substrate/dont_panic/README.md | 0 .../substrate/dont_panic/pallet-dont-panic.rs | 0 .../substrate/origins/README.md | 0 .../substrate/origins/pallet-bad-origin.rs | 0 .../substrate/randomness/README.md | 0 .../substrate/randomness/pallet-bad-lottery.rs | 0 .../substrate/validate_unsigned/README.md | 0 .../validate_unsigned/pallet-bad-unsigned.rs | 0 .../substrate/verify_first/README.md | 0 .../verify_first/pallet-verify-first.rs | 0 .../substrate/weights_and_fees/README.md | 0 .../weights_and_fees/pallet-bad-weights.rs | 0 .../program-analysis}/README.md | 0 .../program-analysis}/echidna/README.md | 0 .../echidna/advanced/README.md | 0 .../echidna/advanced/collecting-a-corpus.md | 0 .../echidna/advanced/end-to-end-testing.md | 0 ...ng-transactions-with-high-gas-consumption.md | 0 .../advanced/hevm-cheats-to-test-permit.md | 0 .../interacting-with-offchain-data-via-ffi.md | 0 .../echidna/advanced/on-using-cheat-codes.md | 0 .../echidna/advanced/optimization_mode.md | 0 .../advanced/smart-contract-fuzzing-at-scale.md | 0 .../echidna/advanced/state-network-forking.md | 0 .../echidna/advanced/testing-bytecode.md | 0 .../echidna/advanced/using-all-contracts.md | 0 .../echidna/advanced/working-with-libraries.md | 0 .../program-analysis}/echidna/basic/README.md | 0 .../echidna/basic/assertion-checking.md | 0 .../echidna/basic/common-testing-approaches.md | 0 .../echidna/basic/filtering-functions.md | 0 .../echidna/basic/property-creation.md | 0 .../echidna/basic/testing-modes.md | 0 .../echidna/basic/working-with-eth.md | 0 .../program-analysis}/echidna/configuration.md | 0 .../echidna/example/ERC20Permit.sol | 0 .../echidna/example/MockERC20Permit.sol | 0 .../echidna/example/Popsicle.yaml | 0 .../echidna/example/PopsicleBroken.sol | 0 .../echidna/example/PopsicleFixed.sol | 0 .../echidna/example/TestDepositWithPermit.sol | 0 .../echidna/example/allContracts.sol | 0 .../echidna/example/allContracts.yaml | 0 .../echidna/example/assert.sol | 0 .../echidna/example/assert.yaml | 0 .../echidna/example/blacklistpushpop.yaml | 0 .../echidna/example/filter.yaml | 0 .../program-analysis}/echidna/example/gas.sol | 0 .../program-analysis}/echidna/example/gas.yaml | 0 .../program-analysis}/echidna/example/magic.sol | 0 .../echidna/example/medusa.json | 0 .../program-analysis}/echidna/example/multi.sol | 0 .../program-analysis}/echidna/example/opt.sol | 0 .../echidna/example/pushpop.sol | 0 .../echidna/example/pushpop.yaml | 0 .../echidna/example/testdeposit.yaml | 0 .../echidna/example/testtoken.sol | 0 .../program-analysis}/echidna/example/token.sol | 0 .../echidna/exercises/Exercise-1.md | 0 .../echidna/exercises/Exercise-2.md | 0 .../echidna/exercises/Exercise-3.md | 0 .../echidna/exercises/Exercise-4.md | 0 .../echidna/exercises/Exercise-5.md | 0 .../echidna/exercises/Exercise-6.md | 0 .../echidna/exercises/Exercise-7.md | 0 .../echidna/exercises/Exercise-8.md | 0 .../echidna/exercises/README.md | 0 .../echidna/exercises/exercise1/medusa.json | 0 .../echidna/exercises/exercise1/solution.sol | 0 .../echidna/exercises/exercise1/template.sol | 0 .../echidna/exercises/exercise1/token.sol | 0 .../echidna/exercises/exercise2/medusa.json | 0 .../echidna/exercises/exercise2/solution.sol | 0 .../echidna/exercises/exercise2/template.sol | 0 .../echidna/exercises/exercise2/token.sol | 0 .../echidna/exercises/exercise3/medusa.json | 0 .../echidna/exercises/exercise3/mintable.sol | 0 .../echidna/exercises/exercise3/solution.sol | 0 .../echidna/exercises/exercise3/template.sol | 0 .../echidna/exercises/exercise3/token.sol | 0 .../echidna/exercises/exercise4/config.yaml | 0 .../echidna/exercises/exercise4/medusa.json | 0 .../echidna/exercises/exercise4/solution.sol | 0 .../echidna/exercises/exercise4/template.sol | 0 .../echidna/exercises/exercise4/token.sol | 0 .../echidna/exercises/exercise7/config.yaml | 0 .../exercise7/example.hardhat.config.ts | 0 .../echidna/exercises/exercise7/solution.sol | 0 .../echidna/frequently_asked_questions.md | 0 .../program-analysis}/echidna/fuzzing_tips.md | 0 .../echidna/introduction/README.md | 0 .../introduction/fuzzing-introduction.md | 0 .../introduction/how-to-test-a-property.md | 0 .../echidna/introduction/installation.md | 0 .../program-analysis}/manticore/README.md | 0 .../manticore/adding-constraints.md | 0 .../manticore/examples/example.sol | 0 .../manticore/examples/example_constraint.py | 0 .../manticore/examples/example_run.py | 0 .../manticore/examples/example_throw.py | 0 .../manticore/examples/suicidal.sol | 0 .../manticore/exercises/README.md | 0 .../manticore/exercises/example.md | 0 .../manticore/exercises/example/my_token.py | 0 .../manticore/exercises/example/my_token.sol | 0 .../manticore/exercises/exercise1.md | 0 .../manticore/exercises/exercise1/solution.py | 0 .../manticore/exercises/exercise1/template.py | 0 .../manticore/exercises/exercise1/token.sol | 0 .../manticore/exercises/exercise2.md | 0 .../manticore/exercises/exercise2/overflow.sol | 0 .../manticore/exercises/exercise2/solution.py | 0 .../manticore/exercises/exercise2/template.py | 0 .../manticore/getting-throwing-paths.md | 0 .../manticore/running-under-manticore.md | 0 .../manticore/scripts/gh_action_test.sh | 0 .../symbolic-execution-introduction.md | 0 .../program-analysis}/medusa | 0 .../program-analysis}/slither/README.md | 0 .../program-analysis}/slither/api.md | 0 .../program-analysis}/slither/examples/coin.sol | 0 ...expected_results_print_basic_information.txt | 0 .../slither/examples/print_basic_information.py | 0 .../program-analysis}/slither/exercise1.md | 0 .../program-analysis}/slither/exercise2.md | 0 .../program-analysis}/slither/exercise3.md | 0 .../slither/exercises/exercise1/coin.sol | 0 .../exercises/exercise1/expected_results.txt | 0 .../slither/exercises/exercise1/solution.py | 0 .../slither/exercises/exercise2/coin.sol | 0 .../exercises/exercise2/expected_results.txt | 0 .../slither/exercises/exercise2/solution.py | 0 .../exercises/exercise3/expected_results.txt | 0 .../slither/exercises/exercise3/find.sol | 0 .../slither/exercises/exercise3/solution.py | 0 .../program-analysis}/slither/images/ast.png | Bin .../program-analysis}/slither/images/cfg.png | Bin .../slither/scripts/gh_action_test.sh | 0 .../slither/static_analysis.md | 0 {resources => src/resources}/tob_blogposts.md | 0 {static => src/static}/TOB_Black.svg | 0 203 files changed, 11 insertions(+), 11 deletions(-) rename README.md => src/README.md (100%) rename SUMMARY.md => src/SUMMARY.md (100%) rename {development-guidelines => src/development-guidelines}/README.md (100%) rename {development-guidelines => src/development-guidelines}/code_maturity.md (100%) rename {development-guidelines => src/development-guidelines}/guidelines.md (100%) rename {development-guidelines => src/development-guidelines}/incident_response.md (100%) rename {development-guidelines => src/development-guidelines}/non-standard-tokens.md (100%) rename {development-guidelines => src/development-guidelines}/review_checklist.md (100%) rename {development-guidelines => src/development-guidelines}/token_integration.md (100%) rename {development-guidelines => src/development-guidelines}/workflow.md (100%) rename {learn_evm => src/learn_evm}/README.md (100%) rename {learn_evm => src/learn_evm}/arithmetic-checks.md (100%) rename {learn_evm => src/learn_evm}/beps_forks.md (100%) rename {learn_evm => src/learn_evm}/cips_forks.md (100%) rename {learn_evm => src/learn_evm}/eips_forks.md (100%) rename {learn_evm => src/learn_evm}/evm_opcodes.md (100%) rename {learn_evm => src/learn_evm}/tips_upgrades.md (100%) rename {learn_evm => src/learn_evm}/tracing.md (100%) rename {learn_evm => src/learn_evm}/yellow-paper.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/algorand/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/algorand/access_controls/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/algorand/asset_id_check/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/algorand/clear_state_transaction_check/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/algorand/closing_account/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/algorand/closing_asset/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/algorand/denial_of_service/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/algorand/group_size_check/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/algorand/inner_transaction_fee/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/algorand/rekeying/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/algorand/time_based_replay_attack/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/algorand/unchecked_transaction_fee/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/cairo/L1_to_L2_address_conversion/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/cairo/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/cairo/arithmetic_overflow/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/cairo/l1_to_l2_message_failure/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/cairo/overconstrained_l1_l2_interaction/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/cairo/replay_protection/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/cairo/unchecked_from_address_in_l1_handler/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/cosmos/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/cosmos/abci_fast/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/cosmos/abci_panic/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/cosmos/broken_bookkeeping/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/cosmos/incorrect_getsigners/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/cosmos/messages_priority/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/cosmos/missing_error_handler/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/cosmos/non_determinism/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/cosmos/rounding_errors/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/cosmos/unregistered_msg_handler/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/solana/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/solana/arbitrary_cpi/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/solana/improper_instruction_introspection/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/solana/improper_pda_validation/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/solana/ownership_check/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/solana/signer_check/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/solana/sysvar_account_check/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/substrate/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/substrate/arithmetic_overflow/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/substrate/arithmetic_overflow/pallet-overflow.rs (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/substrate/dont_panic/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/substrate/dont_panic/pallet-dont-panic.rs (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/substrate/origins/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/substrate/origins/pallet-bad-origin.rs (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/substrate/randomness/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/substrate/randomness/pallet-bad-lottery.rs (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/substrate/validate_unsigned/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/substrate/validate_unsigned/pallet-bad-unsigned.rs (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/substrate/verify_first/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/substrate/verify_first/pallet-verify-first.rs (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/substrate/weights_and_fees/README.md (100%) rename {not-so-smart-contracts => src/not-so-smart-contracts}/substrate/weights_and_fees/pallet-bad-weights.rs (100%) rename {program-analysis => src/program-analysis}/README.md (100%) rename {program-analysis => src/program-analysis}/echidna/README.md (100%) rename {program-analysis => src/program-analysis}/echidna/advanced/README.md (100%) rename {program-analysis => src/program-analysis}/echidna/advanced/collecting-a-corpus.md (100%) rename {program-analysis => src/program-analysis}/echidna/advanced/end-to-end-testing.md (100%) rename {program-analysis => src/program-analysis}/echidna/advanced/finding-transactions-with-high-gas-consumption.md (100%) rename {program-analysis => src/program-analysis}/echidna/advanced/hevm-cheats-to-test-permit.md (100%) rename {program-analysis => src/program-analysis}/echidna/advanced/interacting-with-offchain-data-via-ffi.md (100%) rename {program-analysis => src/program-analysis}/echidna/advanced/on-using-cheat-codes.md (100%) rename {program-analysis => src/program-analysis}/echidna/advanced/optimization_mode.md (100%) rename {program-analysis => src/program-analysis}/echidna/advanced/smart-contract-fuzzing-at-scale.md (100%) rename {program-analysis => src/program-analysis}/echidna/advanced/state-network-forking.md (100%) rename {program-analysis => src/program-analysis}/echidna/advanced/testing-bytecode.md (100%) rename {program-analysis => src/program-analysis}/echidna/advanced/using-all-contracts.md (100%) rename {program-analysis => src/program-analysis}/echidna/advanced/working-with-libraries.md (100%) rename {program-analysis => src/program-analysis}/echidna/basic/README.md (100%) rename {program-analysis => src/program-analysis}/echidna/basic/assertion-checking.md (100%) rename {program-analysis => src/program-analysis}/echidna/basic/common-testing-approaches.md (100%) rename {program-analysis => src/program-analysis}/echidna/basic/filtering-functions.md (100%) rename {program-analysis => src/program-analysis}/echidna/basic/property-creation.md (100%) rename {program-analysis => src/program-analysis}/echidna/basic/testing-modes.md (100%) rename {program-analysis => src/program-analysis}/echidna/basic/working-with-eth.md (100%) rename {program-analysis => src/program-analysis}/echidna/configuration.md (100%) rename {program-analysis => src/program-analysis}/echidna/example/ERC20Permit.sol (100%) rename {program-analysis => src/program-analysis}/echidna/example/MockERC20Permit.sol (100%) rename {program-analysis => src/program-analysis}/echidna/example/Popsicle.yaml (100%) rename {program-analysis => src/program-analysis}/echidna/example/PopsicleBroken.sol (100%) rename {program-analysis => src/program-analysis}/echidna/example/PopsicleFixed.sol (100%) rename {program-analysis => src/program-analysis}/echidna/example/TestDepositWithPermit.sol (100%) rename {program-analysis => src/program-analysis}/echidna/example/allContracts.sol (100%) rename {program-analysis => src/program-analysis}/echidna/example/allContracts.yaml (100%) rename {program-analysis => src/program-analysis}/echidna/example/assert.sol (100%) rename {program-analysis => src/program-analysis}/echidna/example/assert.yaml (100%) rename {program-analysis => src/program-analysis}/echidna/example/blacklistpushpop.yaml (100%) rename {program-analysis => src/program-analysis}/echidna/example/filter.yaml (100%) rename {program-analysis => src/program-analysis}/echidna/example/gas.sol (100%) rename {program-analysis => src/program-analysis}/echidna/example/gas.yaml (100%) rename {program-analysis => src/program-analysis}/echidna/example/magic.sol (100%) rename {program-analysis => src/program-analysis}/echidna/example/medusa.json (100%) rename {program-analysis => src/program-analysis}/echidna/example/multi.sol (100%) rename {program-analysis => src/program-analysis}/echidna/example/opt.sol (100%) rename {program-analysis => src/program-analysis}/echidna/example/pushpop.sol (100%) rename {program-analysis => src/program-analysis}/echidna/example/pushpop.yaml (100%) rename {program-analysis => src/program-analysis}/echidna/example/testdeposit.yaml (100%) rename {program-analysis => src/program-analysis}/echidna/example/testtoken.sol (100%) rename {program-analysis => src/program-analysis}/echidna/example/token.sol (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/Exercise-1.md (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/Exercise-2.md (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/Exercise-3.md (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/Exercise-4.md (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/Exercise-5.md (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/Exercise-6.md (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/Exercise-7.md (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/Exercise-8.md (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/README.md (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/exercise1/medusa.json (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/exercise1/solution.sol (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/exercise1/template.sol (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/exercise1/token.sol (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/exercise2/medusa.json (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/exercise2/solution.sol (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/exercise2/template.sol (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/exercise2/token.sol (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/exercise3/medusa.json (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/exercise3/mintable.sol (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/exercise3/solution.sol (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/exercise3/template.sol (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/exercise3/token.sol (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/exercise4/config.yaml (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/exercise4/medusa.json (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/exercise4/solution.sol (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/exercise4/template.sol (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/exercise4/token.sol (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/exercise7/config.yaml (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/exercise7/example.hardhat.config.ts (100%) rename {program-analysis => src/program-analysis}/echidna/exercises/exercise7/solution.sol (100%) rename {program-analysis => src/program-analysis}/echidna/frequently_asked_questions.md (100%) rename {program-analysis => src/program-analysis}/echidna/fuzzing_tips.md (100%) rename {program-analysis => src/program-analysis}/echidna/introduction/README.md (100%) rename {program-analysis => src/program-analysis}/echidna/introduction/fuzzing-introduction.md (100%) rename {program-analysis => src/program-analysis}/echidna/introduction/how-to-test-a-property.md (100%) rename {program-analysis => src/program-analysis}/echidna/introduction/installation.md (100%) rename {program-analysis => src/program-analysis}/manticore/README.md (100%) rename {program-analysis => src/program-analysis}/manticore/adding-constraints.md (100%) rename {program-analysis => src/program-analysis}/manticore/examples/example.sol (100%) rename {program-analysis => src/program-analysis}/manticore/examples/example_constraint.py (100%) rename {program-analysis => src/program-analysis}/manticore/examples/example_run.py (100%) rename {program-analysis => src/program-analysis}/manticore/examples/example_throw.py (100%) rename {program-analysis => src/program-analysis}/manticore/examples/suicidal.sol (100%) rename {program-analysis => src/program-analysis}/manticore/exercises/README.md (100%) rename {program-analysis => src/program-analysis}/manticore/exercises/example.md (100%) rename {program-analysis => src/program-analysis}/manticore/exercises/example/my_token.py (100%) rename {program-analysis => src/program-analysis}/manticore/exercises/example/my_token.sol (100%) rename {program-analysis => src/program-analysis}/manticore/exercises/exercise1.md (100%) rename {program-analysis => src/program-analysis}/manticore/exercises/exercise1/solution.py (100%) rename {program-analysis => src/program-analysis}/manticore/exercises/exercise1/template.py (100%) rename {program-analysis => src/program-analysis}/manticore/exercises/exercise1/token.sol (100%) rename {program-analysis => src/program-analysis}/manticore/exercises/exercise2.md (100%) rename {program-analysis => src/program-analysis}/manticore/exercises/exercise2/overflow.sol (100%) rename {program-analysis => src/program-analysis}/manticore/exercises/exercise2/solution.py (100%) rename {program-analysis => src/program-analysis}/manticore/exercises/exercise2/template.py (100%) rename {program-analysis => src/program-analysis}/manticore/getting-throwing-paths.md (100%) rename {program-analysis => src/program-analysis}/manticore/running-under-manticore.md (100%) rename {program-analysis => src/program-analysis}/manticore/scripts/gh_action_test.sh (100%) rename {program-analysis => src/program-analysis}/manticore/symbolic-execution-introduction.md (100%) rename {program-analysis => src/program-analysis}/medusa (100%) rename {program-analysis => src/program-analysis}/slither/README.md (100%) rename {program-analysis => src/program-analysis}/slither/api.md (100%) rename {program-analysis => src/program-analysis}/slither/examples/coin.sol (100%) rename {program-analysis => src/program-analysis}/slither/examples/expected_results_print_basic_information.txt (100%) rename {program-analysis => src/program-analysis}/slither/examples/print_basic_information.py (100%) rename {program-analysis => src/program-analysis}/slither/exercise1.md (100%) rename {program-analysis => src/program-analysis}/slither/exercise2.md (100%) rename {program-analysis => src/program-analysis}/slither/exercise3.md (100%) rename {program-analysis => src/program-analysis}/slither/exercises/exercise1/coin.sol (100%) rename {program-analysis => src/program-analysis}/slither/exercises/exercise1/expected_results.txt (100%) rename {program-analysis => src/program-analysis}/slither/exercises/exercise1/solution.py (100%) rename {program-analysis => src/program-analysis}/slither/exercises/exercise2/coin.sol (100%) rename {program-analysis => src/program-analysis}/slither/exercises/exercise2/expected_results.txt (100%) rename {program-analysis => src/program-analysis}/slither/exercises/exercise2/solution.py (100%) rename {program-analysis => src/program-analysis}/slither/exercises/exercise3/expected_results.txt (100%) rename {program-analysis => src/program-analysis}/slither/exercises/exercise3/find.sol (100%) rename {program-analysis => src/program-analysis}/slither/exercises/exercise3/solution.py (100%) rename {program-analysis => src/program-analysis}/slither/images/ast.png (100%) rename {program-analysis => src/program-analysis}/slither/images/cfg.png (100%) rename {program-analysis => src/program-analysis}/slither/scripts/gh_action_test.sh (100%) rename {program-analysis => src/program-analysis}/slither/static_analysis.md (100%) rename {resources => src/resources}/tob_blogposts.md (100%) rename {static => src/static}/TOB_Black.svg (100%) diff --git a/.gitmodules b/.gitmodules index dc6ee18d..6a515a6f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ -[submodule "program-analysis/medusa"] - path = program-analysis/medusa +[submodule "src/program-analysis/medusa"] + path = src/program-analysis/medusa url = https://github.com/crytic/medusa.git diff --git a/CODEOWNERS b/CODEOWNERS index 48e0589b..022d77a2 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,8 +1,8 @@ -* @montyly -/development-guidelines/ @0xicingdeath -/program-analysis/echidna/ @ggrieco-tob -/not-so-smart-contracts/algorand/ @S3v3ru5 -/not-so-smart-contracts/cairo/ @technovision99 -/not-so-smart-contracts/cosmos/ @GrosQuildu -/not-so-smart-contracts/substrate/ @0xicingdeath -/learn_evm/ @bohendo +* @montyly +/src/development-guidelines/ @0xicingdeath +/src/program-analysis/echidna/ @ggrieco-tob +/src/not-so-smart-contracts/algorand/ @S3v3ru5 +/src/not-so-smart-contracts/cairo/ @technovision99 +/src/not-so-smart-contracts/cosmos/ @GrosQuildu +/src/not-so-smart-contracts/substrate/ @0xicingdeath +/src/learn_evm/ @bohendo diff --git a/book.toml b/book.toml index 40c30787..aef23b30 100644 --- a/book.toml +++ b/book.toml @@ -2,7 +2,7 @@ authors = ["Trail of Bits"] language = "en" multilingual = false -src = "." +src = "src" title = "Building Secure Contracts" description = "This repository, brought to you by Trail of Bits, outlines our guidelines and best practices to write secure smart contracts." logo = "static/TOB_Black.svg" diff --git a/README.md b/src/README.md similarity index 100% rename from README.md rename to src/README.md diff --git a/SUMMARY.md b/src/SUMMARY.md similarity index 100% rename from SUMMARY.md rename to src/SUMMARY.md diff --git a/development-guidelines/README.md b/src/development-guidelines/README.md similarity index 100% rename from development-guidelines/README.md rename to src/development-guidelines/README.md diff --git a/development-guidelines/code_maturity.md b/src/development-guidelines/code_maturity.md similarity index 100% rename from development-guidelines/code_maturity.md rename to src/development-guidelines/code_maturity.md diff --git a/development-guidelines/guidelines.md b/src/development-guidelines/guidelines.md similarity index 100% rename from development-guidelines/guidelines.md rename to src/development-guidelines/guidelines.md diff --git a/development-guidelines/incident_response.md b/src/development-guidelines/incident_response.md similarity index 100% rename from development-guidelines/incident_response.md rename to src/development-guidelines/incident_response.md diff --git a/development-guidelines/non-standard-tokens.md b/src/development-guidelines/non-standard-tokens.md similarity index 100% rename from development-guidelines/non-standard-tokens.md rename to src/development-guidelines/non-standard-tokens.md diff --git a/development-guidelines/review_checklist.md b/src/development-guidelines/review_checklist.md similarity index 100% rename from development-guidelines/review_checklist.md rename to src/development-guidelines/review_checklist.md diff --git a/development-guidelines/token_integration.md b/src/development-guidelines/token_integration.md similarity index 100% rename from development-guidelines/token_integration.md rename to src/development-guidelines/token_integration.md diff --git a/development-guidelines/workflow.md b/src/development-guidelines/workflow.md similarity index 100% rename from development-guidelines/workflow.md rename to src/development-guidelines/workflow.md diff --git a/learn_evm/README.md b/src/learn_evm/README.md similarity index 100% rename from learn_evm/README.md rename to src/learn_evm/README.md diff --git a/learn_evm/arithmetic-checks.md b/src/learn_evm/arithmetic-checks.md similarity index 100% rename from learn_evm/arithmetic-checks.md rename to src/learn_evm/arithmetic-checks.md diff --git a/learn_evm/beps_forks.md b/src/learn_evm/beps_forks.md similarity index 100% rename from learn_evm/beps_forks.md rename to src/learn_evm/beps_forks.md diff --git a/learn_evm/cips_forks.md b/src/learn_evm/cips_forks.md similarity index 100% rename from learn_evm/cips_forks.md rename to src/learn_evm/cips_forks.md diff --git a/learn_evm/eips_forks.md b/src/learn_evm/eips_forks.md similarity index 100% rename from learn_evm/eips_forks.md rename to src/learn_evm/eips_forks.md diff --git a/learn_evm/evm_opcodes.md b/src/learn_evm/evm_opcodes.md similarity index 100% rename from learn_evm/evm_opcodes.md rename to src/learn_evm/evm_opcodes.md diff --git a/learn_evm/tips_upgrades.md b/src/learn_evm/tips_upgrades.md similarity index 100% rename from learn_evm/tips_upgrades.md rename to src/learn_evm/tips_upgrades.md diff --git a/learn_evm/tracing.md b/src/learn_evm/tracing.md similarity index 100% rename from learn_evm/tracing.md rename to src/learn_evm/tracing.md diff --git a/learn_evm/yellow-paper.md b/src/learn_evm/yellow-paper.md similarity index 100% rename from learn_evm/yellow-paper.md rename to src/learn_evm/yellow-paper.md diff --git a/not-so-smart-contracts/README.md b/src/not-so-smart-contracts/README.md similarity index 100% rename from not-so-smart-contracts/README.md rename to src/not-so-smart-contracts/README.md diff --git a/not-so-smart-contracts/algorand/README.md b/src/not-so-smart-contracts/algorand/README.md similarity index 100% rename from not-so-smart-contracts/algorand/README.md rename to src/not-so-smart-contracts/algorand/README.md diff --git a/not-so-smart-contracts/algorand/access_controls/README.md b/src/not-so-smart-contracts/algorand/access_controls/README.md similarity index 100% rename from not-so-smart-contracts/algorand/access_controls/README.md rename to src/not-so-smart-contracts/algorand/access_controls/README.md diff --git a/not-so-smart-contracts/algorand/asset_id_check/README.md b/src/not-so-smart-contracts/algorand/asset_id_check/README.md similarity index 100% rename from not-so-smart-contracts/algorand/asset_id_check/README.md rename to src/not-so-smart-contracts/algorand/asset_id_check/README.md diff --git a/not-so-smart-contracts/algorand/clear_state_transaction_check/README.md b/src/not-so-smart-contracts/algorand/clear_state_transaction_check/README.md similarity index 100% rename from not-so-smart-contracts/algorand/clear_state_transaction_check/README.md rename to src/not-so-smart-contracts/algorand/clear_state_transaction_check/README.md diff --git a/not-so-smart-contracts/algorand/closing_account/README.md b/src/not-so-smart-contracts/algorand/closing_account/README.md similarity index 100% rename from not-so-smart-contracts/algorand/closing_account/README.md rename to src/not-so-smart-contracts/algorand/closing_account/README.md diff --git a/not-so-smart-contracts/algorand/closing_asset/README.md b/src/not-so-smart-contracts/algorand/closing_asset/README.md similarity index 100% rename from not-so-smart-contracts/algorand/closing_asset/README.md rename to src/not-so-smart-contracts/algorand/closing_asset/README.md diff --git a/not-so-smart-contracts/algorand/denial_of_service/README.md b/src/not-so-smart-contracts/algorand/denial_of_service/README.md similarity index 100% rename from not-so-smart-contracts/algorand/denial_of_service/README.md rename to src/not-so-smart-contracts/algorand/denial_of_service/README.md diff --git a/not-so-smart-contracts/algorand/group_size_check/README.md b/src/not-so-smart-contracts/algorand/group_size_check/README.md similarity index 100% rename from not-so-smart-contracts/algorand/group_size_check/README.md rename to src/not-so-smart-contracts/algorand/group_size_check/README.md diff --git a/not-so-smart-contracts/algorand/inner_transaction_fee/README.md b/src/not-so-smart-contracts/algorand/inner_transaction_fee/README.md similarity index 100% rename from not-so-smart-contracts/algorand/inner_transaction_fee/README.md rename to src/not-so-smart-contracts/algorand/inner_transaction_fee/README.md diff --git a/not-so-smart-contracts/algorand/rekeying/README.md b/src/not-so-smart-contracts/algorand/rekeying/README.md similarity index 100% rename from not-so-smart-contracts/algorand/rekeying/README.md rename to src/not-so-smart-contracts/algorand/rekeying/README.md diff --git a/not-so-smart-contracts/algorand/time_based_replay_attack/README.md b/src/not-so-smart-contracts/algorand/time_based_replay_attack/README.md similarity index 100% rename from not-so-smart-contracts/algorand/time_based_replay_attack/README.md rename to src/not-so-smart-contracts/algorand/time_based_replay_attack/README.md diff --git a/not-so-smart-contracts/algorand/unchecked_transaction_fee/README.md b/src/not-so-smart-contracts/algorand/unchecked_transaction_fee/README.md similarity index 100% rename from not-so-smart-contracts/algorand/unchecked_transaction_fee/README.md rename to src/not-so-smart-contracts/algorand/unchecked_transaction_fee/README.md diff --git a/not-so-smart-contracts/cairo/L1_to_L2_address_conversion/README.md b/src/not-so-smart-contracts/cairo/L1_to_L2_address_conversion/README.md similarity index 100% rename from not-so-smart-contracts/cairo/L1_to_L2_address_conversion/README.md rename to src/not-so-smart-contracts/cairo/L1_to_L2_address_conversion/README.md diff --git a/not-so-smart-contracts/cairo/README.md b/src/not-so-smart-contracts/cairo/README.md similarity index 100% rename from not-so-smart-contracts/cairo/README.md rename to src/not-so-smart-contracts/cairo/README.md diff --git a/not-so-smart-contracts/cairo/arithmetic_overflow/README.md b/src/not-so-smart-contracts/cairo/arithmetic_overflow/README.md similarity index 100% rename from not-so-smart-contracts/cairo/arithmetic_overflow/README.md rename to src/not-so-smart-contracts/cairo/arithmetic_overflow/README.md diff --git a/not-so-smart-contracts/cairo/l1_to_l2_message_failure/README.md b/src/not-so-smart-contracts/cairo/l1_to_l2_message_failure/README.md similarity index 100% rename from not-so-smart-contracts/cairo/l1_to_l2_message_failure/README.md rename to src/not-so-smart-contracts/cairo/l1_to_l2_message_failure/README.md diff --git a/not-so-smart-contracts/cairo/overconstrained_l1_l2_interaction/README.md b/src/not-so-smart-contracts/cairo/overconstrained_l1_l2_interaction/README.md similarity index 100% rename from not-so-smart-contracts/cairo/overconstrained_l1_l2_interaction/README.md rename to src/not-so-smart-contracts/cairo/overconstrained_l1_l2_interaction/README.md diff --git a/not-so-smart-contracts/cairo/replay_protection/README.md b/src/not-so-smart-contracts/cairo/replay_protection/README.md similarity index 100% rename from not-so-smart-contracts/cairo/replay_protection/README.md rename to src/not-so-smart-contracts/cairo/replay_protection/README.md diff --git a/not-so-smart-contracts/cairo/unchecked_from_address_in_l1_handler/README.md b/src/not-so-smart-contracts/cairo/unchecked_from_address_in_l1_handler/README.md similarity index 100% rename from not-so-smart-contracts/cairo/unchecked_from_address_in_l1_handler/README.md rename to src/not-so-smart-contracts/cairo/unchecked_from_address_in_l1_handler/README.md diff --git a/not-so-smart-contracts/cosmos/README.md b/src/not-so-smart-contracts/cosmos/README.md similarity index 100% rename from not-so-smart-contracts/cosmos/README.md rename to src/not-so-smart-contracts/cosmos/README.md diff --git a/not-so-smart-contracts/cosmos/abci_fast/README.md b/src/not-so-smart-contracts/cosmos/abci_fast/README.md similarity index 100% rename from not-so-smart-contracts/cosmos/abci_fast/README.md rename to src/not-so-smart-contracts/cosmos/abci_fast/README.md diff --git a/not-so-smart-contracts/cosmos/abci_panic/README.md b/src/not-so-smart-contracts/cosmos/abci_panic/README.md similarity index 100% rename from not-so-smart-contracts/cosmos/abci_panic/README.md rename to src/not-so-smart-contracts/cosmos/abci_panic/README.md diff --git a/not-so-smart-contracts/cosmos/broken_bookkeeping/README.md b/src/not-so-smart-contracts/cosmos/broken_bookkeeping/README.md similarity index 100% rename from not-so-smart-contracts/cosmos/broken_bookkeeping/README.md rename to src/not-so-smart-contracts/cosmos/broken_bookkeeping/README.md diff --git a/not-so-smart-contracts/cosmos/incorrect_getsigners/README.md b/src/not-so-smart-contracts/cosmos/incorrect_getsigners/README.md similarity index 100% rename from not-so-smart-contracts/cosmos/incorrect_getsigners/README.md rename to src/not-so-smart-contracts/cosmos/incorrect_getsigners/README.md diff --git a/not-so-smart-contracts/cosmos/messages_priority/README.md b/src/not-so-smart-contracts/cosmos/messages_priority/README.md similarity index 100% rename from not-so-smart-contracts/cosmos/messages_priority/README.md rename to src/not-so-smart-contracts/cosmos/messages_priority/README.md diff --git a/not-so-smart-contracts/cosmos/missing_error_handler/README.md b/src/not-so-smart-contracts/cosmos/missing_error_handler/README.md similarity index 100% rename from not-so-smart-contracts/cosmos/missing_error_handler/README.md rename to src/not-so-smart-contracts/cosmos/missing_error_handler/README.md diff --git a/not-so-smart-contracts/cosmos/non_determinism/README.md b/src/not-so-smart-contracts/cosmos/non_determinism/README.md similarity index 100% rename from not-so-smart-contracts/cosmos/non_determinism/README.md rename to src/not-so-smart-contracts/cosmos/non_determinism/README.md diff --git a/not-so-smart-contracts/cosmos/rounding_errors/README.md b/src/not-so-smart-contracts/cosmos/rounding_errors/README.md similarity index 100% rename from not-so-smart-contracts/cosmos/rounding_errors/README.md rename to src/not-so-smart-contracts/cosmos/rounding_errors/README.md diff --git a/not-so-smart-contracts/cosmos/unregistered_msg_handler/README.md b/src/not-so-smart-contracts/cosmos/unregistered_msg_handler/README.md similarity index 100% rename from not-so-smart-contracts/cosmos/unregistered_msg_handler/README.md rename to src/not-so-smart-contracts/cosmos/unregistered_msg_handler/README.md diff --git a/not-so-smart-contracts/solana/README.md b/src/not-so-smart-contracts/solana/README.md similarity index 100% rename from not-so-smart-contracts/solana/README.md rename to src/not-so-smart-contracts/solana/README.md diff --git a/not-so-smart-contracts/solana/arbitrary_cpi/README.md b/src/not-so-smart-contracts/solana/arbitrary_cpi/README.md similarity index 100% rename from not-so-smart-contracts/solana/arbitrary_cpi/README.md rename to src/not-so-smart-contracts/solana/arbitrary_cpi/README.md diff --git a/not-so-smart-contracts/solana/improper_instruction_introspection/README.md b/src/not-so-smart-contracts/solana/improper_instruction_introspection/README.md similarity index 100% rename from not-so-smart-contracts/solana/improper_instruction_introspection/README.md rename to src/not-so-smart-contracts/solana/improper_instruction_introspection/README.md diff --git a/not-so-smart-contracts/solana/improper_pda_validation/README.md b/src/not-so-smart-contracts/solana/improper_pda_validation/README.md similarity index 100% rename from not-so-smart-contracts/solana/improper_pda_validation/README.md rename to src/not-so-smart-contracts/solana/improper_pda_validation/README.md diff --git a/not-so-smart-contracts/solana/ownership_check/README.md b/src/not-so-smart-contracts/solana/ownership_check/README.md similarity index 100% rename from not-so-smart-contracts/solana/ownership_check/README.md rename to src/not-so-smart-contracts/solana/ownership_check/README.md diff --git a/not-so-smart-contracts/solana/signer_check/README.md b/src/not-so-smart-contracts/solana/signer_check/README.md similarity index 100% rename from not-so-smart-contracts/solana/signer_check/README.md rename to src/not-so-smart-contracts/solana/signer_check/README.md diff --git a/not-so-smart-contracts/solana/sysvar_account_check/README.md b/src/not-so-smart-contracts/solana/sysvar_account_check/README.md similarity index 100% rename from not-so-smart-contracts/solana/sysvar_account_check/README.md rename to src/not-so-smart-contracts/solana/sysvar_account_check/README.md diff --git a/not-so-smart-contracts/substrate/README.md b/src/not-so-smart-contracts/substrate/README.md similarity index 100% rename from not-so-smart-contracts/substrate/README.md rename to src/not-so-smart-contracts/substrate/README.md diff --git a/not-so-smart-contracts/substrate/arithmetic_overflow/README.md b/src/not-so-smart-contracts/substrate/arithmetic_overflow/README.md similarity index 100% rename from not-so-smart-contracts/substrate/arithmetic_overflow/README.md rename to src/not-so-smart-contracts/substrate/arithmetic_overflow/README.md diff --git a/not-so-smart-contracts/substrate/arithmetic_overflow/pallet-overflow.rs b/src/not-so-smart-contracts/substrate/arithmetic_overflow/pallet-overflow.rs similarity index 100% rename from not-so-smart-contracts/substrate/arithmetic_overflow/pallet-overflow.rs rename to src/not-so-smart-contracts/substrate/arithmetic_overflow/pallet-overflow.rs diff --git a/not-so-smart-contracts/substrate/dont_panic/README.md b/src/not-so-smart-contracts/substrate/dont_panic/README.md similarity index 100% rename from not-so-smart-contracts/substrate/dont_panic/README.md rename to src/not-so-smart-contracts/substrate/dont_panic/README.md diff --git a/not-so-smart-contracts/substrate/dont_panic/pallet-dont-panic.rs b/src/not-so-smart-contracts/substrate/dont_panic/pallet-dont-panic.rs similarity index 100% rename from not-so-smart-contracts/substrate/dont_panic/pallet-dont-panic.rs rename to src/not-so-smart-contracts/substrate/dont_panic/pallet-dont-panic.rs diff --git a/not-so-smart-contracts/substrate/origins/README.md b/src/not-so-smart-contracts/substrate/origins/README.md similarity index 100% rename from not-so-smart-contracts/substrate/origins/README.md rename to src/not-so-smart-contracts/substrate/origins/README.md diff --git a/not-so-smart-contracts/substrate/origins/pallet-bad-origin.rs b/src/not-so-smart-contracts/substrate/origins/pallet-bad-origin.rs similarity index 100% rename from not-so-smart-contracts/substrate/origins/pallet-bad-origin.rs rename to src/not-so-smart-contracts/substrate/origins/pallet-bad-origin.rs diff --git a/not-so-smart-contracts/substrate/randomness/README.md b/src/not-so-smart-contracts/substrate/randomness/README.md similarity index 100% rename from not-so-smart-contracts/substrate/randomness/README.md rename to src/not-so-smart-contracts/substrate/randomness/README.md diff --git a/not-so-smart-contracts/substrate/randomness/pallet-bad-lottery.rs b/src/not-so-smart-contracts/substrate/randomness/pallet-bad-lottery.rs similarity index 100% rename from not-so-smart-contracts/substrate/randomness/pallet-bad-lottery.rs rename to src/not-so-smart-contracts/substrate/randomness/pallet-bad-lottery.rs diff --git a/not-so-smart-contracts/substrate/validate_unsigned/README.md b/src/not-so-smart-contracts/substrate/validate_unsigned/README.md similarity index 100% rename from not-so-smart-contracts/substrate/validate_unsigned/README.md rename to src/not-so-smart-contracts/substrate/validate_unsigned/README.md diff --git a/not-so-smart-contracts/substrate/validate_unsigned/pallet-bad-unsigned.rs b/src/not-so-smart-contracts/substrate/validate_unsigned/pallet-bad-unsigned.rs similarity index 100% rename from not-so-smart-contracts/substrate/validate_unsigned/pallet-bad-unsigned.rs rename to src/not-so-smart-contracts/substrate/validate_unsigned/pallet-bad-unsigned.rs diff --git a/not-so-smart-contracts/substrate/verify_first/README.md b/src/not-so-smart-contracts/substrate/verify_first/README.md similarity index 100% rename from not-so-smart-contracts/substrate/verify_first/README.md rename to src/not-so-smart-contracts/substrate/verify_first/README.md diff --git a/not-so-smart-contracts/substrate/verify_first/pallet-verify-first.rs b/src/not-so-smart-contracts/substrate/verify_first/pallet-verify-first.rs similarity index 100% rename from not-so-smart-contracts/substrate/verify_first/pallet-verify-first.rs rename to src/not-so-smart-contracts/substrate/verify_first/pallet-verify-first.rs diff --git a/not-so-smart-contracts/substrate/weights_and_fees/README.md b/src/not-so-smart-contracts/substrate/weights_and_fees/README.md similarity index 100% rename from not-so-smart-contracts/substrate/weights_and_fees/README.md rename to src/not-so-smart-contracts/substrate/weights_and_fees/README.md diff --git a/not-so-smart-contracts/substrate/weights_and_fees/pallet-bad-weights.rs b/src/not-so-smart-contracts/substrate/weights_and_fees/pallet-bad-weights.rs similarity index 100% rename from not-so-smart-contracts/substrate/weights_and_fees/pallet-bad-weights.rs rename to src/not-so-smart-contracts/substrate/weights_and_fees/pallet-bad-weights.rs diff --git a/program-analysis/README.md b/src/program-analysis/README.md similarity index 100% rename from program-analysis/README.md rename to src/program-analysis/README.md diff --git a/program-analysis/echidna/README.md b/src/program-analysis/echidna/README.md similarity index 100% rename from program-analysis/echidna/README.md rename to src/program-analysis/echidna/README.md diff --git a/program-analysis/echidna/advanced/README.md b/src/program-analysis/echidna/advanced/README.md similarity index 100% rename from program-analysis/echidna/advanced/README.md rename to src/program-analysis/echidna/advanced/README.md diff --git a/program-analysis/echidna/advanced/collecting-a-corpus.md b/src/program-analysis/echidna/advanced/collecting-a-corpus.md similarity index 100% rename from program-analysis/echidna/advanced/collecting-a-corpus.md rename to src/program-analysis/echidna/advanced/collecting-a-corpus.md diff --git a/program-analysis/echidna/advanced/end-to-end-testing.md b/src/program-analysis/echidna/advanced/end-to-end-testing.md similarity index 100% rename from program-analysis/echidna/advanced/end-to-end-testing.md rename to src/program-analysis/echidna/advanced/end-to-end-testing.md diff --git a/program-analysis/echidna/advanced/finding-transactions-with-high-gas-consumption.md b/src/program-analysis/echidna/advanced/finding-transactions-with-high-gas-consumption.md similarity index 100% rename from program-analysis/echidna/advanced/finding-transactions-with-high-gas-consumption.md rename to src/program-analysis/echidna/advanced/finding-transactions-with-high-gas-consumption.md diff --git a/program-analysis/echidna/advanced/hevm-cheats-to-test-permit.md b/src/program-analysis/echidna/advanced/hevm-cheats-to-test-permit.md similarity index 100% rename from program-analysis/echidna/advanced/hevm-cheats-to-test-permit.md rename to src/program-analysis/echidna/advanced/hevm-cheats-to-test-permit.md diff --git a/program-analysis/echidna/advanced/interacting-with-offchain-data-via-ffi.md b/src/program-analysis/echidna/advanced/interacting-with-offchain-data-via-ffi.md similarity index 100% rename from program-analysis/echidna/advanced/interacting-with-offchain-data-via-ffi.md rename to src/program-analysis/echidna/advanced/interacting-with-offchain-data-via-ffi.md diff --git a/program-analysis/echidna/advanced/on-using-cheat-codes.md b/src/program-analysis/echidna/advanced/on-using-cheat-codes.md similarity index 100% rename from program-analysis/echidna/advanced/on-using-cheat-codes.md rename to src/program-analysis/echidna/advanced/on-using-cheat-codes.md diff --git a/program-analysis/echidna/advanced/optimization_mode.md b/src/program-analysis/echidna/advanced/optimization_mode.md similarity index 100% rename from program-analysis/echidna/advanced/optimization_mode.md rename to src/program-analysis/echidna/advanced/optimization_mode.md diff --git a/program-analysis/echidna/advanced/smart-contract-fuzzing-at-scale.md b/src/program-analysis/echidna/advanced/smart-contract-fuzzing-at-scale.md similarity index 100% rename from program-analysis/echidna/advanced/smart-contract-fuzzing-at-scale.md rename to src/program-analysis/echidna/advanced/smart-contract-fuzzing-at-scale.md diff --git a/program-analysis/echidna/advanced/state-network-forking.md b/src/program-analysis/echidna/advanced/state-network-forking.md similarity index 100% rename from program-analysis/echidna/advanced/state-network-forking.md rename to src/program-analysis/echidna/advanced/state-network-forking.md diff --git a/program-analysis/echidna/advanced/testing-bytecode.md b/src/program-analysis/echidna/advanced/testing-bytecode.md similarity index 100% rename from program-analysis/echidna/advanced/testing-bytecode.md rename to src/program-analysis/echidna/advanced/testing-bytecode.md diff --git a/program-analysis/echidna/advanced/using-all-contracts.md b/src/program-analysis/echidna/advanced/using-all-contracts.md similarity index 100% rename from program-analysis/echidna/advanced/using-all-contracts.md rename to src/program-analysis/echidna/advanced/using-all-contracts.md diff --git a/program-analysis/echidna/advanced/working-with-libraries.md b/src/program-analysis/echidna/advanced/working-with-libraries.md similarity index 100% rename from program-analysis/echidna/advanced/working-with-libraries.md rename to src/program-analysis/echidna/advanced/working-with-libraries.md diff --git a/program-analysis/echidna/basic/README.md b/src/program-analysis/echidna/basic/README.md similarity index 100% rename from program-analysis/echidna/basic/README.md rename to src/program-analysis/echidna/basic/README.md diff --git a/program-analysis/echidna/basic/assertion-checking.md b/src/program-analysis/echidna/basic/assertion-checking.md similarity index 100% rename from program-analysis/echidna/basic/assertion-checking.md rename to src/program-analysis/echidna/basic/assertion-checking.md diff --git a/program-analysis/echidna/basic/common-testing-approaches.md b/src/program-analysis/echidna/basic/common-testing-approaches.md similarity index 100% rename from program-analysis/echidna/basic/common-testing-approaches.md rename to src/program-analysis/echidna/basic/common-testing-approaches.md diff --git a/program-analysis/echidna/basic/filtering-functions.md b/src/program-analysis/echidna/basic/filtering-functions.md similarity index 100% rename from program-analysis/echidna/basic/filtering-functions.md rename to src/program-analysis/echidna/basic/filtering-functions.md diff --git a/program-analysis/echidna/basic/property-creation.md b/src/program-analysis/echidna/basic/property-creation.md similarity index 100% rename from program-analysis/echidna/basic/property-creation.md rename to src/program-analysis/echidna/basic/property-creation.md diff --git a/program-analysis/echidna/basic/testing-modes.md b/src/program-analysis/echidna/basic/testing-modes.md similarity index 100% rename from program-analysis/echidna/basic/testing-modes.md rename to src/program-analysis/echidna/basic/testing-modes.md diff --git a/program-analysis/echidna/basic/working-with-eth.md b/src/program-analysis/echidna/basic/working-with-eth.md similarity index 100% rename from program-analysis/echidna/basic/working-with-eth.md rename to src/program-analysis/echidna/basic/working-with-eth.md diff --git a/program-analysis/echidna/configuration.md b/src/program-analysis/echidna/configuration.md similarity index 100% rename from program-analysis/echidna/configuration.md rename to src/program-analysis/echidna/configuration.md diff --git a/program-analysis/echidna/example/ERC20Permit.sol b/src/program-analysis/echidna/example/ERC20Permit.sol similarity index 100% rename from program-analysis/echidna/example/ERC20Permit.sol rename to src/program-analysis/echidna/example/ERC20Permit.sol diff --git a/program-analysis/echidna/example/MockERC20Permit.sol b/src/program-analysis/echidna/example/MockERC20Permit.sol similarity index 100% rename from program-analysis/echidna/example/MockERC20Permit.sol rename to src/program-analysis/echidna/example/MockERC20Permit.sol diff --git a/program-analysis/echidna/example/Popsicle.yaml b/src/program-analysis/echidna/example/Popsicle.yaml similarity index 100% rename from program-analysis/echidna/example/Popsicle.yaml rename to src/program-analysis/echidna/example/Popsicle.yaml diff --git a/program-analysis/echidna/example/PopsicleBroken.sol b/src/program-analysis/echidna/example/PopsicleBroken.sol similarity index 100% rename from program-analysis/echidna/example/PopsicleBroken.sol rename to src/program-analysis/echidna/example/PopsicleBroken.sol diff --git a/program-analysis/echidna/example/PopsicleFixed.sol b/src/program-analysis/echidna/example/PopsicleFixed.sol similarity index 100% rename from program-analysis/echidna/example/PopsicleFixed.sol rename to src/program-analysis/echidna/example/PopsicleFixed.sol diff --git a/program-analysis/echidna/example/TestDepositWithPermit.sol b/src/program-analysis/echidna/example/TestDepositWithPermit.sol similarity index 100% rename from program-analysis/echidna/example/TestDepositWithPermit.sol rename to src/program-analysis/echidna/example/TestDepositWithPermit.sol diff --git a/program-analysis/echidna/example/allContracts.sol b/src/program-analysis/echidna/example/allContracts.sol similarity index 100% rename from program-analysis/echidna/example/allContracts.sol rename to src/program-analysis/echidna/example/allContracts.sol diff --git a/program-analysis/echidna/example/allContracts.yaml b/src/program-analysis/echidna/example/allContracts.yaml similarity index 100% rename from program-analysis/echidna/example/allContracts.yaml rename to src/program-analysis/echidna/example/allContracts.yaml diff --git a/program-analysis/echidna/example/assert.sol b/src/program-analysis/echidna/example/assert.sol similarity index 100% rename from program-analysis/echidna/example/assert.sol rename to src/program-analysis/echidna/example/assert.sol diff --git a/program-analysis/echidna/example/assert.yaml b/src/program-analysis/echidna/example/assert.yaml similarity index 100% rename from program-analysis/echidna/example/assert.yaml rename to src/program-analysis/echidna/example/assert.yaml diff --git a/program-analysis/echidna/example/blacklistpushpop.yaml b/src/program-analysis/echidna/example/blacklistpushpop.yaml similarity index 100% rename from program-analysis/echidna/example/blacklistpushpop.yaml rename to src/program-analysis/echidna/example/blacklistpushpop.yaml diff --git a/program-analysis/echidna/example/filter.yaml b/src/program-analysis/echidna/example/filter.yaml similarity index 100% rename from program-analysis/echidna/example/filter.yaml rename to src/program-analysis/echidna/example/filter.yaml diff --git a/program-analysis/echidna/example/gas.sol b/src/program-analysis/echidna/example/gas.sol similarity index 100% rename from program-analysis/echidna/example/gas.sol rename to src/program-analysis/echidna/example/gas.sol diff --git a/program-analysis/echidna/example/gas.yaml b/src/program-analysis/echidna/example/gas.yaml similarity index 100% rename from program-analysis/echidna/example/gas.yaml rename to src/program-analysis/echidna/example/gas.yaml diff --git a/program-analysis/echidna/example/magic.sol b/src/program-analysis/echidna/example/magic.sol similarity index 100% rename from program-analysis/echidna/example/magic.sol rename to src/program-analysis/echidna/example/magic.sol diff --git a/program-analysis/echidna/example/medusa.json b/src/program-analysis/echidna/example/medusa.json similarity index 100% rename from program-analysis/echidna/example/medusa.json rename to src/program-analysis/echidna/example/medusa.json diff --git a/program-analysis/echidna/example/multi.sol b/src/program-analysis/echidna/example/multi.sol similarity index 100% rename from program-analysis/echidna/example/multi.sol rename to src/program-analysis/echidna/example/multi.sol diff --git a/program-analysis/echidna/example/opt.sol b/src/program-analysis/echidna/example/opt.sol similarity index 100% rename from program-analysis/echidna/example/opt.sol rename to src/program-analysis/echidna/example/opt.sol diff --git a/program-analysis/echidna/example/pushpop.sol b/src/program-analysis/echidna/example/pushpop.sol similarity index 100% rename from program-analysis/echidna/example/pushpop.sol rename to src/program-analysis/echidna/example/pushpop.sol diff --git a/program-analysis/echidna/example/pushpop.yaml b/src/program-analysis/echidna/example/pushpop.yaml similarity index 100% rename from program-analysis/echidna/example/pushpop.yaml rename to src/program-analysis/echidna/example/pushpop.yaml diff --git a/program-analysis/echidna/example/testdeposit.yaml b/src/program-analysis/echidna/example/testdeposit.yaml similarity index 100% rename from program-analysis/echidna/example/testdeposit.yaml rename to src/program-analysis/echidna/example/testdeposit.yaml diff --git a/program-analysis/echidna/example/testtoken.sol b/src/program-analysis/echidna/example/testtoken.sol similarity index 100% rename from program-analysis/echidna/example/testtoken.sol rename to src/program-analysis/echidna/example/testtoken.sol diff --git a/program-analysis/echidna/example/token.sol b/src/program-analysis/echidna/example/token.sol similarity index 100% rename from program-analysis/echidna/example/token.sol rename to src/program-analysis/echidna/example/token.sol diff --git a/program-analysis/echidna/exercises/Exercise-1.md b/src/program-analysis/echidna/exercises/Exercise-1.md similarity index 100% rename from program-analysis/echidna/exercises/Exercise-1.md rename to src/program-analysis/echidna/exercises/Exercise-1.md diff --git a/program-analysis/echidna/exercises/Exercise-2.md b/src/program-analysis/echidna/exercises/Exercise-2.md similarity index 100% rename from program-analysis/echidna/exercises/Exercise-2.md rename to src/program-analysis/echidna/exercises/Exercise-2.md diff --git a/program-analysis/echidna/exercises/Exercise-3.md b/src/program-analysis/echidna/exercises/Exercise-3.md similarity index 100% rename from program-analysis/echidna/exercises/Exercise-3.md rename to src/program-analysis/echidna/exercises/Exercise-3.md diff --git a/program-analysis/echidna/exercises/Exercise-4.md b/src/program-analysis/echidna/exercises/Exercise-4.md similarity index 100% rename from program-analysis/echidna/exercises/Exercise-4.md rename to src/program-analysis/echidna/exercises/Exercise-4.md diff --git a/program-analysis/echidna/exercises/Exercise-5.md b/src/program-analysis/echidna/exercises/Exercise-5.md similarity index 100% rename from program-analysis/echidna/exercises/Exercise-5.md rename to src/program-analysis/echidna/exercises/Exercise-5.md diff --git a/program-analysis/echidna/exercises/Exercise-6.md b/src/program-analysis/echidna/exercises/Exercise-6.md similarity index 100% rename from program-analysis/echidna/exercises/Exercise-6.md rename to src/program-analysis/echidna/exercises/Exercise-6.md diff --git a/program-analysis/echidna/exercises/Exercise-7.md b/src/program-analysis/echidna/exercises/Exercise-7.md similarity index 100% rename from program-analysis/echidna/exercises/Exercise-7.md rename to src/program-analysis/echidna/exercises/Exercise-7.md diff --git a/program-analysis/echidna/exercises/Exercise-8.md b/src/program-analysis/echidna/exercises/Exercise-8.md similarity index 100% rename from program-analysis/echidna/exercises/Exercise-8.md rename to src/program-analysis/echidna/exercises/Exercise-8.md diff --git a/program-analysis/echidna/exercises/README.md b/src/program-analysis/echidna/exercises/README.md similarity index 100% rename from program-analysis/echidna/exercises/README.md rename to src/program-analysis/echidna/exercises/README.md diff --git a/program-analysis/echidna/exercises/exercise1/medusa.json b/src/program-analysis/echidna/exercises/exercise1/medusa.json similarity index 100% rename from program-analysis/echidna/exercises/exercise1/medusa.json rename to src/program-analysis/echidna/exercises/exercise1/medusa.json diff --git a/program-analysis/echidna/exercises/exercise1/solution.sol b/src/program-analysis/echidna/exercises/exercise1/solution.sol similarity index 100% rename from program-analysis/echidna/exercises/exercise1/solution.sol rename to src/program-analysis/echidna/exercises/exercise1/solution.sol diff --git a/program-analysis/echidna/exercises/exercise1/template.sol b/src/program-analysis/echidna/exercises/exercise1/template.sol similarity index 100% rename from program-analysis/echidna/exercises/exercise1/template.sol rename to src/program-analysis/echidna/exercises/exercise1/template.sol diff --git a/program-analysis/echidna/exercises/exercise1/token.sol b/src/program-analysis/echidna/exercises/exercise1/token.sol similarity index 100% rename from program-analysis/echidna/exercises/exercise1/token.sol rename to src/program-analysis/echidna/exercises/exercise1/token.sol diff --git a/program-analysis/echidna/exercises/exercise2/medusa.json b/src/program-analysis/echidna/exercises/exercise2/medusa.json similarity index 100% rename from program-analysis/echidna/exercises/exercise2/medusa.json rename to src/program-analysis/echidna/exercises/exercise2/medusa.json diff --git a/program-analysis/echidna/exercises/exercise2/solution.sol b/src/program-analysis/echidna/exercises/exercise2/solution.sol similarity index 100% rename from program-analysis/echidna/exercises/exercise2/solution.sol rename to src/program-analysis/echidna/exercises/exercise2/solution.sol diff --git a/program-analysis/echidna/exercises/exercise2/template.sol b/src/program-analysis/echidna/exercises/exercise2/template.sol similarity index 100% rename from program-analysis/echidna/exercises/exercise2/template.sol rename to src/program-analysis/echidna/exercises/exercise2/template.sol diff --git a/program-analysis/echidna/exercises/exercise2/token.sol b/src/program-analysis/echidna/exercises/exercise2/token.sol similarity index 100% rename from program-analysis/echidna/exercises/exercise2/token.sol rename to src/program-analysis/echidna/exercises/exercise2/token.sol diff --git a/program-analysis/echidna/exercises/exercise3/medusa.json b/src/program-analysis/echidna/exercises/exercise3/medusa.json similarity index 100% rename from program-analysis/echidna/exercises/exercise3/medusa.json rename to src/program-analysis/echidna/exercises/exercise3/medusa.json diff --git a/program-analysis/echidna/exercises/exercise3/mintable.sol b/src/program-analysis/echidna/exercises/exercise3/mintable.sol similarity index 100% rename from program-analysis/echidna/exercises/exercise3/mintable.sol rename to src/program-analysis/echidna/exercises/exercise3/mintable.sol diff --git a/program-analysis/echidna/exercises/exercise3/solution.sol b/src/program-analysis/echidna/exercises/exercise3/solution.sol similarity index 100% rename from program-analysis/echidna/exercises/exercise3/solution.sol rename to src/program-analysis/echidna/exercises/exercise3/solution.sol diff --git a/program-analysis/echidna/exercises/exercise3/template.sol b/src/program-analysis/echidna/exercises/exercise3/template.sol similarity index 100% rename from program-analysis/echidna/exercises/exercise3/template.sol rename to src/program-analysis/echidna/exercises/exercise3/template.sol diff --git a/program-analysis/echidna/exercises/exercise3/token.sol b/src/program-analysis/echidna/exercises/exercise3/token.sol similarity index 100% rename from program-analysis/echidna/exercises/exercise3/token.sol rename to src/program-analysis/echidna/exercises/exercise3/token.sol diff --git a/program-analysis/echidna/exercises/exercise4/config.yaml b/src/program-analysis/echidna/exercises/exercise4/config.yaml similarity index 100% rename from program-analysis/echidna/exercises/exercise4/config.yaml rename to src/program-analysis/echidna/exercises/exercise4/config.yaml diff --git a/program-analysis/echidna/exercises/exercise4/medusa.json b/src/program-analysis/echidna/exercises/exercise4/medusa.json similarity index 100% rename from program-analysis/echidna/exercises/exercise4/medusa.json rename to src/program-analysis/echidna/exercises/exercise4/medusa.json diff --git a/program-analysis/echidna/exercises/exercise4/solution.sol b/src/program-analysis/echidna/exercises/exercise4/solution.sol similarity index 100% rename from program-analysis/echidna/exercises/exercise4/solution.sol rename to src/program-analysis/echidna/exercises/exercise4/solution.sol diff --git a/program-analysis/echidna/exercises/exercise4/template.sol b/src/program-analysis/echidna/exercises/exercise4/template.sol similarity index 100% rename from program-analysis/echidna/exercises/exercise4/template.sol rename to src/program-analysis/echidna/exercises/exercise4/template.sol diff --git a/program-analysis/echidna/exercises/exercise4/token.sol b/src/program-analysis/echidna/exercises/exercise4/token.sol similarity index 100% rename from program-analysis/echidna/exercises/exercise4/token.sol rename to src/program-analysis/echidna/exercises/exercise4/token.sol diff --git a/program-analysis/echidna/exercises/exercise7/config.yaml b/src/program-analysis/echidna/exercises/exercise7/config.yaml similarity index 100% rename from program-analysis/echidna/exercises/exercise7/config.yaml rename to src/program-analysis/echidna/exercises/exercise7/config.yaml diff --git a/program-analysis/echidna/exercises/exercise7/example.hardhat.config.ts b/src/program-analysis/echidna/exercises/exercise7/example.hardhat.config.ts similarity index 100% rename from program-analysis/echidna/exercises/exercise7/example.hardhat.config.ts rename to src/program-analysis/echidna/exercises/exercise7/example.hardhat.config.ts diff --git a/program-analysis/echidna/exercises/exercise7/solution.sol b/src/program-analysis/echidna/exercises/exercise7/solution.sol similarity index 100% rename from program-analysis/echidna/exercises/exercise7/solution.sol rename to src/program-analysis/echidna/exercises/exercise7/solution.sol diff --git a/program-analysis/echidna/frequently_asked_questions.md b/src/program-analysis/echidna/frequently_asked_questions.md similarity index 100% rename from program-analysis/echidna/frequently_asked_questions.md rename to src/program-analysis/echidna/frequently_asked_questions.md diff --git a/program-analysis/echidna/fuzzing_tips.md b/src/program-analysis/echidna/fuzzing_tips.md similarity index 100% rename from program-analysis/echidna/fuzzing_tips.md rename to src/program-analysis/echidna/fuzzing_tips.md diff --git a/program-analysis/echidna/introduction/README.md b/src/program-analysis/echidna/introduction/README.md similarity index 100% rename from program-analysis/echidna/introduction/README.md rename to src/program-analysis/echidna/introduction/README.md diff --git a/program-analysis/echidna/introduction/fuzzing-introduction.md b/src/program-analysis/echidna/introduction/fuzzing-introduction.md similarity index 100% rename from program-analysis/echidna/introduction/fuzzing-introduction.md rename to src/program-analysis/echidna/introduction/fuzzing-introduction.md diff --git a/program-analysis/echidna/introduction/how-to-test-a-property.md b/src/program-analysis/echidna/introduction/how-to-test-a-property.md similarity index 100% rename from program-analysis/echidna/introduction/how-to-test-a-property.md rename to src/program-analysis/echidna/introduction/how-to-test-a-property.md diff --git a/program-analysis/echidna/introduction/installation.md b/src/program-analysis/echidna/introduction/installation.md similarity index 100% rename from program-analysis/echidna/introduction/installation.md rename to src/program-analysis/echidna/introduction/installation.md diff --git a/program-analysis/manticore/README.md b/src/program-analysis/manticore/README.md similarity index 100% rename from program-analysis/manticore/README.md rename to src/program-analysis/manticore/README.md diff --git a/program-analysis/manticore/adding-constraints.md b/src/program-analysis/manticore/adding-constraints.md similarity index 100% rename from program-analysis/manticore/adding-constraints.md rename to src/program-analysis/manticore/adding-constraints.md diff --git a/program-analysis/manticore/examples/example.sol b/src/program-analysis/manticore/examples/example.sol similarity index 100% rename from program-analysis/manticore/examples/example.sol rename to src/program-analysis/manticore/examples/example.sol diff --git a/program-analysis/manticore/examples/example_constraint.py b/src/program-analysis/manticore/examples/example_constraint.py similarity index 100% rename from program-analysis/manticore/examples/example_constraint.py rename to src/program-analysis/manticore/examples/example_constraint.py diff --git a/program-analysis/manticore/examples/example_run.py b/src/program-analysis/manticore/examples/example_run.py similarity index 100% rename from program-analysis/manticore/examples/example_run.py rename to src/program-analysis/manticore/examples/example_run.py diff --git a/program-analysis/manticore/examples/example_throw.py b/src/program-analysis/manticore/examples/example_throw.py similarity index 100% rename from program-analysis/manticore/examples/example_throw.py rename to src/program-analysis/manticore/examples/example_throw.py diff --git a/program-analysis/manticore/examples/suicidal.sol b/src/program-analysis/manticore/examples/suicidal.sol similarity index 100% rename from program-analysis/manticore/examples/suicidal.sol rename to src/program-analysis/manticore/examples/suicidal.sol diff --git a/program-analysis/manticore/exercises/README.md b/src/program-analysis/manticore/exercises/README.md similarity index 100% rename from program-analysis/manticore/exercises/README.md rename to src/program-analysis/manticore/exercises/README.md diff --git a/program-analysis/manticore/exercises/example.md b/src/program-analysis/manticore/exercises/example.md similarity index 100% rename from program-analysis/manticore/exercises/example.md rename to src/program-analysis/manticore/exercises/example.md diff --git a/program-analysis/manticore/exercises/example/my_token.py b/src/program-analysis/manticore/exercises/example/my_token.py similarity index 100% rename from program-analysis/manticore/exercises/example/my_token.py rename to src/program-analysis/manticore/exercises/example/my_token.py diff --git a/program-analysis/manticore/exercises/example/my_token.sol b/src/program-analysis/manticore/exercises/example/my_token.sol similarity index 100% rename from program-analysis/manticore/exercises/example/my_token.sol rename to src/program-analysis/manticore/exercises/example/my_token.sol diff --git a/program-analysis/manticore/exercises/exercise1.md b/src/program-analysis/manticore/exercises/exercise1.md similarity index 100% rename from program-analysis/manticore/exercises/exercise1.md rename to src/program-analysis/manticore/exercises/exercise1.md diff --git a/program-analysis/manticore/exercises/exercise1/solution.py b/src/program-analysis/manticore/exercises/exercise1/solution.py similarity index 100% rename from program-analysis/manticore/exercises/exercise1/solution.py rename to src/program-analysis/manticore/exercises/exercise1/solution.py diff --git a/program-analysis/manticore/exercises/exercise1/template.py b/src/program-analysis/manticore/exercises/exercise1/template.py similarity index 100% rename from program-analysis/manticore/exercises/exercise1/template.py rename to src/program-analysis/manticore/exercises/exercise1/template.py diff --git a/program-analysis/manticore/exercises/exercise1/token.sol b/src/program-analysis/manticore/exercises/exercise1/token.sol similarity index 100% rename from program-analysis/manticore/exercises/exercise1/token.sol rename to src/program-analysis/manticore/exercises/exercise1/token.sol diff --git a/program-analysis/manticore/exercises/exercise2.md b/src/program-analysis/manticore/exercises/exercise2.md similarity index 100% rename from program-analysis/manticore/exercises/exercise2.md rename to src/program-analysis/manticore/exercises/exercise2.md diff --git a/program-analysis/manticore/exercises/exercise2/overflow.sol b/src/program-analysis/manticore/exercises/exercise2/overflow.sol similarity index 100% rename from program-analysis/manticore/exercises/exercise2/overflow.sol rename to src/program-analysis/manticore/exercises/exercise2/overflow.sol diff --git a/program-analysis/manticore/exercises/exercise2/solution.py b/src/program-analysis/manticore/exercises/exercise2/solution.py similarity index 100% rename from program-analysis/manticore/exercises/exercise2/solution.py rename to src/program-analysis/manticore/exercises/exercise2/solution.py diff --git a/program-analysis/manticore/exercises/exercise2/template.py b/src/program-analysis/manticore/exercises/exercise2/template.py similarity index 100% rename from program-analysis/manticore/exercises/exercise2/template.py rename to src/program-analysis/manticore/exercises/exercise2/template.py diff --git a/program-analysis/manticore/getting-throwing-paths.md b/src/program-analysis/manticore/getting-throwing-paths.md similarity index 100% rename from program-analysis/manticore/getting-throwing-paths.md rename to src/program-analysis/manticore/getting-throwing-paths.md diff --git a/program-analysis/manticore/running-under-manticore.md b/src/program-analysis/manticore/running-under-manticore.md similarity index 100% rename from program-analysis/manticore/running-under-manticore.md rename to src/program-analysis/manticore/running-under-manticore.md diff --git a/program-analysis/manticore/scripts/gh_action_test.sh b/src/program-analysis/manticore/scripts/gh_action_test.sh similarity index 100% rename from program-analysis/manticore/scripts/gh_action_test.sh rename to src/program-analysis/manticore/scripts/gh_action_test.sh diff --git a/program-analysis/manticore/symbolic-execution-introduction.md b/src/program-analysis/manticore/symbolic-execution-introduction.md similarity index 100% rename from program-analysis/manticore/symbolic-execution-introduction.md rename to src/program-analysis/manticore/symbolic-execution-introduction.md diff --git a/program-analysis/medusa b/src/program-analysis/medusa similarity index 100% rename from program-analysis/medusa rename to src/program-analysis/medusa diff --git a/program-analysis/slither/README.md b/src/program-analysis/slither/README.md similarity index 100% rename from program-analysis/slither/README.md rename to src/program-analysis/slither/README.md diff --git a/program-analysis/slither/api.md b/src/program-analysis/slither/api.md similarity index 100% rename from program-analysis/slither/api.md rename to src/program-analysis/slither/api.md diff --git a/program-analysis/slither/examples/coin.sol b/src/program-analysis/slither/examples/coin.sol similarity index 100% rename from program-analysis/slither/examples/coin.sol rename to src/program-analysis/slither/examples/coin.sol diff --git a/program-analysis/slither/examples/expected_results_print_basic_information.txt b/src/program-analysis/slither/examples/expected_results_print_basic_information.txt similarity index 100% rename from program-analysis/slither/examples/expected_results_print_basic_information.txt rename to src/program-analysis/slither/examples/expected_results_print_basic_information.txt diff --git a/program-analysis/slither/examples/print_basic_information.py b/src/program-analysis/slither/examples/print_basic_information.py similarity index 100% rename from program-analysis/slither/examples/print_basic_information.py rename to src/program-analysis/slither/examples/print_basic_information.py diff --git a/program-analysis/slither/exercise1.md b/src/program-analysis/slither/exercise1.md similarity index 100% rename from program-analysis/slither/exercise1.md rename to src/program-analysis/slither/exercise1.md diff --git a/program-analysis/slither/exercise2.md b/src/program-analysis/slither/exercise2.md similarity index 100% rename from program-analysis/slither/exercise2.md rename to src/program-analysis/slither/exercise2.md diff --git a/program-analysis/slither/exercise3.md b/src/program-analysis/slither/exercise3.md similarity index 100% rename from program-analysis/slither/exercise3.md rename to src/program-analysis/slither/exercise3.md diff --git a/program-analysis/slither/exercises/exercise1/coin.sol b/src/program-analysis/slither/exercises/exercise1/coin.sol similarity index 100% rename from program-analysis/slither/exercises/exercise1/coin.sol rename to src/program-analysis/slither/exercises/exercise1/coin.sol diff --git a/program-analysis/slither/exercises/exercise1/expected_results.txt b/src/program-analysis/slither/exercises/exercise1/expected_results.txt similarity index 100% rename from program-analysis/slither/exercises/exercise1/expected_results.txt rename to src/program-analysis/slither/exercises/exercise1/expected_results.txt diff --git a/program-analysis/slither/exercises/exercise1/solution.py b/src/program-analysis/slither/exercises/exercise1/solution.py similarity index 100% rename from program-analysis/slither/exercises/exercise1/solution.py rename to src/program-analysis/slither/exercises/exercise1/solution.py diff --git a/program-analysis/slither/exercises/exercise2/coin.sol b/src/program-analysis/slither/exercises/exercise2/coin.sol similarity index 100% rename from program-analysis/slither/exercises/exercise2/coin.sol rename to src/program-analysis/slither/exercises/exercise2/coin.sol diff --git a/program-analysis/slither/exercises/exercise2/expected_results.txt b/src/program-analysis/slither/exercises/exercise2/expected_results.txt similarity index 100% rename from program-analysis/slither/exercises/exercise2/expected_results.txt rename to src/program-analysis/slither/exercises/exercise2/expected_results.txt diff --git a/program-analysis/slither/exercises/exercise2/solution.py b/src/program-analysis/slither/exercises/exercise2/solution.py similarity index 100% rename from program-analysis/slither/exercises/exercise2/solution.py rename to src/program-analysis/slither/exercises/exercise2/solution.py diff --git a/program-analysis/slither/exercises/exercise3/expected_results.txt b/src/program-analysis/slither/exercises/exercise3/expected_results.txt similarity index 100% rename from program-analysis/slither/exercises/exercise3/expected_results.txt rename to src/program-analysis/slither/exercises/exercise3/expected_results.txt diff --git a/program-analysis/slither/exercises/exercise3/find.sol b/src/program-analysis/slither/exercises/exercise3/find.sol similarity index 100% rename from program-analysis/slither/exercises/exercise3/find.sol rename to src/program-analysis/slither/exercises/exercise3/find.sol diff --git a/program-analysis/slither/exercises/exercise3/solution.py b/src/program-analysis/slither/exercises/exercise3/solution.py similarity index 100% rename from program-analysis/slither/exercises/exercise3/solution.py rename to src/program-analysis/slither/exercises/exercise3/solution.py diff --git a/program-analysis/slither/images/ast.png b/src/program-analysis/slither/images/ast.png similarity index 100% rename from program-analysis/slither/images/ast.png rename to src/program-analysis/slither/images/ast.png diff --git a/program-analysis/slither/images/cfg.png b/src/program-analysis/slither/images/cfg.png similarity index 100% rename from program-analysis/slither/images/cfg.png rename to src/program-analysis/slither/images/cfg.png diff --git a/program-analysis/slither/scripts/gh_action_test.sh b/src/program-analysis/slither/scripts/gh_action_test.sh similarity index 100% rename from program-analysis/slither/scripts/gh_action_test.sh rename to src/program-analysis/slither/scripts/gh_action_test.sh diff --git a/program-analysis/slither/static_analysis.md b/src/program-analysis/slither/static_analysis.md similarity index 100% rename from program-analysis/slither/static_analysis.md rename to src/program-analysis/slither/static_analysis.md diff --git a/resources/tob_blogposts.md b/src/resources/tob_blogposts.md similarity index 100% rename from resources/tob_blogposts.md rename to src/resources/tob_blogposts.md diff --git a/static/TOB_Black.svg b/src/static/TOB_Black.svg similarity index 100% rename from static/TOB_Black.svg rename to src/static/TOB_Black.svg From 30f18d8f756a92ec4df5a55bee37d48e459afbd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20L=C3=B3pez?= Date: Tue, 27 Aug 2024 16:22:23 +0200 Subject: [PATCH 2/8] add artifact to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 9daa8247..3d16fd1a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .DS_Store node_modules +/book/ From 30180ff063e6ee2d5122e816e0ec014200834736 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20L=C3=B3pez?= Date: Tue, 27 Aug 2024 16:27:00 +0200 Subject: [PATCH 3/8] Revert "Update SUMMARY.md (hotfix)" This reverts commit 40216deeb848f0c03cc8c55c589a402f39385e09. --- src/SUMMARY.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 67a6edd3..37cb46a0 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -106,6 +106,15 @@ - [Exercise 6](./program-analysis/echidna/exercises/Exercise-6.md) - [Exercise 7](./program-analysis/echidna/exercises/Exercise-7.md) - [Exercise 8](./program-analysis/echidna/exercises/Exercise-8.md) + - [Medusa](./program-analysis/medusa/docs/src/README.md) - [Getting Started](./program-analysis/medusa/docs/src/getting_started/installation.md) + - [Project Configuration](./program-analysis/medusa/docs/src/project_configuration/overview.md) + the vast number of configuration options that can be set up based on your project needs. + - [Command Line Interface](./program-analysis/medusa/docs/src/cli/overview.md) + - [Writing Tests](./program-analysis/medusa/docs/src/testing/overview.md) + - [API (WIP)](./program-analysis/medusa/docs/src/api/api_overview.md) + - [Cheatcodes](./program-analysis/medusa/docs/src/cheatcodes/cheatcodes_overview.md) + - [Console Logging](./program-analysis/medusa/docs/src/console_logging.md) + - [FAQ](./program-analysis/medusa/docs/src/faq.md) - [Manticore](./program-analysis/manticore/README.md) - [Introduction to symbolic execution](./program-analysis/manticore/symbolic-execution-introduction.md): - [Running under Manticore](./program-analysis/manticore/running-under-manticore.md) From ccefa0a0c092e4d8bc0aa1ed8a23d50b3005061b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20L=C3=B3pez?= Date: Tue, 27 Aug 2024 16:34:18 +0200 Subject: [PATCH 4/8] Make medusa book paths nicer --- .github/workflows/deploy.yml | 6 +++++- src/SUMMARY.md | 16 ++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 8439154c..d3d9a1a7 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -27,7 +27,11 @@ jobs: run: | cargo install --git https://github.com/montyly/mdBook.git mdbook || true - name: Build artifacts - run: mdbook build + run: | + mv src/program-analysis/medusa/docs/src/ tmp-medusa + rm -rf src/program-analysis/medusa + mv tmp-medusa src/program-analysis/medusa + mdbook build - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 37cb46a0..92944841 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -106,15 +106,15 @@ - [Exercise 6](./program-analysis/echidna/exercises/Exercise-6.md) - [Exercise 7](./program-analysis/echidna/exercises/Exercise-7.md) - [Exercise 8](./program-analysis/echidna/exercises/Exercise-8.md) - - [Medusa](./program-analysis/medusa/docs/src/README.md) - [Getting Started](./program-analysis/medusa/docs/src/getting_started/installation.md) - - [Project Configuration](./program-analysis/medusa/docs/src/project_configuration/overview.md) + - [Medusa](./program-analysis/medusa/README.md) - [Getting Started](./program-analysis/medusa/getting_started/installation.md) + - [Project Configuration](./program-analysis/medusa/project_configuration/overview.md) the vast number of configuration options that can be set up based on your project needs. - - [Command Line Interface](./program-analysis/medusa/docs/src/cli/overview.md) - - [Writing Tests](./program-analysis/medusa/docs/src/testing/overview.md) - - [API (WIP)](./program-analysis/medusa/docs/src/api/api_overview.md) - - [Cheatcodes](./program-analysis/medusa/docs/src/cheatcodes/cheatcodes_overview.md) - - [Console Logging](./program-analysis/medusa/docs/src/console_logging.md) - - [FAQ](./program-analysis/medusa/docs/src/faq.md) + - [Command Line Interface](./program-analysis/medusa/cli/overview.md) + - [Writing Tests](./program-analysis/medusa/testing/overview.md) + - [API (WIP)](./program-analysis/medusa/api/api_overview.md) + - [Cheatcodes](./program-analysis/medusa/cheatcodes/cheatcodes_overview.md) + - [Console Logging](./program-analysis/medusa/console_logging.md) + - [FAQ](./program-analysis/medusa/faq.md) - [Manticore](./program-analysis/manticore/README.md) - [Introduction to symbolic execution](./program-analysis/manticore/symbolic-execution-introduction.md): - [Running under Manticore](./program-analysis/manticore/running-under-manticore.md) From ad832596da564e6e5c0e6306a9f8d3f69dffbe4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20L=C3=B3pez?= Date: Tue, 27 Aug 2024 16:37:14 +0200 Subject: [PATCH 5/8] Update medusa mdbook --- src/program-analysis/medusa | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/program-analysis/medusa b/src/program-analysis/medusa index 67500325..ff587c3d 160000 --- a/src/program-analysis/medusa +++ b/src/program-analysis/medusa @@ -1 +1 @@ -Subproject commit 6750032502ed64952435dc408be3d8a1a107eb5c +Subproject commit ff587c3d49001f0399a32fdba36b131d5a59a334 From fd715ea26b62bd6ea8c9cf8b559437d20ed86103 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20L=C3=B3pez?= Date: Tue, 27 Aug 2024 16:45:37 +0200 Subject: [PATCH 6/8] Re-add README --- README.md | 42 ++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + 2 files changed, 43 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 00000000..2cebd968 --- /dev/null +++ b/README.md @@ -0,0 +1,42 @@ +# Building Secure Smart Contracts + +![](https://github.com/crytic/building-secure-contracts/actions/workflows/slither.yml/badge.svg) ![](https://github.com/crytic/building-secure-contracts/actions/workflows/echidna.yml/badge.svg) ![](https://github.com/crytic/building-secure-contracts/actions/workflows/medusa.yml/badge.svg) + +Brought to you by [Trail of Bits](https://www.trailofbits.com/), this repository offers guidelines and best practices for developing secure smart contracts. Contributions are welcome, you can contribute by following our [contributing guidelines](https://github.com/crytic/building-secure-contracts/blob/master/CONTRIBUTING.md). + +**Table of Contents:** + +- [Development Guidelines](./src/development-guidelines) + - [Code Maturity](./src/development-guidelines/code_maturity.md): Criteria for developers and security engineers to use when evaluating a codebase’s maturity + - [High-Level Best Practices](./src/development-guidelines/guidelines.md): Best practices for all smart contracts + - [Incident Response Recommendations](./src/development-guidelines/incident_response.md): Guidelines for creating an incident response plan + - [Secure Development Workflow](./src/development-guidelines/workflow.md): A high-level process to follow during code development + - [Token Integration Checklist](./src/development-guidelines/token_integration.md): What to check when interacting with arbitrary tokens +- [Learn EVM](./src/learn_evm): Technical knowledge about the EVM + - [EVM Opcodes](./src/learn_evm/evm_opcodes.md): Information on all EVM opcodes + - [Transaction Tracing](./src/learn_evm/tracing.md): Helper scripts and guidance for generating and navigating transaction traces + - [Arithmetic Checks](./src/learn_evm/arithmetic-checks.md): A guide to performing arithmetic checks in the EVM + - [Yellow Paper Guidance](./src/learn_evm/yellow-paper.md): Symbol reference for easier reading of the Ethereum yellow paper + - [Forks <> EIPs](./src/learn_evm/eips_forks.md): Summaries of the EIPs included in each Ethereum fork + - [Forks <> CIPs](./src/learn_evm/cips_forks.md): Summaries of the CIPs and EIPs included in each Celo fork _(EVM-compatible chain)_ + - [Upgrades <> TIPs](./src/learn_evm/tips_upgrades.md): Summaries of the TIPs included in each TRON upgrade _(EVM-compatible chain)_ + - [Forks <> BEPs](./src/learn_evm/beps_forks.md): Summaries of the BEPs included in each BSC fork _(EVM-compatible chain)_ +- [Not So Smart Contracts](./src/not-so-smart-contracts): Examples of common smart contract issues, complete with descriptions, examples, and recommendations + - [Algorand](./src/not-so-smart-contracts/algorand) + - [Cairo](./src/not-so-smart-contracts/cairo) + - [Cosmos](./src/not-so-smart-contracts/cosmos) + - [Substrate](./src/not-so-smart-contracts/substrate) + - [Solana](./src/not-so-smart-contracts/solana) +- [Program Analysis](./src/program-analysis): Using automated tools to secure contracts + - [Echidna](./src/program-analysis/echidna): A fuzzer that checks your contract's properties + - [Slither](./src/program-analysis/slither): A static analyzer with both CLI and scriptable interfaces + - [Manticore](./src/program-analysis/manticore): A symbolic execution engine that proves the correctness of properties + - For each tool, this training material provides: + - A theoretical introduction, an API walkthrough, and a set of exercises + - Exercises that take approximately two hours to gain practical understanding +- [Resources](./src/resources): Assorted online resources + - [Trail of Bits Blog Posts](./src/resources/tob_blogposts.md): A list of blockchain-related blog posts created by Trail of Bits + +# License + +secure-contracts and building-secure-contracts are licensed and distributed under the [AGPLv3 license](https://github.com/crytic/building-secure-contracts/blob/master/LICENSE). Contact us if you're looking for an exception to the terms. diff --git a/package.json b/package.json index 22e2aa46..91a827ae 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "prettier-plugin-solidity": "^1.1.3" }, "scripts": { + "update-readme": "cat src/README.md | sed 's#](./#](./src/#' > README.md", "format": "prettier --write . && npm run format:embedded", "format:embedded": "prettier --write \"**/*.md\" --embedded-language-formatting=auto --plugin prettier-plugin-solidity --tab-width 4 --print-width 120 && prettier --write \"**/*.md\"", "lint": "npm run lint:format && npm run lint:links", From 5920b69c1109ad2e16f517274093d7700485db0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20L=C3=B3pez?= Date: Tue, 27 Aug 2024 16:54:23 +0200 Subject: [PATCH 7/8] Move paths in CI --- .github/workflows/echidna.yml | 32 +++++++++---------- .github/workflows/lint_format.yml | 10 +++--- .github/workflows/manticore.yml | 6 ++-- .github/workflows/medusa.yml | 30 ++++++++--------- .github/workflows/slither.yml | 6 ++-- .../manticore/scripts/gh_action_test.sh | 2 +- .../slither/scripts/gh_action_test.sh | 2 +- 7 files changed, 44 insertions(+), 44 deletions(-) diff --git a/.github/workflows/echidna.yml b/.github/workflows/echidna.yml index 4b9396ea..097fc793 100644 --- a/.github/workflows/echidna.yml +++ b/.github/workflows/echidna.yml @@ -4,15 +4,15 @@ on: push: paths: - ".github/workflows/echidna.yml" - - "program-analysis/echidna/**/*.sol" - - "program-analysis/echidna/**/*.yml" + - "src/program-analysis/echidna/**/*.sol" + - "src/program-analysis/echidna/**/*.yml" branches: - master pull_request: paths: - ".github/workflows/echidna.yml" - - "program-analysis/echidna/**/*.sol" - - "program-analysis/echidna/**/*.yml" + - "src/program-analysis/echidna/**/*.sol" + - "src/program-analysis/echidna/**/*.yml" schedule: # run CI every day even if no PRs/merges occur - cron: "0 12 * * *" @@ -27,25 +27,25 @@ jobs: matrix: include: - name: Exercise 1 - workdir: program-analysis/echidna/exercises/exercise1/ + workdir: src/program-analysis/echidna/exercises/exercise1/ files: solution.sol contract: TestToken outcome: failure expected: 'echidna_test_balance:\s*failed' - name: Exercise 2 - workdir: program-analysis/echidna/exercises/exercise2/ + workdir: src/program-analysis/echidna/exercises/exercise2/ files: solution.sol contract: TestToken outcome: failure expected: 'echidna_no_transfer:\s*failed' - name: Exercise 3 - workdir: program-analysis/echidna/exercises/exercise3/ + workdir: src/program-analysis/echidna/exercises/exercise3/ files: solution.sol contract: TestToken outcome: failure expected: 'echidna_test_balance:\s*failed' - name: Exercise 4 - workdir: program-analysis/echidna/exercises/exercise4/ + workdir: src/program-analysis/echidna/exercises/exercise4/ files: solution.sol config: config.yaml contract: TestToken @@ -76,32 +76,32 @@ jobs: outcome: failure expected: 'testPoolBalance():\s*failed' - name: TestToken - workdir: program-analysis/echidna/example/ + workdir: src/program-analysis/echidna/example/ files: testtoken.sol contract: TestToken outcome: failure expected: 'echidna_balance_under_1000:\s*failed' - name: Gas estimation - workdir: program-analysis/echidna/example/ + workdir: src/program-analysis/echidna/example/ files: gas.sol config: gas.yaml outcome: success expected: "f(42,123," flaky: true - name: Multi - workdir: program-analysis/echidna/example/ + workdir: src/program-analysis/echidna/example/ files: multi.sol config: filter.yaml outcome: failure expected: 'echidna_state4:\s*failed' - name: Assert - workdir: program-analysis/echidna/example/ + workdir: src/program-analysis/echidna/example/ files: assert.sol config: assert.yaml outcome: failure expected: 'inc(uint256):\s*failed' - name: PopsicleBroken - workdir: program-analysis/echidna/example/ + workdir: src/program-analysis/echidna/example/ files: PopsicleBroken.sol solc-version: 0.8.4 config: Popsicle.yaml @@ -109,7 +109,7 @@ jobs: outcome: failure expected: 'totalBalanceAfterTransferIsPreserved(address,uint256):\s*failed' - name: PopsicleFixed - workdir: program-analysis/echidna/example/ + workdir: src/program-analysis/echidna/example/ files: PopsicleFixed.sol solc-version: 0.8.4 config: Popsicle.yaml @@ -117,7 +117,7 @@ jobs: outcome: success expected: 'totalBalanceAfterTransferIsPreserved(address,uint256):\s*passing' - name: TestDepositWithPermit - workdir: program-analysis/echidna/example/ + workdir: src/program-analysis/echidna/example/ files: TestDepositWithPermit.sol solc-version: 0.8.0 config: testdeposit.yaml @@ -125,7 +125,7 @@ jobs: outcome: success expected: 'testERC20PermitDeposit(uint256):\s*passing' - name: MultiABI - workdir: program-analysis/echidna/example/ + workdir: src/program-analysis/echidna/example/ files: allContracts.sol solc-version: 0.8.0 config: allContracts.yaml diff --git a/.github/workflows/lint_format.yml b/.github/workflows/lint_format.yml index c3d6605a..c716aef6 100644 --- a/.github/workflows/lint_format.yml +++ b/.github/workflows/lint_format.yml @@ -25,12 +25,12 @@ jobs: run: | npm ci - - name: Remove Medusa uncessary files + - name: Remove unnecessary Medusa files run: | - rm -rf program-analysis/medusa/chain - rm -rf program-analysis/medusa/compilation - rm -rf program-analysis/medusa/fuzzing - rm program-analysis/medusa/docs/theme/highlight.js + rm -rf src/program-analysis/medusa/chain + rm -rf src/program-analysis/medusa/compilation + rm -rf src/program-analysis/medusa/fuzzing + rm src/program-analysis/medusa/docs/theme/highlight.js - name: Run lint run: | diff --git a/.github/workflows/manticore.yml b/.github/workflows/manticore.yml index 09df3375..a15b1e4e 100644 --- a/.github/workflows/manticore.yml +++ b/.github/workflows/manticore.yml @@ -4,13 +4,13 @@ on: push: paths: - ".github/workflows/manticore.yml" - - "program-analysis/manticore/**/*.py" + - "src/program-analysis/manticore/**/*.py" branches: - master pull_request: paths: - ".github/workflows/manticore.yml" - - "program-analysis/manticore/**/*.py" + - "src/program-analysis/manticore/**/*.py" schedule: # run CI every day even if no PRs/merges occur - cron: "0 12 * * *" @@ -33,4 +33,4 @@ jobs: solc-select use 0.5.11 - name: Run Tests run: | - bash program-analysis/manticore/scripts/gh_action_test.sh + bash src/program-analysis/manticore/scripts/gh_action_test.sh diff --git a/.github/workflows/medusa.yml b/.github/workflows/medusa.yml index 8f06b830..bebda0bd 100644 --- a/.github/workflows/medusa.yml +++ b/.github/workflows/medusa.yml @@ -4,15 +4,15 @@ on: push: paths: - ".github/workflows/medusa.yml" - - "program-analysis/echidna/**/*.sol" - - "program-analysis/echidna/**/*.yml" + - "src/program-analysis/echidna/**/*.sol" + - "src/program-analysis/echidna/**/*.yml" branches: - master pull_request: paths: - ".github/workflows/medusa.yml" - - "program-analysis/echidna/**/*.sol" - - "program-analysis/echidna/**/*.yml" + - "src/program-analysis/echidna/**/*.sol" + - "src/program-analysis/echidna/**/*.yml" schedule: # run CI every day even if no PRs/merges occur - cron: "0 12 * * *" @@ -27,25 +27,25 @@ jobs: matrix: include: - name: Exercise 1 - workdir: program-analysis/echidna/exercises/exercise1/ + workdir: src/program-analysis/echidna/exercises/exercise1/ files: solution.sol contract: TestToken outcome: failure expected: 'echidna_test_balance()\" failed after the following call sequence' - name: Exercise 2 - workdir: program-analysis/echidna/exercises/exercise2/ + workdir: src/program-analysis/echidna/exercises/exercise2/ files: solution.sol contract: TestToken outcome: failure expected: 'echidna_no_transfer()\" failed after the following call sequence' - name: Exercise 3 - workdir: program-analysis/echidna/exercises/exercise3/ + workdir: src/program-analysis/echidna/exercises/exercise3/ files: solution.sol contract: TestToken outcome: failure expected: 'echidna_test_balance()\" failed after the following call sequence' - name: Exercise 4 - workdir: program-analysis/echidna/exercises/exercise4/ + workdir: src/program-analysis/echidna/exercises/exercise4/ files: solution.sol contract: TestToken outcome: failure @@ -75,41 +75,41 @@ jobs: # outcome: failure # expected: 'testPoolBalance():\s*failed' - name: TestToken - workdir: program-analysis/echidna/example/ + workdir: src/program-analysis/echidna/example/ files: testtoken.sol contract: TestToken outcome: failure expected: 'echidna_balance_under_1000()\" failed after the following call sequence' - name: Multi - workdir: program-analysis/echidna/example/ + workdir: src/program-analysis/echidna/example/ files: multi.sol contract: C config: filter.yaml outcome: failure expected: 'echidna_state4()\" failed after the following call sequence' - name: Assert - workdir: program-analysis/echidna/example/ + workdir: src/program-analysis/echidna/example/ files: assert.sol config: assert.yaml contract: Incrementor outcome: failure expected: 'inc(uint256)\" resulted in an assertion failure after the following call sequence' - name: PopsicleBroken - workdir: program-analysis/echidna/example/ + workdir: src/program-analysis/echidna/example/ files: PopsicleBroken.sol solc-version: 0.8.4 contract: PopsicleBroken outcome: failure expected: 'PopsicleBroken.totalBalanceAfterTransferIsPreserved(address,uint256)\" resulted in an assertion failure after the following call sequence' - name: PopsicleFixed - workdir: program-analysis/echidna/example/ + workdir: src/program-analysis/echidna/example/ files: PopsicleFixed.sol solc-version: 0.8.4 contract: PopsicleFixed outcome: success expected: '\[PASSED\] Assertion Test: PopsicleFixed.totalBalanceAfterTransferIsPreserved(address,uint256)' - name: TestDepositWithPermit - workdir: program-analysis/echidna/example/ + workdir: src/program-analysis/echidna/example/ files: TestDepositWithPermit.sol solc-version: 0.8.0 config: testdeposit.yaml @@ -117,7 +117,7 @@ jobs: outcome: success expected: '\[PASSED\] Assertion Test: TestDepositWithPermit.testERC20PermitDeposit(uint256)' # - name: MultiABI - # workdir: program-analysis/echidna/example/ + # workdir: src/program-analysis/echidna/example/ # files: allContracts.sol # solc-version: 0.8.0 # config: allContracts.yaml diff --git a/.github/workflows/slither.yml b/.github/workflows/slither.yml index 6daee37f..0ebb821b 100644 --- a/.github/workflows/slither.yml +++ b/.github/workflows/slither.yml @@ -4,13 +4,13 @@ on: push: paths: - ".github/workflows/slither.yml" - - "program-analysis/slither/**/*.py" + - "src/program-analysis/slither/**/*.py" branches: - master pull_request: paths: - ".github/workflows/slither.yml" - - "program-analysis/slither/**/*.py" + - "src/program-analysis/slither/**/*.py" schedule: # run CI every day even if no PRs/merges occur - cron: "0 12 * * *" @@ -31,4 +31,4 @@ jobs: pip install solc-select - name: Run Tests run: | - bash program-analysis/slither/scripts/gh_action_test.sh + bash src/program-analysis/slither/scripts/gh_action_test.sh diff --git a/src/program-analysis/manticore/scripts/gh_action_test.sh b/src/program-analysis/manticore/scripts/gh_action_test.sh index 4188fd3e..14751fc2 100644 --- a/src/program-analysis/manticore/scripts/gh_action_test.sh +++ b/src/program-analysis/manticore/scripts/gh_action_test.sh @@ -64,7 +64,7 @@ test_exercise(){ pip install manticore==0.3.5 crytic-compile==0.1.13 -cd program-analysis/manticore +cd src/program-analysis/manticore sudo add-apt-repository ppa:sri-csl/formal-methods -y sudo apt-get update diff --git a/src/program-analysis/slither/scripts/gh_action_test.sh b/src/program-analysis/slither/scripts/gh_action_test.sh index d2bc01e4..a4e59a5e 100644 --- a/src/program-analysis/slither/scripts/gh_action_test.sh +++ b/src/program-analysis/slither/scripts/gh_action_test.sh @@ -53,7 +53,7 @@ test_exercise(){ } -cd program-analysis/slither +cd src/program-analysis/slither pip install slither-analyzer solc-select install 0.8.20 solc-select use 0.8.20 From f948b0832aedb31b6293d38b19f8a6482bc19b5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20L=C3=B3pez?= Date: Tue, 27 Aug 2024 17:33:30 +0200 Subject: [PATCH 8/8] Move favicon --- favicon.png => src/favicon.png | Bin favicon.svg => src/favicon.svg | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename favicon.png => src/favicon.png (100%) rename favicon.svg => src/favicon.svg (100%) diff --git a/favicon.png b/src/favicon.png similarity index 100% rename from favicon.png rename to src/favicon.png diff --git a/favicon.svg b/src/favicon.svg similarity index 100% rename from favicon.svg rename to src/favicon.svg