I have a smart contract that deploys another smart contract and returns the address of the deployed smart contract. The code for the smart contract looks like this-
contract ContractCreator {
mapping(address=>address) deployedAddress;
constructor() public {
}
function createNFT(bytes32 _name) public returns(address){
MyArtSale ob= new MyArtSale( _name, msg.sender);
deployedAddress[msg.sender]=address(ob);
return address(ob);
}
function fetchNFT () public view returns(address) {
return deployedAddress[msg.sender];
}
}
I want to interact with the createNFT function using web3.py and following is the python program-
truffleFile = json.load(open('./build/contracts/Ballot.json'))
abi = truffleFile['abi']
address = truffleFile['address']
contract= w3.eth.contract(address=address, abi=abi)
#building transaction
construct_txn = contract.functions.createCourse().buildTransaction({
'from': acct.address,
'nonce': w3.eth.getTransactionCount(acct.address),
'gas': 1728712,
'gasPrice': w3.toWei('50', 'gwei')})
signed = acct.signTransaction(construct_txn)
tx_hash=w3.eth.sendRawTransaction(signed.rawTransaction)
print(tx_hash.hex())
tx_receipt = w3.eth.waitForTransactionReceipt(tx_hash)
How can I access the address that is returned by the createNFT address using the python program