블록체인 개발 -4

김성진·2021년 9월 23일
0
post-thumbnail
post-custom-banner

web3 개발 이해하기

반드시 이해해야 할 것들:

*Web3 - 분산 웹 (Decentralized Web)

웹3는 모든 자료와 정보가 분산화, 분권화 된 차세대 네트워크 구조를 의미한다. 현재 우리는 Web2 라고 불리우는 인터넷 환경과 함께 하고 있다. 예를 들어, Uber, Airbnb, facebook 이나 twiter등이 있다. 이들을 web3화, 즉 분산 웹으로 바꾼다면, 우버 없는 차량 공유, 에어BNB 없는 주택 공유, 페이스북이나 트위터 없는 SNS 등 중개인을 배제한 진정한 의미의 P2P 경제가 우리 생활로 다가오게 되는 것이다.

ERC-20 토큰

이더리움에서 ERC는 Ethereum Request for Comments(이더리움 논평 요청서)를 의미합니다. 이는 이더리움상의 프로그래밍 표준을 개괄적으로 설명하는 기술 문서입니다. 비트코인 개선 제안서(BIP)처럼 프로토콜 개선을 제안하는 이더리움 개선 제안서(EIP, Ethereum Improvement Proposals)와 이를 혼동해서는 안 됩니다. ERC는 애플리케이션과 콘트랙트가 보다 쉽게 상호작용하는 규약을 만드는 것을 목표로 합니다.

비탈릭 부테린과 파비안 보겔스텔러가 2015년에 제시한 ERC-20은 비교적 간단한 이더리움 기반 토큰을 제안하고 있습니다. 개발자들은 전반적인 사항을 따르면 되며, 복잡한 시스템을 개발하지 않아도 됩니다. 이들은 업계 전반에서 이미 사용되고 있는 기반 위에서 개발을 진행할 수 있습니다.

ERC-20 토큰이 생성되면, 이는 ERC-20 표준을 지원하는 서비스 및 소프트웨어(소프트웨어 지갑, 하드웨어 지갑, 거래소 등)와 자동으로 호환됩니다.
한 가지 알아둘 것은 ERC-20 표준이 하나의 EIP로 발전했다는 것입니다(보다 구체적으로는, EIP-20). 이는 기존 제안이 제시된 몇 년 후, 해당 제안이 널리 사용되며 일어난 일입니다. 그러나 수년이 지나도, “ERC-20”이라는 명칭을 고수하고 있습니다.

BEP-2

Web3 Transaction

transaction이 구성되는 필드:

  • nonce: EOA에 발급되는 트랜잭션 일련번호를 나타냅니다.
  • gas price: 가스의 가격.
  • gas limit: 가스의 최대 사용량.
  • from: 발신자 주소.
  • to: 수신자 주소.
  • value: 수신자에게 보내는 이더(ether) 개수.
  • data: 가변길이의 바이너리 데이터(payload).
  • v, r, s: ECDSA 서명 구성 요소.

거래 영수증 항목:

  • blaockHash: 거래를 어떤 블록에 저장했는지 나타냅니다.
  • blockNumber: 거래를 몇 번째 블록에 저장했는지 나타냅니다.
  • contractAddress: 컨트랙트에 참여한 트랜잭션이라면 컨트랙트가 나타납니다.
  • cumulativeGasUsed: 트랜잭션에서 사용한 가스 사용량입니다.
  • from: 거래 발신자의 주소가 있습니다. 20바이트(160비트) 값입니다.
  • gasUsed: 사용한 가스 사용량입니다.
  • logsBloom: 블록 안에서 출력하는 로그 데이터를 블룸필터 형태로 저장한 것입니다
  • logs: 거래에서 생성된 로그들입니다.
  • root: 상태 트리를 바꾼 후의 상태 루트 값입니다.
  • to: 거래 수신자의 주소가 있습니다.
  • transactionHash: 32바이트의 거래 해시값을 나타냅니다.

python & web3 모듈을 이용한 이더리움 네트워크 들어가기

파이썬 가상환경을 터미널에서 실행 후, web3를 install 하고 python을 켠다.

$ pip3 install web3
$ python
>>>> from web3 import Web3
>>>> infura_url = "[url from infura project]"
>>>> web3 = Web3(Web3.HTTPProvider(infura_url))
>>>> web3.isConnected()
>>>> web3.eth.blockNumber #이더리움의 현재 블록넘버를 알 수 있음.

profile
multi-national communicator with programming (back-end)
post-custom-banner

0개의 댓글