public UncontrolledOutput(Amount amount, byte[] pkScript) : base(amount) { if (pkScript == null) { throw new ArgumentNullException(nameof(pkScript)); } PkScript = OutputScript.ParseScript(pkScript); }
public static UnspentOutput MarshalUnspentOutput(FundTransactionResponse.Types.PreviousOutput o) { var txHash = new Sha256Hash(o.TransactionHash.ToByteArray()); var outputIndex = o.OutputIndex; var amount = (Amount)o.Amount; var pkScript = OutputScript.ParseScript(o.PkScript.ToByteArray()); var seenTime = DateTimeOffsetExtras.FromUnixTimeSeconds(o.ReceiveTime); var isFromCoinbase = o.FromCoinbase; return(new UnspentOutput(txHash, outputIndex, amount, pkScript, seenTime, isFromCoinbase)); }
/// <summary> /// Extracts the public key hash from a raw p2pkh script /// </summary> /// <param name="rawPkScript"></param> /// <returns></returns> /// <exception cref="SigningException"></exception> private static byte[] GetPublicKeyHash(byte[] rawPkScript) { // Only support Secp256k1 signatures var outScript = OutputScript.ParseScript(rawPkScript); if (!(outScript is OutputScript.Secp256k1PubKeyHash parsedScript)) { throw new SigningException("Unsupported signature script type"); } return(parsedScript.Hash160); }
public async Task <Tuple <List <UnspentOutput>, Amount, OutputScript> > FundTransactionAsync( Account account, Amount targetAmount, int requiredConfirmations) { var client = WalletService.NewClient(_channel); var request = new FundTransactionRequest { Account = account.AccountNumber, TargetAmount = targetAmount, RequiredConfirmations = requiredConfirmations, IncludeImmatureCoinbases = false, IncludeChangeScript = true, }; var response = await client.FundTransactionAsync(request, cancellationToken : _tokenSource.Token); var outputs = response.SelectedOutputs.Select(MarshalUnspentOutput).ToList(); var total = (Amount)response.TotalAmount; var changeScript = (OutputScript)null; if (response.ChangePkScript?.Length != 0) { changeScript = OutputScript.ParseScript(response.ChangePkScript.ToByteArray()); } return(Tuple.Create(outputs, total, changeScript)); }