IC开发入门常见问题

访问不到钥匙,文件等问题

检查之前命令行是否用了 sudo
或者之前是root, 现在用了其他用户

进入私钥目录

1
cd ~/.config/dfx/identity/

1.dfx deploy 运行报错

可能是没有运行开发环境:

1
2
3
dfx stop && dfx start 
或者 dfx stop && dfx start --background
或者 dfx stop && dfx start --clean (清除当前项目的状态)

2.在原来canister发布新版本是否需要加上 –with-cycles=xxxx

不需要

3.motoko 打印array

Debug.print(debug_show(arr));

4.motoko 语法检查

dfx build –check

5.跨 Canister 调用是否有 Timeout 的机制?以防止某个调用不返回导致主调 Canister 无法停止。

timeout 仅发生在对方子网下线的情况下,其它情况则需要等待对方返回,系统保证它终将返回,可能很久。

6.冻结时,如果有未返回的跨 Canister 调用会怎样?会等待返回吗?

stopping 状态是就是等待所有已发出的调用返回,所有都返回了才能进入 stopped 状态

7.跨 Canister 调用,如何在本地环境调试?可以把主链非自己所有的 Canister 部署到本地环境吗?还是必须自己

是的,需要把依赖的 canister 自己部署一遍

8.为什么在例子中,发送了消息 Cycles.balance 没有消费?

本地起的环境运行 canister 都不消耗 cycles

9.如果多个人并发调用一个 Canister 中的 Update 方法,是需要排队等待吗?

发给 canister 的消息都是先进入队列,然后依次执行

10.HttpRequest/ HttpResponse 这些类型是否可以从某些标准库 import 过来?

目前没在标准库里

11.没有 Blob[Nat8] 的标准方法吗?

Blob.toArray(blob)

12.http_request的actor部署在主网之后为什么是显示“Body does not pass verification”

用这个访问 CANISTERID.raw.ic0.app

13.运行报错The Replica returned an error: code 5, message: “Canister xxxx exceeded the cycles limit for single message execution.”

检查下程序是不是有死循环

14.升级dfx后报错问题

检查后台运行的dfx start是否还在旧版本运行

15.降级dfx版本到0.8.4版本

DFX_VERSION=0.8.4 sh -ci “$(curl -fsSL https://sdk.dfinity.org/install.sh)”

16.Warning:The versionofDFXused(0.9.2) is different than the version beingrun(0.8.4

This might happen because your dfx.json specifies an older version, or DFX_VERSION is set in your environment.
删除或者修改 dfx.json里面的版本version

17.playground 上部署的内容是否会有销毁时间

是的

18.是否有类似javascrpt的Promise.all的方法

目前没有

19.TEXT 连接用什么符号

用#

20. cycles不够了怎么办?

用命令行把ICP转成cycles充值: dfx ledger top-up -h提示
或者在nns钱包canister里面,link到canister后top-up

21. canister query方法是否支持异步调用

不支持,会报错

21. 大数据存储

https://github.com/PrimLabs/Bucket