Beispiel #1
0
        public async Task <IEthereumUser> AddAsyncCall(string login, string password, string firstName, string lastName,
                                                       string info)
        {
            var param = new
            {
                Login     = CastHelper.StringToBytes32(login),
                Password  = CastHelper.StringToBytes32(password),
                FirstName = CastHelper.ToUserNameType(firstName),
                LastName  = CastHelper.ToUserNameType(lastName),
                Info      = CastHelper.ToDescriptionType(info ?? ""),
            };

            // send call to get output value
            var result = await _contractService.AddAsyncCall(
                param.Login, param.Password, param.FirstName, param.LastName, param.Info);

            // send transaction & wait it to be mined
            var transactionHash = await _contractService.AddAsync(_walletAddress,
                                                                  param.Login, param.Password, param.FirstName, param.LastName, param.Info,
                                                                  _gas
                                                                  );

            var receipt = await _contractService.MineAndGetReceiptAsync(transactionHash);

            var user = await _contractService.GetAsyncCall(param.Login);

            return(user.ToReadable());
        }
Beispiel #2
0
        public static async Task DeployContract()
        {
            // 1. Unclock Account
            var unlockTime = new HexBigInteger(120);

            WriteLog($"Unlock account for {unlockTime.Value}s\n" +
                     $"  address: {EV.WalletAddress}\n" +
                     $"  pass: {EV.WalletPassword}\n\n");
            var unlockRes = await _web3.Personal.UnlockAccount.SendRequestAsync(
                EV.WalletAddress, EV.WalletPassword, unlockTime);

            // 2. Deploy contract
            // Get contract receipt & contractAddress, save contractAdress to file
            WriteLog("\nCreate transaction to deploy contract\n" +
                     $"  gas: {_gas.Value}\n" +
                     $"  library address: {EV.LibraryAddress}");

            var adminBytes = new
            {
                login     = CastHelper.StringToBytes32(admin[0]),
                password  = CastHelper.StringToBytes32(admin[1]),
                firstName = CastHelper.ToUserNameType(admin[2]),
                lastName  = CastHelper.ToUserNameType(admin[3]),
                info      = CastHelper.ToDescriptionType(admin[4]),
            };

            WriteLog("\n  Admin:\n" +
                     $"    login:    {admin[0]}\n" +
                     $"    password: {admin[1]}\n" +
                     $"    name:     {admin[2]} {admin[3]}\n" +
                     $"    info:     {admin[4]}");
            WriteLog("\n  . . . Getting hash . . .");

            var transactionHash =
                await UsersAndFilesService.DeployContractAsync(_web3,
                                                               EV.LibraryAddress,
                                                               EV.WalletAddress,
                                                               adminBytes.login,
                                                               adminBytes.password,
                                                               adminBytes.firstName,
                                                               adminBytes.lastName,
                                                               adminBytes.info,
                                                               _gas);

            WriteLog($"  hash: {transactionHash}");

            // 3. Mine transaction
            WriteLog("\nMine transaction\n" +
                     "  . . . Getting receipt . . .");
            var receipt = await UsersAndFilesService.MineAndGetReceiptAsync(_web3, transactionHash);

            WriteLog($"  gas used: {receipt.GasUsed.Value}");

            EV.ContractAddress = receipt.ContractAddress;
            File.WriteAllText(_output, receipt.ContractAddress);

            WriteLog("\n>>>\n" +
                     $">>> Contract Address: {receipt.ContractAddress}\n" +
                     ">>>");
        }
Beispiel #3
0
        public async Task <IEthereumFile> AddAsync(
            string login, string password,
            string type, string hash, long size, string name, string description, DateTime created)
        {
            var param = new
            {
                Login       = CastHelper.StringToBytes32(login),
                Password    = CastHelper.StringToBytes32(password),
                Mime        = CastHelper.StringToBytes32(type),
                Hash        = CastHelper.ToDescriptionType(hash),
                Size        = CastHelper.StringToBytes32(size.ToString()),
                Name        = CastHelper.ToFileNameType(name),
                Description = CastHelper.ToDescriptionType(description),
                Timestamp   = (int)((DateTimeOffset)created).ToUnixTimeSeconds()
            };

            // send call to get output value
            var response = await _contractService.AddFileAsyncCall(
                param.Login, param.Password,
                param.Mime, param.Hash, param.Size, param.Name, param.Description, param.Timestamp);

            // send transaction & wait it to be mined
            var transactionHash = await _contractService.AddFileAsync(
                _walletAddress,
                param.Login, param.Password,
                param.Mime, param.Hash, param.Size, param.Name, param.Description, param.Timestamp,
                _gas);

            var receipt = await _contractService.MineAndGetReceiptAsync(transactionHash);

            return(await GetAsyncCall(login, password, response.Fileindex));
        }
Beispiel #4
0
        public async Task <IEnumerable <BigInteger> > GetIdsAsyncCall(string ownerLogin, string ownerPassword)
        {
            var login    = CastHelper.StringToBytes32(ownerLogin);
            var password = CastHelper.StringToBytes32(ownerPassword);

            var ids = await _contractService.GetFileIdsAsyncCall(login, password);

            return(ids.ToArray());
        }
Beispiel #5
0
        public async Task <bool> DeleteAsync(string login, string password, BigInteger id)
        {
            var transactionHash = await _contractService.DeleteFileAsync(
                _walletAddress, CastHelper.StringToBytes32(login), CastHelper.StringToBytes32(password), id, _gas);

            var receipt = await _contractService.MineAndGetReceiptAsync(transactionHash);

            return(true);
        }
Beispiel #6
0
        public void CastStringToBytes32()
        {
            // longer then 32 bytes : 245 bytes
            var result = CastHelper.StringToBytes32(LongString);

            Assert.Equal(32, result.Length);

            // shorter then 32 bytes : 7 bytes
            result = CastHelper.StringToBytes32(ShortString);
            Assert.Equal(32, result.Length);
        }
Beispiel #7
0
        public async Task <IEthereumFile> GetAsyncCall(string ownerLogin, string ownerPassword, BigInteger id)
        {
            var login    = CastHelper.StringToBytes32(ownerLogin);
            var password = CastHelper.StringToBytes32(ownerPassword);

            var part1 = await _contractService.GetFilePart1AsyncCall(login, password, id);

            var part2 = await _contractService.GetFilePart2AsyncCall(login, password, id);

            return(new ReadableIpfsFileDto(id, part1, part2));
        }
Beispiel #8
0
        public async Task <bool> SetInfoAsync(string login, string password, string info, DateTime now)
        {
            var param = new
            {
                Login    = CastHelper.StringToBytes32(login),
                Password = CastHelper.StringToBytes32(password),
                Info     = CastHelper.ToDescriptionType(info),
            };

            var transactionHash = await _contractService.SetInfoAsync(
                _walletAddress, param.Login, param.Password, param.Info, _gas);

            var receipt = await _contractService.MineAndGetReceiptAsync(transactionHash);

            return(true);
        }
Beispiel #9
0
        public async Task <bool> IsAuthenticatedAsyncCall(string login, string password)
        {
            var byteLogin    = CastHelper.StringToBytes32(login);
            var bytePassword = CastHelper.StringToBytes32(password);

            try
            {
                var responce = await _contractService.GetFileIdsAsyncCall(byteLogin, bytePassword);

                return(true);
            }
            catch (Exception e)
            {
                return(false);
            }
        }
Beispiel #10
0
        public async Task <bool> SetNameAsync(string login, string password, string firstName, string lastName,
                                              DateTime now)
        {
            var param = new
            {
                Login     = CastHelper.StringToBytes32(login),
                Password  = CastHelper.StringToBytes32(password),
                FirstName = CastHelper.ToUserNameType(firstName),
                LastName  = CastHelper.ToUserNameType(lastName),
            };

            var transactionHash = await _contractService.SetNameAsync(
                _walletAddress, param.Login, param.Password, param.FirstName, param.LastName, _gas);

            var receipt = await _contractService.MineAndGetReceiptAsync(transactionHash);

            return(true);
        }
Beispiel #11
0
        public async Task <bool> SetDescriptionAsync(
            string login, string password, BigInteger id, string newDescription, DateTime modified)
        {
            var param = new
            {
                Login       = CastHelper.StringToBytes32(login),
                Password    = CastHelper.StringToBytes32(password),
                Description = CastHelper.ToDescriptionType(newDescription),
                Timestamp   = (int)((DateTimeOffset)modified).ToUnixTimeSeconds()
            };

            var transactionHash = await _contractService.SetFileDescriptionAsync(
                _walletAddress, param.Login, param.Password, id, param.Description, param.Timestamp, _gas);

            var receipt = await _contractService.MineAndGetReceiptAsync(transactionHash);

            return(true);
        }
Beispiel #12
0
        public void CastBackForward()
        {
            var bytes = CastHelper.StringToBytes32(LongString);

            Assert.StartsWith(CastHelper.Bytes32ToString(bytes), LongString);

            var bytes3 = CastHelper.StringToBytes32ArrayOf(3, LongString);

            Assert.StartsWith(CastHelper.Bytes32ArrayToString(bytes3), LongString);

            var bytes6 = CastHelper.StringToBytes32ArrayOf(6, LongString);

            Assert.StartsWith(CastHelper.Bytes32ArrayToString(bytes6), LongString);

            var bytesOrigin = new byte[]
            {
                12, 16, 125, 13, 9, 10, 12, 16, 125, 13, 9, 10, 12, 16, 125, 13, 9, 10, 12, 16, 125, 13, 9, 10, 12, 16,
                125, 13, 9, 10, 9, 10
            };
            var stringFromBytes = CastHelper.Bytes32ToString(bytesOrigin);
            var doubleCasting   = CastHelper.StringToBytes32(stringFromBytes);

            Assert.Equal(bytesOrigin, doubleCasting);
        }
Beispiel #13
0
        public async Task <IEthereumUser> GetAsyncCall(string login)
        {
            var user = await _contractService.GetAsyncCall(CastHelper.StringToBytes32(login));

            return(user.ToReadable());
        }