- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经按照以下步骤在本地成功创建了一个 Hyperledger Fabric v1.0 网络 Building Your First Network并使用 fabric-sdk-java 从我的 Java 应用程序与该网络通信.
在这里,它使用cryptogen 工具创建了证书,并且能够通过参与同一 channel 的每个对等方调用/查询链码。
我的实现是这样的:
我有四个组织 Org1、Org2、Org3 和 Org4,每个组织都有一个对等体。当 Org1 使用链码 C1 创建数量为 100 的 Assets A1 时,它必须像
Org2.peer0 A1: with quantity 40
Org3.peer0 A1: with quantity 30
Org4.peer0 A1: with quatity 20
And remaining 10 only will be available for Org1.peer0
所有这些同行都加入了同一个 channel channel1。我的要求是
If Org1 try to query the data for Org2 : error
If Org1 try to query its own data: return the Asset with the corresponding quantity.
目前它允许查询 channel 中所有节点的所有数据。为了使其对其他组织隐藏一个组织的 Assets ,最好的方法是什么?
最佳答案
我认为您混淆的根源是您将应用程序逻辑与通常在链代码中实现的业务契约(Contract)逻辑混合在一起。
假设你想在 4 个不同的参与方之间建立 Fabric 网络,你需要定义一个规则来定义你将如何在这些参与者之间拆分/分配 Assets 。现在,让我们把同行放在一边。在您的链代码中,您对 Assets 的概念和可能的用户概念进行编码以避免混淆,让我们称他们为人。所以你有 4 个人:Alice、Bob、Charlie 和 John,业务规则规定一旦 Alice 提交 Assets ,它必须分别根据 40%、30%、20% 和 10% 进行分配。
接下来,继续假设 Alice 在 Org1 工作,Bob 在 Org2,Charlie 在 Org3 和 John 在 Org4。现在你可以实现一个链码,它将根据提交交易的人应用业务规则。此外,您可以根据提交者身份实现 ACL,从而防止 Bob 查询比方说 John 的余额。
合理的问题是为什么我需要 4 个节点来实现如此简单的逻辑。由于您只能有一个部署了链码的对等节点,为所有 4 个组织配置的 channel ,您所需要的只是发送交易提案以调用链码。
这种方法的警告非常明显,您需要决定哪个组织将托管和运行该对等节点和链代码,因此由于所有 4 个组织并不真正相互信任,他们希望托管自己的对等节点并调用链代码反对他们自己的同龄人。为了防止每个组织互相欺骗并减少对抗性/非确定性行为的影响,他们将就背书政策达成一致,这实际上将确保其他组织的同行在模拟期间也能收到与您相同的结果。
现在回到你的问题,节点用于模拟当前状态的交易并在结果上签名,将结果发送回客户端,客户端根据策略聚合背书,并将结果提交给排序服务,排序服务切割 block 并将它们传递给peer 将验证区 block 中交易的正确性,并最终将它们提交到账本更新状态。
因此,您的链代码应该对客户/用户/个人的概念进行编码,您将在其中分配 Assets ,这些用户可以映射回客户端应用程序(真实世界的用户),这些应用程序可能注册到不同的组织,因此具有不同的证书由适当的组织 CA 签署。最后,您将能够利用链代码的 GetCreator
API 了解哪个客户端调用了链代码,并根据您定义的业务逻辑应用业务逻辑和访问控制。
很抱歉让我的回答太长,但总结一下。您的应用程序/服务将基于两层:第一层是应用程序层——映射到 org 的用户,第二层是持有分类账和部署的链代码的对等层——模拟和执行事务。因此,您将有 4 个节点和 4 个客户端,它们将向节点提交交易,您的逻辑将基于客户端身份而不是节点。
希望我的解释对你有意义;)
关于blockchain - 在 Hyperledger Fabric V1.0 中实现同一 channel 内节点之间的 channel 间安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46352182/
我正在学习 Spring 安全性,但我对它的灵活性感到困惑.. 我知道我可以通过在标签中定义规则来保护网址 然后我看到有一个@secure 注释可以保护方法。 然后还有其他注释来保护域(或 POJO)
假设有一个 key 加密 key 位于内存中并且未写入文件或数据库... byte[] kek = new byte[32]; secureRandom.nextBytes(kek); byte[]
我有 Spring Security 3.2.0 RC1 的问题 我正在使用标签来连接我 这表示“方法‘setF
我正在创建一个使用 Node Js 服务器 API 的 Flutter 应用程序。对于授权,我决定将 JWT 与私钥/公钥一起使用。服务器和移动客户端之间的通信使用 HTTPS。 Flutter 应用
在过去的几年里,我一直在使用范围从 Raphael.js 的 javascript 库。至 D3 ,我已经为自己的教育操纵了来自网络各地的动画。我已经从各种 git 存储库下载了 js 脚本,例如 s
在 python 中实现身份验证的好方法是什么?已经存在的东西也很好。我需要它通过不受信任的网络连接进行身份验证。它不需要太高级,只要足以安全地获取通用密码即可。我查看了 ssl 模块。但那个模块让我
我正在尝试学习“如何在 Hadoop 中实现 Kerberos?”我已经看过这个文档 https://issues.apache.org/jira/browse/HADOOP-4487我还了解了基本的
我有一个带有 apache2、php、mysql 的生产服务器。我现在只有一个站点 (mysite.com) 作为虚拟主机。我想把 phpmyadmin、webalizer 和 webmin 放在那里
前些天在网上看到防火墙软件OPNsense,对其有了兴趣,以前写过一个其前面的一个软件M0n0wall( 关于m0n0wa
我在 Spring Boot 和 oauth2(由 Google 提供)上编写了 rest 后端,在 "/login" 上自动重定向。除了 web 的 oauth 之外,我还想在移动后端进行 Fire
我想调用类 Foo,它的构造函数中有抽象类 Base。我希望能够从派生自 Base 的 Derived 调用 Foo 并使用 Derived覆盖方法而不是 Base 的方法。 我只能按照指示使用原始指
如何提高 session 的安全性? $this->session->userdata('userid') 我一直在为我的 ajax 调用扔掉这个小坏蛋。有些情况我没有。然后我想,使用 DOM 中的
我目前正在为某些人提供程序集编译服务。他们可以在在线编辑器中输入汇编代码并进行编译。然后编译它时,代码通过ajax请求发送到我的服务器,编译并返回程序的输出。 但是,我想知道我可以做些什么来防止对服务
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
目前,我通过将 session 中的 key 与 MySQl 数据库中的相同 key 相匹配来验证用户 session 。我使用随机数重新生成 session ,该随机数在每个页面加载时都受 MD5
Microsoft 模式与实践团队提供了一个很棒的 pdf,称为:“构建安全的 asp.net 应用程序”。 microsoft pdf 由于它是为 .Net 1.0 编写的,所以现在有点旧了。有谁知
在 Lua 中,通常会使用 math.random 生成随机值和/或字符串。 & math.randomseed , 其中 os.time用于 math.randomseed . 然而,这种方法有一个
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我们有一个严重依赖 Ajax 的应用程序。确保对服务器端脚本的请求不是通过独立程序而是通过坐在浏览器上的实际用户的好方法是什么 最佳答案 真的没有。 通过浏览器发送的任何请求都可以由独立程序伪造。 归
我正在寻找使用 WebSockets 与我们的服务器通信来实现 web (angular) 和 iPhone 应用程序。在过去使用 HTTP 请求时,我们使用请求数据、url、时间戳等的哈希值来验证和
我是一名优秀的程序员,十分优秀!