/// <summary> /// konstruktor wyliczający pewne zmienne z podanych argumentów /// </summary> /// <param name="addressBTC_Receiver">adres adresata</param> /// <param name="inputBTC">BTC wchodzące</param> /// <param name="outputBTC_Receiver">BTC dla adresata</param> /// <param name="inputTXhash">hashe transakcji, na podstawie których tworzona jest transakcja</param> /// <returns>nowa transakcja</returns> public Transaction createTransaction(string addressBTC_Receiver, int inputBTC, int outputBTC_Receiver, List<string> inputTXhash) { int outputBTC_Sender = inputBTC-outputBTC_Receiver; Transaction newTX = null; if (outputBTC_Sender>=0) { newTX = new Transaction(inputBTC, inputTXhash, outputBTC_Receiver, outputBTC_Sender, addressBTC_Receiver, this.address, this.publicKey); newTX.signature = getSignature(Base58CheckEncoding.DecodePlain(newTX.hashTX)); } return newTX; }
/// <summary> /// Weryfikacja podpisu cyfrowego transakcji /// </summary> /// <param name="TX">transakcja</param> /// <returns>true-pozytywna weryfikacja, false - negatywna</returns> public bool checkTransaction(Transaction TX) { byte[] publicKeySender = Base58CheckEncoding.DecodePlain(TX.publicKeySender); byte[] signature = Base58CheckEncoding.DecodePlain(TX.signature); byte[] TxDataToSign = Base58CheckEncoding.DecodePlain(TX.hashTX); return ECDSASigner.verifyData(publicKeySender, signature, TxDataToSign); }