首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建一个递归的智能契约--它有可能吗?

构建一个递归的智能契约--它有可能吗?
EN

Ethereum用户
提问于 2020-07-22 04:46:08
回答 1查看 417关注 0票数 1

我想创建一种树形类型的契约层次结构。把它想象成一个多层次的营销计划--最高层的人将得到X。对于他招募的每一个k人,他都同意给他们一个α*X/k的报酬.考虑到他们至少要招募更多的人参加同一类型的合同。

我希望节点是可转移的--这样某人就可以将任何与节点合同相关的支出出售给其他人,如果他们愿意的话(我假设所有智能合同都是这样的?)我是新来的)

你能告诉我如何实施这样的结构吗?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2020-07-22 22:20:53

您要寻找的是工厂合同存储模式,而不是“递归”智能契约。递归在这里不太有意义。

这样做的想法是,您有一个可以部署合同的合同。下面是一个部署CampaignFactory契约的Campaign契约的示例。那么,您想要做的是在每个新的竞选活动中添加一个链接列表功能。

您可以通过允许每一个额外的Campaign也具有CampaignFactory的功能来添加多层次的营销方面,还可以添加一个变量,比如指向原始创建者的address creator

这将是相当容易发送传销资金‘向上’的链条。

代码语言:javascript
复制
contract CampaignFactory {

    Campaign[] campaigns;
    address creator;
    mapping(address => Campaign[]) campaignsByOwner;

    function createCampaign(uint min_contrib) public {
        Campaign newCampaign = new Campaign(min_contrib, msg.sender);
        campaignsByOwner[msg.sender].push(newCampaign);
        campaigns.push(newCampaign);
    }

    function getAllCampaigns() public view returns (Campaign[] memory) {
        return campaigns;
    }

    function getCampaignByAddress(address creator) public view returns (Campaign[] memory) {
        return campaignsByOwner[creator];
    }
}
票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/85183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档