Fetch the repository succeeded.
Liquid 由微众银行区块链团队开发并完全开源,是一种嵌入式领域特定语言( embedded Domain Specific Language,eDSL),能够用来编写运行于区块链底层平台FISCO BCOS的智能合约。
支持在智能合约内部便捷地编写单元测试用例,可通过内嵌的区块链模拟环境直接在本地执行;
算数溢出及内存越界安全检查;
能够结合模糊测试等工具进行深度测试;
未来将进一步集成形式化验证及数据隐私保护技术。
配合 LLVM 优化器,支持将智能合约代码编译为可移植、体积小、加载快 Wasm 格式字节码;
对 Wasm 执行引擎进行了深度优化,并支持交易并行化等技术;
结合 Tree-Shaking 等技术,进一步压缩智能合约体积。
支持使用大部分现代语言特性(如移动语义及自动类型推导等);
提供专有开发工具及编辑器插件辅助开发;
丰富的标准库及第三方组件。
能够根据业务需求对编程模型、语言文法的进行深度定制。
未来还将进一步探索如何与隐私保护、跨链协同等功能相结合。
使用 Liquid 编写的 HelloWorld 合约如下所示:
#![cfg_attr(not(feature = "std"), no_std)]
use liquid::storage;
use liquid_lang as liquid;
#[liquid::contract]
mod hello_world {
use super::*;
#[liquid(storage)]
struct HelloWorld {
name: storage::Value<String>,
}
#[liquid(methods)]
impl HelloWorld {
pub fn new(&mut self) {
self.name.initialize(String::from("Alice"));
}
pub fn get(&self) -> String {
self.name.clone()
}
pub fn set(&mut self, name: String) {
self.name.set(name)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn get_works() {
let contract = HelloWorld::new();
assert_eq!(contract.get(), "Alice");
}
#[test]
fn set_works() {
let mut contract = HelloWorld::new();
let new_name = String::from("Bob");
contract.set(new_name.clone());
assert_eq!(contract.get(), "Bob");
}
}
}
阅读Liquid 在线技术文档,详细了解如何使用 Liquid。
Rust Nightly 1.52 或更高。
Liquid 的开源协议为 Apache License 2.0,详情请参考LICENSE。
Sign in to post a comment
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
Repository Comments ( 0 )