6个以太坊DApps的盈利途径

在这个文章系列的第一部分中,我们介绍了将你的以太坊DApps货币化的理论方法。 在这一部分,我们将会通过看一些代码示例,来展示如何在Solidity中实际实现它们。

提取资金

首先,你需要有一个能够允许将资金提取到所有者的地址的函数。 这很简单:

当合约调用这个函数时,此函数会将合约的余额转移到owner的地址(使用了非常流行的onlyOwner修饰符模式)。如果你不熟悉如何运用上述关键词,那么我建议你先去完成我们的cryptozombies课程,然后再继续阅读。

免责声明:以下所有示例都经过了简化,以说明如何实现所讨论的函数。 因为我们对商业逻辑做出了假设,所以在创建一套智能合约时我们没有采取任何严格的安全措施。 在推出产品之前,请对你的代码进行全面的安全审核!

1. 做Crowdsale/发布代币

以太坊官方网页(ethereum.org/crowdsale)对此进行了描述。 为了创建安全的crowdsale,建议使用Open Zeppelin创建的审核合约。

2. 高级功能/跳过过程

完整代码请看:https://ethfiddle.com/O3_2o-oqaZ

在这个例子中,用户可以支付1 ether以绕过winCount的升级要求。 然后,所有者会调用之前讨论的withdraw函数,提取资金。

请注意,以太的价格可能在未来急剧上涨(或下跌),这将改变你的高级功能的成本。 因此,在许多情况下,合理的做法是添加一个onlyOwner函数,使你可以在将来更改成本,否则你的应用程序可能会变得非常昂贵。 这也同样适用于后面所有的示例。

3. 收取一定比例的市场交易费用

在这个(非常简化)的例子中,当有人想要购买一个僵尸时,10%的价格会到你的钱包,其余的则被转移到僵尸的所有者手里。

完整合约请看:https://ethfiddle.com/MuApSyO3jx

为了节省一些gas成本,你可以跳过这个函数的第一行,而以太则会被留在合约的余额里。 通过使用我们之前描述的withdraw函数,你可以在稍后的时间里提取合约中所有的以太。

4. 订阅/会员

这里我们将会看一下实现订阅/会员商业模型的例子:

终身

基于时间

基于使用量

我们将创建一个合约,其中一些函数只能由被标记为符合条件的个人才能调用。

终身会员

这是一个简单的例子:创建一个布尔映射、一个检查布尔是否为真值的修饰符、以及一个允许用户付费成为会员的函数。

完整合约请看:https://ethfiddle.com/LgzLNtIIVF

另外,与其使用一个布尔来判断是否为会员,我们可以用一个unit8和不同的会员等级来给予更多的功能访问权:0级为免费用户、1级为银卡会员、2级为金卡会员,以此类推。然后onlySilver()可以检查会员等级是否>=1。

简单吧?我们继续。

基于时间的会员/订阅

这里,我们的商业模式将假设订阅价格为0.005 以太/天。

完整合约请看:https://ethfiddle.com/Dx1jQlgazK

在这种情况下,当一个用户调用renewSubscription函数时,如有必要,subscriptionExpiration将被初始化为now,然后增值用户支付的天数。onlyMember修饰符可以用来检查目前的时间是否已经过期。

基于使用量的会员/付费使用

在这里的商业模式包括了用户提前购买函数的调用,类似于你可以以固定的价格购买API调用。

在这个例子中,用户每以太可以购买1000次调用。 每次用户调用具有onlyIfEnoughCalls修饰符的函数时,在检查它们符合该调用的条件之后,availableCalls变量将递减。

完整合约请看:https://ethfiddle.com/rO0xD9nIl6

以上所有情况中,你只需将相应的only修饰符添加到任何函数中,然后该函数就只能由有权访问它的用户调用。

结论

在这个由两部分组成的系列文章中,我们讨论并实现了一些商业模式,你可以在目标是货币化或盈利的情况下应用于你的Dapp。

我想强调的是,这篇文章中给出的所有代码都是每个模型的一个非常基本的实现,你应该根据自己的具体需求进行调整。

下一步

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180311G06QL600?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券