읽는 데 4분
개요
프로그래밍을 이야기할 때, 자바스크립트를 사용해 본 적이 없거나 들어본 적이 없는 사람은 거의 없을 것입니다. 자바스크립트는 처음에는 클라이언트 측 스크립팅을 위해 만들어졌지만, 오늘날에는 클라이언트 및 서버 애플리케이션에 널리 사용되는 모든 기능을 갖춘 객체 지향 및 절차적 언어로 발전했습니다. 자바스크립트의 구문은 자바와 C++에서 차용되었으며, ECMAScript 사양을 기반으로 합니다. 1,444,231개가 넘는 라이브러리가 존재하며 그 수가 계속 늘어나고 있는 오늘날, 자바스크립트는 이더리움에서 dApp(분산형 애플리케이션)을 만드는 것을 포함해 사실상 모든 분야에서 사용되고 있습니다. 이 가이드에서는 Ethers.js를 사용하여 자바스크립트로 이더리움 주소를 생성하는 방법을 다룰 것입니다.
필수 조건
- 시스템에 Node.js가 설치되어 있습니다.
- 텍스트 편집기
- 터미널(일명 명령줄)
이더리움 주소란 무엇인가요?
인터넷상의 어떤 플랫폼에 로그인할 때든, 인증 정보를 조합하여 본인 인증을 거쳐야 합니다. 이더리움 주소를 사용자 이름으로, 이에 대응하는 개인 키를 비밀번호로 생각하면 됩니다. 이더리움 주소는 공개되어 있어 공유할 수 있지만, 개인 키는 반드시 비밀로 유지해야 합니다. 이 조합을 사용하면 이더리움 블록체인과 상호작용할 수 있습니다. 이더리움 주소는 블록체인 상에서 사용자의 신원을 나타내며, “0x6E0d01A76C3Cf4288372a29124A26D4353EE51BE”와 같은 형태를 띱니다. 유효한 이더리움 주소는 다음을 위해 필수적입니다:
- 이더리움 수신/송금
- 거래 서명/전송
- 분산형 애플리케이션에 연결하기
이더리움 주소가 생성되는 방식:
먼저 64자(16진수) 길이의 임의의 개인 키(256비트 / 32바이트)가 생성됩니다. 예를 들어:
0xf4a2b939592564feb35ab10a8e04f6f2fe0943579fb3c9c33505298978b74893
그런 다음 생성된 개인 키를 사용하여 타원 곡선 디지털 서명 알고리즘(ECDSA)을 통해 128(16진수) 문자(64바이트) 길이의 공개 키를 도출합니다. 예를 들어:
0x04345f1a86ebf24a6dbeff80f6a2a574d46efaa3ad3988de94aa68b695f09db9ddca37439f99548da0a1fe4acf4721a945a599a5d789c18a06b20349e803fdbbe3
그런 다음 (128자 / 64바이트) 길이의 공개 키에 Keccak-256 해시 함수를 적용하여 64자(32바이트) 길이의 해시 문자열을 얻습니다. 이 문자열의 마지막 40자 / 20바이트에 0x를 접두사로 붙이면 최종 이더리움 주소가 됩니다. 예를 들어:
0xd5e099c71b797516c10ed0f0d895f429c2781142
참고: 코딩에서 0x는 해당 숫자나 문자열이 16진수로 표기되었음을 나타냅니다.
Ethers.js란 무엇인가요?
Ethers.js는 현재 가장 널리 사용되는 이더리움 라이브러리인 Web3.js의 경량 대안입니다. 일부에서는 Ethers.js가 다른 라이브러리보다 더 안정적이고 버그가 적으며, 방대한 문서도 갖추고 있다고 평가합니다. 또한 이 라이브러리는 초보자에게도 매우 친화적입니다. Ethers.js는 관리가 매우 잘 되어 있으며, 많은 신입 개발자들이 Web3.js보다 Ethers.js를 선호합니다.
Ethers.js에 대한 자세한 내용과 Ethers.js를 사용하여 이더리움 네트워크에 연결하는 방법은 여기에서 확인할 수 있습니다 .
자바스크립트로 이더리움 주소 생성하기
여기서 가장 먼저 할 일은 시스템에 node.js가 설치되어 있는지 확인하는 것입니다. 이를 위해 터미널이나 명령 프롬프트에 다음 내용을 복사하여 붙여넣으세요:
$ node -v
설치되어 있지 않다면, 공식 웹사이트에서 NodeJS의 LTS 버전을 다운로드할 수 있습니다.
Node.js가 제대로 설치되었다면, npm(Node Package Manager, Node.js의 일부)을 사용하여 Ethers.js (버전 6) 라이브러리를 추가해 봅시다.
$ npm i ethers
이 단계에서 가장 흔히 발생하는 문제는 `node-gyp`의 내부 오류입니다. node-gyp 설치 방법은 여기에서 확인하실 수 있습니다.
참고: node-gyp 관련 문제가 발생할 경우, 사용 중인 파이썬 버전이 위 지침에 나열된 호환 가능한 버전 중 하나와 일치해야 합니다.
또 다른 흔한 문제는 오래된 캐시입니다. 다음 명령어를 입력하여 npm 캐시를 지우세요:
$ npm cache clean
Ethers.js가 성공적으로 설치되었다면, 이제 이더리움 주소를 생성해 보겠습니다.
address.js라는 이름의 파일을 생성하세요. 이 파일은 임의의 개인 키를 생성하고, 그 키를 바탕으로 이더리움 주소를 생성하는 간단한 스크립트입니다. 다음 내용을 address.js 파일에 복사하여 붙여넣으세요:
var 이더 = require('ethers');
var crypto = require('crypto');
var id = crypto.randomBytes(32).toString('hex');
var privateKey = "0x"+id;
console.log("저장하되 공유하지 마세요:", privateKey);
var wallet = new ethers.지갑(개인키);
console.log("주소: " + 지갑.address);
위 코드에 대한 설명
1~2행: Node.js에 포함된 ethers 라이브러리와 crypto 모듈을 가져옵니다.
4행: crypto 객체를 사용하여 32바이트 길이의 임의의 16진수 문자열을 생성하고, 이를 id 변수에 저장합니다.
4행: id에 포함된 문자열 앞에 ‘0x’ 접두사를 추가하고, 새로운 문자열을 privateKey라는 변수에 저장합니다.
6행: 경고 메시지와 함께 개인 키를 출력합니다.
8행: privateKey를 사용하여 새 지갑을 생성하고, 이를 wallet 변수에 저장합니다.
9행: “Address:”라는 메시지와 함께 새로 생성된 지갑의 주소를 출력합니다.
스크립트를 저장하고 실행하여 새로운 이더리움 주소를 생성하세요.
$ node address
코드가 성공적으로 실행되면, 출력 결과는 아래 스크린샷과 비슷하게 표시됩니다. 첫 번째 줄은 개인 키로 구성되어 있으며, 두 번째 줄은 새로 생성된 이더리움 주소로 구성되어 있습니다.
결론
이더리움 주소는 이더리움 네트워크 상에서 사용자의 신원을 나타냅니다. 네트워크와 상호작용하고 거래를 수행하려면 이 주소가 필요합니다. Ethers.js 학습을 계속하려면 ‘Ethers.js를 사용하여 이더리움 거래 보내기’ 가이드를 확인해 보세요. Ethers.js에 대한 자세한 정보는 공식 문서에서 확인할 수 있습니다. 보셨듯이, JavaScript와 최신 라이브러리를 사용하면 새로운 이더리움 주소를 빠르게 생성할 수 있습니다. 이더리움 블록체인상의 dApp 개발은 빠르게 성장하는 이더리움 커뮤니티에 의해 지속적으로 업데이트되고 개선되는 다양한 도구들의 지원을 받고 있습니다. 저렴하고 초고속 이더리움 노드를 제공하는 Quicknode에서 제공하는, 따라 하기 쉬운 가이드를 계속 확인해 보세요. Quicknode를 시작하고 단 몇 분 만에 나만의 이더리움 엔드포인트를 설정하는 방법을 알아보세요.
이더리움에 관한 더 많은 기사와 가이드를 받아보시려면 뉴스레터를 구독해 주세요. 의견이 있으시면 트위터를 통해 언제든지 연락해 주세요. 디스코드 커뮤니티 서버에서도 언제든지 저희와 대화를 나눌 수 있으며, 이곳에는 여러분이 만나볼 수 있는 가장 멋진 개발자들이 모여 있습니다 :)
