For the complete documentation index, see llms.txt. This page is also available as Markdown.

简介

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

区块链应用程序

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

开发者除了需要开发传统的上层业务应用,还需要编写链上智能合约代码。智能合约通常是无状态、事件驱动的代码,被调用时执行合约逻辑,并创建、读取或更新账本状态。这些链上状态记录业务相关的重要数据,如资产信息、所有权、交易记录等。

在支持访问控制的场景下,应用程序还需要提前从 CA 获取身份证书,并使用该身份连接区块链网络。

智能合约开发

智能合约直接操作账本状态,同时承载核心业务规则,设计质量会直接影响应用的安全性、可维护性和扩展性。

以超级账本 Fabric 为例,链码可以使用 Go、JavaScript/TypeScript、Java 等语言开发。Go 链码新项目优先使用 Contract API;只有需要更底层控制时,才直接使用 shim API。

本章后续内容以 Fabric 为例,讲解链码结构、开发方式和典型应用案例。

应用程序开发

应用程序通常以 Web、移动端 App、后端服务等形式呈现,通过调用智能合约交易函数来实现业务逻辑。应用程序既可以运行在区块链网络节点附近,也可以运行在外部服务器上,但必须能够访问 Fabric Gateway 所暴露的服务端点。

从 Fabric v2.4 起,客户端应用应优先使用官方 Fabric Gateway API。Gateway 负责协调背书、提交交易、等待提交状态、事件监听等流程,使应用代码集中在业务逻辑上。官方 Gateway 客户端 API 覆盖:

  • Go;

  • Node.js(TypeScript/JavaScript);

  • Java。

Python 相关 SDK 如果被提及,应视为社区方案或历史兼容方案,不应作为 Fabric v2.4+ 新项目的首选官方客户端 API。

应用程序通常需要完成以下步骤:

  • 从 CA 或钱包中加载合法身份;

  • 连接 Gateway;

  • 获取 network 和 contract;

  • 使用 evaluate 类调用读取账本状态;

  • 使用 submit 类调用提交会更新账本的交易;

  • 根据需要监听提交状态、链码事件或区块事件。

最后更新于