JEP's Diary

WalletConnect (1) 본문

Development/iOS

WalletConnect (1)

지으니88 2023. 4. 14. 17:40

 

  웹사이트
공식 홈페이지 https://docs.walletconnect.com/2.0/
GitHub 저장소 https://github.com/WalletConnect/WalletConnectSwiftV2

https://github.com/WalletConnect/WalletConnectKotlinV2
Example and Resources https://docs.walletconnect.com/2.0/swift/guides/examples-and-resources
WalletConnect Cloud https://cloud.walletconnect.com/app

https://explorer.walletconnect.com/guidelines

WalletConnect

WalletConnect는 탈중앙화 Web3 메시징 레이어이자 블록체인 지갑을 dapp에 연결하는 표준입니다. WalletConnect는 dapp과 지갑 간의 안전한 P2P 통신을 허용하도록 설계된 개방형 프로토콜입니다. WalletConnect는 web3 생태계에서 지갑과 dapp의 상호 운용성을 향상시킵니다. dapp의 경우 WalletConnect는 번거로움 없이 150개 이상의 암호화폐 지갑에 대한 지원을 원활하게 통합할 수 있습니다. 지갑은 WalletConnect를 JavaScript, Swift 또는 Kotlin SDK와 쉽게 통합할 수 있습니다.

 

Web3WalletSDK

Web3Wallet SDK를 사용하면 Web3 지갑을 dApp과 쉽게 연결할 수 있습니다. dApp이 트랜잭션 서명 및 블록체인의 스마트 계약과의 상호 작용과 같은 작업을 요청할 수 있는 간단하고 직관적인 인터페이스를 제공합니다. SDK는 모든 블록체인과 연동되도록 설계되어 별도의 통합 코드 없이도 여러 체인을 쉽게 지원할 수 있습니다.

 

Mobile Linking in iOS

QRCode에 공통으로 표시되는 URI를 사용하여 Android와 iOS 모두에서 딥 링크 또는 범용 링크(Universal link)를 통해 이 URI를 공유하여 연결을 설정할 수 있습니다.

  • Dapp 에서 월렛 커넥트 요청
  • iOS 지갑앱(Wallet) 에서 지원가능한 지갑 리스트를 보여주고 사용자가 클릭하여 연결 버튼 클릭
  • Dapp에서 승인 등의 액션 요청
  • Wallet에서 액션 요청에 대한 수락 또는 거절
  • Dapp으로 돌아간다
    • 사용자의 수동 액션
    • WalletConnectRouter를 통해 자동 액션

 

iOS는 통합에 대한 몇 가지 추가 주의 사항이 있지만 가능한 한 간단하게 만들도록 합니다. 운영 체제가 동일한 딥 링크 스키마를 구독하는 여러 애플리케이션을 처리하도록 설계되지 않았기 때문에 우리는 QRCode Modal을 설계하여 Explorer에서 지원 지갑을 나열하고 각 지갑에 대한 특정 딥 링크 또는 범용 링크를 대상으로 지정했습니다. 자신의 지갑을 Explorer에 추가하려면 WalletConnect Cloud 계정에 로그인하십시오. (WalletConnect Cloud 가이드) iOS의 경우 딥링크 대신 유니버설 링크를 사용하는 것이 좋습니다. 프롬프트가 적고 더 부드러운 UX를 제공하기 때문입니다

iOS에서 WalletConnect를 사용하고 지갑 상호 작용을 트리거할 때(예: 거래를 보내거나 메시지에 서명할 때) 네이티브 앱이 예상대로 열리지 않고 대신 브라우저 탐색이 발생하는 문제가 발생할 수 있습니다. 일부 지갑(예: Rainbow)의 경우 대체 웹사이트가 표시되는 반면 다른 지갑(예: MetaMask)은 App Store로 리디렉션됩니다. 이 문제는 iOS의 앱 링크가 다음 규칙을 따르는 경우에만 네이티브 앱을 열기 때문에 발생합니다.

  • 지갑 상호 작용은 사용자가 시작한 이벤트에 의해 트리거되어야 합니다.
  • 페이지 로드 또는 비동기 콜백이 아닌 클릭 핸들러에서. 지갑 상호 작용은 이벤트 핸들러 내에서 가능한 한 빨리 트리거되어야 합니다. 이전의 모든 비동기 작업(예: 가스 추정, ENS 이름 확인, nonce 가져오기)은 이벤트 핸들러가 실행되기 전에 이미 완료되어야 합니다. 이를 위해서는 이 제약 조건을 중심으로 사용자 경험을 설계해야 할 수 있으며, 작업을 게으르게 수행하는 대신 준비가 될 때까지 사용자가 지갑 상호 작용을 시작하지 못하게 할 수 있습니다.

자신의 코드가 이러한 규칙을 따르더라도 의존하는 라이브러리는 지갑 상호 작용을 트리거하기 전에 자체 비동기 논리를 실행할 수 있습니다. 예를 들어 Ethers는 트랜잭션을 보내기 전에 비동기적으로 트랜잭션을 채웁니다. 알려진 해결 방법은 아래에 설명되어 있지만 이러한 문제가 계속 발생하는 경우 관련 라이브러리 관리자에게 문제를 제기해야 합니다.

 

Begginer's Guide to WalletConnect v2.0

https://medium.com/walletconnect/beginner-guide-to-walletconnect-v2-0-for-swift-developers-4534b0975218

'Development > iOS' 카테고리의 다른 글

Cocoapods Private Pods  (0) 2023.07.27
Concurrency(1)  (0) 2023.04.18
WalletConnect(2)  (0) 2023.04.14
Combine  (0) 2022.10.27
SwiftUI Custom Alert  (0) 2022.08.04