private async void Form1_Load(object sender, EventArgs e)
        {
            var connection = new HubConnectionBuilder()
                             .WithUrl("http://localhost:5000/main")
                             .Build();

            connection.On <int, int, BigInteger>("RecieveQAY", async(q, a, ys) =>
            {
                var xc  = _keyService.GetX(q);
                var yc  = _keyService.GetY(xc, q, a);
                var key = _keyService.GetKey(ys, xc, q);

                await connection.InvokeAsync("RecieveY", yc);

                textBox1.Invoke(new Action(() => textBox1.AppendText($"Generated key: {key}")));
            });

            try
            {
                await connection.StartAsync();

                await connection.InvokeAsync("GetAQY");
            }
            catch (Exception ex)
            {
                textBox1.AppendText($"Failed to connect: {ex.Message}");
            }
        }
Exemple #2
0
        public override async Task Go()
        {
            var entity = await _entityStore.GetEntity(Data.EntityId, false);

            if (entity == null)
            {
                return;
            }

            var actorId = entity.Data["actor"].Concat(entity.Data["attributedTo"]).FirstOrDefault();

            if (actorId == null)
            {
                return;                  // ???
            }
            var key = await _keyService.GetKey(actorId.Id);

            var doc = await _entryGenerator.Build(entity.Data);

            var envelope = new MagicEnvelope(doc.ToString(), "application/atom+xml", new MagicKey(key.PrivateKey));
            var hc       = new HttpClient();

            var content  = new StringContent(envelope.Build().ToString(), Encoding.UTF8, "application/magic-envelope+xml");
            var response = await hc.PostAsync(Data.SalmonUrl, content);

            if (((int)response.StatusCode) / 100 == 5)
            {
                throw new Exception("try later");
            }
        }
Exemple #3
0
        public async void InitializeEMoney()
        {
            keyService = new KeyService("1234");
            try
            {
                if (!keyService.HasSetupKey())
                {
                    var savekeyForm = new SaveKeyForm();
                    savekeyForm.ShowDialog();
                }
            }
            catch (Exception)
            {
                MessageBox.Show("ไม่ค้นพบกุญแจ");
            }

            saveKey = keyService.GetKey();
            if (saveKey == null)
            {
                Environment.Exit(1);
            }
            privateKey = saveKey.SecretKey;
            publicKey  = saveKey.PublicKeyWif;

            publickeylabel.Text = this.publicKey;

            timer          = new System.Timers.Timer();
            timer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
            timer.Interval = 60000;
            timer.Enabled  = true;

            LoadData();
        }
 private void InitializeMoney()
 {
     keyService = new KeyService("1234");
     saveKey    = keyService.GetKey();   //Prepare KeyPair of Sender
     api        = new DigibyteAPI(new APIOptions {
         BaseURL = Program.InsightAPI
     });
     LoadData();
 }
 private void button2_Click(object sender, EventArgs e)
 {
     if (keyService.GetKey() == null)
     {
         Environment.Exit(0);
     }
     else
     {
         this.Close();
     }
 }
        private void InitializeMoney()
        {
            keyService = new KeyService("1234");
            saveKey    = keyService.GetKey();   //Prepare KeyPair of Sender
            api        = new DigibyteAPI(new APIOptions {
                BaseURL = Program.InsightAPI
            });

            t = new Thread(new ThreadStart(SendDGB));
            t.Start();
        }
Exemple #7
0
            public async Task Render(HttpRequest request, HttpResponse response, APEntity toRender)
            {
                response.ContentType = "application/atom+xml";

                var user = await _entityStore.GetEntity(toRender.Data["actor"].Single().Id, false);

                var key = await _keyService.GetKey(user.Id);

                var magicKey = key != null ? new MagicKey(key.PrivateKey) : MagicKey.Generate();

                var doc = await _entryGenerator.Build(toRender.Data);

                var enveloped = new MagicEnvelope(doc.ToString(), "application/atom+xml", magicKey);
                await response.WriteAsync(enveloped.Build().ToString());
            }
Exemple #8
0
        public async void InitializeEMoney()
        {
            keyService = new KeyService("1234");
            var saveKey = keyService.GetKey();

            if (saveKey == null)
            {
                Environment.Exit(1);
            }
            privateKey = saveKey.SecretKey;

            publicKey = saveKey.PublicKeyWif;

            publickeylabel.Text = publicKey;

            decimal balance = parentForm.DgbBalance;

            DgbBalancelabel.Text = balance.ToString();
        }
Exemple #9
0
        public async Task <ASObject> BuildFakeObject(APEntity entity, string fragment)
        {
            if (!EntityData.IsActor(entity.Data))
            {
                return(null);
            }

            if (fragment == "key")
            {
                var key = await _keyService.GetKey(entity.Id);

                var salm    = new MagicKey(key.PrivateKey);
                var pemData = salm.AsPEM;

                var keyObj = new ASObject();
                keyObj.Replace("owner", ASTerm.MakeId(entity.Id));
                keyObj.Replace("publicKeyPem", ASTerm.MakePrimitive(pemData));
                keyObj.Id = $"{entity.Id}#key";
                return(keyObj);
            }
            else if (fragment == "endpoints")
            {
                var data = entity.Data;
                var idu  = new Uri(entity.Id);

                var basePath = $"{idu.Scheme}://{idu.Host}{(idu.IsDefaultPort?"":$":{idu.Port}")}{_configuration.BasePath}";

                var endpoints = new ASObject();
                endpoints.Replace("oauthAuthorizationEndpoint", ASTerm.MakeId(basePath + "oauth/authorize?id=" + Uri.EscapeDataString(entity.Id)));
                endpoints.Replace("oauthTokenEndpoint", ASTerm.MakeId(basePath + "oauth/token?"));
                endpoints.Replace("settingsEndpoint", ASTerm.MakeId(basePath + "settings/auth"));
                endpoints.Replace("uploadMedia", data["outbox"].Single());
                endpoints.Replace("relevantObjects", ASTerm.MakeId(basePath + "settings/relevant"));
                endpoints.Replace("proxyUrl", ASTerm.MakeId(basePath + "auth/proxy"));
                endpoints.Replace("jwks", ASTerm.MakeId(basePath + "auth/jwks?id=" + Uri.EscapeDataString(entity.Id)));
                endpoints.Replace("sharedInbox", ASTerm.MakeId(basePath + "auth/sharedInbox"));
                endpoints.Replace("search", ASTerm.MakeId(basePath + "auth/search"));
                endpoints.Id = entity.Id + "#endpoints";
                return(endpoints);
            }

            return(null);
        }
Exemple #10
0
        private async Task <string> _buildSignature(string ownerId, HttpRequestMessage message)
        {
            string[] headers = new string[] { "(request-target)", "date", "authorization", "content-type" };
            var      toSign  = new StringBuilder();

            foreach (var header in headers)
            {
                if (header == "(request-target)")
                {
                    toSign.Append($"{header}: {message.Method.Method.ToLower()} {message.RequestUri.PathAndQuery}\n");
                }
                else
                {
                    if (message.Headers.TryGetValues(header, out var vals))
                    {
                        toSign.Append($"{header}: {string.Join(", ", vals)}\n");
                    }
                    else if (message.Content.Headers.TryGetValues(header, out var cvals))
                    {
                        toSign.Append($"{header}: {string.Join(", ", cvals)}\n");
                    }
                    else
                    {
                        toSign.Append($"{header}: \n");
                    }
                }
            }

            toSign.Remove(toSign.Length - 1, 1);

            var key = await _keyService.GetKey(ownerId);

            var magic  = new MagicKey(key.PrivateKey);
            var signed = Convert.ToBase64String(magic.Sign(Encoding.UTF8.GetBytes(toSign.ToString())));

            var ownerOrigin = new Uri(ownerId);
            var keyId       = ownerId + "#key";

            return($"keyId=\"{keyId}\",algorithm=\"rsa-sha256\",headers=\"{string.Join(" ", headers)}\",signature=\"{signed}\"");
        }
Exemple #11
0
        public async Task <IActionResult> WebFinger(string resource)
        {
            if (!resource.StartsWith("acct:"))
            {
                return(Unauthorized());
            }

            var username = resource.Split(':')[1].Split('@');

            var items = await _relevantEntities.FindEntitiesWithPreferredUsername(username[0]);

            if (items.Count == 0)
            {
                return(NotFound());
            }

            var item = items.First();

            var result = new WebfingerResult()
            {
                subject = resource,
                aliases = new List <string>()
                {
                    item.Id
                },
                links = new List <WebfingerLink>
                {
                    new WebfingerLink
                    {
                        rel  = "http://webfinger.net/rel/profile-page",
                        type = "text/html",
                        href = item.Id
                    },

                    new WebfingerLink
                    {
                        rel  = "self",
                        type = "application/activity+json",
                        href = item.Id
                    },

                    new WebfingerLink
                    {
                        rel  = "self",
                        type = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"",
                        href = item.Id
                    },

                    new WebfingerLink
                    {
                        rel      = "http://ostatus.org/schema/1.0/subscribe",
                        template = item.Id + "#id=%40{uri}"
                    }
                }
            };

            var salmon = await _keyService.GetKey(item.Id);

            var magicKey = new MagicKey(salmon.PrivateKey);

            result.links.Add(new WebfingerLink
            {
                rel  = "magic-public-key",
                href = "data:application/magic-public-key," + magicKey.PublicKey
            });

            return(Json(result));
        }
Exemple #12
0
        private static byte[] Decrypt(byte[] data, int index)
        {
            byte keyNameSize = data[1];

            if (keyNameSize == 0 || keyNameSize != 8)
            {
                throw new Exception("keyNameSize == 0 || keyNameSize != 8");
            }

            byte[] keyNameBytes = new byte[keyNameSize];
            Array.Copy(data, 2, keyNameBytes, 0, keyNameSize);

            ulong keyName = BitConverter.ToUInt64(keyNameBytes, 0);

            byte IVSize = data[keyNameSize + 2];

            if (IVSize != 4 || IVSize > 0x10)
            {
                throw new Exception("IVSize != 4 || IVSize > 0x10");
            }

            byte[] IVpart = new byte[IVSize];
            Array.Copy(data, keyNameSize + 3, IVpart, 0, IVSize);

            if (data.Length < IVSize + keyNameSize + 4)
            {
                throw new Exception("data.Length < IVSize + keyNameSize + 4");
            }

            int dataOffset = keyNameSize + IVSize + 3;

            byte encType = data[dataOffset];

            if (encType != 'S' && encType != 'A') // 'S' or 'A'
            {
                throw new Exception("encType != ENCRYPTION_SALSA20 && encType != ENCRYPTION_ARC4");
            }

            dataOffset++;

            // expand to 8 bytes
            byte[] IV = new byte[8];
            Array.Copy(IVpart, IV, IVpart.Length);

            // magic
            for (int shift = 0, i = 0; i < sizeof(int); shift += 8, i++)
            {
                IV[i] ^= (byte)((index >> shift) & 0xFF);
            }

            byte[] key = KeyService.GetKey(keyName);

            if (key == null)
            {
                throw new KeyNotFoundException("Unknown keyname " + keyName.ToString("X16"));
            }

            if (encType == 'S')
            {
                ICryptoTransform decryptor = KeyService.SalsaInstance.CreateDecryptor(key, IV);

                return(decryptor.TransformFinalBlock(data, dataOffset, data.Length - dataOffset));
            }
            else
            {
                // ARC4 ?
                throw new Exception("encType ENCRYPTION_ARC4 not implemented");
            }
        }
Exemple #13
0
        static async Task Main()
        {
            //Network network = NBitcoin.Altcoins.Digibyte.Instance.Mainnet;
            //// D9vDi1QLMwQk7J5YhUUzdys8sBbVtVVnpC
            //BitcoinSecret creator = new BitcoinSecret("KxGZX6nqKqQ7ZdFzyQMwSDMAsW1cEUZ3BRXgWQqEDNKMJhwxKMTp", network);

            //WalletContract mycontract = null;
            ////var contract = Encoding.UTF8.GetBytes("PIGER");
            ////var token = Encoding.UTF8.GetBytes("PIG");
            ////mycontract = await contractService.CreateContract(creator, contract, token, 100000m, 2);
            ////Console.WriteLine(mycontract.ID);
            ////Console.WriteLine("Contract is issued: " + mycontract.ID);
            //var api = new DigibyteAPI(new APIOptions { BaseURL = "https://digibyteblockexplorer.com" });
            //var contractService = new ContractService(@"tsc-wallet.db", api);
            //mycontract = await contractService.FindContract("3ecb54e7c2551f27cf5944e386f05b27e1f0e4d7222d2cb2e8e784ef6560e30f");
            //var walletService = contractService.CreateWalletService(mycontract, creator);
            //var ledger1 = walletService.CreateLedger(OperationCode.Issue);
            //await walletService.BroadcastLedger(ledger1);

            //Console.WriteLine(ledger1.TxId);
            //Console.ReadLine();
            // D5AFMqnpcmFh9GyC8UcPCMupStiAN3jMwX
            //BitcoinSecret user = new BitcoinSecret("L3DYWvGyVZuFiqEMDRgBuRJKvutssRczXmTxxUA9piJkq3LSQZAn", network);
            //var contractService = new ContractService(@"tsc-wallet.db", api);
            //WalletContract mycontract = null;
            //mycontract = await contractService.FindContract("165dc1f670fb2c89046f47de718c4818d6c47fefa3ba152ed914fd82ae7b29f1");
            //if (mycontract == null)
            //keyService = new KeyService("1234");
            //var result = keyService.ParseSeed("นิ้ว ร่วง สมัย ทักษะ กวาด กว่า แอร์ น้ําใจ ล่ะ หมวย ทูล เลิศ ดาว สมรส เจอร์");
            //if (result != null)
            //{
            //    Console.WriteLine(result.Seed + " and " + result.SecretKeyWif);
            //    currentKeyPair = result;
            //    keyService.SaveKey(currentKeyPair);
            //}
            //else
            //{
            //    Console.WriteLine("Retry");
            //}

            //contractService = new ContractService(@"tsc-wallet.db", new DigibyteAPI(new APIOptions() { BaseURL = "https://digibyteblockexplorer.com" }));   //รุบุที่อยู่รหัสสัญญา

            //var walletContract = await contractService.FindContract("165dc1f670fb2c89046f47de718c4818d6c47fefa3ba152ed914fd82ae7b29f1"); //เตรียมรหัสสัญญา

            //string _contract = "165dc1f670fb2c89046f47de718c4818d6c47fefa3ba152ed914fd82ae7b29f1";
            //mycontracts = contractService.FindLocalContract();
            //foreach(var contract in mycontracts)
            //{
            //    if(contract.ID == _contract)
            //    {
            //        Console.WriteLine("seen!!");
            //        continue;
            //    }
            //}


            //string combildtext = "abc?def;ghi";
            //string combildtext = "abc?def";
            //string combildtext = "abc;ghi";
            //string combildtext = "abc";
            //int point1 = combildtext.IndexOf('?');
            //int point2 = combildtext.IndexOf(';');

            //string publickey = "";
            //string amount = "";
            //string contract = "";
            ////Console.WriteLine(point1+"\n"+ point2);
            //if (point1 != -1 && point2 != -1)
            //{
            //    publickey = combildtext.Substring(0, point1);
            //    amount = combildtext.Substring(point1 + 1, point2 - (point1 + 1));
            //    contract = combildtext.Substring(point2 + 1);
            //}
            //else if (point1 != -1 && point2 == -1)
            //{
            //    publickey = combildtext.Substring(0, point1);
            //    amount = combildtext.Substring(point1 + 1);
            //}
            //else if (point1 == -1 && point2 != -1)
            //{
            //    publickey = combildtext.Substring(0, point2);
            //    contract = combildtext.Substring(point2 + 1);
            //}
            //else
            //{
            //    publickey = combildtext.Substring(0);
            //}
            //Console.WriteLine(publickey + "\n" + amount + "\n" + contract);

            //try
            //{
            //    keyService = new KeyService("12341");
            //    var key = keyService.GetKey();
            //}
            //catch
            //{

            //}
            keyService = new KeyService("1234");
            var savedKey = keyService.GetKey();

            //privateKey = savedKey.SecretKey;
            //PubkeyHash = savedKey.PublicKey.Hash.ToBytes();

            //Console.WriteLine(savedKey.SecretKey);



            contactService = new ContactService();
            //contractService = new ContractService(@"tsc-wallet.db", new DigibyteAPI(new APIOptions() { BaseURL = "https://digibyteblockexplorer.com" }));   //รุบุที่อยู่รหัสสัญญา
            contractService = new ContractService(@"tsc-wallet.db", new DigibyteAPI(new APIOptions()
            {
                BaseURL = "https://explorer.thaismartcontract.com"
            }));
            Network       network     = NBitcoin.Altcoins.Digibyte.Instance.Mainnet;
            BitcoinSecret creator     = new BitcoinSecret("L3DYWvGyVZuFiqEMDRgBuRJKvutssRczXmTxxUA9piJkq3LSQZAn", network);
            var           mycontracts = await contractService.FindContract("19d625fff665bb2a8ffae5b0b960113ee5b98fd23fb4fca2c95d1c1380ebfaa3");

            var walletService = contractService.CreateWalletService(mycontracts, creator);
            var ledger1       = walletService.CreateLedger(OperationCode.Issue);
            await walletService.BroadcastLedger(ledger1);

            Console.Write(ledger1.TxId);


            //var a = new DigibyteAPI(new APIOptions() { BaseURL = "https://explorer.thaismartcontract.com" });
            //var b = await a.GetBlockHeight("8836df00d125574303418e44ce0fe6316e54cfbf15799fc79a68c47171188ffd");
            //var c = await a.GetSync();

            //Console.WriteLine(b);
            //Console.WriteLine(c.blockChainHeight);



            //try
            //{
            //    System.Net.WebClient client = new System.Net.WebClient();
            //    string result = client.DownloadString("http://172.16.195.8:3000/api/sync");
            //    Console.WriteLine("Connect");
            //}
            //catch (System.Net.WebException ex)
            //{
            //    //do something here to make the site unusable, e.g:
            //    Console.WriteLine("Disconnect");

            //}
            //try
            //{
            //    using (var client = new TcpClient("172.16.195.8", 3000))
            //        Console.WriteLine("Connected");
            //}
            //catch (SocketException ex)
            //{
            //    Console.WriteLine("DisConnected");
            //}


            //mycontracts = contractService.FindLocalContract();



            //if (mywalletServices != null && mywalletServices.Count() > 0)
            //{
            //    foreach (var service in mywalletServices)
            //    {
            //        if (await service.IsNewTransactionAvailable())
            //            isUpdated = true;
            //    }
            //}
            //else
            //{
            //    isUpdated = true;
            //}

            //if (isUpdated)
            //{
            //    mywalletServices.Clear();
            //    myaccountServices.Clear();
            //    myAccounts.Clear();
            //    mycontracts = contractService.FindLocalContract();
            //    foreach (var con in mycontracts)
            //    {
            //        mywalletServices.Add(contractService.CreateWalletService(con, privateKey));
            //    }

            //    foreach (var service in mywalletServices)
            //    {
            //        await service.Rescan(resetBit);
            //        myaccountServices.Add(service.GetAccountService());
            //    }
            //}

            //    foreach (var service in myaccountServices)
            //    {

            //        myAccounts.Add(service.GetAccount(privateKey.GetAddress()));
            //    }

            //    try
            //    {

            //        foreach (var account in myAccounts)
            //        {
            //            var currentContract = mycontracts.First(c => c.NameString == account.TokenName);
            //            string balance = account.Balance.ToString("N" + currentContract.NoOfDecimal.ToString());
            //            Console.WriteLine(balance);


            //        }
            //    }
            //    catch
            //    {

            //    }

            //}
            //    var allLedgers = mywalletServices.SelectMany(ws => ws.GetMyLedgers(limit: 5)).ToList();

            //    if (shownLedger != null)
            //    {
            //        if (shownLedger.TxId != allLedgers[0].TxId)
            //        {

            //        }
            //    }

            //    shownLedger = allLedgers[0];
            //    foreach (var ledger in allLedgers)
            //    {
            //        if (!ledger.TokenSenderHash.QuickCompare(PubkeyHash) && !ledger.TokenReceiverHash.QuickCompare(PubkeyHash))
            //        {
            //            continue;
            //        }

            //        if (ledger.Status != ProcessStatus.Processed)
            //        {
            //            continue;
            //        }

            //        var currentContract = mycontracts.First(c => c.TokenName.QuickCompare(ledger.TokenName));

            //    }

            //    resetBit = false;

            //    isUpdated = false;
            //}
            //catch (Exception e)
            //{
            //    //if (Program.CheckForInternetConnection())
            //    //{
            //    //    resetBit = true;
            //    //}
            //    //else
            //    //{
            //    //    Thread.Sleep(15000);
            //    //}
            //    //goto restart;



            //IsDone = true;



            //foreach (var service in myaccountServices)
            //{

            //    myAccounts.Add(service.GetAccount(privateKey.GetAddress()));
            //}
            //foreach (var account in myAccounts)
            //{
            //    var currentContract = mycontracts.First(c => c.NameString == account.TokenName);
            //    Console.WriteLine(account.Balance.ToString("N" + currentContract.NoOfDecimal.ToString()));
            //    Console.WriteLine(account.Balance);
            //}
            //var allLedgers = mywalletServices.SelectMany(ws => ws.GetMyLedgers(limit: 5)).ToList();
            //foreach (var ledger in allLedgers)
            //{
            //    Console.WriteLine(contactService.GetContact(ledger.TokenSenderHashHex));
            //}

            //var savedKey = keyService.GetKey();
            ////Console.WriteLine(savedKey.Seed);
            //privateKey = savedKey.SecretKey;

            //contractService = new ContractService(@"tsc-wallet.db", new DigibyteAPI(new APIOptions() { BaseURL = "https://digibyteblockexplorer.com" }));   //รุบุที่อยู่รหัสสัญญา
            //var walletContract = await contractService.FindContract("165dc1f670fb2c89046f47de718c4818d6c47fefa3ba152ed914fd82ae7b29f1"); //เตรียมรหัสสัญญา
            //var walletService = contractService.CreateWalletService(walletContract, privateKey);    //การเตรียมการใช้งาน
            //var pb = privateKey.GetAddress();
            // var skip = pageNo * pageSize;

            //mycontracts = contractService.FindLocalContract();
            //foreach (var con in mycontracts)
            //{
            //    mywalletServices.Add(contractService.CreateWalletService(con, privateKey));
            //}
            //contactService = new ContactService();
            //var allLedgers = mywalletServices.SelectMany(ws => ws.GetMyLedgers(limit: 5)).ToList();

            //var ledger2 = walletService.CreateLedger(OperationCode.Transfer, "D5AFMqnpcmFh9GyC8UcPCMupStiAN3jMwX", 500m);
            //await walletService.BroadcastLedger(ledger2, false);
            //Console.WriteLine(ledger2.TxId);
            //Console.WriteLine("Press enter to continue...");
            //Console.ReadLine();
            //await ownerWalletService.BroadcastLedger(ledger2, false);
            //allLedgers.ForEach(i => Console.Write("{0}\t", i));

            //var ledgers = walletService.GetLedgers(pb.Hash.ToString(), skip, pageSize);
            //ledgers.ForEach(i => Console.Write("{0}\t", i));
            //ledgers.ForEach(l => displayLedgers.Add(l.AsVieweable(contactService)));

            //Console.WriteLine(contactService.GetContact(allLedgers[0].TokenSenderHashHex));



            //WalletContract mycontract = null;
            //var contract = Encoding.UTF8.GetBytes("PIGER");
            //    var token = Encoding.UTF8.GetBytes("PIG");
            //mycontract = await contractService.CreateContract(creator, contract, token, 100000m, 2);
            //    Console.WriteLine(mycontract.ID);
            //Console.WriteLine("Contract is issued: " + mycontract.ID);



            //{
            //    var contract = Encoding.UTF8.GetBytes("SCIENCE");
            //    var token = Encoding.UTF8.GetBytes("SCI");
            //    mycontract = await contractService.CreateContract(creator, contract, token, 1000000m, 2);
            //    Console.WriteLine(mycontract.ID);
            //    Console.ReadLine();
            //}
            //{
            //    var contract = Encoding.UTF8.GetBytes("RMUTSB");
            //    var token = Encoding.UTF8.GetBytes("ITS");
            //    mycontract = await contractService.CreateContract(creator, contract, token, 1000m, 2);
            //    Console.WriteLine(mycontract.ID);
            //    Console.ReadLine();
            //}


            //WriteData<WalletContract>(mycontract);
            ////Console.WriteLine("Press enter to continue...");
            //Console.ReadLine();
            //var firstUser = creator;
            //var ownerWalletService = contractService.CreateWalletService(mycontract, firstUser);
            //await ownerWalletService.Rescan(false);
            //var secondUser = user;
            //var userWalletService = contractService.CreateWalletService(mycontract, secondUser);
            //await userWalletService.Rescan(false);

            /// validate if future fee is transfered to client or not


            //var ledger1 = ownerWalletService.CreateLedger(OperationCode.Issue);
            //await ownerWalletService.BroadcastLedger(ledger1, false);
            //Console.WriteLine(ledger1.TxId);
            //Console.WriteLine("Press enter to continue...");
            //Console.ReadLine();
            //var ledger2 = ownerWalletService.CreateLedger(OperationCode.Transfer, secondUser.GetAddress(), 1000m);
            //await ownerWalletService.BroadcastLedger(ledger2, false);
            //Console.WriteLine(ledger2.TxId);
            //Console.WriteLine("Press enter to continue...");
            //Console.ReadLine();

            //var ledger3 = userWalletService.CreateLedger(OperationCode.Transfer, firstUser.GetAddress(), 500m);
            //await userWalletService.BroadcastLedger(ledger3, false);
            //Console.WriteLine(ledger3.TxId);
            //Console.WriteLine("Press enter to continue...");
            //Console.ReadLine();


            //await userWalletService.Rescan(false);
            //Console.WriteLine("User Wallet");
            //var accountManager = userWalletService.GetAccountService();
            //var firstAccount = accountManager.GetAccount(firstUser);
            //var secondAccount = accountManager.GetAccount(secondUser);
            //Console.WriteLine(firstAccount);
            //Console.WriteLine(secondAccount);
            //Console.WriteLine("Owner Wallet");
            //await ownerWalletService.Rescan(false);
            //accountManager = ownerWalletService.GetAccountService();
            //firstAccount = accountManager.GetAccount(firstUser);
            //secondAccount = accountManager.GetAccount(secondUser);
            //Console.WriteLine(firstAccount);
            //Console.WriteLine(secondAccount);
            //Console.ReadLine();


            //testLedger = await walletService.WriteLedger(creator, creator.GetAddress(), testLedger);

            //var mycontract = contractService.CreateContract(creator, contract, token, 100000000m, 8);


            //var transferLedger = new Ledger()
            //{
            //    Operation = OperationCode.Transfer,
            //    Amount = 1000m
            //};

            //transferLedger = await walletService.WriteLedger(creator, user.GetAddress(), transferLedger);

            //var userWalletService = contractService.CreateWalletService(user);
            //await userWalletService.Rescan(true);
            //Console.WriteLine(mycontract);
            //var mycontract = contractService.FindContract("59b900e905aa60130eca5a4c6a49fc30d3767b90014acecebdb521e773e1b350");
        }