Skip to content

Commit

Permalink
Deprecating setticketer external message
Browse files Browse the repository at this point in the history
Deprecating setticketer external message

Creating setup file

Working version with deprecated ticketer

Warnings fixed

Creating setup file

Working version with deprecated ticketer

Warnings fixed

Creating setup file

Working version with deprecated ticketer

Warnings fixed

Formatting + deprecating setticketer message in jstz_kernel

Cargo.lock changed

Cargo changed
  • Loading branch information
alanmarkoTrilitech committed Oct 18, 2023
1 parent ce80a1a commit e3f6c9a
Show file tree
Hide file tree
Showing 7 changed files with 169 additions and 35 deletions.
104 changes: 98 additions & 6 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 jstz_cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ boa_engine = "0.17.0"
rustyline = "10.0.0"
tezos-smart-rollup = "0.2.1"
tezos-smart-rollup-mock = "0.2.1"
tezos-smart-rollup-installer-config = "0.2.1"
serde_yaml = "0.8"

[[bin]]
name = "jstz"
Expand Down
87 changes: 67 additions & 20 deletions jstz_cli/src/sandbox/daemon.rs
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
use std::{
fs,
process::Child,
io::Write,
process::{Child, Command},
sync::mpsc::{self, Sender},
thread::{self, sleep, JoinHandle},
time::Duration,
};

use anyhow::Result;
use fs_extra::dir::CopyOptions;
use jstz_core::kv::value::serialize;
use jstz_crypto::public_key_hash::PublicKeyHash;
use nix::libc::{SIGINT, SIGTERM};
use signal_hook::iterator::Signals;
use tempfile::TempDir;
use tezos_smart_rollup_installer_config::yaml::{Instr, SetArgs, YamlConfig};

use crate::{
bridge,
Expand Down Expand Up @@ -173,12 +177,53 @@ fn start_rollup_node(cfg: &Config) -> Result<Child> {
)
}

fn set_ticketer(cfg: &Config, bridge_address: &str) -> Result<()> {
OctezClient::send_rollup_external_message(
cfg,
"bootstrap2",
&format!("{{ \"SetTicketer\": \"{}\" }}", bridge_address),
)
fn smart_rollup_installer(cfg: &Config, bridge_address: &str) -> Result<()> {
//Convert address
let address_encoding =
serialize(&PublicKeyHash::from_base58(&bridge_address).unwrap());
let hex_address = hex::encode(address_encoding.clone());

let instructions = YamlConfig {
instructions: vec![Instr::Set(SetArgs {
value: hex_address.clone(),
to: "/ticketer".to_owned(),
})],
};
let yaml_config = serde_yaml::to_string(&instructions).unwrap();

// Create a temporary file for the serialized representation of the address computed by octez-codec
let mut temp_file = tempfile::NamedTempFile::new()?;
temp_file.write_all(yaml_config.as_bytes())?;

// Get the path to the temporary file if needed later in the code
let setup_file_path = temp_file.path().to_owned();

// Create an installer kernel
let _output = Command::new("smart-rollup-installer")
.args(&[
"get-reveal-installer",
"--setup-file",
&setup_file_path.to_str().expect("Invalid path"),
"--output",
cfg.jstz_path
.join("target/kernel/jstz_kernel_installer.hex")
.to_str()
.expect("Invalid path"),
"--preimages-dir",
&cfg.jstz_path
.join("target/kernel")
.join("preimages/")
.to_str()
.expect("Invalid path"),
"--upgrade-to",
&cfg.jstz_path
.join("target/wasm32-unknown-unknown/release/jstz_kernel.wasm")
.to_str()
.expect("Invalid path"),
])
.output();

Ok(())
}

struct OctezThread {
Expand Down Expand Up @@ -293,37 +338,39 @@ fn start_sandbox(cfg: &Config) -> Result<(OctezThread, OctezThread, OctezThread)
// 1. Init node
init_node(&cfg)?;

// 3. As a thread, start node
// 2. As a thread, start node
print!("Starting node...");
let node = OctezThread::from_child(start_node(cfg)?);
println!(" done");

// 4. Init client
// 3. Init client
init_client(&cfg)?;
println!("Client initialized");

// 5. As a thread, start baking
// 4. As a thread, start baking
print!("Starting baker...");
let baker = OctezThread::new(cfg, client_bake);
println!(" done");

// 6. Originate the rollup
// 5. Deploy bridge
println!("Deploying bridge...");
let bridge_address = bridge::deploy(&cfg)?;
println!("\t`jstz_bridge` deployed at {}", bridge_address);

// 6. Create an installer kernel
print!("Creating installer kernel...");
smart_rollup_installer(&cfg, bridge_address.as_str())?;
println!("done");

// 7. Originate the rollup
let rollup_address = originate_rollup(&cfg)?;
println!("`jstz_rollup` originated at {}", rollup_address);

// 7. As a thread, start rollup node
// 8. As a thread, start rollup node
print!("Starting rollup node...");
let rollup_node = OctezThread::from_child(start_rollup_node(cfg)?);
println!(" done");

// 8. Deploy bridge
println!("Deploying bridge...");
let bridge_address = bridge::deploy(&cfg)?;
println!("\t`jstz_bridge` deployed at {}", bridge_address);

set_ticketer(&cfg, &bridge_address)?;
println!("\t`jstz_rollup` ticketer set to {}", bridge_address);

bridge::set_rollup(&cfg, &rollup_address)?;
println!("\t`jstz_bridge` `rollup` address set to {}", rollup_address);

Expand Down
2 changes: 1 addition & 1 deletion jstz_core/src/kv/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ use tezos_smart_rollup_host::{
use crate::error::Result;

mod transaction;
mod value;
pub mod value;

pub use transaction::{Entry, Transaction};
pub use value::Value;
Expand Down
2 changes: 1 addition & 1 deletion jstz_core/src/kv/value.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ fn bincode_options() -> impl bincode::Options {
.allow_trailing_bytes()
}

pub(crate) fn serialize<T: erased_serde::Serialize + ?Sized>(value: &T) -> Vec<u8> {
pub fn serialize<T: erased_serde::Serialize + ?Sized>(value: &T) -> Vec<u8> {
let mut writer = Vec::new();
let mut bincode_serializer = bincode::Serializer::new(&mut writer, bincode_options());

Expand Down
1 change: 0 additions & 1 deletion jstz_kernel/src/inbox.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ pub enum InternalMessage {

#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
pub enum ExternalMessage {
SetTicketer(ContractKt1Hash),
RunContract(RunContract),
DeployContract(ContractOrigination),
// TODO ⚰️ Deprecate will not be part of the CLI
Expand Down
Loading

0 comments on commit e3f6c9a

Please sign in to comment.