当前位置: 首页 > news >正文

社区问答精选——长安链开发知多少?(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&#xff0c…...

友思特新闻|友思特与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.移动端-触底刷新实现核心…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...

Robots.txt 文件

什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...