Solana에서 계정 크기를 변경하는 방법
4332 단어 solanablockchaintutorial
이제 계정 크기를 동적으로 변경할 수 있습니다.
재할당
Realloc 기능은 슬롯 133920008 또는 2022년 5월 15일부터 활성화되었습니다.
realloc
은 AccountInfo
구조체의 새로운 메서드로, 계정의 새 크기를 설정할 수 있습니다.realloc
방법:pub fn realloc(
&self,
new_len: usize,
zero_init: bool
) -> Result<(), ProgramError>
new_len
는 새 크기(바이트)로 정의됩니다zero_init
는 동일한 명령에서 계정 크기가 작게 조정된 다음 다시 크게 조정되는 경우 새 바이트를 0으로 만드는 데 사용됩니다. 제한 사항:
재할당 사용 방법
계정 크기를 변경할 때 계정이 여전히 임대료 면제인지 확인해야 합니다. 변경 전에 새 임대료 요구 사항을 계산하고 계정에 자금을 조달할 수 있습니다.
let new_size = pda_account.data.borrow().len() + 32;
let rent = Rent::get()?;
let new_minimum_balance = rent.minimum_balance(new_size);
let lamports_diff = new_minimum_balance.saturating_sub(pda_account.lamports());
invoke(
&system_instruction::transfer(funding_account.key, pda_account.key, lamports_diff),
&[
funding_account.clone(),
pda_account.clone(),
system_program.clone(),
],
)?;
계정이 새 계정 크기로 임대료 면제 상태를 달성했음을 보장하면 계정을 재할당할 수 있습니다.
pda_account.realloc(new_size, false)?;
그게 다야!
전체 코드 예제here를 찾을 수 있습니다.
사용 사례
계정 크기를 동적으로 변경하면 수많은 새로운 사용 사례의 문이 열립니다.
다음을 수행할 수 있습니다.
그리고 훨씬 더!
Reference
이 문제에 관하여(Solana에서 계정 크기를 변경하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jacobcreech/how-to-change-account-size-on-solana-55b4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)