본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.
본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.
이미지 로딩 중...
AI Generated
2025. 10. 31. · 42 Views
Wallet 연동 완벽 가이드 블록체인
블록체인 애플리케이션에서 지갑 연동을 구현하는 방법을 단계별로 알아봅니다. MetaMask, WalletConnect 등 주요 지갑 연동 방법과 트랜잭션 처리까지 실전 예제로 학습합니다.
들어가며
이 글에서는 Wallet 연동 완벽 가이드 블록체인에 대해 상세히 알아보겠습니다. 총 10가지 주요 개념을 다루며, 각각의 개념에 대한 설명과 실제 코드 예제를 함께 제공합니다.
목차
- MetaMask_연결_확인
- 지갑_계정_연결
- 현재_네트워크_확인
- 계정_잔액_조회
- 네트워크_변경_요청
- 트랜잭션_전송
- 계정_변경_감지
- 네트워크_변경_감지
- 메시지_서명_요청
- WalletConnect_연동
1. MetaMask 연결 확인
개요
브라우저에 MetaMask가 설치되어 있는지 확인하고, 지갑 연결 가능 여부를 체크합니다.
코드 예제
const checkMetaMask = async () => {
if (typeof window.ethereum !== 'undefined') {
console.log('MetaMask가 설치되어 있습니다!');
return true;
}
alert('MetaMask를 설치해주세요');
return false;
};
설명
window.ethereum 객체의 존재 여부로 MetaMask 설치를 확인합니다. 설치되지 않은 경우 사용자에게 알림을 표시합니다.
2. 지갑 계정 연결
개요
사용자의 지갑 계정에 연결 요청을 보내고, 승인 시 계정 주소를 받아옵니다.
코드 예제
const connectWallet = async () => {
try {
const accounts = await window.ethereum.request({
method: 'eth_requestAccounts'
});
console.log('연결된 계정:', accounts[0]);
return accounts[0];
} catch (error) {
console.error('연결 실패:', error);
}
};
설명
eth_requestAccounts 메서드로 지갑 연결을 요청하고, 사용자가 승인하면 계정 주소 배열을 반환받습니다.
3. 현재 네트워크 확인
개요
연결된 지갑이 어떤 블록체인 네트워크에 연결되어 있는지 확인합니다.
코드 예제
const getNetwork = async () => {
const chainId = await window.ethereum.request({
method: 'eth_chainId'
});
const networks = {
'0x1': 'Ethereum Mainnet',
'0x89': 'Polygon',
'0x38': 'BSC'
};
return networks[chainId] || '알 수 없는 네트워크';
};
설명
eth_chainId로 현재 체인 ID를 조회하고, 미리 정의한 네트워크 맵핑으로 네트워크 이름을 반환합니다.
4. 계정 잔액 조회
개요
연결된 지갑 계정의 이더리움 잔액을 조회하고 ETH 단위로 변환합니다.
코드 예제
const getBalance = async (address) => {
const balance = await window.ethereum.request({
method: 'eth_getBalance',
params: [address, 'latest']
});
const ethBalance = parseInt(balance, 16) / 10**18;
return ethBalance.toFixed(4);
};
설명
eth_getBalance로 Wei 단위 잔액을 받아온 후, 10^18로 나누어 ETH 단위로 변환합니다.
5. 네트워크 변경 요청
개요
사용자에게 특정 블록체인 네트워크로 전환하도록 요청합니다.
코드 예제
const switchNetwork = async (chainId) => {
try {
await window.ethereum.request({
method: 'wallet_switchEthereumChain',
params: [{ chainId: chainId }]
});
console.log('네트워크 변경 완료');
} catch (error) {
console.error('네트워크 변경 실패:', error);
}
};
설명
wallet_switchEthereumChain 메서드로 네트워크 전환을 요청합니다. 사용자가 승인하면 지갑의 네트워크가 변경됩니다.
6. 트랜잭션 전송
개요
이더리움을 다른 주소로 전송하는 트랜잭션을 생성하고 실행합니다.
코드 예제
const sendTransaction = async (to, amount) => {
const params = {
to: to,
from: window.ethereum.selectedAddress,
value: (amount * 10**18).toString(16)
};
const txHash = await window.ethereum.request({
method: 'eth_sendTransaction',
params: [params]
});
return txHash;
};
설명
받는 주소와 금액을 설정하고, eth_sendTransaction으로 트랜잭션을 전송합니다. 금액은 Wei 단위로 변환됩니다.
7. 계정 변경 감지
개요
사용자가 지갑에서 계정을 변경했을 때 이를 감지하고 대응합니다.
코드 예제
window.ethereum.on('accountsChanged', (accounts) => {
if (accounts.length === 0) {
console.log('지갑 연결이 해제되었습니다');
} else {
console.log('계정 변경:', accounts[0]);
updateUI(accounts[0]);
}
});
설명
accountsChanged 이벤트 리스너로 계정 변경을 실시간 감지합니다. 연결 해제나 계정 전환 시 UI를 업데이트할 수 있습니다.
8. 네트워크 변경 감지
개요
사용자가 지갑에서 네트워크를 변경했을 때 감지하고 페이지를 새로고침합니다.
코드 예제
window.ethereum.on('chainChanged', (chainId) => {
console.log('네트워크 변경됨:', chainId);
window.location.reload();
});
설명
chainChanged 이벤트로 네트워크 변경을 감지합니다. 대부분의 경우 페이지 새로고침으로 상태를 초기화합니다.
9. 메시지 서명 요청
개요
사용자에게 메시지 서명을 요청하여 계정 소유권을 증명합니다.
코드 예제
const signMessage = async (message, account) => {
try {
const signature = await window.ethereum.request({
method: 'personal_sign',
params: [message, account]
});
return signature;
} catch (error) {
console.error('서명 실패:', error);
}
};
설명
personal_sign 메서드로 메시지 서명을 요청합니다. 로그인 인증이나 소유권 증명에 활용됩니다.
10. WalletConnect 연동
개요
WalletConnect 라이브러리를 사용하여 모바일 지갑과 연결합니다.
코드 예제
import WalletConnect from '@walletconnect/client';
const connector = new WalletConnect({
bridge: 'https://bridge.walletconnect.org',
qrcodeModal: QRCodeModal
});
await connector.connect();
const accounts = connector.accounts;
설명
WalletConnect를 초기화하고 QR 코드를 통해 모바일 지갑과 연결합니다. 브라우저 확장 없이 모바일 지갑 사용이 가능합니다.
마치며
이번 글에서는 Wallet 연동 완벽 가이드 블록체인에 대해 알아보았습니다. 총 10가지 개념을 다루었으며, 각각의 사용법과 예제를 살펴보았습니다.
관련 태그
#JavaScript #Web3 #Wallet #Blockchain #MetaMask
댓글 (0)
함께 보면 좋은 카드 뉴스
Cron과 Webhooks 완벽 가이드
Node.js 환경에서 자동화의 핵심인 Cron 작업과 Webhooks를 활용하는 방법을 다룹니다. 정기적인 작업 스케줄링부터 외부 서비스 연동까지, 실무에서 바로 적용할 수 있는 자동화 기법을 배워봅니다.
보안 모델 및 DM Pairing 완벽 가이드
Discord 봇의 DM 보안 정책과 페어링 시스템을 체계적으로 학습합니다. dmPolicy 설정부터 allowlist 관리, 페어링 코드 구현까지 안전한 봇 운영의 모든 것을 다룹니다.
Media Pipeline 완벽 가이드
실무에서 자주 사용하는 미디어 파일 처리 파이프라인을 처음부터 끝까지 배웁니다. 이미지 리사이징, 오디오 변환, 임시 파일 관리까지 Node.js로 구현하는 방법을 초급 개발자도 이해할 수 있도록 쉽게 설명합니다.
Slack 통합 완벽 가이드 Bolt로 시작하는 기업용 메신저 봇 개발
Slack Bolt 프레임워크를 활용하여 기업용 메신저 봇을 개발하는 방법을 초급자도 이해할 수 있도록 단계별로 설명합니다. 이벤트 구독, 모달 인터랙션, 실전 배포까지 실무 활용 사례와 함께 다룹니다.
Discord 봇 개발 완벽 가이드
discord.js로 Discord 봇을 만들어봅시다. 실시간 채팅 연동부터 슬래시 커맨드까지, 실무 코드로 배우는 Discord 통합 가이드입니다.