5. Deploy Contract
Get some testnet KLAY to deploy contract
Truffle configuration
Deploy setup (select contract which you want to deploy)
Deploy
1) Get some KLAY
To deploy contract, we need some KLAY in your account to pay for gas price. You can get 150 KLAY via Klaytn Wallet in the testnet. 1. Create your Klaytn account at Baobab Klaytn Wallet -> PRIVATE KEY
will be used in truffle configuration. So copy it down somewhere 2. After creating your Klaytn account, run faucet to receive 5 Baobab testnet KLAY in Baobab Klaytn Faucet

2) truffle configuration
truffle-config.js
is a configuration file including deployment configuration. We are going to deploy our contract using Private key
we've just created in the previous step. Paste your Private key
that has enough KLAY to truffle-config.js
WARNING: You shouldn't expose your private key. Otherwise, your account would be hacked.
// truffle-config.js
const HDWalletProvider = require("truffle-hdwallet-provider-klaytn");
/**
* Klaytn 네트워크에 컨트랙트를 배포하기 위한 트러플 네트워크 변수입니다.
*/
const NETWORK_ID = '1001'
/**
* URL: URL for the remote node you will be using
* PRIVATE_KEY: Private key of the account that pays for the transaction (Change it to your own private key)
*/
const URL = 'https://public-en-baobab.klaytn.net'
// Paste your `Private key` that has enough KLAY to truffle.js
const PRIVATE_KEY = 'your_private_key'
module.exports = {
networks: {
klaytn: {
provider: () => new HDWalletProvider(PRIVATE_KEY, URL),
network_id: NETWORK_ID,
gas: '8500000',
gasPrice: null,
},
},
// Specify the version of compiler, we use 0.5.6
compilers: {
solc: {
version: '0.5.6',
},
},
}
networks
속성
networks
속성See networks
property above. klaytn
network has 4 properties,
provider
, network_id
, gas
, gasPrice
.
provider: () => new HDWalletProvider(PRIVATE_KEY, URL)
이름에서 알 수 있듯이 개인키와 위에 정의된 URL을 삽입합니다.network_id: NETWORK_ID
Specify network id in Klaytn, you should set it to1001
to use Klaytn Baobab network (testnet).gas: GASLIMIT
지불하고자 하는 최대의 가스양입니다.gasPrice: null
1 가스당 지불할 가격입니다. 현재 Klaytn에서는 1 가스당 가격이25000000000
으로 고정되어 있습니다.null
로 설정하면 트러플에서 자동으로 고정 가스 가격이 설정됩니다.
compiler
속성
compiler
속성Remember that for Solidity contract we used version 0.5.6, thus specify compiler version here.
3) Deployment setup
migrations/2_deploy_contracts.js
:
const Klaystagram = artifacts.require('./Klaystagram.sol')
const fs = require('fs')
module.exports = function (deployer) {
deployer.deploy(Klaystagram)
.then(() => {
if (Klaystagram._json) {
// 1. 최근에 배포한 컨트랙트의 ABI 파일을 'deployedABI'에 기록합니다.
fs.writeFile(
'deployedABI',
JSON.stringify(Klaystagram._json.abi, 2),
(err) => {
if (err) throw err
console.log(`The abi of ${Klaystagram._json.contractName} is recorded on deployedABI file`)
})
}
// 2. 최근에 배포한 컨트랙트 주소를 'deployedAddress'에 기록합니다.
fs.writeFile(
'deployedAddress',
Klaystagram.address,
(err) => {
if (err) throw err
console.log(`The deployed contract address * ${Klaystagram.address} * is recorded on deployedAddress file`)
})
})
}
You can specify which contract code will you deploy in your contracts/
directory.
Import your contract file (
Klaystagram.sol
) viaconst Klaystagram = artifacts.require('./Klaystagram.sol')
Use
deployer
to deploy your contract,deployer.deploy(Klaystagram)
.If you want to add more logic after deploying your contract, use
.then()
(optional)To save contracts'
deployedABI
anddeployedAddress
, usefs
node.js modulefs.writeFile(filename, content, callback)
(optional)
cf. For further information about artifacts.require()
, refer to truffle official documentation at truffle docs
4) Deploy

In your terminal type $ truffle deploy --network baobab
.
It will deploy your contract according to truffle-config.js
and migrations/2_deploy_contracts.js
configuration.
Terminal will display deployed contract address if deployment was successful.
cf) --reset
option
If you provide this option, truffle will recompile and redeploy your contract even if contracts haven't changed.\ ex) $ truffle deploy --reset --network baobab
Last updated
Was this helpful?