上链与上链背后的架构 | 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

评论