Skip to content

Commit e26c680

Browse files
committed
Support for legacy tx chains w/ local wallets + overrides
1 parent e2b88f3 commit e26c680

File tree

6 files changed

+6548
-1060
lines changed

6 files changed

+6548
-1060
lines changed

Assets/Thirdweb/Core/Scripts/Contract.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,9 +202,12 @@ public async Task<TransactionResult> Write(string functionName, TransactionReque
202202
? new HexBigInteger(BigInteger.Parse(transactionOverrides?.gasLimit))
203203
: await function.EstimateGasAsync(await ThirdwebManager.Instance.SDK.wallet.GetAddress(), null, value, args);
204204

205+
var gasPrice = transactionOverrides?.gasPrice != null ? new HexBigInteger(BigInteger.Parse(transactionOverrides?.gasPrice)) : null;
206+
205207
var receipt = await function.SendTransactionAndWaitForReceiptAsync(
206208
from: transactionOverrides?.from ?? await ThirdwebManager.Instance.SDK.wallet.GetAddress(),
207209
gas: gas,
210+
gasPrice: gasPrice,
208211
value: value,
209212
receiptRequestCancellationToken: null,
210213
args

Assets/Thirdweb/Core/Scripts/ThirdwebSession.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ internal async Task EnsureCorrectNetwork(BigInteger newChainId)
180180
CurrentChainData = newChainData;
181181
RPC = CurrentChainData.rpcUrls[0];
182182
Web3 = await ActiveWallet.GetWeb3();
183+
Web3.TransactionManager.UseLegacyAsDefault = !Utils.Supports1559(newChainId.ToString());
183184
Web3.Client.OverridingRequestInterceptor = new ThirdwebInterceptor(ActiveWallet);
184185
}
185186

@@ -200,19 +201,20 @@ private async Task AddNetwork(ThirdwebChainData newChainData)
200201
public static ThirdwebChainData FetchChainData(BigInteger chainId, string rpcOverride = null)
201202
{
202203
var allChainsJson = (TextAsset)Resources.Load("all_chains", typeof(TextAsset));
204+
var allChainsData = JsonConvert.DeserializeObject<List<ChainIDNetworkData>>(allChainsJson.text, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Include });
203205

204-
List<ChainIDNetworkData> allNetworkData = JsonConvert.DeserializeObject<List<ChainIDNetworkData>>(
205-
allChainsJson.text,
206-
new JsonSerializerSettings { NullValueHandling = NullValueHandling.Include }
207-
);
206+
var additionalChainsJson = (TextAsset)Resources.Load("all_chains_additional", typeof(TextAsset));
207+
var additionalChainsData = JsonConvert.DeserializeObject<List<ChainIDNetworkData>>(additionalChainsJson.text, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Include });
208208

209-
ChainIDNetworkData currentNetwork = allNetworkData.Find(x => x.chainId == chainId.ToString());
209+
allChainsData.AddRange(additionalChainsData);
210+
211+
ChainIDNetworkData currentNetwork = allChainsData.Find(x => x.chainId == chainId.ToString());
210212

211213
var explorerUrls = new List<string>();
212214
if (currentNetwork.explorers != null)
213215
{
214216
foreach (var explorer in currentNetwork.explorers)
215-
explorerUrls.Add(explorer.url);
217+
explorerUrls.Add(explorer.url.Replace("http://", "https://"));
216218
}
217219
if (explorerUrls.Count == 0)
218220
explorerUrls.Add("https://etherscan.io");

Assets/Thirdweb/Core/Scripts/Utils.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,5 +434,23 @@ public static string GetNativeTokenWrapper(BigInteger chainId)
434434
_ => throw new UnityException("Native Token Wrapper Unavailable For This Chain!"),
435435
};
436436
}
437+
438+
public static bool Supports1559(string chainId)
439+
{
440+
switch (chainId)
441+
{
442+
// BNB Mainnet
443+
case "56":
444+
// BNB Testnet
445+
case "97":
446+
// opBNB Mainnet
447+
case "204":
448+
// opBNB Testnet
449+
case "5611":
450+
return false;
451+
default:
452+
return true;
453+
}
454+
}
437455
}
438456
}

0 commit comments

Comments
 (0)