static void CreateTransaction(List <string> from, string to, int amount, string change, BlockChainClassLib.CommandProcessor cmdProc) { WalletLib.WalletEntry we; //build the transaction: BlockChainClassLib.Transaction t = new BlockChainClassLib.Transaction(); t.id = Guid.NewGuid(); foreach (string address in from) { we = cmdProc.Wallet_FindEntry(address); string publicKey = we.publicKey; string signature = cmdProc.SignAddress(address, t.id.ToString(), we.publicKey, we.privateKey); t.Inputs.Add(new BlockChainClassLib.Input(address, signature, publicKey)); } //add the primary payment address t.Outputs.Add(new BlockChainClassLib.Output(to, amount)); //add the address to collect change t.Outputs.Add(new BlockChainClassLib.Output(change, 0)); //sign the transaction we = cmdProc.Wallet_FindEntry(from[0]); t.PublicKey = we.publicKey; cmdProc.SignTransaction(t, we.publicKey, we.privateKey); //Instruct the command processor to submit the transaction cmdProc.Transfer(t); }
public void TestCommandLib_RLWE() { CryptoProvider.RLWE_Provider provider = new CryptoProvider.RLWE_Provider(); provider.GenerateKeyPair(); BlockChainClassLib.Transaction t = new BlockChainClassLib.Transaction(); t.id = Guid.NewGuid(); string publicKey = provider.ExportPublicKey(); string address = CryptoProvider.AddressEncoder.CreateAddress(publicKey); string signature = CryptoProvider.AddressEncoder.SignAddress(address, t.id.ToString(), provider); t.Inputs.Add(new BlockChainClassLib.Input(address, signature, publicKey)); t.Outputs.Add(new BlockChainClassLib.Output("paul", 1)); BlockChainClassLib.CommandProcessor cmdProc = new BlockChainClassLib.CommandProcessor("RLWE", "localhost", "12345"); //string json = Newtonsoft.Json.JsonConvert.SerializeObject(t); cmdProc.Transfer(t); cmdProc.mine(address); }