@@ -613,18 +613,18 @@ After executing a transaction, it's necessary to have the effect of the substate
613
613
614
614
rule <k> (.K => #newAccount ACCT) ~> #finalizeStorage(ListItem(ACCT) _ACCTS) ... </k> [owise]
615
615
616
- syntax InternalOp ::= #finalizeTx ( Bool ) [symbol(#finalizeTx)]
616
+ syntax InternalOp ::= #finalizeTx ( Bool , Int ) [symbol(#finalizeTx)]
617
617
| #deleteAccounts ( List ) [symbol(#deleteAccounts)]
618
618
// ------------------------------------------------------------------------
619
- rule <k> #finalizeTx(true) => #finalizeStorage(Set2List(SetItem(MINER) |Set ACCTS)) ... </k>
619
+ rule <k> #finalizeTx(true, _ ) => #finalizeStorage(Set2List(SetItem(MINER) |Set ACCTS)) ... </k>
620
620
<selfDestruct> .Set </selfDestruct>
621
621
<coinbase> MINER </coinbase>
622
622
<touchedAccounts> ACCTS => .Set </touchedAccounts>
623
623
<accessedAccounts> _ => .Set </accessedAccounts>
624
624
<accessedStorage> _ => .Map </accessedStorage>
625
625
<createdAccounts> _ => .Set </createdAccounts>
626
626
627
- rule <k> #finalizeTx(false) ... </k>
627
+ rule <k> #finalizeTx(false, _ ) ... </k>
628
628
<useGas> true </useGas>
629
629
<schedule> SCHED </schedule>
630
630
<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
637
637
</message>
638
638
requires REFUND =/=Int 0
639
639
640
- rule <k> #finalizeTx(false => true) ... </k>
640
+ rule <k> #finalizeTx(false => true, GFLOOR ) ... </k>
641
641
<useGas> true </useGas>
642
642
<schedule> SCHED </schedule>
643
643
<baseFee> BFEE </baseFee>
644
644
<origin> ORG </origin>
645
645
<coinbase> MINER </coinbase>
646
646
<gas> GAVAIL </gas>
647
- <gasUsed> GUSED => GUSED +Gas GLIMIT -Gas GAVAIL </gasUsed>
647
+ <gasUsed> GUSED => GUSED +Gas maxInt( GLIMIT -Int GAVAIL, GFLOOR) </gasUsed>
648
648
<blobGasUsed> BLOB_GAS_USED => #if TXTYPE ==K Blob #then BLOB_GAS_USED +Int Ctotalblob(SCHED, size(TVH)) #else BLOB_GAS_USED #fi </blobGasUsed>
649
649
<gasPrice> GPRICE </gasPrice>
650
650
<refund> 0 </refund>
651
651
<account>
652
652
<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>
654
654
...
655
655
</account>
656
656
<account>
657
657
<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>
659
659
...
660
660
</account>
661
661
<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
668
668
</message>
669
669
requires ORG =/=Int MINER
670
670
671
- rule <k> #finalizeTx(false => true) ... </k>
671
+ rule <k> #finalizeTx(false => true, GFLOOR ) ... </k>
672
672
<useGas> true </useGas>
673
673
<schedule> SCHED </schedule>
674
674
<baseFee> BFEE </baseFee>
675
675
<origin> ACCT </origin>
676
676
<coinbase> ACCT </coinbase>
677
677
<gas> GAVAIL </gas>
678
- <gasUsed> GUSED => GUSED +Gas GLIMIT -Gas GAVAIL </gasUsed>
678
+ <gasUsed> GUSED => GUSED +Gas maxInt( GLIMIT -Int GAVAIL, GFLOOR) </gasUsed>
679
679
<blobGasUsed> BLOB_GAS_USED => #if TXTYPE ==K Blob #then BLOB_GAS_USED +Int Ctotalblob(SCHED, size(TVH)) #else BLOB_GAS_USED #fi </blobGasUsed>
680
680
<gasPrice> GPRICE </gasPrice>
681
681
<refund> 0 </refund>
682
682
<account>
683
683
<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>
685
685
...
686
686
</account>
687
687
<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
693
693
...
694
694
</message>
695
695
696
- rule <k> #finalizeTx(false => true) ... </k>
696
+ rule <k> #finalizeTx(false => true, _ ) ... </k>
697
697
<useGas> false </useGas>
698
698
<txPending> ListItem(MSGID:Int) REST => REST </txPending>
699
699
<message>
700
700
<msgID> MSGID </msgID>
701
701
...
702
702
</message>
703
703
704
- rule <k> (.K => #deleteAccounts(Set2List(ACCTS))) ~> #finalizeTx(true) ... </k>
704
+ rule <k> (.K => #deleteAccounts(Set2List(ACCTS))) ~> #finalizeTx(true,_ ) ... </k>
705
705
<selfDestruct> ACCTS => .Set </selfDestruct>
706
706
requires size(ACCTS) >Int 0
707
707
708
- rule <k> (.K => #newAccount MINER) ~> #finalizeTx(_) ... </k>
708
+ rule <k> (.K => #newAccount MINER) ~> #finalizeTx(_,_ ) ... </k>
709
709
<coinbase> MINER </coinbase> [owise]
710
710
711
711
rule <k> #deleteAccounts(ListItem(ACCT) ACCTS) => #deleteAccounts(ACCTS) ... </k>
0 commit comments