我们已经注意到,在过去的几天里,网络上有很多“垃圾”交易。这种行为造成了很多问题,包括区块账本的大小迅速增长,内存较小的节点无法同步区块和挖矿等。
这种“攻击”的根本原因是交易(txn)费用为零,目前NKN的txn收费机制是去中心化的,由自由市场决定的,类似于以太坊:当矿工打包一个区块的时候,他会先打包交易费高的(gas fee)的交易,因为矿工将一定数量的交易(大小)放入一个块中,所以交易费用将由发送交易的人数动态决定。当有很多人在链上发送交易时,这种机制可以很好地工作,但是NKN还处于年轻发展阶段,目前交易还不是很多。因此,大多数区块只包含少量交易,市场决定了那时交易费用为零。显然,有人利用了这点,恶意向网络发送垃圾邮件。
许多人要求我们(开发团队)“解决”这个问题。从技术上讲,我们可以在代码中设置最小的交易费用,并一次性停止攻击,但之后攻击就会变得纯粹集中,我们并不希望这样。
但这并不意味着没有真正的去中心化解决方案。现在有一种方法可以解决这个问题,并且同时保持完全去中心化和自由市场决定价格的机制,但这需每一个矿工做相应行动,以下有详细信息:
在主网1.0.6中,我们引入了一个更加完整的机制,这样每个矿工都可以参与决定交易费用可以接受多少,尤其是您可以在config.json中设置两个相关参数,可以很大程度帮助解决当前的问题:
-
MinTxnFee: 这个参数控制着节点接受的最小交易(txn)费用. 该参数的单位为10^ (-8)NKN,即将其设置为1亿表示1 NKN。 我们建议先将这个值设置为某个适中的数值 (例如,10000000,相当于每txn 0.1 NKN) 然后根据效果进行调整。
-
NumLowFeeTxnPerBlock : 当您的节点是区块提议者时,该参数控制着最多有多少低费用(小于MinTxnFee) 交易将被放入一个块中。请务必将这个值设置为一个小而正的数值(例如4),这样就可以大大减少攻击,而现有的优质的dapps(例如d-chat)仍然可以免费运行,而一键挖矿教程仍然可以工作。
默认情况下,这两个值在v1.0.6 beta之前都是零,这意味着零费用交易仍然可以免费发送。 在1.0.6版里,我们已经修改了缺省值,已经可以对付发垃圾交易。因此每个节点都需要马上升级到v1.0.6 beta版,节省每个人的磁盘空间。
您需要将节点升级到主网v1.0.6-beta,其他没有任何操作,应为最新对付垃圾交易的缺省值都已经编译到代码里了。你不需要继续阅读对后一段。
特殊用户配置
如果您一定想要配置与默认值不同的值的,并且理解这样做的理由的话,可以在config.json中设置这两个参数。如果您不熟悉json格式,这里有一个示例,您可以复制并粘贴到config.json中。(以下是默认值,请记住将它们更改为您想要的值):
"MinTxnFee": 10000000,
"NumLowFeeTxnPerBlock": 4,
您可以将这两行放在受益人地址行之后,config.json配置开头会像下面这个样子:
{
"BeneficiaryAddr": "XXXXXXX",
"MinTxnFee": 10000000,
"NumLowFeeTxnPerBlock": 4,
...