社区问答精选——长安链开发知多少?(8月)
本文是根据社群内开发者较为关注的问题进行整理,希望可以帮助开发者解决所遇到的问题。有更多问答在社区issue中描述更为细致,开发者提问前可以先按照关键词进行搜索。欢迎各位开发者按照问答template提交issue,也欢迎有意愿的开发者参与到社区issue版块维护中。
issue问答合集链接复制下面链接到浏览器或点击阅读原文:
https://git.chainmaker.org.cn/chainmaker/issue/-/issues?scope=all&utf8=%E2%9C%93&state=all
1. unknown revision v2.0.0
> go: chainmaker.org/chainmaker/pb-go@v2.0.0+incompatible: reading chainmaker.org/chainmker/pb-go/go.mod at revision v2.0.0: unknown revision v2.0.0
(1)可能chainmaker.org域名可能记录为其他主机地址了,删除 `~/.ssh/known_hosts文件` 重试即可。
(2)可能代理无法访问chainmaker.org,请切换代理尝试`go env -w GOPROXY=https://goproxy.cn,direct`
2. missing go.sum entry
到对应目录执行`go mod download` 或者 `go mod tidy`
3. not found GLIBC_2.18
缺少glibc的库,在linux下可进入:https://git.chainmaker.org.cn/chainmaker/chainmaker-go/-/tree/v1.2.7/scripts/3rd 网站下载`glibc-2.18.tar.gz`和`install.sh`到任一同级目录,文件设置install.sh可执行权限后直接用root权限执行该脚本即可安装 GLIBC_2.18依赖。
sh
# 注:此操作为安装替换GCC版本,请慎重操作。一旦出错系统将不可用。
chmod +x install.sh
sh install.sh
4. restart.sh 权限不足
> ./restart.sh: Permission denied
给脚本添加可执行权限。
sh
cd chainmaker-go/script/bin
chmod +x *.sh
5. syscall/js.valueGet not exported
>执行gasm合约时报错:resolve imports: syscall/js.valueGet not exported in module env
tinygo不支持fmt等函数,tinygo支持的包参考:https://tinygo.org/lang-support/stdlib/
注:官方推荐docker go合约、solidity合约以及Rust合约。
6. runtime type error | byte code validation failed
> 发送交易成功,但链打印错误信息:contract invoke failed, runtime type error, expect rust:[2], but got 4。同时根据该交易id查询到交易错误信息。
> failed to create vm runtime, contract: contract_test, [contract_test], byte code validation failed
执行交易是异步的(查询类交易除外),返回的状态为链成功接收到交易的状态。执行合约时,runtimeType选择错误,需要根据自己的合约语言选择对应的runtimeType。
byte code validation failed:可能原因:1、运行类型错误;2、wasm文件损坏;3、wasm文件非官网指定渠道编译。
| 语言 | 类型 |
| :------- | ------------------------- |
| 系统合约 | RuntimeType_NATIVE = 1 |
| rust | RuntimeType_WASMER = 2 |
| c++ | RuntimeType_WXVM = 3 |
| tinygo | RuntimeType_GASM = 4 |
| solidity | RuntimeType_EVM = 5 |
| golang | RuntimeType_DOCKER_GO = 6 |
7. 使用sdk、cmc执行安装、调用合约时,SDK 返回message为ok,但链和交易显示执行失败,是什么原因?
交易的执行是异步的。SDK返回的成功信息指的是链成功接收到该交易。
获取查看交易实际结果的方式:
- 根据txId查询该交易,解析出结果。
- 使用SDK时选择同步发送交易,等待执行结果。
8. 出块标记是什么?
>进入log目录,查看日志文件 筛选 `put block` 即可
> `cat system.log|grep "ERROR\|put block"`
>其中一行解释如下:
>2021-11-04 15:55:06.351 [INFO] [Storage] @chain1 blockstore_impl.go:363 chain[chain1]: put block[1] (txs:1 bytes:15946), time used (mashal:0, log:1, blockdb:0, statedb:0, historydb:0, resultdb:0, contractdb:0, batchChan:0, total:1)
>时间 [日志级别] [模块] @链名称 文件名.go:行数 链chain[链名称]:put block[区块高度](txs:交易个数 bytes:区块大小), 使用时间毫秒(mashal:0, log:1, blockdb:0, statedb:0, historydb:0, resultdb:0, contractdb:0, batchChan:0, total:1)
9. 组网成功标记是什么?
组网成功后,即可发送交易。此时接收到的交易将进入到交易池当中,并且会广播给网络的每一个节点(共识、同步节点、轻节点),随后等待共识成功选举leader开始打包区块。
启动成功日志:`init blockchain[chain1] success`
多节点时,组网成日志:`all necessary peers connected`
10. 如何查看合约内的日志?
(1) 修改log.yml配置文件将vm的级别调整为debug;
(2) 重启该节点;
(3) 发起交易,即可查看到以后的日志,
如下:
sh
vim chainmaker-v2.2.0-wx-org1.chainmaker.org/config/wx-org1.chainmaker.org/log.yml
log:
system: # 链日志配置
log_level_default: INFO # 默认日志级别
log_levels:
core: INFO # 查看commit block落块信息关键字,需将core改为info级别及以下
net: INFO
vm: DEBUG # 合约中的日志,需将vm改为debug级别
storage: INFO # sql模式查看sql语句,需将storage改为debug级别
11. 节点的node_id如何生成?
节点的node_id是由其TLS证书的公钥哈希得来,是节点身份的唯一标识。
可使用cmc工具可获取nodeid: ./cmc cert nid -h,是对证书的公钥进行SHA2_256,再base58编码后形成nodeid。
12. 系统提示“x509: certificate signed by unknown authority”,是什么原因?
安装/升级自己服务器的`ca-certificates`。
13. PermissionedWithCert、PermissionedWithKey、Public 模式的区别是什么?
长安链的用户标识体系分为以下两大类:
(1) 基于数字证书的用户标识体系——PermissionedWithCert 即证书模式,为长安链的默认用户标识体系。通常适用于权限控制要求较高的应用场景。
(2) 基于公钥的用户标识体系:
- PermissionedWithKey,该模式下进行管理操作时需要权限验证,通常适用于权限控制要求较高的应用场景。
- Public 该模式下进行管理操作时不需要权限验证,通常适用于权限控制要求不高的应用场景。
14. 一条链是否支持同时使用PermissionedWithCert、PermissionedWithKey、Public等多个模式?
暂不支持,某条链只能选择其中一种模式。
15. 长安链的组织证书是用来干嘛的?
长安链的组织证书即是配置trust_root里面的证书,用来验证交易发起者或链参与者是否为该链的联盟成员。trust_root中可以配置组织根证书或组织中间证书。建议使用组织中间证书,以免根证书遗失或不慎泄露造成的不便。
16. 长安链的节点证书是用来干嘛的?
长安链的节点证书分为两类。一类是tls证书,一类是sign证书。tls证书用于跟客户端建立tls链接以及节点间通信。sign证书用于签名验签等,通常在共识投票过程中使用。上述证书均需通过`CA证书` 签发获得。
通过建链脚本生成的节点证书为consensus和common两套,均包括上述tls和sign证书。其中,配置使用的是consensus,而common作为预留。
17. 长安链的用户证书是用来干嘛的?
长安链的用户证书从角色上分为admin、client和light三类。
- admin角色证书,通常称为管理员证书,该证书拥有对系统合约(管理类)调用交易的签名投票权限。链配置中的权限配置项,默认为admin角色。
- client角色证书,通常称为普通用户证书,该证书拥有用户合约(普通类)调用交易和查询类交易的操作权限。
- light角色证书,通常上述每种角色的用户从用途上分为tls和sign两种,的tls证书和sign证书的主要作用是:
- 用户tls证书主要用户跟节点建立tls链接。
- 用户sign证书主要用户签名验签。
18. 如何申请证书?
证书包括
- CA 证书;
- 节点证书:
- 共识节点的TLS 证书和sign证书;
- 同步节点的TLS证书和sign证书;
- 轻节点的TLS证书和sign证书;
- 用户证书:
- admin 证书的TLS证书和 sign 证书;
- client 证书的TLS证书和 sign 证书;
以上证书均可以通过 [chainmaker-crypogen](https://docs.chainmaker.org.cn/v2.3.2/html/instructions/证书生成工具.html) 或者[自建 CA 证书服务生成](https://docs.chainmaker.org.cn/v2.3.2/html/dev/CA证书服务.html)。
19. 不同组织间有没有共同的ca,证书的组织和org_id有什么联系?
不同组织间的CA证书可以使用同一个。但是不建议这样做,建议是一个组织一个CA证书。
证书的组织字段和trust_roots的org_id字段,无强制联系。
# 各组织不同CA配置
trust_roots:
- org_id: "wx-org1.chainmaker.org"
root: "ca1.crt"
- org_id: "wx-org2.chainmaker.org"
root: "ca2.crt"
- org_id: "wx-org3.chainmaker.org"
root: "ca3.crt"
# 各组织相同CA配置
trust_roots:
- org_id: "wx-org1.chainmaker.org"
root: "ca1.crt"
- org_id: "wx-org2.chainmaker.org"
root: "ca1.crt"
- org_id: "wx-org3.chainmaker.org"
root: "ca1.crt"
20. 一个组织的证书申请数量是否有有上限?
理论上没有上限。
21. 组织间的数据能否实现哪些数据可以公开给对方,哪些数据不能公开给对方?
上链数据均共享。可以根据场景需要,采用混合加密、分层身份加密、同态加密、零知识证明等方式保护数据隐私。
22. 是否支持外部证书,外部证书和长安链证书在使用上有什么差异点?
支持外部证书。目前长安链的用户、节点的签名证书(即业务证书)支持使用BJCA、CFCA等国家认可的第三方CA颁发的外部证书。因TLS证书仅作用于通信层,故无需使用外部证书。[外部证书参考](https://docs.chainmaker.org.cn/v2.3.2/html/recovery/外部证书兼容配置手册.html)。
相比长安链证书,外部证书通常无法自定义证书内字段,因此需要进行额外的配置才能使用。
23. TLS怎么开启和关闭?
RPC连接的TLS开启和关闭如下,P2P连接的TLS暂不支持关闭:
参考 chainmaker.yml 的配置rpc的 tls 配置
# RPC TLS settings
tls:
# TLS mode, can be disable, oneway, twoway.
mode: disable
# RPC TLS private key file path
priv_key_file: ../config/wx-org1.chainmaker.org/certs/node/consensus1/consensus1.tls.key
# RPC TLS public key file path
cert_file: ../config/wx-org1.chainmaker.org/certs/node/consensus1/consensus1.tls.crt
tls 关闭时,mode的值为 disable。
tls 开启时,mode的值可以是 oneway 或 twoway。
- oneway 模式即单向认证,客户端保存着rpc的tls证书并信任该证书即可使用。
- twoway 模式即双向认证,用户企业应用。双向认证模式先决条件是有两个或两个以上的证书,一个是rpc的tls证书,另一个或多个是客户端证书。长安链上保存着客户端的证书并信任该证书,客户端保存着长安链的证书并信任该证书。这样,在证书验证成功时可以完成链的相关操作。
24. 长安链是否支持国密TLS,如果支持,再哪里可以启用?
支持国密。可以在生成tls证书的时候选用国密方式,tls证书接入到长安链上,长安链会根据tls的加密方式匹配到国密的加密方式,无需用户多余的操作。
长安链支持用 chainmaker-cryptogen 工具生成tls证书
需要修改配置 pk_algo: sm2。配置文件参考
yaml
crypto_config:
- domain: chainmaker.org
host_name: wx-org
count: 4 # 如果为1,直接使用host_name,否则添加递增编号
pk_algo: sm2
ski_hash: sm3
## pkcs11配置
[参考文档](https://docs.chainmaker.org.cn/v2.3.2/html/manage/长安链配置管理.html#chainmaker-cryptogen)
相关文章:
社区问答精选——长安链开发知多少?(8月)
本文是根据社群内开发者较为关注的问题进行整理,希望可以帮助开发者解决所遇到的问题。有更多问答在社区issue中描述更为细致,开发者提问前可以先按照关键词进行搜索。欢迎各位开发者按照问答template提交issue,也欢迎有意愿的开发者参与到社…...
神经网络-Unet网络
文章目录 前言1.seq2seq 编码后解码2. 网络结构3.特征融合4. 前言 Unet用来做小目标语义分割。 优点:网络结构非常简单。 大纲目录 2016年特别火,在细胞领域做分割特别好。 1.seq2seq 编码后解码 2. 网络结构 几个卷积层,越来越扁&#x…...
Java | 多线程综合练习
不爱生姜不吃醋⭐️ 如果本文有什么错误的话欢迎在评论区中指正 与其明天开始,不如现在行动! 文章目录 🌴前言🌴一、卖电影票1.题目2.分析3.代码 🌴二、送礼物1. 题目2. 分析3.代码 🌴三.打印奇数1. 题目2.…...
Kotlin变量与控制条件的基本用法
一、变量与控制条件 1、var与val var:可修改变量 val:只读变量,只读变量并非绝对只读。 编译时常量只能在函数之外定义,因为函数内常量是在运行时赋值,编译时常量要在变量赋值前存在。并且值是无法修改的。 const…...
第18章_瑞萨MCU零基础入门系列教程之GPT
本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id728461040949 配套资料获取:https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总: ht…...
openssl websockets
1. HTTPS通信的C实现 - 知乎 GitHub - Bwar/Nebula: Nebula is a powerful framwork for building highly concurrent, distributed, and resilient message-driven applications for C....
Vue 组件的单元测试
1、基本的示例 单元测试是软件开发非常基础的一部分。单元测试会封闭执行最小化单元的代码,使得添加新功能和追踪问题更容易。Vue 的单文件组件使得为组件撰写隔离的单元测试这件事更加直接。它会让你更有信心地开发新特性而不破坏现有的实现,并帮助其他…...
海底两万里的思维导图,轻松了解整体的内容
《海底两万里》是一部经典的科幻小说。小说以其丰富的想象力和对海底世界的描绘而闻名于世。今天我们就用思维导图的分支介绍这个作品到底讲了什么。(思维导图示例:迅捷画板) 《海底两万里》是“凡尔纳三部曲”中的第二部(其它两部…...
ZABBIX 6.4官方安装文档
一、官网地址 Zabbix:企业级开源监控解决方案 二、下载 1.选择您Zabbix服务器的平台 2. Install and configure Zabbix for your platform a. Install Zabbix repository # rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/8/x86_64/zabbix-release-6.4-1.el8…...
本地MQTT服务器搭建(EMQX)
一、下载EMQX 下载地址:EMQ (emqx.com) 打开官网后,选择右边的免费试用按钮 然后单击EMQX Enterprise标签,然后选择下面的EMQX开源版,选择开源版的系统平台为Windows,单击免费下载。 在新页面下单击立即下载 二、安装…...
Docker启动pandora并指定ACCESS TOKEN
把chatGPT_ACCESS_TOKEN改成你的ACCESS_TOKEN 《chatGPT ACCESS TOKEN获取地址(需要魔法)》 docker run -d -m 512m -p 88:88 --privilegedtrue -e PANDORA_SERVER0.0.0.0:88 -e PANDORA_ACCESS_TOKENchatGPT_ACCESS_TOKEN --name pandora pengzhile/pa…...
Python + Jmeter 实现自动化性能压测
Step01: Python脚本开发 文件路径:D://wl//testproject//Fone-grpc//project1//test_client.py Python 脚本作用: 通过 grpc 调用底层 c 的接口,做数据库的数据插入与查询操作,然后将返回的结果进行拼接与输出。 2.代码里面将…...
【Linux进行时】进程状态
进程状态: ❓假设我们在上课,在B站上上课,请问我们的B站是不是一直运行呢?💡不是的! ❓假设我们同时打开了B站和PDF阅读器时,是怎么运行的呢? 💡每一个进程在CPU跑一会&a…...
HarmonyOS开发环境搭建
一 鸿蒙简介: 1.1 HarmonyOS是华为自研的一款分布式操作系统,兼容Android,但又区别Android,不仅仅定位于手机系统。更侧重于万物物联和智能终端,目前已更新到4.0版本。 1.2 HarmonyOS软件编程语言是ArkTS,…...
友思特新闻|友思特与IDS深化战略合作伙伴关系
尊敬的客户和合作伙伴, 我们非常高兴地宣布,友思特已经与国际领先的机器视觉解决方案提供商 IDS 深化了我们的合作关系。 作为 IDS 的长期合作伙伴,友思特一直致力于为国内客户提供最先进的机器视觉技术和解决方案。 自从友思特与 IDS 合作…...
ARM Linux DIY(十三)Qt5 移植
前言 板子带有屏幕,那当然要设计一下 GUI,对 Qt5 比较熟悉,那就移植它吧。 移植 Qt5 buildroot 使能 Qt5,这里我们只开启核心功能 gui module --> widgets module 编译 $ make ODIY_V3S/ qt5base编译报错:找不…...
二,手机硬件参数介绍和校验算法
系列文章目录 第一章 安卓aosp源码编译环境搭建 第二章 手机硬件参数介绍和校验算法 第三章 修改安卓aosp代码更改硬件参数 第四章 编译定制rom并刷机实现硬改(一) 第五章 编译定制rom并刷机实现硬改(二) 第六章 不root不magisk不xposed lsposed frida原生修改定位 第七章 安卓…...
ubunutu20/18/22 编译android 5相关的问题汇总-千里马framework开源代码平板编译过程
hi,粉丝朋友们: 闲鱼50块钱淘到了一个开源平板,注意这个平板是有源码的,可以进行相关的编译修改。哈哈哈,马哥这边就体验了一下50块钱平板是否可以拿来做framework呢? 哈哈,说好就开干了&#x…...
tauri vue vite
准备 rust 根据 https://www.rust-lang.org/tools/install,安装 rust 执行 cargo --version 检查安装是否完成nodejs 安装 nodejstauri cargo install create-tauri-app --lockedcargo create-tauri-app 选择: ✔ Project name tauri-app ✔ Choose wh…...
名词解析与经验分享(前端)
目录 1.什么是sass产品 2.下面我想说说事件循环 3. cmd窗口的一些快捷键 4. 组件与插件的区别 5. vue项目嵌入app后调用app方法 6.点击编辑按钮直接回到顶部,输入框光标闪动聚焦 7.短轮询与长轮询 短轮询 长轮询 8.前端moment库 9.移动端-触底刷新实现核心…...
【前端】js下载url文件
不打开新窗口进行下载 function download(res) { var elemIF document.createElement("iframe"); elemIF.src res; elemIF.style.display "none"; document.body.appendChild(elemIF); } window.open(url, _blank); a标签 const ele …...
什么是 BSD 协议?
BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。当你发布使用了BSD协议的代码,或者以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件&…...
【网络教程】揭秘Windows SSH服务端免密登录:告别繁琐,享受安全连接
文章目录 开启Windows下的SSH服务端图形界面安装手动下载安装Windows如何查看系统用户名Windows如何查看本机IP开启免密登录Window生成秘钥Linux下生成秘钥配置公钥视频讲解开启Windows下的SSH服务端 这篇文章演示的环境是Windows11Windows的SSH服务端默认情况下是没有安装的,…...
使用键盘控制Franka机械臂运动
功能说明 使用键盘按键,可以控制franka机械臂7个关节角,已在真机上验证。 代码 主要使用的是官方包内的 franka_example_controllers 1、修改 include下的 joint_position_example_controller.h, 改为如下: // Copyright (c) 2017 Frank…...
力扣第45天----第392题、第115题
# 力扣第45天----第392题、第115题 文章目录 一、第392题--判断子序列二、第115题--不同的子序列 一、第392题–判断子序列 挺简单的,思路跟以前的都差不多。 class Solution { public:bool isSubsequence(string s, string t) {vector<vector<int>&g…...
扔掉你的开发板,跟我玩Mcore-全志h616
本文转载自WhyCan Forum(哇酷开发者社区): https://whycan.com/t_10024.html 作者leefei 这是一个1.69寸触摸小电视。使用全志H616芯片,板上硬件有mpu6050陀螺仪,USB转ttl调试串口,一个USB接口,WIFI&蓝牙&#x…...
【Linux】网络篇:UDP、TCP 网络接口及使用
文章目录 socket 及 相关补充0. netstat - - 查询当前服务器上网络服务器1. 端口号(port)2. 网络字节序3. sockaddr 结构体 一、socket 常见 APIUDP0. IP 地址转化 函数1. socket 函数:创建 socket 文件描述符 (TCP/UDP, 客户端 服务器)2. b…...
卡尔曼滤波(Kalman Filter)原理浅析-数学理论推导-2
目录 前言数学理论推导卡尔曼增益超详细数学推导结语参考 前言 最近项目需求涉及到目标跟踪部分,准备从 DeepSORT 多目标跟踪算法入手。DeepSORT 中涉及的内容有点多,以前也就对其进行了简单的了解,但是真正去做发现总是存在这样或者那样的困…...
SQL 性能优化总结
文章目录 一、性能优化策略二、索引创建规则三、查询优化总结 一、性能优化策略 1. SQL 语句中 IN 包含的值不应过多 MySQL 将 IN中的常量全部存储在一个排好序的数组里面,但是如果数值较多,产生的消耗也是比较大的。所以对于连续的数值,能用…...
MYSQL事务隔离级别分析
MYSQL事务隔离级别分析 不可重复读和幻读的区别? 不可重复读和幻读的区别? 先理解几个概念 不可重复读 一个事务中,后续查询结果得到不同的数据,可被重复读隔离级别解决幻影 出现在查询结果集中但不出现在较早查询的结果集中的行幻…...
求个靠谱的网站/怎么制作网页链接
在中国,如果是IT工程师,有工作经验很受企业青睐,这也是很多人参加IT培训的原因,尤其是Java开发工程师都喜欢参加培训机构,他们参加Java培训班好就业吗?待遇怎么样? Java开发是高端职业…...
北京网站建设知名公司/软文广告怎么写
目录上机常用代码 (1) 输入代码(2) 矩阵乘法 (np.dot(A, B))(2.2) 矩阵转置(2.3) 获得矩阵对角线元素(3) 生成 nxn 的 空矩阵(4) 字典排序(5) 统计列表中所有元素出现的频率(6) list和set相互转换(7) 列表转整数(8) 数字字符串 转整数(9) 读取二进制文件(9.1) 读二进制文件(10)…...
国外网站ip地址/深圳seo优化培训
雪上加霜 本人一名Android程序员,今年29岁了。大厂小厂都呆过,现在在腾讯工作!明明工作顺利,家庭和睦儿女成全,但是总是会感觉到,一股无形的压力,推着我走!作为一名程序员我最怕的不…...
专业手机移动网站建设/关键词上首页的有效方法
由OpenDigg 出品的安卓开源项目周报第十五期来啦。我们的安卓开源周报集合了OpenDigg一周来新收录的优质的安卓开源项目,方便安卓开发人员便捷的找到自己需要的项目工具。 spruce-android 在屏幕上设计动画 AdaptiveTableLayout 读取和写入CSV文件 ShadowImageView …...
wap网站模式/百度旧版本
Windows 下 PHP 开发环境配置系列一(PHPApacheMySql; Zend DebuggerPDT) 软件的下载地址在系列一中有列出 1. 需安装软件 PHP: php-5.2.17-Win32-VC6-x86.zip Apache: httpd-2.2.21-win32-x86-no_ssl.msi MYSQL: mysql-5.5.12-win32.msi MODx: modx-2.1.5-pl.zip 下载地址 http…...
龙岗做商城网站建设/信息互联网推广
原文:http://android.eoe.cn/topic/android_sdk 描述: 让您指定您的应用支持的屏幕的大小并且可以通过屏幕兼容模式来支持比您应用所支持更大的屏幕。所以这对于您需要在您的应用里面使用这个元素来制定您的应用所支持的屏幕大小是很重要的。 一个应用如…...