### Start Foundry Source: https://github.com/euler-xyz/ethereum-vault-connector/blob/master/README.md Initialize Foundry after installation by running the foundryup command. ```sh foundryup ``` -------------------------------- ### Install Foundry Source: https://github.com/euler-xyz/ethereum-vault-connector/blob/master/README.md Download and install Foundry, a smart contract development toolkit for Ethereum, using the provided curl command. ```sh curl -L https://foundry.paradigm.xyz | bash ``` -------------------------------- ### Install Scribble Source: https://github.com/euler-xyz/ethereum-vault-connector/blob/master/README.md Install the eth-scribble package globally using npm for static analysis of Solidity contracts. ```sh npm install -g eth-scribble ``` -------------------------------- ### Install Ethereum Vault Connector with Foundry Source: https://github.com/euler-xyz/ethereum-vault-connector/blob/master/README.md Install the Ethereum Vault Connector package into your Foundry project using the forge install command. ```sh forge install euler-xyz/ethereum-vault-connector ``` -------------------------------- ### Instrument Contracts and Run Tests with Scribble Source: https://github.com/euler-xyz/ethereum-vault-connector/blob/master/README.md Instrument the specified Solidity file with scribble annotations and then run the tests using Forge. Ensure scribble is installed first. ```sh scribble test/evc/EthereumVaultConnectorScribble.sol --output-mode files --arm && forge test ``` -------------------------------- ### Run Tests in Coverage Mode Source: https://github.com/euler-xyz/ethereum-vault-connector/blob/master/README.md Generate a test coverage report for the Ethereum Vault Connector project using Foundry's coverage command. ```sh forge coverage ``` -------------------------------- ### Run Tests in Default Mode Source: https://github.com/euler-xyz/ethereum-vault-connector/blob/master/README.md Execute all tests within the Ethereum Vault Connector project using the default Foundry test runner. ```sh forge test ``` -------------------------------- ### Clone Ethereum Vault Connector Repository Source: https://github.com/euler-xyz/ethereum-vault-connector/blob/master/README.md Clone the Ethereum Vault Connector repository locally and navigate into the project directory. ```sh git clone https://github.com/euler-xyz/ethereum-vault-connector.git && cd ethereum-vault-connector ``` -------------------------------- ### Remove Scribble Instrumentation Source: https://github.com/euler-xyz/ethereum-vault-connector/blob/master/README.md Disarm the specified Solidity file to remove any instrumentation applied by scribble. ```sh scribble test/evc/EthereumVaultConnectorScribble.sol --disarm ``` -------------------------------- ### Mutant CER-68 Code Change Source: https://github.com/euler-xyz/ethereum-vault-connector/blob/master/certora/mutation/README.md This diff shows a code modification for mutant CER-68 in EthereumVaultConnector.sol, related to authorization checks. ```diff diff --git a/src/EthereumVaultConnector.sol b/src/EthereumVaultConnector.sol index 1c0a327..4316f49 100644 --- a/src/EthereumVaultConnector.sol +++ b/src/EthereumVaultConnector.sol @@ -310,7 +310,7 @@ contract EthereumVaultConnector is Events, Errors, TransientStorage, IEVC { address owner = haveCommonOwnerInternal(account, msgSender) ? msgSender : getAccountOwnerInternal(account); // if it's an operator calling, it can only act for itself and must not be able to change other operators status - if (owner != msgSender && operator != msgSender) { + if (owner != msg.sender && operator != msg.sender && address(this) != msg.sender) { revert EVC_NotAuthorized(); } ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.