From 9fa45c1f6bcc4e26924e1232498a2707df867017 Mon Sep 17 00:00:00 2001
From: 0o-de-lally <1364012+0o-de-lally@users.noreply.github.com>
Date: Tue, 7 Nov 2023 19:38:04 +0000
Subject: [PATCH] create cumulative_deposits genesis function
---
.../ol_sources/cumulative_deposits.move | 5 +--
framework/releases/head.mrb | Bin 592509 -> 592512 bytes
tools/genesis/src/genesis_functions.rs | 33 ++++++++++++++++--
types/src/legacy_types/legacy_address.rs | 2 +-
4 files changed, 35 insertions(+), 5 deletions(-)
diff --git a/framework/libra-framework/sources/ol_sources/cumulative_deposits.move b/framework/libra-framework/sources/ol_sources/cumulative_deposits.move
index f5d650762..1c3b9eef3 100644
--- a/framework/libra-framework/sources/ol_sources/cumulative_deposits.move
+++ b/framework/libra-framework/sources/ol_sources/cumulative_deposits.move
@@ -40,13 +40,14 @@ module ol_framework::cumulative_deposits {
/// private function for the genesis fork migration
/// adjust for the coin split factor.
// NOTE: doing split factor on rust side
- fun genesis_migrate_cumulative_deposits(vm: &signer, sender: &signer, value: u64, index: u64) {
+ fun genesis_migrate_cumulative_deposits(vm: &signer, sender: &signer, value:
+ u64, index: u64, depositors: vector
) {
system_addresses::assert_ol(vm);
if (!exists(signer::address_of(sender))) {
move_to(sender, CumulativeDeposits {
value,
index,
- depositors: vector::empty(),
+ depositors,
})
};
}
diff --git a/framework/releases/head.mrb b/framework/releases/head.mrb
index 3f2618f6f423bcef767d392493dcd438d68f848e..dd6cceb3aa70c6a3632d3becb64273b8eace3807 100644
GIT binary patch
delta 1794
zcmV+d2mSc{lq7(aB!Gkgv;xPXKtw|_Lq#(;G(ti*Lq#`4I6^i!K{P}(I5a^wMKU=>
zH!?9nMmRz>HZ?;=L_snzFgZ9hF+ns!G&eXoH$gKrL5ByU0=EaF16>|}vkV`L2mk;8
z00092%~wlr<2De!`&Ud+G?jPNB)feaw2w=7+e^_cy15mFKueU(MiNz$vf~E%@0}qj
ziF(-ar9guK38{HMz8S76nYSeeS*C?z6+cLIpCnmZwIwrR&(oYYQVXNuaRtz74%*~N
zqQ$o6>P>jH=b4fH)mR>X%E)%{;
zolhw6#Ij7bwRv-jB$u^R>0XMATRFWCg?Qk3+DK8GZ(k?L<7ZwLG5kcgzq!jN5=uWe
zH#hK^H%u`@%&N@{7zswP>>h^rK^H&E=IMUyKY!?=yJH&e`O!vyIZ%KR*Via&v^Ff#$3I~?|
z)oN356g|igb%FyhK!^3n&W{50fnYynKel9
zf-7F*fx>HTCK(z%bwOiPxdoKs?^fj2su;aFZg?opx`n^QaZs|}It9-Br`2lZ^JstI
z_Lu&D{{giL(-l>LE@*U6pqPc6#g-tGRn;QXv2(JMM(R76YE;WzQHfF4W
zKK!ty&}6Mr6!Hx#8AU;=PLMWCAptV|!$?g4Mkg9%hLszi8PXMmB5vQ
zn04O~Xf06g;2pS6N#awP%EGg)yY3VPL|^a+p^bh!@3!|5ajw@vw^b62FmjRD$&Q!W
zb`a3_&TSlj-1%M@-OXzf0kUe$u`kVNJZ`yT?79JwzUznagt7^_p6GJ(
z>|Gy!DSIY8dmdRWlOT?Ck^l-1@^7S4@{n#zi9niGtvTayD1z9ptz;Au9A1vq&R9CT
zgTqVb%$wCTD!C1Ytra(dIZiX|d7NrPO@@K7UDW|vCTqh)t)nZeE2v_)vN9(bgdPf;
zR`1dcZc)({1_Wm8jyrViX=Z$>B@R?!-0tLmcgD^O8_us6HYVsO5jQM%>d&rYe50IB
z?YJ8q)^53*o{f@?R2HQvfVeEURfSHpLiqIoO$^O)9qrN8q$ngsXk`{!2T;X|F#<8G
z!@a(h*9kkFKw|cP
zL2$f7&d;&*A?Yz6*-uT?IophQ6qaaFQRP-`cFjyIp#<;70f{{rbTur1{)lGR!F@BNfL&Ifrbb1FAZV?cHp@!
zZ8dvE+MBigAIrH1MjSd=KJ;*eS2wT85NonGD7Ft*e5*7VkbHQbMy`flK=kVN_7+3!
zhAm!vPn+2d(Dh_Xc5kPjKi=Ja{QdLz0TrMtuC4uxB(-mNjFNpNgkZXnvh17kxz|N#
z$CrQX1wZ^b)jEN>@gBCG?YS2|En%m&iwic37t>jNp$khWKMft_{}S^re7GrYT2&Lg
zdcNmE<>_dH?_b
delta 1791
zcmV|}stg~C2mk;8
z00092%~wlr+%^!t@2{AmsH;s>+ese><#B1!UW%q@d@BlpD~)#9NTNzoyWR%=@0}s3
z_pY;t7KmZMCdK*Y{aRHjZ%YJKriB(29+du&Bw1UvrLc03X^xFD(i-@<0%#3_v3Zgh
zxvf#Z7+>u%v#P(E;t@uFwo7+dHUm*Eu^PWIM`P(mDIr%OZxK`1Ut{`M{w3b8~Y8
z@39eDSSHqOX2B}3T4Wz!upe~xb7bM&kNxL2oppD@zy~}!D~}j|kVO&f4o@LMC318;
zchW%6`FcWMD+{75yN?DAl1@9ZM^A*c*p!$LM0-)Tm_Yl(cQFB+<$REKN8ljxzglA}
zBu7ITkD=YlwfO5ODn2*6tTY)MZ%f~e&L^>5>uQa_-#sUXLZGqfM
zP^uou5|HR+0zN>0UxomC?S*^y=3N3V9w;CQhlM(j$&k3$NCz=8C^V(WoIn~2)L7Gj
z&Ff@l3`3fFqX~}O0!sOJD|07ROxhebIEHg-(JxaRw5qqBffxT_wOR!~x*xdxrT;&C
zAa2rjK~<0nh7^J!XpNnfK+S*B;o+vYsp(m&lxbh`t-Ddk~t|Axx*&_@L{TJE{}kUcYwFy~=*)fQ_soFi22
zppskd0|H)7Io%bv@(d8`-PgQtr%r_82)X
zGb2uacrpN+hv+v-YjsGsrJ@R&R;_(R<1qx2Upr(186BQZ*)B*rxkrbmUYQrGxm9v!
z3>PcD_ae11N_J{zL$r)%BoEXB&C`vTumLSDMgHxRL#1I*r)P3foL)A
zgp2VsJKR#PzkW2?KXy&QDW!Rq96zQAW%$?xJ8KQdh2KD2{c1Qyx>YUliy_aMc_=-$9f!1!5TiF?hXt_Mf1P
zdrlWJ@(~aQm0{i>U2`9e{oSDE$_SgyEEXiU1@U-R@uJx6
zLE-E542a)tj&T1KP=|zE9D!XJS}{%Sj9#PV9r?PS>P~gKpq^`Zeq38E)<<`Lvv&Ve
zIQNB-nhu2zZ;bHl<~a-EL=FPQZeyh-r6Ggl!(tlw7w3O+UZAyLF1;i
z_3C1M+-pBqy_~F_UJw5Q@RMXY&xe-B1BaH!1c#Q#1-F*R23%D(&kCU&>k9?|000aD
z01g5U2m=;Y1Z)BYZczun0q6q=rv)Go#|2&rr3MNNuLj=(4UP&150sZE9S3y>1O^NS
h3 anyhow::Result<()> {
+ let (_dr, cw) = process_comm_wallet::prepare_cw_and_receipts(user_recovery, split_factor)?;
+
+ cw.list.iter().for_each(|(addr, wallet)| {
+ let serialized_values = serialize_values(&vec![
+ MoveValue::Signer(CORE_CODE_ADDRESS),
+ MoveValue::Signer(addr.to_owned()),
+ MoveValue::U64(wallet.cumulative_value),
+ MoveValue::U64(wallet.cumulative_index),
+ MoveValue::vector_address(wallet.depositors.clone()),
+ ]);
+
+ exec_function(
+ session,
+ "cuulative_deposits",
+ "genesis_migrate_cumulative_deposits",
+ vec![],
+ serialized_values,
+ );
+ });
+ Ok(())
+}
/// Since we are minting for each account to convert account balances there may be a rounding difference from target. Add those micro cents into the transaction fee account.
/// Note: we could have minted one giant coin and then split it, however there's no place to store in on chain without repurposing accounts (ie. system accounts by design do no hold any funds, only the transaction_fee contract can temporarily hold an aggregatable coin which by design can only be fully withdrawn (not split)). So the rounding mint is less elegant, but practical.
pub fn rounding_mint(session: &mut SessionExt, supply_settings: &SupplySettings) {
diff --git a/types/src/legacy_types/legacy_address.rs b/types/src/legacy_types/legacy_address.rs
index 64574693a..62a25cfe9 100644
--- a/types/src/legacy_types/legacy_address.rs
+++ b/types/src/legacy_types/legacy_address.rs
@@ -402,6 +402,6 @@ mod tests {
let old_str = address.to_hex_literal();
let parsed = AccountAddress::from_hex_literal(&old_str).unwrap();
let p: AccountAddress = address.try_into().unwrap();
- assert!(&parsed == &p, "not equal");
+ assert!(parsed == p, "not equal");
}
}