上链与上链背后的架构 | BSN 联盟链开发(一)
App - 链码 - 链
> **系列索引:** [上链与背后的流程 | 联盟链开发(一)](https://learnblockchain.cn/article/358) [动手编 SDK | 联盟链开发(二)](https://learnblockchain.cn/article/359) [SDK 1.0 版本的打造 | 联盟链开发(三)](https://learnblockchain.cn/article/380) [将 SDK 发布到 PIP | 联盟链开发(四)](https://learnblockchain.cn/article/385) [什么样的数据应该上链?| 联盟链开发 (五)](https://learnblockchain.cn/article/557) [BSN 相关问与答 | 联盟链开发(六)](https://learnblockchain.cn/article/683) [链上简历应用 — 设计 | 联盟链开发(七)](https://learnblockchain.cn/article/684) [FISCO BCOS 介绍 | 联盟链开发(八)](https://learnblockchain.cn/article/692) [WeIdentity 极速体验 | 联盟链开发(九)](https://learnblockchain.cn/article/1094) [给Remix升个级 | 联盟链开发(十)](https://learnblockchain.cn/article/984) [伪代码简述 ECDSA 签名过程 | 联盟链开发(十一)](https://learnblockchain.cn/article/1038) [WeIdentity 的多签及限量凭证的实现 | 联盟链开发(十二)](https://learnblockchain.cn/article/1285) --- > 这是基于 BSN(区块链服务网络)进行联盟链开发的系列教程的第一篇,主要包含以下两点内容: > > - 运行示例代码,体验上链操作 > - 简要分析 BSN 上应用的基础架构 ## 体验上链操作 - **clone 示例代码** https://github.com/leeduckgo/bsn_py ```bash $ git clone https://github.com/leeduckgo/bsn_py.git $ cd bsn_py ``` - **创建 python 虚拟环境** ```bash $ virtualenv --no-site-packages venv $ source venv/bin/activate ``` - **安装 python 包** ```bash $ pip3 install -r requirements.txt ``` - **运行!** ```bash $ python3 manage.py runserver ``` 运行成功后会显示已在8000端口启动服务。 ![image-20191114100933111](https://tva1.sinaimg.cn/large/006y8mN6ly1g8xcgwcs0dj30l807ot9q.jpg) - **上链** - 打开 http://127.0.0.1:8000/: ![image-20191114102521796](https://tva1.sinaimg.cn/large/006y8mN6ly1g8xd1ivzbtj30w20kgwfd.jpg) - 随便输入一个「标识」与「保存内容」,点击保存上链: ![image-20191114102646231](https://tva1.sinaimg.cn/large/006y8mN6ly1g8xcyjn3xrj30eg0fo3z6.jpg) - 上链成功: ![image-20191114102715309](https://tva1.sinaimg.cn/large/006y8mN6ly1g8xcz0v1vxj30p807m0t7.jpg) 与此同时,控制台中会显示传回的交易 id: ![image-20191114110709018](https://tva1.sinaimg.cn/large/006y8mN6ly1g8xe4jh5imj313u040dk9.jpg) - **查询** 通过 Key (唯一标识码)进行查询: ![image-20191114110746792](https://tva1.sinaimg.cn/large/006y8mN6ly1g8xe56rzkdj30v80fo0u1.jpg) ## 执行示例代码的时候,发生了什么? 通过示例代码,我们可以感知到 BSN 作为「区块链服务网络」,真正实现了上链**「顺滑而简单」**。 那么,在刚才那个过程中,究竟发生了什么事?我们可以来分析下源码 —— 打开`bsn_test > views.py`: 我们会看到刚才点击「保存上链」时所执行的函数: ```python def save_data(request): ... url = 'https://quanzhounode.bsngate.com:17602/api/node/reqChainCode' ... ``` 可以看到这个函数向「泉州」节点发送了一个执行**「链码」**的请求。请记住链码这个名词,这是 BSN 中的关键概念。 我们再来看看请求的构成: | 字段名 | 字段 | 内容 | | :------------------: | :-------: | :----------------------------------------------------------: | | **用户唯一标识** | userCode | reddate | | **应用唯一标识** | appCode | CL1851016378620191011150518 | | **链码 \| 链码标识** | chainCode | cc_base | | **链码 \| 函数名称** | funcName | et | | **链码 \| 函数参数** | args | ['{"baseKey": "89c21501-046a-4b3f", "baseValue": "Hello,World!"}'] | 至此,我们可以梳理出通过应用和 BSN 网络交互的过程: ![bsn 应用链路](https://tva1.sinaimg.cn/large/006y8mN6ly1g8xia7uk3bj31040b40te.jpg) 应用开发者可以**使用通用链码 / 自己定制开发链码 / 使用服务商提供的链码** 链码服务提供方: ![image-20191114134641324](https://tva1.sinaimg.cn/large/006y8mN6ly1g8xiqjkeljj31s60rw7a1.jpg) 服务会提供调用链码的接口: ![image-20191114134423334](https://tva1.sinaimg.cn/large/006y8mN6ly1g8xio5g8zbj31lw0u0gp4.jpg) 接口参数: ![image-20191114134911291](https://tva1.sinaimg.cn/large/006y8mN6ly1g8xit5ogdej30xc0oywgf.jpg) ## 预告 示例 DEMO 仅是基本操作的演示。要真正在项目中使用,我们还需要在示例代码的基础上,进行 SDK 的开发。 接下来的内容里,将会[演示如何一步步开发 SDK](https://learnblockchain.cn/article/359)。 [![](https://learnblockchain.cn/image/show/attachments-2020-01-fIT5hOXN5e1fdc729b2dd.jpeg)](https://learnblockchain.cn/image/show/attachments-2020-01-fIT5hOXN5e1fdc729b2dd.jpeg)
系列索引: 上链与背后的流程 | 联盟链开发(一) 动手编 SDK | 联盟链开发(二) SDK 1.0 版本的打造 | 联盟链开发(三) 将 SDK 发布到 PIP | 联盟链开发(四) 什么样的数据应该上链?| 联盟链开发 (五) BSN 相关问与答 | 联盟链开发(六) 链上简历应用 — 设计 | 联盟链开发(七) FISCO BCOS 介绍 | 联盟链开发(八) WeIdentity 极速体验 | 联盟链开发(九) 给Remix升个级 | 联盟链开发(十) 伪代码简述 ECDSA 签名过程 | 联盟链开发(十一) WeIdentity 的多签及限量凭证的实现 | 联盟链开发(十二)
这是基于 BSN(区块链服务网络)进行联盟链开发的系列教程的第一篇,主要包含以下两点内容:
- 运行示例代码,体验上链操作
- 简要分析 BSN 上应用的基础架构
体验上链操作
- clone 示例代码
https://github.com/leeduckgo/bsn_py
$ git clone https://github.com/leeduckgo/bsn_py.git
$ cd bsn_py
- 创建 python 虚拟环境
$ virtualenv --no-site-packages venv
$ source venv/bin/activate
- 安装 python 包
$ pip3 install -r requirements.txt
- 运行!
$ python3 manage.py runserver
运行成功后会显示已在8000端口启动服务。
-
上链
- 打开 http://127.0.0.1:8000/:
- 随便输入一个「标识」与「保存内容」,点击保存上链:
- 上链成功:
与此同时,控制台中会显示传回的交易 id:
- 查询
通过 Key (唯一标识码)进行查询:
执行示例代码的时候,发生了什么?
通过示例代码,我们可以感知到 BSN 作为「区块链服务网络」,真正实现了上链「顺滑而简单」。
那么,在刚才那个过程中,究竟发生了什么事?我们可以来分析下源码 ——
打开bsn_test > views.py
:
我们会看到刚才点击「保存上链」时所执行的函数:
def save_data(request):
...
url = 'https://quanzhounode.bsngate.com:17602/api/node/reqChainCode'
...
可以看到这个函数向「泉州」节点发送了一个执行「链码」的请求。请记住链码这个名词,这是 BSN 中的关键概念。
我们再来看看请求的构成:
字段名 | 字段 | 内容 |
---|---|---|
用户唯一标识 | userCode | reddate |
应用唯一标识 | appCode | CL1851016378620191011150518 |
链码 | 链码标识 | chainCode | cc_base |
链码 | 函数名称 | funcName | et |
链码 | 函数参数 | args | ['{"baseKey": "89c21501-046a-4b3f", "baseValue": "Hello,World!"}'] |
至此,我们可以梳理出通过应用和 BSN 网络交互的过程:
应用开发者可以使用通用链码 / 自己定制开发链码 / 使用服务商提供的链码
链码服务提供方:
服务会提供调用链码的接口:
接口参数:
预告
示例 DEMO 仅是基本操作的演示。要真正在项目中使用,我们还需要在示例代码的基础上,进行 SDK 的开发。
接下来的内容里,将会演示如何一步步开发 SDK。
区块链技术网。
- 发表于 2020-01-16 11:46
- 阅读 ( 2128 )
- 学分 ( 159 )
- 分类:BSN
评论