-
Notifications
You must be signed in to change notification settings - Fork 0
/
deployer.tsx
38 lines (34 loc) · 1.16 KB
/
deployer.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// @ts-ignore
import fs from 'fs';
import Web3 from 'web3';
import dotenv from 'dotenv';
dotenv.config();
const web3 = new Web3(process.env.EndPointUrl as string);
const walletAddress = process.env.WalletAddress as string;
const privateKey = process.env.PrivateKey as string;
const bytecodeFile = 'artifacts/contract_output_bytecode.json';
const bytecodeJson = fs.readFileSync(bytecodeFile, 'utf8');
const bytecodeObject = JSON.parse(bytecodeJson);
const bytecode = bytecodeObject.bytecode;
const bytecodeString = bytecode.toString();
const account = web3.eth.accounts.privateKeyToAccount(privateKey);
const transactionData = {
gas: 8000000,
data: bytecodeString,
};
web3.eth.accounts.signTransaction(transactionData, privateKey)
.then((signedTx) => {
return web3.eth.sendSignedTransaction(signedTx.rawTransaction || '')
.once('transactionHash', (hash) => {
console.log('Tx :', hash);
})
.once('receipt', (receipt) => {
console.log('Contract Address :', receipt.contractAddress);
})
.on('error', (error) => {
console.error('Error:', error);
});
})
.catch((error) => {
console.error('Error:', error);
});