Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在同一个javascript程序中部署和获取智能合约的地址_Javascript_Node.js_Ethereum_Smartcontracts - Fatal编程技术网

如何在同一个javascript程序中部署和获取智能合约的地址

如何在同一个javascript程序中部署和获取智能合约的地址,javascript,node.js,ethereum,smartcontracts,Javascript,Node.js,Ethereum,Smartcontracts,我想部署一个智能合约(在.json文件中提供)并需要它的地址(在testnet区块链上),然后尝试向它发送一些事务。所有这些都应该通过javascript完成。这是我的代码,我试图部署,但无法运行它。此外,我还不明白为什么在部署合同期间我们不使用私钥进行签名。 更新代码: var Tx=require('ethereumjs-Tx')。事务 const Web3=require('Web3'); const provider=new Web3.providers.HttpProvider(“ht

我想部署一个智能合约(在.json文件中提供)并需要它的地址(在testnet区块链上),然后尝试向它发送一些事务。所有这些都应该通过javascript完成。这是我的代码,我试图部署,但无法运行它。此外,我还不明白为什么在部署合同期间我们不使用私钥进行签名。 更新代码:

var Tx=require('ethereumjs-Tx')。事务
const Web3=require('Web3');
const provider=new Web3.providers.HttpProvider(“https://ropsten.infura.io/v3/7f....90b30dd22f0");
const web3=新的web3(提供者);
常量帐户1='0xd458d3B03A3D4025Ae3DD5a3358afDa832c7507e'
const privateKey1=Buffer.from('8005F9FE6F1…','hex')
var compiledContract=require('./build/MyContract.json');
//bytecode=“0x”+compiledContract.bytecode;
//abi=compiledContract.abi;
//log(web3.eth.accounts.create());
(异步()=>{
const deployedContract=wait new web3.eth.Contract(compiledContract.abi)
.部署({
数据:“0x”+compiledContract.bytecode,
论点:[1]
})
.发送({
发件人:account1,
天然气:“2000000”
});
console.log(
`在以下地址部署的协定:${deployedContract.options.address}`
);
以下是我的输出:

    (async () => {
    ^
    TypeError: Buffer.from(...) is not a function
        at Object.<anonymous> (C:\Users\aa\MyProject\deploy.js:62:1)
        at Module._compile (internal/modules/cjs/loader.js:778:30)
        at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
        at Module.load (internal/modules/cjs/loader.js:653:32)
        at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
        at Function.Module._load (internal/modules/cjs/loader.js:585:3)
        at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
        at startup (internal/bootstrap/node.js:283:19)
        at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
但它也给不足的气体错误。然而,我的帐户有余额超过5

(node:3004) UnhandledPromiseRejectionWarning: Error: Returned error: insufficien
t funds for gas * price + value

我可以看到您正在参考web3js文档。该文档是为使用本地节点的用户制作的。当您使用Infura作为提供商时,您将面临需要从您的帐户进行交易的问题。正如您所述,不需要使用私钥,这是因为此处的nction假设帐户已解锁。在使用带有infura的web3js库作为提供商时,您应该参考“”以了解所需的更改。此外,您还必须使用私钥来签署交易(即从您的帐户支付汽油费)

我可以看到您正在参考web3js文档。该文档是为使用本地节点的用户制作的。当您使用Infura作为提供商时,您将在需要从您的帐户进行交易时遇到问题。正如您所述,不需要使用私钥,这是因为此处的y函数假定帐户已解锁。您应该参考“”了解在使用带有infura的web3js库作为提供商时需要做的更改。此外,您还必须使用私钥来签署交易(即从您的帐户支付汽油费)

您的代码中是否使用了Buffer.from?一点也没有..我使用了Buffer.from作为privateKey..但在上面的代码中从未使用过…我只是在上面的代码之前使用了下面的代码…const compiledContract=require('./build/MyContract.json');bytecode=“0x”+compiledContract.bytecode;abi=compiledContract.abi;您能提供完整的源代码吗?我已经用更多的细节更新了我的问题..请看一看..您的代码中是否使用了Buffer.from?一点也不..我使用了Buffer.from作为privateKey..但在上面的代码中从未使用过..我只是在上面的代码之前使用了下面的代码onst compiledContract=require('./build/MyContract.json');bytecode=“0x”+compiledContract.bytecode;abi=compiledContract.abi;如果可用,您能提供完整的源代码吗?我已经更新了我的问题,并提供了更多详细信息。请看一看。。
(node:3004) UnhandledPromiseRejectionWarning: Error: Returned error: insufficien
t funds for gas * price + value