我想首先正确解释我的理解,如果我是对的,请告诉我真相,如果我弄错了,请告诉我,我错了.我的解释是关于hyperledger网络和节点sdk如何协同工作以及节点sdk如何连接到超级网络.
开始吧.当我启动hyperledger网络时,它所做的是在端口7054上创建fabric-ca-server docker镜像和容器.在该端口上,它注册了一个用户"admin with the password:"adminpwd".这意味着还有证书制作对于这个用户.现在假设我想从节点sdk创建一个新用户.我想我需要做的是为管理员提供证书,以便我可以签署我的请求,网络知道我是管理员和部分网络.代码的作用是第一次写入getUserContext("admin"),如果找不到,那么它会尝试使用用户名和密码(admin和adminpwd)注册.我的理解是getUserContext转到hfc-key -store文件夹并尝试查找admin的证书.如果找不到它,会发生注册然后发生createUser函数,它将从fabric-ca-server docker映像派生的证书放入hfc-key-store,这样当管理员再次尝试注册时,它不必转到fabric-ca-server docker 图片.我到目前为止对吗?我现在就问我的问题.
问题:
据我所知,在尝试注册时,它无法从fabric-ca-server docker镜像获取管理员的原始证书,因为如果它被盗,整个网络都会被搞砸.所以它所做的是从原始的那个获得某种公共/私人和证书与我可以进行其他操作.问题是:如果有人偷了我的hfc-key-store文件夹,其中有管理员证书.他可以在没有注册的情况下进行操作,因为getUserContext("admin")将返回true并且它会让它做任何事情.如果有人偷了那个文件夹怎么办?这不危险吗?
我不明白getUserContext()和setUserContext()以及createUser()函数的含义.如果你能做到,只要用一种非常易于理解的语言来描述它们,因为我已经很长一段时间试图绕过这个但没有运气.为什么我们需要这些功能,它们对我们的帮助等等.
为什么cryptogen工具不用于生产,而fabric-ca-server可用于生产?
文档Integer.toBinaryString说明,它将整数参数的字符串表示形式返回为无符号整数。它还继续指出,负数以正数形式转换为它们的大小。
据我所知,这是负数的二进制补码。但是,当我为负数运行以下命令时,我仍然以有符号形式获得数字的字符串表示形式,即二进制补码。
我在这里错过了什么吗?
System.out.println(Integer.toBinaryString(13)); // 1101
System.out.println(Integer.toBinaryString(-13)); // 11111111111111111111111111110011
Run Code Online (Sandbox Code Playgroud)