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 index c926dea80..dd9392bef 100644 --- a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc1155.cs +++ b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc1155.cs @@ -20,12 +20,34 @@ public class Erc1155 /// public static async Task BalanceOf(Web3 web3, string contractAddress, string account, string tokenId) { - var contract = web3.ContractBuilder.Build(Abi, contractAddress); - var contractData = await contract.Call(CommonMethod.BalanceOf, new object[] + return await BalanceOf(web3, contractAddress, account, new object[] + { + account, + tokenId + }); + } + + /// + /// Balance of ERC1155 Token + /// + /// + /// + /// + /// + /// + 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, contractAddress); + var contractData = await contract.Call(CommonMethod.BalanceOf, parameters); return BigInteger.Parse(contractData[0].ToString()); } 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 index b3a09d4bd..800b709c4 100644 --- a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc721.cs +++ b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Erc721.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Numerics; using System.Threading.Tasks; using ChainSafe.Gaming.Web3; using Newtonsoft.Json; @@ -36,13 +37,28 @@ public static async Task BalanceOf(Web3 web3, string contractAddress, strin /// /// public static async Task OwnerOf(Web3 web3, string contractAddress, string tokenId) + { + return await OwnerOf(web3, contractAddress, new object[] { tokenId, }); + } + + /// + /// Owner Of ERC721 Token + /// + /// + /// + /// + /// + 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 = CommonMethod.OwnerOf; var contract = web3.ContractBuilder.Build(_abi, contractAddress); - var contractData = await contract.Call(method, new object[] - { - tokenId - }); + + var contractData = await contract.Call(method, parameters); return contractData[0].ToString(); } @@ -64,10 +80,12 @@ public static async Task> OwnerOfBatch( // build array of args var obj = new string[tokenIds.Length][]; for (var i = 0; i < tokenIds.Length; i++) + { obj[i] = new[] { tokenIds[i] }; + } var args = JsonConvert.SerializeObject(obj); var response = await Remote.CSServer.Multicall(web3, web3.ChainConfig.ChainId, web3.ChainConfig.Network, contractAddress, _abi, method, args, multicall, web3.ChainConfig.Rpc); diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Samples/Erc1155Sample.cs b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Samples/Erc1155Sample.cs index 4f033c43e..bf0cef1bd 100644 --- a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Samples/Erc1155Sample.cs +++ b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Samples/Erc1155Sample.cs @@ -31,6 +31,11 @@ public async Task BalanceOf(string contract, string account, string { return await Erc1155.BalanceOf(web3, contract, account, tokenId); } + + public async Task BalanceOf(string contract, string account, BigInteger tokenId) + { + return await Erc1155.BalanceOf(web3, contract, account, tokenId); + } public async Task> BalanceOfBatch(string contract, string[] accounts, string[] tokenIds) { diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Samples/Erc721Sample.cs b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Samples/Erc721Sample.cs index b3f2a6dcf..5ef59c02a 100644 --- a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Samples/Erc721Sample.cs +++ b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/Samples/Erc721Sample.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Numerics; using System.Threading.Tasks; using ChainSafe.Gaming.Web3; using Scripts.EVM.Remote; @@ -25,6 +26,11 @@ public async Task OwnerOf(string contractAddress, string tokenId) { return await Erc721.OwnerOf(web3, contractAddress, tokenId); } + + public async Task OwnerOf(string contractAddress, BigInteger tokenId) + { + return await Erc721.OwnerOf(web3, contractAddress, tokenId); + } public async Task> OwnerOfBatch(string contractAddress, string[] tokenIds, string multicall = "") { diff --git a/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/SampleMain/Erc1155/Erc1155BalanceOfBehaviour.cs b/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/SampleMain/Erc1155/Erc1155BalanceOfBehaviour.cs index 5e9a7d02e..a6f9a67d0 100644 --- a/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/SampleMain/Erc1155/Erc1155BalanceOfBehaviour.cs +++ b/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/SampleMain/Erc1155/Erc1155BalanceOfBehaviour.cs @@ -1,4 +1,5 @@ -using System.Threading.Tasks; +using System.Numerics; +using System.Threading.Tasks; using ChainSafe.Gaming.UnityPackage; using Web3Unity.Scripts.Prefabs; @@ -20,7 +21,8 @@ protected override void Awake() protected override async Task ExecuteSample() { - var balance = await logic.BalanceOf(contractAddress, account, tokenId); + var balance = tokenId.StartsWith("0x") ? + await logic.BalanceOf(contractAddress, account, tokenId) : await logic.BalanceOf(contractAddress, account, BigInteger.Parse(tokenId)); SampleOutputUtil.PrintResult(balance.ToString(), nameof(Erc1155Sample), nameof(Erc1155Sample.BalanceOf)); } } diff --git a/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/SampleMain/Erc721/Erc721OwnerOfBatchBehaviour.cs b/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/SampleMain/Erc721/Erc721OwnerOfBatchBehaviour.cs index c8cf3f325..f6abeaa3b 100644 --- a/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/SampleMain/Erc721/Erc721OwnerOfBatchBehaviour.cs +++ b/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/SampleMain/Erc721/Erc721OwnerOfBatchBehaviour.cs @@ -9,7 +9,7 @@ namespace Samples.Behaviours.Erc721 public class Erc721OwnerOfBatchBehaviour : SampleBehaviour { public string contractAddress = "0x47381c5c948254e6e0E324F1AA54b7B24104D92D"; - public List tokenIds = new() { "33", "29" }; + public string[] tokenIds = { "33", "29" }; [Header("Optional")] // optional: multicall contract https://github.com/makerdao/multicall @@ -25,7 +25,7 @@ protected override void Awake() protected override async Task ExecuteSample() { - var owners = await logic.OwnerOfBatch(contractAddress, tokenIds.ToArray(), multicall); + var owners = await logic.OwnerOfBatch(contractAddress, tokenIds, multicall); var ownersString = $"{owners.Count} owner(s):\n" + string.Join(",\n", owners); SampleOutputUtil.PrintResult(ownersString, nameof(Erc721Sample), nameof(Erc721Sample.OwnerOfBatch)); } diff --git a/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/SampleMain/Erc721/Erc721OwnerOfBehaviour.cs b/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/SampleMain/Erc721/Erc721OwnerOfBehaviour.cs index 9628aacb7..9346a12f0 100644 --- a/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/SampleMain/Erc721/Erc721OwnerOfBehaviour.cs +++ b/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/SampleMain/Erc721/Erc721OwnerOfBehaviour.cs @@ -1,4 +1,5 @@ -using System.Threading.Tasks; +using System.Numerics; +using System.Threading.Tasks; using ChainSafe.Gaming.UnityPackage; using Web3Unity.Scripts.Prefabs; @@ -19,7 +20,9 @@ protected override void Awake() protected override async Task ExecuteSample() { - var owner = await logic.OwnerOf(contractAddress, tokenId); + // check if tokenId is int or hex string + var owner = tokenId.StartsWith("0x") ? + await logic.OwnerOf(contractAddress, tokenId) : await logic.OwnerOf(contractAddress, BigInteger.Parse(tokenId)); SampleOutputUtil.PrintResult(owner, nameof(Erc721Sample), nameof(Erc721Sample.OwnerOf)); } } diff --git a/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/SampleNftTexture/LoadScene.cs b/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/SampleNftTexture/LoadScene.cs index fd1b1b79c..912f02a29 100644 --- a/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/SampleNftTexture/LoadScene.cs +++ b/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/SampleNftTexture/LoadScene.cs @@ -7,7 +7,7 @@ public class LoadScene : MonoBehaviour { public void Load() { - SceneManager.LoadScene(Login.LoginSceneIndex); + SceneManager.LoadScene("SampleImportNftTexture"); } } } \ No newline at end of file diff --git a/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/SampleMain/Erc1155/Erc1155BalanceOfBehaviour.cs b/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/SampleMain/Erc1155/Erc1155BalanceOfBehaviour.cs index 5e9a7d02e..a6f9a67d0 100644 --- a/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/SampleMain/Erc1155/Erc1155BalanceOfBehaviour.cs +++ b/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/SampleMain/Erc1155/Erc1155BalanceOfBehaviour.cs @@ -1,4 +1,5 @@ -using System.Threading.Tasks; +using System.Numerics; +using System.Threading.Tasks; using ChainSafe.Gaming.UnityPackage; using Web3Unity.Scripts.Prefabs; @@ -20,7 +21,8 @@ protected override void Awake() protected override async Task ExecuteSample() { - var balance = await logic.BalanceOf(contractAddress, account, tokenId); + var balance = tokenId.StartsWith("0x") ? + await logic.BalanceOf(contractAddress, account, tokenId) : await logic.BalanceOf(contractAddress, account, BigInteger.Parse(tokenId)); SampleOutputUtil.PrintResult(balance.ToString(), nameof(Erc1155Sample), nameof(Erc1155Sample.BalanceOf)); } } diff --git a/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/SampleMain/Erc721/Erc721OwnerOfBatchBehaviour.cs b/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/SampleMain/Erc721/Erc721OwnerOfBatchBehaviour.cs index c8cf3f325..f6abeaa3b 100644 --- a/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/SampleMain/Erc721/Erc721OwnerOfBatchBehaviour.cs +++ b/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/SampleMain/Erc721/Erc721OwnerOfBatchBehaviour.cs @@ -9,7 +9,7 @@ namespace Samples.Behaviours.Erc721 public class Erc721OwnerOfBatchBehaviour : SampleBehaviour { public string contractAddress = "0x47381c5c948254e6e0E324F1AA54b7B24104D92D"; - public List tokenIds = new() { "33", "29" }; + public string[] tokenIds = { "33", "29" }; [Header("Optional")] // optional: multicall contract https://github.com/makerdao/multicall @@ -25,7 +25,7 @@ protected override void Awake() protected override async Task ExecuteSample() { - var owners = await logic.OwnerOfBatch(contractAddress, tokenIds.ToArray(), multicall); + var owners = await logic.OwnerOfBatch(contractAddress, tokenIds, multicall); var ownersString = $"{owners.Count} owner(s):\n" + string.Join(",\n", owners); SampleOutputUtil.PrintResult(ownersString, nameof(Erc721Sample), nameof(Erc721Sample.OwnerOfBatch)); } diff --git a/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/SampleMain/Erc721/Erc721OwnerOfBehaviour.cs b/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/SampleMain/Erc721/Erc721OwnerOfBehaviour.cs index 9628aacb7..9346a12f0 100644 --- a/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/SampleMain/Erc721/Erc721OwnerOfBehaviour.cs +++ b/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/SampleMain/Erc721/Erc721OwnerOfBehaviour.cs @@ -1,4 +1,5 @@ -using System.Threading.Tasks; +using System.Numerics; +using System.Threading.Tasks; using ChainSafe.Gaming.UnityPackage; using Web3Unity.Scripts.Prefabs; @@ -19,7 +20,9 @@ protected override void Awake() protected override async Task ExecuteSample() { - var owner = await logic.OwnerOf(contractAddress, tokenId); + // check if tokenId is int or hex string + var owner = tokenId.StartsWith("0x") ? + await logic.OwnerOf(contractAddress, tokenId) : await logic.OwnerOf(contractAddress, BigInteger.Parse(tokenId)); SampleOutputUtil.PrintResult(owner, nameof(Erc721Sample), nameof(Erc721Sample.OwnerOf)); } } diff --git a/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/SampleNftTexture/LoadScene.cs b/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/SampleNftTexture/LoadScene.cs index fd1b1b79c..912f02a29 100644 --- a/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/SampleNftTexture/LoadScene.cs +++ b/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/SampleNftTexture/LoadScene.cs @@ -7,7 +7,7 @@ public class LoadScene : MonoBehaviour { public void Load() { - SceneManager.LoadScene(Login.LoginSceneIndex); + SceneManager.LoadScene("SampleImportNftTexture"); } } } \ No newline at end of file