@@ -613,18 +613,18 @@ After executing a transaction, it's necessary to have the effect of the substate
613613
614614 rule <k> (.K => #newAccount ACCT) ~> #finalizeStorage(ListItem(ACCT) _ACCTS) ... </k> [owise]
615615
616- syntax InternalOp ::= #finalizeTx ( Bool ) [symbol(#finalizeTx)]
616+ syntax InternalOp ::= #finalizeTx ( Bool , Int ) [symbol(#finalizeTx)]
617617 | #deleteAccounts ( List ) [symbol(#deleteAccounts)]
618618 // ------------------------------------------------------------------------
619- rule <k> #finalizeTx(true) => #finalizeStorage(Set2List(SetItem(MINER) |Set ACCTS)) ... </k>
619+ rule <k> #finalizeTx(true, _ ) => #finalizeStorage(Set2List(SetItem(MINER) |Set ACCTS)) ... </k>
620620 <selfDestruct> .Set </selfDestruct>
621621 <coinbase> MINER </coinbase>
622622 <touchedAccounts> ACCTS => .Set </touchedAccounts>
623623 <accessedAccounts> _ => .Set </accessedAccounts>
624624 <accessedStorage> _ => .Map </accessedStorage>
625625 <createdAccounts> _ => .Set </createdAccounts>
626626
627- rule <k> #finalizeTx(false) ... </k>
627+ rule <k> #finalizeTx(false, _ ) ... </k>
628628 <useGas> true </useGas>
629629 <schedule> SCHED </schedule>
630630 <gas> GAVAIL => G*(GAVAIL, GLIMIT, REFUND, SCHED) </gas>
@@ -637,25 +637,25 @@ After executing a transaction, it's necessary to have the effect of the substate
637637 </message>
638638 requires REFUND =/=Int 0
639639
640- rule <k> #finalizeTx(false => true) ... </k>
640+ rule <k> #finalizeTx(false => true, GFLOOR ) ... </k>
641641 <useGas> true </useGas>
642642 <schedule> SCHED </schedule>
643643 <baseFee> BFEE </baseFee>
644644 <origin> ORG </origin>
645645 <coinbase> MINER </coinbase>
646646 <gas> GAVAIL </gas>
647- <gasUsed> GUSED => GUSED +Gas GLIMIT -Gas GAVAIL </gasUsed>
647+ <gasUsed> GUSED => GUSED +Gas maxInt( GLIMIT -Int GAVAIL, GFLOOR) </gasUsed>
648648 <blobGasUsed> BLOB_GAS_USED => #if TXTYPE ==K Blob #then BLOB_GAS_USED +Int Ctotalblob(SCHED, size(TVH)) #else BLOB_GAS_USED #fi </blobGasUsed>
649649 <gasPrice> GPRICE </gasPrice>
650650 <refund> 0 </refund>
651651 <account>
652652 <acctID> ORG </acctID>
653- <balance> ORGBAL => ORGBAL +Int GAVAIL *Int GPRICE </balance>
653+ <balance> ORGBAL => ORGBAL +Int minInt( GAVAIL, GLIMIT -Int GFLOOR) *Int GPRICE </balance>
654654 ...
655655 </account>
656656 <account>
657657 <acctID> MINER </acctID>
658- <balance> MINBAL => MINBAL +Int (GLIMIT -Int GAVAIL) *Int (GPRICE -Int BFEE) </balance>
658+ <balance> MINBAL => MINBAL +Int maxInt (GLIMIT -Int GAVAIL, GFLOOR ) *Int (GPRICE -Int BFEE) </balance>
659659 ...
660660 </account>
661661 <txPending> ListItem(MSGID:Int) REST => REST </txPending>
@@ -668,20 +668,20 @@ After executing a transaction, it's necessary to have the effect of the substate
668668 </message>
669669 requires ORG =/=Int MINER
670670
671- rule <k> #finalizeTx(false => true) ... </k>
671+ rule <k> #finalizeTx(false => true, GFLOOR ) ... </k>
672672 <useGas> true </useGas>
673673 <schedule> SCHED </schedule>
674674 <baseFee> BFEE </baseFee>
675675 <origin> ACCT </origin>
676676 <coinbase> ACCT </coinbase>
677677 <gas> GAVAIL </gas>
678- <gasUsed> GUSED => GUSED +Gas GLIMIT -Gas GAVAIL </gasUsed>
678+ <gasUsed> GUSED => GUSED +Gas maxInt( GLIMIT -Int GAVAIL, GFLOOR) </gasUsed>
679679 <blobGasUsed> BLOB_GAS_USED => #if TXTYPE ==K Blob #then BLOB_GAS_USED +Int Ctotalblob(SCHED, size(TVH)) #else BLOB_GAS_USED #fi </blobGasUsed>
680680 <gasPrice> GPRICE </gasPrice>
681681 <refund> 0 </refund>
682682 <account>
683683 <acctID> ACCT </acctID>
684- <balance> BAL => BAL +Int GLIMIT *Int GPRICE -Int (GLIMIT -Int GAVAIL) *Int BFEE </balance>
684+ <balance> BAL => BAL +Int GLIMIT *Int GPRICE -Int maxInt (GLIMIT -Int GAVAIL, GFLOOR ) *Int BFEE </balance>
685685 ...
686686 </account>
687687 <txPending> ListItem(MSGID:Int) REST => REST </txPending>
@@ -693,19 +693,19 @@ After executing a transaction, it's necessary to have the effect of the substate
693693 ...
694694 </message>
695695
696- rule <k> #finalizeTx(false => true) ... </k>
696+ rule <k> #finalizeTx(false => true, _ ) ... </k>
697697 <useGas> false </useGas>
698698 <txPending> ListItem(MSGID:Int) REST => REST </txPending>
699699 <message>
700700 <msgID> MSGID </msgID>
701701 ...
702702 </message>
703703
704- rule <k> (.K => #deleteAccounts(Set2List(ACCTS))) ~> #finalizeTx(true) ... </k>
704+ rule <k> (.K => #deleteAccounts(Set2List(ACCTS))) ~> #finalizeTx(true,_ ) ... </k>
705705 <selfDestruct> ACCTS => .Set </selfDestruct>
706706 requires size(ACCTS) >Int 0
707707
708- rule <k> (.K => #newAccount MINER) ~> #finalizeTx(_) ... </k>
708+ rule <k> (.K => #newAccount MINER) ~> #finalizeTx(_,_ ) ... </k>
709709 <coinbase> MINER </coinbase> [owise]
710710
711711 rule <k> #deleteAccounts(ListItem(ACCT) ACCTS) => #deleteAccounts(ACCTS) ... </k>
0 commit comments