반응형 블록체인/WEB3 개발42 Web3.js 설치 및 공급자 연결하기 💡 Web3.js ✓ Web3.js 설치 및 공급자 연결하기 먼저 web3js_practice 라는 폴더를 생성하고, 해당 디렉토리에서 npm을 초기화하자. npm init Web.js를 사용하기 위해서는 npm에서 web3.js 라이브러리를 설치해야 한다. npm install web3 간단하게 현재 내 지갑 주소에 있는 이더 잔액을 조회하는 코드를 작성해보자. web3js_pracitce 폴더 아래 getBalance.js파일을 생성한다. 그리고 web3 객체를 사용하기 위해 다음과 같이 파일을 작성해본다. const Web3 = require("web3"); const rpcURL = "https://ropsten.infura.io/v3/{Project_ID}"; const web3 = new We.. 2022. 8. 2. Infura - 블록 동기화 없이 원격 이더리움 노드에 접근하기 💡 Infura 이더리움 네트워크에 JSON-RPC를 사용하여 이더리움 노드에 접속하는 데에는 다양한 방법이 있다. 이더리움 클라이언트 소프트웨어인 Geth, Parity를 사용하여 이더리움 노드를 실행할 수 있다. 하지만, Geth나 Parity를 사용하면 이더리움 블록체인에서 블록을 동기화해야 하기 때문에 많은 데이터를 다운로드 받아야한다는 불편한 점이 있다. Infura는 원격 이더리움 노드를 통해 이더리움 네트워크에 접근할 수 있게 해주는 서비스이다. Infura에서는 RPC URL과 API Key를 제공하기 때문에, 직접 이더리움 네트워크에 접근하여 블록을 동기화하지 않아도 네트워크에 접근할 수 있다. 그럼 Infura에 회원가입을 해보고 접속을 해보자. ✓ Infura 회원가입 1. infur.. 2022. 7. 29. Infura - 블록 동기화 없이 원격 이더리움 노드에 접근하기 💡 Infura 이더리움 네트워크에 JSON-RPC를 사용하여 이더리움 노드에 접속하는 데에는 다양한 방법이 있다. 이더리움 클라이언트 소프트웨어인 Geth, Parity를 사용하여 이더리움 노드를 실행할 수 있다. 하지만, Geth나 Parity를 사용하면 이더리움 블록체인에서 블록을 동기화해야 하기 때문에 많은 데이터를 다운로드 받아야한다는 불편한 점이 있다. Infura는 원격 이더리움 노드를 통해 이더리움 네트워크에 접근할 수 있게 해주는 서비스이다. Infura에서는 RPC URL과 API Key를 제공하기 때문에, 직접 이더리움 네트워크에 접근하여 블록을 동기화하지 않아도 네트워크에 접근할 수 있다. 그럼 Infura에 회원가입을 해보고 접속을 해보자. ✓ Infura 회원가입 1. infur.. 2022. 7. 29. Web3.js란? 💡 Web3.js란? 이더리움을 사용한 블록체인 어플리케이셔션을 개발한다는 것은 솔리디티 언어를 사용해 스마트 컨트랙트를 개발하거나, 블록체인과 상호작용하는 클라이언트를 개발하는 것을 의미한다. Web3.js를 사용하는 것은 후자에 해당한다. Web3.js는 이더리움 블록체인과 상호 작용하는 클라이언트를 개발하는 데 사용한다. Web3.js는 다른 계정으로 이더를 전송하거나, 스마트 컨트랙트에서 데이터를 읽고 쓰거나, 스마트 컨트랙트를 만드는 등 다양한 액션을 수행할 수 있게 해주는 라이브러리의 집합이다. ✓ 클라이언트가 이더리움 블록체인과 상호작용하는 방법 클라이언트가 이더리움과 상호작용하는 방식은 다음의 그림으로 설명할 수 있다. Web3.js는 이더리움 블록체인과 JSON RPC를 사용하여 소통한다.. 2022. 7. 29. Web3.js란? 💡 Web3.js란? 이더리움을 사용한 블록체인 어플리케이셔션을 개발한다는 것은 솔리디티 언어를 사용해 스마트 컨트랙트를 개발하거나, 블록체인과 상호작용하는 클라이언트를 개발하는 것을 의미한다. Web3.js를 사용하는 것은 후자에 해당한다. Web3.js는 이더리움 블록체인과 상호 작용하는 클라이언트를 개발하는 데 사용한다. Web3.js는 다른 계정으로 이더를 전송하거나, 스마트 컨트랙트에서 데이터를 읽고 쓰거나, 스마트 컨트랙트를 만드는 등 다양한 액션을 수행할 수 있게 해주는 라이브러리의 집합이다. ✓ 클라이언트가 이더리움 블록체인과 상호작용하는 방법 클라이언트가 이더리움과 상호작용하는 방식은 다음의 그림으로 설명할 수 있다. Web3.js는 이더리움 블록체인과 JSON RPC를 사용하여 소통한다.. 2022. 7. 29. DID를 활용한 졸업증명서에 기능 추가하기 💻 DID를 활용한 졸업증명서에 기능 추가하기 https://ejh-crypto-lab.tistory.com/108 DID를 활용한 졸업증명서 개발하기 💻 DID를 활용한 졸업증명서 개발하기 먼저 검증 가능한 크레덴셜(Verifiable Credential)과 크레덴셜이 저장될 공간을 고려해야 한다. vc-data-model 페이지에서 정의하는 크레덴셜은 다음과 같다. ✓ 크 ejh-crypto-lab.tistory.com 이전에 개발했던 졸업증명서에 솔리디티 문법을 활용하여 기능을 추가해보자! // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.10; abstract contract OwnerHelper { address private owner; eve.. 2022. 7. 27. DID를 활용한 졸업증명서 개발하기 💻 DID를 활용한 졸업증명서 개발하기 먼저 검증 가능한 크레덴셜(Verifiable Credential)과 크레덴셜이 저장될 공간을 고려해야 한다. vc-data-model 페이지에서 정의하는 크레덴셜은 다음과 같다. ✓ 크레덴셜 (Credential) Issuer가 제기한 하나 이상의 Claim 집합. Verifiable Credential은 암호환된 검증을 생성할 수 있는 변조 방지 Credential이다. VC를 사용하여 암호화된 Verifiable Presentation을 만들수도 있다. // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.10; contract CredentialBox { address private issuerAddress; u.. 2022. 7. 27. Local에서 ERC-721 개발해 Truffle 로 배포하기 💡Local 에서 ERC-721 개발하기 로컬에서 Truffle과 Ganache를 이용하여 NFT를 개발해보자. 먼저 새로운 폴더를 생성하고 Truffle을 이용한 개발환경을 준비하자. #폴더 생성 mkdir erc721 #폴더 진입 cd erc721 #truffle 초기화 truffle init #npm 초기화 npn init 개발 환경 준비를 마쳤다면, VSCODE를 실행해보자. VScode에 나타나는 폴더와 파일의 구조는 다음과 같다. 먼저 몇 가지 세팅을 진행해보자. truffle-config.js 를 열고 solc를 설정한다. solc는 solidity, compiler의 버전 등을 설정할 수 있다. 이 예시에서 사용하는 Solidity 의 버전은 0.8.7이고 Compiler 버전은 londo.. 2022. 7. 21. Remix에서 ERC-721 개발하기 💡 Remix에서 ERC-721 개발하기 1. 먼저 Remix에 접속한다. http://remix.ethereum.org/ 2. File Explorers 왼쪽 상단의 + 버튼을 눌러, 임의의 프로젝트 이름을 입력하고 OK를 누른다. 3. contracts 폴더를 보면 자동으로 생성된 .sol 파일들이 있다. 이를 지우고 새로운 파일을 추가한다. 나는 아래와 같이 MyNFT.sol을 추가했다. 4. MyNFT.sol 파일에 ERC-721 컨트랙트 코드를 입력한다. 여기서는 직접 표준을 구현하는 대신 Open Zeppelin에서 제공되는 라이브러리를 import하여 사용한다. // SPDX-License-Identifier: MIT pragma solidity ^0.8.7; import "@openzepp.. 2022. 7. 20. Truffle(트러플), Truffle Develop, Truffle과 Ganache 연동 💡 Truffle 프레임워크 truffle 프레임워크는 스마트 컨트랙트solidity) 개발시 개발, 배포 및 테스트 환경을 제공한다. 이 프레임워크는 node.js 에서 동작을 하며 npm으로 설치할 수 있다. [요구사항] - NodeJS 5.0 이상 - 윈도우, 리눅스, Mac OS X - JSON RPC API를 지원하는 이더리움 클라이언트 npm install -g truffle TRUFFLE SUITE https://trufflesuite.com/ ✓ Truffle 프로젝트 생성 일단 아래 명령어로 Truffle Sample Project를 만들어본다. sample 디렉토리를 만들고 sample 폴더로 들어가 truffle init을 통해 트러플 프로젝트를 초기화한다. mkdir sample c.. 2022. 7. 15. Ganache/Ganache-cli 설치하기, Ganache와 Remix 연동, Ganache Network에 스마트 컨트랙트 배포 💡Ganache ✓ Ganache가 필요한 이유 이더리움 노드는 Geth 나 Parity를 사용하여 실제 이더리움 메인(또는 테스트) 네트워크에 접속하여 블록을 모두 동기화시켜야 한다. 그러나 블록을 동기화 시키는데만 해도 2~3일 정도 소요되며, 트랜잭션을 보내도 블록을 채굴하기까지기 기다려야 하는 등, 스마트 컨트랙트를 개발할 때 불편한 점이 많다. 그래서 스마트 컨트랙트를 개발할 때는 가나슈(Ganache)와 같은 가상 혹은 프라이빗 네트워크 상에서 스마트 컨트랙트를 구동해보고, 테스트넷을 거쳐 메인넷에 올린다. 💻 개발 및 배포 과정 TestRPC -> TestNet -> MainNet - TestRPC: 가나슈를 사용해 로컬 환경에서 개발 진행 - TestNet: 개발 완료 후 MainNet과 .. 2022. 7. 15. Geth를 사용해 스마트 컨트랙트 빌드하기 💡 Geth를 사용해 스마트 컨트랙트 빌드하기 아래 방법대로 하면 Geth console과 Web3를 사용해 스마트 컨트랙트를 이더리움 Ropsten Testnet에 배포할 수 있다. 1. simpleStorage.sol 코드를 디렉토리에 저장한다. // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.4.16 https://study-with-ej.tistory.com/73) geth console 2> /dev/null --ropsten 4. simpleAbi 변수를 선언하고, 위에서 컴파일한 결과값 중 ABI로 초기화한다. 터미널에 simpleAbi를 입력하여 변수가 잘 초기화되었는지 확인할 수 있다. var simpleAbi = [{"inputs":[.. 2022. 7. 13. 이전 1 2 3 4 다음 728x90