nft-faucet/NftFaucet/Services/EthereumTransactionService.cs
2022-08-02 16:25:26 -05:00

47 lines
1.5 KiB
C#

using System.Numerics;
using NftFaucet.Models;
using NftFaucet.Models.Enums;
using NftFaucet.Models.Function;
using NftFaucet.Options;
namespace NftFaucet.Services;
public class EthereumTransactionService : IEthereumTransactionService
{
private readonly Settings _settings;
private readonly MetamaskInfo _metamaskInfo;
public EthereumTransactionService(Settings settings, MetamaskInfo metamaskInfo)
{
_settings = settings;
_metamaskInfo = metamaskInfo;
}
public async Task<string> MintErc721Token(NetworkChain network, string destinationAddress, string tokenUri)
{
var options = _settings.GetEthereumNetworkOptions(network);
var transfer = new Erc721MintFunction
{
To = destinationAddress,
Uri = tokenUri,
};
var data = transfer.Encode();
var transactionHash = await _metamaskInfo.Service.SendTransactionAsync(options.Erc721ContractAddress, 0, data);
return transactionHash;
}
public async Task<string> MintErc1155Token(NetworkChain network, string destinationAddress, BigInteger amount, string tokenUri)
{
var options = _settings.GetEthereumNetworkOptions(network);
var transfer = new Erc1155MintFunction
{
To = destinationAddress,
Amount = amount,
Uri = tokenUri,
};
var data = transfer.Encode();
var transactionHash = await _metamaskInfo.Service.SendTransactionAsync(options.Erc1155ContractAddress, 0, data);
return transactionHash;
}
}