Exemple #1
0
 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));
        }