Hi Guest

More contents, please log on!

Bitmere.com 区块链技术 Content

如何在CasperLabs上编写Rust智能合约

星火车品
2280 0 0
今天一步一步带着大家逐步说明如何在CasperLabs编写新的智能合约。
基本智能合约
CasperLabs VM通过调用合约中call指定的功能来执行智能合约。如果缺少该功能,则智能合约无效。最简单的例子是一个空call函数。
#[no_mangle]
pub extern "C" fn call() {}
该#[no_mangle]属性可防止编译器在转换为Wasm的二进制格式时更改(更改)函数名称。没有它,VM退出并显示错误消息:。Module doesn't have export call
使用错误代码
  1. CasperLabs VM支持智能合约中的错误代码。合约可以通过以下runtime::revert函数停止执行并以给定的错误退出:
  2. use casperlabs_contract::contract_api::runtime;
  3. use casperlabs_types::ApiError;
  4. #[no_mangle]
  5. pub extern "C" fn call() {
  6.   runtime::revert(ApiError::PermissionDenied)
  7. }
Copy the Code

CasperLabs具有几个内置的错误变体,但是可以为您的智能合约创建一组自定义的错误代码。这些可以传递给runtime::revert通过。ApiError::User()
当合约以错误代码退出时,退出代码在“块浏览器”中可见。
参数
可以将参数传递给智能合约。要使用此功能,请使用runtime::get_named_arg。
  1. use casperlabs_contract::contract_api::runtime;
  2. #[no_mangle]
  3. pub extern "C" fn call() {
  4.   let value: String = runtime::get_named_arg("value");
  5. }
Copy the Code

存储
在CasperLabs中,手动在区块链中读取和存储值是一个手动过程。它需要编写更多代码,但也提供了很大的灵活性。存储系统的工作方式类似于操作系统中的文件系统。假设我们有一个需要保存的字符串。为此,请使用文本编辑器,创建一个新文件,将字符串粘贴并保存在某个目录中的名称下。该模式在CasperLabs区块链上相似。首先,您必须使用将值保存到内存中。这将返回对保存该值的内存对象的引用。您可以使用此引用将值更新为其他值。就像一个文件。其次,您必须使用以下命令将引用保存在人类可读的字符串下"Hello CasperLabs"storage::new_turef"Hello CasperLabs"runtime::put_key。就像给文件起一个名字。以下功能实现了此方案:
  1. const KEY: &str = "special_value";
  2. fn store(value: String) {
  3.   // Store `value` under a new unforgeable reference.
  4.   let value_ref = storage::new_turef(value);
  5.   // Wrap the unforgeable reference in a `Key`.
  6.   let value_key: Key = value_ref.into();
  7.   // Store this key under the name "special_value" in context-local storage.
  8.   runtime::put_key(KEY, value_key);
  9. }
Copy the Code


BitMere.com is Information release platform,just provides information storage space services.
The opinions expressed are solely those of the author,Does not constitute advice, please treat with caution.
You have to log in before you can reply Login | 立即注册

Points Rules

Write the first review

星火车品 初中生
  • Follow

    0

  • Following

    0

  • Articles

    12

Promoted