Post
Share your knowledge.
Apr 20, 2023
Expert Q&A
How to deploy a factory contract in vyper?
I have a contract in vyper that looks as such:
# I'm a comment!
# SPDX-License-Identifier: MIT
# @version ^0.3.7
# If remix isn't updated use version: ^0.2.16
myFavoriteNumber: uint256
struct Person:
favoriteNumber: uint256
name: String[100]
# Static Array/List
listOfPeople: public(Person[5])
listOfPeopleIndex: uint256
nameToFavoriteNumber: HashMap[String[100], uint256]
@external
def store(_favoriteNumber: uint256):
self.myFavoriteNumber = _favoriteNumber
@external
@view
def retrieve() -> uint256:
return self.myFavoriteNumber
@external
def addPerson(_name: String[100], _favoriteNumber: uint256):
newPerson: Person = Person({favoriteNumber: _favoriteNumber, name: _name})
self.listOfPeople[self.listOfPeopleIndex] = newPerson
self.listOfPeopleIndex += 1
self.nameToFavoriteNumber[_name] = _favoriteNumber
And I'd like another contract to be able to deploy this contract. In solidity this is as easy as an import. But how do I do this in vyper?
In solidity, I'd do:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
import "./SimpleStorage.sol";
contract StorageFactory {
SimpleStorage[] public listOfSimpleStorageContracts;
function createSimpleStorageContract() public {
SimpleStorage simpleStorageContractVariable = new SimpleStorage();
// SimpleStorage simpleStorage = new SimpleStorage();
listOfSimpleStorageContracts.push(simpleStorageContractVariable);
}
}
- #Vyper
1
1
Share
Comments
Answers
1Apr 20 2023, 21:30
You'd use create_copy_of
@external
def create_simple_storage_contract() -> address:
deployed_simple_storage: address = create_copy_of(self.contract_to_copy)
self.list_of_simple_storage_contracts.append(deployed_simple_storage)
return deployed_simple_storage
You'd need to:
- Deploy the contract
- Create a copy of the contract
0
Comments
Do you know the answer?
Please log in and share it.
Vyper is a relatively new, pythonic programming language used to write smart contracts. Vyper targets Ethereum Virtual Machine making it virtually impossible for developers to code misleading programs.
2Posts3Answers
Trending posts