Move 合约部署踩坑笔记:如何解决 Sui 客户端发布错误Committing lock file

news2024/11/26 9:18:46

Move 共学活动:快速上手 Move 开发

为了帮助更多开发者快速了解和掌握 Move 编程语言,Move 共学活动由 HOH 社区HackQuestOpenBuildKeyMap 联合发起。该活动旨在为新手小白提供一个良好的学习平台,带领大家一步步熟悉 Move 语言,并了解如何将其应用到 Web3 开发中。

通过与 Move 领域的专业导师们合作,参与者可以快速掌握 Move 语言的基础知识,逐步向更复杂的应用开发进阶。无论是区块链初学者,还是有一定开发经验的工程师,都能从中获益。

资源链接:

  • sui官方文档🚪:获取关于 Sui 链的详细文档,包括开发指南、API 参考等。
  • move学习B站视频🚪:通过 B 站的视频教程,跟随导师学习 Move 编程语言的基础与进阶。
  • letsmove仓库🚪:这是一个 Move 学习资源的 GitHub 仓库,包含了各种示例代码和教程,帮助开发者掌握 Move 语言。
    HOH社区

项目场景

在开发一个基于 Sui 区块链的 Move 合约时,每次合约修改后都需要进行重新部署。当修改合约后,我尝试重新部署合约,但遇到 Sui 客户端发布时的错误,导致合约无法成功发布。这一问题看似与合约本身无关,实际是与 Sui 客户端的依赖管理机制有关,特别是合约的版本锁定和依赖解析的问题。


问题描述

在重新部署 Move 合约时,Sui 客户端抛出以下错误信息:

Committing lock file

Caused by:
    0: failed to persist temporary file: 拒绝访问。 (os error 5)
    1: 拒绝访问。 (os error 5)

此错误发生在尝试执行 sui client publish 命令时,导致合约无法顺利发布。在尝试了几次后,错误信息没有任何改变,看起来与合约的依赖关系或版本控制相关
在这里插入图片描述


原因分析

经过查阅 Sui 文档🚪和 社区讨论🚪,发现该问题与 move.lock 文件的存在和版本锁定机制有关。在使用 Move 合约进行开发时,move.lock 文件用于锁定合约项目的所有依赖版本,这样可以确保项目在不同环境下能够稳定运行。但问题出现的根本原因是:

  1. 版本冲突:如果合约的依赖库发生了更新,move.lock 文件可能没有及时更新,导致 Sui 客户端无法正确解析依赖关系。
  2. 依赖问题:有时,在某些情况下,合约开发过程中,move.lock 文件锁定的依赖版本与 Sui 客户端不兼容,导致解析失败,进而出现无法发布的错误。

因此,当 Sui 客户端尝试根据 move.lock 文件解析并加载依赖时,由于版本或依赖关系不一致,客户端无法继续执行合约的发布操作。


解决方案

为了解决这个问题,最简单且有效的方法是删除项目中的 move.lock 文件。当 move.lock 文件被删除后,Sui 客户端会在重新执行合约发布命令时,自动生成一个新的 move.lock 文件,并且会重新解析和更新项目的依赖关系,从而避免版本冲突或不兼容问题。

具体解决步骤如下:

步骤 1:删除 move.lock 文件

move.lock 文件是 Sui 客户端用来锁定依赖版本的文件。删除此文件后,Sui 会自动重新生成它,以适配当前项目的依赖。步骤如下:

  1. 进入你的项目目录,找到 move.lock 文件。通常,该文件位于项目的根目录。
  2. 手动删除该文件,或者使用以下命令删除:rm move.lock

步骤 2:重新部署合约

删除 move.lock 文件后,Sui 客户端会自动重新生成依赖锁定文件,并重新解析项目中的所有依赖。执行以下命令重新部署合约:

sui client publish --gas-budget 100000000

这时,Sui 客户端会自动解析和更新依赖关系,确保合约可以顺利发布
在这里插入图片描述
在这里插入图片描述

步骤 3:检查依赖和版本兼容性

如果删除 move.lock 文件后仍然遇到问题,可以进一步检查项目中的依赖版本是否与当前使用的 Sui 客户端版本兼容。有时,依赖库的版本更新可能与 Sui 客户端不完全兼容,导致一些潜在的问题。在这种情况下,升级或降级 Sui 客户端和相关依赖库可能是必要的。

总结

在开发 Sui 区块链上的 Move 合约时,遇到 Sui 客户端发布错误,尤其是涉及版本冲突或依赖关系解析的问题,可以通过删除 move.lock 文件来解决。删除该文件后,Sui 客户端会重新生成并解析所有依赖,确保合约的顺利发布。

通过这一问题的解决过程,我们可以更好地理解依赖管理在合约部署中的重要性,特别是在区块链开发过程中,合约的依赖版本锁定和解析对于保证合约稳定性至关重要。

希望这篇踩坑笔记能帮助你解决类似的问题,节省时间,提高开发效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2247758.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言】野指针问题详解及防范方法

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 💯前言💯什么是野指针?💯未初始化的指针代码示例问题分析解决方法 💯指针越界访问代码示例问题分析解决方法 💯指向已释放内存的…

关于如何在k8s中搭建一个nsfw黄图鉴定模型

随着现在应用内图片越来越多,安全审查也是必不可少的一个操作了 下面手把手教你如何将huggingface中的黄图检测模型部署到自己的服务器上去 1.找到对应的模型 nsfw_image_detection 2.在本地先验证如何使用 首先安装transformers python库 pip install transform…

初学 flutter 环境变量配置

一、jdk(jdk11) 1)配置环境变量 新增:JAVA_HOMEC:\Program Files\Java\jdk-11 //你的jdk目录 在path新增:%JAVA_HOME%\bin2)验证是否配置成功(cmd运行命令) java java -version …

信息安全实验--密码学实验工具:CrypTool

1. CrypTool介绍💭 CrypTool 1的开源教育工具,用于密码学研究。通过CrypTool 1,可以实现加密和解密操作,数字签名。CrypTool1和2有很多区别的。 来源于:网络安全快速入门5-密码学及密码破解工具CrypTool实战_百度知道…

服务器数据恢复—raid5阵列+LVM+VXFS数据恢复案例

服务器存储数据恢复环境: 某品牌MSA2000FC存储中有一组由7块盘组建的RAID5阵列,另外还有1块硬盘作为热备盘使用。 基于RAID5阵列划分的几个LUN分配给小机使用,存储空间通过LVM管理,重要数据为Oracle数据库及OA服务端。 服务器存储…

基于微信小程序的酒店客房管理系统+LW示例参考

1.项目介绍 系统角色:管理员、员工、普通用户功能模块:员工管理、用户管理、客房管理、预订管理、商品管理、评价管理、续订管理、订单管理等技术选型:SSM,vue,uniapp等测试环境:idea2024,jdk1…

学习Zookeeper

Zookeeper有手就行 1. 初识ZooKeeper1.1 安装ZooKeeper1.2 ZooKeeper命令操作1.2.1 Zookeeper数据模型1.2.2 Zookeeper 服务端常用命令1.2.3 Zookeeper客户端常用命令 2. ZooKeeperJavaAPl操作2.1 Curator介绍2.2 CuratorAPI常用操作2.2.0 引入Curator支持2.2.1 建立连接2.2.2 …

java基础知识(Math类)

引入:Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根 import java.util.Math 1.abs绝对值 int abs Math.abs(-9); 2.pow求幂 double pow Math.pow(2,4); 3.向上取整 double ceil Math.ceil(3.9);//ceil 4 4.向下取整 dou…

【AIGC】大模型面试高频考点-RAG中Embedding模型选型

【AIGC】大模型面试高频考点-RAG中Embedding模型选型 (一)MTEB排行榜英文模型排名:1、bge-en-icl2、stella_en_1.5B_v53、SFR-Embedding-2_R4、gte-Qwen2-7B-instruct5、stella_en_400M_v56、bge-multilingual-gemma27、NV-Embed-v18、voyage…

学习threejs,使用设置normalMap法向量贴图创建更加细致的凹凸和褶皱

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.MeshPhongMaterial高…

SAP ME2L/ME2M/ME3M报表增强添加字段

SAP ME2L/ME2M/ME3M报表增强添加字段(包含:LMEREPI02、SE18:ES_BADI_ME_REPORTING) ME2L、ME2M、ME3M这三个报表的字段增强,核心点都在同一个结构里 SE11:MEREP_OUTTAB_PURCHDOC 在这里加字段,如果要加的字段是EKKO、…

dubbo-go框架介绍

框架介绍 什么是 dubbo-go Dubbo-go 是 Apache Dubbo 的 go 语言实现,它完全遵循 Apache Dubbo 设计原则与目标,是 go 语言领域的一款优秀微服务开发框架。dubbo-go 提供: API 与 RPC 协议:帮助解决组件之间的 RPC 通信问题&am…

不只是请求和响应:使用Fiddler抓包URL和Method全指南(中)

欢迎浏览高耳机的博客 希望我们彼此都有更好的收获 感谢三连支持! 不只是请求和响应:使用Fiddler抓包HTTP协议全指南(上)-CSDN博客https://blog.csdn.net/Chunfeng6yugan/article/details/144005872?spm1001.2014.3001.5502 🙉在(上)篇博客中&#xf…

Linux操作系统学习---初识环境变量

目录 ​编辑 环境变量的概念: 小插曲:main函数的第一、二个参数 获取环境变量信息: 1.main函数的第三个参数 2.查看单个环境变量 3.c语言库函数getenv() 和环境变量相关的操作指令: 1.export---导出环境变量: 2.unse…

跨平台应用开发框架(1)----Qt(组件篇)

目录 1.Qt 1.Qt 的主要特点 2.Qt的使用场景 3.Qt的版本 2.QtSDK 1.Qt SDK 的组成部分 2.安装 Qt SDK 3.Qt SDK 的优势 3.Qt初识 1.快速上手 widget.cpp mian.cpp widget.h Helloworld.pro 2.对象树 3.坐标系 4.信号和槽 1. 信号和槽的基本概念 2. 信号和槽的…

mysql索引失效的五种情况

第一种 违反最左前缀法则 这个是针对联合索引的。 假设有个tb_seller表,现在给三个字段建立联合索引,建立的时候字段顺序不可随便设置,字段顺序: name, status, address。下图Seq_in_index对应的是联合索引顺序。 判断索引失效用…

H3C OSPF 多区域实验

目录 前言 实验拓扑 实验需求 实验解析 路由器配置 测试 前言 此篇文章为 OSPF多区域试验,建议先食用OSPF单区域实验,理解实验原理 学习基本配置,再来使用此篇,效果更佳!(当然如果你已经了解原理与基…

算法 Java实现

一.查找算法 1.分块查找 二.排序算法 1.冒泡排序

优先算法 —— 双指针系列 - 快乐数

1. 快乐数 题目链接: 202. 快乐数 - 力扣(LeetCode)https://leetcode.cn/problems/happy-number/description/ 2. 题目解析 示例1: 示例2: 3. 算法原理 两种情况:我们可以把两种情况都看作为循环&#xff0…

【机器学习】——卷积与循环的交响曲:神经网络模型在现代科技中的协奏

🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大二学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门专栏:🎇【MySQL&#xff0…