社区问答精选——长安链开发知多少?(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.移动端-触底刷新实现核心…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...

前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...

Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...

Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...