我想部署一个智能合约(在 .json 文件中提供)并需要它的地址(在 testnet 区块链上),然后尝试向它发送一些交易。所有这些都应该通过javascript来完成。这是我尝试部署但无法运行的代码。另外,我很困惑为什么在这里我们没有在部署合同期间使用我们的私钥进行签名。 更新代码:
var Tx = require('ethereumjs-tx').Transaction
const Web3 = require('web3');
const provider = new Web3.providers.HttpProvider("https://ropsten.infura.io/v3/7f....90b30dd22f0");
const web3 = new Web3(provider);
const account1 = '0xd458d3B03A3D4025Ae3DD5a3358afDa832c7507e'
const privateKey1 = Buffer.from('8005F9FE6F1......','hex')
var compiledContract = require('./build/MyContract.json');
// bytecode ="0x"+ compiledContract.bytecode;
// abi = compiledContract.abi;
// console.log(web3.eth.accounts.create());
(async () => {
const deployedContract = await new web3.eth.Contract(compiledContract.abi)
.deploy({
data: '0x' + compiledContract.bytecode,
arguments: [account1]
})
.send({
from: account1,
gas: '2000000'
});
console.log(
`Contract deployed at address: ${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)
我也试过这个代码
(async () => {
const contract = new web3.eth.Contract(compiledContract.abi);
const params = {
data: '0x' + compiledContract.bytecode,
arguments: [account1]
};
千巷猫影
相关分类