Vyper.

帖子

分享您的知识。

0x8744...6532.
Apr 20, 2023
专家问答

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
分享
评论
.

答案

1
0x8744...6532.
Apr 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:

  1. Deploy the contract
  2. Create a copy of the contract
0
评论
.

你知道答案吗?

请登录并分享。

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.

2帖子3答案
Sui.X.Peera.

赚取你的 1000 Sui 份额

获取声誉积分,并因帮助 Sui 社区成长而获得奖励。

我们使用 cookie 确保您在我们的网站上获得最佳体验。
更多信息