专栏首页Netkiller征信区块链解决方案探索(Hyperledger)
原创

征信区块链解决方案探索(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 开发环境,所以无法提供完整的合约代码。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • “Hyperledger Fabric 是假区块链!”

    自 Libra 发布以来,沉寂已久的区块链社区又活跃了起来,一些探索区块链业务的公司也在暗地里较劲不甘落后。相信你也注意到了,这些大公司往往都对现有比特币、以太...

    区块链大本营
  • 食品安全溯源区块链解决方案探索

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

    netkiller old
  • 区块链银行应用探索(Hyperledger fabric)

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

    netkiller old
  • 食品安全溯源区块链解决方案探索

    Netkiller Blockchain 手札 <netkiller@msn.com> 文档始创于2018-02-10 版权 © 2018 Netkiller...

    netkiller old
  • 海南、成都同日发布政策支持“数字资产交易中心”建设,区块链融资超1.94亿人民币

    交通运输部:推动区块链技术在公路工程信息管理等方面的应用;工信部:推动区块链和边缘计算等前沿技术的部署和融合;中国人社部发布《关于对拟发布新职业信息进行公示的公...

    用户7358413
  • 快讯|成都站·智能合约和DApp到底是咋子回事嘛?(附PPT)

    言归正传,本期成都站沙龙以“区块链核心技术及DApp开发”为主题,有幸邀请到了NULS发起人张星、初链中国区CTO陈大宏、LemoChain CTO严强、纸贵科...

    区块链大本营
  • 普华永道:2030年区块链价值将突破30万亿

    在寻找区块链技术商业使用场景时,你需要考虑技术的优势以及它所创造的新通证经济系统。实践证明,使用区块链技术可以显著降低成本,特别是在与其他参与方的交互中,通证经...

    区块链大本营
  • 企业应该选择哪种区块链

    随着探索如何把区块链应用在各种场景,许多人就想到,也许不需要全世界的人共同参与,也不需要挖矿,我们只需要用到区块链的可信任、可追溯特性,通过较少节点达到拜占庭将...

    南坡海瑞
  • 2019年,区块链的分片技术仍只是纸上谈兵吗?

    根据木桶效应,一个系统的性能取决于它的短板。当下,制约区块链应用大规模落地的短板正是可拓展性问题,因为区块链的底层设计仅支持极低的交易吞吐量,还不及一些传统工具...

    区块链大本营
  • 竞猜活动区块链方案探索

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

    netkiller old
  • 竞猜活动区块链方案探索

    竞猜活动区块链方案探索 合约实现了报名,退出,参加人数控制,竞猜次数控制,公布答案,获奖名单等等功能 pragma solidity ^0.4.20;// Au...

    netkiller old
  • 颠覆你对区块链的认识

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

    netkiller old
  • Hyperledger - 超级账本项目:简介,安装,案例

    Hyperledger 项目是开源界面向开放、标准区块链技术的首个重要探索,在 Linux 基金会的支持下,吸引了众多科技和金融巨头的参与。 本章将介绍 hyp...

    首席架构师智库
  • 如何使用区块链开发一个落地项目?这位实战大牛手把手教会你

    区块链大本营
  • 区块链技术面试常被问到的Hyberledger Fabric关键概念

    先给英文官方原文地址:https://hyperledger-fabric.readthedocs.io/en/latest/overview.html

    圆方圆学院
  • 入门必备 | 盘点11个常用的区块链开发工具,年薪百万的工程师都是从玩转它们开始的

    Solidity 是区块链开发者中最流行的编程语言之一。它支持面向对象的范式并且可以用于编写智能合约。以太坊DApp也可以用Solidity编码。Solidit...

    区块链大本营
  • 别再拿TPS说事了!说实在的,有些场景3000TPS就够用了 | 人物志

    区块链大本营
  • 谁能走得更远?百度、阿里、腾讯的区块链技术与布局对垒

    技术更迭随时会让一个巨人倒下——手机领域曾经的霸主诺基亚、摩托罗拉没跟上智能手机系统步伐,从巅峰转瞬跌入谷底。BAT都明白其中利害,早已枕戈待战。

    区块链大本营
  • Hyperledger Fabric学习笔记01-系统逻辑架构

    Hyperledger Fabric 1.0是一种通用的区块链技术,其设计目的是利用一些成熟的技术实现分布式账本技术(Distributed Ledger Te...

    WindCoder

扫码关注云+社区

领取腾讯云代金券