Custom RPC-alike Endpoints
Learn how you can set from your program a RPC-alike endpoint for ledger entries retrieval and contract call simulation.
Contract Call Simulation
#[no_mangle]
pub extern "C" fn simulate() {
let env = EnvClient::empty();
let request: SimulationRequest = env.read_request_body();
let response = match request {
SimulationRequest::Send(SimulateSend { from, sequence, message }) => {
let address = Address::from_string(&SString::from_str(&env.soroban(), &from));
let message = Bytes::from_slice(&env.soroban(), message.as_bytes());
env.simulate_contract_call_to_tx(
from,
sequence,
CONTRACT_ADDRESS,
Symbol::new(&env.soroban(), "send"),
vec![
&env.soroban(),
address.into_val(env.soroban()),
message.into_val(env.soroban()),
],
)
},
// other match arms...
}
env.conclude(response)
}Contract Calls
Advantages of Simulating with Zephyr
On-Demand getLedger API
Resources
Last updated