当我试图理解区块链技术时,我遇到了HyperLedger Fabric.根据文档,它是区块链技术的实现.
那是什么意思?块链只是一个概念和HyperLedger Fabric,这个概念的实现?
更新: 超级分层结构在哪里存储交易?我知道它是一个p2p体系结构,每个对等体都有一个事务副本,但通常这些事务是一个不断增长的集合.每个同行都有成长交易的副本吗?我还不清楚这一点.社区是否推荐任何数据库?
我知道hyperledger锯齿湖使用新的安全CPU指令来实现经过时间的证明(PoET)
这是否意味着hyperledger锯齿湖只能用于英特尔硬件?可以使用其他芯片吗?
如果我有一个组织orgA,并且在这个组织下我有2个用户:user1并且user2,还有1个对等orgA,我们可以调用它peer0.
现在想象一下,user1证书是orgA's msp/admincertsforlder,这使user1管理员orgA.另一方面,让我们说user2's证书在peer0's msp/admincerts文件夹中,这使user2管理员peer0.
我的问题是,user1和之间的权限有什么不同user2,我的意思是什么user1可以做什么,什么user2做不到,反之亦然?
我也在使用fabic ca并node sdk与网络互动.在我的例子中,当我从nod sdk注册fabric ca的bootstraped用户(admin/adminpw),然后创建创建通道请求时,它工作,但是当我进行加入通道请求时它失败了(因为这个用户没有权限).当我试图理解为什么会发生这种情况时,我发现如果我向用户发出加入请求证明该证书不在对等的msp/admincerts文件夹中,那么这种用户就没有权限让对等者加入频道.所以唯一的办法是我必须将注册的管理员证书复制到peer0的msp/admincerts文件夹中,然后我认为它会起作用,但这是使它工作的唯一方法,还是有其他方法可以避免复制/粘贴它从sdk,或创建新的配置更新事务?
另外我无法理解是什么让这个用户能够创建频道?bootsraped用户fabric ca 有哪些权限?
我们将记录批量插入Hyperledger Fabric.但是,我们正在努力解决问题.即使我们不断增加超时,我们也会在稍后发生此错误.
每个事务PutState在循环中使用所有这些记录插入1000条记录(盲插入,读取集中没有任何内容).我们还将BatchTimeout增加到3s,将MaxMessageCount增加到100,这样我们就可以获得更大的块(我们看到每个块有4个事务,因此每个块将4000个[每个事务4x1000个记录]记录插入到分类帐中).
当bulk_update为CouchDB失败并且对等方必须分别为每个(每个事务的1000个记录)记录重试时,查询花费的时间太长并超出了超时.但这是我们的假设.我们也发现了这个:https://jira.hyperledger.org/browse/FAB-10558,但它说已经修复了v1.2.0,这是我们正在使用的版本.
我们得到的错误net/http: request canceled (Client.Timeout exceeded while reading body)来自以下日志:
我们尝试在对等容器中设置以下环境变量:
CORE_CHAINCODE_EXECUTETIMEOUT=120s
并且req.setProposalWaitTime(120 * 1000)在使用Java SDK时也是如此.
但是,我们稍后会得到相同的超时错误.因此,我们可以将超时变量增加到更大的数字,但我们相信它会在稍后再次发生.插入CouchDB所需的时间是否与CouchDB中的记录数成比例?当文档数量增加时,更新索引会花费更多时间吗?
我们得到的运行时错误日志(插入2-4百万条记录后)如下:
October 5th 2018, 04:36:38.646 github.com/hyperledger/fabric/core/committer.(*LedgerCommitter).CommitWithPvtData(0xc4222db8c0, 0xc451e4f470, 0xc4312ddd40, 0xdf8475800)
October 5th 2018, 04:36:38.646 github.com/hyperledger/fabric/gossip/state.(*GossipStateProviderImpl).deliverPayloads(0xc4220c5a00)
October 5th 2018, 04:36:38.646 goroutine 283 [running]:
October 5th 2018, 04:36:38.646 /opt/gopath/src/github.com/hyperledger/fabric/core/committer/committer_impl.go:105 +0x6b
October 5th 2018, 04:36:38.646 /opt/gopath/src/github.com/hyperledger/fabric/gossip/privdata/coordinator.go:236 +0xc3b
October 5th 2018, 04:36:38.646 /opt/gopath/src/github.com/hyperledger/fabric/gossip/state/state.go:771 +0x6c
October 5th 2018, 04:36:38.646
October 5th 2018, 04:36:38.646 github.com/hyperledger/fabric/core/ledger/kvledger.(*kvLedger).CommitWithPvtData(0xc421fb1860, 0xc451e4f470, 0x0, 0x0) …Run Code Online (Sandbox Code Playgroud) 更新“构建您的第一个网络”文档中的锚点对等时,出现Hyperledger Fabric错误。该错误如下。
错误:创建交付客户端失败:订购者客户端无法连接到orderer.example.com:7050:创建新连接失败:x509:证书由未知授权机构签名
我需要你的帮助。
TwoOrgsOrdererGenesis:
<<: *ChannelDefaults
Orderer:
<<: *OrdererDefaults
Organizations:
- *OrdererOrg
Capabilities:
<<: *OrdererCapabilities
Consortiums:
SampleConsortium:
Organizations:
- *Org1
- *Org2
TwoOrgsChannel:
Consortium: SampleConsortium
Application:
<<: *ApplicationDefaults
Organizations:
- *Org1
- *Org2
Capabilities:
<<: *ApplicationCapabilities
Run Code Online (Sandbox Code Playgroud)
该部分到底是什么意思?
让我们开始讨论第一个配置文件:TwoOrgsOrdererGenesis。任何人都可以向我解释这意味着什么?什么是财团?为什么在示例中,创世块设置和通道设置有一个 SampleConsortium 名称?我检查了创世区块的内容,但找不到任何具有该名称的内容。 我用一种非常理解的语言发布的关于整个代码的很好的解释将是如此令人愉快和光荣。谢谢