Publication
Partagez vos connaissances.
Apr 20, 2023
Questions et Réponses avec des Experts
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
Partager
Commentaires
Réponses
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
Commentaires
Connaissez-vous la réponse ?
Veuillez vous connecter et la partager.
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.
2Publications3Réponses
Gagne ta part de 1000 Sui
Gagne des points de réputation et obtiens des récompenses pour avoir aidé la communauté Sui à se développer.
Publications tendance