标签: hedera-hashgraph

查询 Hedera Hashgraph 中链接到公钥的相关帐户 ID

我正在探索 Hedera Hashgraph,旨在检索链接到网络内特定公钥的所有关联帐户 ID。

有人可以指导我提取与 Hedera Hashgraph 中给定公钥关联的所有相关帐户 ID 所需的最佳方法或相关 API 调用和流程吗?任何代码示例或详细步骤将不胜感激。

我研究了各种方法和 API 功能,但尚未找到完成此任务的明确方法。

public-key cryptocurrency hedera-hashgraph

7
推荐指数
1
解决办法
100
查看次数

是否可以在 Hedera 上创建同时拥有 Ed25519 密钥和 ECDSA 密钥的帐户?

访问Hedera 门户时,\nit 为我生成 2 组密钥:\nan ED25519密钥和ECDSA密钥。

\n

然而,这些对应于不同的帐户。

\n

\xe2\x80\x8b\n我希望能够操作单个帐户\n该帐户可以由 ED25519ECDSA 密钥签名。

\n

这可能吗?如果是这样怎么办?

\n

hedera-hashgraph

6
推荐指数
1
解决办法
74
查看次数

如何使用 EVM 交易关联/分离 HTS 代币?

在接收 HTS 令牌之前,我需要首先与令牌 ID 关联。\n如果我使用 JS SDK,我知道要执行以下操作,其中这是accountId我想要与令牌关联的帐户。

\n
  const associateTransaction = await new TokenAssociateTransaction()\n    .setAccountId(accountId)\n    .setTokenIds([tokenId])\n    .freezeWith(client);\n
Run Code Online (Sandbox Code Playgroud)\n

但是,如何使用 EVM 交易关联/分离 HTS 代币?

\n

I\xe2\x80\x99ve 尝试在我的智能合约中执行以下操作

\n
function mintNft(\n        address token,\n        bytes[] memory metadata\n    ) public payable returns(int64){\n\n        (int response, , int64[] memory serial) = HederaTokenService.mintToken(token, 0, metadata);\n        if(response != HederaResponseCodes.SUCCESS){\n            revert("Failed to mint non-fungible token");\n        }\n\n        int res = HederaTokenService.associateToken(\n            address(msg.sender),\n            token\n        );\n\n        if(res != HederaResponseCodes.SUCCESS){\n            revert("Failed to associate non-fungible token");\n        }\n        \n        return serial[0];\n    }\n
Run Code Online (Sandbox Code Playgroud)\n …

solidity hedera-hashgraph

6
推荐指数
1
解决办法
155
查看次数

在 Hedera 测试网部署多个智能合约时,如何解决间歇性的“nonce 已被使用”错误?

当我同时将 2 个智能合约部署到 Hedera Testnet 时,出现以下错误:

nonce has already been used [ See: https://links.ethers.org/v5-errors-NONCE_EXPIRED ]
Run Code Online (Sandbox Code Playgroud)

这种情况间歇性地发生,大约有 20% 的时间发生。它们的发生似乎是不确定的,尽管我无法证实这一点。

我的部署代码是:

        const deploymentSigner: Signer = (await hre.ethers.getSigners())[0];
        // console.log('Deployment signer address', (await deploymentSigner.getAddress()));
        const scDeploymentPromises: Promise<Contract>[] = [];
        for (let idx = 0; idx < scNamesToDeploy.length; ++idx) {
            const scName = scNamesToDeploy[idx];
            const scFactory: ContractFactory =
                await hre.ethers.getContractFactory(scName);
            console.log(`Deploying ${scName} on ${networkName} ...`);
            const sc: Contract = await scFactory.deploy();
            // NOTE deployment with constructor params not needed for these particular SCs
            const …
Run Code Online (Sandbox Code Playgroud)

javascript hedera-hashgraph ethers.js hardhat hedera

5
推荐指数
1
解决办法
2054
查看次数

如何将 Hedera 本机地址转换为非长零 EVM 地址?

使用 Hedera SDK JS,我可以将帐户 ID 转换为“长零”格式的 EVM 地址。例如0.0.3996280-->0x00000000000000000000000000000000003cfa78

(参见相关问题:“如何将 Hedera 本机地址转换为 EVM 地址?”。)

如何转换为“非长零”格式 EVM 地址?例如0.0.3996280-->0x7394111093687e9710b7a7aeba3ba0f417c54474

(参见0.0.3996280Hashscan。)

我需要这个,因为当您ContractCallQuery通过 Hedera SDK 发送时,在调用的任何智能合约函数中可见的值msg.sender是“非长零”格式的 EVM 地址。

我目前在做什么:

const operatorId = AccountId.fromString(process.env.OPERATOR_ID);
const operatorEvmAddress = operatorId.toSolidityAddress();
Run Code Online (Sandbox Code Playgroud)

但是,operatorEvmAddress它采用“长零”格式,因此我无法在后续的智能合约交互中使用它。

javascript solidity hedera-hashgraph

5
推荐指数
1
解决办法
161
查看次数

如何将 Hedera 账户 ID 别名(十六进制)转换为 Hedera 账户 ID 别名(仅限字符)?

我想知道如何将帐户 ID 别名(十六进制)转换为帐户 ID 别名(仅限字符)。比如从格式0.0.302a300506032b657003210030a028ee7fd716c438de818a8831ed2235d0f85e430ab036dbfac173eb50aef9到格式0.0.HIQQEXWKW53RKN4W6XXC4Q232SYNZ3SZANVZZSUME5B5PRGXL663UAQA.Hedera SDK中有没有函数可以完成这个功能?

javascript sdk hedera-hashgraph

5
推荐指数
1
解决办法
152
查看次数

运行“hedera-json-rpc-relay”时,如何配置与 Hedera 测试网的连接?

我正在按照以下说明进行操作hedera-json-rpc-relay:具体来说docs/configuration.md,尝试运行连接到 Hedera Testnet 的 RPC 中继:

HEDERA_NETWORK=TESTNET
OPERATOR_ID_MAIN=0.0.3996280
OPERATOR_KEY_MAIN=<redacted>
OPERATOR_ID_ETH_SENDRAWTRANSACTION=
OPERATOR_KEY_ETH_SENDRAWTRANSACTION=
CHAIN_ID=0x128
MIRROR_NODE_URL=https://testnet.mirrornode.hedera.com/
E2E_RELAY_HOST=
Run Code Online (Sandbox Code Playgroud)

请注意,OPERATOR_ID_MAINOPERATOR_KEY_MAIN已为门户获得,并已成功用于其他交易。

具体指令HEDERA_NETWORK是:

连接到哪个网络。自动填充主节点和镜像节点端点。可以是 MAINNET、PREVIEWNET、TESTNET 或网络 IP 映射 -> 节点 accountId,例如 {"127.0.0.1:50211":"0.0.3"}

但是,当我运行时npm run start,我收到以下错误Error: unknown network: TESTNET ...即使根据文档,这明确是允许的值。

(完整输出复制在下面<hr/>)。

启动 RPC 中继并将其连接到 Hedera 测试网的正确配置是什么?


> start
> npx lerna exec --scope @hashgraph/json-rpc-server -- npm run start

lerna notice cli v6.4.1
lerna info versioning independent
lerna notice filter including "@hashgraph/json-rpc-server"
lerna info …
Run Code Online (Sandbox Code Playgroud)

javascript json-rpc hedera-hashgraph hedera

4
推荐指数
1
解决办法
147
查看次数

如何通过 RPC 连接到 Hedera 测试网??

我无法通过 HTTP 连接到 Hedera Testnet RPC 端点,\n确实,我间歇性地收到以下“未知错误”:\n\xe2\x80\x8b

\n
[Request ID: fe7b9928-a23f-0d72-61a1-b7cd23658c01] Unknown error invoking RPC\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\x8b\n我正在使用以下 RPC 端点进行连接:\n\xe2\x80\x8b

\n
https://testnet.hashio.io/api\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\x8b\n是否有替代(更可靠)的方法来连接到 Hedera 测试网?\n\xe2\x80\x8b

\n

rpc hedera-hashgraph hedera

4
推荐指数
1
解决办法
351
查看次数

如何使用 web3.js 或 ethers.js 连接到 Hedera 测试网?

\xe2\x80\x8b\n我想使用 web3.js 或 ethers.js 与 Hedera 测试网进行交互。我该如何执行此操作?\n\xe2\x80\x8b\n我之前曾使用 与 Hedera Testnet 进行过交互hedera-sdk-js,\n例如使用以下代码:\n\xe2\x80\x8b

\n
import {\n    AccountBalanceQuery, \n    Client\n} from "@hashgraph/sdk";\n\xe2\x80\x8b\nconst client = new Client({\n    network: "testnet"\n});\n\xe2\x80\x8b\nconst accountId = \'0.0.3996280\';\nconst balance = await new AccountBalanceQuery()\n    .setAccountId(accountId)\n    .execute(client);\n    \nconsole.log(\n    `Balance of ${accountId} in Tinybars:`,\n    balance.hbars.toTinybars().toString(10)\n);\n\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\x8b\n如何在 web3.js/ ethers.js 中执行与上述相同的操作?

\n

web3js hedera-hashgraph ethers.js hedera

4
推荐指数
1
解决办法
359
查看次数

为什么 Hedera 上的 eth_estimateGas 返回意外高的值?

我知道这eth_estimateGas并不准确,\n但目前,我得到的实际gasUsed值\n大约是 \xc2\xa0 返回值的 6% eth_estimateGas

\n

在以下示例中,\n我使用完全相同的输入调用相同的智能合约两次,只有 1 个差异:

\n
    \n
  • 在第一次调用中,gasLimit = eth_estimateGas
  • \n
  • 在第二次调用中,gasLimit = eth_estimateGas * 0.064\n
      \n
    • 该值仅占估计值的一小部分
    • \n
    • 这个值是通过反复试验获得的......而不是通过任何计算
    • \n
    \n
  • \n
\n
    // with exact estimated amount of gas\n    const estimatedGas2 = (await expendGasSc.estimateGas.updateState(1_000_000_123n)).toBigInt();\n    console.log(\'estimatedGas2\', estimatedGas2);\n    const gasLimit2 = estimatedGas2 * 1n;\n    console.log(\'gasLimit2\', gasLimit2);\n    const txResponse2 = await (await expendGasSc\n        .updateState(\n            1_000_000_123n,\n            { gasLimit: gasLimit2 },\n        ))\n        .wait();\n    const gasUsed2 = txResponse2.gasUsed.toBigInt();\n    console.log(\'gasUsed2\', gasUsed2);\n\n    // with …
Run Code Online (Sandbox Code Playgroud)

rpc solidity hedera-hashgraph hedera

4
推荐指数
1
解决办法
177
查看次数