From d058b86a0c5f167997894b1e98bcd46bc4d2165c Mon Sep 17 00:00:00 2001 From: nk_ysg Date: Thu, 26 Dec 2024 18:32:18 +0800 Subject: [PATCH] update barnard rollback height (#4360) * update barnard rollback height * update barnard rollback height test * update barnard rollback height test * update force deploy extra transaction stdlib.blob * revert commit * fix check * [force-deploy] change framework version to a9eaa8f97aa40d3ab19bfbe90fb720ac63268a613 * update starcoin_framework repo * [force-deploy] fixed cargo fmt * update starcoin_framework v12 stdlib.blob * fix fmt * [force-deploy] Added some modifications to the test flow in test_force_upgrade_1 * fix test_force_upgrade_1 * remove unused imports --------- Co-authored-by: welbon <2261238+welbon@users.noreply.github.com> Co-authored-by: simonjiao --- Cargo.lock | 2 +- Cargo.toml | 2 +- chain/tests/test_force_upgrade.rs | 89 +++++++++++++++--- network/src/service.rs | 4 +- storage/src/upgrade.rs | 4 +- vm/stdlib/compiled/12/11-12/stdlib.blob | Bin 88437 -> 88465 bytes .../compiled/12/11-12/stdlib/036_Account.mv | Bin 5235 -> 5299 bytes .../12/11-12/stdlib/051_FrozenConfig.mv | Bin 670 -> 682 bytes .../11-12/stdlib/064_StdlibUpgradeScripts.mv | Bin 2328 -> 2312 bytes .../compiled/12/11-12/stdlib/065_Genesis.mv | Bin 3387 -> 3355 bytes vm/stdlib/compiled/12/stdlib/036_Account.mv | Bin 5235 -> 5299 bytes .../compiled/12/stdlib/051_FrozenConfig.mv | Bin 670 -> 682 bytes .../12/stdlib/064_StdlibUpgradeScripts.mv | Bin 2328 -> 2312 bytes vm/stdlib/compiled/12/stdlib/065_Genesis.mv | Bin 3387 -> 3355 bytes .../error_descriptions.errmap | Bin 8963 -> 8995 bytes .../compiled/latest/stdlib/036_Account.mv | Bin 5235 -> 5299 bytes .../latest/stdlib/051_FrozenConfig.mv | Bin 670 -> 682 bytes .../latest/stdlib/064_StdlibUpgradeScripts.mv | Bin 2328 -> 2312 bytes .../compiled/latest/stdlib/065_Genesis.mv | Bin 3387 -> 3355 bytes vm/transaction-builder/src/lib.rs | 52 +++++++++- vm/vm-runtime/src/force_upgrade_management.rs | 3 +- 21 files changed, 135 insertions(+), 21 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2c5b8d897e..047bece820 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9798,7 +9798,7 @@ dependencies = [ [[package]] name = "starcoin-framework" version = "11.0.0" -source = "git+https://github.com/starcoinorg/starcoin-framework?rev=3e879a168036dceaa60c57c8e2b9228283476f81#3e879a168036dceaa60c57c8e2b9228283476f81" +source = "git+https://github.com/starcoinorg/starcoin-framework?rev=9eaa8f97aa40d3ab19bfbe90fb720ac63268a613#9eaa8f97aa40d3ab19bfbe90fb720ac63268a613" dependencies = [ "anyhow", "include_dir", diff --git a/Cargo.toml b/Cargo.toml index f2e7051406..bf0bdc9e1c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -444,7 +444,7 @@ starcoin-crypto = { git = "https://github.com/starcoinorg/starcoin-crypto", rev starcoin-decrypt = { path = "commons/decrypt" } starcoin-dev = { path = "vm/dev" } starcoin-executor = { path = "executor" } -starcoin-framework = { git = "https://github.com/starcoinorg/starcoin-framework", rev = "3e879a168036dceaa60c57c8e2b9228283476f81" } +starcoin-framework = { git = "https://github.com/starcoinorg/starcoin-framework", rev = "9eaa8f97aa40d3ab19bfbe90fb720ac63268a613" } starcoin-genesis = { path = "genesis" } starcoin-logger = { path = "commons/logger" } starcoin-metrics = { path = "commons/metrics" } diff --git a/chain/tests/test_force_upgrade.rs b/chain/tests/test_force_upgrade.rs index b34b3052e2..1dc56568cd 100644 --- a/chain/tests/test_force_upgrade.rs +++ b/chain/tests/test_force_upgrade.rs @@ -1,16 +1,21 @@ +use std::str::FromStr; +use std::sync::Arc; + use anyhow::format_err; + use starcoin_accumulator::Accumulator; use starcoin_chain_api::{ChainReader, ChainWriter}; use starcoin_config::NodeConfig; use starcoin_consensus::Consensus; use starcoin_statedb::ChainStateDB; -use starcoin_transaction_builder::{build_transfer_from_association, DEFAULT_EXPIRATION_TIME}; +use starcoin_transaction_builder::{ + build_burn_illegal_stc_txn_with_association, build_transfer_from_association, + DEFAULT_EXPIRATION_TIME, +}; use starcoin_types::account_address::AccountAddress; use starcoin_vm_runtime::force_upgrade_management::get_force_upgrade_block_number; use starcoin_vm_types::on_chain_config::Version; use starcoin_vm_types::{account_config, state_view::StateReaderExt}; -use std::str::FromStr; -use std::sync::Arc; use test_helper::executor::get_balance; #[stest::test] @@ -130,16 +135,20 @@ pub fn test_force_upgrade_1() -> anyhow::Result<()> { let txns_num = txns_num + 2; assert_eq!(miner.get_txn_accumulator().num_leaves(), txns_num); + let black1_balance = get_balance(black1, miner.chain_state()); + println!("Black 1 balance is: {:?}", black1_balance); assert_eq!( - get_balance(black1, miner.chain_state()), - 0, - "Upgrade Failed, Balance of black list account not 0" + black1_balance, + initial_balance + 1, + "Force-Upgrading Failed, Balance of black-1 account changed!" ); + let black2_balance = get_balance(black2, miner.chain_state()); + println!("Black 2 balance is: {:?}", black2_balance); assert_eq!( - get_balance(black2, miner.chain_state()), - 0, - "Upgrade Failed, Balance of black list account not 0" + black2_balance, + initial_balance + 2, + "Force-upgrading Failed, Balance of black-2 account changed!" ); assert_eq!(get_balance(rand3, miner.chain_state()), initial_balance + 3); @@ -147,6 +156,58 @@ pub fn test_force_upgrade_1() -> anyhow::Result<()> { block2 }; + // Apply block number 3, this will call StdlibUpgrade::burn_illegal_token_from_frozen_address + { + let burn_black_txn_1 = build_burn_illegal_stc_txn_with_association( + &black1, + association_sequence_num + 4, + initial_balance + 1, + config.net(), + ); + let burn_black_txn_2 = build_burn_illegal_stc_txn_with_association( + &black2, + association_sequence_num + 5, + initial_balance + 2, + config.net(), + ); + + let (block_template, _excluded) = miner + .create_block_template( + account_config::association_address(), + None, + vec![burn_black_txn_1, burn_black_txn_2], + vec![], + Some(block_gas_limit), + ) + .unwrap(); + + let block3 = miner + .consensus() + .create_block(block_template, miner.time_service().as_ref())?; + + miner.apply(block3.clone())?; + + // 1 meta + 3 txns = 4 txns + //let txns_num = txns_num + 3; + //let leaves_num = miner.get_txn_accumulator().num_leaves(); + //assert_eq!(leaves_num, txns_num); + + let black1_balance = get_balance(black1, miner.chain_state()); + println!("Black 1 balance is: {:?}", black1_balance); + assert_eq!( + black1_balance, 0, + "Burning Failed, Balance of black-1 account is not 0" + ); + + let black2_balance = get_balance(black2, miner.chain_state()); + println!("Black 2 balance is: {:?}", black2_balance); + assert_eq!( + black2_balance, 0, + "Burning Failed, Balance of black-2 account is not 0" + ); + block3 + }; + // apply block number 2 to another chain { // !!!non-zero balance @@ -160,8 +221,14 @@ pub fn test_force_upgrade_1() -> anyhow::Result<()> { let txns_num = txns_num + 2; assert_eq!(chain_to_apply.get_txn_accumulator().num_leaves(), txns_num); - assert_eq!(get_balance(black1, chain_to_apply.chain_state()), 0); - assert_eq!(get_balance(black2, chain_to_apply.chain_state()), 0); + assert_eq!( + get_balance(black1, chain_to_apply.chain_state()), + initial_balance + 1 + ); + assert_eq!( + get_balance(black2, chain_to_apply.chain_state()), + initial_balance + 2 + ); assert_eq!( get_balance(rand3, chain_to_apply.chain_state()), initial_balance + 3 diff --git a/network/src/service.rs b/network/src/service.rs index 31b6cfcd64..f248dda7ea 100644 --- a/network/src/service.rs +++ b/network/src/service.rs @@ -40,7 +40,7 @@ use std::ops::RangeInclusive; use std::sync::Arc; const BARNARD_HARD_FORK_PEER_VERSION_STRING_PREFIX: &str = "barnard_rollback_block_fix"; -const BARNARD_HARD_FORK_VERSION: [i32; 3] = [1, 13, 11]; +const BARNARD_HARD_FORK_VERSION: [i32; 3] = [1, 13, 12]; pub struct NetworkActorService { /// Worker and inner have ChainInfo instances separately. There might be some way to solve the problem. @@ -930,7 +930,7 @@ mod test { assert!(!greater_barnard_fork_version(&v3)); let v4 = String::from("starcoin/1.12.9 (build:v1.12.9) (kele01)"); assert!(!greater_barnard_fork_version(&v4)); - let v5 = String::from("starcoin/1.13.12 (build:v1.13.12-alpha) (kele01)"); + let v5 = String::from("starcoin/1.13.13 (build:v1.13.13-alpha) (kele01)"); assert!(greater_barnard_fork_version(&v5)); } } diff --git a/storage/src/upgrade.rs b/storage/src/upgrade.rs index 2e45d0d4d4..67b9c44c23 100644 --- a/storage/src/upgrade.rs +++ b/storage/src/upgrade.rs @@ -22,10 +22,10 @@ use std::cmp::Ordering; pub struct DBUpgrade; -pub static BARNARD_HARD_FORK_HEIGHT: BlockNumber = 16057000; +pub static BARNARD_HARD_FORK_HEIGHT: BlockNumber = 16080000; pub static BARNARD_HARD_FORK_HASH: Lazy = Lazy::new(|| { HashValue::from_hex_literal( - "0x1dd5987fa3b8bffad60f7a7756e73acd7b6808fed5a174200bf49e9f5de2d073", + "0x2dd593a9ac3e44d4a70423d39ffbd94930dba00b4682fcde9ebb2be8950bae7c", ) .expect("") }); diff --git a/vm/stdlib/compiled/12/11-12/stdlib.blob b/vm/stdlib/compiled/12/11-12/stdlib.blob index afcfdca18b4066f480eb4ff9f19ca1d98d9d8c9a..c52968714fed43db3c692881b255237a04b40ea1 100644 GIT binary patch delta 3879 zcmZu!X^b346|PrR-PPChbk9AzvpX|;P49i!>usOwW7m$IJDZD;WU;+#dx^7l);1B5 z$dD*XkWggePBIb@PJu)$5MV|A0sI3wQ9!Z8A4CE{;-^Cd5fS_#5?{@FjU%zE{^r#? zt6sf+RsHeLjh8MNKmGWb`AdV}tz2_W#+Xm6gLlk{N3RO`6M4V!obgAl{;aN~tsfKv z^Nr#K?p!G^xfeUQ_v4Nq`l;VXCI4E)(|?P2>z728CY+GPSQ<}Y5hE6YlaY*N@#MhG zBW-gRjgpkd$B9gF0*2=6lDA~Wa0@>-r9D!H_iybn(kTcS)2o#z910k;7-KI zM=MGRlw{UjpI079$D6cM&n*LMV5WPM)`n7wnuPI4-yLTGp>W6l8c8VY(ML8gVV!?$>|Y8ae9<2 zJ+wE($;A0D)3)Si=d)Bxesg}Ixx;0l&2M!BoJ?`*A?A4^>vX~j3 z%gE(WOYuzdy|2wSvpTkPS=Jz)+n`P2c^!4scUYX+%4S)d^$2sF9ip`9QijDjUVtHy z?K1EbJZ4>drjWH)q-xWqe?Z@<(rRe>hguH!QA(z!5^OO{hq=iM7Y6|Y_=1Dn^9YcF+q z`y1C2#KHqf?!sigem%1=cabIJw#s{whb~l_z3Y-57ZUD^TwM1gRHQ4A{yy!Pc)y7^=u((kBx*k9uDxqq?k0u_al2QPqRE9YFoq8FonZ>SSJO8z|HXyNch&g zo@VlR(wiF9v)3|_<73HdN!h=(u~DuuOZ2Q>pwDy55FGWTAOlL^Xl>` z<4ej1gHN^BaO2gh^GzE?wc8nrA0vx0Y<=?vdKFTFCuOjxPl~>=Lpx2Z6D>+^|^k?iV9`i1nm?C8`8gyKe{tyDnVR$r00I5+xdJN!bN{ymz+vBFs z#6+4N~tNWx>=T^_QCM5l%F>vJE+UnxU$&<^+51(8-d+M>}Rh;gp9@p>`=)+4(Ys+WO zT*m(PQ^8qUKE1Yl6gPn-=elI^)UnnFipob)Ys*iZTY>W8+NqPvnG=W4-0-m;FnwVD zj`@Xy3yXW^=I)taSoptpio%mCXHP7x9e(oDbCPFkNqVN(uwrDMOhu0>v;0Ghx;f zzD^g9S(wLNg)zfI=O~0}h;ZEqi?}DCE8!Rq3wTO+%6K|lrnq_hdO+0_VQ2fT*5`n! zFV*@lG`N0C$aZiVhLxCb7eE&XtL?@gI`C7&!K{UKuzSK@t}yFt8ne#C0`c{AMEWc? zViOfd+-ffqV$N-l9fKeX&}vc`d3KnNm0r({G{jbHd#0y6=~?=q4M#mAWxFV`qKlGo zRk0YmI0cz&#~zS}>HpcLxU&&WpzR{Rn90p+^ESjLpJLzWxT#m|;5#;p(-*jWR#c2{ ziT`l*b@L6|dM6#2@28(3?=Qhu?bg*P>e1cGYvL=W#LBFLb+QWUq8^0mm8{&S`%{3e z%I9?_EBEVhSC?YwZb)l>w;t#BXuRH-^#0Xw=Vo=Vas#03hMr_34VJ6ow3Ss@S{gXM zg;=qQ#@gAeI>bs^tg0>=OBEjNLD+Q-rLbar^58HVp@8|LAzDy+3^zWZ)q^^|XlPu2 zBRSfrJW(v64Nan9(3JkFDR1iN1a7W??wHp7r=ayJTXb8Z8L!4Dt`mxPYYpRVUJpxE zd+`~#9ZFuckIzUb3MN#DHu zK$ae+{Af7rj)o)da5&Qb*y=w|;b`l(IeMMOT2JQbyglrWKt2?XTuvA0*uMV)Z8x@; delta 3754 zcmY*cYm8h~9smE&J@v;KQ~|d}F*>){+*)_n`GXWS2-I1Qe01|$E0Z7^?s!!Sslh2i7UI0rJHH?Y#~9atkD8*vhE zjq~G9Y{j*Bd$2th#XI7jIEWi@HZH_V@y>WTUTLmOugt6ltGPhzSMZ?Bfd27^q;Lm`yIu?E_vc+<+J15qR~8{ zGVHit(kO4$NK1wgd>bQ%ZdV?=B!%&13Ei)F!W8^f(-M4#X$!uS9X)k7*y)iAj}^Am zaZ-37P!xGS2W)fHpZ@#8!Pd5GDcFcdf)wtRO+}%Rk38XPO+B69P$rH*id~(Xi7OBz z1`9(=D7FiUClEOu{do`)CA7aGAVQC#MPGO#@oUmkl#uBwMXUtGG9pU<_}!(J4mOsG zx=a>b8)J(_Ua#5+JW6s~Xo-?8pRx1Ban4$bbCl!-f(-j|6@g~MVwVy*nG{6v8aiCv zp}R>@l(cn2(HM(vZCr#fxU}fA#}PK@n96pdU3JBH~508TkiqWe?FFyz>t~(hLb(YM58)$1Hz(vBE zh(<)5-kR2@*5Eyba43kejy5b!a5OH)wNo$&RbEVhBeoRuHq%$rq0FS-z2+Ht(MbQ0 zmbYGC--ywKM3V`w)z_>|@7x4Soj+yZ^ky$vMxQ>$dYFa+|qRQx&B3 z3A%mDOXr>|x3uq)SXpzU@^9A)z#F zKt5uA%ML&gGwW{K$k72YyAge!&_2}J+ez0kfuhOAqS@VX;P0MW$j$w~ZcWUmJXkNq_MM zVma%WY)g~{5)n#-ZR8NoqDxaPVW;7nRbN=XOTu)JLw=gP`9b=f(XKTA)=+x=TPJ&v z7j7r{8LgJcEg^`UPJt2Wdv6W<*AgzdZ@;@R{X%Zzq2Mw#MYCz#`IwL&h(7aE@q4!4 zmH%*@UuQz=x0!GHZw4JOM~G?Hrj?UD#_dEznwQcLu!dCR9jo53q*}* znNk{t(~&}^bQmBQQaK%wb+kLm;JXM(3kIxmN7=9;1{;Q6X5GHiUXa}H8_T=)*~>?c zoO$r{`Sy(gSK1Fq{^;^UCXcXVpE`Hw{==tEr&B+v2F}B$&YwJb_VB~<-UrW~P9Hc? zsszW+o_XZh=|lIOI(PoiLo?oqWB7OM$oVs8+o8>+_ANHQ6lQm??O!{%_u!%B)zt%Q z2M@OYX7i)%*DWr$?|1mA^tHN^GsBa$XB_9%AAb0w7x&zA^z+}e+JDdST`dGBaTuXL zph#!XgF2m!qM#n=_DoTT#~YE~kK~D>oUY;#nkycO>wh}6175a-D;C>DRFSi)1IO z+4Zo`sGQ(wlAxzXRbfK3;K58Unzd&3f!rU}I*;5^7UvvDB$}H(U&{4u*YW7)Dww8ui_%o;bb{7*|i8xQXXmzU@ojL1R_Xq;FA#xXWK%4+o+m9Ha-*f z%hubj^Kmw`{*!&2{m;S+?NITK7WMHE><;7mVnkP-D6*+oL>b`=2hUFhq_*70N{-ZFsE)*4`&KS;q1HN13ky5?qT!zfHUuuL9r zGsH5Wums?ph?T-F?x(0W%2ZsfW6|Q8kCPU!8^gYfyC<-cxu<=>=b}4ZoGH#0Hx)Nu z{+Z98a{Eci$>nzfepT{ImmluJ+qygvO$3c-QZ=H6n$VROXCJx1QM3KmJio$I?X{5JW=H1yZ#3}%6m2d diff --git a/vm/stdlib/compiled/12/11-12/stdlib/036_Account.mv b/vm/stdlib/compiled/12/11-12/stdlib/036_Account.mv index aa65760485e50b04f3631977cbe6d35d5f1135ea..a2b45f221f9876b104da792631408bdbfaf753ac 100644 GIT binary patch delta 2015 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 Pf8!=bp)5dtud@9&;kc?d diff --git a/vm/stdlib/compiled/12/11-12/stdlib/051_FrozenConfig.mv b/vm/stdlib/compiled/12/11-12/stdlib/051_FrozenConfig.mv index d8bef1911c9c8f11f3f2887cdfbb54d22ac184db..b977c290cdbae2d6ffcf3c75df1de172366442b7 100644 GIT binary patch delta 158 zcmbQox{7szHpgm4-ghi4{GTQoTgbEUb1*P42{14-vNH*CvNEzW3vqKZFbRX0Y)l*z zyJUD6*?5@PcsLoDSUDIbZn`shA)~UeP(f)@PG)gNd|qmKd~$wXT4ws>Ba9j9yj%=| v>=ukH?A#2DOxz5d+>AmD7EDYmj0_B1;vhL5CN3rm#>wtXDm*9xVueT>SJk1%FPvvD(Uax)4sSTHiNFfuT3igPgt Wa_}&5F7JhH8N0`cCr<4AC*F8B$u2A~{1Zra#f1amz-{oxlVIVs$=Ert z9DG5DE3%L{A&__jjywRbfCO)_CnT;&RL7e|jMU$JRrS?R&vbvEe3Kmf)O;FB0MG~> z*6Hw%zGC8c*7W{nzoGh7{HXmuqN;ovU7A1Rf7rJNooO5^ND_g7S}VX81=LmO z+*Lk^HraSfd4PLCh$8M#Lvfob$~y$nK0)PxAaG3WM+o{*#=!4Z5S6*dktwBKaMJtS zg1?`T)G>U?B80CjETX7obwt5lnhot$4M%UE9&SXN)T0D?k?9gWayrx?gy7u2R)umN zAO{zrn&(k3$B=@q!1arxq$2VrVQ<#* z(vEN=)w|eLGDev#S~3ltI*U*#;HGrG7&@OWs*)JGM~c8 zDa@EAy1YlU?o{@c(O=q1rrds>e}>G@w2?*`Vf>J1f!#M=q(eG-X-G#YRB4)phEV~X c8A4_&|K&z3xar0jU2ED~{J*`Kn=ozoU;bu|9{>OV delta 1233 zcmY*Y&2Jk;6n}4Kc4l^GyxwvAk;G2ye7Z>!w<%xCH*OM@NT`6Io$RB{XaX}oo!e77%j$Gia6Srcd`R$wcd++!5joy5j`#RTnTKUsR z0PqnStkK}_f5F7>Y|;CN{f6on@we7LW+M4(=Ar#Le99j;Hb+o^ViYOJ=LG^HDlkR? zyCIkZ5RZiZQ4S0iGwTjX@x1U9w&Er(zlDhJ-R8T!}oIzy(E zze8O11y+Dyt4N`##a=9s=F2D{^UCZTib6b()W&O!?ELGM1*-a{Uxkr;i$cWPvPR@P zOUnrP<_eMGW{tvUcIiF}d#h_Gir3f4k=d^kW_4cA=gRrz(u!U!ujwo0jq;|xTHe+T zeXYbSU6!;=T8@@()I*LM=qS)2`jDaq9(bB@9BGDxU!C|K}=$@Y^{d>`% z`^o(t9g<6*e$X49bOwhH#x1Y16W$y2KkJ?)r@ixG^65@++@(+VXxJYVr*TQ|^t5|? zc$y6RA9c^h54|T*_SXLG{q{jSY3}Xa*>AVUCHeW>Y_r{N?H)Am9<**JcUrBx&)Bcz zqxmj9gmih)N$s)L-+%kZci+7GLFeC}M&oVu;V5!em=Ih>;gZlEO}z{2AsCFoMGR?T zZ8ZSrT+XtPxfx4?a=9!Ic!*88A}U@sfDi+IQ|50>>FGB{7a1-|X|jrzd%gi=G_8Q6 zFcqg=pk1V0GN70|zAU1+o2B`nKw&_#O9>}f`jpTQ=s(?D%mRqH0asxjxeEcwELfb7 zi{!4l8j~oXl%+nGVqtO8pBF+bN3o*eq~}9Ca^jI`G8Z?pb@3 zz)GvEu-fq0xGn2te4~vh8ENPeOQqP-eSz`g3?Xy%=eZ&Cr^Ohn(etL}!v8gAro6}C EKT{ZkLjV8( diff --git a/vm/stdlib/compiled/12/11-12/stdlib/065_Genesis.mv b/vm/stdlib/compiled/12/11-12/stdlib/065_Genesis.mv index 33844f2593aa50b8af308821bfa077d0140224b3..78701566bc289c4f9bc8bc6bb1045d23b4addc26 100644 GIT binary patch delta 502 zcmW-bNpjOb6o%igZcEl+4Yt&=6v=I8a1u*)MrMaFa|tfME;n$6EsIo=9Z*!UWkWt@vv>uk4R* z`%4ttKcX`PKjW7dv*QKUBw<}rz7c>B#|~wgWR-84xT+iqLkC3JJrig54QarSw8a>L zG2$>CvvRk<)3#-cQf-5z=FYZ(rQ4tt&1+1(G=@*wBm{IFPM9+j+%YZX(Oy7Kx!^U^nh zA>rnT)vY1pcCbbry}ke?cep6f8=&5tZFvWHvjmpux$nU8lS z%qKOQw4UI&3CFNGXM9nQIAi&{%nX3W>WcP zUK#e8_0y?d`hoS&e-G~}n0y>;pHPZV0yU}6J zmUW$*X~v;%d75y$%j%A1-1U0Yc%$b*&3jx_*9)LFczlg%U@zJ~e z!`-99SFaDAACF%i?;pIK{xE+Fe4T!(zCb&dd83ehw~&RK%fjHPv^aqroLaT-SUWwh RO`N{l=hszPOrN=b@E<9xKN0`{ diff --git a/vm/stdlib/compiled/12/stdlib/036_Account.mv b/vm/stdlib/compiled/12/stdlib/036_Account.mv index aa65760485e50b04f3631977cbe6d35d5f1135ea..a2b45f221f9876b104da792631408bdbfaf753ac 100644 GIT binary patch delta 2015 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 Pf8!=bp)5dtud@9&;kc?d diff --git a/vm/stdlib/compiled/12/stdlib/051_FrozenConfig.mv b/vm/stdlib/compiled/12/stdlib/051_FrozenConfig.mv index d8bef1911c9c8f11f3f2887cdfbb54d22ac184db..b977c290cdbae2d6ffcf3c75df1de172366442b7 100644 GIT binary patch delta 158 zcmbQox{7szHpgm4-ghi4{GTQoTgbEUb1*P42{14-vNH*CvNEzW3vqKZFbRX0Y)l*z zyJUD6*?5@PcsLoDSUDIbZn`shA)~UeP(f)@PG)gNd|qmKd~$wXT4ws>Ba9j9yj%=| v>=ukH?A#2DOxz5d+>AmD7EDYmj0_B1;vhL5CN3rm#>wtXDm*9xVueT>SJk1%FPvvD(Uax)4sSTHiNFfuT3igPgt Wa_}&5F7JhH8N0`cCr<4AC*F8B$u2A~{1Zra#f1amz-{oxlVIVs$=Ert z9DG5DE3%L{A&__jjywRbfCO)_CnT;&RL7e|jMU$JRrS?R&vbvEe3Kmf)O;FB0MG~> z*6Hw%zGC8c*7W{nzoGh7{HXmuqN;ovU7A1Rf7rJNooO5^ND_g7S}VX81=LmO z+*Lk^HraSfd4PLCh$8M#Lvfob$~y$nK0)PxAaG3WM+o{*#=!4Z5S6*dktwBKaMJtS zg1?`T)G>U?B80CjETX7obwt5lnhot$4M%UE9&SXN)T0D?k?9gWayrx?gy7u2R)umN zAO{zrn&(k3$B=@q!1arxq$2VrVQ<#* z(vEN=)w|eLGDev#S~3ltI*U*#;HGrG7&@OWs*)JGM~c8 zDa@EAy1YlU?o{@c(O=q1rrds>e}>G@w2?*`Vf>J1f!#M=q(eG-X-G#YRB4)phEV~X c8A4_&|K&z3xar0jU2ED~{J*`Kn=ozoU;bu|9{>OV delta 1233 zcmY*Y&2Jk;6n}4Kc4l^GyxwvAk;G2ye7Z>!w<%xCH*OM@NT`6Io$RB{XaX}oo!e77%j$Gia6Srcd`R$wcd++!5joy5j`#RTnTKUsR z0PqnStkK}_f5F7>Y|;CN{f6on@we7LW+M4(=Ar#Le99j;Hb+o^ViYOJ=LG^HDlkR? zyCIkZ5RZiZQ4S0iGwTjX@x1U9w&Er(zlDhJ-R8T!}oIzy(E zze8O11y+Dyt4N`##a=9s=F2D{^UCZTib6b()W&O!?ELGM1*-a{Uxkr;i$cWPvPR@P zOUnrP<_eMGW{tvUcIiF}d#h_Gir3f4k=d^kW_4cA=gRrz(u!U!ujwo0jq;|xTHe+T zeXYbSU6!;=T8@@()I*LM=qS)2`jDaq9(bB@9BGDxU!C|K}=$@Y^{d>`% z`^o(t9g<6*e$X49bOwhH#x1Y16W$y2KkJ?)r@ixG^65@++@(+VXxJYVr*TQ|^t5|? zc$y6RA9c^h54|T*_SXLG{q{jSY3}Xa*>AVUCHeW>Y_r{N?H)Am9<**JcUrBx&)Bcz zqxmj9gmih)N$s)L-+%kZci+7GLFeC}M&oVu;V5!em=Ih>;gZlEO}z{2AsCFoMGR?T zZ8ZSrT+XtPxfx4?a=9!Ic!*88A}U@sfDi+IQ|50>>FGB{7a1-|X|jrzd%gi=G_8Q6 zFcqg=pk1V0GN70|zAU1+o2B`nKw&_#O9>}f`jpTQ=s(?D%mRqH0asxjxeEcwELfb7 zi{!4l8j~oXl%+nGVqtO8pBF+bN3o*eq~}9Ca^jI`G8Z?pb@3 zz)GvEu-fq0xGn2te4~vh8ENPeOQqP-eSz`g3?Xy%=eZ&Cr^Ohn(etL}!v8gAro6}C EKT{ZkLjV8( diff --git a/vm/stdlib/compiled/12/stdlib/065_Genesis.mv b/vm/stdlib/compiled/12/stdlib/065_Genesis.mv index 33844f2593aa50b8af308821bfa077d0140224b3..78701566bc289c4f9bc8bc6bb1045d23b4addc26 100644 GIT binary patch delta 502 zcmW-bNpjOb6o%igZcEl+4Yt&=6v=I8a1u*)MrMaFa|tfME;n$6EsIo=9Z*!UWkWt@vv>uk4R* z`%4ttKcX`PKjW7dv*QKUBw<}rz7c>B#|~wgWR-84xT+iqLkC3JJrig54QarSw8a>L zG2$>CvvRk<)3#-cQf-5z=FYZ(rQ4tt&1+1(G=@*wBm{IFPM9+j+%YZX(Oy7Kx!^U^nh zA>rnT)vY1pcCbbry}ke?cep6f8=&5tZFvWHvjmpux$nU8lS z%qKOQw4UI&3CFNGXM9nQIAi&{%nX3W>WcP zUK#e8_0y?d`hoS&e-G~}n0y>;pHPZV0yU}6J zmUW$*X~v;%d75y$%j%A1-1U0Yc%$b*&3jx_*9)LFczlg%U@zJ~e z!`-99SFaDAACF%i?;pIK{xE+Fe4T!(zCb&dd83ehw~&RK%fjHPv^aqroLaT-SUWwh RO`N{l=hszPOrN=b@E<9xKN0`{ diff --git a/vm/stdlib/compiled/latest/error_descriptions/error_descriptions.errmap b/vm/stdlib/compiled/latest/error_descriptions/error_descriptions.errmap index 687ca02f7366ff967db417600b5c22505ff12b3a..c68f41f91de65aa24b0e387cafb320f961468012 100644 GIT binary patch delta 46 xcmZp6TkN*srW_;F;4JQBq delta 18 acmZ4N*6g<7rW_;V@QaW)460h5F!WVH!q3BfiT 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 Pf8!=bp)5dtud@9&;kc?d diff --git a/vm/stdlib/compiled/latest/stdlib/051_FrozenConfig.mv b/vm/stdlib/compiled/latest/stdlib/051_FrozenConfig.mv index d8bef1911c9c8f11f3f2887cdfbb54d22ac184db..b977c290cdbae2d6ffcf3c75df1de172366442b7 100644 GIT binary patch delta 158 zcmbQox{7szHpgm4-ghi4{GTQoTgbEUb1*P42{14-vNH*CvNEzW3vqKZFbRX0Y)l*z zyJUD6*?5@PcsLoDSUDIbZn`shA)~UeP(f)@PG)gNd|qmKd~$wXT4ws>Ba9j9yj%=| v>=ukH?A#2DOxz5d+>AmD7EDYmj0_B1;vhL5CN3rm#>wtXDm*9xVueT>SJk1%FPvvD(Uax)4sSTHiNFfuT3igPgt Wa_}&5F7JhH8N0`cCr<4AC*F8B$u2A~{1Zra#f1amz-{oxlVIVs$=Ert z9DG5DE3%L{A&__jjywRbfCO)_CnT;&RL7e|jMU$JRrS?R&vbvEe3Kmf)O;FB0MG~> z*6Hw%zGC8c*7W{nzoGh7{HXmuqN;ovU7A1Rf7rJNooO5^ND_g7S}VX81=LmO z+*Lk^HraSfd4PLCh$8M#Lvfob$~y$nK0)PxAaG3WM+o{*#=!4Z5S6*dktwBKaMJtS zg1?`T)G>U?B80CjETX7obwt5lnhot$4M%UE9&SXN)T0D?k?9gWayrx?gy7u2R)umN zAO{zrn&(k3$B=@q!1arxq$2VrVQ<#* z(vEN=)w|eLGDev#S~3ltI*U*#;HGrG7&@OWs*)JGM~c8 zDa@EAy1YlU?o{@c(O=q1rrds>e}>G@w2?*`Vf>J1f!#M=q(eG-X-G#YRB4)phEV~X c8A4_&|K&z3xar0jU2ED~{J*`Kn=ozoU;bu|9{>OV delta 1233 zcmY*Y&2Jk;6n}4Kc4l^GyxwvAk;G2ye7Z>!w<%xCH*OM@NT`6Io$RB{XaX}oo!e77%j$Gia6Srcd`R$wcd++!5joy5j`#RTnTKUsR z0PqnStkK}_f5F7>Y|;CN{f6on@we7LW+M4(=Ar#Le99j;Hb+o^ViYOJ=LG^HDlkR? zyCIkZ5RZiZQ4S0iGwTjX@x1U9w&Er(zlDhJ-R8T!}oIzy(E zze8O11y+Dyt4N`##a=9s=F2D{^UCZTib6b()W&O!?ELGM1*-a{Uxkr;i$cWPvPR@P zOUnrP<_eMGW{tvUcIiF}d#h_Gir3f4k=d^kW_4cA=gRrz(u!U!ujwo0jq;|xTHe+T zeXYbSU6!;=T8@@()I*LM=qS)2`jDaq9(bB@9BGDxU!C|K}=$@Y^{d>`% z`^o(t9g<6*e$X49bOwhH#x1Y16W$y2KkJ?)r@ixG^65@++@(+VXxJYVr*TQ|^t5|? zc$y6RA9c^h54|T*_SXLG{q{jSY3}Xa*>AVUCHeW>Y_r{N?H)Am9<**JcUrBx&)Bcz zqxmj9gmih)N$s)L-+%kZci+7GLFeC}M&oVu;V5!em=Ih>;gZlEO}z{2AsCFoMGR?T zZ8ZSrT+XtPxfx4?a=9!Ic!*88A}U@sfDi+IQ|50>>FGB{7a1-|X|jrzd%gi=G_8Q6 zFcqg=pk1V0GN70|zAU1+o2B`nKw&_#O9>}f`jpTQ=s(?D%mRqH0asxjxeEcwELfb7 zi{!4l8j~oXl%+nGVqtO8pBF+bN3o*eq~}9Ca^jI`G8Z?pb@3 zz)GvEu-fq0xGn2te4~vh8ENPeOQqP-eSz`g3?Xy%=eZ&Cr^Ohn(etL}!v8gAro6}C EKT{ZkLjV8( diff --git a/vm/stdlib/compiled/latest/stdlib/065_Genesis.mv b/vm/stdlib/compiled/latest/stdlib/065_Genesis.mv index 33844f2593aa50b8af308821bfa077d0140224b3..78701566bc289c4f9bc8bc6bb1045d23b4addc26 100644 GIT binary patch delta 502 zcmW-bNpjOb6o%igZcEl+4Yt&=6v=I8a1u*)MrMaFa|tfME;n$6EsIo=9Z*!UWkWt@vv>uk4R* z`%4ttKcX`PKjW7dv*QKUBw<}rz7c>B#|~wgWR-84xT+iqLkC3JJrig54QarSw8a>L zG2$>CvvRk<)3#-cQf-5z=FYZ(rQ4tt&1+1(G=@*wBm{IFPM9+j+%YZX(Oy7Kx!^U^nh zA>rnT)vY1pcCbbry}ke?cep6f8=&5tZFvWHvjmpux$nU8lS z%qKOQw4UI&3CFNGXM9nQIAi&{%nX3W>WcP zUK#e8_0y?d`hoS&e-G~}n0y>;pHPZV0yU}6J zmUW$*X~v;%d75y$%j%A1-1U0Yc%$b*&3jx_*9)LFczlg%U@zJ~e z!`-99SFaDAACF%i?;pIK{xE+Fe4T!(zCb&dd83ehw~&RK%fjHPv^aqroLaT-SUWwh RO`N{l=hszPOrN=b@E<9xKN0`{ diff --git a/vm/transaction-builder/src/lib.rs b/vm/transaction-builder/src/lib.rs index 0019c4512b..630b9184b9 100644 --- a/vm/transaction-builder/src/lib.rs +++ b/vm/transaction-builder/src/lib.rs @@ -1,15 +1,18 @@ // Copyright (c) The Starcoin Core Contributors // SPDX-License-Identifier: Apache-2.0 +use std::convert::TryInto; + use anyhow::Result; -use starcoin_config::{genesis_config::G_TOTAL_STC_AMOUNT, ChainNetwork}; use starcoin_crypto::hash::PlainCryptoHash; use starcoin_crypto::HashValue; + +use starcoin_config::{genesis_config::G_TOTAL_STC_AMOUNT, ChainNetwork}; use starcoin_types::account::Account; use starcoin_vm_types::access::ModuleAccess; use starcoin_vm_types::account_address::AccountAddress; use starcoin_vm_types::account_config; -use starcoin_vm_types::account_config::{core_code_address, genesis_address}; +use starcoin_vm_types::account_config::{association_address, core_code_address, genesis_address}; use starcoin_vm_types::file_format::CompiledModule; use starcoin_vm_types::genesis_config::ChainId; use starcoin_vm_types::identifier::Identifier; @@ -25,7 +28,6 @@ use starcoin_vm_types::transaction::{ TransactionPayload, }; use starcoin_vm_types::value::MoveValue; -use std::convert::TryInto; use stdlib::{module_to_package, stdlib_package}; pub use stdlib::{stdlib_compiled_modules, stdlib_modules, StdLibOptions, StdlibVersion}; @@ -910,3 +912,47 @@ pub fn build_signed_empty_txn( let signature = prikey.sign(&txn); SignedUserTransaction::new(txn, signature) } + +// Build a signed user transaction for burning illegal tokens from a frozen address. +// This function creates a signed user transaction that attempts to burn illegal tokens +// from a frozen address. The transaction is signed by the `signer` and is intended for the `recipient`. +// +// # Arguments +// - `signer`: A reference to the `Account` that will sign the transaction. +// - `recipient`: A reference to the `AccountAddress` of the recipient. +// - `seq_num`: The sequence number of the transaction. +// - `amount`: The amount of tokens to be burned, represented as a `u128`. +// - `net`: A reference to the `ChainNetwork` which provides the chain ID for the transaction. +// +// # Returns +// - A `SignedUserTransaction` that is signed by the `signer` with the specified transaction details. +pub fn build_burn_illegal_stc_txn_with_association( + recipient: &AccountAddress, + seq_num: u64, + amount: u128, + net: &ChainNetwork, +) -> SignedUserTransaction { + let raw_txn = RawUserTransaction::new_with_default_gas_token( + association_address(), + seq_num, + TransactionPayload::ScriptFunction(ScriptFunction::new( + ModuleId::new( + core_code_address(), + Identifier::new("StdlibUpgradeScripts").unwrap(), + ), + Identifier::new("burn_illegal_token_from_frozen_address").unwrap(), + vec![], + vec![ + bcs_ext::to_bytes(&recipient).unwrap(), + bcs_ext::to_bytes(&amount).unwrap(), + ], + )), + 10000000, + 1, + 1000 + 60 * 60, + net.chain_id(), + ); + net.genesis_config() + .sign_with_association(raw_txn) + .expect("Sign with association failed") +} diff --git a/vm/vm-runtime/src/force_upgrade_management.rs b/vm/vm-runtime/src/force_upgrade_management.rs index eb0a10712b..834d4f4970 100644 --- a/vm/vm-runtime/src/force_upgrade_management.rs +++ b/vm/vm-runtime/src/force_upgrade_management.rs @@ -15,7 +15,8 @@ pub fn get_force_upgrade_block_number(chain_id: &ChainId) -> u64 { } else if chain_id.is_halley() || chain_id.is_proxima() { 300 } else if chain_id.is_barnard() { - 16085000 + // add 8000 + BARNARD_HARD_FORK_HEIGHT + 16088000 } else { FORCE_UPGRADE_BLOCK_NUMBER }