#smart-contracts #parity #blockchain #edsl #parity-wasm #wasm

contract-metadata

定义了在Substrate上智能合约元数据的库

41个版本 (18个稳定版)

4.1.1 2024年4月17日
4.0.2 2024年3月14日
4.0.0-rc.12023年12月1日
4.0.0-rc2023年11月30日
0.1.0 2020年10月13日

#4 in #parity-wasm

Download history 2019/week @ 2024-05-04 2230/week @ 2024-05-11 1798/week @ 2024-05-18 1038/week @ 2024-05-25 2313/week @ 2024-06-01 1129/week @ 2024-06-08 1255/week @ 2024-06-15 1526/week @ 2024-06-22 1121/week @ 2024-06-29 794/week @ 2024-07-06 1189/week @ 2024-07-13 1236/week @ 2024-07-20 1152/week @ 2024-07-27 1123/week @ 2024-08-03 975/week @ 2024-08-10 840/week @ 2024-08-17

4,372 每月下载量
26 个crate中使用 (11个直接使用)

Apache-2.0

41KB
925 代码行

合约元数据

定义了针对 substrate 的智能合约扩展元数据的类型。

目前是 cargo-contract 的一部分,这是用于编写 ink! 智能合约的构建工具。


lib.rs:

为Substrate的合约组件创建和序列化元数据的类型定义。

示例


let language = SourceLanguage::new(Language::Ink, Version::new(2, 1, 0));
let compiler =
    SourceCompiler::new(Compiler::RustC, Version::parse("1.46.0-nightly").unwrap());
let wasm = SourceWasm::new(vec![0u8]);
// Optional information about how the contract was build
let build_info: Map<String, Value> = Map::new();
let source = Source::new(
    Some(wasm),
    CodeHash([0u8; 32]),
    language,
    compiler,
    Some(build_info),
);
let contract = Contract::builder()
    .name("incrementer".to_string())
    .version(Version::new(2, 1, 0))
    .authors(vec!["Parity Technologies <[email protected]>".to_string()])
    .description("increment a value".to_string())
    .documentation(Url::parse("http://docs.rs/").unwrap())
    .repository(Url::parse("http://github.com/paritytech/ink/").unwrap())
    .homepage(Url::parse("http://example.com/").unwrap())
    .license("Apache-2.0".to_string())
    .build()
    .unwrap();
// user defined raw json
let user_json: Map<String, Value> = Map::new();
let user = User::new(user_json);
// contract abi raw json generated by contract compilation
let abi_json: Map<String, Value> = Map::new();
// image name and tag used for the verifiable build.
let image = String::from("paritytech/contracts-verifiable:3.0.1");

let metadata =
    ContractMetadata::new(source, contract, Some(image), Some(user), abi_json);

// serialize to json
let json = serde_json::to_value(&metadata).unwrap();

依赖关系

~2–3MB
~86K SLoC