Skip to content

Commit de310f4

Browse files
authored
Port stratis fixes for OP_RETURN in transaction building (#224)
* Add opreturn amounts from stratis fix * OP_RETURN fixes from stratis 3.0.8.0 release branch
1 parent ceea5a1 commit de310f4

3 files changed

Lines changed: 4 additions & 6 deletions

File tree

src/Features/Blockcore.Features.Wallet/Api/Models/RequestModels.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -321,8 +321,6 @@ public TxFeeEstimateRequest()
321321
/// recipient will receive in STRAT (or a sidechain coin). If the transaction was realized,
322322
/// both the values would be used to create the UTXOs for the transaction recipients.
323323
/// </summary>
324-
[Required(ErrorMessage = "A list of recipients is required.")]
325-
[MinLength(1)]
326324
public List<RecipientModel> Recipients { get; set; }
327325

328326
/// <summary>

src/Features/Blockcore.Features.Wallet/WalletTransactionHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ protected void AddCoins(TransactionBuildContext context)
304304

305305
// Get total spendable balance in the account.
306306
long balance = context.UnspentOutputs.Sum(t => t.Transaction.Amount);
307-
long totalToSend = context.Recipients.Sum(s => s.Amount);
307+
long totalToSend = context.Recipients.Sum(s => s.Amount) + (context.OpReturnAmount ?? Money.Zero);
308308
if (balance < totalToSend)
309309
throw new WalletException("Not enough funds.");
310310

src/Tests/Blockcore.Features.Wallet.Tests/WalletControllerTest.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1634,7 +1634,7 @@ public void BuildTransactionWithChangeAddressReturnsWalletBuildTransactionModel(
16341634
IActionResult result = controller.BuildTransaction(new BuildTransactionRequest
16351635
{
16361636
AccountName = "Account 0",
1637-
Recipients = new List<RecipientModel>(),
1637+
Recipients = new List<RecipientModel>() { new RecipientModel() { Amount = "1.0", DestinationAddress = new Key().PubKey.Hash.GetAddress(this.Network).ToString() } },
16381638
WalletName = walletName,
16391639
ChangeAddress = usedReceiveAddress.Address
16401640
});
@@ -1676,7 +1676,7 @@ public void BuildTransactionWithChangeAddressNotInWalletReturnsBadRequest()
16761676
IActionResult result = controller.BuildTransaction(new BuildTransactionRequest
16771677
{
16781678
AccountName = "Account 0",
1679-
Recipients = new List<RecipientModel>(),
1679+
Recipients = new List<RecipientModel>() { new RecipientModel() { Amount = "1.0", DestinationAddress = new Key().PubKey.Hash.GetAddress(this.Network).ToString() } },
16801680
WalletName = walletName,
16811681
ChangeAddress = addressNotInWallet.Address
16821682
});
@@ -1713,7 +1713,7 @@ public void BuildTransactionWithChangeAddressAccountNotInWalletReturnsBadRequest
17131713
IActionResult result = controller.BuildTransaction(new BuildTransactionRequest
17141714
{
17151715
AccountName = "Account 0",
1716-
Recipients = new List<RecipientModel>(),
1716+
Recipients = new List<RecipientModel>() { new RecipientModel() { Amount = "1.0", DestinationAddress = new Key().PubKey.Hash.GetAddress(this.Network).ToString() } },
17171717
WalletName = walletName,
17181718
ChangeAddress = addressNotInWallet.Address
17191719
});

0 commit comments

Comments
 (0)