Skip to content

Commit

Permalink
move wasm impl for SystemInstruction to system-instruction crate
Browse files Browse the repository at this point in the history
  • Loading branch information
kevinheavey committed Oct 5, 2024
1 parent fbfd243 commit eb55c82
Show file tree
Hide file tree
Showing 6 changed files with 130 additions and 112 deletions.
2 changes: 2 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions programs/sbf/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

115 changes: 3 additions & 112 deletions sdk/program/src/wasm/system_instruction.rs
Original file line number Diff line number Diff line change
@@ -1,112 +1,3 @@
//! `SystemInstruction` Javascript interface
#![cfg(target_arch = "wasm32")]
#![allow(non_snake_case)]
use {
crate::{instruction::Instruction, pubkey::Pubkey, system_instruction::*},
wasm_bindgen::prelude::*,
};

#[wasm_bindgen]
impl SystemInstruction {
pub fn createAccount(
from_pubkey: &Pubkey,
to_pubkey: &Pubkey,
lamports: u64,
space: u64,
owner: &Pubkey,
) -> Instruction {
create_account(from_pubkey, to_pubkey, lamports, space, owner)
}

pub fn createAccountWithSeed(
from_pubkey: &Pubkey,
to_pubkey: &Pubkey,
base: &Pubkey,
seed: &str,
lamports: u64,
space: u64,
owner: &Pubkey,
) -> Instruction {
create_account_with_seed(from_pubkey, to_pubkey, base, seed, lamports, space, owner)
}

pub fn assign(pubkey: &Pubkey, owner: &Pubkey) -> Instruction {
assign(pubkey, owner)
}

pub fn assignWithSeed(
pubkey: &Pubkey,
base: &Pubkey,
seed: &str,
owner: &Pubkey,
) -> Instruction {
assign_with_seed(pubkey, base, seed, owner)
}

pub fn transfer(from_pubkey: &Pubkey, to_pubkey: &Pubkey, lamports: u64) -> Instruction {
transfer(from_pubkey, to_pubkey, lamports)
}

pub fn transferWithSeed(
from_pubkey: &Pubkey,
from_base: &Pubkey,
from_seed: String,
from_owner: &Pubkey,
to_pubkey: &Pubkey,
lamports: u64,
) -> Instruction {
transfer_with_seed(
from_pubkey,
from_base,
from_seed,
from_owner,
to_pubkey,
lamports,
)
}

pub fn allocate(pubkey: &Pubkey, space: u64) -> Instruction {
allocate(pubkey, space)
}

pub fn allocateWithSeed(
address: &Pubkey,
base: &Pubkey,
seed: &str,
space: u64,
owner: &Pubkey,
) -> Instruction {
allocate_with_seed(address, base, seed, space, owner)
}

pub fn createNonceAccount(
from_pubkey: &Pubkey,
nonce_pubkey: &Pubkey,
authority: &Pubkey,
lamports: u64,
) -> js_sys::Array {
let instructions = create_nonce_account(from_pubkey, nonce_pubkey, authority, lamports);
instructions.into_iter().map(JsValue::from).collect()
}

pub fn advanceNonceAccount(nonce_pubkey: &Pubkey, authorized_pubkey: &Pubkey) -> Instruction {
advance_nonce_account(nonce_pubkey, authorized_pubkey)
}

pub fn withdrawNonceAccount(
nonce_pubkey: &Pubkey,
authorized_pubkey: &Pubkey,
to_pubkey: &Pubkey,
lamports: u64,
) -> Instruction {
withdraw_nonce_account(nonce_pubkey, authorized_pubkey, to_pubkey, lamports)
}

pub fn authorizeNonceAccount(
nonce_pubkey: &Pubkey,
authorized_pubkey: &Pubkey,
new_authority: &Pubkey,
) -> Instruction {
authorize_nonce_account(nonce_pubkey, authorized_pubkey, new_authority)
}
}
//! Left empty because deleting this module would technically be a breaking change,
//! but there was never anything you could import from here.
// TODO: delete this in next breaking change.
4 changes: 4 additions & 0 deletions sdk/system-instruction/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ solana-instruction = { workspace = true, features = ["bincode", "std"] }
solana-logger = { workspace = true, optional = true }
solana-pubkey = { workspace = true, default-features = false, features = ["serde"] }

[target.'cfg(target_arch = "wasm32")'.dependencies]
js-sys = { workspace = true }
wasm-bindgen = { workspace = true }

[dev-dependencies]
anyhow = { workspace = true }
borsh = { workspace = true }
Expand Down
2 changes: 2 additions & 0 deletions sdk/system-instruction/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ use {
solana_instruction::{AccountMeta, Instruction},
solana_pubkey::Pubkey,
};
#[cfg(target_arch = "wasm32")]
mod wasm;

// inline some constants to avoid dependencies
const RECENT_BLOCKHASHES_ID: Pubkey =
Expand Down
117 changes: 117 additions & 0 deletions sdk/system-instruction/src/wasm.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
//! `SystemInstruction` Javascript interface
#![allow(non_snake_case)]
use {
crate::{
advance_nonce_account, allocate, allocate_with_seed, assign, assign_with_seed,
authorize_nonce_account, create_account, create_account_with_seed, create_nonce_account,
transfer, transfer_with_seed, withdraw_nonce_account, SystemInstruction,
},
solana_instruction::Instruction,
solana_pubkey::Pubkey,
wasm_bindgen::prelude::*,
};

#[wasm_bindgen]
impl SystemInstruction {
pub fn createAccount(
from_pubkey: &Pubkey,
to_pubkey: &Pubkey,
lamports: u64,
space: u64,
owner: &Pubkey,
) -> Instruction {
create_account(from_pubkey, to_pubkey, lamports, space, owner)
}

pub fn createAccountWithSeed(
from_pubkey: &Pubkey,
to_pubkey: &Pubkey,
base: &Pubkey,
seed: &str,
lamports: u64,
space: u64,
owner: &Pubkey,
) -> Instruction {
create_account_with_seed(from_pubkey, to_pubkey, base, seed, lamports, space, owner)
}

pub fn assign(pubkey: &Pubkey, owner: &Pubkey) -> Instruction {
assign(pubkey, owner)
}

pub fn assignWithSeed(
pubkey: &Pubkey,
base: &Pubkey,
seed: &str,
owner: &Pubkey,
) -> Instruction {
assign_with_seed(pubkey, base, seed, owner)
}

pub fn transfer(from_pubkey: &Pubkey, to_pubkey: &Pubkey, lamports: u64) -> Instruction {
transfer(from_pubkey, to_pubkey, lamports)
}

pub fn transferWithSeed(
from_pubkey: &Pubkey,
from_base: &Pubkey,
from_seed: String,
from_owner: &Pubkey,
to_pubkey: &Pubkey,
lamports: u64,
) -> Instruction {
transfer_with_seed(
from_pubkey,
from_base,
from_seed,
from_owner,
to_pubkey,
lamports,
)
}

pub fn allocate(pubkey: &Pubkey, space: u64) -> Instruction {
allocate(pubkey, space)
}

pub fn allocateWithSeed(
address: &Pubkey,
base: &Pubkey,
seed: &str,
space: u64,
owner: &Pubkey,
) -> Instruction {
allocate_with_seed(address, base, seed, space, owner)
}

pub fn createNonceAccount(
from_pubkey: &Pubkey,
nonce_pubkey: &Pubkey,
authority: &Pubkey,
lamports: u64,
) -> js_sys::Array {
let instructions = create_nonce_account(from_pubkey, nonce_pubkey, authority, lamports);
instructions.into_iter().map(JsValue::from).collect()
}

pub fn advanceNonceAccount(nonce_pubkey: &Pubkey, authorized_pubkey: &Pubkey) -> Instruction {
advance_nonce_account(nonce_pubkey, authorized_pubkey)
}

pub fn withdrawNonceAccount(
nonce_pubkey: &Pubkey,
authorized_pubkey: &Pubkey,
to_pubkey: &Pubkey,
lamports: u64,
) -> Instruction {
withdraw_nonce_account(nonce_pubkey, authorized_pubkey, to_pubkey, lamports)
}

pub fn authorizeNonceAccount(
nonce_pubkey: &Pubkey,
authorized_pubkey: &Pubkey,
new_authority: &Pubkey,
) -> Instruction {
authorize_nonce_account(nonce_pubkey, authorized_pubkey, new_authority)
}
}

0 comments on commit eb55c82

Please sign in to comment.