diff --git a/Packages/io.chainsafe.web3-unity.marketplace/Runtime/Scripts/Marketplace/Marketplace.cs b/Packages/io.chainsafe.web3-unity.marketplace/Runtime/Scripts/Marketplace/Marketplace.cs
index 4d7a6df11..d07df65f5 100644
--- a/Packages/io.chainsafe.web3-unity.marketplace/Runtime/Scripts/Marketplace/Marketplace.cs
+++ b/Packages/io.chainsafe.web3-unity.marketplace/Runtime/Scripts/Marketplace/Marketplace.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Numerics;
using System.Threading.Tasks;
+using ChainSafe.Gaming.Evm.Transactions;
using ChainSafe.Gaming.UnityPackage;
using ChainSafe.Gaming.UnityPackage.Model;
using ChainSafe.Gaming.Web3;
@@ -133,7 +134,7 @@ public class Marketplace
/// Description of the 721 collection being created
/// If minting is public or not
/// Contract send data object
- public static async Task Create721Collection(string _bearerToken, string _name, string _description, bool _isMintingPublic)
+ public static async Task Create721Collection(string _bearerToken, string _name, string _description, bool _isMintingPublic)
{
var logoImageData = await UploadPlatforms.GetImageData();
var bannerImageData = await UploadPlatforms.GetImageData();
@@ -163,8 +164,9 @@ public static async Task Create721Collection(string _bearerToken, stri
collectionData.banner,
_isMintingPublic
};
- var data = await Evm.ContractSend(Web3Accessor.Web3, method, Token.ABI.MarketplaceFactory, ChainSafeContracts.MarketplaceContracts[Web3Accessor.Web3.ChainConfig.ChainId], args);
- return data;
+ var contract = Web3Accessor.Web3.ContractBuilder.Build(ABI.MarketplaceFactory, ChainSafeContracts.MarketplaceContracts[Web3Accessor.Web3.ChainConfig.ChainId]);
+ var data = await contract.SendWithReceipt(method, args);
+ return data.receipt;
}
///
@@ -176,7 +178,7 @@ public static async Task Create721Collection(string _bearerToken, stri
/// Description of the 1155 collection being created
/// If minting is public or not
/// Contract send data object
- public static async Task Create1155Collection(string _bearerToken, string _name, string _description, bool _isMintingPublic)
+ public static async Task Create1155Collection(string _bearerToken, string _name, string _description, bool _isMintingPublic)
{
try
{
@@ -206,8 +208,9 @@ public static async Task Create1155Collection(string _bearerToken, str
collectionData.banner,
_isMintingPublic
};
- var data = await Evm.ContractSend(Web3Accessor.Web3, method, Token.ABI.MarketplaceFactory, ChainSafeContracts.MarketplaceContracts[Web3Accessor.Web3.ChainConfig.ChainId], args);
- return data;
+ var contract = Web3Accessor.Web3.ContractBuilder.Build(ABI.MarketplaceFactory, ChainSafeContracts.MarketplaceContracts[Web3Accessor.Web3.ChainConfig.ChainId]);
+ var data = await contract.SendWithReceipt(method, args);
+ return data.receipt;
}
catch (Web3Exception e)
{
@@ -222,7 +225,7 @@ public static async Task Create1155Collection(string _bearerToken, str
/// 721 collection contract to mint from/to
/// URI in full format i.e https://ipfs.chainsafe.io/ipfs/bafyjvzacdj4apx52hvbyjkwyf7i6a7t3pcqd4kw4xxfc67hgvn3a
/// Contract send data object
- public static async Task Mint721CollectionNft(string _collectionContract, string _uri)
+ public static async Task Mint721CollectionNft(string _collectionContract, string _uri)
{
try
{
@@ -232,8 +235,9 @@ public static async Task Mint721CollectionNft(string _collectionContra
Web3Accessor.Web3.Signer.PublicAddress,
_uri
};
- var data = await Evm.ContractSend(Web3Accessor.Web3, method, Token.ABI.GeneralErc721, _collectionContract, args);
- return data;
+ var contract = Web3Accessor.Web3.ContractBuilder.Build(ABI.GeneralErc721, _collectionContract);
+ var data = await contract.SendWithReceipt(method, args);
+ return data.receipt;
}
catch (Web3Exception e)
{
@@ -249,7 +253,7 @@ public static async Task Mint721CollectionNft(string _collectionContra
/// URI in full format i.e https://ipfs.chainsafe.io/ipfs/bafyjvzacdj4apx52hvbyjkwyf7i6a7t3pcqd4kw4xxfc67hgvn3a
/// Amount of Nfts to mint
/// Contract send data object
- public static async Task Mint1155CollectionNft(string _collectionContract, string _uri, string _amount)
+ public static async Task Mint1155CollectionNft(string _collectionContract, string _uri, string _amount)
{
try
{
@@ -261,8 +265,10 @@ public static async Task Mint1155CollectionNft(string _collectionContr
_uri,
amount
};
- var data = await Evm.ContractSend(Web3Accessor.Web3, method, Token.ABI.GeneralErc1155, _collectionContract, args);
- return data;
+
+ var contract = Web3Accessor.Web3.ContractBuilder.Build(ABI.GeneralErc1155, _collectionContract);
+ var data = await contract.SendWithReceipt(method, args);
+ return data.receipt;
}
catch (Web3Exception e)
{
@@ -294,7 +300,7 @@ public static async Task DeleteCollection(string _bearerToken, string _c
/// Marketplace description
/// If whitelisting is enabled or not
/// Contract send data object
- public static async Task CreateMarketplace(string _bearerToken, string _name, string _description, bool _whitelisting)
+ public static async Task CreateMarketplace(string _bearerToken, string _name, string _description, bool _whitelisting)
{
try
{
@@ -317,8 +323,9 @@ public static async Task CreateMarketplace(string _bearerToken, string
collectionData.id,
_whitelisting
};
- var data = await Evm.ContractSend(Web3Accessor.Web3, method, Token.ABI.MarketplaceFactory, ChainSafeContracts.MarketplaceContracts[Web3Accessor.Web3.ChainConfig.ChainId] , args);
- return data;
+ var contract = Web3Accessor.Web3.ContractBuilder.Build(ABI.MarketplaceFactory, ChainSafeContracts.MarketplaceContracts[Web3Accessor.Web3.ChainConfig.ChainId]);
+ var data = await contract.SendWithReceipt(method, args);
+ return data.receipt;
}
catch (Web3Exception e)
{
@@ -348,7 +355,7 @@ public static async Task DeleteMarketplace(string _bearerToken, string _
/// Marketplace to approve
/// Permission being granted
/// Contract send data object
- public static async Task SetApprovalMarketplace(string _nftContract, string _marketplaceContract, string _type, bool _permission)
+ public static async Task SetApprovalMarketplace(string _nftContract, string _marketplaceContract, string _type, bool _permission)
{
try
{
@@ -359,8 +366,9 @@ public static async Task SetApprovalMarketplace(string _nftContract, s
_permission
};
var abi = _type == "721" ? Token.ABI.GeneralErc721 : Token.ABI.GeneralErc1155;
- var data = await Evm.ContractSend(Web3Accessor.Web3, method, abi, _nftContract, args);
- return data;
+ var contract = Web3Accessor.Web3.ContractBuilder.Build(abi, _nftContract);
+ var data = await contract.SendWithReceipt(method, args);
+ return data.receipt;
}
catch (Web3Exception e)
{
@@ -369,7 +377,14 @@ public static async Task SetApprovalMarketplace(string _nftContract, s
}
}
- public static async Task PurchaseNft(string _marketplaceContract, string _itemId, string _amountToSend)
+ ///
+ /// Purchases NFT from the marketplace
+ ///
+ /// The marketplace contract to purchase from
+ /// The NFT id to purchase
+ /// The amount to send in wei
+ /// Contract send data object
+ public static async Task PurchaseNft(string _marketplaceContract, string _itemId, string _amountToSend)
{
try
{
@@ -379,8 +394,13 @@ public static async Task PurchaseNft(string _marketplaceContract, stri
{
itemId
};
- var data = await Evm.ContractSend(Web3Accessor.Web3, method, Token.ABI.Marketplace, _marketplaceContract, args, new HexBigInteger(_amountToSend));
- return data;
+ var tx = new TransactionRequest
+ {
+ Value = new HexBigInteger(BigInteger.Parse(_amountToSend).ToString("X"))
+ };
+ var contract = Web3Accessor.Web3.ContractBuilder.Build(ABI.Marketplace, _marketplaceContract);
+ var data = await contract.SendWithReceipt(method, args, tx);
+ return data.receipt;
}
catch (Web3Exception e)
{
@@ -397,7 +417,7 @@ public static async Task PurchaseNft(string _marketplaceContract, stri
/// Toked ID to list
/// Price in wei to list for
/// Contract send data object
- public static async Task ListNftsToMarketplace(string _marketplaceContract, string _nftContract, string _tokenId, string _priceInWei)
+ public static async Task ListNftsToMarketplace(string _marketplaceContract, string _nftContract, string _tokenId, string _priceInWei)
{
try
{
@@ -412,8 +432,9 @@ public static async Task ListNftsToMarketplace(string _marketplaceCont
priceInWei,
deadline
};
- var data = await Evm.ContractSend(Web3Accessor.Web3, method, Token.ABI.Marketplace, _marketplaceContract, args);
- return data;
+ var contract = Web3Accessor.Web3.ContractBuilder.Build(ABI.Marketplace, _marketplaceContract);
+ var data = await contract.SendWithReceipt(method, args);
+ return data.receipt;
}
catch (Web3Exception e)
{
diff --git a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Evm.cs b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Evm.cs
index e712b951c..8347590cb 100644
--- a/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Evm.cs
+++ b/Packages/io.chainsafe.web3-unity/Runtime/Scripts/EVM/Token/Evm.cs
@@ -95,16 +95,14 @@ public static async Task SendArray(Web3 web3, string method, string
object[] objArray = array.Cast().ToArray();
return await contract.Send(method, new object[] { objArray });
}
-
- // todo danger - possible money loss
- // todo rework input
- public static async Task SendTransaction(Web3 web3, string to)
+
+ public static async Task SendTransaction(Web3 web3, string to, BigInteger value)
{
var txRequest = new TransactionRequest
{
To = to,
- Value = new HexBigInteger(12300000000000000),
- MaxFeePerGas = new HexBigInteger((await web3.RpcProvider.GetFeeData()).MaxFeePerGas),
+ Value = new HexBigInteger(value.ToString("X")),
+ MaxFeePerGas = new HexBigInteger((await web3.RpcProvider.GetFeeData()).MaxFeePerGas)
};
var response = await web3.TransactionExecutor.SendTransaction(txRequest);
return response.Hash;
diff --git a/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/SampleMain/EVM/EvmCalls.cs b/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/SampleMain/EVM/EvmCalls.cs
index 62b17b03a..e0e25a1a6 100644
--- a/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/SampleMain/EVM/EvmCalls.cs
+++ b/Packages/io.chainsafe.web3-unity/Samples~/Web3.Unity/Scripts/Scenes/SampleMain/EVM/EvmCalls.cs
@@ -59,6 +59,7 @@ public class EvmCalls : MonoBehaviour
[Header("Send Transaction Call")]
[SerializeField] private string toAddress = "0xdD4c825203f97984e7867F11eeCc813A036089D1";
+ [SerializeField] private string value = "12300000000000000";
#endregion
@@ -223,7 +224,7 @@ public async void RegisteredContract()
///
public async void SendTransaction()
{
- var transactionHash = await Evm.SendTransaction(Web3Accessor.Web3, toAddress);
+ var transactionHash = await Evm.SendTransaction(Web3Accessor.Web3, toAddress, BigInteger.Parse(value));
SampleOutputUtil.PrintResult(transactionHash, nameof(Evm), nameof(Evm.SendTransaction));
}
diff --git a/Packages/io.chainsafe.web3-unity/Tests/Runtime/EvmCustomResponseTests.cs b/Packages/io.chainsafe.web3-unity/Tests/Runtime/EvmCustomResponseTests.cs
index 97481e1db..4b069d1a0 100644
--- a/Packages/io.chainsafe.web3-unity/Tests/Runtime/EvmCustomResponseTests.cs
+++ b/Packages/io.chainsafe.web3-unity/Tests/Runtime/EvmCustomResponseTests.cs
@@ -28,6 +28,7 @@ public class EvmCustomResponseTests
private const int Transfer1155Amount = 1;
private const string SendToAddress = "0xdD4c825203f97984e7867F11eeCc813A036089D1";
+ private BigInteger SendToValue = 12300000000000000;
private BigInteger TransferErc20Amount = 1;
@@ -101,7 +102,7 @@ public IEnumerator TestSendTransaction()
{
const string testResponse = "0x3446b949c3d214fba7e61c9cf127eac6cd0b2983564cf76be618099879b6f1e1";
yield return BuildWeb3WithTestResponse(testResponse);
- var sendTransaction = Evm.SendTransaction(web3, SendToAddress);
+ var sendTransaction = Evm.SendTransaction(web3, SendToAddress, SendToValue);
yield return new WaitUntil(() => sendTransaction.IsCompleted);
if (sendTransaction.Exception != null) throw sendTransaction.Exception;
Assert.IsTrue(sendTransaction.IsCompletedSuccessfully);
diff --git a/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/SampleMain/EVM/EvmCalls.cs b/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/SampleMain/EVM/EvmCalls.cs
index 62b17b03a..e0e25a1a6 100644
--- a/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/SampleMain/EVM/EvmCalls.cs
+++ b/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/SampleMain/EVM/EvmCalls.cs
@@ -59,6 +59,7 @@ public class EvmCalls : MonoBehaviour
[Header("Send Transaction Call")]
[SerializeField] private string toAddress = "0xdD4c825203f97984e7867F11eeCc813A036089D1";
+ [SerializeField] private string value = "12300000000000000";
#endregion
@@ -223,7 +224,7 @@ public async void RegisteredContract()
///
public async void SendTransaction()
{
- var transactionHash = await Evm.SendTransaction(Web3Accessor.Web3, toAddress);
+ var transactionHash = await Evm.SendTransaction(Web3Accessor.Web3, toAddress, BigInteger.Parse(value));
SampleOutputUtil.PrintResult(transactionHash, nameof(Evm), nameof(Evm.SendTransaction));
}
diff --git a/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/SampleMain/Marketplace/MarketplaceCalls.cs b/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/SampleMain/Marketplace/MarketplaceCalls.cs
index 6a44404aa..caef96831 100644
--- a/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/SampleMain/Marketplace/MarketplaceCalls.cs
+++ b/src/UnitySampleProject/Assets/Samples/web3.unity SDK/2.5.0/Web3.Unity Samples/Scripts/Scenes/SampleMain/Marketplace/MarketplaceCalls.cs
@@ -63,7 +63,7 @@ public class MarketplaceCalls : MonoBehaviour
[Header("Marketplace purchase calls")]
[SerializeField] private string marketplaceContractToBuyFrom = "Set marketplace contract to buy from";
- [SerializeField] private string tokenIdToBuy = "Set token ID to buy";
+ [SerializeField] private string itemIdToBuy = "Set item ID to buy (the index id of the nft in the marketplace i.e 0 or 1)";
[SerializeField] private string weiPriceToBuy = "Set price in wei to buy with i.e 100000000000000";
#endregion
@@ -167,9 +167,8 @@ public async void GetTokenOwners()
///
public async void Create721Collection()
{
- var data = await Marketplace.Create721Collection(bearerToken, collectionName721, collectionDescription721, collectionMintingPublic721);
- var response = SampleOutputUtil.BuildOutputValue(data);
- Debug.Log($"TX: {response}");
+ var response = await Marketplace.Create721Collection(bearerToken, collectionName721, collectionDescription721, collectionMintingPublic721);
+ Debug.Log($"TX: {response.TransactionHash}");
}
///
@@ -177,9 +176,8 @@ public async void Create721Collection()
///
public async void Create1155Collection()
{
- var data = await Marketplace.Create1155Collection(bearerToken, collectionName1155, collectionDescription1155, collectionMintingPublic1155);
- var response = SampleOutputUtil.BuildOutputValue(data);
- Debug.Log($"TX: {response}");
+ var response = await Marketplace.Create1155Collection(bearerToken, collectionName1155, collectionDescription1155, collectionMintingPublic1155);
+ Debug.Log($"TX: {response.TransactionHash}");
}
///
@@ -187,9 +185,8 @@ public async void Create1155Collection()
///
public async void Mint721CollectionNft()
{
- var data = await Marketplace.Mint721CollectionNft(collectionContract721, uri721);
- var response = SampleOutputUtil.BuildOutputValue(data);
- Debug.Log($"TX: {response}");
+ var response = await Marketplace.Mint721CollectionNft(collectionContract721, uri721);
+ Debug.Log($"TX: {response.TransactionHash}");
}
///
@@ -197,9 +194,8 @@ public async void Mint721CollectionNft()
///
public async void Mint1155CollectionNft()
{
- var data = await Marketplace.Mint1155CollectionNft(collectionContract1155, uri1155, amount1155);
- var response = SampleOutputUtil.BuildOutputValue(data);
- Debug.Log($"TX: {response}");
+ var response = await Marketplace.Mint1155CollectionNft(collectionContract1155, uri1155, amount1155);
+ Debug.Log($"TX: {response.TransactionHash}");
}
///
@@ -216,9 +212,8 @@ public async void DeleteCollection()
///
public async void CreateMarketplace()
{
- var data = await Marketplace.CreateMarketplace(bearerToken, marketplaceName, marketplaceDescription, marketplaceWhitelisting);
- var response = SampleOutputUtil.BuildOutputValue(data);
- Debug.Log($"TX: {response}");
+ var response = await Marketplace.CreateMarketplace(bearerToken, marketplaceName, marketplaceDescription, marketplaceWhitelisting);
+ Debug.Log($"TX: {response.TransactionHash}");
}
///
@@ -235,9 +230,8 @@ public async void DeleteMarketplace()
///
public async void ApproveListNftsToMarketplace()
{
- var data = await Marketplace.SetApprovalMarketplace(collectionContractToList, marketplaceContractToListTo, "1155",true);
- var response = SampleOutputUtil.BuildOutputValue(data);
- Debug.Log($"TX: {response}");
+ var response = await Marketplace.SetApprovalMarketplace(collectionContractToList, marketplaceContractToListTo, "1155",true);
+ Debug.Log($"TX: {response.TransactionHash}");
}
///
@@ -245,9 +239,8 @@ public async void ApproveListNftsToMarketplace()
///
public async void RevokeApprovalListNftsToMarketplace()
{
- var data = await Marketplace.SetApprovalMarketplace(collectionContractToList, marketplaceContractToListTo, "1155",false);
- var response = SampleOutputUtil.BuildOutputValue(data);
- Debug.Log($"TX: {response}");
+ var response = await Marketplace.SetApprovalMarketplace(collectionContractToList, marketplaceContractToListTo, "1155",false);
+ Debug.Log($"TX: {response.TransactionHash}");
}
///
@@ -255,19 +248,17 @@ public async void RevokeApprovalListNftsToMarketplace()
///
public async void ListNftsToMarketplace()
{
- var data = await Marketplace.ListNftsToMarketplace(marketplaceContractToListTo,collectionContractToList, tokenIdToList, weiPriceToList);
- var response = SampleOutputUtil.BuildOutputValue(data);
- Debug.Log($"TX: {response}");
+ var response = await Marketplace.ListNftsToMarketplace(marketplaceContractToListTo,collectionContractToList, tokenIdToList, weiPriceToList);
+ Debug.Log($"TX: {response.TransactionHash}");
}
///
- /// Purchases an Nft from the marketplace
+ /// Purchases Nft from the marketplace
///
public async void PurchaseNftFromMarketplace()
{
- var data = await Marketplace.PurchaseNft(marketplaceContractToBuyFrom, tokenIdToBuy, weiPriceToBuy);
- var response = SampleOutputUtil.BuildOutputValue(data);
- Debug.Log($"TX: {response}");
+ var response = await Marketplace.PurchaseNft(marketplaceContractToBuyFrom, itemIdToBuy, weiPriceToBuy);
+ Debug.Log($"TX: {response.TransactionHash}");
}
#endregion