- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 bin 文件大小只有 18kb。我也得到了使用 IPFS 的解决方案,但不知道如何使用它。如果有任何使用 IPFS 的引用,请与我分享。 :
错误:PrecheckStatusError:事务 0.0.34898094@1653658245.135892060 预检查失败,状态为 TRANSACTION_OVERSIZE
这是我的代码:
const {
AccountId,
PrivateKey,
Client,
FileCreateTransaction,
ContractCreateTransaction,
ContractFunctionParameters,
ContractExecuteTransaction,
ContractCallQuery,
Hbar
} = require("@hashgraph/sdk");
const fs = require("fs");
const operatorId = AccountId.fromString(process.env.OPERATOR_ID);
const operatorKey = PrivateKey.fromString(process.env.OPERATOR_PVKEY);
const client = Client.forTestnet().setOperator(operatorId, operatorKey);
async function main() {
// Import the compiled contract bytecode
const contractBytecode = fs.readFileSync("first_contract_sol_ABC_TOKEN.bin");
// Create a file on Hedera and store the bytecode
const fileCreateTx = new FileCreateTransaction().setContents(contractBytecode).setKeys([operatorKey]).setMaxTransactionFee(new Hbar(1))
.freezeWith(client);
const fileCreateSign = await fileCreateTx.sign(operatorKey);
console.log(Date.now() / 1000);
const fileCreateSubmit = await fileCreateSign.execute(client);
const fileCreateRx = await fileCreateSubmit.getReceipt(client);
const bytecodeFileId = fileCreateRx.fileId;
console.log(`- The bytecode file ID is: ${bytecodeFileId} \n`);
// Instantiate the smart contract
const contractInstantiateTx = new ContractCreateTransaction()
.setBytecodeFileId(bytecodeFileId)
.setGas(100000)
.setConstructorParameters(
new ContractFunctionParameters().addString("Alice").addUint256(111111)
);
const contractInstantiateSubmit = await contractInstantiateTx.execute(client);
const contractInstantiateRx = await contractInstantiateSubmit.getReceipt(
client
);
const contractId = contractInstantiateRx.contractId;
const contractAddress = contractId.toSolidityAddress();
console.log(`- The smart contract ID is: ${contractId} \n`);
console.log(`- Smart contract ID in Solidity format: ${contractAddress} \n`);
}
main();
最佳答案
您遇到了 TRANSACTION_OVERSIZE 错误,因为 Hedera 交易有 6kb 的大小限制,包括所有签名。
如果您的合约编译后的字节码比较大,那么您需要在 Hedera 上创建一个文件,然后将内容附加到多个 block 中,然后再创建合约。
当您使用 ContractCreateFlow()
时,SDK 现在会为您处理这 3 个步骤。这是一个示例:
const contractCreate = new ContractCreateFlow()
.setGas(100000)
.setBytecode(bytecode);
//Sign the transaction with the client operator key and submit to a Hedera network
const txResponse = contractCreate.execute(client);
//Get the receipt of the transaction
const receipt = (await txResponse).getReceipt(client);
关于node.js - 在 Hedera 区 block 链中创建智能合约时出现错误 "Transaction Oversize",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72406476/
我想类型转换 100 个 NFT。我需要调用“TokenMintTransaction()”100 次吗?有没有办法在一次 API 调用中类型转换 100 个 NFT? 这是我使用的代码: let m
CONTRACT_REVERT_EXECUTED不知道我做错了什么,但我正在尝试调用一个函数,它接受一个参数,我确保它是正确的,但它仍然会恢复。这是使用 HederaTokenService 的 he
有没有办法在 Hedera NFT 元数据生成后更改它? 我的目标是实现与其他 NFT 项目中通常使用的类似 NFT 铸币流程,即首先拥有预发布元数据,并在发布当天将其更改为实际元数据。 最佳答案 账
我的 bin 文件大小只有 18kb。我也得到了使用 IPFS 的解决方案,但不知道如何使用它。如果有任何使用 IPFS 的引用,请与我分享。 : 错误:PrecheckStatusError:事务
我的 bin 文件大小只有 18kb。我也得到了使用 IPFS 的解决方案,但不知道如何使用它。如果有任何使用 IPFS 的引用,请与我分享。 : 错误:PrecheckStatusError:事务
我是一名优秀的程序员,十分优秀!