Created
October 27, 2019 05:52
-
-
Save Sowmayjain/f53504e23893feff23b35aa4170d33eb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var Tx = require('ethereumjs-tx').Transaction; | |
var Web3 = require('web3'); | |
var web3 = new Web3('https://mainnet.infura.io/e7110a9c35184df68d54b09f8a5f1199'); | |
const PRIVATE_KEY = Buffer.from('11986EC9BD99AD706D84A7A77760B4DE665571F39C4CFBFBAFBD9585A586A0C3', 'hex'); | |
const myAddress = "0xB7fA44c2E964B6EB24893f7082Ecc08c8d0c0F87"; | |
var registryAddress = "0x498b3bfabe9f73db90d252bcd4fa9548cd0fd981"; | |
var registryABI = [{"constant":true,"inputs":[{"name":"_logicAddress","type":"address"}],"name":"logic","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_logicAddress","type":"address"}],"name":"enableStaticLogic","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"logicProxies","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"logicProxiesStatic","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_currentOwner","type":"address"},{"name":"_nextOwner","type":"address"}],"name":"record","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_logicAddress","type":"address"}],"name":"enableLogic","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"build","outputs":[{"name":"proxy","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_userAddress","type":"address"}],"name":"setAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_logicAddress","type":"address"}],"name":"logicStatic","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_name","type":"string"}],"name":"getAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"proxies","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_logicAddress","type":"address"}],"name":"disableLogic","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"build","outputs":[{"name":"proxy","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"proxy","type":"address"}],"name":"Created","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"currentOwner","type":"address"},{"indexed":true,"name":"nextOwner","type":"address"},{"indexed":false,"name":"proxy","type":"address"}],"name":"LogRecord","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"logicAddress","type":"address"}],"name":"LogEnableStaticLogic","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"logicAddress","type":"address"}],"name":"LogEnableLogic","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"logicAddress","type":"address"}],"name":"LogDisableLogic","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"name","type":"string"},{"indexed":false,"name":"addr","type":"address"}],"name":"LogSetAddress","type":"event"}]; | |
// checks the tx count and increments by 1 | |
var txCount = await web3.eth.getTransactionCount(myAddress); | |
console.log(txCount); | |
// main function | |
async function buildWallet(_owner) { | |
// InstaDApp Registry Contract | |
var _contract = new web3.eth.Contract(registryABI, registryAddress); | |
// transaction data | |
const txData = _contract.methods.build(_owner).encodeABI(); | |
console.log(txData); | |
// transaction to be sent | |
const rawTransaction = new Tx({ | |
from: myAddress, | |
to: registryAddress, | |
data: txData, | |
gasLimit: web3.utils.toHex(700000), | |
gasPrice: web3.utils.toHex(web3.utils.toWei('2.1', 'gwei')), | |
nonce: txCount | |
}); | |
// sign private key | |
rawTransaction.sign( PRIVATE_KEY); | |
// serialize tx | |
const serializedTransaction = await rawTransaction.serialize(); | |
console.group(serializedTransaction); | |
var txReceipt = await web3.eth.sendSignedTransaction('0x' + serializedTransaction.toString('hex')).catch(error => console.log(error)); | |
console.log(txReceipt); | |
} | |
buildWallet("0x863273452084d25969f9a8A2b17E7424Fa793b8F"); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment