## 5 Experiments
### Summarize--Recommended Best Practices  
The research carried out allowed for the identification of security vulnerabilities and areas for optimization within the smart contract code. This section presents a summary of the improvements and best practices implemented that can be used by developers working with smart contracts. To consolidate the results of automated and manual evaluations, Table 6 provides a categorized summary of the detected vulnerabilities, indicating their origin (manual or tool-assisted) and severity. This structured overview reinforces the need for hybrid security testing strategies that combine symbolic analysis with scenario-based evaluation.  
Compared to static scoring frameworks such as EthTrust Level or CertiK Skynet [49], the proposed method emphasizes a hybrid analysis strategy that combines symbolic execution with manual scenario testing. Although EthTrust and Skynet provide valuable standardized metrics for assessing code structure and known antipatterns, they were not applied directly in this study. Instead, we see their integration as a promising avenue for future work, particularly in benchmarking coverage, identifying blind spots, and improving audit reproducibility through the complementary use of standardized certification schemes and custom interaction-based assessments. The key takeaways of this research include the following enhancements:  
1. Choosing and maintaining a stable Solidity version ensures protection against common vulnerabilities and compatibility with modern language features.
2. Proper validation of input data, which should include checks to prevent empty values and enforce correct data formats. In the current prototype, some validation logic (e.g., email formatting and empty field checks) is not fully enforced and will be strengthened in future versions. Additionally, the length of user-inputted strings should be restricted to prevent excessive memory usage and potential exploits.
3. Access control for contract functions to ensure that only authorized users can execute certain operations. Functions should be restricted where necessary, for example, by allowing only the contract owner to call administrative functions.
4. Protection against concurrent function execution to prevent race conditions. Implement a reentrancy guard and ensure that functions cannot be executed multiple times simultaneously, reducing the risk of exploitation.
5. Using the _immutable_ keyword where applicable, as it enhances security by preventing unintended modifications while also optimizing gas consumption, leading to more efficient contract execution.
6. Gas optimization techniques should be considered essential in production-grade contracts. Developers are encouraged to use _calldata_ instead of _memory_
7. For functions involving asset transfer or contract destruction, developers should consider the integration of multi-signature wallets. This mechanism ensures that sensitive operations can only be executed after approval by multiple trusted parties, thus mitigating the risk of unauthorized access due to compromised private keys or malicious insider actions.
8. To enhance scalability and cost efficiency, developers should consider integrating off-chain computation and Layer 2 solutions such as Optimistic Rollups or zk-Rollups. These technologies reduce the transaction load on the Ethereum mainnet while main taining security guarantees through fraud proofs or zero-knowledge validation mechanisms [50].