From beaa67c280b7b666de7ef0dedf160fd9232969cd Mon Sep 17 00:00:00 2001 From: benbierens Date: Fri, 15 Dec 2023 11:02:06 +0100 Subject: [PATCH] Adds transaction links to mint output --- .../NethereumWorkflow/NethereumInteraction.cs | 6 ++++-- .../CodexContractsAccess.cs | 12 ++++++------ .../ContractInteractions.cs | 8 ++++---- ProjectPlugins/GethPlugin/GethNode.cs | 18 +++++++++--------- Tools/BiblioTech/Commands/MintCommand.cs | 17 +++++++++++------ 5 files changed, 34 insertions(+), 27 deletions(-) diff --git a/Framework/NethereumWorkflow/NethereumInteraction.cs b/Framework/NethereumWorkflow/NethereumInteraction.cs index cbe5028f..1efef816 100644 --- a/Framework/NethereumWorkflow/NethereumInteraction.cs +++ b/Framework/NethereumWorkflow/NethereumInteraction.cs @@ -17,11 +17,12 @@ namespace NethereumWorkflow this.web3 = web3; } - public void SendEth(string toAddress, decimal ethAmount) + public string SendEth(string toAddress, decimal ethAmount) { log.Debug(); var receipt = Time.Wait(web3.Eth.GetEtherTransferService().TransferEtherAndWaitForReceiptAsync(toAddress, ethAmount)); if (!receipt.Succeeded()) throw new Exception("Unable to send Eth"); + return receipt.TransactionHash; } public decimal GetEthBalance() @@ -44,12 +45,13 @@ namespace NethereumWorkflow return Time.Wait(handler.QueryAsync(contractAddress, function)); } - public void SendTransaction(string contractAddress, TFunction function) where TFunction : FunctionMessage, new() + public string SendTransaction(string contractAddress, TFunction function) where TFunction : FunctionMessage, new() { log.Debug(); var handler = web3.Eth.GetContractTransactionHandler(); var receipt = Time.Wait(handler.SendRequestAndWaitForReceiptAsync(contractAddress, function)); if (!receipt.Succeeded()) throw new Exception("Unable to perform contract transaction."); + return receipt.TransactionHash; } public decimal? GetSyncedBlockNumber() diff --git a/ProjectPlugins/CodexContractsPlugin/CodexContractsAccess.cs b/ProjectPlugins/CodexContractsPlugin/CodexContractsAccess.cs index 0959a16f..1d2a6994 100644 --- a/ProjectPlugins/CodexContractsPlugin/CodexContractsAccess.cs +++ b/ProjectPlugins/CodexContractsPlugin/CodexContractsAccess.cs @@ -7,8 +7,8 @@ namespace CodexContractsPlugin { CodexContractsDeployment Deployment { get; } - void MintTestTokens(IHasEthAddress owner, TestToken testTokens); - void MintTestTokens(EthAddress ethAddress, TestToken testTokens); + string MintTestTokens(IHasEthAddress owner, TestToken testTokens); + string MintTestTokens(EthAddress ethAddress, TestToken testTokens); TestToken GetTestTokenBalance(IHasEthAddress owner); TestToken GetTestTokenBalance(EthAddress ethAddress); } @@ -27,15 +27,15 @@ namespace CodexContractsPlugin public CodexContractsDeployment Deployment { get; } - public void MintTestTokens(IHasEthAddress owner, TestToken testTokens) + public string MintTestTokens(IHasEthAddress owner, TestToken testTokens) { - MintTestTokens(owner.EthAddress, testTokens); + return MintTestTokens(owner.EthAddress, testTokens); } - public void MintTestTokens(EthAddress ethAddress, TestToken testTokens) + public string MintTestTokens(EthAddress ethAddress, TestToken testTokens) { var interaction = new ContractInteractions(log, gethNode); - interaction.MintTestTokens(ethAddress, testTokens.Amount, Deployment.TokenAddress); + return interaction.MintTestTokens(ethAddress, testTokens.Amount, Deployment.TokenAddress); } public TestToken GetTestTokenBalance(IHasEthAddress owner) diff --git a/ProjectPlugins/CodexContractsPlugin/ContractInteractions.cs b/ProjectPlugins/CodexContractsPlugin/ContractInteractions.cs index 753a8c79..a1c7ef66 100644 --- a/ProjectPlugins/CodexContractsPlugin/ContractInteractions.cs +++ b/ProjectPlugins/CodexContractsPlugin/ContractInteractions.cs @@ -26,10 +26,10 @@ namespace CodexContractsPlugin return gethNode.Call(marketplaceAddress, function); } - public void MintTestTokens(EthAddress address, decimal amount, string tokenAddress) + public string MintTestTokens(EthAddress address, decimal amount, string tokenAddress) { log.Debug($"{amount} -> {address} (token: {tokenAddress})"); - MintTokens(address.Address, amount, tokenAddress); + return MintTokens(address.Address, amount, tokenAddress); } public decimal GetBalance(string tokenAddress, string account) @@ -56,7 +56,7 @@ namespace CodexContractsPlugin } } - private void MintTokens(string account, decimal amount, string tokenAddress) + private string MintTokens(string account, decimal amount, string tokenAddress) { log.Debug($"({tokenAddress}) {amount} --> {account}"); if (string.IsNullOrEmpty(account)) throw new ArgumentException("Invalid arguments for MintTestTokens"); @@ -67,7 +67,7 @@ namespace CodexContractsPlugin Amount = amount.ToBig() }; - gethNode.SendTransaction(tokenAddress, function); + return gethNode.SendTransaction(tokenAddress, function); } private bool IsBlockNumberOK() diff --git a/ProjectPlugins/GethPlugin/GethNode.cs b/ProjectPlugins/GethPlugin/GethNode.cs index 36ae392b..d2e2122a 100644 --- a/ProjectPlugins/GethPlugin/GethNode.cs +++ b/ProjectPlugins/GethPlugin/GethNode.cs @@ -13,10 +13,10 @@ namespace GethPlugin Ether GetEthBalance(); Ether GetEthBalance(IHasEthAddress address); Ether GetEthBalance(EthAddress address); - void SendEth(IHasEthAddress account, Ether eth); - void SendEth(EthAddress account, Ether eth); + string SendEth(IHasEthAddress account, Ether eth); + string SendEth(EthAddress account, Ether eth); TResult Call(string contractAddress, TFunction function) where TFunction : FunctionMessage, new(); - void SendTransaction(string contractAddress, TFunction function) where TFunction : FunctionMessage, new(); + string SendTransaction(string contractAddress, TFunction function) where TFunction : FunctionMessage, new(); decimal? GetSyncedBlockNumber(); bool IsContractAvailable(string abi, string contractAddress); GethBootstrapNode GetBootstrapRecord(); @@ -103,14 +103,14 @@ namespace GethPlugin return StartInteraction().GetEthBalance(address.Address).Eth(); } - public void SendEth(IHasEthAddress owner, Ether eth) + public string SendEth(IHasEthAddress owner, Ether eth) { - SendEth(owner.EthAddress, eth); + return SendEth(owner.EthAddress, eth); } - public void SendEth(EthAddress account, Ether eth) + public string SendEth(EthAddress account, Ether eth) { - StartInteraction().SendEth(account.Address, eth.Eth); + return StartInteraction().SendEth(account.Address, eth.Eth); } public TResult Call(string contractAddress, TFunction function) where TFunction : FunctionMessage, new() @@ -118,9 +118,9 @@ namespace GethPlugin return StartInteraction().Call(contractAddress, function); } - public void SendTransaction(string contractAddress, TFunction function) where TFunction : FunctionMessage, new() + public string SendTransaction(string contractAddress, TFunction function) where TFunction : FunctionMessage, new() { - StartInteraction().SendTransaction(contractAddress, function); + return StartInteraction().SendTransaction(contractAddress, function); } public decimal? GetSyncedBlockNumber() diff --git a/Tools/BiblioTech/Commands/MintCommand.cs b/Tools/BiblioTech/Commands/MintCommand.cs index cc50a2ad..125ade8c 100644 --- a/Tools/BiblioTech/Commands/MintCommand.cs +++ b/Tools/BiblioTech/Commands/MintCommand.cs @@ -47,12 +47,12 @@ namespace BiblioTech.Commands { if (ShouldMintTestTokens(contracts, addr)) { - contracts.MintTestTokens(addr, defaultTestTokensToMint); - report.Add($"Minted {defaultTestTokensToMint}."); + var transaction = contracts.MintTestTokens(addr, defaultTestTokensToMint); + report.Add($"Minted {defaultTestTokensToMint}. ({FormatTransactionLink(transaction)})"); return defaultTestTokensToMint; } - report.Add("TestToken balance over threshold."); + report.Add("TestToken balance over threshold. (No TestTokens minted.)"); return 0.TestTokens(); } @@ -60,11 +60,11 @@ namespace BiblioTech.Commands { if (ShouldSendEth(gethNode, addr)) { - gethNode.SendEth(addr, defaultEthToSend); - report.Add($"Sent {defaultEthToSend}."); + var transaction = gethNode.SendEth(addr, defaultEthToSend); + report.Add($"Sent {defaultEthToSend}. ({FormatTransactionLink(transaction)})"); return defaultEthToSend; } - report.Add("Eth balance is over threshold."); + report.Add("Eth balance is over threshold. (No Eth sent.)"); return 0.Eth(); } @@ -79,5 +79,10 @@ namespace BiblioTech.Commands var eth = gethNode.GetEthBalance(addr); return eth.Eth < 1.0m; } + + private string FormatTransactionLink(string transaction) + { + return $"https://explorer.testnet.codex.storage/tx/{transaction}"; + } } }