这是indexloc提供的服务,不要输入任何密码
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -133,7 +134,7 @@ public class Marketplace
/// <param name="_description">Description of the 721 collection being created</param>
/// <param name="_isMintingPublic">If minting is public or not</param>
/// <returns>Contract send data object</returns>
public static async Task<object[]> Create721Collection(string _bearerToken, string _name, string _description, bool _isMintingPublic)
public static async Task<TransactionReceipt> Create721Collection(string _bearerToken, string _name, string _description, bool _isMintingPublic)
{
var logoImageData = await UploadPlatforms.GetImageData();
var bannerImageData = await UploadPlatforms.GetImageData();
Expand Down Expand Up @@ -163,8 +164,9 @@ public static async Task<object[]> 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;
}

/// <summary>
Expand All @@ -176,7 +178,7 @@ public static async Task<object[]> Create721Collection(string _bearerToken, stri
/// <param name="_description">Description of the 1155 collection being created</param>
/// <param name="_isMintingPublic">If minting is public or not</param>
/// <returns>Contract send data object</returns>
public static async Task<object[]> Create1155Collection(string _bearerToken, string _name, string _description, bool _isMintingPublic)
public static async Task<TransactionReceipt> Create1155Collection(string _bearerToken, string _name, string _description, bool _isMintingPublic)
{
try
{
Expand Down Expand Up @@ -206,8 +208,9 @@ public static async Task<object[]> 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)
{
Expand All @@ -222,7 +225,7 @@ public static async Task<object[]> Create1155Collection(string _bearerToken, str
/// <param name="_collectionContract">721 collection contract to mint from/to</param>
/// <param name="_uri">URI in full format i.e https://ipfs.chainsafe.io/ipfs/bafyjvzacdj4apx52hvbyjkwyf7i6a7t3pcqd4kw4xxfc67hgvn3a</param>
/// <returns>Contract send data object</returns>
public static async Task<object[]> Mint721CollectionNft(string _collectionContract, string _uri)
public static async Task<TransactionReceipt> Mint721CollectionNft(string _collectionContract, string _uri)
{
try
{
Expand All @@ -232,8 +235,9 @@ public static async Task<object[]> 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)
{
Expand All @@ -249,7 +253,7 @@ public static async Task<object[]> Mint721CollectionNft(string _collectionContra
/// <param name="_uri">URI in full format i.e https://ipfs.chainsafe.io/ipfs/bafyjvzacdj4apx52hvbyjkwyf7i6a7t3pcqd4kw4xxfc67hgvn3a</param>
/// <param name="_amount">Amount of Nfts to mint</param>
/// <returns>Contract send data object</returns>
public static async Task<object[]> Mint1155CollectionNft(string _collectionContract, string _uri, string _amount)
public static async Task<TransactionReceipt> Mint1155CollectionNft(string _collectionContract, string _uri, string _amount)
{
try
{
Expand All @@ -261,8 +265,10 @@ public static async Task<object[]> 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)
{
Expand Down Expand Up @@ -294,7 +300,7 @@ public static async Task<string> DeleteCollection(string _bearerToken, string _c
/// <param name="_description">Marketplace description</param>
/// <param name="_whitelisting">If whitelisting is enabled or not</param>
/// <returns>Contract send data object</returns>
public static async Task<object[]> CreateMarketplace(string _bearerToken, string _name, string _description, bool _whitelisting)
public static async Task<TransactionReceipt> CreateMarketplace(string _bearerToken, string _name, string _description, bool _whitelisting)
{
try
{
Expand All @@ -317,8 +323,9 @@ public static async Task<object[]> 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)
{
Expand Down Expand Up @@ -348,7 +355,7 @@ public static async Task<string> DeleteMarketplace(string _bearerToken, string _
/// <param name="_marketplaceContract">Marketplace to approve</param>
/// <param name="_permission">Permission being granted</param>
/// <returns>Contract send data object</returns>
public static async Task<object[]> SetApprovalMarketplace(string _nftContract, string _marketplaceContract, string _type, bool _permission)
public static async Task<TransactionReceipt> SetApprovalMarketplace(string _nftContract, string _marketplaceContract, string _type, bool _permission)
{
try
{
Expand All @@ -359,8 +366,9 @@ public static async Task<object[]> 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)
{
Expand All @@ -369,7 +377,14 @@ public static async Task<object[]> SetApprovalMarketplace(string _nftContract, s
}
}

public static async Task<object[]> PurchaseNft(string _marketplaceContract, string _itemId, string _amountToSend)
/// <summary>
/// Purchases NFT from the marketplace
/// </summary>
/// <param name="_marketplaceContract">The marketplace contract to purchase from</param>
/// <param name="_itemId">The NFT id to purchase</param>
/// <param name="_amountToSend">The amount to send in wei</param>
/// <returns>Contract send data object</returns>
public static async Task<TransactionReceipt> PurchaseNft(string _marketplaceContract, string _itemId, string _amountToSend)
{
try
{
Expand All @@ -379,8 +394,13 @@ public static async Task<object[]> 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)
{
Expand All @@ -397,7 +417,7 @@ public static async Task<object[]> PurchaseNft(string _marketplaceContract, stri
/// <param name="_tokenId">Toked ID to list</param>
/// <param name="_price">Price in wei to list for</param>
/// <returns>Contract send data object</returns>
public static async Task<object[]> ListNftsToMarketplace(string _marketplaceContract, string _nftContract, string _tokenId, string _priceInWei)
public static async Task<TransactionReceipt> ListNftsToMarketplace(string _marketplaceContract, string _nftContract, string _tokenId, string _priceInWei)
{
try
{
Expand All @@ -412,8 +432,9 @@ public static async Task<object[]> 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)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,16 +95,14 @@ public static async Task<object[]> SendArray<T>(Web3 web3, string method, string
object[] objArray = array.Cast<object>().ToArray();
return await contract.Send(method, new object[] { objArray });
}

// todo danger - possible money loss
// todo rework input
public static async Task<string> SendTransaction(Web3 web3, string to)

public static async Task<string> 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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ public class EvmCalls : MonoBehaviour

[Header("Send Transaction Call")]
[SerializeField] private string toAddress = "0xdD4c825203f97984e7867F11eeCc813A036089D1";
[SerializeField] private string value = "12300000000000000";

#endregion

Expand Down Expand Up @@ -223,7 +224,7 @@ public async void RegisteredContract()
/// </summary>
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));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ public class EvmCalls : MonoBehaviour

[Header("Send Transaction Call")]
[SerializeField] private string toAddress = "0xdD4c825203f97984e7867F11eeCc813A036089D1";
[SerializeField] private string value = "12300000000000000";

#endregion

Expand Down Expand Up @@ -223,7 +224,7 @@ public async void RegisteredContract()
/// </summary>
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));
}

Expand Down
Loading