Skip to content

Commit

Permalink
update introduction
Browse files Browse the repository at this point in the history
  • Loading branch information
vita-dounai committed Sep 11, 2020
1 parent c07d198 commit c76a342
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions docs/quick_start/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Liquid是一种[嵌入式领域特定语言](http://wiki.haskell.org/Embedded_do
```eval_rst
.. important::
Liquid选择Rust语言作为宿主语言也意味着:为了能够更好的使用Liquid进行智能合约开发,我们强烈建议您提前掌握Rust语言的基础知识,尤其是借用、生命周期、属性等关键概念。若您此前无Rust语言相关的知识背景,推荐您参考`Rust语言官方教程 <https://doc.rust-lang.org/book/>`_。同时,Liquid的基础编程模型与现有的主流智能合约编程语言(如`Solidity <https://solidity.readthedocs.io/en/latest/>`_、`Vyper <https://vyper.readthedocs.io/en/stable/>`_)等较为接近,如果您有使用这些语言进行智能合约开发的经验,将会为使用Liquid带来极大的裨益。
Liquid选择Rust语言作为宿主语言也意味着:为了能够更好的使用Liquid进行智能合约开发,我们强烈建议您提前掌握Rust语言的基础知识,尤其是借用、生命周期、属性等关键概念。若您此前无Rust语言相关的知识背景,推荐您参考`Rust语言官方教程 <https://doc.rust-lang.org/book/>`_ 。同时,Liquid的基础编程模型与现有的主流智能合约编程语言(如`Solidity <https://solidity.readthedocs.io/en/latest/>`_ 、`Vyper <https://vyper.readthedocs.io/en/stable/>`_ )等较为接近,如果您有使用这些语言进行智能合约开发的经验,将会为使用Liquid带来极大的裨益。
```

## 关键特性
Expand All @@ -20,7 +20,7 @@ Liquid是一种[嵌入式领域特定语言](http://wiki.haskell.org/Embedded_do

- **高效**:Wasm是一种可移植、体积小、加载快的字节码格式,Liquid支持将合约代码编译为Wasm格式字节码,从而使得您的智能合约能够以更高的效率在在区块链上运行

- **支持单元测试**支持在合约内部方便地编写单元测试。当以`std`模式编译合约时,Liquid会引导编译器将合约编译为本机机器码并运行单元测试,从而帮助您在部署合约之前发现可能的潜在的漏洞
- **支持单元测试**Liquid支持在合约内部方便地编写单元测试。当以`std`模式编译合约时,Liquid会引导编译器将合约编译为本机机器码并运行单元测试,从而帮助您在部署合约之前发现可能存在的漏洞

- **完全兼容Solidity ABI**:Liquid合约的应用程序二进制接口与Solidity完全兼容,因此Liquid合约可以与Solidity合约互相调用。同时,为Solidity合约开发的应用程序也能够无缝迁移至Liquid

Expand Down Expand Up @@ -86,6 +86,8 @@ Liquid是一种[嵌入式领域特定语言](http://wiki.haskell.org/Embedded_do
51 }
```

### 合约代码剖析

第1行用于向编译器表明,当以非std模式(即编译为Wasm字节码)编译时,启用`no_std`属性。出于安全性的考虑,Wasm对Rust标准库的支持较为有限,因此需要启用该属性以保证您的合约能够运行在Wasm虚拟机上。

第3行用于导入`liquid_lang`库,Liquid诸多特性的实现均位于该库中。
Expand All @@ -107,4 +109,6 @@ Liquid是一种[嵌入式领域特定语言](http://wiki.haskell.org/Embedded_do

第32~50行定义了一个专用于单元测试的mod。单元测试并不是合约的的一部分,而是用于在本机运行以检查合约方法实现逻辑的正确性。第32行是一个编译开关,意为只有当`test`编译标志启用时,其后跟随的`mod`才会参与编译,否则直接从代码中剔除。当将Liquid编译为Wasm字节码时, `test`编译标志不会启用,因此最后的合约字节码中不会包含任何测试。由于`mod`会进行命名空间隔离,因此我们需要在第34行从外部导入我们刚刚定义的合约符号,以方便在单元测试中使用。在`tests`模块中,我们编写了2个单元测试,分别用于测试`get`函数和`set`函数的正确性。

在接下来的篇幅中,我们将介绍Liquid合约开发环境的搭建及基本的开发流程。
### Let's Liquid!

在接下来的篇幅中,我们将介绍Liquid合约开发环境的搭建及基本的开发流程,以帮助您将您对区块链应用的创意快速变为现实。

0 comments on commit c76a342

Please sign in to comment.