Skip to content

Instantly share code, notes, and snippets.

@Sowmayjain
Created October 27, 2019 05:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Sowmayjain/f53504e23893feff23b35aa4170d33eb to your computer and use it in GitHub Desktop.
Save Sowmayjain/f53504e23893feff23b35aa4170d33eb to your computer and use it in GitHub Desktop.
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