我想首先正确解释我的理解,如果我是对的,请告诉我真相,如果我弄错了,请告诉我,我错了.我的解释是关于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可用于生产?
我有 HTTP 拦截器。在那个拦截器中,在我更改请求之前,我需要打开一个加载程序。
真正让我担心的是我最终有很多switchMaps。
为什么?
我在装载机服务中做什么
public showLoader(message) {
return this.translateService.get(message).pipe(
switchMap((translatedMessage) => {
this.loader$ = from(
this.loadingController.create({ message: translatedMessage })
);
return this.loader$.pipe(
switchMap((loader) => {
return from(loader.present());
})
);
})
);
}
Run Code Online (Sandbox Code Playgroud)
在我的拦截器中
public intercept(request: HttpRequest<any>, next: HttpHandler) {
return this.loaderService.showLoader("WAITING").pipe(
take(1),
switchMap( ()=>{
Run Code Online (Sandbox Code Playgroud)
所以已经有 3 个嵌套的switchMaps。在它下面,我还需要 2 或 3 个switchMaps(一个用于从存储中获取令牌,另一个用于其他用途)。基本上最终有 5switchMap秒。
问题:嵌套所有这些switchMap被认为是一种反模式吗?
如果我有一个组织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 有哪些权限?
我在安装事件中使用服务工作者和预缓存资产。
我还有fetch侦听器,它在运行时动态拦截请求和缓存。我知道人们说将 indexeddb 用于动态内容,例如 json 数据和可能的图像。
问题:为什么即使它是请求/响应存储,也为该 json 数据使用缓存 API 不是一个好习惯?
我问这个的原因是因为我尝试了以下操作:我index.html and main.js在install事件中预先缓存,并且在main.js我的axios请求中返回一些 json 并将其放入index.html. 如果我使用动态缓存,这意味着当对该 json api 端点发出请求时,它首先进入我的服务工作者,它获取响应并将其放入cache. 然后我测试了一下,当在离线模式下刷新页面时,我仍然得到相同的结果(json 数据相应地放在 index.html 中)。
所以我猜即使缓存 API 存储请求/响应,它仍然可以完美地用于 json 端点 api url。
知道为什么在使用服务工作者时更喜欢 indexeddb 而不是缓存 API 吗?
如果您能让我理解这个简单的话题,我会非常高兴。
我知道詹金斯是什么以及它的作用。现在我们来做个比较。
我们使用 jenkins,以便一旦代码通过 git hooks 推送到存储库,我们就运行 jenkins 作业来提取该代码,进行构建,运行测试,然后如果需要,将其上传到代码实际运行的远程计算机。
现在,我可以做的是,当 git hook 发生时,我将运行 bash 脚本,该 bash 脚本将执行这些操作(例如从存储库中提取代码、运行构建、进行测试,然后通过 ssh 将其上传到远程计算机)。
所以,我可以通过 bash 脚本做同样的事情。
问题是:我没有看到那么大的优势。
那么,您能尽力用非常简单的语言解释一下为什么它有很大的优势吗?我知道 Jenkins 有很多插件,但这不是进行比较的最佳方式。
<VTextField
:value="addOnStartingPrice"
solo
outline
reverse
append-icon="attach_money"
type="number"
min="0"
step="any"
@input="$emit('update:addOnStartingPrice', $event)"
/>
Run Code Online (Sandbox Code Playgroud)
我有这样的事情。
问题 1) 只要我更改了数字或在其中输入了数字,它就会正确抛出数字值,但它的类型是字符串而不是数字,因此类型检查失败。如何让它以 type:number 的形式返回值?
问题 2) 究竟是做step="any" and min="0"什么的?我猜它们不起作用,因为我也可以输入负数。
我正在使用 webpack。我有两个项目。一种用于前端。一个用于后端。后端也在 javascript 上。所以我将后端与 webpack 捆绑在一起。
捆绑后端后我得到的文件是:
main.jstest1.jstest2.jstest1~test2.jstest1,test2和test1~test2.js文件点播块文件。
现在,我正在输入前端网站的 url,(url 是front-end.website.com/test1),当发生这种情况时,我正在下载main.js并test1.js立即执行。之后,我应该点击一个按钮,点击后,axios应该请求 fetch test1~test2.js。正如你所见和我所说的,test1~test2.js应该延迟加载,这就是发生的事情,但是.....
问题:当请求test1~test2.js发生时,请求不会发送到后端源,而是前端源,这会导致文件无法加载,因为前端不存在该文件。看起来像main.js,有一个延迟加载的代码,test1~test2.js但它没有完整的原始路径,当前端尝试加载它时,它认为它应该从自身加载。
我该如何解决?
解决方法(但我讨厌这个):我尝试在后端的 webpack 配置中使用 publicPath,例如:https://back-end.website.com,但这导致的是当请求被发送到后端时,对于哪个文件无关紧要,请求的实际 url 变为https://back-end.website.com/http://back-end.website.com/file(类似的东西)。
基本上我有很多问题,但我会问最需要的问题.谢谢你的帮助.
1)为什么hyperledger网络需要多个订购者节点?如果我理解正确,在节点验证事务之后,它们会将这些事务传递给orderer节点.orderer节点将对这些事务加时间戳,将它们推入块中并将该块发送回节点.节点会将该块附加到分类帐.我说得对吗?如果是的话,为什么我们需要不止一个订货人?
2)我知道我可以在网络中添加更多实体,以便他们可以执行交易并进行智能合约调用并查看我的私有区块链.但节点来自哪里?我添加它们?谁加了他们?组织只是拥有证书并将进行交易的人,但节点呢?节点必须是计算机,谁将节点带到网络?如果组织可以为其事务添加节点,为什么他们需要添加多个节点?
3)如果我建立了网络并且一切都很好,我该如何连接它?我知道我可以使用sdk或node.js客户端,但简而言之,如何连接它?使用运行区块链的计算机的IP地址或使用什么?
提前谢谢你们.请帮忙.
navigator.serviceWorker.register('/service-worker.js').then((reg) => {
})
Notification.requestPermission(function(result) {
console.log('User Choice', result);
if (result !== 'granted') {
console.log('No notification permission granted!');
} else {
navigator.serviceWorker.ready
.then(function(swreg) {
console.log("blaxblux");
swreg.showNotification('Successfully subscribed!', {body:'TEST'});
});
}
});
Run Code Online (Sandbox Code Playgroud)
这是我的代码 main.js
它涉及console.log('blaxblux'),但根本不显示通知。请求权限在浏览器显示带有允许按钮的弹出窗口时起作用。
什么事情可能是问题?
(我使用的是最新版本的 chrome)
steps:
- script: |
echo "good"
echo "nice"
Run Code Online (Sandbox Code Playgroud)
这不起作用。它成功打印“好”,但不打印好并显示回声“好”,因此最终输出是
good echo 'nice'
Run Code Online (Sandbox Code Playgroud)
我试图删除| 脚本后:但仍然没有运气。任何的想法?我在 ubuntu 机器上运行这个。
javascript ×3
hyperledger ×2
angular ×1
azure ×1
azure-devops ×1
bash ×1
devops ×1
docker ×1
git ×1
jenkins ×1
observable ×1
rxjs ×1
vue.js ×1
vuejs2 ×1
vuetify.js ×1
webpack ×1
workbox ×1