Skip to content

Commit c01fbc5

Browse files
committed
feat: added zkevm get transaction receipt method
1 parent 0731409 commit c01fbc5

File tree

10 files changed

+1464
-101
lines changed

10 files changed

+1464
-101
lines changed

sample/Assets/Scenes/AuthenticatedScene.unity

Lines changed: 1316 additions & 95 deletions
Large diffs are not rendered by default.

sample/Assets/Scripts/AuthenticatedScript.cs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using Immutable.Passport;
99
using Immutable.Passport.Model;
1010
using Immutable.Passport.Event;
11+
using Unity.VisualScripting;
1112

1213
public class AuthenticatedScript : MonoBehaviour
1314
{
@@ -48,6 +49,7 @@ public class AuthenticatedScript : MonoBehaviour
4849
[SerializeField] private Button SendTransactionButton;
4950
[SerializeField] private Button RequestAccountsButton;
5051
[SerializeField] private Button GetBalanceButton;
52+
[SerializeField] private Button GetTransactionReceiptButton;
5153

5254
// ZkEVM Get Balance Transaction
5355
[SerializeField] private Canvas ZkGetBalanceCanvas;
@@ -59,6 +61,10 @@ public class AuthenticatedScript : MonoBehaviour
5961
[SerializeField] private InputField ZkSendTransactionValue;
6062
[SerializeField] private InputField ZkSendTransactionData;
6163

64+
// ZkEVM Get Transaction Receipt
65+
[SerializeField] private Canvas ZkGetTransactionReceiptCanvas;
66+
[SerializeField] private InputField ZkGetTransactionReceiptHash;
67+
6268
private Passport passport;
6369
#pragma warning restore CS8618
6470

@@ -315,6 +321,7 @@ public async void ConnectEvm()
315321
SendTransactionButton.gameObject.SetActive(true);
316322
RequestAccountsButton.gameObject.SetActive(true);
317323
GetBalanceButton.gameObject.SetActive(true);
324+
GetTransactionReceiptButton.gameObject.SetActive(true);
318325
}
319326
catch (Exception ex)
320327
{
@@ -399,6 +406,33 @@ public void CancelZkGetBalance()
399406
ZkGetBalanceCanvas.gameObject.SetActive(false);
400407
}
401408

409+
public async void GetZkTransactionReceiptStatus()
410+
{
411+
try
412+
{
413+
ShowOutput($"Getting zkEVM transaction receipt...");
414+
TransactionReceiptResponse response = await passport.ZkEvmGetTransactionReceipt(ZkGetTransactionReceiptHash.text);
415+
ShowOutput($"Transaction receipt status: {response.status}");
416+
}
417+
catch (Exception ex)
418+
{
419+
ShowOutput($"Failed to get transaction receipt: {ex.Message}");
420+
}
421+
}
422+
423+
public void ShowZkTransactionReceiptStatus()
424+
{
425+
AuthenticatedCanvas.gameObject.SetActive(false);
426+
ZkGetTransactionReceiptCanvas.gameObject.SetActive(true);
427+
ZkGetTransactionReceiptHash.text = "";
428+
}
429+
430+
public void CancelZkTransactionReceiptStatus()
431+
{
432+
AuthenticatedCanvas.gameObject.SetActive(true);
433+
ZkGetTransactionReceiptCanvas.gameObject.SetActive(false);
434+
}
435+
402436
public void ClearStorageAndCache()
403437
{
404438
#if (UNITY_IPHONE && !UNITY_EDITOR) || (UNITY_ANDROID && !UNITY_EDITOR)

src/Packages/Passport/Runtime/Resources/index.html

Lines changed: 6 additions & 6 deletions
Large diffs are not rendered by default.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
using System;
2+
3+
namespace Immutable.Passport.Model
4+
{
5+
[Serializable]
6+
public class TransactionReceiptRequest
7+
{
8+
public string txHash;
9+
}
10+
}

src/Packages/Passport/Runtime/Scripts/Private/Model/Request/TransactionReceiptRequest.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
namespace Immutable.Passport.Model
2+
{
3+
public class TransactionReceiptResponse
4+
{
5+
public string blockHash;
6+
7+
public string blockNumber;
8+
9+
public string contractAddress;
10+
11+
public string cumulativeGasUsed;
12+
13+
public string effectiveGasPrice;
14+
15+
public string from;
16+
17+
public string gasUsed;
18+
19+
public Log[] logs;
20+
21+
public string logsBloom;
22+
23+
public string status;
24+
25+
public string to;
26+
27+
public string transactionHash;
28+
29+
public string transactionIndex;
30+
31+
public string type;
32+
33+
public class Log
34+
{
35+
public string address;
36+
37+
public string[] topics;
38+
39+
public string data;
40+
41+
public string blockNumber;
42+
43+
public string transactionHash;
44+
45+
public string transactionIndex;
46+
47+
public string blockHash;
48+
49+
public string logIndex;
50+
51+
public bool removed;
52+
}
53+
}
54+
}

src/Packages/Passport/Runtime/Scripts/Private/Model/Response/TransactionReceiptResponse.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Packages/Passport/Runtime/Scripts/Private/PassportFunction.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public static class ZK_EVM
3131
{
3232
public const string CONNECT_EVM = "connectEvm";
3333
public const string SEND_TRANSACTION = "zkEvmSendTransaction";
34+
public const string GET_TRANSACTION_RECEIPT = "zkEvmGetTransactionReceipt";
3435
public const string REQUEST_ACCOUNTS = "zkEvmRequestAccounts";
3536
public const string GET_BALANCE = "zkEvmGetBalance";
3637
}

src/Packages/Passport/Runtime/Scripts/Private/PassportImpl.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -703,6 +703,16 @@ public async UniTask<string> ZkEvmSendTransaction(TransactionRequest request)
703703
return callResponse.GetStringResult();
704704
}
705705

706+
public async UniTask<TransactionReceiptResponse?> ZkEvmGetTransactionReceipt(string hash)
707+
{
708+
string json = JsonUtility.ToJson(new TransactionReceiptRequest()
709+
{
710+
txHash = hash
711+
});
712+
string jsonResponse = await communicationsManager.Call(PassportFunction.ZK_EVM.GET_TRANSACTION_RECEIPT, json);
713+
return jsonResponse.OptDeserializeObject<TransactionReceiptResponse>();
714+
}
715+
706716
public async UniTask<List<string>> ZkEvmRequestAccounts()
707717
{
708718
string callResponse = await communicationsManager.Call(PassportFunction.ZK_EVM.REQUEST_ACCOUNTS);

src/Packages/Passport/Runtime/Scripts/Public/Passport.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,17 @@ public async UniTask<string> ZkEvmSendTransaction(TransactionRequest request)
333333
return await GetPassportImpl().ZkEvmSendTransaction(request);
334334
}
335335

336+
/// <summary>
337+
/// Returns a sent/submitted transaction status information
338+
/// <returns>
339+
/// The receipt of transaction, or null if the transaction is still in process
340+
/// </returns>
341+
/// </summary>
342+
public async UniTask<TransactionReceiptResponse> ZkEvmGetTransactionReceipt(string hash)
343+
{
344+
return await GetPassportImpl().ZkEvmGetTransactionReceipt(hash);
345+
}
346+
336347
/// <summary>
337348
/// Returns a list of addresses owned by the user
338349
/// <returns>

0 commit comments

Comments
 (0)