DApp을 Lace 지갑에 연결하는 방법
Lace 지갑으로 dApp을 Midnight 네트워크에 연결하세요. 감지, 인증, MidnightJS API를 통한 상호작용 방법을 안내합니다.
이 블로그 포스트는 MidnightJS 버전 1.0.0 기준입니다. 향후 버전에서 단계가 변경될 수 있습니다.
데이터 보호에 중점을 둔 블록체인인 Midnight이 주목을 받으면서, dApp 개발자에게는 사용자를 네트워크에 안전하고 편리하게 연결할 방법이 필요합니다.
Midnight 팀이 개발한 Cardano용 Lace 지갑의 특별 에디션인 Midnight용 Lace 지갑은 브라우저 window에 안전한 인터페이스를 직접 주입하여 이 과정을 간편하게 처리합니다.
참고: Midnight 전용 지갑을 사용하는 것은 임시 방편입니다. 향후 Lace 지갑에 Midnight이 직접 통합될 예정입니다.
이 글에서는 Lace 지갑을 감지하고, 연결하고, 상호작용하는 구체적인 단계를 설명합니다.
🧭 Step 1: Detect the Lace Wallet
Lace 지갑은 DappConnectorApi 인스턴스를 전역 window 객체의 window.midnight.mnLace에 주입합니다. Dapp Connector API를 통해 dApp과 지갑 간 상호작용을 구축하고, 사용자 주소 등의 정보를 읽을 수 있는 다양한 속성과 메서드에 접근할 수 있습니다.
먼저 해당 객체의 존재 여부를 확인하세요:
if (window.midnight && window.midnight.mnLace) {
const mnLace = window.midnight.mnLace;
// Proceed with next steps
}
이 객체가 없으면, 공식 다운로드 페이지 링크로 사용자에게 지갑 설치를 안내하세요: https://docs.midnight.network/relnotes/lace
🔒 Step 2: Check if the Wallet is Authorized
지갑과 상호작용하기 전에, 사용자가 이미 dApp에 지갑 접근 권한을 부여했는지 확인해야 합니다:
const isEnabled = await mnLace.isEnabled();
isEnabled가 true이면 dApp이 이미 인증된 상태이므로 지갑 기능에 바로 접근할 수 있습니다. 그렇지 않으면 명시적으로 접근을 요청해야 합니다(다음 단계).
✅ Step 3: Request Access (Enable)
사용자가 아직 dApp을 인증하지 않았다면, 다음을 호출하여 연결을 요청하세요:
const walletApi = await mnLace.enable();
Lace 지갑에서 연결 승인을 요청하는 팝업이 표시됩니다. 승인되면 전체 지갑 API 인터페이스에 접근할 수 있습니다.
참고: 앱 로딩 시 자동으로 팝업을 띄우기보다, 사용자가 직접 UI를 통해 지갑 연결을 승인하도록 유도하는 것이 좋습니다.
🧾 Step 4: Fetch the User's Address
연결이 완료되면, walletApi의 state() 메서드로 사용자 정보를 조회할 수 있습니다:
const state = await walletApi.state();
const userAddress = state.address;
사용자의 Midnight 네트워크 주소를 가져와 UI에 표시하는 등 다양하게 활용하세요.
🔧 Step 5: Get Service Configuration (Optional)
지갑은 서비스 엔드포인트 같은 추가 구성 메타데이터도 제공합니다:
const config = await mnLace.serviceUriConfig();
지갑이 현재 연결된 노드, 인덱서, proof server의 URL이 포함된 객체를 반환합니다.
dApp이 환경에 따라 달라지는 Midnight 서비스나 API와 통합되는 경우에 유용합니다. 예를 들어 트랜잭션 증명을 위해 proof server 주소가 필요할 때 활용할 수 있습니다.
💡 Example Flow
일반 JavaScript에서 연결 로직의 간단한 흐름입니다:
async function connectToMidnight() {
if (window.midnight && window.midnight.mnLace) {
const mnLace = window.midnight.mnLace;
const walletApi = await mnLace.isEnabled();
const state = await walletApi.state();
console.log("User address:", state.address);
const config = await mnLace.serviceUriConfig();
console.log("Service config:", config);
} else {
alert("Please install the Lace wallet to connect to Midnight.");
}
}
위 코드가 수행하는 작업을 정리하면 다음과 같습니다:
window.midnight.mnLace객체를 감지합니다.isEnabled()로 인증 여부를 확인합니다.- 아직 인증되지 않았으면
enable()로 접근을 요청합니다. state()로 Midnight 주소 등 사용자 정보를 가져옵니다.- 필요하면 서비스 구성도 가져옵니다.
이 단계를 통해 dApp은 Lace 지갑으로 Midnight 블록체인에 연결되며, 사용자에게 브라우저에서 바로 프라이버시가 보장되는 매끄러운 경험을 제공할 수 있습니다.
🧠 Conclusion
dApp에 Lace 지갑을 통합하는 과정은 간단하면서도 보안과 사용자 경험 모두를 고려합니다. 지갑 감지, 인증 확인, 접근 요청, 사용자 데이터 조회 등 위 단계를 따르면, 프라이버시와 안정성을 유지하면서 사용자를 Midnight 블록체인에 연결할 수 있습니다. 전용 Lace 지갑 에디션에 대한 의존은 임시적이며, 향후 업데이트로 이 과정이 더 간소화될 수 있으므로 참고하세요. Midnight이 발전하면서 이 가이드라인을 따르면 dApp이 네트워크 표준에 맞게 동작합니다. 최신 API 변경 사항과 모범 사례는 항상 공식 문서를 참조하세요.