🧭
区块链技术指南
  • 前言
  • 修订记录
  • 如何贡献
  • 区块链的诞生
    • 记账科技的千年演化
    • 分布式记账与区块链
    • 集大成者的比特币
    • 区块链的商业价值
    • 本章小结
  • 核心技术概览
    • 定义与原理
    • 技术的演化与分类
    • 关键问题和挑战
    • 趋势与展望
    • 认识上的误区
    • 本章小结
  • 典型应用场景
    • 应用场景概览
    • 金融服务
    • 征信管理
    • 权属管理与溯源
    • 资源共享
    • 物流与供应链
    • 物联网
    • 数字艺术品和 NFT
    • 其它场景
    • 本章小结
  • 分布式系统核心技术
    • 一致性问题
    • 共识算法
    • FLP 不可能原理
    • CAP 原理
    • ACID 原则与多阶段提交
    • Paxos 算法与 Raft 算法
    • 拜占庭问题与算法
    • 可靠性指标
    • 本章小结
  • 密码学与安全技术
    • 密码学简史
    • Hash 算法与数字摘要
    • 加解密算法
    • 消息认证码与数字签名
    • 数字证书
    • PKI 体系
    • Merkle 树结构
    • Bloom Filter 结构
    • 同态加密
    • 其它技术
    • 本章小结
  • 比特币 —— 初露锋芒的区块链
    • 比特币项目简介
    • 比特币诞生背景
    • 工作原理
    • 挖矿过程
    • 共识机制
    • 闪电网络
    • 侧链
    • 热门问题
    • 相关工具
    • 本章小结
  • 以太坊 —— 挣脱加密货币的枷锁
    • 以太坊项目简介
    • 核心概念
    • 主要设计
    • 相关工具
    • 安装客户端
    • 使用智能合约
    • 智能合约案例:投票
    • 本章小结
  • 超级账本 —— 面向企业的分布式账本
    • 超级账本项目简介
    • 社区组织结构
    • 顶级项目介绍
    • 开发必备工具
    • 贡献代码
    • 本章小结
  • Fabric 安装与部署
    • 简介
    • 本地编译组件
    • 容器方式获取
    • 本地方式启动 Fabric 网络
    • 容器方式启动 Fabric 网络
    • 本章小结
  • 管理 Fabric 网络
    • 简介
    • 使用通道
    • 管理节点
    • 管理链上代码
    • 监听网络事件
    • 自动发现网络信息
    • 使用运维服务
    • 如何升级网络版本
    • 使用 SDK
    • 注意事项与最佳实践
    • 本章小结
  • 智能合约开发
    • 简介
    • 链码概念与结构
    • 示例一:信息公证
    • 示例二:交易资产
    • 示例三:数字货币发行与管理
    • 示例四:学历认证
    • 示例五:社区能源共享
    • 小结
  • Fabric 架构与设计
    • 简介
    • 架构设计
    • 消息协议
    • 小结
  • 区块链服务平台设计
    • 简介
    • IBM Bluemix 云区块链服务
    • 微软 Azure 云区块链服务
    • 使用超级账本 Cello 搭建区块链服务
    • 本章小结
  • 性能与评测
    • 简介
    • Hyperledger Fabric v0.6
    • 小结
  • 附录
    • 术语
    • 常见问题
    • Go 语言开发相关
      • 安装与配置 Golang 环境
      • 编辑器与 IDE
      • 高效开发工具
      • 依赖管理
    • ProtoBuf 与 gRPC
    • 参考资源链接
由 GitBook 提供支持
在本页
  • 智能合约开发
  • 应用程序开发

这有帮助吗?

在GitHub上编辑
  1. 智能合约开发

简介

上一页智能合约开发下一页链码概念与结构

最后更新于3年前

这有帮助吗?

区块链应用,一般由若干部署在区块链网络中的智能合约,以及调用这些智能合约的用户应用程序组成。典型结构如下图所示。

区块链应用程序

其中,用户访问与业务本身相关的上层应用程序,应用程序调用智能合约,智能合约与账本直接交互。

开发者除了需要开发传统的上层业务应用,还需要编写区块链智能合约代码。

典型的智能合约是无状态的、事件驱动的代码,被调用时自动执行合约内逻辑。智能合约可以创建和操作账本状态,这些链上状态记录业务相关的重要数据(如资产信息和所有权)。区块链网络中可以部署多个智能合约,应用程序通过名称、版本号等来指定调用特定智能合约。

在支持访问控制的场景下,应用程序还需提前从 CA 处申请证书,得到访问许可。

智能合约开发

智能合约直接与账本结构打交道,同时支持上层业务逻辑,作用十分关键。设计得当的智能合约可以简化应用开发;反之则可能导致各种问题。

为了合理设计智能合约,开发者需要了解区块链平台的智能合约结构、语言特性、状态存储方式等。例如,比特币网络不支持高级语言,所支持的处理逻辑存在限制;超级账本 Fabric 项目支持多种高级语言,支持图灵完备的处理逻辑,可以开发复杂的逻辑。

此外,开发者还需要考虑智能合约的生命周期管理,包括代码的编写、版本管理、提交验证、升级等,都需要遵循标准规范。

本章后续内容会以超级账本 Fabric 为例,讲解其智能合约的开发过程。

应用程序开发

应用程序通常以 Web、移动端 App 等形式呈现,通过调用智能合约提供的方法接口来实现业务逻辑。应用程序既可以运行在区块链网络的节点上,也可以运行在外部服务器上,但必须可以访问到区块链网络服务。

为方便进行身份管理、网络监听、调用智能合约等,应用程序开发通常需要集成区块链 SDK。以超级账本 Fabric 为例,社区提供的 SDK 封装了一系列与区块链网络打交道的基本方法,包括发送交易、监听网络事件、查询区块和交易信息等,能够提高对智能合约进行使用的效率。

例如,利用 SDK 可以自动化对智能合约的调用和确认过程:

  • 客户端从 CA 获取合法的身份证书;

  • 构造合法的交易提案发送给 Endorser 节点进行背书;

  • 收集到足够多背书支持后,构造合法的交易请求,发给排序节点进行排序;

  • 监听网络事件,确保交易已经写入账本。

Fabric 目前提供了 Node.Js、Python、Java、Go 等语言的 SDK,开发者可以根据需求自行选择。