public Transaction( byte[] nonce, byte[] gasPrice, byte[] gasLimit, byte[] receiveAddress, byte[] value, byte[] data, byte[] r, byte[] s, byte v) { this(nonce, gasPrice, gasLimit, receiveAddress, value, data); ECDSASignature signature = new ECDSASignature(new BigInteger(r), new BigInteger(s)); signature.v = v; this.signature = signature; }
public void rlpParse() { RLPList decodedTxList = RLP.decode2(rlpEncoded); RLPList transaction = (RLPList) decodedTxList.get(0); this.nonce = transaction.get(0).getRLPData(); this.gasPrice = transaction.get(1).getRLPData(); this.gasLimit = transaction.get(2).getRLPData(); this.receiveAddress = transaction.get(3).getRLPData(); this.value = transaction.get(4).getRLPData(); this.data = transaction.get(5).getRLPData(); // only parse signature in case tx is signed if (transaction.get(6).getRLPData() != null) { byte v = transaction.get(6).getRLPData()[0]; byte[] r = transaction.get(7).getRLPData(); byte[] s = transaction.get(8).getRLPData(); this.signature = ECDSASignature.fromComponents(r, s, v); } else { logger.debug("RLP encoded tx is not signed!"); } this.parsed = true; this.hash = getHash(); }