区块链,联盟链之Hyperledger Fabric

Hyperledger Fabric简介 fabric简介 Hyperledger Fabric是Hyperledger中的区块链项目之一。与其他区块链技术一样,使用账本,智能合约,参与者 可以管理交易。Hyperledger Fabric是私有和许可。网络的成员通过可信赖的会员服务提供商(MSP)注册,而不是开放式的无权限系统。Hyperledger Fabric支持隐私,提供了创建通道的功能,允许一组参与者创建单独的交易账本。 身份... 阅读详情

一 概述

Hyperledger Fabric是一个基于模块化架构的分布式账本解决方案平台,是IBM带头发起的一个开源的联盟链项目,后来成为了Hyperledger基金会的一个开源项目,Hyperledger基金会是由IBM,Intel,思科等大公司组成。除了Fabric之外,该基金会还孵化了很多区块链项目,但是Fabric是最出名的一个项目,所以一般说的超级账本(Hyperledger)基本上是指Fabric。

二 Hyperledger开源项目概览

                               

三 Hyperledger fabric的组成成份

fabric是中分布式账本,保证每个节点都保存了完整的数据,从而实现数据的不可篡改,而且在区块链中的数据只能被添加和修改,而不能被删除,数据修改后会在每个节点中同步。

Chaincode(链码),其实Chaincode就是智能合约,chaincode定义business logic,同时也是是读取,修改数据的唯一途径,也就是Ledger的变化只能调用Chaincode完成,而且Chaincode属于某个channel,channel中的peer都需要安装Chaincode,否则会导致数据不一致。

Chaincode的声明周期包括,install,init,invoke等。

Channel(信道),channel是数据的通道,也可以理解为独立于hyperledger fabric的实例,不同的channel之间是被隔离的从而保证区块链上的数据隐私问题。

Ledger(账本),ledger记录的是当前世界状态(world state),而且会保存数据所有的历史世界状态。除此之外,ledger从底层设计上保证了数据的一致性,有效性和不可篡改性,同时leger是hyperledger中的一个具有授权管理的共享帐本系统。

world state(世界状态),世界状态是指当前ledger中以key和value形式保存的数据,会以version来区别,当前是通过couchdb和leveldb来实现。

network(网络),此处的网络是指由peer组成的网络,在同一个网络中的peer,实时同步记账,保证ledger数据的一致性。

ordering service(排序服务),通过排序,验证transaction,最终提交invocation并把数据写入peer的ledger。

msp(Membership Service Provider),msp是用来管理peer的身份和访问许可,具有相同msp的peer才可以进行通信。

四 Hyperledger fabric的工作流程


 

如图所示,SDK是为客户端提供操作的api,使得客户端能够通过SDK与chaincode沟通。SDK的实现是与语言无关的。

peer0,peer1,peer2在同一个channel中,而且他们拥有相同的MSP(Memebership Service Provider),只有这样他们才能够进行通信。

此时,SDK接受到客户端的请求,并发送一个提案,可以是修改某条数据。当每个peer接收到提案后,进行模拟执行,会产生读写集,内部采用version的机制来记录修改前后的状态。此后各个peer将模拟执行后的结果以及签名发送给SDK,此时如果SDK收集到的背书达到一定数量之后,将发送正式的更新申请给orderer。

orderer接收到请求的内容之后,会对请求的内容以及签名做校验。如果校验成完成没有问题就会发送一个真正的调用更新给各个peer,各个peer才真正的执行更新。如果非法请求,也会保存到chaincode中,以提供后续的审查,除此外,能够将并行问题转化成串行执行。

Hyperledger Fabric 环境搭建及Fabric 测试网络使用(区块链、联盟链) 系统环境: [root@localhost ~]# cat /proc/version Linux version 3.10.0-1160.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Mon Oct 19 16:18:59 UTC 2020 官网手册: https://www.hyperledger.org/use/fabric 软 阅读详情

相关推荐

Hyperledger Fabric java 区块链开发详解

我们为希望尽快学习Hyperledger fabric 的java工程师上线了一门教程Fabric java 区块链开发详解,课程面向初学者,内容即包含Hyperledger Fabric的身份证书与MSP服务、权限策略、频道配置与启动、链码通信接口等核心概念,也包含Fabric网络设计、java链码与应用开发的操作实践,是java工程师学习Fabric区...

rejames的博客 5220

hyperledger fabric介绍

一.Hyperledger Fabric介绍 2015年,Linux基金会启动了Hyperledger项目,目标是发展跨行业的区块链技术。 Hyperledger Fabric是Hyperledger中的一个区块链项目,包含一个账本,使用智能合约并且是一个通过所有参与者管理交易的系统。 Hyperledger Fabric 是分布式账本解决方案的平台,以模块化架构为基础,支持不同组件的可插拔。 具备以下特点 1. 高度保密性 2. 可伸缩性 3. 弹性 4. 可扩展性 二.基本概念 区块链 共享的、通过

flying roc 1万+

Fabric区块链开发详解

Hyperledger是一个旨在推动区块链跨行业应用的开源项目,由Linux基金会在2015年12月主导发起该项目,成员包括金融、银行、物联网、供应链、制造和科技等多个行业的领头羊,托管了众多面向企业的区块链开源框架和工具。 Hyperledger及Fabric项目概述 Hyperledger Fabric(后文简称Fabric)是其中发展最好的一个企业级区块链平台,最初由Digital Ass...

mongo_node的专栏 7086

【自我提升】一、Hyperledger Fabric 概念梳理

Hyperledger是一个开放源代码的项目,由Linux基金会在2015年启动,旨在推动跨行业的区块链技术。Hyperledger并不是一种区块链技术,而是一个区块链项目的生态系统,包含了多个区块链和分布式账本技术的框架、库和工具集,它支持企业级的区块链应用开发。Hyperledger项目的目标是提供一个强健、可扩展、有高度模块化的框架,让企业能够建立自己的区块链解决方案或应用,以此来改善或简化业务流程。它主要关注的是性能、安全性和互操作性,特别适合于金融、医疗、供应链管理等领域的应用。

習習君的博客 4221

从零开发企业级联盟链:Hyperledger Fabric与数据权限实战

本文介绍了如何从零开始使用构建企业级联盟链,重点关注了数据权限管理的设计与实现。通过联盟链的去中心化特点,可以解决传统企业系统中的信任和数据共享问题。同时,通过智能合约、Channel、ACLs等机制,可以实现精细化的权限控制和数据隐私保护。未来,随着区块链技术在更多行业中的应用,将继续作为构建企业级联盟链的有力工具,帮助企业实现更高效、安全的数字化转型。在企业跨组织协作、供应链管理、金融行业等领域,区块链与数据权限的结合将发挥重要作用。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 780

Hyperledger Fabric:构建企业级区块链网络的利器

Hyperledger Fabric(简称Fabric)是Hyperledger项目中的一个子项目,是一个开源的区块链解决方案,专门为企业级应用而设计。它提供了一个高度模块化、可配置的架构,支持智能合约的执行和链码的开发,旨在打造一个灵活、高效、安全的区块链平台。Hyperledger Fabric以其开源、灵活、安全的特点,正逐渐成为企业级区块链解决方案的首选。无论是金融、供应链、物联网还是数字身份认证等领域,Fabric都展现出了强大的潜力和应用价值。

qq_34776150的博客 1444

基于fabric区块链的java链码编写,毕业设计选题研究Hyperledger fabric联盟链项目开发经验

Hyperledger是一个旨在推动区块链跨行业应用的开源项目,由Linux基金会在2015年12月主导发起该项目,成员包括金融、银行、物联网、供应链、制造和科技等多个行业的领头羊,托管了众多面向企业的区块链开源框架和工具。 Hyperledger及Fabric项目概述 Hyperledger Fabric(后文简称Fabric)是其中发展最好的一个企业级区块链平台,最初由Digital Ass...

大印的专栏 3171

Hyperledger Fabric是区块链中联盟链架构详细介绍

区块链开源实现HYPERLEDGER FABRIC架构详解 区块链开源实现HYPERLEDGER FABRIC架构详解 hyperledger fabric是区块链中联盟链的优秀实现,主要代码由IBM、Intel、各大银行等贡献,目前v1.1版的kafka共识方式可达到1000/s次的吞吐量。本文中我们依次讨论:区块链的共通特性、fabric核心概念、fabric的交易执行流程。。 1、区块链解决方案的特性 1.1 分布式帐本 区块链核心概念是分布式帐本,就像下面的图1所示,同样的...

街角有人祝福,巷口有人哭~ 8666

区块链笔记(三):stateRoot、nonce值的作用、Hyperledger Fabric和Composer区别、联盟链和中心账本区别

问题1:为什么要有stateRoot? 方便节点间状态的互相验证,保证交易的每个区块的一致性。 问题2:nonce值有什么用? 1.区块中的nonce值:和mixhash值一起用于挖矿; 2.交易中的nonce值:用来区别同一用户发出的不同交易的标记。①确认交易顺序;②防止双花;③撤销pending中的交易;④确定生成的合约地址。 问题3:Hyperledger Fabric的特点,和Compos...

cxh的博客 3301

C语言——利用矩阵LU分解法求逆、行列式

本章介绍了LU分解法,以及如何利用LU分解法求逆、行列式,针对每个公式、原理、代码进行了详细介绍,希望可以给大家带来帮助。

王元笙 1万+

保姆级避坑指南:用Docker在Ubuntu 22.04上部署Isaac Sim 5.1.0,搞定宇树G1仿真环境

本文提供了一份详细的保姆级避坑指南,帮助用户在Ubuntu 22.04上通过Docker部署Isaac Sim 5.1.0,并成功搭建宇树G1仿真环境。文章涵盖了环境准备、Docker与NVIDIA容器工具包的配置、Isaac Sim镜像的定制化拉取与配置,以及宇树G1仿真环境的实战调试,旨在帮助开发者高效解决部署过程中的常见问题。

weixin_33728268的博客 207

区块链智能合约开发笔记——stateRoot,nonce值,Hyperledger Fabric,联盟链智能合约

问题1:为什么要有stateRoot? stateRoot指的是状态树根节点的Hash值。每个区块上都包含这样的一个状态结点,方便节点间状态的互相验证,保证在交易的每个区块且每时每刻,所有节点的状态是一致的。 问题2:nonce值有什么用? 交易中的Nonce值指的是from账户发出交易的次数,同一账户的交易会被依次确认。区块中的nonce值是用于挖矿,这是为了证明工作量的无意义的值,这个值将决定...

dick的博客 4175

人工智能训练师认证教程(5)使用MONAI进行医学影像分析的完整指南

本文介绍了使用MONAI框架进行医学影像分析的全流程。首先详细说明了环境搭建步骤,包括PyTorch和MONAI的安装配置。然后以肺部CT 3D分割为例,分步骤讲解了数据准备与预处理、3D UNet模型构建、训练配置(DiceLoss损失函数、Adam优化器等)以及训练验证循环的实现。文章还包含推理可视化方法和模型导出为ONNX格式的部署方案,并强调了医学影像分析中的数据格式适配、强度归一化、显存优化等关键注意事项。最后指出MONAI的医学专用组件可大幅简化开发流程,建议后续可探索SwinUNETR等进阶方

华为开发者布道师,天府英才计划,致力于大数据+AI 的应用创新,助力企业与个人AI创新赋能。 1213

区块链-联盟链-Hyperledger Fabric学习方案

学习目标: (1)掌握技术架构理解核心模块 (2)掌握如何编写智能合约 (3)掌握应用的技术开发; 1.工具语言的学习: 1)go语言,Fabric、docker等多是基于go语言开发。 2)Java、Node.js、Python等。 2.Hyperledger架构及核心模块学习: 1)阅读白皮书了解技术原理;其中的关键术语也要深入理解掌握。 2)对Fabric核心模块进行学习。 3)核...

simonboy的博客 1317

农作物生长模型:数学建模与实战案例

在本篇博客中,我们介绍了农作物生长模型的基本原理,并结合Matlab代码和实战案例,演示了如何应用数学建模技术进行农作物生长模型的研究与应用。农作物生长模型在农业领域具有重要意义,希望本篇博客能帮助读者更好地理解农作物生长模型的原理和应用,并在实际农业生产中取得更好的效果。

YOLO 2735

杰理SDK入门教程(六):自定义按键事件

这篇教程介绍了在杰理AC695N芯片上实现自定义按键功能的完整流程,包含三个核心步骤:首先在key_event_deal.h文件中添加按键枚举定义;然后在adkey_table.c配置按键映射表,按模式和行为类型设置按键值;最后在app_common.c的消息处理函数中添加自定义按键逻辑。教程强调需注意不同模式按键表的列定义差异,并提供了具体代码示例,最后指导完成编译测试验证。全文结构清晰,配有关键代码截图,适合开发者快速上手自定义按键功能开发。

qq_42014563的博客 1018

如何开始区块链联盟链hyperledger fabric

首先说下hyperledger fabric参与的对象有哪些: 1.CA信息及相关的证书文件(客户端发起交易要先通过CA进行注册登记) 2.通道(各个组织将通过通道进行通信) 3.排序节点 4.Peer节点,Peer节点可以包括主节点(负责和order节点通信)、背书节点(处理客户端提交的提案)、结账节点(用来记录order节点排序好的交易)、锚节点(锚节点是在一个channel上可以被所...

chen的专栏 640

3.4 ISIS和OSPF之间路由引入

通过以上输出可以看到OSPF的路由引入到了IS-IS中。通过以上输出可以看到ISIS的路由没有传递给OSPF。通过以上输出可以看到OSPF的路由没有传递给ISIS。通过以上输出可以看到ISIS的路由被引入进了OSPF。掌握在IS-IS中引入OSPF路由的方法。掌握在OSPF中引入IS-IS路由的方法。图3-3:ISIS和OSPF之间路由引入。在R3上把ISIS的路由引入到OSPF。OSPF引入外部路由的缺省度量值为1。在R3上把OSPF的路由引入到ISIS。引入的外部路由类型为Type2。

lwljh134的博客 1803

联盟链技术

奇技 · 指南目前区块链技术的发展存在两个大的方向,即联盟链和公链,两者之间最大的区别在于是否存在”准入机制”,这里的”准入机制”指访问权限的管理机制。联盟链有“准入机制”,并不是任意的个...

360技术 4486

zemax 如何编译用户自定义DLL(含VS下载教程)

zemax 如何编译用户自定义DLL(含VS下载教程)

weixin_72050316的博客 492

Dify之八添加各种在线大模型

Dify之八添加各种在线大模型

yilvyangguang520的博客 941

联盟链 Hyperledger Fabric v1.4.4 从零搭建起第一个区块链网络

是

Phather的博客 3421

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

HyperLedger Fabric在携程区块链服务平台的应用实战

作者介绍:何鑫铭,携程技术中心创新研发部区块链技术专家,携程区块链技术平台技术负责人,精通当前主流区块链开源技术框架,热衷于研究区块链底层设计和区块链应用创新。 一.在业务应用区块链技术之前,我们需要做什么?        在开始正式的主题介绍之前,我先跟大家一起看一张图: 上图是Gartner提供的一份2018年关于企业对区块链技术规划的调研结果,结果表明在受访的企业中(包含高科技、I...

hexinming的博客 2962

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Java工具20-Java构建区块链应用:探索Hyperledger Fabric

本文介绍了基于Java开发Hyperledger Fabric区块链应用的完整指南。主要内容包括:区块链技术概述,重点讲解Hyperledger Fabric的模块化架构和联盟链特性;Fabric核心组件解析,涵盖Peer节点、排序服务和智能合约开发;详细的环境搭建步骤,从Docker部署到Java SDK配置;智能合约(Chaincode)开发方法,包括接口实现和生命周期管理;以及Java客户端应用开发实践。文章还提供了供应链溯源系统这一实战项目案例,展示了从架构设计到部署运维的全过程。通过本文,开发者可

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

两步搞定Hyperledger主打区块链解决方案Fabric

区块链技术发展至今,形成了公有链和联盟链两种主流技术平台。公有链 面向大众,用户可以匿名参与,非常方便,账本数据也公开,加上强大的智能合约,因此公有链极大地促进了区块链概念和技术的普及,比如比特币、Ethereum平台等。联盟链 考虑到商业应用对安全、隐私、监管、审计、性能的需求,提高准入门槛,增加了安全、隐私、可监管审计等商业特性,是区块链技术在商业领域的应用探索。本文将通过系统介绍,帮你两步搞...

wqhlmark64的博客 743

区块链开源实现HYPERLEDGER FABRIC架构详解

写在前面 今天看了一篇讲解fabric架构的文章,感觉还不错,将fabric里的MSP和交易流程都讲的明明白白,遂将文章在此分享。各位也可以直接看原文,也可以看我的,中间穿插了些本人拙见。 文章转载自http://www.taohui.pub/2018/05/26/%e5%8c%ba%e5%9d%97%e9%93%be%e5%bc%80%e6%ba%90%e5%ae%9e%e7%8e%b0hype...

u012140251的博客 1288
上一篇: 解决umi 不是内部或外部命令,也不是可运行程序问题
下一篇: 项目架构的演进
至学者
博客等级 码龄9年 180粉丝 773原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值