tape-example 0.1.5

Your data, permanently recorded — uncensorable, uneditable, and here for good.
Documentation
use solana_sdk::{
    signature::Keypair, 
    signer::Signer,
    transaction::Transaction,
    pubkey::Pubkey
};

use super::send_tx;
use litesvm::LiteSVM;
use tape_api::prelude::*;

pub fn init_tape_program(svm: &mut LiteSVM, payer: &Keypair) {
    let payer_pk = payer.pubkey();

    let ix = build_initialize_ix(payer_pk);
    let blockhash = svm.latest_blockhash();
    let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer_pk), &[&payer], blockhash);
    let res = send_tx(svm, tx);

    assert!(res.is_ok());
}

pub fn create_tape(svm: &mut LiteSVM, payer: &Keypair, tape_name: &str) -> (Pubkey, Pubkey) {
    let payer_pk = payer.pubkey();
    let (tape_address, _) = tape_pda(payer_pk, &to_name(&tape_name));
    let (writer_address, _) = writer_pda(tape_address);

    let blockhash = svm.latest_blockhash();
    let ix = build_create_ix(payer_pk, &tape_name);
    let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer_pk), &[&payer], blockhash);
    let res = send_tx(svm, tx);
    assert!(res.is_ok());

    (tape_address, writer_address)
}