using System; using System.Numerics; using System.Threading.Tasks; using ChainSafe.Gaming; using ChainSafe.Gaming.Evm.Providers; using ChainSafe.Gaming.UnityPackage; using Scripts.EVM.Token; using UnityEngine; /// /// ERC20 calls used in the sample scene /// public class Erc20Sample : MonoBehaviour, ISample { #region Fields [field: SerializeField] public string Title { get; private set; } [field: SerializeField, TextArea] public string Description { get; private set; } public Type[] DependentServiceTypes => Array.Empty(); [Header("Change the fields below for testing purposes")] #region Balance Of [Header("Balance Of Call")] [SerializeField] private string accountBalanceOf = "0xd25b827D92b0fd656A1c829933e9b0b836d5C3e2"; #endregion #region Mint [Header("Mint Call")] private BigInteger valueToSend = 5; private BigInteger weiPerEther = BigInteger.Pow(10, 18); #endregion #region Transfer [Header("Transfer Call")] [SerializeField] private string toAccount = "0xdD4c825203f97984e7867F11eeCc813A036089D1"; [SerializeField] private BigInteger amountTransfer = 1000000000000000; #endregion #endregion /// /// Balance Of ERC20 Address /// public async Task BalanceOf() { var balance = await Web3Unity.Web3.Erc20.GetBalanceOf(ChainSafeContracts.Erc20, accountBalanceOf); return balance.ToString(); } /// /// Native ERC20 balance of an Address /// public async Task NativeBalanceOf() { var balance = await Web3Unity.Web3.RpcProvider.GetBalance(accountBalanceOf); return balance.ToString(); } /// /// Name of ERC20 Token /// public async Task Name() { var getName = await Web3Unity.Web3.Erc20.GetName(ChainSafeContracts.Erc20); return getName; } /// /// Symbol of ERC20 Token /// public async Task Symbol() { var symbol = await Web3Unity.Web3.Erc20.GetSymbol(ChainSafeContracts.Erc20); return symbol; } /// /// Decimals of ERC20 Token /// public async Task Decimals() { var decimals = await Web3Unity.Web3.Erc20.GetDecimals(ChainSafeContracts.Erc20); return decimals.ToString(); } /// /// Total Supply of ERC20 Token /// public async Task TotalSupply() { var totalSupply = await Web3Unity.Web3.Erc20.GetTotalSupply(ChainSafeContracts.Erc20); return totalSupply.ToString(); } /// /// Mints ERC20 Tokens to an address /// public async Task MintErc20() { var mintResponse = await Web3Unity.Web3.Erc20.MintWithReceipt(ChainSafeContracts.Erc20, valueToSend * weiPerEther); return mintResponse.TransactionHash; } /// /// Transfers ERC20 Tokens to an address /// public async Task TransferErc20() { var mintResponse = await Web3Unity.Web3.Erc20.TransferWithReceipt(ChainSafeContracts.Erc20, toAccount, amountTransfer); return mintResponse.ToString(); } }