Skip to content

Commit c985e10

Browse files
committed
Fix price to wei + allow pk override on generate sigs + commas option for parsing
1 parent 8417edf commit c985e10

File tree

6 files changed

+69
-27
lines changed

6 files changed

+69
-27
lines changed

Assets/Thirdweb/Core/Scripts/EIP712.cs

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,19 @@ public static class EIP712
1818
{
1919
/// SIGNATURE GENERATION ///
2020

21-
public async static Task<string> GenerateSignature_TokenERC20(string domainName, string version, BigInteger chainId, string verifyingContract, TokenERC20Contract.MintRequest mintRequest)
21+
public async static Task<string> GenerateSignature_TokenERC20(
22+
string domainName,
23+
string version,
24+
BigInteger chainId,
25+
string verifyingContract,
26+
TokenERC20Contract.MintRequest mintRequest,
27+
string privateKeyOverride = null
28+
)
2229
{
23-
if (ThirdwebManager.Instance.SDK.nativeSession.account != null)
30+
if (privateKeyOverride != null || ThirdwebManager.Instance.SDK.nativeSession.account != null)
2431
{
2532
var signer = new Eip712TypedDataSigner();
26-
var key = new EthECKey(ThirdwebManager.Instance.SDK.nativeSession.account.PrivateKey);
33+
var key = new EthECKey(privateKeyOverride ?? ThirdwebManager.Instance.SDK.nativeSession.account.PrivateKey);
2734
var typedData = GetTypedDefinition_TokenERC20(domainName, version, chainId, verifyingContract);
2835
var signature = signer.SignTypedDataV4(mintRequest, typedData, key);
2936
return signature;
@@ -89,12 +96,19 @@ public class ERC20MintRequestBaseWalletConnect
8996
public virtual string Uid { get; set; }
9097
}
9198

92-
public async static Task<string> GenerateSignature_TokenERC721(string domainName, string version, BigInteger chainId, string verifyingContract, TokenERC721Contract.MintRequest mintRequest)
99+
public async static Task<string> GenerateSignature_TokenERC721(
100+
string domainName,
101+
string version,
102+
BigInteger chainId,
103+
string verifyingContract,
104+
TokenERC721Contract.MintRequest mintRequest,
105+
string privateKeyOverride = null
106+
)
93107
{
94-
if (ThirdwebManager.Instance.SDK.nativeSession.account != null)
108+
if (privateKeyOverride != null || ThirdwebManager.Instance.SDK.nativeSession.account != null)
95109
{
96110
var signer = new Eip712TypedDataSigner();
97-
var key = new EthECKey(ThirdwebManager.Instance.SDK.nativeSession.account.PrivateKey);
111+
var key = new EthECKey(privateKeyOverride ?? ThirdwebManager.Instance.SDK.nativeSession.account.PrivateKey);
98112
var typedData = GetTypedDefinition_TokenERC721(domainName, version, chainId, verifyingContract);
99113
var signature = signer.SignTypedDataV4(mintRequest, typedData, key);
100114
return signature;
@@ -161,12 +175,19 @@ public class ERC721MintRequestBaseWalletConnect
161175
public virtual string Uid { get; set; }
162176
}
163177

164-
public async static Task<string> GenerateSignature_TokenERC1155(string domainName, string version, BigInteger chainId, string verifyingContract, TokenERC1155Contract.MintRequest mintRequest)
178+
public async static Task<string> GenerateSignature_TokenERC1155(
179+
string domainName,
180+
string version,
181+
BigInteger chainId,
182+
string verifyingContract,
183+
TokenERC1155Contract.MintRequest mintRequest,
184+
string privateKeyOverride = null
185+
)
165186
{
166-
if (ThirdwebManager.Instance.SDK.nativeSession.account != null)
187+
if (privateKeyOverride != null || ThirdwebManager.Instance.SDK.nativeSession.account != null)
167188
{
168189
var signer = new Eip712TypedDataSigner();
169-
var key = new EthECKey(ThirdwebManager.Instance.SDK.nativeSession.account.PrivateKey);
190+
var key = new EthECKey(privateKeyOverride ?? ThirdwebManager.Instance.SDK.nativeSession.account.PrivateKey);
170191
var typedData = GetTypedDefinition_TokenERC1155(domainName, version, chainId, verifyingContract);
171192
var signature = signer.SignTypedDataV4(mintRequest, typedData, key);
172193
return signature;
@@ -298,13 +319,14 @@ public async static Task<string> GenerateSignature_MinimalForwarder(
298319
string version,
299320
BigInteger chainId,
300321
string verifyingContract,
301-
MinimalForwarder.ForwardRequest forwardRequest
322+
MinimalForwarder.ForwardRequest forwardRequest,
323+
string privateKeyOverride = null
302324
)
303325
{
304-
if (ThirdwebManager.Instance.SDK.nativeSession.account != null)
326+
if (privateKeyOverride != null || ThirdwebManager.Instance.SDK.nativeSession.account != null)
305327
{
306328
var signer = new Eip712TypedDataSigner();
307-
var key = new EthECKey(ThirdwebManager.Instance.SDK.nativeSession.account.PrivateKey);
329+
var key = new EthECKey(privateKeyOverride ?? ThirdwebManager.Instance.SDK.nativeSession.account.PrivateKey);
308330
var typedData = GetTypedDefinition_MinimalForwarder(domainName, version, chainId, verifyingContract);
309331
var signature = signer.SignTypedDataV4(forwardRequest, typedData, key);
310332
return signature;

Assets/Thirdweb/Core/Scripts/ERC1155.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -629,7 +629,7 @@ public ERC1155Signature(string parentRoute, string contractAddress)
629629
/// <summary>
630630
/// Generate a signed mintable payload. Requires minting permission.
631631
/// </summary>
632-
public async Task<ERC1155SignedPayload> Generate(ERC1155MintPayload payloadToSign)
632+
public async Task<ERC1155SignedPayload> Generate(ERC1155MintPayload payloadToSign, string privateKeyOverride = "")
633633
{
634634
if (Utils.IsWebGLBuild())
635635
{
@@ -658,14 +658,21 @@ public async Task<ERC1155SignedPayload> Generate(ERC1155MintPayload payloadToSig
658658
TokenId = Utils.GetMaxUint256(),
659659
Uri = uri.IpfsHash.cidToIpfsUrl(),
660660
Quantity = payloadToSign.quantity,
661-
PricePerToken = BigInteger.Parse(payloadToSign.price),
661+
PricePerToken = BigInteger.Parse(payloadToSign.price.ToWei()),
662662
Currency = payloadToSign.currencyAddress,
663663
ValidityStartTimestamp = startTime,
664664
ValidityEndTimestamp = endTime,
665665
Uid = payloadToSign.uid.HexStringToByteArray()
666666
};
667667

668-
string signature = await Thirdweb.EIP712.GenerateSignature_TokenERC1155("TokenERC1155", "1", await ThirdwebManager.Instance.SDK.wallet.GetChainId(), contractAddress, req);
668+
string signature = await Thirdweb.EIP712.GenerateSignature_TokenERC1155(
669+
"TokenERC1155",
670+
"1",
671+
await ThirdwebManager.Instance.SDK.wallet.GetChainId(),
672+
contractAddress,
673+
req,
674+
string.IsNullOrEmpty(privateKeyOverride) ? null : privateKeyOverride
675+
);
669676

670677
ERC1155SignedPayload signedPayload = new ERC1155SignedPayload();
671678
signedPayload.signature = signature;

Assets/Thirdweb/Core/Scripts/ERC20.cs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -462,7 +462,7 @@ public ERC20Signature(string parentRoute, string contractAddress)
462462
/// <summary>
463463
/// Generate a signed mintable payload. Requires minting permission.
464464
/// </summary>
465-
public async Task<ERC20SignedPayload> Generate(ERC20MintPayload payloadToSign)
465+
public async Task<ERC20SignedPayload> Generate(ERC20MintPayload payloadToSign, string privateKeyOverride = "")
466466
{
467467
if (Utils.IsWebGLBuild())
468468
{
@@ -481,15 +481,21 @@ public async Task<ERC20SignedPayload> Generate(ERC20MintPayload payloadToSign)
481481
To = payloadToSign.to,
482482
PrimarySaleRecipient = primarySaleRecipient.ReturnValue1,
483483
Quantity = BigInteger.Parse(payloadToSign.quantity.ToWei()),
484-
Price = BigInteger.Parse(payloadToSign.price),
484+
Price = BigInteger.Parse(payloadToSign.price.ToWei()),
485485
Currency = payloadToSign.currencyAddress,
486486
ValidityStartTimestamp = startTime,
487487
ValidityEndTimestamp = endTime,
488488
Uid = payloadToSign.uid.HexStringToByteArray()
489489
};
490490

491-
var name = await TransactionManager.ThirdwebRead<TokenERC20Contract.NameFunction, TokenERC20Contract.NameOutputDTO>(contractAddress, new TokenERC20Contract.NameFunction() { });
492-
string signature = await Thirdweb.EIP712.GenerateSignature_TokenERC20(name.ReturnValue1, "1", await ThirdwebManager.Instance.SDK.wallet.GetChainId(), contractAddress, req);
491+
string signature = await Thirdweb.EIP712.GenerateSignature_TokenERC20(
492+
"TokenERC20",
493+
"1",
494+
await ThirdwebManager.Instance.SDK.wallet.GetChainId(),
495+
contractAddress,
496+
req,
497+
string.IsNullOrEmpty(privateKeyOverride) ? null : privateKeyOverride
498+
);
493499

494500
ERC20SignedPayload signedPayload = new ERC20SignedPayload();
495501
signedPayload.signature = signature;

Assets/Thirdweb/Core/Scripts/ERC721.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -601,7 +601,7 @@ public ERC721Signature(string parentRoute, string contractAddress)
601601
/// <summary>
602602
/// Generate a signed mintable payload. Requires minting permission.
603603
/// </summary>
604-
public async Task<ERC721SignedPayload> Generate(ERC721MintPayload payloadToSign)
604+
public async Task<ERC721SignedPayload> Generate(ERC721MintPayload payloadToSign, string privateKeyOverride = "")
605605
{
606606
if (Utils.IsWebGLBuild())
607607
{
@@ -628,14 +628,21 @@ public async Task<ERC721SignedPayload> Generate(ERC721MintPayload payloadToSign)
628628
RoyaltyBps = royaltyInfo.ReturnValue2,
629629
PrimarySaleRecipient = primarySaleRecipient.ReturnValue1,
630630
Uri = uri.IpfsHash.cidToIpfsUrl(),
631-
Price = BigInteger.Parse(payloadToSign.price),
631+
Price = BigInteger.Parse(payloadToSign.price.ToWei()),
632632
Currency = payloadToSign.currencyAddress,
633633
ValidityStartTimestamp = startTime,
634634
ValidityEndTimestamp = endTime,
635635
Uid = payloadToSign.uid.HexStringToByteArray()
636636
};
637637

638-
string signature = await Thirdweb.EIP712.GenerateSignature_TokenERC721("TokenERC721", "1", await ThirdwebManager.Instance.SDK.wallet.GetChainId(), contractAddress, req);
638+
string signature = await Thirdweb.EIP712.GenerateSignature_TokenERC721(
639+
"TokenERC721",
640+
"1",
641+
await ThirdwebManager.Instance.SDK.wallet.GetChainId(),
642+
contractAddress,
643+
req,
644+
string.IsNullOrEmpty(privateKeyOverride) ? null : privateKeyOverride
645+
);
639646

640647
ERC721SignedPayload signedPayload = new ERC721SignedPayload();
641648
signedPayload.signature = signature;

Assets/Thirdweb/Core/Scripts/Utils.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,18 +71,18 @@ public static string ToWei(this string eth)
7171
return wei.ToString();
7272
}
7373

74-
public static string ToEth(this string wei, int decimalsToDisplay = 4)
74+
public static string ToEth(this string wei, int decimalsToDisplay = 4, bool addCommas = true)
7575
{
76-
return FormatERC20(wei, decimalsToDisplay);
76+
return FormatERC20(wei, decimalsToDisplay, 18, addCommas);
7777
}
7878

79-
public static string FormatERC20(this string wei, int decimalsToDisplay = 4, int decimals = 18)
79+
public static string FormatERC20(this string wei, int decimalsToDisplay = 4, int decimals = 18, bool addCommas = true)
8080
{
8181
BigInteger weiBigInt = 0;
8282
if (!BigInteger.TryParse(wei, out weiBigInt))
8383
throw new ArgumentException("Invalid wei value.");
8484
double eth = (double)weiBigInt / Math.Pow(10.0, decimals);
85-
string format = "#,0";
85+
string format = addCommas ? "#,0" : "#0";
8686
if (decimalsToDisplay > 0)
8787
format += ".";
8888
for (int i = 0; i < decimalsToDisplay; i++)

ProjectSettings/ProjectSettings.asset

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ PlayerSettings:
136136
16:10: 1
137137
16:9: 1
138138
Others: 1
139-
bundleVersion: 2.0.3
139+
bundleVersion: 2.0.4
140140
preloadedAssets: []
141141
metroInputSource: 0
142142
wsaTransparentSwapchain: 0

0 commit comments

Comments
 (0)