Beispiel #1
0
        public async Task <string> Sign(string signerAddress, string message)
        {
            var converter = new Nethereum.Hex.HexConvertors.HexUTF8StringConvertor();
            var signature = await _web3.Eth.Sign.SendRequestAsync(signerAddress, converter.ConvertToHex(message));

            return(signature);
        }
        public async Task <ITransationData> PriKeyQueryAsync(string gethConnectionUrl, IndexDBContext dbContext, ITransationData transationData, string ID, Func <ITransationData, IndexDB.IndexDBs, ITransationData> requiredData)
        {
            string IdPhotoData = null;
            //从索引数据库拿到交易哈希列表字符串
            var dataIndex = await GetTxHashFormIndexDBAsnyc(dbContext, ID);

            //拆分成交易哈希字符串数字
            string[] TxHashs = dataIndex.TransationHash.Trim().Split(' ');
            //使用交易哈希得到私链中保存的图片数据片段
            var web3 = new Web3Geth(gethConnectionUrl);

            foreach (var Txhash in TxHashs)
            {
                var result = await web3.Eth.Transactions
                             .GetTransactionByHash
                             .SendRequestAsync(Txhash);

                //拼接片段
                IdPhotoData += new Nethereum.Hex.HexConvertors
                               .HexUTF8StringConvertor()
                               .ConvertFromHex(result.Input);
            }
            //将数据转换成传输模型
            transationData.IdPhotoData = IdPhotoData;
            transationData.ID          = dataIndex.ID;
            transationData.Address     = dataIndex.AccountAddress;
            //如果没有委托,直接返回
            if (requiredData == null)
            {
                return(transationData);
            }
            //使用委托使得用户可以实现传输模型接口,自定义需要获得的数据
            transationData = requiredData.Invoke(transationData, dataIndex);
            return(transationData);
        }
Beispiel #3
0
        public static string bytesToString(string[] text)
        {
            string title = "";

            if (text == null)
            {
                return(title);
            }

            var hexConverter = new Nethereum.Hex.HexConvertors.HexUTF8StringConvertor();

            for (int i = 0; i < text.Length; i++)
            {
                title += hexConverter.ConvertFromHex(text[i]);
            }

            return(title);
        }
Beispiel #4
0
        public static List <string> stringToBytes(string text, int len = 0)
        {
            var bytesTitle = new List <string>();

            if (text == null)
            {
                text = "";
            }

            var hexConverter = new Nethereum.Hex.HexConvertors.HexUTF8StringConvertor();
            var data         = hexConverter.ConvertToHex(text);

            data = data.Substring(2);

            if (len <= 0)
            {
                bytesTitle.Add(data);
                return(bytesTitle);
            }

            var padding = (64 - (data.Length % 64));

            data = data.PadRight(data.Length + padding, '0');

            var             rx      = new Regex(".{1,64}");
            MatchCollection matches = rx.Matches(data);

            var matchEnumerator = matches.GetEnumerator();

            for (int i = 0; i < matches.Count; i++)
            {
                matchEnumerator.MoveNext();
                bytesTitle.Add("0x" + matchEnumerator.Current as string);
            }

            while (bytesTitle.Count < len)
            {
                bytesTitle.Add("0x00");
            }

            Debug.Log("bytesTitle: " + bytesTitle.ToArray());

            return(bytesTitle);
        }