Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于智能合约相关手续费定价讨论 #5

Open
secp256 opened this issue Dec 26, 2018 · 13 comments
Open

关于智能合约相关手续费定价讨论 #5

secp256 opened this issue Dec 26, 2018 · 13 comments

Comments

@secp256
Copy link
Contributor

secp256 commented Dec 26, 2018

有不少开发者反映,主网智能合约相关的手续费偏高,欢迎大家在这里讨论,一起来商定一个合理的定价。

目前的智能合约手续费情况:

  1. 创建合约:
基本手续费:1 GXC
内存价格:0.5 GXC / KB
  1. 调用合约
基本手续费:0.1 GXC
内存价格:0.3 GXC / KB
  1. 更新合约
基本手续费:1 GXC
内存价格:1 GXC / KB

其中创建合约和更新合约属于低频次操作,以合约代码50KB来算,
创建合约手续费: 1 + 50*0.5 = 26 GXC
更新合约手续费:1 + 50 *1 = 51 GXC
设置合理的手续费价格,一方面可以让系统有更多的手续费收入,另一方面是设置门槛,限制链上资源的过度使用。

为了节省手续费,开发者可以:

  1. 发布合约前,应该在测试网进行充分的测试,尽量避免频繁的更新合约。
  2. 将帐户升级为终身会员,通过手续费返现的方式节省成本
@cnjsstong
Copy link

如果要鼓励更多开发者使用 GXChain 开发合约,为用户提供服务,我认为应该降低调用合约的手续费。目前一次调用合约按照 0.1 GXC * 0.52 USD / GXC = 0.052 USD 的成本来说的话,太高了,比 Ethereum 普通情况下还要高不少。建议缩减到:

调用合约 基本手续费:0.01 GXC

@secp256
Copy link
Contributor Author

secp256 commented Dec 26, 2018

个人建议调整方案:
以公信节点32 GB内存来计算,如果每KB内存定价0.2 GXC,则占满整个32GB内存,需要消耗手续费671.0886万 GXC。如果32GB内存跑满,可以考虑对公信节点扩容到64GB内存。

  1. 智能合约创建手续费(创建智能合约,大约需要8 GXC):
基本手续费: 0.1 GXC
内存价格:0.2 GXC / KB
  1. 智能合约调用手续费:
基本手续费:0.01 GXC
内存价格:0.2 GXC / KB
  1. 智能合约更新手续费:
基本手续费:0.1 GXC
内存价格:0.2 GXC / KB

@kilmas
Copy link

kilmas commented Dec 26, 2018

现在价格相对也合理。但是更新智能合约的内存价格如果能做到按照合约内存的增加再增加较好。譬如原合约50KB,更新合约到60KB,内存价格就只是60-50 = 10 * 0.2 = 5,如果更新合约后,所需内存不增加,则不需要内存价格。这个规则和eos的更新合约的需要增加抵押内存相似。

@cnjsstong
Copy link

@kilmas 赞同。

我认为,整体的思路是,可以考虑提高智能合约创建手续费,但是降低调用和更新手续费。目前阶段 GXChain 更需要的应该是更加繁荣的 DApp 生态,而不是在现在的使用量下靠高额手续费支撑币价。

@kilmas
Copy link

kilmas commented Dec 26, 2018

个人建议调整方案:
以公信节点32 GB内存来计算,如果每KB内存定价0.2 GXC,则占满整个32GB内存,需要消耗手续费671.0886万 GXC。如果32GB内存跑满,可以考虑对公信节点扩容到64GB内存。

  1. 智能合约创建手续费(创建智能合约,大约需要8 GXC):
基本手续费: 0.1 GXC
内存价格:0.2 GXC / KB
  1. 智能合约调用手续费:
基本手续费:0.01 GXC
内存价格:0.2 GXC / KB
  1. 智能合约更新手续费:
基本手续费:0.1 GXC
内存价格:0.2 GXC / KB

这个方案降低费用合理。一个不同点智能合约调用手续费 的 内存价格 可以去掉

@secp256
Copy link
Contributor Author

secp256 commented Dec 27, 2018

这个方案降低费用合理。一个不同点智能合约调用手续费 的 内存价格 可以去掉

@kilmas
你的意思是:智能合约调用,只收取基本手续费,内存免费吗?
如果这样做,会有内存滥用的风险,系统内存将很快被耗尽。

@lanhaoxiang
Copy link
Member

lanhaoxiang commented Dec 27, 2018

以下是之前做的一个分析,供大伙讨论和参考(EOS的整体费率是波动的,和文中内容会不一致,但其实已经把EOS的CPU租赁费用排除了进行对比的)

GXChain和EOS经济性对比

平台\维度 CPU 内存 网络
EOS 0.00818 EOS/ms 0.0993EOS/KB 可忽略
GXChain 0 0.3GXC/KB + 0.001GXC 0

假设条件:

  1. 100万次调用/日
  2. 每次调用消耗内存:25 B
  3. 平均耗时:1.5ms

GXChain网络

单次调用手续费:

0.001 + 25 / 1024 * 0.3 = 0.00832421875 GXC 
≈ 0.002190583882 EOS

100万次调用 = 2,190.5838815789 EOS

按照目前市场汇率EOS/GXC≈3.8

EOS网络

EOS的费用分为内存和CPU费用,其中内存为不可回收费用,CPU只要抵押每日足够的使用量,可回收

单次调用内存手续费

25/1024*0.0993 = 0.002424316406 EOS

100万次调用内存手续费 = 2,424.316406 EOS

单次调用CPU手续费

1.5 * 0.00818 = 0.01227 EOS

100万次调用需要抵押:12,270 EOS

结论

相同的逻辑,相同的内存消耗,GXChain上调用会比EOS经济;当市场汇率变化时,GXChain可以通过理事会决议调整全局参数费率,从而保持GXChain上智能合约使用的经济性

@PoyaKu
Copy link

PoyaKu commented Dec 28, 2018

个人建议调整方案:
以公信节点32 GB内存来计算,如果每KB内存定价0.2 GXC,则占满整个32GB内存,需要消耗手续费671.0886万 GXC。如果32GB内存跑满,可以考虑对公信节点扩容到64GB内存。

  1. 智能合约创建手续费(创建智能合约,大约需要8 GXC):
基本手续费: 0.1 GXC
内存价格:0.2 GXC / KB
  1. 智能合约调用手续费:
基本手续费:0.01 GXC
内存价格:0.2 GXC / KB
  1. 智能合约更新手续费:
基本手续费:0.1 GXC
内存价格:0.2 GXC / KB

这个方案我觉得比较合理,公信链前期发展还是应鼓励更多开发者来参与合约开发,所以适当降低合约创建手续费是比较好的方式。同时合约调用手续费降低也能比较好地降低用户参与门槛。

@secp256
Copy link
Contributor Author

secp256 commented Dec 29, 2018

智能合约调用手续费分配方案:
用户调用智能合约的手续费,返还给开发者、BP和帐户推荐人。(分配比例可动态调整)

其中开发者返还 20% (暂存系统帐户,内存释放后返还), 帐户推荐人返还20%, 剩余的60%归网络(最终奖励给BP)。

60%最终奖励给BP,用于后续的BP内存扩容等计划。

@chenluyong
Copy link
Contributor

智能合约调用手续费分配方案:
用户调用智能合约的手续费,返还给开发者、BP和帐户推荐人。(分配比例可动态调整)

其中开发者返还 20% (暂存系统帐户,内存释放后返还), 帐户推荐人返还20%, 剩余的60%归网络(最终奖励给BP)。

60%最终奖励给BP,用于后续的BP内存扩容等计划。

这是现在的智能合约调用手续费分配方案吗?

@secp256
Copy link
Contributor Author

secp256 commented Dec 29, 2018

这是现在的智能合约调用手续费分配方案吗?

@chenluyong

这个方案还需要讨论,还没确定

@kilmas
Copy link

kilmas commented Dec 29, 2018

智能合约调用手续费分配方案:
用户调用智能合约的手续费,返还给开发者、BP和帐户推荐人。(分配比例可动态调整)

其中开发者返还 20% (暂存系统帐户,内存释放后返还), 帐户推荐人返还20%, 剩余的60%归网络(最终奖励给BP)。

60%最终奖励给BP,用于后续的BP内存扩容等计划。

其实60%,开发者的数量少,这点bp 一般是看不起的,BP主要的收入在出块。不如直接返回更多的给开发者。60%返回给开发者,20%给BP

@lanhaoxiang
Copy link
Member

lanhaoxiang commented Jan 7, 2019

观点:开发者或者节点都不应该从用户的交易手续费上去获取收益,GXChain应该实现资源的合理利用,所以我认为智能合约的资源使用应该是最终免费的:

    1. 网络和CPU产生一笔基本的锁定费用(base_fee),这笔费用会在一段时间后(contract_resource_unlock_timestamp) 返还,这样可以抑制资源滥用和短时间内发起大量垃圾交易的问题
    1. 内存的使用可以由开发者来决定是合约本身还是用户来支付,在内存释放后会返还给支付这笔费用的账户

BP的收益,应该考虑从生态建设上获取,也可以考虑去基金会申请项目的研发费用,这个我们可以在新的话题中另行讨论。

因为很重要的一点:如果GXChain智能合约使用有手续费,那么它不够经济,用户在使用的时候会有对摩擦成本的顾虑,从而丧失信心,用户是生态的血液,也是开发者和BP赖以生存的重要依靠。

开发者应该通过提供优秀的应用和服务来赚取收益,而BP节点应该通过参与生态的建设来获得收益,而不是把赚取收益的矛头指向用户的手续费。

关于推荐人奖励:是否把推荐奖励机制细化到dapp中更加合理,因为用户更多是沉淀到一个或几个dapp中,这些优秀dapp的推广者应该享受更多的收益,而不是盲目拉取用户。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants