Example #1
0
        public static void ParseVET(string hexRawTxn)
        {
            var rawTransaction = RLPUtils.Decode(hexRawTxn);
            var rawClauses     = rawTransaction.Clauses;
            int index          = 1;

            WriteLine("----------------------------------------------------------");
            WriteLine("ChainTag:" + rawTransaction.ChainTag);
            WriteLine("BlockRef:" + ByteUtils.ToHexString(rawTransaction.BlockRef, Prefix.ZeroLowerX));
            WriteLine("Expiration:" + ByteUtils.BytesToBigInt(rawTransaction.Expiration));
            WriteLine("Gas:" + ByteUtils.BytesToBigInt(rawTransaction.Gas).ToString());
            foreach (var rawClause in rawClauses)
            {
                var addressBytes = rawClause.To;
                var valueBytes   = rawClause.Value;
                var amount       = Amount.VET();
                amount.SetHexAmount(ByteUtils.ToHexString(valueBytes, Prefix.ZeroLowerX));
                WriteLine("No." + index);
                WriteLine("Address:" + ByteUtils.ToHexString(addressBytes, Prefix.ZeroLowerX));
                WriteLine("Value:" + amount.Value);
                WriteLine("-----");
                index++;
            }
            WriteLine("----------------------------------------------------------");
        }
Example #2
0
 public static ECKeyPair Create(byte[] privateKey)
 {
     if (privateKey.Length == PRIVATE_KEY_SIZE)
     {
         return(Create(ByteUtils.BytesToBigInt(privateKey)));
     }
     else
     {
         throw new ArgumentException("Invalid privatekey size", nameof(privateKey));
     }
 }
Example #3
0
        private static void ParseERC20(string hexRawTxn)
        {
            var rawTransaction = RLPUtils.Decode(hexRawTxn);
            var rawClauses     = rawTransaction.Clauses;
            int index          = 1;

            WriteLine("----------------------------------------------------------");
            WriteLine("ChainTag:" + rawTransaction.ChainTag);
            WriteLine("BlockRef:" + ByteUtils.ToHexString(rawTransaction.BlockRef, Prefix.ZeroLowerX));
            WriteLine("Expiration:" + ByteUtils.BytesToBigInt(rawTransaction.Expiration));
            WriteLine("Gas:" + ByteUtils.BytesToBigInt(rawTransaction.Gas));
            foreach (var rawClause in rawClauses)
            {
                WriteLine("No." + index);
                var addressBytes = rawClause.To;
                var dataBytes    = rawClause.Data;
                if (dataBytes.Length != 68)
                {
                    throw new Exception("The data length is not 68 bytes");
                }
                var methodId = new byte[4];
                var address  = new byte[20];
                var value    = new byte[32];
                Array.Copy(dataBytes, 0, methodId, 0, 4);
                Array.Copy(dataBytes, 16, address, 0, 20);
                Array.Copy(dataBytes, 36, value, 0, 32);
                string methodIdHex      = ByteUtils.ToHexString(methodId, Prefix.ZeroLowerX);
                var    contract         = new ERC20Contract();
                var    abiDefinition    = contract.FindAbiDefinition("transfer");
                String transferMethodId = "0x" + abiDefinition.GetHexMethodCodeNoPrefix();
                if (!methodIdHex.Equals(transferMethodId, StringComparison.OrdinalIgnoreCase))
                {
                    throw new Exception("the method id is not transfer");
                }
                var erc2Amount = Amount.VTHO();
                erc2Amount.SetHexAmount(ByteUtils.ToHexString(value, Prefix.ZeroLowerX));
                WriteLine("ERC20 Contract:" + ByteUtils.ToHexString(addressBytes, Prefix.ZeroLowerX));
                WriteLine("To Address:" + ByteUtils.ToHexString(address, Prefix.ZeroLowerX));
                WriteLine("To Value:" + erc2Amount.Value);
                WriteLine("-----");
                index++;
            }
            WriteLine("----------------------------------------------------------");
        }
Example #4
0
 public ECDSASignature(byte[] rBytes, byte[] sBytes)
 {
     R = ByteUtils.BytesToBigInt(rBytes);
     S = ByteUtils.BytesToBigInt(sBytes);
 }