文档章节

征信区块链解决方案探索(Hyperledger)

netkiller-
 netkiller-
发布于 03/12 17:26
字数 1862
阅读 588
收藏 16
点赞 0
评论 10

征信区块链解决方案探索(Hyperledger)

本文节选自电子书《Netkiller Blockchain 手札》

Netkiller Blockchain 手札

本文作者最近在找工作,有意向致电 13113668890

Mr. Neo Chan, 陈景峯(BG7NYT)

中国广东省深圳市龙华新区民治街道溪山美地 518131 +86 13113668890 <netkiller@msn.com>

文档始创于2018-02-10

版权 © 2018 Netkiller(Neo Chan). All rights reserved.

版权声明

转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明。

微信订阅号 netkiller-ebook (微信扫描二维码)

QQ:13721218 请注明“读者”

QQ群:128659835 请注明“读者”

网站:http://www.netkiller.cn

内容摘要

这一部关于区块链开发及运维的电子书。

为什么会写区块链电子书?因为2018年是区块链年。

这本电子书是否会出版(纸质图书)? 不会,因为互联网技术更迭太快,纸质书籍的内容无法实时更新,一本书动辄百元,很快就成为垃圾,你会发现目前市面的上区块链书籍至少是一年前写的,内容已经过时,很多例子无法正确运行。所以我不会出版,电子书的内容会追逐技术发展,及时跟进软件版本的升级,做到内容最新,至少是主流。

这本电子书与其他区块链书籍有什么不同?市面上大部分区块链书籍都是用2/3去讲区块链原理,只要不到 1/3 的干货,干货不够理论来凑,通篇将理论或是大谈特谈区块链行业,这些内容更多是头脑风暴,展望区块链,均无法落地实施。本书与那些书籍完全不同,不讲理论和原理,面向应用落地,注重例子,均是干货。

电子书更新频率?每天都会有新内容加入,更新频率最迟不会超过一周,更新内容请关注 https://github.com/netkiller/netkiller.github.io/commits/master

本文采用碎片化写作,原文会不定期更新,请尽量阅读原文。

http://www.netkiller.cn/blockchain/index.html

您的打赏是我的写作动力:http://www.netkiller.cn/blockchain/donations.html

==============================

33.7. 区块链征信解决方案探索

翻看了无数的文章没有找到一篇关于谈征信在区块链上怎么落地的文章。也在各种区块链微信群和QQ群中问了一圈,也没有人知道怎么落地。

现在的情况是大家都知道区块链做征信没问题,区中心化,不可撰改,简直是征信系统而设计的。那么怎么使项目落地呢?没有一篇文章谈到这个问题。可能有些大公司已经实现了,处于技术保密,没有分享。

看来只能靠自己了,以太坊和超级账本一直在研究,最近一段时间研究以太坊比较多,但是发现征信这个系统是在不适合在以太坊上实现,于是有回到超级账本上。

回到超级账本上感觉有点不适应,超级账本没有 Token , 超级账本的合约实现与以太坊完全不同。两个系统是两种思维解决同一个区块链需求。

一看 hyperledger 就是当前IBM风格,hyperledger 特点,体系庞大,结构复杂,难以理解,运维复杂。简单的问题用复杂的方式思考,做出一个复杂的系统,可用性极差。IBM的产品特点是,你只能他们合作,一旦合作(上了船)就摔不掉,从他们小型机,到中间件产品,以及各种行业解决方案。IBM的系统出了问题,只有IBM的人才能解决。

随者 hyperledger 开源,我希望 hyperledger 的风格能脱离IBM的影子。

回到正题,研究了几个 hyperledger 提供的 Example 后,对怎么实现征信需求,有了一点思路。

首先 chaincode 合约并不复杂,由两个核心方法组织,分别是Init和Invoke。其次数据操作类似 map 数据结构, shim.ChaincodeStubInterface 接口提供了 get, put, del 等操作。

33.7.1. 需求分析与概要设计

证信系统信息查询问题,一怎样查询?二查询哪些信息?

区块不是关系型数据库,无法实现SQL那样的发杂查询,所以设计接口要尽量迎合区块链的,有些情况需要妥协,适应区块链的弱点和不足。

但是我们可以让数据库和区块链同时存在,相互弥补不足。

数据库部分我这就就不讲了,区块链的实现方式是,使用身份证码号查询,返回 json 数据。

33.7.2. 数据结构

首先我们定义一个结构体用来存储身份信息,征信信息远不止这几项,请根据你的实际情况定义即可

package main

import "fmt"
import "encoding/json"

type Person struct {
	No string	`json:"no"`
	Name string	`json:"name"`
	Sex	bool	`json:"sex"`
	Age int		`json:"age"`
    Address string	`json:"address"`
}

func main(){
	
	person := &Person{"430725198001190911","景峯",true,30,"Shenzhen,China"}

	personJson, _ := json.Marshal(person)

	fmt.Println(string(personJson));

	person1 := &Person{
        No: "430725198001190911",
		Name: "Neo Chen",
		Sex: true,
		Age: 35,
		Address: "Shenzhen, China"}

    json2, _ := json.Marshal(person1)
    fmt.Println(string(json2))
}

编译,运行,测试定义json是否正确。

neo@MacBook-Pro ~/golang/contract % rm -rf person &&  go build person.go  && ./person
{"no":"430725198001190911","name":"景峯","sex":true,"age":30,"address":"Shenzhen,China"}
{"no":"430725198001190911","name":"Neo Chen","sex":true,"age":35,"address":"Shenzhen, China"}

最终我们只需要结构体复制到合约代码中。

type Person struct {
	No string	`json:"no"`
	Name string	`json:"name"`
	Sex	bool	`json:"sex"`
	Age int		`json:"age"`
    Address string	`json:"address"`
}

33.7.3. 将征信资料写入区块链

通过下面的函数,将征信数据写入到区块链上。

func (s *SmartContract) createPerson(stub shim.ChaincodeStubInterface, args []string) sc.Response {
 
    if len(args) != 6 {
        return shim.Error("Incorrect number of arguments. Expecting 6")
    }
 
    var person = Person{No: args[1], Name: args[2], Sex: args[3], Age: args[4], Address: args[5]}
 
    personAsBytes, _ := json.Marshal(person)
    stub.PutState(args[0], personAsBytes)
 
    return shim.Success(nil)
}

33.7.4. 查询区块数据

通过下面方法查询链上的征信资料。

func (s *SmartContract) queryPerson(stub shim.ChaincodeStubInterface, args []string) sc.Response {
 
    if len(args) != 1 {
        return shim.Error("Incorrect number of arguments. Expecting 1")
    }
    personAsBytes, _ := stub.GetState(args[0])
    return shim.Success(personAsBytes)
}

33.7.5. 删除区块

通过下面方法删除征信数据。

func (s *SmartContract) deletePerson(stub shim.ChaincodeStubInterface, args []string) sc.Response {
 
    if len(args) != 1 {
        return shim.Error("Incorrect number of arguments. Expecting 1")
    }
    personAsBytes, _ := stub.GetState(args[0])
    
    err= stub.DelState(args[0])
	if err != nil {
		return shim.Error("Failed to delete Student from DB, key is: "+args[0])
	}
    
    return shim.Success(personAsBytes)
}

这里仅仅讲了一下思路,因为家中刷新(刷墙)所以我的小服务器被覆盖起来了,没有 hyperledger 开发环境,所以无法提供完整的合约代码。

© 著作权归作者所有

共有 人打赏支持
netkiller-

netkiller-

粉丝 667
博文 240
码字总数 322337
作品 10
深圳
部门经理
加载中

评论(10)

rocky_star
rocky_star
好多年过去了
w
wo是wo
不认为区块链有前途,炒概念罢了
OSC_qwCOSD
OSC_qwCOSD

引用来自“OSC_qwCOSD”的评论

引用来自“OSC_qwCOSD”的评论

引用来自“OSC_qwCOSD”的评论

引用来自“OSC_qwCOSD”的评论

引用来自“OSC_qwCOSD”的评论

虚与委蛇

哦破坏之王

你一洗衣

命悬一线

名字一样

flop你以为
OSC_qwCOSD
OSC_qwCOSD

引用来自“OSC_qwCOSD”的评论

引用来自“OSC_qwCOSD”的评论

引用来自“OSC_qwCOSD”的评论

引用来自“OSC_qwCOSD”的评论

虚与委蛇

哦破坏之王

你一洗衣

命悬一线

名字一样
OSC_qwCOSD
OSC_qwCOSD

引用来自“OSC_qwCOSD”的评论

引用来自“OSC_qwCOSD”的评论

引用来自“OSC_qwCOSD”的评论

虚与委蛇

哦破坏之王

你一洗衣

命悬一线
OSC_qwCOSD
OSC_qwCOSD

引用来自“OSC_qwCOSD”的评论

引用来自“OSC_qwCOSD”的评论

虚与委蛇

哦破坏之王

你一洗衣
OSC_qwCOSD
OSC_qwCOSD

引用来自“OSC_qwCOSD”的评论

虚与委蛇

明敏一
OSC_qwCOSD
OSC_qwCOSD

引用来自“OSC_qwCOSD”的评论

虚与委蛇

哦破坏之王
OSC_qwCOSD
OSC_qwCOSD
虚与委蛇
OSC_qwCOSD
OSC_qwCOSD
嘻嘻嘻
区块链应用创新的加速器 - 阿里云容器服务区块链解决方案

区块链(Blockchain)近年来在全球得到越来越广泛的关注,吸引了越来越多的开发者、企业、高校、研究机构、政府组织等参与到区块链技术、应用的研究和探索之中。区块链的本质是一种防篡改的、...

阿里云头条 ⋅ 04/13 ⋅ 0

质数链网科技黄锐:区块链落地实体行业的六大产品与四大阶段

雷锋网(公众号:雷锋网)AI金融评论消息,6月16日,由深圳大学中国经济特区研究中心与香港国际新经济研究院、深圳市前海创新研究院共同举办“2018世界经济特区发展(深圳)论坛——改革开放再...

徐晓飞 ⋅ 前天 ⋅ 0

Hyperledger添加Caliper度量区块链性能

摘要:Hyperledger(Linux基金会管理下的全球合作项目)宣布,Caliper已经被技术指导委员会接收为一个Hyperledger项目。Hyperledger Caliper是一个区块链基准测试工具,让项目可以不间断地跟...

infoQ ⋅ 04/13 ⋅ 0

干货!区块链入门、进阶、行业专家观点!1000篇好文帮你破解区块链密码!(下篇)

随着区块链概念理论的不断成熟以及强劲技术的不断深耕,区块链已经成为投资圈中备受关注的热点,从区块链1.0时代落地数字货币比特币、莱特币等,打开了区块链通向新弯道的高速路口,到区块链...

山哥在这里 ⋅ 04/27 ⋅ 0

大突进,全球云计算厂商齐齐发力区块链

  据近日工信部发布《2018年中国区块链产业白皮书》显示,截至2018年3月底,我国区块链公司数量已达456家,初步形成了上游硬件制造、平台服务,下游产业技术应用的业态。   但目前已知的...

搜狐科技 ⋅ 05/31 ⋅ 0

从Java到区块链:如何成为区块链开发者

  这些天,区块链在每个人的嘴上。 许多来自各个领域的软件开发商正在尝试进入区块链市场。 我们与Mobilunity的区块链软件开发人员Eugene Kyselev谈了他进入区块链开发的第一步以及更多内容...

it168网站 ⋅ 05/16 ⋅ 0

企业级区块链:今天企业如何使用区块链?

  区块链是一项突破性技术,引发了各行业的创新和研发   大多数主要的财富500强公司,从零售和金融到汽车和航空公司,都在探索区块链技术,以即区块链在商业运营和安全方面带来可能的好处...

it168网站 ⋅ 05/02 ⋅ 0

超级账本推出可商用区块链开源平台Sawtooth 1.0,支持以太坊智能合约

Sawtooth长期以来被视为Hyperledger区块链联盟最有前途的代码库之一,现在,它已经正式准备好供企业使用了。 超级账本(Hyperledger)今天宣布推出Hyperledger Sawtooth 1.0. 这是2017年7月H...

北丐09 ⋅ 04/18 ⋅ 0

宏链科技:如何用区块链思想重构IT设施

  【IT168 资讯】如果给2018年最火的IT技术列个榜单,区块链一定名列前茅。   不得不说,区块链的真正兴起,更多是因为比特币等货币化应用;但在各种项目满天飞、不谈发币不聊天的乱象当中...

it168网站 ⋅ 06/01 ⋅ 0

众享比特李刘海:国密在超级账本Fabric中的应用

导读 4月22日,超级账本Hyperledger北京Meetup在北京大学信息学院举行。本次会议由Hyperledger中国工作组和Linux基金会主办、安妮股份、版权区块链联盟、北京大学协办,专注于技术交流、实践...

众享比特 ⋅ 04/25 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vim基础-编辑模式-命令模式

编辑模式:可以编辑修改文件。编辑模式下 按“esc”键返回一般模式。 按一次“Insert”键 (一般在键盘回格键右边)作用和“i”一样表示“插入”。按两次“Insert”键表示“替换”,作用为:...

ZHENG-JY ⋅ 15分钟前 ⋅ 0

MaxCompute读取分析OSS非结构化数据的实践经验总结

摘要: 本文背景 很多行业的信息系统中,例如金融行业的信息系统,相当多的数据交互工作是通过传统的文本文件进行交互的。此外,很多系统的业务日志和系统日志由于各种原因并没有进入ELK之类...

阿里云云栖社区 ⋅ 20分钟前 ⋅ 0

Linux操作系统有何优势?Linux学习

  当今世界流行的操作系统有3大类,Linux、Mac OS和Windows操作系统,Linux操作系统因其开源、免费、跨平台、良好的界面等特性,深受广大程序员们的青睐!   Linux操作系统被广泛的应用于...

老男孩Linux培训 ⋅ 22分钟前 ⋅ 0

Spring Cloud Spring Boot mybatis分布式微服务云架构 开发Web应用

静态资源访问 在我们开发Web应用的时候,需要引用大量的js、css、图片等静态资源。 默认配置 Spring Boot默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则: /static /pub...

itcloud ⋅ 26分钟前 ⋅ 0

6月19日任务 设置更改root密码、连接mysql、mysql常用命令

13.1 设置更改root密码 1. /usr/local/mysql/bin/mysql -uroot 设置环境变量 : export PATH=$PATH:/usr/local/mysql/bin/ 永久生效: vim /etc/profile 加入 export PATH=$PATH:/usr/local/m......

吕湘颖 ⋅ 27分钟前 ⋅ 0

MaxCompute读取分析OSS非结构化数据的实践经验总结

摘要: 本文背景 很多行业的信息系统中,例如金融行业的信息系统,相当多的数据交互工作是通过传统的文本文件进行交互的。此外,很多系统的业务日志和系统日志由于各种原因并没有进入ELK之类...

猫耳m ⋅ 28分钟前 ⋅ 0

Spring MVC controller,return重定向redirect:

@RequestMapping(value="/save",method=RequestMethod.POST)public String doSave(Course course) {log.debug("Info of Course");log.debug(ReflectionToStringBuilder.toStr......

颖伙虫 ⋅ 36分钟前 ⋅ 0

JavaSE——线程介绍

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 线程: 介绍:管线程叫多任务处理,首先你得知道...

凯哥学堂 ⋅ 40分钟前 ⋅ 0

ORM——使用spring jpa data实现逻辑删除

前言 在业务中是忌讳物理删除数据的,数据的这个对于一个IT公司可以说是最核心的资产,如果删除直接就物理删除,无疑是对核心资产的不重视,可能扯的比较远,本文最主要是想通过spring jpa ...

alexzhu592 ⋅ 46分钟前 ⋅ 0

CDN caching

Incapsula应用感知CDN使用智能分析和频率分析来动态缓存内容,并最大限度地提高效率。确保可直接从RAM获取最常访问的资源,而不依赖于较慢的访问机制。 1、 静态内容缓存 Incapsula缓存静态内...

上树的熊 ⋅ 49分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部