让我们以 3 个公平组织的场景为例,即每个组织都运行对等体,并且应该平等地参与订购过程。
对我来说,将这 3 个组织配置为每个组织都有一个排序者节点和一些对等点是很自然的。然而,强烈建议不要采用这种设置。引用常见问题解答:
问题:我可以让一个组织同时扮演订购角色和应用角色吗?
回答:虽然这是可能的,但这是一种非常不鼓励的配置。默认情况下,/Channel/Orderer/BlockValidation 策略允许订购组织的任何有效证书对区块进行签名。如果组织同时扮演订购和应用程序角色,则应更新此策略以将块签名者限制为授权订购的证书子集。
在另一个 SO 问题中,一个答案提供了有关此主题的更多详细信息:
首先,很容易错误配置策略并显着降低系统的安全性。订购服务和应用程序根据权力分离的原则运作。重要的是,排序节点不能制造验证交易,同样重要的是应用程序交易者不能制造区块。
并继续:
其次,由于 MSP 定义必须出现在通道配置的两个部分中,因此您最终会得到两个相同的 MSP 定义副本,它们必须保持完全同步。由于两个 MSP 具有相同的 ID,如果内容不完全相同,则会在评估身份时产生歧义。
我整个晚上都在绞尽脑汁地思考,如果此设置配置不正确,哪些攻击媒介和参与者可能会给我的组织或整个网络带来潜在的安全风险。
不幸的是,我只能想到一种情况:如果排序者二进制文件中存在漏洞,则另一个组织的排序者可以利用此漏洞以我组织的身份创建交易。
问题:如果您在单个组织中拥有对等点和订购者并且配置不正确,可能会暴露哪些攻击媒介?演员会是谁?客户、管理员、网络的其他组织、完全的局外人?
额外问题:在给定场景中建议的替代方案是什么?每个参与组织是否应该分成单独的对等组织和订购者组织?喜欢Company1PeerOrg、Company1OrdererOrg、Company2PeerOrg,...?
我创建了一个数据框:
df <- mydata %>%
mutate(length.class=cut(mydata$count,breaks = c(1, 10, 100, 1000, 10000),include.lowest=TRUE)) %>%
group_by(length.class) %>%
summarise(count = n())
Run Code Online (Sandbox Code Playgroud)
这样得到的df$length.class
值就像"(100,1e + 03)",而我更喜欢"(100,1000)".但是,手动更改它不起作用:
df$length.class[df$length.class == "(100,1e+03]"] <- "(100,1000]"
Warnmeldung:
In `[<-.factor`(`*tmp*`, df$length.class == "(100,1e+03]", value = c(1L, :
invalid factor level, NA generated
Run Code Online (Sandbox Code Playgroud)
为什么更改字符串是不可能的,什么尝试R告诉我这条消息?
奖金问题:如何获取原始值或解决更改的行(4)?执行更改命令后,现在有一个"NA"而不是"(100,1e + 03]".