Update solana patches
This commit is contained in:
parent
256439b766
commit
135b98e556
|
@ -3,8 +3,8 @@ IDEA additional info:
|
||||||
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||||
<+>UTF-8
|
<+>UTF-8
|
||||||
===================================================================
|
===================================================================
|
||||||
--- Cargo.lock (revision d84010e4afe5f79c812ff7da349460dc690a8392)
|
--- Cargo.lock (revision e2d66cf796484301668c2b45804e31610373a0e9)
|
||||||
+++ Cargo.lock (revision aa30fbafe08be98cfbea6772040d5f3b073877b0)
|
+++ Cargo.lock (revision 26c89c185550ea921e19b040b08abd6811607d86)
|
||||||
@@ -274,12 +274,22 @@
|
@@ -274,12 +274,22 @@
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b"
|
checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b"
|
||||||
|
@ -211,8 +211,8 @@ IDEA additional info:
|
||||||
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||||
<+>UTF-8
|
<+>UTF-8
|
||||||
===================================================================
|
===================================================================
|
||||||
--- programs/bpf_loader/Cargo.toml (revision d84010e4afe5f79c812ff7da349460dc690a8392)
|
--- programs/bpf_loader/Cargo.toml (revision e2d66cf796484301668c2b45804e31610373a0e9)
|
||||||
+++ programs/bpf_loader/Cargo.toml (revision aa30fbafe08be98cfbea6772040d5f3b073877b0)
|
+++ programs/bpf_loader/Cargo.toml (revision 26c89c185550ea921e19b040b08abd6811607d86)
|
||||||
@@ -17,6 +17,10 @@
|
@@ -17,6 +17,10 @@
|
||||||
solana-sdk = { path = "../../sdk", version = "1.4.0" }
|
solana-sdk = { path = "../../sdk", version = "1.4.0" }
|
||||||
solana_rbpf = "=0.1.28"
|
solana_rbpf = "=0.1.28"
|
||||||
|
@ -229,8 +229,8 @@ IDEA additional info:
|
||||||
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||||
<+>UTF-8
|
<+>UTF-8
|
||||||
===================================================================
|
===================================================================
|
||||||
--- programs/bpf_loader/src/crypto.rs (revision aa30fbafe08be98cfbea6772040d5f3b073877b0)
|
--- programs/bpf_loader/src/crypto.rs (revision 26c89c185550ea921e19b040b08abd6811607d86)
|
||||||
+++ programs/bpf_loader/src/crypto.rs (revision aa30fbafe08be98cfbea6772040d5f3b073877b0)
|
+++ programs/bpf_loader/src/crypto.rs (revision 26c89c185550ea921e19b040b08abd6811607d86)
|
||||||
@@ -0,0 +1,171 @@
|
@@ -0,0 +1,171 @@
|
||||||
+pub extern crate secp256k1;
|
+pub extern crate secp256k1;
|
||||||
+
|
+
|
||||||
|
@ -408,8 +408,8 @@ IDEA additional info:
|
||||||
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||||
<+>UTF-8
|
<+>UTF-8
|
||||||
===================================================================
|
===================================================================
|
||||||
--- programs/bpf_loader/src/lib.rs (revision d84010e4afe5f79c812ff7da349460dc690a8392)
|
--- programs/bpf_loader/src/lib.rs (revision e2d66cf796484301668c2b45804e31610373a0e9)
|
||||||
+++ programs/bpf_loader/src/lib.rs (revision aa30fbafe08be98cfbea6772040d5f3b073877b0)
|
+++ programs/bpf_loader/src/lib.rs (revision 2c10215589be61459a5f22c2fff7f7575705f667)
|
||||||
@@ -4,6 +4,10 @@
|
@@ -4,6 +4,10 @@
|
||||||
pub mod deprecated;
|
pub mod deprecated;
|
||||||
pub mod serialization;
|
pub mod serialization;
|
||||||
|
@ -421,13 +421,22 @@ Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
bpf_verifier::VerifierError,
|
bpf_verifier::VerifierError,
|
||||||
|
@@ -65,7 +69,7 @@
|
||||||
|
) -> Result<(EbpfVm<'a, BPFError>, MemoryRegion), EbpfError<BPFError>> {
|
||||||
|
let mut vm = EbpfVm::new(None)?;
|
||||||
|
vm.set_verifier(bpf_verifier::check)?;
|
||||||
|
- vm.set_max_instruction_count(100_000)?;
|
||||||
|
+ vm.set_max_instruction_count(1_000_000)?;
|
||||||
|
vm.set_elf(&prog)?;
|
||||||
|
|
||||||
|
let heap_region = syscalls::register_syscalls(&mut vm, parameter_accounts, invoke_context)?;
|
||||||
Index: programs/bpf_loader/src/syscalls.rs
|
Index: programs/bpf_loader/src/syscalls.rs
|
||||||
IDEA additional info:
|
IDEA additional info:
|
||||||
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||||
<+>UTF-8
|
<+>UTF-8
|
||||||
===================================================================
|
===================================================================
|
||||||
--- programs/bpf_loader/src/syscalls.rs (revision d84010e4afe5f79c812ff7da349460dc690a8392)
|
--- programs/bpf_loader/src/syscalls.rs (revision e2d66cf796484301668c2b45804e31610373a0e9)
|
||||||
+++ programs/bpf_loader/src/syscalls.rs (revision aa30fbafe08be98cfbea6772040d5f3b073877b0)
|
+++ programs/bpf_loader/src/syscalls.rs (revision 26c89c185550ea921e19b040b08abd6811607d86)
|
||||||
@@ -1,10 +1,23 @@
|
@@ -1,10 +1,23 @@
|
||||||
-use crate::{alloc, BPFError};
|
-use crate::{alloc, BPFError};
|
||||||
-use alloc::Alloc;
|
-use alloc::Alloc;
|
||||||
|
@ -505,28 +514,24 @@ Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||||
/// Default program heap size, allocators
|
/// Default program heap size, allocators
|
||||||
/// are expected to enforce this
|
/// are expected to enforce this
|
||||||
const DEFAULT_HEAP_SIZE: usize = 32 * 1024;
|
const DEFAULT_HEAP_SIZE: usize = 32 * 1024;
|
||||||
@@ -114,6 +120,20 @@
|
@@ -114,6 +120,16 @@
|
||||||
invoke_context: invoke_context.clone(),
|
)?;
|
||||||
}),
|
}
|
||||||
)?;
|
|
||||||
+
|
|
||||||
+ // Signature verification
|
+ // Signature verification
|
||||||
+ vm.register_syscall_with_context_ex(
|
+ vm.register_syscall_with_context_ex(
|
||||||
+ "sol_verify_ethschnorr",
|
+ "sol_verify_ethschnorr",
|
||||||
+ Box::new(SyscallSchorrify {
|
+ Box::new(SyscallSchorrify {}),
|
||||||
+ invoke_context: invoke_context.clone(),
|
|
||||||
+ }),
|
|
||||||
+ )?;
|
+ )?;
|
||||||
+ vm.register_syscall_with_context_ex(
|
+ vm.register_syscall_with_context_ex(
|
||||||
+ "sol_ecrecover",
|
+ "sol_ecrecover",
|
||||||
+ Box::new(SyscallEcrecover {
|
+ Box::new(SyscallEcrecover {}),
|
||||||
+ invoke_context: invoke_context.clone(),
|
|
||||||
+ }),
|
|
||||||
+ )?;
|
+ )?;
|
||||||
|
+
|
||||||
// Memory allocator
|
// Memory allocator
|
||||||
let heap = vec![0_u8; DEFAULT_HEAP_SIZE];
|
let heap = vec![0_u8; DEFAULT_HEAP_SIZE];
|
||||||
@@ -256,6 +276,7 @@
|
let heap_region = MemoryRegion::new_from_slice(&heap, MM_HEAP_START);
|
||||||
|
@@ -255,6 +271,7 @@
|
||||||
pub struct SyscallLog {
|
pub struct SyscallLog {
|
||||||
logger: Rc<RefCell<dyn Logger>>,
|
logger: Rc<RefCell<dyn Logger>>,
|
||||||
}
|
}
|
||||||
|
@ -534,7 +539,7 @@ Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||||
impl SyscallObject<BPFError> for SyscallLog {
|
impl SyscallObject<BPFError> for SyscallLog {
|
||||||
fn call(
|
fn call(
|
||||||
&mut self,
|
&mut self,
|
||||||
@@ -285,6 +306,7 @@
|
@@ -284,6 +301,7 @@
|
||||||
pub struct SyscallLogU64 {
|
pub struct SyscallLogU64 {
|
||||||
logger: Rc<RefCell<dyn Logger>>,
|
logger: Rc<RefCell<dyn Logger>>,
|
||||||
}
|
}
|
||||||
|
@ -542,7 +547,7 @@ Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||||
impl SyscallObject<BPFError> for SyscallLogU64 {
|
impl SyscallObject<BPFError> for SyscallLogU64 {
|
||||||
fn call(
|
fn call(
|
||||||
&mut self,
|
&mut self,
|
||||||
@@ -319,6 +341,7 @@
|
@@ -318,6 +336,7 @@
|
||||||
pub struct SyscallSolAllocFree {
|
pub struct SyscallSolAllocFree {
|
||||||
allocator: BPFAllocator,
|
allocator: BPFAllocator,
|
||||||
}
|
}
|
||||||
|
@ -550,24 +555,15 @@ Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||||
impl SyscallObject<BPFError> for SyscallSolAllocFree {
|
impl SyscallObject<BPFError> for SyscallSolAllocFree {
|
||||||
fn call(
|
fn call(
|
||||||
&mut self,
|
&mut self,
|
||||||
@@ -373,6 +396,105 @@
|
@@ -380,6 +399,87 @@
|
||||||
Ok(0)
|
Ok(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
+/// Verify a ETH optimized Schnorr Signature
|
+/// Verify a ETH optimized Schnorr Signature
|
||||||
+pub struct SyscallEcrecover<'a> {
|
+pub struct SyscallEcrecover {
|
||||||
+ invoke_context: Rc<RefCell<&'a mut dyn InvokeContext>>,
|
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+impl<'a> SyscallEcrecover<'a> {
|
+impl SyscallObject<BPFError> for SyscallEcrecover {
|
||||||
+ fn get_context_mut(&self) -> Result<RefMut<&'a mut dyn InvokeContext>, EbpfError<BPFError>> {
|
|
||||||
+ self.invoke_context
|
|
||||||
+ .try_borrow_mut()
|
|
||||||
+ .map_err(|_| SyscallError::InvokeContextBorrowFailed.into())
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+impl<'a> SyscallObject<BPFError> for SyscallEcrecover<'a> {
|
|
||||||
+ fn call(
|
+ fn call(
|
||||||
+ &mut self,
|
+ &mut self,
|
||||||
+ input: u64,
|
+ input: u64,
|
||||||
|
@ -606,7 +602,7 @@ Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||||
+ &recovery_id) {
|
+ &recovery_id) {
|
||||||
+ Ok(v) => {
|
+ Ok(v) => {
|
||||||
+ let mut addr = [0u8; 20];
|
+ let mut addr = [0u8; 20];
|
||||||
+ addr.copy_from_slice(&sha3::Keccak256::digest(&v.serialize())[12..]);
|
+ addr.copy_from_slice(&sha3::Keccak256::digest(&v.serialize()[1..])[12..]);
|
||||||
+ output.address = addr;
|
+ output.address = addr;
|
||||||
+ }
|
+ }
|
||||||
+ Err(_) => {
|
+ Err(_) => {
|
||||||
|
@ -619,19 +615,10 @@ Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+/// Verify a ETH optimized Schnorr Signature
|
+/// Verify a ETH optimized Schnorr Signature
|
||||||
+pub struct SyscallSchorrify<'a> {
|
+pub struct SyscallSchorrify {
|
||||||
+ invoke_context: Rc<RefCell<&'a mut dyn InvokeContext>>,
|
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+impl<'a> SyscallSchorrify<'a> {
|
+impl SyscallObject<BPFError> for SyscallSchorrify {
|
||||||
+ fn get_context_mut(&self) -> Result<RefMut<&'a mut dyn InvokeContext>, EbpfError<BPFError>> {
|
|
||||||
+ self.invoke_context
|
|
||||||
+ .try_borrow_mut()
|
|
||||||
+ .map_err(|_| SyscallError::InvokeContextBorrowFailed.into())
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+impl<'a> SyscallObject<BPFError> for SyscallSchorrify<'a> {
|
|
||||||
+ fn call(
|
+ fn call(
|
||||||
+ &mut self,
|
+ &mut self,
|
||||||
+ addr: u64,
|
+ addr: u64,
|
||||||
|
@ -656,7 +643,7 @@ Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||||
// Cross-program invocation syscalls
|
// Cross-program invocation syscalls
|
||||||
|
|
||||||
struct AccountReferences<'a> {
|
struct AccountReferences<'a> {
|
||||||
@@ -415,6 +537,7 @@
|
@@ -422,6 +522,7 @@
|
||||||
callers_keyed_accounts: &'a [KeyedAccount<'a>],
|
callers_keyed_accounts: &'a [KeyedAccount<'a>],
|
||||||
invoke_context: Rc<RefCell<&'a mut dyn InvokeContext>>,
|
invoke_context: Rc<RefCell<&'a mut dyn InvokeContext>>,
|
||||||
}
|
}
|
||||||
|
@ -664,7 +651,7 @@ Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||||
impl<'a> SyscallProcessInstruction<'a> for SyscallProcessInstructionRust<'a> {
|
impl<'a> SyscallProcessInstruction<'a> for SyscallProcessInstructionRust<'a> {
|
||||||
fn get_context_mut(&self) -> Result<RefMut<&'a mut dyn InvokeContext>, EbpfError<BPFError>> {
|
fn get_context_mut(&self) -> Result<RefMut<&'a mut dyn InvokeContext>, EbpfError<BPFError>> {
|
||||||
self.invoke_context
|
self.invoke_context
|
||||||
@@ -436,7 +559,7 @@
|
@@ -443,7 +544,7 @@
|
||||||
ix.accounts.len(),
|
ix.accounts.len(),
|
||||||
ro_regions
|
ro_regions
|
||||||
)?
|
)?
|
||||||
|
@ -673,7 +660,7 @@ Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||||
let data = translate_slice!(u8, ix.data.as_ptr(), ix.data.len(), ro_regions)?.to_vec();
|
let data = translate_slice!(u8, ix.data.as_ptr(), ix.data.len(), ro_regions)?.to_vec();
|
||||||
Ok(Instruction {
|
Ok(Instruction {
|
||||||
program_id: ix.program_id,
|
program_id: ix.program_id,
|
||||||
@@ -551,6 +674,7 @@
|
@@ -558,6 +659,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -681,7 +668,7 @@ Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||||
impl<'a> SyscallObject<BPFError> for SyscallProcessInstructionRust<'a> {
|
impl<'a> SyscallObject<BPFError> for SyscallProcessInstructionRust<'a> {
|
||||||
fn call(
|
fn call(
|
||||||
&mut self,
|
&mut self,
|
||||||
@@ -626,6 +750,7 @@
|
@@ -633,6 +735,7 @@
|
||||||
callers_keyed_accounts: &'a [KeyedAccount<'a>],
|
callers_keyed_accounts: &'a [KeyedAccount<'a>],
|
||||||
invoke_context: Rc<RefCell<&'a mut dyn InvokeContext>>,
|
invoke_context: Rc<RefCell<&'a mut dyn InvokeContext>>,
|
||||||
}
|
}
|
||||||
|
@ -689,7 +676,7 @@ Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||||
impl<'a> SyscallProcessInstruction<'a> for SyscallProcessSolInstructionC<'a> {
|
impl<'a> SyscallProcessInstruction<'a> for SyscallProcessSolInstructionC<'a> {
|
||||||
fn get_context_mut(&self) -> Result<RefMut<&'a mut dyn InvokeContext>, EbpfError<BPFError>> {
|
fn get_context_mut(&self) -> Result<RefMut<&'a mut dyn InvokeContext>, EbpfError<BPFError>> {
|
||||||
self.invoke_context
|
self.invoke_context
|
||||||
@@ -763,6 +888,7 @@
|
@@ -770,6 +873,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -697,7 +684,7 @@ Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||||
impl<'a> SyscallObject<BPFError> for SyscallProcessSolInstructionC<'a> {
|
impl<'a> SyscallObject<BPFError> for SyscallProcessSolInstructionC<'a> {
|
||||||
fn call(
|
fn call(
|
||||||
&mut self,
|
&mut self,
|
||||||
@@ -814,10 +940,10 @@
|
@@ -821,10 +925,10 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if account.is_signer && // If message indicates account is signed
|
if account.is_signer && // If message indicates account is signed
|
||||||
|
@ -712,7 +699,7 @@ Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||||
return Err(SyscallError::PrivilegeEscalation.into());
|
return Err(SyscallError::PrivilegeEscalation.into());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1034,7 +1160,7 @@
|
@@ -1042,7 +1146,7 @@
|
||||||
assert_eq!(string, "Gaggablaghblagh!");
|
assert_eq!(string, "Gaggablaghblagh!");
|
||||||
Ok(42)
|
Ok(42)
|
||||||
})
|
})
|
||||||
|
@ -721,7 +708,7 @@ Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1066,7 +1192,7 @@
|
@@ -1074,7 +1178,7 @@
|
||||||
&[ro_region],
|
&[ro_region],
|
||||||
&[rw_region],
|
&[rw_region],
|
||||||
)
|
)
|
||||||
|
|
|
@ -6,8 +6,8 @@ RUN rustup component add rustfmt
|
||||||
|
|
||||||
WORKDIR /usr/src/solana
|
WORKDIR /usr/src/solana
|
||||||
|
|
||||||
RUN git clone https://github.com/jackcmay/solana --depth=1 --branch cpi-create-account && \
|
RUN git clone https://github.com/solana-labs/solana --depth=1 --branch master && \
|
||||||
cd solana
|
cd solana && git checkout e2d66cf7
|
||||||
|
|
||||||
ADD *.patch .
|
ADD *.patch .
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue