-
Notifications
You must be signed in to change notification settings - Fork 28
Open
Description
Line 761 in af3670b
| gasUsed, err := app.gasHandler(runCtx, tx.ITxs[0].GetGasPayer()) |
一个transaction中含多条iTx时,当前gas策略是,先执行所有交易,再扣gas,且只扣第一个iTx的gas
存在问题:
假如扣gas失败,则整个交易回滚,之前的计算资源被浪费
应用可以将耗费gas较大的iTx放在后面,规避gas
方案:
扣gas失败的iTx及其以前的iTx执行结果回滚,之前的iTx扣gas,失败的iTx及其之后的iTx不被扣gas。缺点,有失公平
iTx增加参数maxGas,执行时先扣maxGas,执行后将maxGas - gasUsed返还
Metadata
Metadata
Assignees
Labels
No labels