社区常见问题
关于常规交易中 的storageLimit
和epochHeight
字段,我们需要注意什么?
- 在调用合约时,SDK会根据**
cfx_estmastGasAndCollateral
自动设置storageLimit
,根据cfx_getEpochNumber
自动设置epochHeight
**。 - 在转移CFX时,**
storageLimit
自动设置为0,epochHeight
**设置为当前纪元号。
我想一次发送多个交易,但没有方法设置nonce。 我该如何解决?
你需要自己维护nonce,每个交易加1。
发送交易时出现“ExceedStorageLimit”错误是什么意思?
**storagelimit
**值设置得比实际需要的值低。
如何将私钥转换为keystore格式?
- 在**
go-conflux-sdk
中,使用AccountManager.ImportKey
**将私钥导入keystore文件。 - 在**
js-conflux-sdk
中,使用sign.encrypt
**基于私钥生成keystore对象。
为什么节点在更改配置后需要重新同步数据?
重启节点程序不会从头开始同步数据。 相反,它会从数据库恢复数据,并从上一个检查点开始同步。 这是因为最后一个检查点的数据存储在内存中,当程序关闭时,内存中的数据会丢失,使得看起来数据正在被重新同步。
代付功能是否可以在测试链上正常测试?
可以。
CFX是ERC777合约吗?
CFX不是合约代币。 CFX相当于以太坊的ETH。
Conflux支持以太坊库OpenZeppelin吗?
支持。 你可以直接引用它。 但请注意,Conflux链上的ERC1820合约地址与以太坊不同。 在Conflux上,ERC1820合约地址是:0x88887ed889e776bcbe2f0f9932ecfabcdfcd1820。
测试网水龙头在哪里?
- 要接收CFX测试代币,你可以直接从水龙头门户网站获取。
- 核心空间测试网水龙头:https://faucet.confluxnetwork.org/
- eSpace测试网水龙头:https://efaucet.confluxnetwork.org/
- 主网水龙头:https://conflux-faucets.com/
为什么当我使 用latest_confirmed
获取纪元时,值有时会显得较小?
这可能发生在网络连接不佳的情况下,主要是由于高区块同步延迟造成的。
开发者在启动节点时需要进行什么设置?
你可以在此处找到所有与节点相关的文档。
CFX有查询计算能力的API吗?
https://www.confluxscan.io/v1/plot?interval=514&limit=10
什么是枢轴链切换?
枢轴链指的是根据区块哈希连接主区块形成的链。 当某个纪元中的非主区块B的子树比先前的主区块A更重时,B成为该纪元的主区块。 这就是枢轴链切换。
如何确定枢轴链切换是否发生?
当旧的枢轴链切换到新的枢轴链时,最新挖掘的纪元号将是不大于上次获得的最新挖掘纪元号的值。
如下所示,之前的最新纪元是10,此刻的最新纪元是9,表明纪元9的枢纽区块已从9A变为9B,发生了枢轴链切换。
cssCopy code
[1]···[8]---[9A]---[10A] 旧枢轴链
\
\
[9B] 新枢轴链
开发者如何监控?
- 启动一个完整节点(归档节点)并启用websocket RPC服务。
- 使用**
rpc_subscribeEpoch
订阅最新挖掘纪元
**事件。 - 等待最新挖掘的纪元B,并与之前获得的最新挖掘纪元A进行比较。
- 如果
B <= A
,则发生了枢轴链切换。 - 回到步骤3。
开发者如何同步区块和交易状态?
如果需要保持本地数据对区块和交易的最新和准确状态,那么当枢轴链切换发生时(假设最新挖掘纪元号从A变为B,且B <= A
):
- 假设在最新挖掘纪元号为A时获得的最新状态纪元号为A'。
- 假设在最新挖掘纪元号为B时获得的最新状态纪元号为B'。
- 如果B > A',更新(A', B'](即,这种情况不会 影响已执行的区块和交易,正常处理)。
-----A'------A
--------B'-B
- 如果
B <= A'
,删除[B, A']之间的数据。
-----A'------A
----B
- 更新[B', B]。
- 回到步骤1。
希望这个诠释能帮助您更好地理解内容! If you have any further questions or need clarification on any points, please let me know.
什么是存储抵押,它是如何计算的? For example, how many drips are required for 1kb storage?
存储抵押是指在合约中添加新的存储使用时需要抵押相应数量的cfx。 对于每个存储条目,最后写入此条目的账户称为此存储条目的拥有者。 The storage collateral fee will be returned to the owner after the storage is released. 每1kb的存储需要1cfx的抵押。
更多详细信息,请参考此部分。
cfx_getTransactionReceipt返回的GasFee包括哪些费用? 它包括存储抵押费用吗?
- Gasfee不包括存储费用。 Gasfee = gasUsed * gasPrice,交易执行后gasfee被消耗。
- storageCollateralized代表实际使用的存储抵押费用。 存储抵押费用将在释放存储时返还。
In a block, if a transaction has both blockHash and status as null, does it mean it has been processed in another block?
- 通常是的。 这是因为该交易没有在这个区块中执行。 如果一个交易被重复打包,交易将在最早纪元的区块中执行。
- 另一种情况是包含交易的区块已被打包但尚未执行。 每个区块在打包后5秒钟执行。
一个纪元内是否可能没有区块?
不会,至少会有一个区块。
js-conflux-sdk如何解码函数数据?
请参考API文档:
transaction = await conflux.getTransactionByHash('0x2055f3287f1a6ce77d91f5dfdf7517a531b3a560fee1265f27dc1ff92314530b');
contract.abi.decodeData(transaction.data)
已部署的合约能否被替换, 而不是创建新合约?
合约不能被替换或升级;只能部署新的合约。
有没有适用于安卓的SDK?
安卓可以使用java-conflux-sdk。
conflux sdk有哪些版本可用?
所有Conflux SDK的信息可以在这里找到。
区块中的nonce与交易中的nonce是否相同?
交易的nonce表示特定地址发出的交易数量,而区块的nonce指的是在PoW计算中使用的随机数。
What are the chainIds for the mainnet and testnet? 如何查询?
主网是1029,测试网是1。 可以使用rpc "cfx_getStatus" 或 SDK 的getStatus方法获取。