当前位置: 首页 > 知识库问答 >
问题:

在检查过程中,交易的手动签名是不可视的(fabric 1.4)

杭昊空
2023-03-14

但是我没能做到这一点,也就是说,我有一个需要多个签名的策略,所以我用这两个组织的MSP信息先后在事务文件(.tx)上签名,但是当我提交事务时,订单者或同行会拒绝它,说“签名集不满足策略...”。

奇怪的是,这个检查忽略了我所做的其他签名,它只会认为签名是由提交事务的命令自动完成的:peer channel update或peer chaincode实例化,就好像最后一个签名使我之前手动应用的签名无效一样。

关于我错过了什么的想法?

    null

我修改以生成不同签名的变量:

  • CORE_PEER_LOCALMSPID
  • CORE_PEER_MSPConfigPath

--编辑

    null
Application: &ApplicationDefaults

# Organizations is the list of orgs which are defined as participants on
# the application side of the network
Organizations:

# Policies defines the set of policies at this level of the config tree
# For Application policies, their canonical path is
#   /Channel/Application/<PolicyName>
Policies:
    Readers:
        Type: ImplicitMeta
        Rule: "ANY Readers"
    Writers:
        Type: ImplicitMeta
        Rule: "MAJORITY Admins"
    Admins:
        Type: ImplicitMeta
        Rule: "MAJORITY Admins"

Capabilities:
    <<: *ApplicationCapabilities
peer channel create --channelID $CHANNEL_ID --orderer orderer.example.com:7050 --tls --cafile $ORDERER_CA --file channel-artifacts/channel.tx

当我试图提交锚节点创建事务时,问题就开始了:

peer channel update --channelID $CHANNEL_ID --orderer orderer.example.com:7050 --tls --cafile $ORDERER_CA --file  channel-artifacts/Org1MSPanchors.tx

我收到错误消息

错误:得到意外状态:禁止--未能达到1个子策略的隐式阈值,需要1个剩余:权限被拒绝

    null
peer channel signconfigtx -f channel-artifacts/Org1MSPanchors.tx

CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.key
CORE_PEER_LOCALMSPID=Org2MSP
CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.crt
CORE_PEER_TLS_ENABLED=true
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
CORE_PEER_ID=peer0.org2.example.com
CORE_PEER_ADDRESS=peer0.org2.example.com:7051

peer channel update --channelID $CHANNEL_ID --orderer orderer.example.com:7050 --tls --cafile $ORDERER_CA --file  channel-artifacts/Org1MSPanchors.tx

错误:得到意外状态:禁止--未能达到1个子策略的隐式阈值,需要1个剩余:权限被拒绝

订购者的日志:http://snippi.com/s/qjb7dlv

日志显示,这一次订购者首先未能找到org1的admin的签名(例如第28行),然后找到org2的admin的签名(第45行)。并且两个策略/channel/application/writers和/channel/orderer/ordererorg/writers都不满足(第64行)。

CORE_PEER_LOCALMSPID=OrdererMSP
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/users/Admin\@example.com/msp/

peer channel update --channelID $CHANNEL_ID --orderer orderer.example.com:7050 --tls --cafile $ORDERER_CA --file  channel-artifacts/Org1MSPanchors.tx

共有1个答案

齐意致
2023-03-14

读取器和写入器策略必须能够由单个签名来满足,因为事务格式只允许一个签名。

Admins策略是用于管理通道配置变化(例如修改读取器或写入器策略)的默认策略。通道配置的变异确实通过对等通道signconfigtx支持多重签名工作流。

我们应该能够用多个身份对事务进行签名,这可以是策略中配置的要求。

https://hyperledger-fabric.readthedocs.io/en/release-1.4/commands/peerchannel.html#peer-channel-signconfigtX

此命令确实允许您为配置更新收集多个签名。

https://hyperledger-fabric.readthedocs.io/en/release-1.4/commands/peerchaincode.html#peer-chaincode-signpackage

 类似资料:
  • 问题内容: 不使用EJB时​​,将数据库事务与Seam一起使用的最佳实践是什么-即。将Seam部署为WAR时? 默认情况下,Seam JavaBeans支持事务。我可以使用@Transactional注释方法,以确保需要进行事务处理。或者我可以使用@Transactional(NEVER)或@Transactional(MANDATORY)。我不知道怎么做是创建自己的事务,设置超时,开始然后提交/

  • 离线交易签名认证 如果你不想管理自己的以太坊客户端,或者不想向以太坊客户端提供诸如密码之类的钱包详细信息,那么就通过离线交易认证签名。 离线交易签名认证允许你在web3j中使用你的以太坊钱包签署交易,允许你完全控制你的私有凭据。然后,离线创建的交易可以被发送到网络上的任何以太坊客户端,只要它是一个有效的交易,它会将交易传播到其他节点。 如果需要,还可以执行进程外交易签名认证。这可以通过重写ECKe

  • 从给定的RLP编码的交易中提取签名地址。 调用: web3.eth.accounts.recoverTransaction(rawTransaction); 参数: rawTransaction - String: RLP编码的交易 返回值: String: 对该建议进行签名的以太坊地址 示例代码: web3.eth.accounts.recoverTransaction('0xf8618080

  • 我正在设置一个验证器,可以检查签名的有效性。 我所做的签名基于DSS级别LT,因此文档中内置了撤销检查。 我现在遇到的问题是在我在iText中开发的验证器级别上。它允许验证签名的有效性,但允许验证撤销的信息。根据我的研究,ITexts允许基于pkcs7.getCrl()验证签名本身中的信息。 然而,DSS签名将撤销信息纳入字典。 下面是我用来验证签名的代码:

  • 在corda文件中说,即使交易在合同上是有效的,在签署之前也应该检查交易的内容。然而,流似乎自动化了事务签名过程。< br >如何以及何时检查交易内容。

  • 正如您所看到的,我已经有了一个iscollding方法,控制台中的输出似乎是正确的,但是它在show()方法中不起作用,圆圈不会停止相互交叉。 那么我怎样才能使它起作用,当它碰撞时,位置被重新计算呢?