Override entry point

Sylvia is still developing and lacks features like f.e. sudo support. If you need to use a lacking feature of CosmWasm or prefer to define some custom entry point, it is possible to use the #[sv::override_entry_point(...)] attribute.

Example

To make sylvia generate multitest helpers with sudo support, you first need to define your entry point.

#[entry_point]
pub fn sudo(deps: DepsMut, _env: Env, _msg: SudoMsg) -> StdResult<Response> {
    CounterContract::new().counter.save(deps.storage, &3)?;
    Ok(Response::new())
}

You have to define the SudoMsg yourself, as it is not yet supported.

#[cfg_attr(not(feature = "library"), entry_points)]
#[contract]
#[sv::override_entry_point(sudo=crate::entry_points::sudo(crate::messages::SudoMsg))]
#[sv::override_entry_point(exec=crate::entry_points::execute(crate::messages::CustomExecMsg))]
impl CounterContract {
}

For every entry point, provide the path to the function in a separate attribute. You also have to provide the type of your custom msg, as multitest helpers need to deserialize an array of bytes.

Next step

In the next chapter, we will learn about custom messages.