56 个版本 (36 个主要版本)
38.0.0 | 2024 年 7 月 18 日 |
---|---|
37.0.0 | 2024 年 6 月 21 日 |
36.0.0 | 2024 年 5 月 23 日 |
35.0.0 | 2024 年 4 月 30 日 |
2.0.0-alpha.5 | 2020 年 3 月 24 日 |
#1 在 #off-chain
每月 40,149 次下载
用于 715 个软件包 (280 个直接使用)
645KB
13K SLoC
Substrate 运行时的 I/O 主机接口。
许可证:Apache-2.0
lib.rs
:
Substrate 原语:IO
此软件包包含运行时与外部世界通信的接口,即 io
。在其他上下文中,此类接口被称为 "主机函数"。
每套主机函数都是由 sp_runtime_interface::runtime_interface
宏的一个实例定义的。
特别值得注意的是,此软件包包含以下主机函数
此软件包提供的所有默认主机函数,以及默认包含在所有基于 Substrate 的客户端中的所有默认主机函数,都汇集在 SubstrateHostFunctions
中。
外部性
宿主函数与外部性概念密切相关。外部性是指宿主函数提供的环境,因此可以访问。某些宿主函数只能在提供外部性的环境中访问。
底层数据库开发者常见的错误如下
use sp_io::storage::get;
let data = get(b"hello world");
此代码将引发以下错误
thread 'main' panicked at '`get_version_1` called outside of an Externalities-provided environment.'
此类错误信息应始终解释为“代码在非外部性环境中访问宿主函数”。
外部性是任何实现了 sp_externalities::Externalities
类型的类型。一个简单的例子是 TestExternalities
,它常用于测试,并由此crate导出。
use sp_io::{storage::get, TestExternalities};
TestExternalities::default().execute_with(|| {
let data = get(b"hello world");
});
依赖项
~14–28MB
~445K SLoC