I try to create and sign a transaction using ethereumjs-tx
, as follows: (same code as in here, except the private key)
var Transaction = require('ethereumjs-tx')
var tx = new Transaction()
tx.nonce = 0
tx.gasPrice = 100
tx.gasLimit = 1000
tx.value = 0
tx.data = '0x7f4e616d65526567000000000000000000000000000000000000000000000000003057307f4e616d6552656700000000000000000000000000000000000000000000000000573360455760415160566000396000f20036602259604556330e0f600f5933ff33560f601e5960003356576000335700604158600035560f602b590033560f60365960003356573360003557600035335700'
var privateKey = new Buffer ('8ad6...........................................................', 'hex')
tx.sign(privateKey)
console.log("tx.from = "+tx.getSenderAddress().toString('hex'));
For privateKey
, the first argument I supply is the value of "ciphertext"
in my private key file (64 characters). However, in the last line, the address generated does not match my account's address. Am I doing something wrong?
My address is on testnet. Is this library only valid for the mainnet? I don't think so, moreover, I think private key files are interchangeable among the two networks, but I'm not sure.
Thanks for any help,
Update
According to this answer, the text I copy-pasted from the keystore file is not the private key, but its encrypted version with my passphrase. Decrypting it leads to the question How do I get the raw private key from my Mist keystore file?