1

I was checking the Reccuring Transfers Module from the safe modules repo and I saw an import called Module which is not actually present in the @gnosis.pm/safe-contracts npm package in the latest version 1.3.0. Should I revert back to 1.0.0 to use the Module contract?

I am going with the factory implementation. I'm sorry this might be a dumb question. I am trying to call the setup function on my newly created safe. But I am getting an error because your deployed implementation contract from Safe Deployments (unusable Safe) https://goerli.etherscan.io/address/0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552#code has already set the threshold to 1 in the constructor and makes it not possible to call setupOwners because it reverts GS200(Threshold !=0). Should I create my own version of this contract and deploy it as my own Singleton Safe Deployment? or am I missing something that is obvious? Here is my code for your reference: function deploySafe(uint salt, bytes calldata signature) public { address safeAddress = _deployProxy( i_safeImplementation, msg.sender, salt ); address moduleAddress = _deployProxy( i_moduleImplementation, msg.sender, salt );

    bytes memory setupData = abi.encodeWithSelector(
        SETUP_MODULE_METHOD_ID,
        msg.sender,
        moduleAddress,
        bytes32(0)
    );

    bytes memory enableModuleData = abi.encodeWithSelector(
        ENABLE_MODULE_METHOD_ID,
        moduleAddress
    );

    safeAddress.call(
        abi.encodeWithSelector(
            SETUP_SAFE_METHOD_ID,
            [msg.sender],
            1,
            moduleAddress,
            setupData,
            address(0),
            address(0),
            0,
            address(0)
        )
    );
}

Hey @Germán | Safe , Thanks for the response. It still reverts an error when I try to create a new Safe using the SafeProxyFactory and call setup method using the intializer param. Here is my code for your reference: bytes4 public constant SETUP_MODULES_METHOD_ID = bytes4(keccak256("setupModules(address,bytes)")); bytes4 public constant SETUP_SAFE_METHOD_ID = bytes4( keccak256( "setup(address[],uint256,address,bytes,address,address,uint256,address)" ) ); function _deploySafe(address moduleAddress,uint salt) internal returns(GnosisSafeProxy){ bytes memory setupModulesData = abi.encodeWithSelector( SETUP_MODULES_METHOD_ID, moduleAddress, "" );

        return i_safeProxyFactory.createProxyWithNonce(i_safeImplementation,abi.encodeWithSelector(
                SETUP_SAFE_METHOD_ID,
                [msg.sender],
                1,
                moduleAddress,
                setupModulesData,
                address(0),
                address(0),
                0,
                address(0)
            ),salt);
1
  • Please clarify your specific problem or provide additional details to highlight exactly what you need. As it's currently written, it's hard to tell exactly what you're asking.
    – Community Bot
    Sep 11 at 20:04

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Browse other questions tagged or ask your own question.