etherscan의 계약 검증에는 라이센스 지정이 필수이며 주석을 지울 수 있습니다.

소개



etherscan에서 소스 코드의 검증 동작을 공부했습니다. 그 노트입니다.

Truffle과 OpenZeppelin을 사용하여 계약을 만들었습니다.

소스는 여기에 있습니다.

계약 배포 1



이런 계약을 배포했습니다.
pragma solidity >=0.4.21 <0.7.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/ERC20Detailed.sol";

contract PToken is ERC20, ERC20Detailed {
  constructor(uint256 initialSupply) ERC20Detailed("PToken", "PTN", 18) public {
    _mint(msg.sender, initialSupply);
  }
}

그럼 검증으로 진행합니다.

etherscan에 업로드할 수 있는 파일 형식은 4개





Standard-Json-Input은 무엇입니까?



truffle로 컴파일 한 후에 할 수있는 json이 아닙니다.


build/contracts/PToken.json 업로드 해 보았습니다.

Error! Unable to generate Contract ByteCode and ABI (General Exception, unable to get compiled [bytecode])
오류! 계약의 ByteCode 및 ABI를 생성할 수 없습니다(일반 예외, 컴파일된 [bytecode]를 검색할 수 없음)



이런 형식인 것 같다



그 json의 metadata에있는 사람은 그것처럼 보이지만 좋지 않았습니다.







parse 해보기



오류



Unable to process the standard-input-json you uploaded. ErrCode: Only literal contents of the source file, Source using URLS are not supported
업로드한 standard-input-json을 처리할 수 없습니다. ErrCode: 소스 파일의 리터럴 콘텐츠만 URL을 사용하는 소스는 지원되지 않습니다.

다음과 같이 sources[<file_name>].urls가 아니라 sources[<file_name>].content 이어야 한다는 것이라고 생각했다.



truffle-flattener를 사용하여 Single file을 지정하면



이것을 사용하면 가져 오기 또는 거슬러 올라가서 하나의 파일로 결합됩니다.

안전하게 검증 할 수있었습니다.



계약 탭에 소스 코드가 표시됨





계약 배포 2



1과 정확히 동일한 Solidity를 배포했습니다.

etherscan에서 이미 검증되었습니다.



이전 녀석과 같은 바이트 코드이기 때문에



계약 배포 3



이름을 한 글자 바꿨다. PToken 에서 LToken 로 했다. 생성자 인수는 변경되지 않았습니다.
pragma solidity >=0.4.21 <0.7.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/ERC20Detailed.sol";

contract LToken is ERC20, ERC20Detailed {
  constructor(uint256 initialSupply) ERC20Detailed("PToken", "PTN", 18) public {
    _mint(msg.sender, initialSupply);
  }
}

계약의 이름을 바꾸면 동일하지 않습니다.



etherscan 화면이 아직 검증이 아닙니다.



검증에서는 라이센스가 필수 항목, 코멘트의 유무는 검증에 영향을 미치지 않는다



라이센스는 필수 항목



License를 None으로 지정



댓글 지우고 업로드



License None으로 표시됩니다. License의 표기가 없는 계약은 옛 시대의 것일지도 모른다.



결론



계약 검증은 Single file을 선택한다.

정확히 동일한 바이트 코드 계약은 자동으로 검증됩니다.

License의 지정은 필수.

계약의 코멘트는 지워도 문제 없다.

좋은 웹페이지 즐겨찾기