Overview
DApp은 기존 Web 2.0의 중앙 집중식 구조에서 벗어나, 블록체인 기반의 탈중앙화된 방식으로 동작하는 애플리케이션을 의미합니다. 본 포스트에서는 이론과 개념보다는, '그래서 어떻게 만드는지'에 집중하고자 합니다. 우선, 가볍게 느낌만 참고하면서 따라오세요! 😉
1. 어떤 체인 위에서 구동시킬지 선택하세요
각각의 블록체인에는 핵심적인 특징과 장단점이 존재합니다. 따라서, 실제 운영 시에는 목적에 맞는 체인을 선택하는 것이 좋지만, 여기서는 가장 보편적으로 사용되는 체인 '이더리움(Ethereum)'을 사용하겠습니다.
이더리움의 종합 안내서
이더리움은 디지털 화폐와 새로운 형태의 애플리케이션을 위한 글로벌 분산형 플랫폼입니다. 이더리움에서는 디지털 화폐를 제어하는 코드를 작성할 수 있고, 전 세계 어디서나 접속 가능한 애
ethereum.org
2. 개발 환경을 셋업하세요
좋은 DApp 개발 도구들이 잘 개발되어 있습니다. JavaScript 기반의 웹 개발 환경으로의 이식성을 생각하면 Hardhat이 개발 프레임워크로서는 더 나은 선택이 될 수 있겠지만, 여기서는 '파운드리(Foundry)'를 사용하도록 하겠습니다.
Foundry
Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust. - Foundry
github.com
소프트웨어를 개발하려면 소스 코드를 작성해야겠죠? 통합 개발 환경(IDE)을 사용하면 빠르고 쾌적한 개발이 가능합니다. Remix 또한 매우 편리하고 유용하지만, 여기서는 가장 대중적인 '비주얼 스튜디오 코드(Visual Studio Code)'를 사용하도록 할게요. 기회가 된다면 Remix 바이너리를 로컬에서 실행하여, 실제 개발에 활용하는 방법도 간단히 다루도록 하겠습니다.
Visual Studio Code - Code Editing. Redefined
Visual Studio Code redefines AI-powered coding with GitHub Copilot for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.
code.visualstudio.com
DApp은 지갑으로 불리는 각 계정 간의 상호작용을 기반으로 동작합니다. 회원 로그인이 필요한 서비스와 유사하다고 생각하면 됩니다. 계정을 관리하고 연결하는 가장 대표적인 방법은 브라우저 확장 '메타마스크(MetaMask)'를 사용하는 것입니다.
The Ultimate Crypto Wallet for DeFi, Web3 Apps, and NFTs | MetaMask
Secure and User-Friendly Crypto Wallet for NFTs and Digital Tokens. Dive into DeFi and Blockchain Seamlessly.
metamask.io
3. 개발 방법을 익히세요
위에 언급한 도구들 외에도, 프로그래밍 언어에 대한 숙련도가 필요합니다.
이더리움에서는 스마트 컨트랙트(Smart Contract)를 통해 신뢰할 수 있는 상호 작용이 가능합니다. 자판기에 판매원이 없는 것처럼, 계약은 제 3자의 개입 없이도 강제성을 부여하죠. 이더리움은 이러한 계약을 '솔리디티(Solidity)' 언어로 작성하고, solc로 컴파일 할 수 있도록 만들었습니다. Vyper를 사용하면 Python 기반으로 계약을 작성할 수도 있지만, 본 포스트에서는 다루지 않습니다. 또 기본적인 웹 애플리케이션 개발 능력이 필요하지만, 이 부분은 핵심에만 집중할 수 있도록 템플릿 코드를 지원할 계획입니다.
Home | Solidity Programming Language
Solidity is a statically-typed curly-braces programming language designed for developing smart contracts that run on Ethereum.
soliditylang.org
공식 문서를 참고하며 간단한 실습을 진행해봅니다. 혹시라도 무엇을 해야할지 잘 모르겠다면, rareskills와 같이 잘 준비된 학습 플랫폼 또는 roadmap.sh의 로드맵 가이드를 이용하는 것도 방법입니다. 이더리움은 스마트 컨트랙트가 모든 컴퓨터에서 실행 가능하도록 별도의 가상 머신(EVM) 위에서 연산을 수행하는데, 이런 부분이 낯설게 느껴진다면 evm.codes의 간단한 시뮬레이션 기능을 통해 익숙해져 보세요. 또한 Dreamhack은 보안과 관련된 학습과 워게임을 풀 수 있는 학습 플랫폼인데, 문제를 해결하며 성취감과 함께 동작 원리를 익혀나갈 수 있습니다. Nnode Guardians, Ethernaut에서도 다양한 문제를 찾아볼 수 있으니 참고하세요!
해커들의 놀이터, Dreamhack
해킹과 보안에 대한 공부를 하고 싶은 학생, 안전한 코드를 작성하고 싶은 개발자, 보안 지식과 실력을 업그레이드 시키고 싶은 보안 전문가까지 함께 공부하고 연습하며 지식을 나누고 실력 향
dreamhack.io
4. 스마트 컨트랙트를 배포하고, 웹 애플리케이션에서 활용하세요
기본적으로 체인 사용에는 비용이 발생합니다. 돈이 없다고요? 걱정하지 마세요. 테스트용 네트워크의 자산은 Faucet을 통해 시간을 들여 무료로 얻을 수 있답니다. 여기서는 Ethereum Sepolia Testnet을 사용하도록 하겠습니다. 개발 도구를 사용하여 컨트랙트 배포부터 초기화까지, 모든 과정을 자동화 해봅시다. 제대로 수행했는지 확신이 안 선다면 Block Explorer에서 이를 확인하세요.
TESTNET Sepolia (ETH) Blockchain Explorer
Etherscan allows you to explore and search the Sepolia blockchain for transactions, addresses, tokens, prices and other activities taking place on Sepolia (ETH)
sepolia.etherscan.io
스마트 컨트랙트 활용을 보조하는 다양한 라이브러리들이 많습니다. 최근 꾸준한 업데이트와 일부 성능적인 이유로 ethers.js를 사용하는 추세가 증가하고 있다고 합니다만, 처음은 web3.js로 시작하시는 것을 추천드립니다. 제 생각에는 web3.js 문서가 더 뉴비 친화적인 것 같아요. 타입스크립트를 사용한다면 viem도 고려해볼 수 있습니다.
5. 나의 멋진 DApp을 친구들과 함께 사용해보세요
DApp 서비스 운영의 어려움 중 하나는 설계 허점을 막는 것이 어렵다는 것입니다. 친구들과 서로의 앱을 이용하며 불편함 또는 보안 이슈를 공유해보세요. 이러한 문제를 보완하기 위한 개발 패턴과 OpenZepplin 라이브러리의 활용 방법에 대해서도 알아봅시다.
OpenZeppelin | Solidity Contracts
OpenZeppelin Contracts helps you minimize risk by using battle-tested libraries of smart contracts for Ethereum and other blockchains. It includes the most used implementations of ERC standards.
www.openzeppelin.com
마치며
이상 DApp 개발에 필요한 과정과 요소를 간단하게 알아보았습니다.
사실 이것 외에도 생산성을 위한 IDE 확장이나 협업을 위한 Git 사용 등의 디테일도 중요하고, 보안 취약점을 탐지해주는 도구를 활용하는 방법을 익히는 것도 중요합니다. 그래도 우선 최소한의 지식으로 단순한 기능을 구현하는 것을 목표로 작업하려 합니다.
각 단계에 대한 자세한 가이드로 다시 만나요!
'Learn > UPSIDE' 카테고리의 다른 글
2 - DApp 개발 환경 셋업 (1) | 2025.02.09 |
---|---|
1 - 기본 개발 환경 셋업 (0) | 2025.02.05 |
UDC 2024 Conference 후기 (2) (0) | 2025.01.09 |
UDC 2024 Conference 후기 (1) (2) | 2024.11.24 |
업사이드 아카데미 2기 모집 (32) | 2024.11.13 |