‘이더리움 댑 개발’ 세미나 보조 교재 – Mastering Blockchain Programming with Solidity 2

이번 보조 교재 같이 읽기는 Section 2: Deep Dive into Development Tools와 Section 3: Mastering ERC Standards and Libraries를 다룹니다.

  • Chapter 4, Learning MetaMask and Remix
  • Chapter 5, Using Ganache and the Truffle Framework
  • Chapter 6, Taking Advantage of Code Quality Tools
  • Chapter 7, ERC20 Token Standard
  • Chapter 8, ERC721 Non-Fungible Token Standard
  • Chapter 9, Deep Dive into the OpenZeppelin Library
  • Chapter 10, Using Multisig Wallets
  • Chapter 11, Upgradable Contracts Using ZeppelinOS
  • Chapter 12, Building Your Own Token

 

대부분 이전에 다룬 내용들이기 때문에 다루지 않았거나 다시 한 번 주의를 기울일 필요가 있는 것만 정리하도록 합니다.

Setting up a Truffle project

  • 솔리디티 컴파일러 설정
      • docker:
        • Truffle supports fetching the Solidity compiler from a Docker image. If you have set this property as true, you must have Docker installed on your machine and already have fetched the solc (the command-line Solidity compiler) Docker image for that version. Truffle does not fetch the Docker image automatically. This property takes a Boolean parameter.
      • evmVersion:
        • This signifies the version of the EVM to compile the contracts for.
          • byzantium (the default), homestead, tangerineWhistle, spuriousDragon, constantinople, petersburg
  • 네트워크 설정
    • networks에 다수의 네트워크 설정할 수 있음
      • 개별 네트워크 설정
        • provider: web3 provider 설정
          • 기본은 호스트와 포트를 사용해서 생성
            • new Web3.providers.HttpProvider(“http://<host>:<port>”)
          • 사용자 privider를 설정할 수 있음
            • 예) HDWalletProvider
        •  gas
          • This is the gas limit used for contract deployment. The default value is 4712388.
        • gasPrice
          • This is the gas price used for contract deployment. The default value is 100,000,000,000 wei (100 Shannon).
        • confirmations
          • This is the number of block confirmations to wait between deployments. The default value is 0.
        • timeoutBlocks
          • If a transaction is not mined, it keeps waiting for the specified number of blocks (the default is 50).
        • websockets
          • You will need this enabled to use the confirmations listener. The default value is false.
        • skipDryRun
          • This is used if you want to skip the dry run of the migration scripts on the network. The default value is false. This is useful for public networks, and allows you to dry-run the migration locally before performing the actual migrations on a public network.

 

truffle migrate에 의해 컨트랙트를 배포하면 이미 배포된 컨트랙트는 배포하지 않습니다. 처음부터 다시 배포하고 싶을 때는  truffle migrate –reset을 사용합니다.

 

migration script

  • deployer, accounts, network 전역 객체를 사용할 수 있습니다.
  • deployer는 배포를 위해 사용합니다. network은 네트워크 이름을 나타내고, accounts는 계정주소목록을 나타냅니다.

 

Debug transactions

  • truffle debug <Transaction_ID>
    • ganache-cli를 실행한다면 -v 플래그를 사용해서 실행해야 합니다.

 

Taking Advantage of Code Quality Tools

  • surya
    • https://github.com/ConsenSys/surya
  • solhint
    • https://github.com/protofire/solhint
  • solium
    • https://github.com/duaraghav8/Ethlint
  • solidity-coverage
    • https://github.com/sc-forks/solidity-coverage

Using Multisig Wallets

다중서명 지갑은 컨트랙트입니다. 다중서명 컨트랙트 구현은 ConsenSys에서 구현한 컨트랙트를 사용합니다. Gnosis는 ConsenSys에서 개발한 다중서명 컨트랙트를 위한 댑을 개발했습니다.

 

다중서명 지갑 개발 시 유용한 참고자료로 사용할 수 있음을 기억하고, 어떻게 다중서명 기능이 가능하고 어떻게 구현할 것인지를 이해하는 수준으로 읽고 넘어갑니다.

업그레이드 가능한 컨트랙트 개발

아래 인용한 본문  내용을 주의 깊게 다시 한 번 읽습니다.

The ZeppelinOS development platform is built to help developers with maintaining upgradable contracts. As we discussed in the introduction section of this chapter, this upgradability is not a native concept in Ethereum, the EVM, or Solidity. It was developed using sophisticated Solidity upgradability design patterns, delegate calls, and assembly code. Hence, there are some recommendations that a developer must know about before working on writing upgradable contracts.

Building Your Own Token

토큰을 발행하기 위해서 위해 어떤 사항들을 고려해야 하는지, 오픈제플린은 어떻게 활용하는지에 주의를 기울이면서 빠르게 읽습니다.

About the Author
(주)뉴테크프라임 대표 김현남입니다. 저에 대해 좀 더 알기를 원하시는 분은 아래 링크를 참조하세요. http://www.umlcert.com/kimhn/

Leave a Reply

*