diff --git a/sample/Assets/Scenes/AuthenticatedScene.unity b/sample/Assets/Scenes/AuthenticatedScene.unity index b751e161..dc139a01 100644 --- a/sample/Assets/Scenes/AuthenticatedScene.unity +++ b/sample/Assets/Scenes/AuthenticatedScene.unity @@ -4752,6 +4752,86 @@ Canvas: m_SortingLayerID: 0 m_SortingOrder: 0 m_TargetDisplay: 0 +--- !u!1 &885137215 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 885137216} + - component: {fileID: 885137218} + - component: {fileID: 885137217} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &885137216 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 885137215} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1782090443} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 9, y: -0.5} + m_SizeDelta: {x: -28, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &885137217 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 885137215} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: With Confirmation +--- !u!222 &885137218 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 885137215} + m_CullTransparentMesh: 1 --- !u!1 &885231613 GameObject: m_ObjectHideFlags: 0 @@ -6693,11 +6773,11 @@ RectTransform: m_Children: - {fileID: 979044664} m_Father: {fileID: 1343113122} - m_RootOrder: 7 + m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 257, y: -215} + m_AnchoredPosition: {x: 257, y: -260} m_SizeDelta: {x: 150, y: 30} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1105336910 @@ -7643,6 +7723,7 @@ MonoBehaviour: GetTransactionReceiptButton: {fileID: 942613827} ZkGetBalanceCanvas: {fileID: 1140911603} ZkGetBalanceAccount: {fileID: 885231615} + ZkSendTransactionConfirm: {fileID: 1782090444} ZkSendTransactionCanvas: {fileID: 1343113126} ZkSendTransactionTo: {fileID: 649013321} ZkSendTransactionValue: {fileID: 1901422923} @@ -7889,6 +7970,83 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1255811780} m_CullTransparentMesh: 1 +--- !u!1 &1256285007 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1256285008} + - component: {fileID: 1256285010} + - component: {fileID: 1256285009} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1256285008 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1256285007} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1550326032} + m_Father: {fileID: 1782090443} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -10} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1256285009 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1256285007} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1256285010 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1256285007} + m_CullTransparentMesh: 1 --- !u!1 &1260077984 GameObject: m_ObjectHideFlags: 0 @@ -8040,7 +8198,7 @@ MonoBehaviour: m_TargetGraphic: {fileID: 1375070108} m_HandleRect: {fileID: 1375070107} m_Direction: 0 - m_Value: 1 + m_Value: 0 m_Size: 1 m_NumberOfSteps: 0 m_OnValueChanged: @@ -8333,6 +8491,7 @@ RectTransform: - {fileID: 1901422920} - {fileID: 1216631574} - {fileID: 1391622484} + - {fileID: 1782090443} - {fileID: 1105336909} - {fileID: 1915690145} m_Father: {fileID: 1850628784} @@ -8962,7 +9121,7 @@ RectTransform: m_GameObject: {fileID: 1391622482} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.99999994, y: 0.99999994, z: 0.99999994} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1349875449} @@ -9517,6 +9676,82 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1521624798} m_CullTransparentMesh: 1 +--- !u!1 &1550326031 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1550326032} + - component: {fileID: 1550326034} + - component: {fileID: 1550326033} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1550326032 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1550326031} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1256285008} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1550326033 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1550326031} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1550326034 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1550326031} + m_CullTransparentMesh: 1 --- !u!1 &1563479607 GameObject: m_ObjectHideFlags: 0 @@ -11080,6 +11315,93 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1752955060} m_CullTransparentMesh: 1 +--- !u!1 &1782090442 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1782090443} + - component: {fileID: 1782090444} + m_Layer: 5 + m_Name: With Confirmation Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1782090443 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1782090442} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1256285008} + - {fileID: 885137216} + m_Father: {fileID: 1343113122} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 116, y: -215} + m_SizeDelta: {x: 200, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1782090444 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1782090442} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1256285009} + toggleTransition: 1 + graphic: {fileID: 1550326033} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 --- !u!1 &1782904790 GameObject: m_ObjectHideFlags: 0 @@ -12367,11 +12689,11 @@ RectTransform: m_Children: - {fileID: 1121543900} m_Father: {fileID: 1343113122} - m_RootOrder: 8 + m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 91, y: -215} + m_AnchoredPosition: {x: 91, y: -260} m_SizeDelta: {x: 150, y: 30} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1915690146 @@ -13785,7 +14107,7 @@ MonoBehaviour: m_TargetGraphic: {fileID: 1335469792} m_HandleRect: {fileID: 1335469791} m_Direction: 2 - m_Value: 1 + m_Value: 0 m_Size: 1 m_NumberOfSteps: 0 m_OnValueChanged: diff --git a/sample/Assets/Scripts/AuthenticatedScript.cs b/sample/Assets/Scripts/AuthenticatedScript.cs index e887d1dc..f5057d0b 100644 --- a/sample/Assets/Scripts/AuthenticatedScript.cs +++ b/sample/Assets/Scripts/AuthenticatedScript.cs @@ -56,6 +56,7 @@ public class AuthenticatedScript : MonoBehaviour [SerializeField] private InputField ZkGetBalanceAccount; // ZkEVM Send Transaction + [SerializeField] private Toggle ZkSendTransactionConfirm; [SerializeField] private Canvas ZkSendTransactionCanvas; [SerializeField] private InputField ZkSendTransactionTo; [SerializeField] private InputField ZkSendTransactionValue; @@ -334,14 +335,23 @@ public async void SendZkTransaction() try { ShowOutput($"Called sendTransaction()..."); - string response = await passport.ZkEvmSendTransaction(new TransactionRequest() + TransactionRequest request = new TransactionRequest() { to = ZkSendTransactionTo.text, value = ZkSendTransactionValue.text, data = ZkSendTransactionData.text - }); - ShowOutput($"Transaction hash: {response}"); + }; + if (ZkSendTransactionConfirm.isOn) + { + TransactionReceiptResponse response = await passport.ZkEvmSendTransactionWithConfirmation(request); + ShowOutput($"Transaction hash: {response.transactionHash}\nStatus: {GetTransactionStatusString(response.status)}"); + } + else + { + string response = await passport.ZkEvmSendTransaction(request); + ShowOutput($"Transaction hash: {response}"); + } } catch (Exception ex) { @@ -413,19 +423,7 @@ public async void GetZkTransactionReceiptStatus() ShowOutput($"Getting zkEVM transaction receipt status..."); TransactionReceiptResponse response = await passport.ZkEvmGetTransactionReceipt(ZkGetTransactionReceiptHash.text); - string status = "Transaction receipt status: "; - switch (response.status) - { - case "0x1": - status += "Success"; - break; - case "0x0": - status += "Failed"; - break; - case null: - status += "Still processing"; - break; - } + string status = $"Transaction receipt status: {GetTransactionStatusString(response.status)}"; ShowOutput(status); } catch (Exception ex) @@ -434,6 +432,23 @@ public async void GetZkTransactionReceiptStatus() } } + private string GetTransactionStatusString(string status) + { + switch (status) + { + case "1": + case "0x1": + return "Success"; + case "0": + case "0x0": + return "Failed"; + case null: + return "Still processing"; + default: + return ""; + } + } + public void ShowZkTransactionReceiptStatus() { AuthenticatedCanvas.gameObject.SetActive(false); diff --git a/src/Packages/Passport/Runtime/Resources/index.html b/src/Packages/Passport/Runtime/Resources/index.html index 12f7565b..94f20adb 100644 --- a/src/Packages/Passport/Runtime/Resources/index.html +++ b/src/Packages/Passport/Runtime/Resources/index.html @@ -1,21 +1,336 @@ -GameSDK Bridge

Bridge Running

\ No newline at end of file +)[]`,e4=(e,t)=>{let r=[],n=new c.ethers.utils.Interface(f.walletContracts.mainModule.abi);for(let i of t){let t=(0,c.ethers).utils.arrayify(i.data||"0x");if(i.to===e&&(0,c.ethers).utils.hexlify(t.slice(0,4))===e5){let e=t.slice(4),n=(0,c.ethers).utils.defaultAbiCoder.decode([e8],e)[0];r.push(...e4(i.to,n.map(e=>d({},e,{to:e.target}))))}else try{let i=n.decodeFunctionData("execute",t)[0],a=e4(e,i.map(e=>d({},e,{to:e.target})));r.push(...a)}catch(e){r.push(i)}}return r};var e7=Object.freeze({__proto__:null,MetaTransactionsType:eZ,intendTransactionBundle:function(e,t,r,n){return d({},e,{chainId:r,intent:{id:n,wallet:t}})},intendedTransactionID:function(e){return(0,c.ethers).utils.keccak256((0,c.ethers).utils.defaultAbiCoder.encode(["address","uint256","bytes32"],[e.intent.wallet,e.chainId,e.intent.id]))},unpackMetaTransactionsData:function(e){let t=(0,c.ethers).utils.defaultAbiCoder.decode(["uint256",eZ],e);if(2!==t.length||!t[0]||!t[1])throw Error("Invalid meta transaction data");return[t[0],t[1]]},packMetaTransactionsData:e$,digestOfTransactions:eX,subdigestOfTransactions:function(e,t,r,n){return l({address:e,chainId:t,digest:eX(r,n)})},subdigestOfGuestModuleTransactions:function(e,t,r){return l({address:e,chainId:t,digest:(0,c.ethers).utils.keccak256((0,c.ethers).utils.defaultAbiCoder.encode(["string",eZ],["guest:",e2(r)]))})},toSequenceTransactions:eY,toSequenceTransaction:eQ,isSequenceTransaction:e0,hasSequenceTransactions:e1,sequenceTxAbiEncode:e2,fromTxAbiEncode:function(e){return e.map(e=>({delegateCall:e.delegateCall,revertOnError:e.revertOnError,gasLimit:e.gasLimit,to:e.target,value:e.value,data:e.data}))},encodeNonce:function(e,t){let r=(0,c.ethers).BigNumber.from(e),n=(0,c.ethers).BigNumber.from(t),i=(0,c.ethers).constants.Two.pow((0,c.ethers).BigNumber.from(96));if(!n.div(i).eq(c.ethers.constants.Zero))throw Error("Space already encoded");return n.add(r.mul(i))},decodeNonce:function(e){let t=(0,c.ethers).BigNumber.from(e),r=(0,c.ethers).constants.Two.pow((0,c.ethers).BigNumber.from(96));return[t.div(r),t.mod(r)]},fromTransactionish:function(e,t){if(Array.isArray(t)){if(e1(t))return t;{let r=eY(e,t);return r.map(e=>e.transaction)}}return e0(t)?[t]:[eQ(e,t).transaction]},isTransactionBundle:e6,isSignedTransactionBundle:e3,encodeBundleExecData:function(e){let t=new c.ethers.utils.Interface(f.walletContracts.mainModule.abi);return t.encodeFunctionData(t.getFunction("execute"),e3(e)?[e2(e.transactions),e.nonce,e.signature]:[e2(e.transactions),0,[]])},selfExecuteSelector:e5,selfExecuteAbi:e8,unwind:e4});let e9="0x608060405234801561001057600080fd5b5060405161124a38038061124a83398101604081905261002f91610124565b600060405161003d906100dd565b604051809103906000f080158015610059573d6000803e3d6000fd5b5090506000816001600160a01b0316638f0684308686866040518463ffffffff1660e01b815260040161008e939291906101fb565b6020604051808303816000875af11580156100ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d19190610244565b9050806000526001601ff35b610fdc8061026e83390190565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561011b578181015183820152602001610103565b50506000910152565b60008060006060848603121561013957600080fd5b83516001600160a01b038116811461015057600080fd5b6020850151604086015191945092506001600160401b038082111561017457600080fd5b818601915086601f83011261018857600080fd5b81518181111561019a5761019a6100ea565b604051601f8201601f19908116603f011681019083821181831017156101c2576101c26100ea565b816040528281528960208487010111156101db57600080fd5b6101ec836020830160208801610100565b80955050505050509250925092565b60018060a01b0384168152826020820152606060408201526000825180606084015261022e816080850160208701610100565b601f01601f191691909101608001949350505050565b60006020828403121561025657600080fd5b8151801515811461026657600080fd5b939250505056fe608060405234801561001057600080fd5b50610fbc806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806376be4cea1161005057806376be4cea146100a65780638f068430146100b957806398ef1ed8146100cc57600080fd5b80631c6453271461006c5780633d787b6314610093575b600080fd5b61007f61007a366004610ad4565b6100df565b604051901515815260200160405180910390f35b61007f6100a1366004610ad4565b61023d565b61007f6100b4366004610b3e565b61031e565b61007f6100c7366004610ad4565b6108e1565b61007f6100da366004610ad4565b61096e565b6040517f76be4cea00000000000000000000000000000000000000000000000000000000815260009030906376be4cea9061012890889088908890889088908190600401610bc3565b6020604051808303816000875af1925050508015610181575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261017e91810190610c45565b60015b610232573d8080156101af576040519150601f19603f3d011682016040523d82523d6000602084013e6101b4565b606091505b508051600181900361022757816000815181106101d3576101d3610c69565b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f0100000000000000000000000000000000000000000000000000000000000000149250610235915050565b600092505050610235565b90505b949350505050565b6040517f76be4cea00000000000000000000000000000000000000000000000000000000815260009030906376be4cea906102879088908890889088906001908990600401610bc3565b6020604051808303816000875af19250505080156102e0575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526102dd91810190610c45565b60015b610232573d80801561030e576040519150601f19603f3d011682016040523d82523d6000602084013e610313565b606091505b506000915050610235565b600073ffffffffffffffffffffffffffffffffffffffff87163b6060827f64926492649264926492649264926492649264926492649264926492649264928888610369602082610c98565b610375928b9290610cd8565b61037e91610d02565b1490508015610484576000606089828a610399602082610c98565b926103a693929190610cd8565b8101906103b39190610e18565b955090925090508415806103c45750865b1561047d576000808373ffffffffffffffffffffffffffffffffffffffff16836040516103f19190610eb2565b6000604051808303816000865af19150503d806000811461042e576040519150601f19603f3d011682016040523d82523d6000602084013e610433565b606091505b50915091508161047a57806040517f9d0d6e2d0000000000000000000000000000000000000000000000000000000081526004016104719190610f18565b60405180910390fd5b50505b50506104be565b87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294505050505b80806104ca5750600083115b156106bb576040517f1626ba7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b1690631626ba7e90610523908c908690600401610f2b565b602060405180830381865afa92505050801561057a575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261057791810190610f44565b60015b61060f573d8080156105a8576040519150601f19603f3d011682016040523d82523d6000602084013e6105ad565b606091505b50851580156105bc5750600084115b156105db576105d08b8b8b8b8b600161031e565b9450505050506108d7565b806040517f6f2a95990000000000000000000000000000000000000000000000000000000081526004016104719190610f18565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f1626ba7e000000000000000000000000000000000000000000000000000000001480158161065f575086155b801561066b5750600085115b1561068b5761067f8c8c8c8c8c600161031e565b955050505050506108d7565b841580156106965750825b80156106a0575087155b156106af57806000526001601ffd5b94506108d79350505050565b6041871461074b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f5369676e617475726556616c696461746f72237265636f7665725369676e657260448201527f3a20696e76616c6964207369676e6174757265206c656e6774680000000000006064820152608401610471565b600061075a6020828a8c610cd8565b61076391610d02565b90506000610775604060208b8d610cd8565b61077e91610d02565b905060008a8a604081811061079557610795610c69565b919091013560f81c915050601b81148015906107b557508060ff16601c14155b15610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f5369676e617475726556616c696461746f723a20696e76616c6964207369676e60448201527f617475726520762076616c7565000000000000000000000000000000000000006064820152608401610471565b6040805160008152602081018083528e905260ff831691810191909152606081018490526080810183905273ffffffffffffffffffffffffffffffffffffffff8e169060019060a0016020604051602081039080840390855afa1580156108ad573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff161496505050505050505b9695505050505050565b6040517f76be4cea00000000000000000000000000000000000000000000000000000000815260009030906376be4cea9061092b9088908890889088906001908990600401610bc3565b6020604051808303816000875af115801561094a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102329190610c45565b6040517f76be4cea00000000000000000000000000000000000000000000000000000000815260009030906376be4cea906109b790889088908890889088908190600401610bc3565b6020604051808303816000875af1925050508015610a10575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610a0d91810190610c45565b60015b610232573d808015610a3e576040519150601f19603f3d011682016040523d82523d6000602084013e610a43565b606091505b5080516001819003610a6257816000815181106101d3576101d3610c69565b8082fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610a8857600080fd5b50565b60008083601f840112610a9d57600080fd5b50813567ffffffffffffffff811115610ab557600080fd5b602083019150836020828501011115610acd57600080fd5b9250929050565b60008060008060608587031215610aea57600080fd5b8435610af581610a66565b935060208501359250604085013567ffffffffffffffff811115610b1857600080fd5b610b2487828801610a8b565b95989497509550505050565b8015158114610a8857600080fd5b60008060008060008060a08789031215610b5757600080fd5b8635610b6281610a66565b955060208701359450604087013567ffffffffffffffff811115610b8557600080fd5b610b9189828a01610a8b565b9095509350506060870135610ba581610b30565b91506080870135610bb581610b30565b809150509295509295509295565b73ffffffffffffffffffffffffffffffffffffffff8716815285602082015260a060408201528360a0820152838560c0830137600060c085830181019190915292151560608201529015156080820152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019392505050565b600060208284031215610c5757600080fd5b8151610c6281610b30565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b81810381811115610cd2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60008085851115610ce857600080fd5b83861115610cf557600080fd5b5050820193919092039150565b80356020831015610cd2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610d7e57600080fd5b813567ffffffffffffffff80821115610d9957610d99610d3e565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610ddf57610ddf610d3e565b81604052838152866020858801011115610df857600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215610e2d57600080fd5b8335610e3881610a66565b9250602084013567ffffffffffffffff80821115610e5557600080fd5b610e6187838801610d6d565b93506040860135915080821115610e7757600080fd5b50610e8486828701610d6d565b9150509250925092565b60005b83811015610ea9578181015183820152602001610e91565b50506000910152565b60008251610ec4818460208701610e8e565b9190910192915050565b60008151808452610ee6816020860160208601610e8e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610c626020830184610ece565b8281526040602082015260006102356040830184610ece565b600060208284031215610f5657600080fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610c6257600080fdfea26469706673582212201a72aed4b15ffb05b6502997a9bb655992e06590bd26b336dfbb153d7ff6f34b64736f6c63430008120033";async function te(e,t,r,n){return"0x01"===await e.call({data:(0,c.ethers).utils.concat([e9,new(0,c.ethers).utils.AbiCoder().encode(["address","bytes32","bytes"],[t,r,n])])})}var tt=Object.freeze({__proto__:null,EIP_6492_OFFCHAIN_DEPLOY_CODE:e9,EIP_6492_SUFFIX:"0x6492649264926492649264926492649264926492649264926492649264926492",validateEIP6492Offchain:te}),tr=Object.freeze({__proto__:null,config:u,signature:p,context:eJ,signer:_,EIP1271:g,transaction:e7,reader:Object.freeze({__proto__:null,OnChainReader:class{constructor(e){this.isDeployedCache=new Set,this.provider=e}module(e){return new c.ethers.Contract(e,[...f.walletContracts.mainModuleUpgradable.abi,...f.walletContracts.mainModule.abi,...f.walletContracts.erc1271.abi],this.provider)}async isDeployed(e){if(this.isDeployedCache.has(e))return!0;let t=await this.provider.getCode(e).then(e=>(0,c.ethers).utils.arrayify(e)),r=0!==t.length;return r&&this.isDeployedCache.add(e),r}async implementation(e){let t=(0,c.ethers).utils.defaultAbiCoder.encode(["address"],[e]),r=await this.provider.getStorageAt(e,t).then(e=>(0,c.ethers).utils.arrayify(e));return 20===r.length?(0,c.ethers).utils.getAddress((0,c.ethers).utils.hexlify(r)):32===r.length?(0,c.ethers).utils.defaultAbiCoder.decode(["address"],r)[0]:void 0}async imageHash(e){try{let t=await this.module(e).imageHash();return t}catch(e){}}async nonce(e,t=0){try{let r=await this.module(e).readNonce(t);return r}catch(t){if(!await this.isDeployed(e))return 0;throw t}}async isValidSignature(e,t,r){return te(this.provider,e,t,r)}}}),EIP6492:tt,isWalletSignRequestMetadata:function(e){return e&&e.address&&e.digest&&void 0!==e.chainId&&e.config}});let tn=[{config:P,signature:I},{config:eq,signature:eb}];function ti(e){let t=e-1;if(t<0||t>=tn.length)throw Error(`No coder for version: ${e}`);return tn[t]}var ta=Object.freeze({__proto__:null,ALL_CODERS:tn,coderFor:ti,genericCoderFor:function(e){return ti(e)}});let ts=[N,eV]},{ethers:"8wpcu","@0xsequence/abi":"NeOck","@parcel/transformer-js/src/esmodule-helpers.js":"cI3Jn"}]},["8Vdv4"],"8Vdv4","parcelRequire59a4");

Bridge Running

\ No newline at end of file diff --git a/src/Packages/Passport/Runtime/Scripts/Private/Model/Response/TransactionReceiptResponse.cs b/src/Packages/Passport/Runtime/Scripts/Private/Model/Response/TransactionReceiptResponse.cs index 289bfcf5..065c43bf 100644 --- a/src/Packages/Passport/Runtime/Scripts/Private/Model/Response/TransactionReceiptResponse.cs +++ b/src/Packages/Passport/Runtime/Scripts/Private/Model/Response/TransactionReceiptResponse.cs @@ -24,10 +24,10 @@ public class TransactionReceiptResponse /// Possible reponses: /// /// - /// Success: 0x1 + /// Success: 1 or 0x1 /// /// - /// Failure: 0x0 + /// Failure: 0 or 0x0 /// /// public string status; diff --git a/src/Packages/Passport/Runtime/Scripts/Private/PassportFunction.cs b/src/Packages/Passport/Runtime/Scripts/Private/PassportFunction.cs index cde4f6c1..e8ef31a1 100644 --- a/src/Packages/Passport/Runtime/Scripts/Private/PassportFunction.cs +++ b/src/Packages/Passport/Runtime/Scripts/Private/PassportFunction.cs @@ -31,6 +31,7 @@ public static class ZK_EVM { public const string CONNECT_EVM = "connectEvm"; public const string SEND_TRANSACTION = "zkEvmSendTransaction"; + public const string SEND_TRANSACTION_WITH_CONFIRMATION = "zkEvmSendTransactionWithConfirmation"; public const string GET_TRANSACTION_RECEIPT = "zkEvmGetTransactionReceipt"; public const string REQUEST_ACCOUNTS = "zkEvmRequestAccounts"; public const string GET_BALANCE = "zkEvmGetBalance"; diff --git a/src/Packages/Passport/Runtime/Scripts/Private/PassportImpl.cs b/src/Packages/Passport/Runtime/Scripts/Private/PassportImpl.cs index e5914f80..72c49922 100644 --- a/src/Packages/Passport/Runtime/Scripts/Private/PassportImpl.cs +++ b/src/Packages/Passport/Runtime/Scripts/Private/PassportImpl.cs @@ -682,7 +682,7 @@ public async UniTask ConnectEvm() await communicationsManager.Call(PassportFunction.ZK_EVM.CONNECT_EVM); } - public async UniTask ZkEvmSendTransaction(TransactionRequest request) + private string SerialiseTransactionRequest(TransactionRequest request) { string json; // Nulls are serialised as empty strings when using JsonUtility @@ -699,10 +699,23 @@ public async UniTask ZkEvmSendTransaction(TransactionRequest request) { json = JsonUtility.ToJson(request); } + return json; + } + + public async UniTask ZkEvmSendTransaction(TransactionRequest request) + { + string json = SerialiseTransactionRequest(request); string callResponse = await communicationsManager.Call(PassportFunction.ZK_EVM.SEND_TRANSACTION, json); return callResponse.GetStringResult(); } + public async UniTask ZkEvmSendTransactionWithConfirmation(TransactionRequest request) + { + string json = SerialiseTransactionRequest(request); + string callResponse = await communicationsManager.Call(PassportFunction.ZK_EVM.SEND_TRANSACTION_WITH_CONFIRMATION, json); + return callResponse.OptDeserializeObject(); + } + public async UniTask ZkEvmGetTransactionReceipt(string hash) { string json = JsonUtility.ToJson(new TransactionReceiptRequest() diff --git a/src/Packages/Passport/Runtime/Scripts/Public/Passport.cs b/src/Packages/Passport/Runtime/Scripts/Public/Passport.cs index 284841df..e62c54ee 100644 --- a/src/Packages/Passport/Runtime/Scripts/Public/Passport.cs +++ b/src/Packages/Passport/Runtime/Scripts/Public/Passport.cs @@ -333,6 +333,19 @@ public async UniTask ZkEvmSendTransaction(TransactionRequest request) return await GetPassportImpl().ZkEvmSendTransaction(request); } + /// + /// Similar to ZkEvmSendTransaction. Creates new message call transaction or a contract creation, if the data field contains code, + /// and signs it using the account specified in from. Additionally, it also resolves to the TransactionReceiptResponse once the transaction has + /// been included in the chain for confirms blocks. If confirms is 0, and the transaction has not been mined, null is returned. + /// + /// The receipt of the transaction or null if it is still processing. + /// + /// + public async UniTask ZkEvmSendTransactionWithConfirmation(TransactionRequest request) + { + return await GetPassportImpl().ZkEvmSendTransactionWithConfirmation(request); + } + /// /// Retrieves the transaction information of a given transaction hash. This function uses the Ethereum JSON-RPC eth_getTransactionReceipt method. ///