public byte[][] GetRlpDataElements() { return(new[] { RLP.EncodeByte((byte)chainTag), RLP.EncodeElement(blockRef.ToBigEndianBytes().TrimLeading()), RLP.EncodeElement(((long)expiration).ToBytesForRLPEncoding().TrimLeading()), RLP.EncodeList(clauses.Select(c => c.RLPData).ToArray()), RLP.EncodeByte(gasPriceCoef), RLP.EncodeElement(gas.ToBigEndianBytes().TrimLeading()), RLP.EncodeElement(dependsOn == "" ? null : dependsOn?.HexToByteArray().TrimLeading()), RLP.EncodeElement(nonce.ToBigEndianBytes().TrimLeading()), Reserved, RLP.EncodeElement(signature?.HexToByteArray()) }); }
public byte[] BuildRLPEncoded(bool raw) { byte[] nonce = null; if (this.nonce == null || this.nonce.Length == 1 && this.nonce[0] == 0) { nonce = RLP.EncodeElement(null); } else { nonce = RLP.EncodeElement(this.nonce); } var gasPrice = RLP.EncodeElement(this.gasPrice); var gasLimit = RLP.EncodeElement(this.gasLimit); var receiveAddress = RLP.EncodeElement(this.receiveAddress); var value = RLP.EncodeElement(this.value); var data = RLP.EncodeElement(this.data); if (raw) { return(RLP.EncodeList(nonce, gasPrice, gasLimit, receiveAddress, value, data)); } byte[] v, r, s; if (signature != null) { v = RLP.EncodeByte(signature.V); r = RLP.EncodeElement(signature.R.ToByteArrayUnsigned()); s = RLP.EncodeElement(signature.S.ToByteArrayUnsigned()); } else { v = RLP.EncodeElement(EMPTY_BYTE_ARRAY); r = RLP.EncodeElement(EMPTY_BYTE_ARRAY); s = RLP.EncodeElement(EMPTY_BYTE_ARRAY); } return(RLP.EncodeList(nonce, gasPrice, gasLimit, receiveAddress, value, data, v, r, s)); }