老徐

Never underestimate your power to change yourself!

ES6中如何删除数组中的重复项

| Comments

  ES6中,如何删除一个数组中的重复数据呢,以下是我总结的,从数组中过滤掉重复项并且返回唯一值的三种方法。我最喜欢的是使用Set因为它是最简单和最简单的😁

Fabric动态增加节点(Peer)

| Comments

前言

  在实际项目中,因为项目的需求变动,一般都会对fabric网络做一个修改,最常见的变动就是在现有的Fabric网络中增加一个节点,现在以之前搭建的fabric网络(版本1.1),balance-transfer为例做个介绍,整个过程其实也很简单,生成节点证书,增加新节点的docker配置文件并启动相应的服务,然后将新节点加到现有的channel当中,并在节点上安装智能合约(Chaincode),下午详情讲一下具体的操作步骤。

1、修改crypto-config.yaml文件并生成对应的节点证书。

首先我们确认我们需要在Org2里增加节点,那么我们在crypto-config.yaml文件里找到对应Org2的配置,把Template字段里的count参数修改成2,意思就是在此组织下生成两个节点,配置文件如下

Fabric多台服务器的部署(五)

| Comments

8、Fabric 浏览器的部署

8.1 环境准备

1、nodejs安装,在第1节里已经说过node的安装,需要注意的是node版本应该是v9.x以下。
2、PostgreSQL的安装,浏览器会把监听到的数据存储在pg里,所以需要安装pg数据。

Fabric多台服务器的部署(四)

| Comments

7、创建channel和chaincode

  之前我们说过,本项目是一个nodejs的项目,是根据https://github.com/hyperledger/fabric-samples里的balance_transfer稍作修改来的,所以这里我们创建channel和chaincode,包括数据上链都会用nodejs sdk来做。

7.1、启动nodejs服务

 进入我们的trace_wine项目,使用npm安装项目所需的package,

1
npm install

安装完后,我们现在要启动node服务,我们可以看下,当前目录下面的个runApp.sh的脚本文件,看下里面内容就知道,这是个启动node服务的脚本

Fabric多台服务器的部署(三)

| Comments

6、启动Fabric网络

 完成上面的工作后,我们已经生成了Fabric所需要的证书和创世纪块等一些必要文件后,现在我们就需要配置docker文件,来启动Fabric网络,之前我们讲过需要启动的一些服务,现在在列一下,服务器一共有4台, 跑4个peer,4个ca, 4个kafka,3个zookeeper, 2个orderer,具体信息如下:
1、Server1: peer1、Ca1、 Kafka1、Zookeeper1、Orderer1
2、Server2: peer2、Ca2、 Kafka2、Zookeeper2、Orderer2
3、Server3: peer3、Ca3、 Kafka3、Zookeeper31
4、Server4: peer4、Ca4、 Kafka4
现在我们需要在各台服务器上启动这些服务,需要说明一下,我们需要先启动zookeeper,再启动kafka,然后启动orderer和peer,这些是有先后顺序的,因为各服务之间有依赖关系,不按顺序启动,最后可能各服务之间的通讯有问题,下面依次来启动这些服务。

Fabric多台服务器的部署(二)

| Comments

3、下载Fabric镜像

3.1.1 下载Fabric 源码

1、在后面的例子中,有些地方需要用到源码中提到的工具来编译和生成证书等,这里需要下载一下Fabric的源码,在本地下载Fabric官方提供的源码

1
git clone git@github.com:hyperledger/fabric.git

需要注意的时候,需要把下载好的源码放在$GOPATH里,这个环境变量是最初安装GO的设置的,如

1
2
echo $GOPATH
/Users/xuyao/go

那么fabric的源码地址路径应该是

1
/Users/xuyao/go/src/github.com/hyperledger/fabric/

Fabric多台服务器的部署(一)

| Comments

1、前言

 Hyperledger Fabric是一个提供分布式账本解决方案的平台。Hyperledger Fabric由模块化架构支撑,并具备极佳的保密性、可伸缩性、灵活性和可扩展性。Hyperledger Fabric被设计成支持不同的模块组件直接拔插启用,并能适应在经济生态系统中错综复杂的各种场景。  目前Fabric在区块链溯源场景应用的挺多,农产品,奢侈品,艺术品,红酒等方面都看过到案例,区块链可以保存产品各个环节的数据,并上链,用户最后可能只需扫描一个二维码,就可以查出某个产品整个的生产过程,与中心化数据不同的是,区块链溯源项目数据一旦上链后不可更改,而且数据公开透明,任何一方都没有权利来更改它,同时每个环节需要为你上链的数据负责,如果哪天消费查出某个环节的数据是假的,由于账本数据是分布式的、不可更改的,大家只相信数据,商家也无法抵赖,最后商家只能认错,名誉扫地,所以区块链本质上是解决一个多方协作的一个信任问题,而对于一件事情需要多方协作,共同记账来一起完成的,Fabric作为联盟链,显然很符合这种需求。

密码学(二)之代换密码

| Comments

(一)代换密码(替换密码)

上一讲中,我们讲移位密码其实是将字母表中的字母一一对应到各数字,然后通过数字平移来进行加密,古典密码学中还有一种比较有名的加密方法,就是将明文中的字母表对应到一套密文的字母表,这种加密方法我们叫代换密码(substiution cipher)或叫替换密码,下图就是一个简单的代换密码对应表

密码学(一)之移位密码(恺撒密码)

| Comments

前言

密码学的基本目的是使得两个在不安全的信道上进行安全的通信,在计算机网络中,现假设有两个人Alice和Bob,Alice想发送消息给Bob,告诉他明天凌晨2点毒贩将在4号码头进行交易,请Bob配合缉毒。这里Alice有一个麻烦就是他怕在信息传输中可能会被敌人Oscar监听,甚至篡改消息内容,导致整个计划失败,Bob也对Alice发过来的消息有疑虑,不知道消息是否为Alice本人所发,消息内容是否真实等等。

如何理解RESTful

| Comments

什么是REST

  REST的全称是:Representational State Transfer,直接翻译过来就是:表现层状态转移,表现层的意思就是资源, 这个词语读着比较难理解,网上有一种叫法比较容易理解,叫:URL定位资源,用HTTP动词(GET,POST,PUT,DELETE)描述操作。很简洁,就是看url就知道这个路由是什么了,然后看http的动词method就明白要做什么了,最后看他的 status code就知道返回结果了。REST最大的几个特点为:资源、统一接口、URI和无状态。

RESTful架构

  RESTful 是现在比较流行的一种设计风格,它提供了一组设计原则和约束条件,主要用于客户端与服务器的交互。RESTful架构更简洁,更有层次,更易于实现缓存等机制。
  记得刚工作那会,代码写的比较烂,比如说要写增加商品的路由,会写成下面这样,从RESTful角度来说,这样写其实已经违背了他统一接口和对URI的意义的原则

1
POST /create_product