I am currently developing a dApp with Drizzle on top of ReactJS. My project consists of, basically, 8 .sol files. 4 of them are just abstract contracts that include the functions, structs etc. for easier human readability and the other 4 hold the logic of the contracts. My main issue is that some of the contracts must be unique to every user - The user should be able to create a new instance of a contract for as many times as they want. I have tried to do it by having one more contract that will create the new instances, like this: ``` pragma solidity ^0.5.10; import './ContractToBeInstanced.sol'; contract newInstance { function newInstanceFunc(address _address) public returns(address) { ContractToBeInstanced T = new ContractToBeInstanced(_address); return T.getAddress(); //returns the address(this) of the contract } } ``` and in the ContractToBeInstanced.sol I have a constructor that it sets the owner of the new instance: ``` constructor(address _owner) public { owner = _owner; getAddress(); //it also calls the getAddress() to return the address to the parent function } ``` **So, my main issues are:** - How do I create that instance through Drizzle? For example, I have tried: ``` <Button onClick={ () => this.contracts.newInstance.methods.newInstanceFunc.cacheSend(contractConfig.contractName, {from: this.currentAccount})) }>New Instance</Button> ``` Metamask opens, I run the transaction, it gets valid and then, nothing. I also can not see the new (instance) of the contract in the **Contracts** menu in Ganache and there is no output in the transactions that returns the new contract's address. Is all this normal? - When the new instance of the contract will be created, how will I be able to access it again in a later manner of time? I suspect that I will have to use some kind of IPFS or look through the past transactions? I know that this is a very simple question, but I am not really sure yet. What I would also like to note, is that my truffle's migration files only do a: ``` deployer.deploy(ContractA).then( () => deployer.deploy(ContractB)...); ``` which I think is wrong and that the Migrations.sol is untouched. Thanks for your time reading my issue. I will really appreciate any ideas. Thanks! Cheers =)