我想创建一种树形类型的契约层次结构。把它想象成一个多层次的营销计划--最高层的人将得到X。对于他招募的每一个k人,他都同意给他们一个α*X/k的报酬.考虑到他们至少要招募更多的人参加同一类型的合同。
我希望节点是可转移的--这样某人就可以将任何与节点合同相关的支出出售给其他人,如果他们愿意的话(我假设所有智能合同都是这样的?)我是新来的)
你能告诉我如何实施这样的结构吗?
发布于 2020-07-22 22:20:53
您要寻找的是工厂合同存储模式,而不是“递归”智能契约。递归在这里不太有意义。
这样做的想法是,您有一个可以部署合同的合同。下面是一个部署CampaignFactory契约的Campaign契约的示例。那么,您想要做的是在每个新的竞选活动中添加一个链接列表功能。
您可以通过允许每一个额外的Campaign也具有CampaignFactory的功能来添加多层次的营销方面,还可以添加一个变量,比如指向原始创建者的address creator。
这将是相当容易发送传销资金‘向上’的链条。
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];
}
}https://ethereum.stackexchange.com/questions/85183
复制相似问题