set_lamports() (#16914)
This commit is contained in:
parent
23d67e4ac7
commit
59e19828ea
|
@ -14,7 +14,7 @@ use {
|
||||||
genesis_utils::{create_genesis_config_with_leader_ex, GenesisConfigInfo},
|
genesis_utils::{create_genesis_config_with_leader_ex, GenesisConfigInfo},
|
||||||
},
|
},
|
||||||
solana_sdk::{
|
solana_sdk::{
|
||||||
account::{Account, AccountSharedData, ReadableAccount},
|
account::{Account, AccountSharedData, ReadableAccount, WritableAccount},
|
||||||
account_info::AccountInfo,
|
account_info::AccountInfo,
|
||||||
clock::{Clock, Slot},
|
clock::{Clock, Slot},
|
||||||
entrypoint::{ProgramResult, SUCCESS},
|
entrypoint::{ProgramResult, SUCCESS},
|
||||||
|
@ -158,7 +158,7 @@ pub fn builtin_process_instruction(
|
||||||
let mut account = keyed_account.account.borrow_mut();
|
let mut account = keyed_account.account.borrow_mut();
|
||||||
let key = keyed_account.unsigned_key();
|
let key = keyed_account.unsigned_key();
|
||||||
let (lamports, data, _owner) = &account_refs[key];
|
let (lamports, data, _owner) = &account_refs[key];
|
||||||
account.lamports = **lamports.borrow();
|
account.set_lamports(**lamports.borrow());
|
||||||
account.set_data(data.borrow().to_vec());
|
account.set_data(data.borrow().to_vec());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -424,7 +424,7 @@ fn process_loader_upgradeable_instruction(
|
||||||
payer
|
payer
|
||||||
.try_account_ref_mut()?
|
.try_account_ref_mut()?
|
||||||
.checked_add_lamports(buffer.lamports()?)?;
|
.checked_add_lamports(buffer.lamports()?)?;
|
||||||
buffer.try_account_ref_mut()?.lamports = 0;
|
buffer.try_account_ref_mut()?.set_lamports(0);
|
||||||
|
|
||||||
ic_logger_msg!(logger, "Deployed program {:?}", program.unsigned_key());
|
ic_logger_msg!(logger, "Deployed program {:?}", program.unsigned_key());
|
||||||
}
|
}
|
||||||
|
@ -553,8 +553,10 @@ fn process_loader_upgradeable_instruction(
|
||||||
(programdata.lamports()? + buffer.lamports()?)
|
(programdata.lamports()? + buffer.lamports()?)
|
||||||
.saturating_sub(programdata_balance_required),
|
.saturating_sub(programdata_balance_required),
|
||||||
)?;
|
)?;
|
||||||
buffer.try_account_ref_mut()?.lamports = 0;
|
buffer.try_account_ref_mut()?.set_lamports(0);
|
||||||
programdata.try_account_ref_mut()?.lamports = programdata_balance_required;
|
programdata
|
||||||
|
.try_account_ref_mut()?
|
||||||
|
.set_lamports(programdata_balance_required);
|
||||||
|
|
||||||
ic_logger_msg!(logger, "Upgraded program {:?}", program.unsigned_key());
|
ic_logger_msg!(logger, "Upgraded program {:?}", program.unsigned_key());
|
||||||
}
|
}
|
||||||
|
@ -646,7 +648,7 @@ fn process_loader_upgradeable_instruction(
|
||||||
recipient_account
|
recipient_account
|
||||||
.try_account_ref_mut()?
|
.try_account_ref_mut()?
|
||||||
.checked_add_lamports(close_account.lamports()?)?;
|
.checked_add_lamports(close_account.lamports()?)?;
|
||||||
close_account.try_account_ref_mut()?.lamports = 0;
|
close_account.try_account_ref_mut()?.set_lamports(0);
|
||||||
for elt in close_account.try_account_ref_mut()?.data_as_mut_slice() {
|
for elt in close_account.try_account_ref_mut()?.data_as_mut_slice() {
|
||||||
*elt = 0;
|
*elt = 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -138,8 +138,9 @@ pub fn deserialize_parameters_unaligned(
|
||||||
start += size_of::<u8>(); // is_signer
|
start += size_of::<u8>(); // is_signer
|
||||||
start += size_of::<u8>(); // is_writable
|
start += size_of::<u8>(); // is_writable
|
||||||
start += size_of::<Pubkey>(); // key
|
start += size_of::<Pubkey>(); // key
|
||||||
keyed_account.try_account_ref_mut()?.lamports =
|
keyed_account
|
||||||
LittleEndian::read_u64(&buffer[start..]);
|
.try_account_ref_mut()?
|
||||||
|
.set_lamports(LittleEndian::read_u64(&buffer[start..]));
|
||||||
start += size_of::<u64>() // lamports
|
start += size_of::<u64>() // lamports
|
||||||
+ size_of::<u64>(); // data length
|
+ size_of::<u64>(); // data length
|
||||||
let end = start + keyed_account.data_len()?;
|
let end = start + keyed_account.data_len()?;
|
||||||
|
@ -269,7 +270,7 @@ pub fn deserialize_parameters_aligned(
|
||||||
+ size_of::<Pubkey>(); // key
|
+ size_of::<Pubkey>(); // key
|
||||||
account.copy_into_owner_from_slice(&buffer[start..start + size_of::<Pubkey>()]);
|
account.copy_into_owner_from_slice(&buffer[start..start + size_of::<Pubkey>()]);
|
||||||
start += size_of::<Pubkey>(); // owner
|
start += size_of::<Pubkey>(); // owner
|
||||||
account.lamports = LittleEndian::read_u64(&buffer[start..]);
|
account.set_lamports(LittleEndian::read_u64(&buffer[start..]));
|
||||||
start += size_of::<u64>(); // lamports
|
start += size_of::<u64>(); // lamports
|
||||||
let pre_len = account.data().len();
|
let pre_len = account.data().len();
|
||||||
let post_len = LittleEndian::read_u64(&buffer[start..]) as usize;
|
let post_len = LittleEndian::read_u64(&buffer[start..]) as usize;
|
||||||
|
|
|
@ -140,7 +140,9 @@ pub fn process_instruction(
|
||||||
if let Some(payment) = expr.final_payment() {
|
if let Some(payment) = expr.final_payment() {
|
||||||
let to_keyed_account = contract_keyed_account;
|
let to_keyed_account = contract_keyed_account;
|
||||||
let contract_keyed_account = keyed_account_at_index(keyed_accounts, 1)?;
|
let contract_keyed_account = keyed_account_at_index(keyed_accounts, 1)?;
|
||||||
contract_keyed_account.try_account_ref_mut()?.lamports = 0;
|
contract_keyed_account
|
||||||
|
.try_account_ref_mut()?
|
||||||
|
.set_lamports(0);
|
||||||
to_keyed_account
|
to_keyed_account
|
||||||
.try_account_ref_mut()?
|
.try_account_ref_mut()?
|
||||||
.checked_add_lamports(payment.lamports)?;
|
.checked_add_lamports(payment.lamports)?;
|
||||||
|
|
Loading…
Reference in New Issue