链客,专为开发者而生,有问必答!
此文章来自区块链技术社区,未经允许拒绝转载。
在Fabric中,chaincode(链码)也称为智能合约,是用高级语言编写的一段代码。代码主要是读取和操作账本上的数据。 智能合约是一座连接用户应用和Fabric账本的桥梁。用户的应用直接和智能合约打交道,智能合约直接和Fabric账本进行交互。
一个完整的Fabric区块链应用包含两部分,一部分是用户的应用程序,一部分是用户编写的智能合约。下图展示了用户智能合约和用户的应用程序以及账本交互的过程。用户的应用程序通过区块链网络的Peer节点,调用智能合约。用户智能合约通过区块链网络的Peer节点操作账本数据。整体架构中,用户的应用程序负责以下两部分职责。第一,用户的应用程序根据业务逻辑负责生成需要存储在区块链网络上的数据。第二,用户的应用程序根据业务逻辑,从区块链网络上获取到相关数据,进行业务操作。总体来说,用户应用程序更关注业务本身。智能合约主要是负责封装与账本直接交互的过程,包括按照用户指定的逻辑存储与查询账本数据,供用户应用程序调用。
Fabric中用户编写的智能合约是运行在隔离的沙盒环境中,目前主要展现形态是独立的docker容器。智能合约安装在区块链网络中的Peer节点上,运行时Peer节点会启动单独的docker容器来运行智能合约。智能合约以容器启动后,会与启动智能合约容器的Peer节点建立交互,从而实现对对应Peer节点上账本相关数据的操作。智能合约在运行的过程中,会在对应的Peer节点账本上创建独立的命名空间,命名空