diff --git a/Packages/io.chainsafe.web3-unity/Editor/WebGLResourceEmbedding.cs b/Packages/io.chainsafe.web3-unity/Editor/WebGLResourceEmbedding.cs new file mode 100644 index 000000000..667b58955 --- /dev/null +++ b/Packages/io.chainsafe.web3-unity/Editor/WebGLResourceEmbedding.cs @@ -0,0 +1,15 @@ +#if UNITY_WEBGL +using UnityEditor; +using UnityEditor.Build; +using UnityEditor.Build.Reporting; + +public class WebGLResourceEmbedding : IPreprocessBuildWithReport +{ + + public int callbackOrder => 1; + public void OnPreprocessBuild(BuildReport report) + { + PlayerSettings.SetPropertyBool("useEmbeddedResources", true, BuildTargetGroup.WebGL); + } +} +#endif \ No newline at end of file diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc20.cs.meta b/Packages/io.chainsafe.web3-unity/Editor/WebGLResourceEmbedding.cs.meta similarity index 83% rename from Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc20.cs.meta rename to Packages/io.chainsafe.web3-unity/Editor/WebGLResourceEmbedding.cs.meta index b0e9a2140..98ba59388 100644 --- a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc20.cs.meta +++ b/Packages/io.chainsafe.web3-unity/Editor/WebGLResourceEmbedding.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8ddf9b9e7e8044c65b37afde7fc153d6 +guid: d390021521442774fb72d426648d230e MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Packages/io.chainsafe.web3-unity/Editor/WebGLTemplateSync.cs b/Packages/io.chainsafe.web3-unity/Editor/WebGLTemplateSync.cs index 232e46253..e7612d839 100644 --- a/Packages/io.chainsafe.web3-unity/Editor/WebGLTemplateSync.cs +++ b/Packages/io.chainsafe.web3-unity/Editor/WebGLTemplateSync.cs @@ -50,7 +50,8 @@ private static bool DirectoryInSync(DirectoryInfo reference, DirectoryInfo check return true; } - internal static void Syncronize() + [MenuItem("ChainSafe SDK/Sync WebGL Templates")] + public static void Syncronize() { AssetDatabase.DisallowAutoRefresh(); diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Common/Scripts/ILoginProvider.cs b/Packages/io.chainsafe.web3-unity/Runtime/Common/Scripts/ILoginProvider.cs index 22e08a317..24c9a4621 100644 --- a/Packages/io.chainsafe.web3-unity/Runtime/Common/Scripts/ILoginProvider.cs +++ b/Packages/io.chainsafe.web3-unity/Runtime/Common/Scripts/ILoginProvider.cs @@ -97,7 +97,7 @@ private void ConfigureCommonServices(IWeb3ServiceCollection services) * to see how it's used later on. */ services.ConfigureRegisteredContracts(contracts => - contracts.RegisterContract("CsTestErc20", ABI.Erc20, Contracts.Erc20)); + contracts.RegisterContract("CsTestErc20", ABI.Erc20, ChainSafeContracts.Erc20)); } } diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Debugging.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Debugging.dll index 62e89b25e..ef0547426 100644 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Debugging.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Debugging.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Gelato.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Gelato.dll index 64f1e97e8..a5f2b3a03 100644 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Gelato.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Gelato.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.HyperPlay.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.HyperPlay.dll index 48fdf68b0..97e06cf43 100644 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.HyperPlay.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.HyperPlay.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.InProcessSigner.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.InProcessSigner.dll index 6d9ed248b..d9ed452a5 100644 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.InProcessSigner.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.InProcessSigner.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.InProcessTransactionExecutor.Unity.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.InProcessTransactionExecutor.Unity.dll index 8fe3ae62e..df740cf62 100644 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.InProcessTransactionExecutor.Unity.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.InProcessTransactionExecutor.Unity.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.InProcessTransactionExecutor.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.InProcessTransactionExecutor.dll index 2b8e71fee..9843609c6 100644 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.InProcessTransactionExecutor.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.InProcessTransactionExecutor.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Marketplace.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Marketplace.dll index 41d00d3cd..a472dc239 100644 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Marketplace.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Marketplace.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.MetaMask.Unity.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.MetaMask.Unity.dll index 2e8f3eb0e..e0e5b7972 100644 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.MetaMask.Unity.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.MetaMask.Unity.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.MetaMask.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.MetaMask.dll index 5704241c7..881bfb2d2 100644 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.MetaMask.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.MetaMask.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.SygmaClient.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.SygmaClient.dll index 0768f6746..fb0ee77cb 100644 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.SygmaClient.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.SygmaClient.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Unity.ThirdParty.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Unity.ThirdParty.dll index 21861fdd2..8458b01b4 100644 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Unity.ThirdParty.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Unity.ThirdParty.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Unity.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Unity.dll index aeb4116b0..600c072df 100644 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Unity.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.Unity.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.WalletConnect.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.WalletConnect.dll index fd55e5f2c..2a4f6d986 100644 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.WalletConnect.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.WalletConnect.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.dll b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.dll index e80b6cade..9253b75d4 100644 Binary files a/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.dll and b/Packages/io.chainsafe.web3-unity/Runtime/Libraries/ChainSafe.Gaming.dll differ diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Marketplace/Marketplace.cs b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Marketplace/Marketplace.cs index 022383545..37767cf1a 100644 --- a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Marketplace/Marketplace.cs +++ b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Marketplace/Marketplace.cs @@ -148,7 +148,7 @@ public static async Task Create721Collection(string _bearerToken, stri new MultipartFormFileSection("logo", logoImageData, "logo.png", "image/png"), new MultipartFormFileSection("banner", bannerImageData, "banner.png", "image/png"), new MultipartFormDataSection("isImported", "true"), - new MultipartFormDataSection("contractAddress", Token.Contracts.MarketplaceContracts[Web3Accessor.Web3.ChainConfig.ChainId]), + new MultipartFormDataSection("contractAddress", ChainSafeContracts.MarketplaceContracts[Web3Accessor.Web3.ChainConfig.ChainId]), new MultipartFormDataSection("type", "erc721") }; var path = "/collections"; @@ -164,7 +164,7 @@ public static async Task Create721Collection(string _bearerToken, stri collectionData.banner, _isMintingPublic }; - var data = await Evm.ContractSend(Web3Accessor.Web3, method, Token.ABI.MarketplaceFactory, Token.Contracts.MarketplaceContracts["11155111"], args); + var data = await Evm.ContractSend(Web3Accessor.Web3, method, Token.ABI.MarketplaceFactory, ChainSafeContracts.MarketplaceContracts[Web3Accessor.Web3.ChainConfig.ChainId], args); return data; } @@ -193,7 +193,7 @@ public static async Task Create1155Collection(string _bearerToken, str new MultipartFormFileSection("logo", logoImageData, "logo.png", "image/png"), new MultipartFormFileSection("banner", bannerImageData, "banner.png", "image/png"), new MultipartFormDataSection("isImported", "true"), - new MultipartFormDataSection("contractAddress", Token.Contracts.MarketplaceContracts[Web3Accessor.Web3.ChainConfig.ChainId]), + new MultipartFormDataSection("contractAddress", ChainSafeContracts.MarketplaceContracts[Web3Accessor.Web3.ChainConfig.ChainId]), new MultipartFormDataSection("type", "erc1155") }; var path = "/collections"; @@ -207,7 +207,7 @@ public static async Task Create1155Collection(string _bearerToken, str collectionData.banner, _isMintingPublic }; - var data = await Evm.ContractSend(Web3Accessor.Web3, method, Token.ABI.MarketplaceFactory, Token.Contracts.MarketplaceContracts["11155111"], args); + var data = await Evm.ContractSend(Web3Accessor.Web3, method, Token.ABI.MarketplaceFactory, ChainSafeContracts.MarketplaceContracts[Web3Accessor.Web3.ChainConfig.ChainId], args); return data; } catch (Web3Exception e) @@ -318,7 +318,7 @@ public static async Task CreateMarketplace(string _bearerToken, string collectionData.id, _whitelisting }; - var data = await Evm.ContractSend(Web3Accessor.Web3, method, Token.ABI.MarketplaceFactory, Token.Contracts.MarketplaceContracts["11155111"], args); + var data = await Evm.ContractSend(Web3Accessor.Web3, method, Token.ABI.MarketplaceFactory, ChainSafeContracts.MarketplaceContracts[Web3Accessor.Web3.ChainConfig.ChainId] , args); return data; } catch (Web3Exception e) diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Contracts.cs b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/ChainSafeContracts.cs similarity index 97% rename from Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Contracts.cs rename to Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/ChainSafeContracts.cs index 5ec7331db..864b4021d 100644 --- a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Contracts.cs +++ b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/ChainSafeContracts.cs @@ -2,7 +2,7 @@ namespace Scripts.EVM.Token { - public class Contracts + public class ChainSafeContracts { public const string Erc20 = "0x358969310231363CBEcFEFe47323139569D8a88b"; public const string Erc721 = "0x4f75BB7bdd6f7A0fD32f1b3A94dfF409F5a3F1CC"; diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Contracts.cs.meta b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/ChainSafeContracts.cs.meta similarity index 100% rename from Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Contracts.cs.meta rename to Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/ChainSafeContracts.cs.meta diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc1155.cs b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc1155.cs deleted file mode 100644 index ae8b2fccc..000000000 --- a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc1155.cs +++ /dev/null @@ -1,191 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Numerics; -using System.Threading.Tasks; -using ChainSafe.Gaming.UnityPackage.Model; -using ChainSafe.Gaming.Web3; -using UnityEngine; -using UnityEngine.Networking; - -namespace Scripts.EVM.Token -{ - public static class Erc1155 - { - /// - /// Balance of ERC1155 Token (string parameter) - /// - /// - /// - /// - /// - /// - public static async Task BalanceOf(Web3 web3, string contractAddress, string account, string tokenId) - { - return await BalanceOf(web3, contractAddress, account, new object[] - { - account, - tokenId - }); - } - - /// - /// Balance of ERC1155 Token (biginteger parameter) - /// - /// - /// - /// - /// - /// - public static async Task BalanceOf(Web3 web3, string contractAddress, string account, BigInteger tokenId) - { - return await BalanceOf(web3, contractAddress, account, new object[] - { - account, - tokenId - }); - } - private static async Task BalanceOf(Web3 web3, string contractAddress, string account, object[] parameters) - { - var contract = web3.ContractBuilder.Build(ABI.Erc1155, contractAddress); - var contractData = await contract.Call(EthMethod.BalanceOf, parameters); - return BigInteger.Parse(contractData[0].ToString()); - } - - /// - /// Balance of Batch ERC1155 - /// - /// - /// - /// - /// - /// - public static async Task> BalanceOfBatch(Web3 web3, string contractAddress, string[] accounts, string[] tokenIds) - { - var contract = web3.ContractBuilder.Build(ABI.Erc1155, contractAddress); - var contractData = await contract.Call(EthMethod.BalanceOfBatch, new object[] - { - accounts, - tokenIds - }); - return contractData[0] as List ?? throw new System.Exception("Unexpected result from contract call"); - } - - /// - /// Token URI of ERC1155 Token - /// - /// - /// - /// - /// - public static async Task Uri(Web3 web3, string contractAddress, string tokenId) - { - const string ipfsPath = "https://ipfs.io/ipfs/"; - var contract = web3.ContractBuilder.Build(ABI.Erc1155, contractAddress); - if (tokenId.StartsWith("0x")) - { - string convertUri = tokenId.Replace("0x", "f"); - return ipfsPath + convertUri; - } - var contractData = await contract.Call(EthMethod.Uri, new object[] - { - tokenId - }); - return contractData[0].ToString(); - } - - /// - /// Mints ERC721 token - /// - /// - /// - /// - /// - /// - /// - public static async Task MintErc1155(Web3 web3, string abi, string contractAddress, BigInteger id, BigInteger amount) - { - byte[] dataObject = { }; - const string method = EthMethod.Mint; - var destination = web3.Signer.PublicAddress; - var contract = web3.ContractBuilder.Build(abi, contractAddress); - var response = await contract.Send(method, new object[] - { - destination, - id, - amount, - dataObject - }); - return response; - } - - /// - /// Transfers ERC721 token - /// - /// - /// - /// - /// - /// - /// - public static async Task TransferErc1155(Web3 web3, string contractAddress, BigInteger tokenId, BigInteger amount, string toAccount) - { - var account = web3.Signer.PublicAddress; - var abi = ABI.Erc1155; - var method = EthMethod.SafeTransferFrom; - byte[] dataObject = { }; - var contract = web3.ContractBuilder.Build(abi, contractAddress); - var response = await contract.Send(method, new object[] - { - account, - toAccount, - tokenId, - amount, - dataObject - }); - return response; - } - - /// - /// Imports an NFT texture via Uri data - /// - /// - /// - /// - /// - /// - public static async Task ImportNftTexture1155(Web3 web3, string contract, string tokenId) - { - // fetch uri from chain - string uri = await Uri(web3, contract, tokenId); - // fetch json from uri - UnityWebRequest webRequest = UnityWebRequest.Get(uri); - await webRequest.SendWebRequest(); - if (webRequest.result != UnityWebRequest.Result.Success) - { - throw new System.Exception(webRequest.error); - } - // Deserialize the data into the response class - Response data = - JsonUtility.FromJson(System.Text.Encoding.UTF8.GetString(webRequest.downloadHandler.data)); - // parse json to get image uri - string imageUri = data.image; - Debug.Log("imageUri: " + imageUri); - if (imageUri.StartsWith("ipfs://")) - { - imageUri = imageUri.Replace("ipfs://", "https://ipfs.io/ipfs/"); - } - Debug.Log("Revised URI: " + imageUri); - // fetch image and display in game - UnityWebRequest textureRequest = UnityWebRequestTexture.GetTexture(imageUri); - await textureRequest.SendWebRequest(); - var response = ((DownloadHandlerTexture)textureRequest.downloadHandler).texture; - return response; - } - - // Response class for the texture call above - public class Response - { - public string image; - } - } -} \ No newline at end of file diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc1155.cs.meta b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc1155.cs.meta deleted file mode 100644 index 5f5e2f3da..000000000 --- a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc1155.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: c08a3b38196e24b31a3e35b41053a2cf -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc1155Metadata.cs b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc1155Metadata.cs new file mode 100644 index 000000000..d5cf15451 --- /dev/null +++ b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc1155Metadata.cs @@ -0,0 +1,7 @@ +namespace Scripts.EVM.Token +{ + public class Erc1155Metadata + { + public string image { get; set; } + } +} \ No newline at end of file diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc1155Metadata.cs.meta b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc1155Metadata.cs.meta new file mode 100644 index 000000000..e29df799b --- /dev/null +++ b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc1155Metadata.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5c150d3e3858475db6446dccd3e3c383 +timeCreated: 1715619285 \ No newline at end of file diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc1155UnityExtensions.cs b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc1155UnityExtensions.cs new file mode 100644 index 000000000..207695740 --- /dev/null +++ b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc1155UnityExtensions.cs @@ -0,0 +1,52 @@ +using System.Diagnostics.Contracts; +using System.Text; +using System.Threading.Tasks; +using ChainSafe.Gaming.Evm.Contracts.BuiltIn; +using ChainSafe.Gaming.Ipfs; +using ChainSafe.Gaming.Web3; +using Newtonsoft.Json; +using UnityEngine; +using UnityEngine.Networking; + +namespace Scripts.EVM.Token +{ + public static class Erc1155UnityExtensions + { + public static async Task ImportTexture(this Erc1155Contract contract, string tokenId) + { + // fetch uri from chain + var uri = await contract.GetUri(tokenId); + + // fetch metadata from uri + var metaRequest = UnityWebRequest.Get(uri); + await metaRequest.SendWebRequest(); + + if (metaRequest.result != UnityWebRequest.Result.Success) + { + throw new Web3Exception($"Metadata request failure: {metaRequest.error}"); + } + + // prepare texture uri + var metadata = JsonConvert.DeserializeObject(Encoding.UTF8.GetString(metaRequest.downloadHandler.data)); + var textureUri = IpfsHelper.RollupIpfsUri(metadata.image); + + // fetch texture + var textureRequest = UnityWebRequestTexture.GetTexture(textureUri); + await textureRequest.SendWebRequest(); + + if (textureRequest.result != UnityWebRequest.Result.Success) + { + throw new Web3Exception($"Texture request failure: {metaRequest.error}"); + } + + var texture = ((DownloadHandlerTexture)textureRequest.downloadHandler).texture; + + return texture; + } + + public static Task ImportTexture(this Erc1155Service service, string contractAddress, string tokenId) + { + return service.BuildContract(contractAddress).ImportTexture(tokenId); + } + } +} \ No newline at end of file diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc1155UnityExtensions.cs.meta b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc1155UnityExtensions.cs.meta new file mode 100644 index 000000000..5b43e34cd --- /dev/null +++ b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc1155UnityExtensions.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 127e124a404b4e068b8436f5b18638cb +timeCreated: 1715601274 \ No newline at end of file diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc20.cs b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc20.cs deleted file mode 100644 index 08d8b68a1..000000000 --- a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc20.cs +++ /dev/null @@ -1,145 +0,0 @@ -using System.Numerics; -using System.Threading.Tasks; -using ChainSafe.Gaming.Evm.Providers; -using ChainSafe.Gaming.Web3; - -namespace Scripts.EVM.Token -{ - public static class Erc20 - { - /// - /// Balance Of ERC20 Address - /// - /// - /// - /// - /// - public static async Task BalanceOf(Web3 web3, string contractAddress, string account) - { - var contract = web3.ContractBuilder.Build(ABI.Erc20, contractAddress); - var contractData = await contract.Call(EthMethod.BalanceOf, new object[] - { - account - }); - return BigInteger.Parse(contractData[0].ToString()); - } - - /// - /// Custom ERC20 token balance of an address - /// - /// - /// - /// - /// - public static async Task CustomTokenBalance(Web3 web3, string contractAbi, string contractAddress) - { - var contract = web3.ContractBuilder.Build(contractAbi, contractAddress); - string address = web3.Signer.PublicAddress; - var contractData = await contract.Call(EthMethod.BalanceOf, new object[] { address }); - return BigInteger.Parse(contractData[0].ToString()); - } - - /// - /// Native ERC20 balance of an Address - /// - /// - /// - /// - public static async Task NativeBalanceOf(Web3 web3, string account) - { - return await web3.RpcProvider.GetBalance(account); - } - - /// - /// Name of ERC20 Token - /// - /// - /// - /// - public static async Task Name(Web3 web3, string contractAddress) - { - var contract = web3.ContractBuilder.Build(ABI.Erc20, contractAddress); - var name = await contract.Call(EthMethod.Name); - return name[0].ToString(); - } - - /// - /// Symbol of ERC20 Token - /// - /// - /// - /// - public static async Task Symbol(Web3 web3, string contractAddress) - { - var contract = web3.ContractBuilder.Build(ABI.Erc20, contractAddress); - var symbol = await contract.Call(EthMethod.Symbol); - return symbol[0].ToString(); - } - - /// - /// Decimals of ERC20 Token - /// - /// - /// - /// - public static async Task Decimals(Web3 web3, string contractAddress) - { - var contract = web3.ContractBuilder.Build(ABI.Erc20, contractAddress); - var decimals = await contract.Call(EthMethod.Decimals); - return BigInteger.Parse(decimals[0].ToString()); - } - - /// - /// Total Supply of ERC20 Token - /// - /// - /// - /// - public static async Task TotalSupply(Web3 web3, string contractAddress) - { - var contract = web3.ContractBuilder.Build(ABI.Erc20, contractAddress); - var totalSupply = await contract.Call(EthMethod.TotalSupply); - return BigInteger.Parse(totalSupply[0].ToString()); - } - - /// - /// Mints ERC20 Tokens - /// - /// - /// - /// - /// - public static async Task MintErc20(Web3 web3, string contractAddress, string toAccount, BigInteger amount) - { - const string method = EthMethod.Mint; - var contract = web3.ContractBuilder.Build(ABI.Erc20, contractAddress); - var response = await contract.Send(method, new object[] - { - toAccount, - amount - }); - return response; - } - - /// - /// Transfers ERC20 Tokens - /// - /// - /// - /// - /// - /// - /// - public static async Task TransferErc20(Web3 web3, string contractAddress, string toAccount, BigInteger amount) - { - var method = EthMethod.Transfer; - var contract = web3.ContractBuilder.Build(ABI.Erc20, contractAddress); - var response = await contract.Send(method, new object[] - { - toAccount, - amount - }); - return response; - } - } -} \ No newline at end of file diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc721.cs b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc721.cs deleted file mode 100644 index 73763d6ed..000000000 --- a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc721.cs +++ /dev/null @@ -1,170 +0,0 @@ -using System.Collections.Generic; -using System.Numerics; -using System.Threading.Tasks; -using ChainSafe.Gaming.MultiCall; -using ChainSafe.Gaming.UnityPackage.Model; -using ChainSafe.Gaming.Web3; -using Nethereum.Contracts.QueryHandlers.MultiCall; -using Nethereum.Hex.HexConvertors.Extensions; - -namespace Scripts.EVM.Token -{ - public static class Erc721 - { - /// - /// Balance Of ERC721 Token - /// - /// - /// - /// - /// - public static async Task BalanceOf(Web3 web3, string contractAddress, string account) - { - var contract = web3.ContractBuilder.Build(ABI.Erc721, contractAddress); - var contractData = await contract.Call(EthMethod.BalanceOf, new object[] - { - account - }); - return int.Parse(contractData[0].ToString()); - } - - /// - /// Owner Of ERC721 Token (string parameter) - /// - /// - /// - /// - /// - public static async Task OwnerOf(Web3 web3, string contractAddress, string tokenId) - { - return await OwnerOf(web3, contractAddress, new object[] { tokenId, }); - } - - /// - /// Owner Of ERC721 Token (biginteger parameter) - /// - /// - /// - /// - /// - public static async Task OwnerOf(Web3 web3, string contractAddress, BigInteger tokenId) - { - return await OwnerOf(web3, contractAddress, new object[] { tokenId, }); - } - private static async Task OwnerOf(Web3 web3, string contractAddress, object[] parameters) - { - var method = EthMethod.OwnerOf; - var contract = web3.ContractBuilder.Build(ABI.Erc721, contractAddress); - var contractData = await contract.Call(method, parameters); - return contractData[0].ToString(); - } - - /// - /// Returns owners of batch - /// - public static async Task> OwnerOfBatch( - Web3 web3, - string contractAddress, - string[] tokenIds) - { - var erc721Contract = web3.ContractBuilder.Build(ABI.Erc721, contractAddress); - List calls = new List(); - for (int i = 0; i < tokenIds.Length; i++) - { - var callData = erc721Contract.Calldata(EthMethod.OwnerOf, new object[] - { - tokenIds[i].StartsWith("0x") ? tokenIds[i] : BigInteger.Parse(tokenIds[i]) - }); - var call3Value = new Call3Value() - { - Target = contractAddress, - AllowFailure = true, - CallData = callData.HexToByteArray() - }; - calls.Add(call3Value); - }; - - var multiCallResultResponse = await web3.MultiCall().MultiCallAsync(calls.ToArray()); - var owners = new List(); - for (int i = 0; i < multiCallResultResponse.Count; i++) - { - if (multiCallResultResponse[i] != null && multiCallResultResponse[i].Success) - { - var owner = erc721Contract.Decode(EthMethod.OwnerOf, multiCallResultResponse[i].ReturnData.ToHex()); - owners.Add(new OwnerOfBatchModel() { TokenId = tokenIds[i], Owner = owner[0].ToString() }); - } - } - return owners; - } - - /// - /// Token URI Of ERC721 Token - /// - /// - /// - /// - /// - public static async Task Uri(Web3 web3, string contractAddress, string tokenId) - { - const string ipfsPath = "https://ipfs.io/ipfs/"; - var contract = web3.ContractBuilder.Build(ABI.Erc721, contractAddress); - if (tokenId.StartsWith("0x")) - { - var convertUri = tokenId.Replace("0x", "f"); - return ipfsPath + convertUri; - } - - var contractData = await contract.Call(EthMethod.TokenUri, new object[] - { - tokenId - }); - return contractData[0].ToString(); - } - - /// - /// Mints ERC721 token - /// - /// - /// - /// - /// - /// - public static async Task MintErc721(Web3 web3, string abi, string contractAddress, string uri) - { - const string method = EthMethod.SafeMint; - var destination = web3.Signer.PublicAddress; - var contract = web3.ContractBuilder.Build(abi, contractAddress); - var response = await contract.Send(method, new object[] - { - destination, - uri - }); - return response; - } - - /// - /// Transfers ERC721 token - /// - /// - /// - /// - /// - /// - public static async Task TransferErc721(Web3 web3, string contractAddress, string toAccount, BigInteger tokenId) - { - var abi = ABI.Erc721; - var method = EthMethod.SafeTransferFrom; - var account = web3.Signer.PublicAddress; - var contract = web3.ContractBuilder.Build(abi, contractAddress); - - var response = await contract.Send(method, new object[] - { - account, - toAccount, - tokenId.ToString() - }); - - return response; - } - } -} \ No newline at end of file diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc721.cs.meta b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc721.cs.meta deleted file mode 100644 index 0e0cea078..000000000 --- a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc721.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0cc525932e1f34ad7b1d2140d47856aa -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Methods.cs.meta b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Methods.cs.meta deleted file mode 100644 index b1bcae6a4..000000000 --- a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Methods.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: cd0841fdefde87b40a16f2ded8443040 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Model/OwnerOfBatchModel.cs.meta b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Model/OwnerOfBatchModel.cs.meta deleted file mode 100644 index d704d7afe..000000000 --- a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Model/OwnerOfBatchModel.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 5f33373a980b4a13b40a1a940b622f97 -timeCreated: 1708607850 \ No newline at end of file diff --git a/Packages/io.chainsafe.web3-unity/Tests/Runtime/Erc1155Tests.cs b/Packages/io.chainsafe.web3-unity/Tests/Runtime/Erc1155Tests.cs index f57c3d34a..b5d028b51 100644 --- a/Packages/io.chainsafe.web3-unity/Tests/Runtime/Erc1155Tests.cs +++ b/Packages/io.chainsafe.web3-unity/Tests/Runtime/Erc1155Tests.cs @@ -27,7 +27,7 @@ public class Erc1155Tests : SampleTestsBase [UnityTest] public IEnumerator TestBalanceOf() { - var getBalanceOf = Erc1155.BalanceOf(web3, Contracts.Erc1155, _accounts[0], _tokenIds[0]); + var getBalanceOf = web3.Erc1155.GetBalanceOf(ChainSafeContracts.Erc1155, _accounts[0], _tokenIds[0]); yield return new WaitUntil(() => getBalanceOf.IsCompleted); Assert.AreEqual(new BigInteger(2), getBalanceOf.Result); } @@ -35,7 +35,7 @@ public IEnumerator TestBalanceOf() [UnityTest] public IEnumerator TestBalanceOfBatch() { - var getBalanceOf = Erc1155.BalanceOfBatch(web3, Contracts.Erc1155, _accounts, _tokenIds); + var getBalanceOf = web3.Erc1155.GetBalanceOfBatch(ChainSafeContracts.Erc1155, _accounts, _tokenIds); yield return new WaitUntil(() => getBalanceOf.IsCompleted); CollectionAssert.AreEqual(new List { 2, 3 }, getBalanceOf.Result); } @@ -46,7 +46,7 @@ public IEnumerator TestBalanceOfBatch() [UnityTest] public IEnumerator TestUri() { - var uri = Erc1155.Uri(web3, Contracts.Erc1155, _tokenIds[0]); + var uri = web3.Erc1155.GetUri(ChainSafeContracts.Erc1155, _tokenIds[0]); yield return new WaitUntil(() => uri.IsCompleted); Assert.AreEqual(ExpectedUriResult, uri.Result); } @@ -126,7 +126,7 @@ public IEnumerator TestImportNFTTexture() }; #endregion - var texture = Erc1155.ImportNftTexture1155(web3, Contracts.Erc1155, "1"); + var texture = web3.Erc1155.ImportTexture(ChainSafeContracts.Erc1155, "1"); yield return new WaitUntil(() => texture.IsCompleted); CollectionAssert.AreEqual(bytesOfTheTexture, texture.Result.EncodeToJPG(1)); } diff --git a/Packages/io.chainsafe.web3-unity/Tests/Runtime/Erc20Tests.cs b/Packages/io.chainsafe.web3-unity/Tests/Runtime/Erc20Tests.cs index 83b37292b..7b58151e7 100644 --- a/Packages/io.chainsafe.web3-unity/Tests/Runtime/Erc20Tests.cs +++ b/Packages/io.chainsafe.web3-unity/Tests/Runtime/Erc20Tests.cs @@ -1,6 +1,7 @@ using System.Collections; using System.Numerics; using ChainSafe.Gaming.Evm.JsonRpc; +using ChainSafe.Gaming.Evm.Providers; using ChainSafe.Gaming.UnityPackage; using ChainSafe.Gaming.Web3; using ChainSafe.Gaming.Web3.Build; @@ -27,7 +28,7 @@ public class Erc20Tests : SampleTestsBase [UnityTest] public IEnumerator TestBalanceOf() { - var getBalanceOf = Erc20.BalanceOf(web3, Contracts.Erc20, Account); + var getBalanceOf = web3.Erc20.GetBalanceOf(ChainSafeContracts.Erc20, Account); yield return new WaitUntil(() => getBalanceOf.IsCompleted); Assert.AreEqual(new BigInteger(1000000000000000000), getBalanceOf.Result); } @@ -35,7 +36,7 @@ public IEnumerator TestBalanceOf() [UnityTest] public IEnumerator TestNativeBalanceOf() { - var getNativeBalanceOf = Erc20.NativeBalanceOf(web3, Account); + var getNativeBalanceOf = web3.RpcProvider.GetBalance(Account); yield return new WaitUntil(() => getNativeBalanceOf.IsCompleted); Assert.AreEqual(new BigInteger(500000000000000000), getNativeBalanceOf.Result); } @@ -43,7 +44,7 @@ public IEnumerator TestNativeBalanceOf() [UnityTest] public IEnumerator TestDecimals() { - var getDecimals = Erc20.Decimals(web3, Contracts.Erc20); + var getDecimals = web3.Erc20.GetDecimals(ChainSafeContracts.Erc20); yield return new WaitUntil(() => getDecimals.IsCompleted); Assert.AreEqual(new BigInteger(18), getDecimals.Result); } @@ -51,7 +52,7 @@ public IEnumerator TestDecimals() [UnityTest] public IEnumerator TestName() { - var getName = Erc20.Name(web3, Contracts.Erc20); + var getName = web3.Erc20.GetName(ChainSafeContracts.Erc20); yield return new WaitUntil(() => getName.IsCompleted); Assert.AreEqual("CsTestErc20", getName.Result); } @@ -59,7 +60,7 @@ public IEnumerator TestName() [UnityTest] public IEnumerator TestSymbol() { - var getSymbol = Erc20.Symbol(web3, Contracts.Erc20); + var getSymbol = web3.Erc20.GetSymbol(ChainSafeContracts.Erc20); yield return new WaitUntil(() => getSymbol.IsCompleted); Assert.AreEqual("CST", getSymbol.Result); } @@ -67,7 +68,7 @@ public IEnumerator TestSymbol() [UnityTest] public IEnumerator TestTotalSupply() { - var getTotalSupply = Erc20.TotalSupply(web3, TotalSupplyAddress); + var getTotalSupply = web3.Erc20.GetTotalSupply(TotalSupplyAddress); yield return new WaitUntil(() => getTotalSupply.IsCompleted); Assert.AreEqual(new BigInteger(1000000000000000000), getTotalSupply.Result); } diff --git a/Packages/io.chainsafe.web3-unity/Tests/Runtime/Erc721Tests.cs b/Packages/io.chainsafe.web3-unity/Tests/Runtime/Erc721Tests.cs index 0e6408bb1..c7aec1de2 100644 --- a/Packages/io.chainsafe.web3-unity/Tests/Runtime/Erc721Tests.cs +++ b/Packages/io.chainsafe.web3-unity/Tests/Runtime/Erc721Tests.cs @@ -45,7 +45,7 @@ public class Erc721Tests : SampleTestsBase [UnityTest] public IEnumerator TestBalanceOf() { - var getBalanceOf = Erc721.BalanceOf(web3, Contracts.Erc721, balanceOfAccount); + var getBalanceOf = web3.Erc721.GetBalanceOf(ChainSafeContracts.Erc721, balanceOfAccount); yield return new WaitUntil(() => getBalanceOf.IsCompleted); Assert.AreEqual(balanceOfExpected, getBalanceOf.Result); } @@ -53,7 +53,7 @@ public IEnumerator TestBalanceOf() [UnityTest] public IEnumerator TestOwnerOf() { - var getOwnerOf = Erc721.OwnerOf(web3, Contracts.Erc721, ownerOfTokenId); + var getOwnerOf = web3.Erc721.GetOwnerOf(ChainSafeContracts.Erc721, ownerOfTokenId); yield return new WaitUntil(() => getOwnerOf.IsCompleted); Assert.AreEqual(ownerOfExpected, getOwnerOf.Result); } @@ -61,7 +61,7 @@ public IEnumerator TestOwnerOf() [UnityTest] public IEnumerator TestOwnerOfBatch() { - var getOwnerOfBatch = Erc721.OwnerOfBatch(web3, Contracts.Erc721, ownerOfBatchTokenIds); + var getOwnerOfBatch = web3.Erc721.GetOwnerOfBatch(ChainSafeContracts.Erc721, ownerOfBatchTokenIds); yield return new WaitUntil(() => getOwnerOfBatch.IsCompleted); CollectionAssert.AreEqual(ownerOfBatchExpected, getOwnerOfBatch.Result.Select(x => x.Owner)); } @@ -69,7 +69,7 @@ public IEnumerator TestOwnerOfBatch() [UnityTest] public IEnumerator TestUri() { - var uri = Erc721.Uri(web3, Contracts.Erc721, uriTokenId); + var uri = web3.Erc721.GetUri(ChainSafeContracts.Erc721, uriTokenId); yield return new WaitUntil(() => uri.IsCompleted); Assert.AreEqual(ExpectedUriResult, uri.Result); } diff --git a/Packages/io.chainsafe.web3-unity/Tests/Runtime/EvmCustomResponseTests.cs b/Packages/io.chainsafe.web3-unity/Tests/Runtime/EvmCustomResponseTests.cs index 087b6a91f..97481e1db 100644 --- a/Packages/io.chainsafe.web3-unity/Tests/Runtime/EvmCustomResponseTests.cs +++ b/Packages/io.chainsafe.web3-unity/Tests/Runtime/EvmCustomResponseTests.cs @@ -56,7 +56,7 @@ public IEnumerator TestContractSend() { IncreaseAmount }; - var sendContract = Evm.ContractSend(web3, ContractSendMethod, ABI.ArrayTotal, Contracts.ArrayTotal, args); + var sendContract = Evm.ContractSend(web3, ContractSendMethod, ABI.ArrayTotal, ChainSafeContracts.ArrayTotal, args); yield return new WaitUntil(() => sendContract.IsCompleted); if (sendContract.Exception != null) throw sendContract.Exception; Assert.IsTrue(sendContract.IsCompletedSuccessfully); @@ -67,7 +67,7 @@ public IEnumerator TestContractSend() public IEnumerator TestSendArray() { yield return BuildWeb3WithTestResponse("0x3446b949c3d214fba7e61c9cf127eac6cd0b2983564cf76be618099879b6f1e1"); - var sendArray = Evm.SendArray(web3, SendArrayMethod, ABI.ArrayTotal, Contracts.ArrayTotal, ArrayToSend.ToArray()); + var sendArray = Evm.SendArray(web3, SendArrayMethod, ABI.ArrayTotal, ChainSafeContracts.ArrayTotal, ArrayToSend.ToArray()); yield return new WaitUntil(() => sendArray.IsCompleted); if (sendArray.Exception != null) throw sendArray.Exception; Assert.IsTrue(sendArray.IsCompletedSuccessfully); @@ -136,7 +136,7 @@ public IEnumerator TestSignVerify() public IEnumerator TestMintErc20() { yield return BuildWeb3WithTestResponse("0xf6133ad76359ffaf67853a5eb138a94ed11f29d350b907420a92c685c6df5303"); - var mint20 = Erc20.MintErc20(web3, Contracts.Erc20, SendToAddress, Mint20Amount); + var mint20 = web3.Erc20.Mint(ChainSafeContracts.Erc20, Mint20Amount, SendToAddress); yield return new WaitUntil(() => mint20.IsCompleted); if (mint20.Exception != null) throw mint20.Exception; Assert.IsTrue(mint20.IsCompletedSuccessfully); @@ -147,7 +147,7 @@ public IEnumerator TestMintErc20() public IEnumerator TestMintErc721() { yield return BuildWeb3WithTestResponse("0x09f1c615d638ae0b3a8c4a5555b46170c42dba214f04412400f3ff639657a223"); - var mint721 = Erc721.MintErc721(web3, ABI.Erc721, Contracts.Erc721, Mint721Uri); + var mint721 = web3.Erc721.Mint(ChainSafeContracts.Erc721, Mint721Uri); yield return new WaitUntil(() => mint721.IsCompleted); if (mint721.Exception != null) throw mint721.Exception; Assert.IsTrue(mint721.IsCompletedSuccessfully); @@ -158,7 +158,7 @@ public IEnumerator TestMintErc721() public IEnumerator TestMintErc1155() { yield return BuildWeb3WithTestResponse("0xa04294541b934b48ada4073b07ba01492d8ad676aa2db6f93249cec0820a1dca"); - var mint1155 = Erc1155.MintErc1155(web3, ABI.Erc1155, Contracts.Erc1155, Mint1155Id, Mint1155Amount); + var mint1155 = web3.Erc1155.Mint(ChainSafeContracts.Erc1155, Mint1155Id, Mint1155Amount); yield return new WaitUntil(() => mint1155.IsCompleted); if (mint1155.Exception != null) throw mint1155.Exception; Assert.IsTrue(mint1155.IsCompletedSuccessfully); @@ -169,7 +169,7 @@ public IEnumerator TestMintErc1155() public IEnumerator TestTransferErc20() { yield return BuildWeb3WithTestResponse("0x87d8826e895247b4106596040c5133a18ecbf76077c5433091a5f18c355a120b"); - var transferErc20 = Erc20.TransferErc20(web3, Contracts.Erc20, SendToAddress, TransferErc20Amount); + var transferErc20 = web3.Erc20.Transfer(ChainSafeContracts.Erc20, SendToAddress, TransferErc20Amount); yield return new WaitUntil(() => transferErc20.IsCompleted); if (transferErc20.Exception != null) throw transferErc20.Exception; Assert.IsTrue(transferErc20.IsCompletedSuccessfully); @@ -180,7 +180,7 @@ public IEnumerator TestTransferErc20() public IEnumerator TestTransferErc721() { yield return BuildWeb3WithTestResponse("0xba034c4150f2a5fd50926551a8e95028d51dcc91e3c3b566bbd316968bc29375"); - var transferErc721 = Erc721.TransferErc721(web3, Contracts.Erc721, SendToAddress, Transfer721Id); + var transferErc721 = web3.Erc721.Transfer(ChainSafeContracts.Erc721, SendToAddress, Transfer721Id); yield return new WaitUntil(() => transferErc721.IsCompleted); if (transferErc721.Exception != null) throw transferErc721.Exception; Assert.IsTrue(transferErc721.IsCompletedSuccessfully); @@ -191,7 +191,7 @@ public IEnumerator TestTransferErc721() public IEnumerator TestTransferErc1155() { yield return BuildWeb3WithTestResponse("0x390b47d378e9a6de830e2cc6d624de0920efc44d7b40fb61f75d983545c987fc"); - var transferErc1155 = Erc1155.TransferErc1155(web3, Contracts.Erc1155, Transfer1155Id, Transfer1155Amount, SendToAddress); + var transferErc1155 = web3.Erc1155.Transfer(ChainSafeContracts.Erc1155, Transfer1155Id, Transfer1155Amount, SendToAddress); yield return new WaitUntil(() => transferErc1155.IsCompleted); if (transferErc1155.Exception != null) throw transferErc1155.Exception; yield return new WaitUntil(() => transferErc1155.IsCompletedSuccessfully); diff --git a/Packages/io.chainsafe.web3-unity/Tests/Runtime/EvmTests.cs b/Packages/io.chainsafe.web3-unity/Tests/Runtime/EvmTests.cs index cb1fdcb75..9af03cb87 100644 --- a/Packages/io.chainsafe.web3-unity/Tests/Runtime/EvmTests.cs +++ b/Packages/io.chainsafe.web3-unity/Tests/Runtime/EvmTests.cs @@ -1,6 +1,7 @@ using System.Collections; using System.Collections.Generic; using System.Numerics; +using ChainSafe.Gaming.Evm.Contracts.BuiltIn; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using NUnit.Framework; @@ -50,7 +51,7 @@ public IEnumerator TestContractCall() { var address = web3.Signer.PublicAddress; object[] args = { address }; - var callContract = Evm.ContractCall(web3, ContractCallMethod, ABI.ArrayTotal, Contracts.ArrayTotal, args); + var callContract = Evm.ContractCall(web3, ContractCallMethod, ABI.ArrayTotal, ChainSafeContracts.ArrayTotal, args); yield return new WaitUntil(() => callContract.IsCompleted); if (callContract.Exception != null) throw callContract.Exception; Assert.IsTrue(callContract.IsCompletedSuccessfully); @@ -60,7 +61,7 @@ public IEnumerator TestContractCall() [UnityTest] public IEnumerator TestGetArray() { - var getArray = Evm.GetArray(web3, Contracts.ArrayTotal, ABI.ArrayTotal, GetArrayMethod); + var getArray = Evm.GetArray(web3, ChainSafeContracts.ArrayTotal, ABI.ArrayTotal, GetArrayMethod); yield return new WaitUntil(() => getArray.IsCompleted); // Convert toLower to make comparing easier var result = getArray.Result.ConvertAll(a => a.ConvertAll(b => b.ToLower())); @@ -87,7 +88,7 @@ public IEnumerator TestGetGasLimit() { IncreaseAmount }; - var getGasLimit = Evm.GetGasLimit(web3, ABI.ArrayTotal, Contracts.ArrayTotal, ContractSendMethod, args); + var getGasLimit = Evm.GetGasLimit(web3, ABI.ArrayTotal, ChainSafeContracts.ArrayTotal, ContractSendMethod, args); yield return new WaitUntil(() => getGasLimit.IsCompleted); if (getGasLimit.Exception != null) throw getGasLimit.Exception; // Just assert successful completion because result is always changing @@ -107,7 +108,7 @@ public IEnumerator TestGetGasPrice() [UnityTest] public IEnumerator TestUseRegisteredContract() { - var useRegisteredContract = Evm.UseRegisteredContract(web3, "CsTestErc20", EthMethod.BalanceOf); + var useRegisteredContract = Evm.UseRegisteredContract(web3, "CsTestErc20", EthMethods.BalanceOf); yield return new WaitUntil(() => useRegisteredContract.IsCompleted); if (useRegisteredContract.Exception != null) throw useRegisteredContract.Exception; Assert.IsTrue(useRegisteredContract.IsCompletedSuccessfully); @@ -149,7 +150,7 @@ public IEnumerator TestECDSAAddress() [UnityTest] public IEnumerator TestCustomBalanceOfErc20() { - var getCustomBalanceOf = Erc20.CustomTokenBalance(web3, ABI.Erc20, Contracts.Erc20); + var getCustomBalanceOf = web3.Erc20.GetBalanceOf(ChainSafeContracts.Erc20); yield return new WaitUntil(() => getCustomBalanceOf.IsCompleted); Assert.AreEqual(new BigInteger(999999999999999), getCustomBalanceOf.Result); } diff --git a/Packages/io.chainsafe.web3-unity/Tests/Runtime/SampleTestsBase.cs b/Packages/io.chainsafe.web3-unity/Tests/Runtime/SampleTestsBase.cs index 101235e55..d23939369 100644 --- a/Packages/io.chainsafe.web3-unity/Tests/Runtime/SampleTestsBase.cs +++ b/Packages/io.chainsafe.web3-unity/Tests/Runtime/SampleTestsBase.cs @@ -67,7 +67,7 @@ internal static ValueTask BuildTestWeb3(Web3Builder.ConfigureServicesDeleg // Add any contracts we would want to use services.ConfigureRegisteredContracts(contracts => - contracts.RegisterContract("CsTestErc20", ABI.Erc20, Contracts.Erc20)); + contracts.RegisterContract("CsTestErc20", ABI.Erc20, ChainSafeContracts.Erc20)); }); if (customConfiguration != null) diff --git a/Packages/io.chainsafe.web3-unity/Tests/Runtime/chainsafe.web3-unity.RuntimeTests.asmdef b/Packages/io.chainsafe.web3-unity/Tests/Runtime/chainsafe.web3-unity.RuntimeTests.asmdef index 959c0e10a..017811d11 100644 --- a/Packages/io.chainsafe.web3-unity/Tests/Runtime/chainsafe.web3-unity.RuntimeTests.asmdef +++ b/Packages/io.chainsafe.web3-unity/Tests/Runtime/chainsafe.web3-unity.RuntimeTests.asmdef @@ -19,6 +19,7 @@ "ChainSafe.Gaming.Unity.dll", "ChainSafe.Gaming.Gelato.dll", "ChainSafe.Gaming.WalletConnect.dll", + "Nethereum.RPC.dll", "Newtonsoft.Json.dll" ], "autoReferenced": false, diff --git a/src/ChainSafe.Gaming/ChainSafe.Gaming.csproj b/src/ChainSafe.Gaming/ChainSafe.Gaming.csproj index 5225af0ac..cb395f804 100644 --- a/src/ChainSafe.Gaming/ChainSafe.Gaming.csproj +++ b/src/ChainSafe.Gaming/ChainSafe.Gaming.csproj @@ -35,6 +35,14 @@ + + + + + + + +