예제 #1
0
        private void button2_Click(object sender, EventArgs e)
        {
            CoinDatabaseDAO db        = new CoinDatabaseDAO();
            Wallet          newWallet = new Wallet();                                                                                                                             // Instancia uma WALLET nova

            AppOverviewWindow.walletID = db.GetRowCountSQL("C_WALLET") + 1;                                                                                                       // Muda o walletID para o ID da WALLET nova
            db.WriteToWalletSQL(StringUtil.GetStringFromPublicKey(newWallet.keyParameters), StringUtil.GetStringFromPrivateKey(newWallet.keyParameters), newWallet.GetBalance()); // Preenche o banco de dados com os dados da Wallet
            SetComboBox();                                                                                                                                                        // Atualiza o ComboBox
        }
예제 #2
0
        static void Main(string[] args)
        {
            // --- TESTE BANCO DE DADOS ---

            CoinDatabaseDAO db = new CoinDatabaseDAO();

            /*db.WriteToWalletSQL("batata", "hamburguer", "100.00");
            *  db.WriteToWalletSQL("batata", "hamburguer", "200.00");
            *  db.WriteToWalletSQL("batata", "hamburguer", "300.00");
            *  db.WriteToWalletSQL("batata", "hamburguer", "800.00");*/
            /*Debug.WriteLine(db.GetRowCountSQL("C_WALLET"));
             * String[] test = db.ReadFromWalletSQL(1);
             * Debug.WriteLine("TESTE CARTEIRA SQL");
             * Debug.WriteLine(test[0] + ", " + test[1] + ", " + test[2] + ", " + test[3]);
             *
             * Debug.WriteLine(db.DataExistsWalletSQL());*/

            /*// Lê os dados do banco de dados e preenche o UTXOs
             * if(db.GetRowCountSQL("C_UTXOS") > 0)
             * {
             *  for(int i = 0; i < db.GetRowCountSQL("C_UTXOS"); i++)
             *  {
             *      String[] recipiente = db.ReadFromUTXOSQL(i);
             *      TransactionOutput output = new TransactionOutput(recipiente[2], Convert.ToDouble(recipiente[3]), recipiente[4]);
             *      UTXOs.Add(recipiente[1] + "A", output);
             *  }
             * }*/



            // --------------------------------------


            // --- INICIALIZAÇÃO DO CONSOLE DEBUG ---

            // Instancia as novas carteiras

            Wallet coinbase = new Wallet();

            walletA = new Wallet();
            db.WriteToWalletSQL(StringUtil.GetStringFromPublicKey(walletA.keyParameters), StringUtil.GetStringFromPrivateKey(walletA.keyParameters), walletA.GetBalance());
            walletB = new Wallet();
            db.WriteToWalletSQL(StringUtil.GetStringFromPublicKey(walletB.keyParameters), StringUtil.GetStringFromPrivateKey(walletB.keyParameters), walletB.GetBalance());



            // Cria a transação GENESIS, na qual envia 100 CSharpCoins para a walletA:
            genesisTransaction = new Transaction(coinbase.keyParameters, walletA.keyParameters, 100, null);
            genesisTransaction.GenerateSignature(coinbase.keyParameters);                                                                                                                          // Assina manualmente a transação GENESIS
            genesisTransaction.transactionId = "0";                                                                                                                                                // Seta manualmente o ID de transação
            genesisTransaction.outputs.Add(new TransactionOutput(StringUtil.GetStringFromPublicKey(genesisTransaction.reciepient), genesisTransaction.value, genesisTransaction.transactionId));   // Manualmente adiciona as saídas da transação
            //UTXOs.Add(genesisTransaction.outputs[0].id, genesisTransaction.outputs[0]); // SUBSTITUÍDO PELO BANCO DE DADOS
            db.WriteToUTXOSQL(genesisTransaction.outputs[0].id, genesisTransaction.outputs[0].reciepient, genesisTransaction.outputs[0].value, genesisTransaction.outputs[0].parentTransactionId); // É importante armazenar a nossa primeira transação na lista de UTXOs

            // Lê os dados do banco de dados e preenche o UTXOs
            if (db.GetRowCountSQL("C_UTXOS") > 0)
            {
                for (int i = 1; i <= db.GetRowCountSQL("C_UTXOS"); i++)
                {
                    String[]          recipiente = db.ReadFromUTXOSQL(i);
                    TransactionOutput output     = new TransactionOutput(recipiente[2], Convert.ToDouble(recipiente[3]), recipiente[4]);
                    UTXOs.Add(recipiente[1], output);
                }
            }


            Debug.WriteLine("\n-------------------------------------------------------------------------------\n");

            Debug.WriteLine("#Criando e minerando o Bloco GENESIS...");
            Block genesis = new Block("0");

            genesis.AddTransaction(genesisTransaction);
            AddBlock(genesis);

            // TESTE
            Block block1 = new Block(genesis.hash);

            Debug.WriteLine("\nO saldo da carteiraA é: " + walletA.GetBalance());
            Debug.WriteLine("\nA carteiraA está tentando enviar fundos (40) para a carteiraB...");
            block1.AddTransaction(walletA.SendFunds(walletB.keyParameters, 40));
            AddBlock(block1);
            Debug.WriteLine("\nO saldo da carteiraA é: " + walletA.GetBalance());
            Debug.WriteLine("O saldo da carteiraB é: " + walletB.GetBalance());

            // TESTE
            Block block2 = new Block(block1.hash);

            Debug.WriteLine("\nA carteiraA está tentando enviar mais fundos (1000) do que se tem de saldo...");
            block2.AddTransaction(walletA.SendFunds(walletB.keyParameters, 1000));
            AddBlock(block2);
            Debug.WriteLine("\nO saldo da carteiraA é: " + walletA.GetBalance());
            Debug.WriteLine("O saldo da carteiraB é: " + walletB.GetBalance());

            // TESTE
            Block block3 = new Block(block2.hash);

            Debug.WriteLine("\nA carteiraB está tentando enviar fundos (20) para a carteiraA...");
            block1.AddTransaction(walletB.SendFunds(walletA.keyParameters, 20));
            AddBlock(block3);
            Debug.WriteLine("\nO saldo da carteiraA é: " + walletA.GetBalance());
            Debug.WriteLine("O saldo da carteiraB é: " + walletB.GetBalance());

            IsChainValid();

            Debug.WriteLine("\n-------------------------------------------------------------------------------\n");

            // --- INICIALIZAÇÃO DO WINDOWS FORMS ---

            Application.EnableVisualStyles();
            Application.Run(new AppMainWindow());

            // --------------------------------------
        }