ERC20 이해

이 기사는 독자가 최소한 이더 리움 블록 체인, dapp, 이더, 스마트 계약 개념에 대해 이미 잘 알고 있다고 가정합니다. & ICO.

빠르게 요약하자면 이더 리움 블록 체인은 분산 된 오픈 소스 블록 체인 기반 컴퓨팅 플랫폼입니다. 이 컴퓨팅 플랫폼 인 이더 리움 네트워크는 스마트 컨트랙트라는 코드 덩어리로 실행되는 분산 애플리케이션 (dapp)을 호스팅합니다. 이더 리움 네트워크의 모든 거래와 스마트 계약 실행의 컴퓨팅 비용은 이더 리움 암호 화폐 이더로 지불됩니다..

이러한 dapp (분산 형 앱) 중 일부는 추가 인디 앱 통화가 필요합니다. 이러한 dapp은 새로운 통화 인 명명 된 토큰을 도입하고 초기 코인 제공 (ICO)을 통해 자금을 조달합니다..

이더 리움 블록 체인 플랫폼은 생성, 유지 관리가 필요한 모든 종류의 dapp을 장려하는 방식으로 구축되었습니다. & 디지털 자산의 양도. 이러한 dapp 별 이더 리움 토큰은 다음과 같은 의미있는 사용 사례를 가진 dapp 네트워크를 만들기 위해 구현 될 수 있습니다. 송장 팩토링, 브라우저 전체 결제, & 암호 화폐 직불 카드.

이전에 언급 된 모든 아이디어는 매우 일반적인 토큰 프로그래밍 표준을 따르는 현재 라이브 이더 리움 기반 dapp-token입니다. 실제로 배포 된 모든 이더 리움 토큰의 99 %는이 표준 인 ERC20 표준을 따릅니다..

Ethereum Requests for Comment의 약자 인 ERC20 토큰 표준은 모든 이더 리움 기반 토큰이 따를 것으로 예상되는 프로그래밍 “규칙”의 표준 집합입니다.. 개발자는이 6 가지 기능에 동의했습니다. & 이더 리움 네트워크를 통해 통신하는 동안 예상되는 동작을 정상화하기 위해 최소 실행 가능한 토큰으로 두 가지 이벤트 —이 프로토콜을 설정함으로써 이더 리움 개발자는 외부 스마트 계약으로 쉽게 작업 할 수 있습니다..

솔리 디티 소개

가장 인기있는 이더 리움 고객 현재 쓰여진 Google의 GO, 개발자 친화적 인 스마트 계약 언어에 대한 선택은 많습니다. 개발자는 다음과 같은 언어 중에서 선택할 수 있습니다. 바이퍼, 대나무, & 견고.

이 기사의 나머지 부분에서는 & 연습 Solidity 구문.

Solidity는 스마트 계약을 구현하는 데 사용되는 높은 수준의 계약 지향 프로그래밍 언어입니다. 프로그래밍에 익숙한 사람들에게 Solidity 구문은 Javascript, Python의 혼란입니다., & C 개념; 정적으로 형식화되어 있으며 상속을 지원합니다. & 처음부터 많은 라이브러리가 있습니다. Solidity에 대한 자세한 내용은 여기에서 찾을 수있는 문서로 이동해야합니다. https://solidity.readthedocs.io/en/develop/#

ERC20 인터페이스 연습

우리는 정확히 무엇에 대해 좀 더 깊게 파고들 것입니다. & 이 표준이 Ethereum 네트워크에서 어떻게 구현되는지 — 앞서 언급했듯이, Solidity 구문에서 구체적으로 다룰 것입니다..

이더 리움 랜드에서는 모든 것이 시작됩니다 & 로 끝나다 계약. Solidity 문서는 계약을“코드 모음 (그 기능) & 데이터 (그 상태) 이더 리움 블록 체인의 특정 주소에 있습니다.” 이더 리움 계약은 상속을 지원하므로 계약은 다른 계약의 인스턴스가 될 수 있습니다..

이 논리에 따라 상속을 위해 엄격하게 사용되는 추상 계약은 새 계약을 정의하여 안전 장치로 사용할 수도 있습니다. 절대로 필요한 것 컴파일하기 위해 포함하십시오. 이러한 추상 계약은 다음과 같이 알려져 있습니다. 인터페이스 계약.

즉, ERC20 인스턴스 인 토큰 계약은 다음이 없으면 컴파일되지 않습니다. 대조적으로 이것은 이더 리움 개발자가 이제 어떤 기능을 & ERC20 토큰과 상호 작용할 때 기대할 수있는 행동.

ERC20 표준은 총 6 개의 실행 가능한 함수를 포함하는 인터페이스 계약입니다. & 두 개의 로깅 이벤트.

수당

허용 기능을 사용하면 두 주소가 반복되는 단방향 전송을 생성 할 수 있습니다. 지갑 주소 tokenOwner & 잠시 지갑 지출 자 반복 거래에 관여하는 두 개의 지갑으로 정의됩니다. 특히, 지갑 사용자는 약간 지갑 tokenOwner의 금액 약간 간격 – 둘 다 나중에 결정될 변수입니다..

승인

승인 기능에 대해서는 다시 허용 기능을 참조하십시오.이 기능을 사용하면 두 주소가 반복적으로 단방향으로 인출 할 수 있습니다. 적절한 이름의 승인 기능은 수당과 관련하여 지갑 소유자가 자신을 대신하여 수행 할 거래를 “승인”하도록 요청하는 간단한 표준 기능입니다. 이 함수에는 두 개의 입력, 즉 지출 자의 주소가 필요합니다. & 전송되는 토큰의 양. 출력은 승인이 제공되었는지 또는 거부되었는지를 나타내는 공개 부울을 반환합니다..

BalanceOf

BalanceOf는 단일 주소 입력 매개 변수 (address tokenOwner)를 받아들이는 직관적 인 함수입니다. & 단일 공개 상수 (단위 균형)를 반환합니다. 반환 된 단위 상수 인 balance는 쿼리 된 주소가 보유하고있는 토큰의 양을 나타냅니다. 기억하십시오. 블록 체인의 트랜잭션은 일반적으로 공개되며 이더 리움도 다르지 않습니다..

TotalSupply

이름에서 짐작할 수 있듯이 totalSupply 함수는 라이브 이더 리움 네트워크에 배포하는 첫 순간에 한 번만 실행되는 익명 생성자 함수입니다. 이 함수는 남은 계약 수명 동안 토큰 총 공급량으로 작동하는 공용 상수 totalSupply 할당되지 않은 정수 (단위)를 반환합니다. 이 totalSupply 상수는 일반적으로 변수를 하드 코딩하거나 원본 지갑에서 자금을 조달하는 두 가지 방법 중 하나로 정의됩니다..

이전

전송 기능은 ERC20 토큰의 핵심 기능입니다. 그것은 정의 & 직접 구현 지갑 소유자 간 토큰 전송. 지갑 소유자가이 호출을하기 때문에 두 개의 매개 변수 만 필요합니다 : 수신자 주소 & 전송되는 토큰의 양. 이 두 매개 변수는 일반적으로 (주소)로 초기화됩니다. & (유트 토큰). Transfer 반환 값은 수신자 ( “to”주소)가 보낸 토큰을 받았는지 여부를 확인하는 부울입니다..

TransferFrom

TransferFrom 함수를 사용하면 현명한 계약 전달 된 매개 변수로 전송을 실행하려면 지갑 소유자를 대신하여. 이전과 신중하게 구별하십시오. Transfer 기능. 이전 기능은 지갑 소유자 토큰을 주소로 직접 보내기; 이 TransferFrom 허용 스마트 계약 거래소에서 주문을 작성하거나 적시에 자금을 방출하거나 행운의 게임에서 우리의 상금을 지불하는 등 지갑 소유자를 대신하여 토큰을 보내기 위해.

그만큼 TransferFrom 함수에는 세 가지 입력 매개 변수, 지갑 소유자 주소, 수신자 지갑 주소가 있습니다., & 전송 된 토큰의 양. 일반적으로 다음 구문으로 초기화됩니다. (주소, 주소, uint 토큰). 함수 출력은 Transfer 출력과 정확히 동일합니다. 트랜잭션의 성공 또는 실패를 자세히 설명하는 단일 공개 부울.

요약

위에 설명 된 6 가지 기능은 현재 라이브 ERC20 토큰의 99 %에서 발견되는 6 가지 핵심 기능입니다. 몇 가지 예외를 제외하고 (골렘을 쳐다 보며) 이더 리움 개발자는 내부 계약을 개발하는 동안 또는 외부 공개 계약과 상호 작용할 때 이러한 핵심 기능을 완전히 기대할 수 있다는 것을 알고 안전하다고 느낄 수 있습니다..