Skip to content

Commit

Permalink
update doc description (#1698)
Browse files Browse the repository at this point in the history
  • Loading branch information
JimmyShi22 committed Jun 5, 2023
1 parent 84213db commit 9173ab9
Show file tree
Hide file tree
Showing 9 changed files with 38 additions and 303 deletions.
2 changes: 0 additions & 2 deletions 2.x/docs/articles/1_conception/safe_and_controllable.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,8 +136,6 @@

[《中华人民共和国密码法》](https://baike.baidu.com/item/%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD%E5%AF%86%E7%A0%81%E6%B3%95/22860972?fromtitle=%E5%AF%86%E7%A0%81%E6%B3%95&fromid=24078179)

[《工信部对十三届全国人大二次会议第1394号建议的答复》](http://www.miit.gov.cn/n1146295/n1146592/n3917132/n4545264/c7503420/content.html)

[《工信部隐私保护规范》](http://www.cbdforum.cn/bcweb/index/bz/1-6.html)

[《WeDPR隐私保护白皮书》](https://mp.weixin.qq.com/s/fYCHWb2SwWu-9ySLibrI0w)
10 changes: 5 additions & 5 deletions 3.x/zh_CN/docs/advanced_function/wecross.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@
标签: ``跨链``

------
weCross区块链跨链协作平台是在跨链技术方面的自主研发并完全开源的研究成果,支持FISCO BCOS。
WeCross区块链跨链协作平台是在跨链技术方面的自主研发并完全开源的研究成果,支持FISCO BCOS。

weCross基于一揽子自主研发并开源的区块链技术方案,针对不同服务形态、不同区块链平台之间无法进行可信连接与交互的行业痛点,研发区块链跨链协作平台——WeCross,以促进跨行业、机构和地域的跨区块链信任传递和商业合作。实现了一站式跨链管理、插件式跨链介入、统一跨链身份、统一跨链资源范式、保证跨链事务资产原子交换与合约跨链调用等功能。
WeCross基于一揽子自主研发并开源的区块链技术方案,针对不同服务形态、不同区块链平台之间无法进行可信连接与交互的行业痛点,研发区块链跨链协作平台——WeCross,以促进跨行业、机构和地域的跨区块链信任传递和商业合作。实现了一站式跨链管理、插件式跨链介入、统一跨链身份、统一跨链资源范式、保证跨链事务资产原子交换与合约跨链调用等功能。

WeCross着眼应对区块链行业现存挑战,不局限于满足同构区块链平行扩展后的可信数据交换需求,还进一步探索异构区块链之间因底层架构、数据结构、接口协议、安全机制等多维异构性导致无法互联互通问题的有效解决方案。作为未来区块链互联的基础设施,WeCross 秉承多方参与、共享资源、智能协同和价值整合的理念,面向公众完全开源,欢迎广大企业及技术爱好者踊跃参与项目共建。

weCross详细内容介绍可参考
WeCross详细内容介绍可参考

- [weCross技术文档](https://wecross.readthedocs.io/zh_CN/latest/index.html)
- [WeCross技术文档](https://WeCross.readthedocs.io/zh_CN/latest/index.html)

- [weCross github主页](https://github.com/WeBankBlockchain/WeCross)
- [WeCross github主页](https://github.com/WeBankBlockchain/WeCross)
2 changes: 0 additions & 2 deletions 3.x/zh_CN/docs/articles/1_conception/safe_and_controllable.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,8 +136,6 @@

[《中华人民共和国密码法》](https://baike.baidu.com/item/%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD%E5%AF%86%E7%A0%81%E6%B3%95/22860972?fromtitle=%E5%AF%86%E7%A0%81%E6%B3%95&fromid=24078179)

[《工信部对十三届全国人大二次会议第1394号建议的答复》](http://www.miit.gov.cn/n1146295/n1146592/n3917132/n4545264/c7503420/content.html)

[《工信部隐私保护规范》](http://www.cbdforum.cn/bcweb/index/bz/1-6.html)

[《WeDPR隐私保护白皮书》](https://mp.weixin.qq.com/s/fYCHWb2SwWu-9ySLibrI0w)
2 changes: 0 additions & 2 deletions 3.x/zh_CN/docs/articles/1_conception/what_to_trust.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,6 @@

**数字签名**一般基于公私钥体系,用私钥签名,公钥验签或者反之。数字签名源自密码学的牢靠性,使得不可能有人能伪造别人的私钥签名,所以一个拥有私钥的人可以通过数字签名,对他的资产签名确权,或者在双方交易时,采用对手方的公钥发起交易,将资产转移给对方,对方用自己的私钥才能验签解开,以获得所有权。

![](https://mmbiz.qpic.cn/mmbiz_jpg/XPgc9ZEIOSQyI8HRE9icDfuX1R4Mb4GvFK8VvPXpkCaE0W2YPKUjYbZ5LV0zuH0UQpnpkVgG9qgHeItRCCmNeicg/640?wx_fmt=jpeg)

**AES、RSA、ECC椭圆曲线**等几种对称和非对称算法广泛地用于数据加解密、安全通信等场景,其安全级别取决于算法本身和密钥长度,当AES使用128~512位密钥,RSA/ECC采用1024甚至2048位密钥时,其保护的数据理论上需要普通计算机上亿年的计算时间才能暴力破解。这些算法在商业、科学、军事领域都经受了考验。

加密学领域里还有同态加密、零知识证明、环签名群签名、格密码等新的方向,目前都处于从理论发展到工程的阶段,都在功能、安全强度、效率方面快速优化中,已经可以看到落地使用的可能性了。同时我们也意识到,密码学通常需要经过长期的发展、验证,稳定后才能获得广泛认可,要么实践中经历了大量考验,要么经过权威机构的审核和认证,才能在生产领域大放异彩。密码学里的理论到工程,常常有很长的时间周期。
Expand Down
6 changes: 3 additions & 3 deletions 3.x/zh_CN/docs/community.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ FISCO BCOS是国内企业主导研发、对外开源、安全可控的企业级

## FISCO BCOS社区资源

- [Github主页](https://github.com/FISCO-BCOS/bcos-tars-services) 
- [技术文档](https://fisco-bcos-documentation.readthedocs.io)
- [Github主页](https://github.com/FISCO-BCOS/FISCO-BCOS) 
- [技术文档(3.0)](https://fisco-bcos-doc.readthedocs.io/)

- [深度解析系列文章](http://mp.weixin.qq.com/mp/homepage?__biz=MzA3MTI5Njg4Mw==&hid=2&sn=4f6d7251fbc4a73ed600e1d6fd61efc1&scene=18#wechat_redirect)
- [贡献代码](https://mp.weixin.qq.com/s/_w_auH8X4SQQWO3lhfNrbQ)
- [反馈问题](https://github.com/FISCO-BCOS/bcos-tars-services/issues)
- [反馈问题](https://github.com/FISCO-BCOS/FISCO-BCOS/issues)
- [应用案例集](https://mp.weixin.qq.com/s/cUjuWf1eGMbG3AFq60CBUA)


4 changes: 2 additions & 2 deletions 3.x/zh_CN/docs/community/join_fiscobcos.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@

## FISCO BCOS社区资源

- [Github主页](https://github.com/FISCO-BCOS/bcos-tars-services)
- [Github主页](https://github.com/FISCO-BCOS/FISCO-BCOS)
- [技术文档](https://fisco-bcos-documentation.readthedocs.io)

- [深度解析系列文章](http://mp.weixin.qq.com/mp/homepage?__biz=MzA3MTI5Njg4Mw==&hid=2&sn=4f6d7251fbc4a73ed600e1d6fd61efc1&scene=18#wechat_redirect)
- [贡献代码](https://mp.weixin.qq.com/s/_w_auH8X4SQQWO3lhfNrbQ)
- [反馈问题](https://github.com/FISCO-BCOS/bcos-tars-services/issues)
- [反馈问题](https://github.com/FISCO-BCOS/FISCO-BCOS/issues)
- [应用案例集](https://mp.weixin.qq.com/s/cUjuWf1eGMbG3AFq60CBUA)

## 加入我们
Expand Down
16 changes: 8 additions & 8 deletions 3.x/zh_CN/docs/community/pr.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
-----
### 文章贡献PR操作指引

如果你已经是社区贡献者,可直接按照如下操作完成文章PR提交;如果你初次尝试PR贡献,请点击了解[提PR基本操作指引](https://mp.weixin.qq.com/s/Uq5r1IaZfelWnhCThHSKXw)
如果你已经是社区贡献者,可直接按照如下操作完成文章PR提交;如果你初次尝试PR贡献,请参考[文档](https://mp.weixin.qq.com/s/_w_auH8X4SQQWO3lhfNrbQ)


#### 1、提PR的预置条件:Fork FISCO-BCOS-DOC到个人github仓库
Expand All @@ -13,9 +13,9 @@

#### 2、分支说明

PR须提到FISCO-BCOS-DOC的dev分支
PR须提到FISCO-BCOS-DOC的release-3分支

#### 3、必备工具:git [点击参考](https://www.liaoxuefeng.com/wiki/896043488029600/896067074338496)
#### 3、必备工具:git [点击参考](https://gitee.com/help/articles/4106)

1. mac系统:brew install git
2. windows系统:点击[下载安装](https://git-scm.com/downloads)
Expand All @@ -34,17 +34,17 @@ PR须提到FISCO-BCOS-DOC的dev分支

**每次提交PR之前,均需要执行以下命令,同步最新的官方文档:**

1. 拉取官方文档dev分支的最新文档:git fetch upstream dev
1. 拉取官方文档release-3分支的最新文档:git fetch upstream release-3

2. 同步官方文档dev分支最新文档到本地:git rebase upstream/dev
2. 同步官方文档release-3分支最新文档到本地:git rebase upstream/release-3

(注:本步骤可能会有冲突,如果有冲突,请解决冲突,点击参考[冲突解决方法](https://www.jianshu.com/p/4c30eb30323a))
(注:本步骤可能会有冲突,如果有冲突,请解决冲突,点击参考[冲突解决方法](https://gitee.com/help/articles/4194))

3. 将同步后的文档推到个人的git仓库:git push origin -f

**提交个人文档的主要命令**

git add, git commit, git push等,[点击参考](https://www.jianshu.com/p/2e1d551b8261)
git add, git commit, git push等,[点击参考](https://gitee.com/help/articles/4114)

#### 5、文档格式说明

Expand All @@ -55,7 +55,7 @@ git add, git commit, git push等,[点击参考](https://www.jianshu.com/p/2e1d

| **设置字段** | **设置结果** |
| - | - |
| 默认分支 | release |
| 默认分支 | release-3 |
| 文档类型 | Sphinx |
| 所需的文件 | repuirements.txt |
| Python解释器 | CPython |
Expand Down
162 changes: 8 additions & 154 deletions 3.x/zh_CN/docs/contract_develop/Liquid_develop.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,163 +3,17 @@
标签:``开发第一个应用`` ``WBC-Liquid`` ``合约开发`` ``区块链应用`` ``WASM``

---
除支持Solidity语言与C++之外,FISCO BCOS也支持用Rust写合约。WBC-Liquid是微众区块链开发的基于Rust的智能合约编程语言,借助Rust语言特性,能够实现比Solidity语言更强大的编程功能。
FISCO BCOS 支持用以下几种方式实现智能合约

- 相关文档:[Liquid 在线文档](https://liquid-doc.readthedocs.io/zh_CN/latest/)
- 相关文档:[Rust语言官方教程](https://doc.rust-lang.org/book/)
- 相关文档:[开发第一个WBC_Liquid区块链应用](../quick_start/wbc_liquid_application.md)

下面以KV存储为例,说明Liquid合约开发使用方式。

## KV存储使用方法

目前可以用两种方式使用KV存储功能,分别是KVTable合约和 Java SDK KVTable Service接口。

### 1. KVTable合约

- Solidity合约只需要引入FISCO BCOS官方提供的Table.sol抽象接口合约文件即可。

Table包含分布式存储专用的智能合约接口,其接口实现在区块链节点,其中,TableManager可以创建专属KV表,KVTable可以用作表进行get/set操作。下面分别进行介绍。

#### 1.1 TableManager合约接口

用于创建KV表,打开KV表,其固定合约地址为`0x1002(Solidity)``/sys/table_manager(Liquid)`,接口如下(只展示与KVTable相关接口):

| 接口 | 功能 | 参数 | 返回值 |
|-------------------------------|------------|--------------------------------------------|---------------------------------------------|
| createKVTable(string ,string) | 创建表 | 表名,主键名(目前只支持单个主键),字段名 | 返回错误码(int32),错误码详见下表 |
| openTable(string) | 获取表地址 | 表名,该接口只用于Solidity | 返回表对应的真实地址,如果不存在,则返回0x0 |

#### 1.2 KVTable合约

用于访问表数据,接口如下:

| 接口 | 功能 | 参数 | 返回值 |
|--------------------|--------|--------------|-----------------------------------------------------------|
| get(string) | 获取值 | 主键 | 返回bool值、string,如果查询失败,第一个返回值将会是false |
| set(string,string) | 设置值 | 主键,字段值 | 返回错误码(int32),成功时返回1,其余错误码详见下表 |

接口返回错误码:

| 错误码 | 说明 |
|:-------|:-----------------------------------|
| 0 | 创建成功 |
| -50001 | 创建表名已存在 |
| -50002 | 表名超过48字符 |
| -50003 | valueField字段名长度超过64字符 |
| -50004 | valueField总字段名长度超过1024字符 |
| -50005 | keyField字段值长度超过64字符 |
| -50006 | valueField字段值长度超过16兆 |
| -50007 | 存在重复字段 |
| -50008 | 字段存在非法字符 |
| 其他 | 创建时遇到的其他错误 |

有了以上对KVTable抽象接口合约的了解,现在可以正式进行KVTable合约的开发。
### 2. WBC-Liquid合约使用KVTable接口

#### 2.1 声明KVTable接口

在WBC-Liquid合约中使用接口之前先对KVTable的接口进行声明。
* [Solidity](https://solidity.readthedocs.io/en/latest/):以太坊生态中采用的合约编程语言,FISCO BCOS为其拓展了面向联盟链的一系列功能,是FISCO BCOS上智能合约开发最常用的方式。
* [预编译合约](./c++_contract/add_precompiled_impl.md):在区块链节点内部直接内置定制化的智能合约,用c++语言实现,能直接调用节点内部各种接口,面向复杂场景,使用门槛较高。
* [WBC-Liquid](./Liquid_develop.md):微众区块链开发的基于Rust的智能合约编程语言,借助Rust语言特性,能够实现比Solidity语言更强大的编程功能。

```rust
#![cfg_attr(not(feature = "std"), no_std)]

use liquid::storage;
use liquid_lang as liquid;
use liquid_lang::InOut;
use liquid_prelude::{string::String, vec::Vec};

#[derive(InOut)]
pub struct TableInfo {
key_column: String,
value_columns: Vec<String>,
}
WBC-Liquid是微众区块链开发的基于Rust的智能合约编程语言,借助Rust语言特性,能够实现比Solidity语言更强大的编程功能,相关教程请见:

// TableManager的接口声明
#[liquid::interface(name = auto)]
mod table_manager {
use super::*;

extern "liquid" {
fn createKVTable(
&mut self,
table_name: String,
key: String,
value_fields: String,
) -> i32;
fn desc(&self, table_name: String) -> TableInfo;
}
}
// KVTable的接口声明
#[liquid::interface(name = auto)]
mod kv_table {

extern "liquid" {
fn get(&self, key: String) -> (bool, String);
fn set(&mut self, key: String, value: String) -> i32;
}
}
```

#### 2.2 WBC-Liquid创建表

可在WBC-Liquid的构造函数中实现创建表的逻辑,此处引入的TableManager的地址为BFS路径 `/sys/table_manager` ,注意WBC-Liquid和Solidity的区别。

创建表的原理与Solidity的类似,再次不再赘述。

```rust
pub fn new(&mut self) {
self.table_name.initialize(String::from("t_kv_test"));
// TableManager的固定地址为/sys/table_manager
self.tm
.initialize(TableManager::at("/sys/table_manager".parse().unwrap()));
self.tm.createKVTable(
self.table_name.clone(),
String::from("id"),
String::from("item_name"),
);
// 创建成功后,/tables/+创建的表名就是合约的正确地址
self.table
.initialize(KvTable::at("/tables/t_kv_test".parse().unwrap()));
}
```

#### 2.3 针对表进行KV读写操作

写的主要逻辑如下:

```rust
pub fn set(&mut self, id: String, item_name: String) -> i32 {
let count = (*self.table).set(id, item_name).unwrap();

self.env().emit(SetEvent {
count: count.clone(),
});
count
}
```

读的主要逻辑如下:

```rust
pub fn get(&self, id: String) -> (bool, String) {
if let Some((ok, value)) = (*self.table).get(id) {
return (ok, value);
}
return (false, Default::default());
}
```

### 3. SDK KVTable Service接口

FISCO BCOS 3.x SDK提供KVTable Service数据上链接口,这些接口实现的原理是调用区块链内置的一个预编译的KVTable合约,专门负责对用户表进行读写操作。Java SDK KVTable Service实现在org.fisco.bcos.sdk.v3.contract.precompiled.crud.KVTableService 类,其接口如下:

| 接口 | 功能 | 参数 | 返回值 |
|-------------------------------------|--------------|----------------------|--------------------------|
| createTable(String, String, String) | 创建表 | 表名、主键名、字段名 | 错误码 |
| set(String, String, String) | 写数据 | 表名、主键名、字段值 | 错误码 |
| get(String, String) | 读数据 | 表名、主键名 | String |
| desc(String) | 查询表的信息 | 表名 | 表的keyField和valueField |

其中调用写接口会产生与调用KV合约接口等效的交易,需要共识节点共识一致后才会落盘存储。
- 相关文档:[Liquid 在线文档](https://liquid-doc.readthedocs.io/zh_CN/latest/)
- 相关文档:[Rust语言官方教程](https://doc.rust-lang.org/book/)
- 相关文档:[开发第一个WBC_Liquid区块链应用](../quick_start/wbc_liquid_application.md)

0 comments on commit 9173ab9

Please sign in to comment.