158 lines
4.5 KiB
TypeScript
Executable File
158 lines
4.5 KiB
TypeScript
Executable File
import Common from 'ethereumjs-common'
|
|
|
|
const Web3 = require('web3');
|
|
const Tx = require('ethereumjs-tx').Transaction;
|
|
|
|
export const createAccount = () => {
|
|
const web3 = new Web3( "http://localhost:8545");
|
|
const data = web3.eth.accounts.create()
|
|
return data
|
|
}
|
|
|
|
export const createPersonalAccount = () => {
|
|
const web3 = new Web3( "http://localhost:8545");
|
|
return web3.eth.personal.newAccount("exchange")
|
|
.then((result) => {
|
|
return result
|
|
})
|
|
.catch((err) => {
|
|
console.log(err)
|
|
})
|
|
}
|
|
|
|
export const getBalance = async (account) => {
|
|
const web3 = await new Web3( "http://localhost:8545");
|
|
return web3.eth.getBalance(account.toString())
|
|
.then((balance) => {
|
|
return balance
|
|
})
|
|
.catch((err) => {
|
|
throw err
|
|
})
|
|
}
|
|
|
|
export const checkTransaction = async (transactionId) => {
|
|
const web3 = await new Web3( "http://localhost:8545");
|
|
return web3.eth.getTransactionReceipt(transactionId)
|
|
.then((txR) => {
|
|
if (txR.blockNumber == undefined) {
|
|
throw "transaction receipt not found";
|
|
} else {
|
|
return web3.eth.getTransaction(transactionId)
|
|
.then((tx) => {
|
|
if (tx.blockNumber == undefined|| tx.value == undefined) {
|
|
throw "transaction receipt not found";
|
|
} else {
|
|
return tx
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
throw err
|
|
})
|
|
}
|
|
}).catch((err)=>{
|
|
throw(err)
|
|
})
|
|
}
|
|
|
|
export const getEtheriumNonce=((address) => {
|
|
const web3 = new Web3( "http://localhost:8545");
|
|
return web3.eth.getTransactionCount(address,'pending')
|
|
.then((nonce) => {
|
|
//got nonce proceed with creating and signing transaction
|
|
return nonce;
|
|
})
|
|
.catch((err) => {
|
|
throw err
|
|
})
|
|
})
|
|
|
|
export const sendEther = async (account,value) => {
|
|
const web3 = await new Web3( "http://localhost:8545");
|
|
//unlock it for a period of 15 secs
|
|
return web3.eth.personal.unlockAccount("0x868453967f6806ef86de7cf5e57a32ab28b875b4","exchange", 15000)
|
|
.then((unlocked) => {
|
|
return web3.eth.sendTransaction({
|
|
//from: process.env.ADMIN_ETHERIUM_ACCOUNT_ADDRESS,
|
|
from: '0x868453967f6806ef86de7cf5e57a32ab28b875b4',
|
|
to: account.toString(),
|
|
value: web3.utils.toWei (value.toString())
|
|
})
|
|
.then((receipt) => {
|
|
// then lock it
|
|
return web3.eth.personal.lockAccount("0x868453967f6806ef86de7cf5e57a32ab28b875b4")
|
|
.then(() => {
|
|
return receipt
|
|
})
|
|
.catch((err) => {
|
|
return receipt
|
|
})
|
|
})
|
|
.catch((err) =>{
|
|
throw err
|
|
})
|
|
}).catch((err)=>{
|
|
throw(err)
|
|
})
|
|
}
|
|
|
|
export const receiveEtherFromClient = (transactionHash) => {
|
|
//receive transaction from the ui and send it
|
|
const web3 = new Web3( "http://localhost:8545");
|
|
let rawTx = undefined
|
|
let transaction = undefined
|
|
//custom network
|
|
const customCommon = Common.forCustomChain(
|
|
'mainnet',
|
|
{
|
|
name: 'my-network',
|
|
networkId: 1981,
|
|
chainId: 1981,
|
|
},
|
|
'petersburg',
|
|
)
|
|
const preData = () => {
|
|
const privateKey = Buffer.from(
|
|
'64061456066baa81c5097c895b5176fb3e1452eaf6f6776e2d7bf07ddb9accfe',
|
|
'hex'
|
|
)
|
|
//parameters should be hex string starting with 0x
|
|
const txParams = {
|
|
nonce: '0x01',
|
|
gas: 50002,
|
|
gasPrice: Number(web3.utils.toWei('601', 'gwei')),
|
|
to: '0x868453967f6806ef86de7cf5e57a32ab28b875b4',
|
|
value: 10000003
|
|
}
|
|
// The second parameter is not necessary if these values are used
|
|
const tx = new Tx(txParams,{common : customCommon})
|
|
tx.sign(privateKey)
|
|
const serializedTx = tx.serialize()
|
|
return rawTx = '0x' + serializedTx.toString('hex');
|
|
}
|
|
return Promise.all([preData()])
|
|
.then(()=>{
|
|
return web3.eth.sendSignedTransaction(rawTx)
|
|
.then((result) => {
|
|
return result;
|
|
})
|
|
.catch((err) => {
|
|
throw err;
|
|
})
|
|
})
|
|
.catch((err) => {
|
|
throw err
|
|
})
|
|
}
|
|
|
|
export const getAccounts = async () => {
|
|
const web3 = await new Web3( "http://localhost:8545");
|
|
return web3.eth.getAccounts()
|
|
.then((result)=>{
|
|
console.log("all acounts is ", result)
|
|
})
|
|
.catch((err)=>{
|
|
throw err
|
|
})
|
|
}
|