Skip to content

Commit

Permalink
Merge branch 'master' into vs-update-substrate
Browse files Browse the repository at this point in the history
  • Loading branch information
ukint-vs authored Jun 9, 2022
2 parents a13ac35 + b50aa44 commit c71d125
Show file tree
Hide file tree
Showing 17 changed files with 397 additions and 114 deletions.
31 changes: 16 additions & 15 deletions Cargo.lock

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

24 changes: 16 additions & 8 deletions core-backend/sandbox/src/funcs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -819,12 +819,16 @@ where
let salt = funcs::get_vec(memory, salt_ptr, salt_len)?;
let payload = funcs::get_vec(memory, payload_ptr, payload_len)?;
let value = funcs::get_u128(memory, value_ptr)?;
let new_actor_id = ext
let error_len = ext
.create_program(InitPacket::new(code_hash.into(), salt, payload, value))
.map_err(FuncError::Core)?;
wto(memory, program_id_ptr, new_actor_id.as_ref())
.process_error()
.map_err(FuncError::Core)?
.error_len_on_success(|new_actor_id| {
wto(memory, program_id_ptr, new_actor_id.as_ref())
})?;
Ok(error_len)
})
.map(|()| ReturnValue::Unit)
.map(|code| Value::I32(code as i32).into())
.map_err(|err| {
ctx.trap = Some(err);
HostError
Expand All @@ -850,18 +854,22 @@ where
let salt = funcs::get_vec(memory, salt_ptr, salt_len)?;
let payload = funcs::get_vec(memory, payload_ptr, payload_len)?;
let value = funcs::get_u128(memory, value_ptr)?;
let new_actor_id = ext
let error_len = ext
.create_program(InitPacket::new_with_gas(
code_hash.into(),
salt,
payload,
gas_limit,
value,
))
.map_err(FuncError::Core)?;
wto(memory, program_id_ptr, new_actor_id.as_ref())
.process_error()
.map_err(FuncError::Core)?
.error_len_on_success(|new_actor_id| {
wto(memory, program_id_ptr, new_actor_id.as_ref())
})?;
Ok(error_len)
})
.map(|()| ReturnValue::Unit)
.map(|code| Value::I32(code as i32).into())
.map_err(|err| {
ctx.trap = Some(err);
HostError
Expand Down
44 changes: 26 additions & 18 deletions core-backend/wasmtime/src/funcs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -641,21 +641,25 @@ where
value_ptr: i32,
program_id_ptr: i32| {
let ext = caller.data().ext.clone();
ext.with_fallible(|ext: &mut E| -> Result<(), FuncError<E::Error>> {
ext.with_fallible(|ext: &mut E| -> Result<u32, FuncError<E::Error>> {
let mem_wrap = get_caller_memory(&mut caller, &mem);
let code_hash = get_bytes32(&mem_wrap, code_hash_ptr as usize)?;
let salt = get_vec(&mem_wrap, salt_ptr as usize, salt_len as usize)?;
let payload = get_vec(&mem_wrap, payload_ptr as usize, payload_len as usize)?;
let value = get_u128(&mem_wrap, value_ptr as usize)?;
let new_actor_id = ext
let error_len = ext
.create_program(InitPacket::new(code_hash.into(), salt, payload, value))
.map_err(FuncError::Core)?;
write_to_caller_memory(
&mut caller,
&mem,
program_id_ptr as isize as _,
new_actor_id.as_ref(),
)
.process_error()
.map_err(FuncError::Core)?
.error_len_on_success(|new_actor_id| {
write_to_caller_memory(
&mut caller,
&mem,
program_id_ptr as isize as _,
new_actor_id.as_ref(),
)
})?;
Ok(error_len)
})
.map_err(Trap::new)
};
Expand All @@ -673,27 +677,31 @@ where
value_ptr: i32,
program_id_ptr: i32| {
let ext = caller.data().ext.clone();
ext.with_fallible(|ext| -> Result<(), FuncError<E::Error>> {
ext.with_fallible(|ext| -> Result<u32, FuncError<E::Error>> {
let mem_wrap = get_caller_memory(&mut caller, &mem);
let code_hash = get_bytes32(&mem_wrap, code_hash_ptr as usize)?;
let salt = get_vec(&mem_wrap, salt_ptr as usize, salt_len as usize)?;
let payload = get_vec(&mem_wrap, payload_ptr as usize, payload_len as usize)?;
let value = get_u128(&mem_wrap, value_ptr as usize)?;
let new_actor_id = ext
let error_len = ext
.create_program(InitPacket::new_with_gas(
code_hash.into(),
salt,
payload,
gas_limit as _,
value,
))
.map_err(FuncError::Core)?;
write_to_caller_memory(
&mut caller,
&mem,
program_id_ptr as isize as _,
new_actor_id.as_ref(),
)
.process_error()
.map_err(FuncError::Core)?
.error_len_on_success(|new_actor_id| {
write_to_caller_memory(
&mut caller,
&mem,
program_id_ptr as isize as _,
new_actor_id.as_ref(),
)
})?;
Ok(error_len)
})
.map_err(Trap::new)
};
Expand Down
3 changes: 2 additions & 1 deletion core/src/message/common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ use codec::{Decode, Encode};
use core::ops::Deref;
use scale_info::TypeInfo;

/// Message.
/// An entity that is used for interaction between actors.
/// Can transfer value and executes by programs in corresponding function: init, handle or handle_reply.
#[derive(Clone, Default, Debug, Eq, Hash, Ord, PartialEq, PartialOrd, Decode, Encode, TypeInfo)]
pub struct Message {
/// Message id.
Expand Down
Loading

0 comments on commit c71d125

Please sign in to comment.