From 3b7534b3462e20b235a6df40c8fc20d4b3487947 Mon Sep 17 00:00:00 2001 From: fikgol Date: Thu, 29 Sep 2022 19:52:23 +0800 Subject: [PATCH] Fix acount.txn_epilogue_v2 incompatible --- build/StarcoinFramework/BuildInfo.yaml | 2 +- .../bytecode_modules/Account.mv | Bin 6929 -> 7021 bytes .../bytecode_modules/TransactionManager.mv | Bin 1603 -> 1603 bytes build/StarcoinFramework/docs/Account.md | 102 ++++++++++++++---- .../docs/TransactionManager.md | 2 +- .../source_maps/Account.mvsm | Bin 53838 -> 54759 bytes .../source_maps/TransactionManager.mvsm | Bin 9981 -> 9981 bytes .../account/txn_prologue_and_epilogue.move | 2 +- sources/Account.move | 42 +++++++- sources/TransactionManager.move | 2 +- 10 files changed, 126 insertions(+), 26 deletions(-) diff --git a/build/StarcoinFramework/BuildInfo.yaml b/build/StarcoinFramework/BuildInfo.yaml index fb98db1e..781e922a 100644 --- a/build/StarcoinFramework/BuildInfo.yaml +++ b/build/StarcoinFramework/BuildInfo.yaml @@ -327,7 +327,7 @@ compiled_package_info: ? address: "0x00000000000000000000000000000001" name: YieldFarmingV2 : StarcoinFramework - source_digest: BA11C8B16393EE8048481F812F0038A5D20D703FD7F7B2B9BD5F49840B6703E1 + source_digest: F1E05061776D5ED1B4717B879662E684E66FDC81A2B9B99AAF4A964F4C42E335 build_flags: dev_mode: false test_mode: false diff --git a/build/StarcoinFramework/bytecode_modules/Account.mv b/build/StarcoinFramework/bytecode_modules/Account.mv index 53e98f1694faba3b77cf5f589e308f95bcbaf3e2..a8e926dfb8641dd6b7b15887e5c3dc11252abd14 100644 GIT binary patch delta 1494 zcmX|BS#uOs6u#%)+soYBGu=J(EQy&gA!Q~+xEa6?5ED4M3$R>(| z3!;KxY_!TMeGrRRDT^v!e6h+Z{s4bKeXy)j9(=Z}^4w~_Ane~(Scai;LyJtRX|C);5i#I_&>EO;k9e0D| z^-6o{y9#yhR~AP1%R?5i6BZC+9QonF3^V~a*;ndDoLQP9q|u|z*;h2~U#9WEazy7s zF9*&q778SB2~6PfG61pPTxkMv)G8DaR}z#sZ*`;TybU_#AoKw@uC4|!`8$|sHwP6E zdJWbw;Hh_E6cx)2>%#R$@l~k zSp6ob%|MJ>kk|sI{V9xNl64yaneRj<_h>uc)O?OuI& zd%((*bh5CcHpzF^cGY&*_Lht4wc1QD<29;{HH}K6zcJhxTdHbmRMp3psabC}s4C{F z`PzsYDIYEms$;5EMGNenWton_1btZMe_Nh={_?5W`7_5(oIY}4e)i(3hi%SD-aKf# zK&{1s&Pfk!XI`UqSo&Zmk80${G?EEMDZGyJ!Eu>_1mTpO;Fx<-P=m5lnq!~VXr9q1 zObTZWOM^}6S>v3b2?}o*LVF~I^WbPJNs}*Rm}2E9DVbD*8NSJY`B>q?rI3U3_B~6nsOY?ZuV1!X)Q9c}VxZpho@~CSGE+K7) zIod)9z$;(Cv?mnD~mtkCV`>XiLxwQ_+@N5o7d-H9rhe{zYvaC_`=fZ*`@JV*DqUHG0(Vct+r+t)Po|~%@ z>4v^PR|Sy_*Eo)J!YW-GiI#ABFjkzr23k^p{}Qt;=^rVfi37Wqug@KDJV!XnU&3-m zr)2(=e^fvRTOu8>lKynb=+#c)cqHgxz0bVSH!UyY=)bg-nuky$4DlKgLUyrfO~4l8 z-e-;DaqqUUh3I0(pT`76xm3`_E^3d5Y(b^=bg-u7;$J!xw+@CrDJvVUq{H|n1SW}> zq$7CmI#R({IJleQmk1B;1$PCl#f~XgAUmiMTt#gNkTe{^Lx*sHj>eRo#dr~M1CYg^ R?wKq3(>?pSb(||K^*=Hc);<6L delta 1419 zcmX|BTXR%J5T2fybJ>~M%h{alW<#>sgkm=!!wS0VNwOiyCfq`@Bm|>|ED*v?BZ#OV zDsH@@f)_kuY3Ykr`JgY9#V??&(z1#wdGJLac(*8jfN%C30_Wk|-tMoz?w;v${;giC zPJGvOPjW&?0!W_b53qB8bAH=e1?#qbmpMO)du{IZe9HbI|1A}_3Rghh?&a!E?_X{4 zA1nF9Zxx#Sy>e~hh&<{LH|78#)`_2QG@(@jP8R#KgfurA^Ux-PhaWL`WHX|Ac?$>5 zU+L~9vGZU9mlptt`|4I3h}yCZfQySUO4Ms5G}Y^1QkLLx;MN;e0GnUJMEA{M4TQGF z81Td@jH7`47BEHSrj8K0GB z>1_A@`Yb_ctf_KhDizb(*)9+$2z^N6=-N0#_X~=p2_Gxbc$)`6+{BhEWR7 z;vDdtOhAlq%2qh$J};<6*=fUZ<2{Feq#aXD!EoOX*qbML}Z}&RN2EB!!ni87ofX z4`rBU<*@2qg&pB9-X(Z69834Wu5c-R1}4Kh>C63(r34B50Wv~@c10!eCO3fs2}xVh zGzl`a18)?pC&E@+M=+_l;F~Pu(WE1|gtQxEX^s$p0VxP(GRcyzfS?_-dC);SqgePy zTXDGN8FfVk^^yf9oS3(-B%u5xRk^~&z+ZS&0`@PXI8(*R5 zQ8B{`SNt-}h2QuAJQe=wf2|fuQ8Gn57+!3j!XbZcAB0i}nJ&b9rZ2PiKE>#-U(-*c z{(NQx$zNs)odY64Qqq6Wm?S}kmcfh|-pN!EoooRX!v1W(J)McVn9q)98bv__2%7Dv zC`ULI!36gXhc~hp;7C~Nn6AytO03rpC-5v~`ggo@))1tL*oX~*@BmI7X28LQwe z2i;2G6ECuYqr8RiUPl$@?91uwa*fDj;Cah65b4$J)Nc2 zQB(*5Jo1>3MRw2-u&Joq!`4dFtt(t1ifrXUOi+|d_(gW!cv8p~R2ok&YdJ~$OSebO zf+g|ToJ_Edj^I}fm?Wt<9mP8~kt)W5?Kz4c7aZ&%cPp(&j=At|XII~NWFII*+lAL! VBeacquires Account, Balance { - txn_epilogue_v2<TokenType>(account, txn_sender, txn_sequence_number, Vector::empty(), txn_gas_price, txn_max_gas_units, gas_units_remaining,1,1) + txn_epilogue_v3<TokenType>(account, txn_sender, txn_sequence_number, Vector::empty(), txn_gas_price, txn_max_gas_units, gas_units_remaining,1,1) } @@ -3388,7 +3389,7 @@ The epilogue is invoked at the end of transactions. It collects gas and bumps the sequence number -
public fun txn_epilogue_v2<TokenType: store>(account: &signer, txn_sender: address, txn_sequence_number: u64, txn_authentication_key_preimage: vector<u8>, txn_gas_price: u64, txn_max_gas_units: u64, gas_units_remaining: u64, stc_price: u128, stc_price_scaling: u128)
+
public fun txn_epilogue_v2<TokenType: store>(account: &signer, txn_sender: address, txn_sequence_number: u64, txn_authentication_key_preimage: vector<u8>, txn_gas_price: u64, txn_max_gas_units: u64, gas_units_remaining: u64)
 
@@ -3405,6 +3406,85 @@ It collects gas and bumps the sequence number txn_gas_price: u64, txn_max_gas_units: u64, gas_units_remaining: u64, +) acquires Account, Balance { + txn_epilogue_v3<TokenType>( + account, + txn_sender, + txn_sequence_number, + txn_authentication_key_preimage, + txn_gas_price, + txn_max_gas_units, + gas_units_remaining,1,1) +} +
+ + + + + +
+Specification + + + +
pragma verify = false;
+aborts_if Signer::address_of(account) != CoreAddresses::GENESIS_ADDRESS();
+aborts_if !exists<Account>(txn_sender);
+aborts_if !exists<Balance<TokenType>>(txn_sender);
+aborts_if txn_max_gas_units < gas_units_remaining;
+let transaction_fee_amount = txn_gas_price * (txn_max_gas_units - gas_units_remaining);
+aborts_if transaction_fee_amount > max_u128();
+aborts_if global<Balance<TokenType>>(txn_sender).token.value < transaction_fee_amount;
+aborts_if txn_sequence_number + 1 > max_u64();
+aborts_if txn_gas_price * (txn_max_gas_units - gas_units_remaining) > 0 &&
+          global<Balance<TokenType>>(txn_sender).token.value  < txn_gas_price * (txn_max_gas_units - gas_units_remaining);
+aborts_if txn_gas_price * (txn_max_gas_units - gas_units_remaining) > 0 &&
+          !exists<TransactionFee::TransactionFee<TokenType>>(CoreAddresses::GENESIS_ADDRESS());
+aborts_if txn_gas_price * (txn_max_gas_units - gas_units_remaining) > 0 &&
+          global<TransactionFee::TransactionFee<TokenType>>(CoreAddresses::GENESIS_ADDRESS()).fee.value + txn_gas_price * (txn_max_gas_units - gas_units_remaining) > max_u128();
+
+ + + + +
pragma verify = false;
+aborts_if Signer::address_of(account) != CoreAddresses::GENESIS_ADDRESS();
+aborts_if !exists<Account>(txn_sender);
+aborts_if !exists<Balance<TokenType>>(txn_sender);
+aborts_if txn_sequence_number + 1 > max_u64();
+aborts_if !exists<Balance<TokenType>>(txn_sender);
+aborts_if txn_max_gas_units < gas_units_remaining;
+
+ + + +
+ + + +## Function `txn_epilogue_v3` + +The epilogue is invoked at the end of transactions. +It collects gas and bumps the sequence number + + +
public fun txn_epilogue_v3<TokenType: store>(account: &signer, txn_sender: address, txn_sequence_number: u64, txn_authentication_key_preimage: vector<u8>, txn_gas_price: u64, txn_max_gas_units: u64, gas_units_remaining: u64, stc_price: u128, stc_price_scaling: u128)
+
+ + + +
+Implementation + + +
public fun txn_epilogue_v3<TokenType: store>(
+    account: &signer,
+    txn_sender: address,
+    txn_sequence_number: u64,
+    txn_authentication_key_preimage: vector<u8>,
+    txn_gas_price: u64,
+    txn_max_gas_units: u64,
+    gas_units_remaining: u64,
     stc_price: u128,
     stc_price_scaling: u128,
 ) acquires Account, Balance {
@@ -3448,24 +3528,6 @@ It collects gas and bumps the sequence number
 
 
 
-
- -
-Specification - - - -
pragma verify = false;
-aborts_if Signer::address_of(account) != CoreAddresses::GENESIS_ADDRESS();
-aborts_if !exists<Account>(txn_sender);
-aborts_if !exists<Balance<TokenType>>(txn_sender);
-aborts_if txn_sequence_number + 1 > max_u64();
-aborts_if !exists<Balance<TokenType>>(txn_sender);
-aborts_if txn_max_gas_units < gas_units_remaining;
-
- - -
diff --git a/build/StarcoinFramework/docs/TransactionManager.md b/build/StarcoinFramework/docs/TransactionManager.md index 7ce7041c..615b3f98 100644 --- a/build/StarcoinFramework/docs/TransactionManager.md +++ b/build/StarcoinFramework/docs/TransactionManager.md @@ -338,7 +338,7 @@ It collects gas and bumps the sequence number }else{ (1,1) }; - Account::txn_epilogue_v2<TokenType>( + Account::txn_epilogue_v3<TokenType>( &account, txn_sender, txn_sequence_number, diff --git a/build/StarcoinFramework/source_maps/Account.mvsm b/build/StarcoinFramework/source_maps/Account.mvsm index 2934e8602e579a78a28b0180a40e64870b34c1bc..68f1d25c3a4d06fb14e79cdb3815d9a19af71f01 100644 GIT binary patch literal 54759 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 literal 53838 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

cm1*>_ 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 P^wiArH|hV9Bh7yR64-9w diff --git a/build/StarcoinFramework/source_maps/TransactionManager.mvsm b/build/StarcoinFramework/source_maps/TransactionManager.mvsm index 3f9fd55764765ac316aa732e30de29aeb547e19c..12423b8a096eda3a093bddd6877e3e1308793242 100644 GIT binary patch literal 9981 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 + Account::txn_epilogue_v3( &account, txn_sender, txn_sequence_number, diff --git a/sources/Account.move b/sources/Account.move index 9c5d1cbe..5570fa89 100644 --- a/sources/Account.move +++ b/sources/Account.move @@ -1083,7 +1083,7 @@ module Account { txn_max_gas_units: u64, gas_units_remaining: u64, ) acquires Account, Balance { - txn_epilogue_v2(account, txn_sender, txn_sequence_number, Vector::empty(), txn_gas_price, txn_max_gas_units, gas_units_remaining,1,1) + txn_epilogue_v3(account, txn_sender, txn_sequence_number, Vector::empty(), txn_gas_price, txn_max_gas_units, gas_units_remaining,1,1) } spec txn_epilogue { @@ -1102,7 +1102,6 @@ module Account { transaction_fee_token = if (transaction_fee_token == 0 && transaction_fee_stc > 0 ) { 1 } else { transaction_fee_token}; (transaction_fee_stc, transaction_fee_token) } - /// The epilogue is invoked at the end of transactions. /// It collects gas and bumps the sequence number public fun txn_epilogue_v2( @@ -1113,6 +1112,45 @@ module Account { txn_gas_price: u64, txn_max_gas_units: u64, gas_units_remaining: u64, + ) acquires Account, Balance { + txn_epilogue_v3( + account, + txn_sender, + txn_sequence_number, + txn_authentication_key_preimage, + txn_gas_price, + txn_max_gas_units, + gas_units_remaining,1,1) + } + + spec txn_epilogue_v2 { + pragma verify = false; // Todo: fix me, cost too much time + aborts_if Signer::address_of(account) != CoreAddresses::GENESIS_ADDRESS(); + aborts_if !exists(txn_sender); + aborts_if !exists>(txn_sender); + aborts_if txn_max_gas_units < gas_units_remaining; + let transaction_fee_amount = txn_gas_price * (txn_max_gas_units - gas_units_remaining); + aborts_if transaction_fee_amount > max_u128(); + aborts_if global>(txn_sender).token.value < transaction_fee_amount; + aborts_if txn_sequence_number + 1 > max_u64(); + aborts_if txn_gas_price * (txn_max_gas_units - gas_units_remaining) > 0 && + global>(txn_sender).token.value < txn_gas_price * (txn_max_gas_units - gas_units_remaining); + aborts_if txn_gas_price * (txn_max_gas_units - gas_units_remaining) > 0 && + !exists>(CoreAddresses::GENESIS_ADDRESS()); + aborts_if txn_gas_price * (txn_max_gas_units - gas_units_remaining) > 0 && + global>(CoreAddresses::GENESIS_ADDRESS()).fee.value + txn_gas_price * (txn_max_gas_units - gas_units_remaining) > max_u128(); + } + + /// The epilogue is invoked at the end of transactions. + /// It collects gas and bumps the sequence number + public fun txn_epilogue_v3( + account: &signer, + txn_sender: address, + txn_sequence_number: u64, + txn_authentication_key_preimage: vector, + txn_gas_price: u64, + txn_max_gas_units: u64, + gas_units_remaining: u64, stc_price: u128, stc_price_scaling: u128, ) acquires Account, Balance { diff --git a/sources/TransactionManager.move b/sources/TransactionManager.move index bbb32a96..3bb0730f 100644 --- a/sources/TransactionManager.move +++ b/sources/TransactionManager.move @@ -176,7 +176,7 @@ module TransactionManager { }else{ (1,1) }; - Account::txn_epilogue_v2( + Account::txn_epilogue_v3( &account, txn_sender, txn_sequence_number,