Hyperledger fabric 如何在本地背书对等方上验证交易来源?

Hyperledger fabric 如何在本地背书对等方上验证交易来源?,hyperledger-fabric,hyperledger,Hyperledger Fabric,Hyperledger,我正在研究Hyperledger结构的体系结构。我很好奇,背书对等方如何在本地验证交易的发起 根据文档,当提交客户向背书对等方发送交易时,每个背书对等方都会验证客户的签名。据我所知,签名是由客户端的私钥加密的消息。要验证签名,背书对等方需要客户端的公钥 所以,我的问题是,背书方从哪里获得客户机的公钥?我猜公钥位于由configtxgen工具生成的通道的genesis块内,因为同一通道上的所有对等方都有此genesis块。对吗?或者事务是否像https连接一样包含客户端的公钥(也称为客户端的证书)

我正在研究Hyperledger结构的体系结构。我很好奇,背书对等方如何在本地验证交易的发起

根据文档,当提交客户向背书对等方发送交易时,每个背书对等方都会验证客户的签名。据我所知,签名是由客户端的私钥加密的消息。要验证签名,背书对等方需要客户端的公钥

所以,我的问题是,背书方从哪里获得客户机的公钥?我猜公钥位于由
configtxgen
工具生成的通道的genesis块内,因为同一通道上的所有对等方都有此genesis块。对吗?或者事务是否像https连接一样包含客户端的公钥(也称为客户端的证书)?(但是,根据文档,在消息格式上没有放置客户机公钥的空间。)


提前感谢。

否,genesis块没有网络节点的公钥,只有根CA和中间CA的公钥

在事务内部,客户机的身份被编码。 Fabric v1.0仅提供基于x509证书的标识。 公钥在证书中

签名不包含证书。这只是签名本身。 证书包含在事务的签名负责人(在创建者字段中)中,该签名负责人是事务的一部分。


谢谢你的回答。我觉得你的回答合乎逻辑。根据文档,
建议
消息格式为
发送
格式为
。据我所知,签名是由客户机的私钥加密的其他字段(clientID等)。那么,您的意思是
clientSig
除了包含加密的其他字段外,还包含客户端的证书吗?或者证书包含在交易中,但文档没有将其作为
建议
消息格式的一部分提及?为什么签名要加密?其目的是为所有人提供所有权证明,因此不加密,但任何人(拥有交易,因此拥有身份,因此拥有公钥)都可以对其进行验证。我更新了答案,看一看
message SignatureHeader {
    // Creator of the message, specified as a certificate chain
    bytes creator = 1;

    // Arbitrary number that may only be used once. Can be used to detect replay attacks.
    bytes nonce = 2;
}