Skip to content

Commit f76e350

Browse files
authored
Merge pull request #185 from immutable/feat/transfer_check
[DX-2784] feat: added zkevm transaction receipt acquirement method
2 parents 374f177 + e21a7a1 commit f76e350

File tree

10 files changed

+1469
-101
lines changed

10 files changed

+1469
-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: 35 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,34 @@ 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 status...");
414+
415+
TransactionReceiptResponse response = await passport.ZkEvmGetTransactionReceipt(ZkGetTransactionReceiptHash.text);
416+
ShowOutput($"Transaction receipt status: {(response.status == "0x1" ? "Success" : "Failed")}");
417+
}
418+
catch (Exception ex)
419+
{
420+
ShowOutput($"Failed to get transaction receipt: {ex.Message}");
421+
}
422+
}
423+
424+
public void ShowZkTransactionReceiptStatus()
425+
{
426+
AuthenticatedCanvas.gameObject.SetActive(false);
427+
ZkGetTransactionReceiptCanvas.gameObject.SetActive(true);
428+
ZkGetTransactionReceiptHash.text = "";
429+
}
430+
431+
public void CancelZkTransactionReceiptStatus()
432+
{
433+
AuthenticatedCanvas.gameObject.SetActive(true);
434+
ZkGetTransactionReceiptCanvas.gameObject.SetActive(false);
435+
}
436+
402437
public void ClearStorageAndCache()
403438
{
404439
#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: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
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+
/// <summary>
24+
/// Either 1 (success) or 0 (failure) encoded as a hexadecimal.
25+
/// </summary>
26+
public string status;
27+
28+
public string to;
29+
30+
public string transactionHash;
31+
32+
public string transactionIndex;
33+
34+
public string type;
35+
36+
public class Log
37+
{
38+
public string address;
39+
40+
public string[] topics;
41+
42+
public string data;
43+
44+
public string blockNumber;
45+
46+
public string transactionHash;
47+
48+
public string transactionIndex;
49+
50+
public string blockHash;
51+
52+
public string logIndex;
53+
54+
public bool removed;
55+
}
56+
}
57+
}

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: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,18 @@ public async UniTask<string> ZkEvmSendTransaction(TransactionRequest request)
333333
return await GetPassportImpl().ZkEvmSendTransaction(request);
334334
}
335335

336+
/// <summary>
337+
/// Retrieves the transaction information of a given transaction hash. This function uses the Ethereum JSON-RPC <c>eth_getTransactionReceipt</c> method.
338+
/// <returns>
339+
/// The receipt of the transaction or null if it is still processing.
340+
341+
/// </returns>
342+
/// </summary>
343+
public async UniTask<TransactionReceiptResponse> ZkEvmGetTransactionReceipt(string hash)
344+
{
345+
return await GetPassportImpl().ZkEvmGetTransactionReceipt(hash);
346+
}
347+
336348
/// <summary>
337349
/// Returns a list of addresses owned by the user
338350
/// <returns>

0 commit comments

Comments
 (0)