솔리 디티 튜토리얼 3 — 나만의 암호 화폐 구축 (b)

이전 부분이 마음에 드 셨나요? 더 알아보고 싶으세요? 이제 막 시작하신다면 제 eBook “ 초보자를위한 블록 체인 프로그래밍 “이 완벽한 시작입니다. 여기에서 내용을 확인하세요!

이 튜토리얼은 토큰 스마트 계약 구축에 대한 이전 튜토리얼의 연속입니다. 아직 읽지 않았다면 먼저 읽어 보시기 바랍니다. 이 튜토리얼에서는 고유 한 토큰의 선구자 인 StandardToken 스마트 계약을 구축 할 것입니다.

표준 ​​토큰 계약

다음은 ERC20Token 추상 계약에서 상속 된 StandardToken 계약의 코드입니다. 여기서는 간결성을 위해 두 계약에 대한 코드를 생성합니다.

우리는 StandardToken 계약에서 ERC20Contract의 모든 기능을 구현하고 구현을 하나씩 설명합니다.

여기에서 is 키워드를 사용하여 상속을 표시하는 방법에 유의하세요. 또한이 StandardToken 계약은 ERC20 계약의 모든 방법을 구현하지 않기 때문에 추상 계약이기도합니다.

여기서 잔액 매핑은 다양한 주소를 각 잔액에 매핑하는지도 또는 사전을 유지합니다.

허용 데이터 구조는 좀 더 복잡합니다. 소유자 주소에서 소비자 주소 맵으로의 매핑을 유지하며, 각 주소는 지출 할 수있는 잔액과 연결됩니다. 따라서 허용 된 이름입니다.

totalSupply 는 유통중인 코인의 총 공급량을 나타내는 부호없는 256 비트 정수입니다.

ERC20Contract 기능 구현

상수 또는보기 함수

이것은 상수이거나 뷰 함수이기 때문에 구현하기 매우 간단한 함수이며 상태를 수정하지 않을 것을 약속합니다.

totalSupply

함수 시그니처가 getter이고 StandardToken 계약에 상태 변수를 도입하여이 함수를 구현할 필요가 없습니다. 기본적으로 getter 구현을 생성하는 작업을 견고하게 만들었습니다. 멋지지 않나요?

balanceOf

아주 자명합니다. 잔액 매핑에서 잔액을 반환합니다.

수당

아주 자명합니다. 허용 된 데이터 구조에서 허용 된 지출 값을 반환합니다.

기타 기능

이를 구현하려면 실제로 작업을 수행하고 상태 변수를 변경하므로 약간의 생각이 필요합니다. 하지만 정말 쉽습니다!

전송

전달 함수는 실제 이전을 구현하기 전에 몇 가지 조건을 충족해야합니다. 이러한 조건에 대해 자세히 설명합니다.

첫 번째 조건은 주소 0x0에 이더를 보내지 않아야한다는 것입니다. 이것은 빈 주소이기 때문에 이더를 태우는 것과 같습니다. totalSupply가 내려 가지 않기를 원하기 때문에 지금은 이것을 허용하지 않습니다. 나중에 변경할 수 있습니다.

두 번째 조건은 잔액 수에 uint256을 사용하므로 to 주소의 잔액에서 오버플로가 있는지 확인합니다. 간단한 확인입니다.

마지막으로 이더를 이체하려는 주소의 계정에 이더가 충분한 지 확인하고 이체하려는 값이 0보다 큰지 확인합니다. 여기에서 네거티브 체크를 제거하면 보낸 사람이 실제로 이더를 가져올 수 있다고 상상해보세요. 수신자로부터!

다음으로 단순히 발신자와 수신자의 잔액을 업데이트하고 전송 이벤트를 트리거하여 전송 발생에 대해 블록 체인 또는 클라이언트 측 자바 스크립트에 경고합니다.

transferFrom

이전과 매우 유사하지만 호출 주소 인 msg.sender가 보낸 사람 주소에서 이더를 사용할 수 있는지 확인해야합니다. 그렇지 않은 경우 그러한 이전을 승인 할 수 없습니다.

위의 구현을 확인하는 경우 유일한 추가 확인은 발신자 (msg.sender)가 보낸 사람 주소에서 특정 금액을 지출 할 수 있는지 확인하는 것입니다.

데이터 구조 업데이트에 관한 한, 전송 외에도 전송 된 토큰으로 허용 된 데이터 구조 만 업데이트하면됩니다.

연습 : 프로그래밍에서 매우 중요한 원칙은 DRY의 원칙입니다. 반복하지 마세요. 위의 두 기능을 수정하여 동일하게 할 수 있습니까?

힌트 : 위 두 함수의 공통 기능을 추상화하는 transfer라는 내부 함수를 만드세요.

승인

이 기능을 사용하면 지출자가 허용 된 데이터 구조를 업데이트하여 발신자 (msg.sender) 주소에서 지정된 양의 토큰을 사용할 수 있습니다. 또한 승인 된 승인에 대해 블록 체인 또는 앱 클라이언트 측에 신호를 보내기 위해 Approve 이벤트를 트리거합니다.

결론

좋습니다! 모두 튜토리얼 3으로 끝났습니다! 다음으로 특정 토큰을 구현하고 이름, 순환 공급 및 기타 몇 가지 기능을 지정하면 배포 할 준비가됩니다! 또한 배포에 도움이되는 GAS 및 GAS 가격과 같은 특정 용어에 대해서도 설명합니다. 계약이 완료되면 계약에 대한 전체 소스 코드에 대한 링크도 제공합니다! 다음 튜토리얼을 보려면 여기를 클릭하십시오!

업데이트 유지

텔레 그램에 가입하세요 : https://t.me/joinchat/G4Ls4hLyjTLLNke_3QGygQ

eBook 이메일 목록에 가입하세요! : https://goo.gl/FtRCuX

기부

이 튜토리얼을 즐겼고 앞으로도 계속해서 구축하는 데 도움이되고 싶다면 아래 주소에 ETH를 남겨주세요!

ETH : 0xE11aaAB8c3a6feD2843e66FaC08C13Cda8Cb0D55