Update programs using simple error mapping to use CustomError
This commit is contained in:
parent
db5370c5df
commit
1a9ef37251
|
@ -2327,6 +2327,7 @@ dependencies = [
|
||||||
"bincode 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bincode 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-runtime 0.12.0",
|
"solana-runtime 0.12.0",
|
||||||
"solana-sdk 0.12.0",
|
"solana-sdk 0.12.0",
|
||||||
]
|
]
|
||||||
|
|
|
@ -5,7 +5,7 @@ use log::*;
|
||||||
use solana_sdk::account::KeyedAccount;
|
use solana_sdk::account::KeyedAccount;
|
||||||
use solana_sdk::native_program::ProgramError;
|
use solana_sdk::native_program::ProgramError;
|
||||||
use solana_sdk::pubkey::Pubkey;
|
use solana_sdk::pubkey::Pubkey;
|
||||||
use solana_sdk::solana_entrypoint;
|
use solana_sdk::{custom_error, solana_entrypoint};
|
||||||
|
|
||||||
solana_entrypoint!(entrypoint);
|
solana_entrypoint!(entrypoint);
|
||||||
fn entrypoint(
|
fn entrypoint(
|
||||||
|
@ -18,5 +18,6 @@ fn entrypoint(
|
||||||
|
|
||||||
trace!("process_instruction: {:?}", data);
|
trace!("process_instruction: {:?}", data);
|
||||||
trace!("keyed_accounts: {:?}", keyed_accounts);
|
trace!("keyed_accounts: {:?}", keyed_accounts);
|
||||||
process_instruction(program_id, keyed_accounts, data).map_err(|_| ProgramError::GenericError)
|
process_instruction(program_id, keyed_accounts, data)
|
||||||
|
.map_err(|e| ProgramError::CustomError(custom_error!(e)))
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ edition = "2018"
|
||||||
bincode = "1.1.2"
|
bincode = "1.1.2"
|
||||||
log = "0.4.2"
|
log = "0.4.2"
|
||||||
serde = "1.0.89"
|
serde = "1.0.89"
|
||||||
|
serde_derive = "1.0.89"
|
||||||
solana-sdk = { path = "../../sdk", version = "0.12.0" }
|
solana-sdk = { path = "../../sdk", version = "0.12.0" }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
use log::*;
|
use log::*;
|
||||||
|
use serde_derive::Serialize;
|
||||||
use solana_sdk::account::KeyedAccount;
|
use solana_sdk::account::KeyedAccount;
|
||||||
|
use solana_sdk::custom_error;
|
||||||
use solana_sdk::native_program::ProgramError;
|
use solana_sdk::native_program::ProgramError;
|
||||||
use solana_sdk::pubkey::Pubkey;
|
use solana_sdk::pubkey::Pubkey;
|
||||||
use solana_sdk::system_instruction::SystemInstruction;
|
use solana_sdk::system_instruction::SystemInstruction;
|
||||||
|
@ -8,7 +10,7 @@ use solana_sdk::system_program;
|
||||||
const FROM_ACCOUNT_INDEX: usize = 0;
|
const FROM_ACCOUNT_INDEX: usize = 0;
|
||||||
const TO_ACCOUNT_INDEX: usize = 1;
|
const TO_ACCOUNT_INDEX: usize = 1;
|
||||||
|
|
||||||
#[derive(Debug, Clone, PartialEq)]
|
#[derive(Serialize, Debug, Clone, PartialEq)]
|
||||||
enum SystemError {
|
enum SystemError {
|
||||||
AccountAlreadyInUse,
|
AccountAlreadyInUse,
|
||||||
ResultWithNegativeLamports,
|
ResultWithNegativeLamports,
|
||||||
|
@ -96,11 +98,10 @@ pub fn entrypoint(
|
||||||
program_id,
|
program_id,
|
||||||
} => create_system_account(keyed_accounts, lamports, space, &program_id).map_err(|e| {
|
} => create_system_account(keyed_accounts, lamports, space, &program_id).map_err(|e| {
|
||||||
match e {
|
match e {
|
||||||
SystemError::AccountAlreadyInUse => ProgramError::InvalidArgument,
|
|
||||||
SystemError::ResultWithNegativeLamports => {
|
SystemError::ResultWithNegativeLamports => {
|
||||||
ProgramError::ResultWithNegativeLamports
|
ProgramError::ResultWithNegativeLamports
|
||||||
}
|
}
|
||||||
SystemError::SourceNotSystemAccount => ProgramError::InvalidArgument,
|
e => ProgramError::CustomError(custom_error!(e)),
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
SystemInstruction::Assign { program_id } => {
|
SystemInstruction::Assign { program_id } => {
|
||||||
|
|
|
@ -2,7 +2,7 @@ use log::*;
|
||||||
use solana_sdk::account::KeyedAccount;
|
use solana_sdk::account::KeyedAccount;
|
||||||
use solana_sdk::native_program::ProgramError;
|
use solana_sdk::native_program::ProgramError;
|
||||||
use solana_sdk::pubkey::Pubkey;
|
use solana_sdk::pubkey::Pubkey;
|
||||||
use solana_sdk::solana_entrypoint;
|
use solana_sdk::{custom_error, solana_entrypoint};
|
||||||
|
|
||||||
mod token_program;
|
mod token_program;
|
||||||
|
|
||||||
|
@ -17,6 +17,6 @@ fn entrypoint(
|
||||||
|
|
||||||
token_program::TokenProgram::process(program_id, info, input).map_err(|err| {
|
token_program::TokenProgram::process(program_id, info, input).map_err(|err| {
|
||||||
error!("error: {:?}", err);
|
error!("error: {:?}", err);
|
||||||
ProgramError::GenericError
|
ProgramError::CustomError(custom_error!(err))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ use solana_sdk::account::KeyedAccount;
|
||||||
use solana_sdk::pubkey::Pubkey;
|
use solana_sdk::pubkey::Pubkey;
|
||||||
use std;
|
use std;
|
||||||
|
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Serialize, Debug, PartialEq)]
|
||||||
pub enum Error {
|
pub enum Error {
|
||||||
InvalidArgument,
|
InvalidArgument,
|
||||||
InsufficentFunds,
|
InsufficentFunds,
|
||||||
|
|
Loading…
Reference in New Issue