关于区块打包交易队列的排序,并不是完全按照交易gasprice高的排在前面的顺序!

如下链接:
https://platscan.test.platon.network/block-detail?height=2665000

具体看下图:

比如同种交易都是增加自有质押,最先被区块打包的是最下面一个地址,而该笔交易只支付了2.2LAT的手续费,上面有支付350多的。

个人猜测:
百思不得其解,直到看到了2665000区块的生产节点,
可能这笔2.2LAT的交易就是连接该节点的RPC接口发出的,所以无论它多少手续费,一定是第一个打包的!

1 个赞

:fearful:
我们排查一下问题

网络位置更接近吧,先到先服务吧

还有发现其他类似的问题吗

这个问题印象中出现了4次。手续费低,但是先打包的。

2660000区块也有

嗯嗯,谢谢,我让技术团队排查下。这个问题我暂时还没法给出解释。

1 个赞

请问这个交易是您本地发的吗?如果是本地节点发的交易打包区块的时候会优先于从网络上接收到的转发交易。

分析过程:
通过命令行查询区块交易,
var txs = platon.getBlock(2665000).transactions;
for (var i=0; i<txs.length; i++){
tx = platon.getTransaction(txs[i])
console.log("from: " + tx.from + ",gasPrice: " + tx.gasPrice)
};
发现绝大多数交易都是按gasprice倒序排列,只有前面1,2笔交易不对,
经过分析,这些交易的from地址都是出块节点bili的本地账户地址,会优先打包

【本地账户】
成为本地账户有两种方式:
1.启动节点时,指定参数:–txpool.locals
2.把钱包文件放到节点数据目录下的keystore子目录下面进行解锁转账过;

已确认bili节点用户通过sdk在节点进行过sendTransaction转账操作,此方式需要提前解锁钱包,
进而将账户变成本地账户,blli节点出块时,对应的本地账户的交易有优先被打包的机会。

1 个赞

不懂就问,“节点出块时,对应的本地账户的交易有优先被打包的机会”是合理的吗?

是的,矿工自己的交易有优先被打包的权利;这个也是参考以太坊优先打包交易的规则。

1 个赞