mirror of
https://github.com/d0zingcat/ore.git
synced 2026-06-05 23:26:46 +00:00
open up introspection to allow for other programs
This commit is contained in:
@@ -63,7 +63,7 @@ pub fn process_mine<'a, 'info>(
|
|||||||
load_sysvar(slot_hashes_sysvar, sysvar::slot_hashes::id())?;
|
load_sysvar(slot_hashes_sysvar, sysvar::slot_hashes::id())?;
|
||||||
|
|
||||||
// Validate this is the only mine ix in the transaction.
|
// Validate this is the only mine ix in the transaction.
|
||||||
if !validate_transaction(&instructions_sysvar.data.borrow()).unwrap_or(false) {
|
if !introspect_transaction(&instructions_sysvar.data.borrow()).unwrap_or(false) {
|
||||||
return Err(OreError::TransactionInvalid.into());
|
return Err(OreError::TransactionInvalid.into());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -94,9 +94,6 @@ pub fn process_mine<'a, 'info>(
|
|||||||
if difficulty.lt(&MIN_DIFFICULTY) {
|
if difficulty.lt(&MIN_DIFFICULTY) {
|
||||||
return Err(OreError::HashTooEasy.into());
|
return Err(OreError::HashTooEasy.into());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calculate base reward rate.
|
|
||||||
let difficulty = difficulty.saturating_sub(MIN_DIFFICULTY);
|
|
||||||
let mut reward = config
|
let mut reward = config
|
||||||
.base_reward_rate
|
.base_reward_rate
|
||||||
.saturating_mul(2u64.saturating_pow(difficulty));
|
.saturating_mul(2u64.saturating_pow(difficulty));
|
||||||
@@ -187,7 +184,7 @@ pub fn process_mine<'a, 'info>(
|
|||||||
///
|
///
|
||||||
/// If each transaction is limited to one hash only, then a user will minimize their fee / hash
|
/// If each transaction is limited to one hash only, then a user will minimize their fee / hash
|
||||||
/// by allocating all their hashpower to finding the single most difficult hash they can.
|
/// by allocating all their hashpower to finding the single most difficult hash they can.
|
||||||
fn validate_transaction(msg: &[u8]) -> Result<bool, SanitizeError> {
|
fn introspect_transaction(msg: &[u8]) -> Result<bool, SanitizeError> {
|
||||||
#[allow(deprecated)]
|
#[allow(deprecated)]
|
||||||
let idx = load_current_index(msg);
|
let idx = load_current_index(msg);
|
||||||
let mut c = 0;
|
let mut c = 0;
|
||||||
@@ -198,7 +195,6 @@ fn validate_transaction(msg: &[u8]) -> Result<bool, SanitizeError> {
|
|||||||
c = read_u16(&mut c, msg)? as usize;
|
c = read_u16(&mut c, msg)? as usize;
|
||||||
let num_accounts = read_u16(&mut c, msg)? as usize;
|
let num_accounts = read_u16(&mut c, msg)? as usize;
|
||||||
c += num_accounts * 33;
|
c += num_accounts * 33;
|
||||||
// Only allow instructions to call ore and the compute budget program.
|
|
||||||
match read_pubkey(&mut c, msg)? {
|
match read_pubkey(&mut c, msg)? {
|
||||||
ore_api::ID => {
|
ore_api::ID => {
|
||||||
c += 2;
|
c += 2;
|
||||||
@@ -212,13 +208,9 @@ fn validate_transaction(msg: &[u8]) -> Result<bool, SanitizeError> {
|
|||||||
return Ok(false);
|
return Ok(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
COMPUTE_BUDGET_PROGRAM_ID => {} // Noop
|
_ => {} // Noop return Ok(false),
|
||||||
_ => return Ok(false),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(true)
|
Ok(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Program id of the compute budge program.
|
|
||||||
const COMPUTE_BUDGET_PROGRAM_ID: Pubkey = pubkey!("ComputeBudget111111111111111111111111111111");
|
|
||||||
|
|||||||
Reference in New Issue
Block a user