首先看下Blockchain结构,除了header指向下一个block的hash value外,block是由一组transaction构成, Transactions --> Blocks --> Ledger

1. Chaincode是生成transacton的唯一方式,是外界与区块链系统交互的唯一渠道,开发Fabric区块链应用就是编写Chaincode, Chaincode就是业务逻辑实现

2. Fabric预先定义了Chaincode接口,Chaincode实际上是一种接口的实现(理论上编程语言都可以去实现这些接口,目前支持go, java),以下是必须要实现的接口

type Chaincode interface {
// deploy transaction被调用,一般只调用一次
Init(stub ChaincodeStubInterface) pb.Response // 查询或更新账本,可多次调用
Invoke(stub ChaincodeStubInterface) pb.Response
}

3. Chaincode编写好后,需要部署在Fabric的节点上, 运行在Docker容器中(开发chaincode的时候建议本地调试)

4. Chaincode也称为智能合约,Chaincode就是智能合约的实现方式,两者等同。感觉上Chaincode是技术用语,智能合约(Smart Contract)是业务用语。官方文档关于两者是这样表述的:

A chaincode typically handles business logic agreed to by members of the network, so it may be considered as a “smart contract”.

5. 区块链是一个复杂的系统,涉及很多技术领域,包括密码学、分布式系统设计、数据库设计、性能、扩展性、系统集成和运营,底层的系统会变成blockchain as a service,大多数应用开发和运维人员不需要涉及底层的架构,更多的会围绕着Chaincode来做开发

官方文档:https://hyperledger-fabric.readthedocs.io/en/release/chaincode.html

chaincode for 开发人员: https://hyperledger-fabric.readthedocs.io/en/release/chaincode4ade.html

chaincode for 运维人员: https://hyperledger-fabric.readthedocs.io/en/release/chaincode4noah.html

Hyperledger Fabric Chaincode解析的更多相关文章

  1. Hyperledger Fabric Chaincode for Operators——实操智能合约

    什么是Chaincode(智能合约)? chaincode是一个程序,它是使用Go语言编写的,最终在Java等其他编程语言中实现了指定的接口.chaincode运行在一个被背书peer进程独立出来的安 ...

  2. HyperLedger Fabric ChainCode开发——shim.ChaincodeStubInterface用法

    深蓝前几篇博客讲了Fabric的环境搭建,在环境搭建好后,我们就可以进行Fabric的开发工作了.Fabric的开发主要分成2部分,ChainCode链上代码开发和基于SDK的Application开 ...

  3. Hyperledger Fabric ChainCode开发

    预览 Hyperledger Fabric的chaincode开发目前支持Go.Java.Node.js语言,下面以Go语言作为例子,我们先看下面的一个官方提供chaincode模板 ··· pack ...

  4. Hyperledger Fabric chaincode 开发(疑难解答)

    Q&A Q1: 使用fabric release 1.2 进行golang chaincode开发时报错: ..\..\hyperledger\fabric\vendor\github.com ...

  5. Hyperledger Fabric 1.0 从零开始(十二)——fabric-sdk-java应用【补充】

    在 Hyperledger Fabric 1.0 从零开始(十二)--fabric-sdk-java应用 中我已经把官方sdk具体改良办法,即使用办法发出来了,所有的类及文件都是完整的,在文章的结尾也 ...

  6. Hyperledger Fabric 1.0 从零开始(十二)——fabric-sdk-java应用

    Hyperledger Fabric 1.0 从零开始(十)--智能合约 Hyperledger Fabric 1.0 从零开始(十一)--CouchDB 上述两章,最近网上各路大神文章云集,方案多多 ...

  7. Centos7 HyperLedger Fabric 1.4 生产环境部署

    Kafka生产环境部署案例采用三个排序(orderer)服务.四个kafka.三个zookeeper和四个节点(peer)组成,共准备八台服务器,每台服务器对应的服务如下所示: kafka案例网络拓扑 ...

  8. Hyperledger Fabric 1.0 从零开始(一)

    在HyperLedger/Fabric发布0.6的时候,公司就已经安排了一个团队研究这一块,后来也请IBM的专家组过来培训了一批人,不幸的是,这批人后来全走了,然后1.0就发布了.自从2017年7月H ...

  9. 搭建基于hyperledger fabric的联盟社区(四) --chaincode开发

    前几章已经分别把三台虚拟机环境和配置文件准备好了,在启动fabric网络之前我们要准备好写好的chaincode.chaincode的开发一般是使用GO或者JAVA,而我选择的是GO语言.先分析一下官 ...

随机推荐

  1. volley源码解析-Throwable类源码解析

    前提知识点: 1.Serializable接口 作用:表示可序列化的语义.就是Java提供的通用数据保存和读取接口.任何类型实现了Serializeable接口,就可以被保存到文件中,或者作为数据流通 ...

  2. Oracle临时表和SQL Server临时表的不同点对比

    文章来源:http://www.codesky.net/article/201109/141401.html 1.简介 Oracle数据库除了可以保存永久表外,还可以建立临时表temporary ta ...

  3. UIImage+PYJColorBecomeImage

    UIImage+PYJColorBecomeImage.h: // // UIImage+PYJColorBecomeImage.h // 颜色转成图片 // // Created by PengYu ...

  4. 通过API访问Ambari的配置

    HttpClient client = new HttpClient(); Base64.Encoder encoder = Base64.getEncoder(); HttpMethod metho ...

  5. bzoj 2865 字符串识别——后缀数组

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2865 做出 ht[ ] 之后,sa[ ] 上每个位置和它前面与后面取 LCP ,其中较大的长 ...

  6. AzureStack混合云大数据解决方案

    AzureStack是Azure的私有云解决方案.AzureStack可以帮助用户实现混合云的部署模式. 本文将介绍混合云的模式下,Azure作为计算资源,AzureStack作为存储资源.如下图: ...

  7. 1132 Cut Integer

    题意:略. 思路:注意除数可能为0的情况,不然会导致浮点错误. 代码: #include <iostream> #include <string> using namespac ...

  8. PHP中静态变量的使用

    1.定义静态变量 public static $endpoint,$accessKeyId,$accessKeySecret,$bucket; 2.静态变量赋值 protected function ...

  9. 自制html

    //$this->_red('账号或密码有误','/student/stureg/add'); echo '<meta http-equiv="Content-Type" ...

  10. mysql设计与开发

    架构设计表结构设计索引sql语句1.表结构设计的核心思想是什么?容量评估,性能优化,硬件升级,垂直拆分,水平拆分 2.有个大表为了一个查询(一天就查2次),领导要你建索引(索引空间大小有500G),你 ...