链码开发
链码是什么?
链码是一段程序,由 Go 、 node.js 、或者 Java 编写,来实现一些预定义的接口。链码运行在一个和背书节点分开的独立进程中,通过应用程序提交的交易来初始化和管理账本状态。
链码一般处理网络中的成员一致同意的商业逻辑,所以它类似于“智能合约”。链码可以在提案交易中被调用用来升级或者查询账本。赋予适当的权限,链码就可以调用其他链码访问它的状态,不管是在同一个通道还是不同的通道。注意,如果被调用链码和调用链码在不同的通道,就只能执行只读查询。就是说,调用不同通道的链码只能进行“查询”,在提交的子语句中不能参与状态的合法性检查。
私有数据集合定义
一个集合定义包含了一个或者多个集合,每个集合具有一个策略列出了在集合中的所有组织,还包括用来控制在背书阶段私有数据的传播所使用的属性,另外还有一个可选项来决定数据是否会被删除。
name
: 集合的名称。policy
: 定义了哪些组织中的 Peer 节点能够存储集合数据。requiredPeerCount
: 私有数据要分发到的节点数,这是链码背书成功的条件之一。maxPeerCount
: 为了数据冗余,当前背书节点将尝试向其他节点分发数据的数量。如果当前背书节点发生故障,其他的冗余节点可以承担私有数据查询的任务。blockToLive
: 对于非常敏感的信息,比如价格或者个人信息,这个值代表书库可以在私有数据库中保存的时间。数据会在私有数据库中保存blockToLive
个区块,之后就会被清除。如果要永久保留,将此值设置为0
即可。memberOnlyRead
: 设置为true
时,节点会自动强制集合中定义的成员组织内的客户端对私有数据仅拥有只读权限。