Klaytn 문서 아카이브
시작하기스마트 컨트랙트노드 운영dApp 개발자
  • Klaytn 문서
  • -
    • Klaytn Overview
      • 왜 클레이튼일까요?
      • 클레이튼 디자인
        • 합의 메커니즘
        • 계정
        • 트랜잭션
          • 기본
          • 수수료 위임 트랜잭션
          • 수수료 부분 위임 트랜잭션
          • Ethereum
        • 연산
          • 클레이튼 스마트 컨트랙트
          • 실행 모델(Execution Model)
          • Computation Cost
            • 연산 비용 (구 버전 문서)
          • Klaytn 가상머신
            • 클레이튼 가상머신 (구 버전 문서)
        • 스토리지
        • 트랜잭션 비용
          • 트랜잭션 비용 (구 버전 문서)
        • 클레이튼의 네이티브 코인 - KLAY
        • 토큰 이코노미
        • 거버넌스
        • 다중 채널
        • KNI
      • 확장성 솔루션
    • Getting Started
      • Deploying Smart Contract Using Foundry
      • Deploying Smart Contract Using Hardhat
      • Deploying Smart Contract Using KEN
        • Launch an Endpoint Node
        • Top up your Account
        • Install Development Tools
        • Deploy a Smart Contract
        • Check the Deployment
        • Account Management
          • Creating Accounts
          • Managing Accounts
      • Development Environment
      • Getting KLAY
    • 스마트 컨트랙트
      • 솔리디티 - 스마트 컨트랙트 언어
      • 미리 컴파일된 컨트랙트
        • 미리 컴파일된 컨트랙트 (구 버전 문서)
      • IDE 및 도구
        • Truffle
      • 샘플 컨트랙트
        • KlaytnGreeter
        • ERC-20
          • 1. ERC-20 스마트 컨트랙트 작성
          • 2. 스마트 컨트랙트 배포
          • 3. 클레이튼 월렛에서 ERC-20 토큰 사용
        • ERC-721
          • 1. ERC-721 스마트 컨트랙트 작성
          • 2. Deploying Smart Contract
      • 테스트 가이드
      • 배포 가이드
      • 클레이튼 호환 토큰
      • 이더리움 컨트랙트 이식
    • Run a Node
      • 배포
        • Endpoint Node
          • 시스템 요구사항
          • 설치 가이드
            • 다운로드
            • Installation Guide
            • 환경설정
            • EN 실행하기
            • 설치 테스트하기
          • ken CLI 명령어
          • JSON-RPC API
        • 코어 셀
          • System Requirements
          • 네트워크 설정
          • Installation Guide
            • Download
            • 설치하기 전에
            • 컨센서스 노드 설정
              • Installation Guide
              • Configuration
              • CN 실행하기
            • 프록시 노드 설정
              • Installation Guide
              • Configuration
              • PN 실행하기
            • 코어 셀 테스트하기
          • 모니터링 설정
          • H/A 설정
        • Service Chain
          • Getting Started
            • 4개 노드 서비스 체인 설정하기
            • Connecting to Baobab
            • 크로스체인 토큰 전송
            • HA(High Availability) for ServiceChain
            • Nested ServiceChain
            • Value Transfer between Sibling ServiceChains
          • 참조 매뉴얼
            • System Requirements
            • Download
            • SCN User Guide
              • Installation
              • Configuration
              • SCN 실행 및 중지하기
              • 노드 상태 확인하기
              • kscn commands
              • homi commands
            • SPN/SEN User Guide
              • Installation
              • Configuration
              • 노드 실행 및 중지
              • Checking Node Status
            • Bridge Configuration
            • 앵커링
            • KAS 앵커링
            • 토큰 전송
            • Configuration Files
            • 로그 파일
            • Genesis JSON
            • 업그레이드 및 하드포크
          • How-To Guides
        • Download Node Packages
          • v1.11.1
          • v1.11.0
          • v1.10.2
          • v1.10.1
          • v1.10.0
          • v1.9.1
          • v1.9.0
          • v1.8.4
          • v1.8.3
          • v1.8.2
          • v1.8.1
          • v1.8.0
          • v1.7.3
          • v1.7.2
          • v1.7.1
          • v1.7.0
          • v1.6.4
          • v1.6.3
          • v1.6.2
          • v1.6.1
          • v1.6.0
          • v1.5.3
          • v1.5.2
          • v1.5.1
          • v1.5.0
          • v1.4.2
          • v1.4.1
          • v1.4.0
          • v1.3.0
          • v1.2.0
          • v1.1.1
          • v1.0.0
          • v0.9.6
          • v0.8.2
    • 운영 가이드
      • Configuration
      • 노드 로그
      • Log operation
      • 에러 및 문제 해결
      • Klaytn Command
      • Chaindata Change
      • Chaindata Migration
    • dApp Developers
      • JSON-RPC APIs
        • API references
          • eth
            • Caution
            • Account
            • Block
            • Transaction
            • Config
            • Filter
            • Gas
            • Miscellaneous
          • klay
            • Account
            • Block
            • Transaction
              • Working with Klaytn Transaction Types
            • Configuration
            • Filter
            • Gas
            • Miscellaneous
          • net
          • debug
            • Logging
            • Profiling
            • Runtime Tracing
            • Runtime Debugging
            • VM Tracing
            • VM Standard Tracing
            • Blockchain Inspection
          • admin
          • personal
          • txpool
          • governance
        • Service Chain API references
          • mainbridge
          • subbridge
        • Transaction Error Codes
      • RPC Service Providers
        • Public Endpoints
      • SDK & Libraries for interacting with Klaytn Node
        • caver-js
          • Getting Started
          • Sending a sample transaction
          • API references
            • caver.account
            • caver.wallet
              • caver.wallet.keyring
            • caver.transaction
              • Basic
              • Fee Delegation
              • Partial Fee Delegation
            • caver.rpc
              • caver.rpc.klay
              • caver.rpc.net
              • caver.rpc.governance
            • caver.contract
            • caver.abi
            • caver.kct
              • caver.kct.kip7
              • caver.kct.kip17
              • caver.kct.kip37
            • caver.validator
            • caver.utils
            • caver.ipfs
          • caver-js ~v1.4.1
            • Getting Started (~v1.4.1)
            • API references
              • caver.klay
                • Account
                • Block
                • Transaction
                  • Legacy
                  • Value Transfer
                  • Value Transfer Memo
                  • Account Update
                  • Smart Contract Deploy
                  • Smart Contract Execution
                  • Cancel
                • Configuration
                • Filter
                • Miscellaneous
              • caver.klay.net
              • caver.klay.accounts
              • caver.klay.Contract
              • caver.klay.KIP7
              • caver.klay.KIP17
              • caver.klay.abi
              • caver.utils (~v1.4.1)
            • Porting from web3.js
        • caver-java
          • Getting Started
          • API references
          • caver-java ~v1.4.0
            • Getting Started (~v1.4.0)
            • Porting from web3j
        • ethers.js
        • web3.js
      • Tutorials
        • Klaytn Online Toolkit
        • Fee Delegation Example
        • Count DApp
          • 1. Environment Setup
          • 2. Clone Count DApp
          • 3. Directory Structure
          • 4. Write Smart Contract
          • 5. Frontend Code Overview
            • 5-1. Blocknumber Component
            • 5-2. Auth Component
            • 5-3. Count Component
          • 6. Deploy Contract
          • 7. Run App
        • Klaystagram
          • 1. Environment Setup
          • 2. Clone Klaystagram DApp
          • 3. Directory Structure
          • 4. Write Klaystagram Smart Contract
          • 5. Deploy Contract
          • 6. Frontend Code Overview
          • 7. FeedPage
            • 7-1. Connect Contract to Frontend
            • 7-2. UploadPhoto Component
            • 7-3. Feed Component
            • 7-4. TransferOwnership Component
          • 8. Run App
        • Building a Buy Me a Coffee dApp
          • 1. Project Setup
          • 2. Creating a BMC Smart Contract
          • 3. Testing the contract using scripts
          • 4. Deploying BMC Smart contract
          • 5. Building the BMC Frontend with React and Web3Onboard
          • 6. Deploying Frontend code on IPFS using Fleek
          • 7. Conclusion
        • Migrating Ethereum App to Klaytn
        • Connecting MetaMask
        • Connecting Remix
        • Verifying Smart Contracts Using Block Explorers
      • Developer Tools
        • Wallets
          • Kaikas
          • Klaytn Wallet
          • Klaytn Safe
            • Klaytn Safe Design
            • Create a Safe
            • Add assets
            • Send assets
            • Contract Interaction
            • Transaction Builder
            • Points to Note
            • Frequently Asked Questions
          • Wallet Libraries
            • Web3Auth
            • Web3Modal
            • Web3-Onboard
        • Oracles
          • Orakl Network
          • Witnet
          • SupraOracles
        • Block Explorers
          • Klaytnscope
          • Klaytnfinder
        • Klaytn Contracts Wizard
    • Glossary
  • ---
    • Klaytn 하드포크
    • 클레이튼 2.0
      • 메타버스 패키지
      • 완결성과 개선 사항들
      • 이더리움 호환성
      • 거버넌스 탈중앙화
      • 대규모 에코 펀드
    • FAQ
    • 오픈 소스
    • 이용약관
    • 지원 언어
  • ℹ️최신 Klaytn 문서
Powered by GitBook
On this page
  • 1) Truffle 환경 설정
  • 배포 방법 1: 개인키
  • DEPLOY METHOD 2: By unlocked account (difficult)
  • 2) Deploy setup (Which contract do you want to deploy?)
  • 3) Deploy

Was this helpful?

  1. -
  2. dApp Developers
  3. Tutorials
  4. Count DApp

6. Deploy Contract

  1. Truffle 환경 설정

  2. Deploy setup

  3. Deploy

1) Truffle 환경 설정

truffle-config.js는 컨트랙트 코드를 배포하는 것에 대한 파일입니다. truffle-config.js에서 다음 항목들을 설정할 수 있습니다.

1) 컨트랙트 배포 주체 (컨트랙트 배포 Klaytn 계정) **2) 컨트랙트 배포할 네트워크 ** **3) 컨트랙트 배포를 위해 지불할 가스의 양 **

컨트랙트를 배포하는 데에는 개인키를 이용하는 방법과 잠금 해제된 계정을 이용하는 방법 두 가지가 있습니다.

배포 방법 1: 개인키

경고: 개인키를 노출하면 안 됩니다. 만약 노출할 경우 계정이 해킹될 수도 있습니다.

개인키를 사용하여 컨트랙트를 배포하려면 provider 옵션이 필요합니다.

1) 개인키를 new HDWalletProvider()의 첫 번째 인자로 전달하세요.<code> 2\) Klaytn 노드의 URL을 new HDWalletProvider()의 두 번째 인자로 전달하세요.

예시)

{
 ...,
 provider: new HDWalletProvider(
   'YOUR PRIVATE KEY',
   'https://public-en-baobab.klaytn.net', // If you're running full node you can set your node's rpc url.
  ),
 ...
}
const HDWalletProvider = require("truffle-hdwallet-provider-klaytn");

const NETWORK_ID = '1001'
const GASLIMIT = '8500000'

/**
 * `URL`, `PRIVATE_KEY`을 상수로 설정하여 쉽게 값을 설정하도록 해줍니다.
 * 여기에 개인키와 Klaytn 노드의 URL을 설정하세요.
 */
const URL = `https://public-en-baobab.klaytn.net`
const PRIVATE_KEY = '0x48f5a77dbf13b436ae0325ae91efd084430d2da1123a8c273d7df5009248f90c'

module.exports = {
  networks: {
    /**
     * DEPLOY METHOD 1: By private key.
     * 개인키를 노출하지 마세요. 노출할 경우 계정이 해킹될 수도 있어요!!
     */
    baobab: {
      provider: () => new HDWalletProvider(PRIVATE_KEY, URL),
      network_id: NETWORK_ID,
      gas: GASLIMIT,
      gasPrice: null,
    },
  },
}

위의 코드에서 networks 속성을 봐주세요. 이 속성에는 baobab 키가 있는데, 이 키에는 또 다시 provider, network_id, gas, gasPrice 등 4개의 속성이 있습니다.

provider: new HDWalletProvider(PRIVATE_KEY, URL) 행은 컨트랙트를 배포하는 계정과 배포 대상 네트워크의 노드 URL을 받아옵니다.

network_id: NETWORK_ID 행은 Klaytn에서의 네트워크 ID를 지정합니다. Baobab 네트워크(testnet)는 1001입니다.

gas: GASLIMIT 행은 컨트랙트를 배포하는 데에 얼마까지 가스를 지불할 것인지 한도를 지정합니다.

gasPrice: null 행은 1 가스당 지불할 금액을 트러플에 전달합니다. 현재 Klaytn에서는 가격이 25000000000으로 고정되어 있습니다. 이 부분을 null로 설정하면 트러플에서 자동적으로 고정 가스 가격으로 설정합니다.

DEPLOY METHOD 2: By unlocked account (difficult)

To deploy a contract by unlocked account, you should have your Klaytn full node. Access your Klaytn node console by typing $ klay attach http://localhost:8551 If you don't have a Klaytn account in the node, generate it by typing personal.newAccount() on the console. If you already have one, unlock your account through personal.unlockAccount().

After ensuring account is unlocked, you should set the properties, host, port, network_id, and from. 1) Which network to deploy (host, port, network_id) 2) Who will deploy (from) 3) How much gas will you endure to deploy your contract (gas)

Put your unlocked account address on from. If you're running your own Klaytn full node, set the node's host to host and node's port to port.

example)

{
  host: 'localhost',
  port: 8551,
  from: '0xd0122fc8df283027b6285cc889f5aa624eac1d23',
  network_id: NETWORK_ID,
  gas: GASLIMIT,
  gasPrice: null,
}

2) Deploy setup (Which contract do you want to deploy?)

migrations/2_deploy_contracts.js:

const Count = artifacts.require('./Count.sol')
const fs = require('fs')

module.exports = function (deployer) {
  deployer.deploy(Count)
    .then(() => {
    // 'deployedAddress' 파일에 최근에 배포된 컨트랙트의 주소를 기록합니다.
    if (Count._json) {
      // deployedABI에 abi 파일을 저장합니다.
      fs.writeFile(
        'deployedABI',
        JSON.stringify(Count._json.abi, 2),
        (err) => {
          if (err) throw err
          console.log(`The abi of ${Count._json.contractName} is recorded on deployedABI file`)
        })
    }

    fs.writeFile(
      'deployedAddress',
      Count.address,
      (err) => {
        if (err) throw err
        console.log(`The deployed contract address * ${Count.address} * is recorded on deployedAddress file`)
    })
  })
}

3) Deploy

You need KLAY to deploy a contract. You can receive testnet KLAY on faucet.

Type $ truffle deploy --network baobab. It will deploy your contract according to the configurations defined in truffle-config.js and migrations/2_deploy_contracts.js.

cf) --reset option After deploying your contract, if you type $ truffle deploy --network baobab again, nothing will happen. Because truffle deploys a contract only when there are changes in the contract, otherwise truffle will not do anything.\ If you want to re-deploy your contract anyway, there is an option --reset. If you provide this option, truffle will deploy your contract even the content of contract hasn't changed.\ ex) $ truffle deploy --reset --network baobab

To recap, truffle-config.js configures the target network, deployer account, and the gas limit. migrations/2_deploy_contracts.js configures the contract to deploy. target network: We deploy our contract to the node https://public-en-baobab.klaytn.net. deployer account: '0xd0122fc8df283027b6285cc889f5aa624eac1d23' will deploy this contract. gas limit: We can endure up to '20000000' gas for deploying our contract. contract: We will deploy the Count contract.

From the terminal output, you can see if the deployment has been succeeded and find the deployed address.

Previous5-3. Count ComponentNext7. Run App

Last updated 2 years ago

Was this helpful?

You can specify which contract code will you deploy in your contracts/ directory. First, you should import your contract file (Count.sol) in this file through const Count = artifacts.require('./Count.sol') And use deployer to deploy your contract, through deployer.deploy(Count). If you want to run some logic after deploying your contract, use .then(). We want to store the contract ABI and the deployed address in files. fs node.js module is used to do it. (fs.writeFile(filename, content, callback)) Through this post-process, we save our contract address and ABI as deployedABI and deployedAddress in the directory. For further information about artifacts., visit truffle document site,

On Klaytn wallet , there is a faucet providing 150 KLAY per 86400 blocks in Klaytn Baobab testnet. After creating your Klaytn account, run faucet to receive 150 KLAY.

deploy
https://trufflesuite.com/docs/truffle/getting-started/running-migrations#artifacts-require-
https://baobab.wallet.klaytn.foundation/faucet