본문 바로가기
Blockchain

Truffle develop account 확인 (기본 사용 방법)

by 개발자 염상진 2022. 8. 20.

Truffle은 컨트랙트 코드를 작성하고 배포하기 위한 프레임워크 입니다. 

컨트랙트를 배포하기 전 테스팅은 필수이므로, Truffle에서 테스트 기능을 적극 활용해야 합니다.

 

 

 

 

Truffle 프로젝트 시작

 

우선 프로젝트를 시작하고 네트워크 설정을 해줘야 합니다. Truffle에서 컨트랙트를 배포하고 테스팅을 진행할 네트워크 입니다.

 

1. 프로젝트 초기화

$ truffle init

 

프로젝트를 초기화 하면, contracts / migrations / test / truffle-config.js 파일이 담긴 디렉토리가 완성됩니다.

 

2. 초기 컨트랙트 작성

pragma solidity ^0.8.7;

contract SampleContract {
    uint public val;
    string public name;

    constructor(){
        name = "Noonoo";
    }

    function set(uint x) public {
        val = x;
    }

    function get() public returns(uint){
        uint _val = val;
        return _val;
        
    }
}

 

3. migrations/1_deploy.js 파일 작성

작성된 컨트랙트 코드를 배포해주는 코드 입니다.

const SampleContract = artifacts.require("SampleContract");

module.exports = function(deployer){
    deployer.deploy(SampleContract);
}

 

4. 배포 진행

컴파일만 진행해도 되고, 아래 명령어로 전체 컨트랙트 파일 컴파일 + 배포 까지 진행할 수 있습니다.

$ truffle compile
$ truffle migrate --compile-all

 

 

 

 

특정 네트워크를 지정해줄 수도 있습니다. 다만 외부 네트워크를 지정하기 위해서는 truffle-config.js에서 네트워크 설정을 따로 해줘야 합니다. 

$ truffle migarte --compile-all network <NETWORK>

 

네트워크는 ropsten 테스트 넷이나 메인넷 혹은 로컬 네트워크에서 배포를 해볼 수 있습니다. 물론 truffle 자체에서도 lccalhost:9545 포트를 사용한 네트워크를 따로 제공하기도 합니다.

 

 

truffle 자체 네트워크

 

아래 명령어로 Truffle 자체 네트워크를 실행합니다. 10개의 임시계정이 주어지고 9545 포트로 연결됩니다. 또한 truffle console 창이 바로 열려 해당 네트워크에서 interactive하게 명령어를 사용할 수 있습니다. 

$ truffle develop
➜  sample truffle develop
Truffle Develop started at http://127.0.0.1:9545/

Accounts:
(0) 0x7c21d996e69207a08a581911b7bb4df2870144d0
(1) 0xe4d2f38f58e34f6a0990491281fc1ba858289141
(2) 0x7d4319324e5a2e81ecd76e08fa0a180739de7f38
(3) 0x4632fc6f990fdebd63b61b18cdcd46314414a31f
(4) 0x780a75460f4eec3df35642420053a2c462ca0eb8
(5) 0xec44a30707bd60df81432924c6f7d76104b78d64
(6) 0x49c667c33b5d310bb3492c330ad1c9ef8c971528
(7) 0x879eb2c9156fb514c4415b10c1d4e588b69d733d
(8) 0x8e45cdbcd513b520c611b9ec55983b59c34ec2cf
(9) 0x0892a362c4767945fb8f3c486612b4e90d0d0daa

Private Keys:
(0) 2144a6bbda660667fd703c96424bbf0b7475b57d9944225a382750eeb98a1b12
(1) 30024471ed3ccf78957a5baed6e72cab7b7d8416ead21be4ca860c905fa424c4
(2) 86516d48e1ec7fd44db0528300040b6c4b6ea52964737f1ebf818ea3b95babba
(3) c273b56234fd8ed1bd6ff7ff9eccdb30d47ee5f7962f765d5fb628a6089c24ce
(4) f6a3c090a6a86c3760cacc4e725b7dc42eb53f347a020b113fde0dbddd448600
(5) b905d8d4e338d41fd1cf7a5829387c78b0b6672015a24d9d6f6b672ac78979c4
(6) b0332eab7c07e760c28923a4ba3d62483d0a9339099a53eeaa647204633c63f7
(7) f94011001096af21f4fb5e44758777f57bcbe1cbbd25780254abe3afd49e35e0
(8) 5158099b8d7f192e0ab3f10861b573097a3244bb22d9951b00d2b9e57d515e34
(9) 4c75a71928957fd02f051fbebed7c772756344cdd3186f1e5ccb9c40e87416e8

Mnemonic: aisle taxi happy tattoo ten tail behind pluck universe tongue group olive

⚠️  Important ⚠️  : This mnemonic was created for you by Truffle. It is not secure.
Ensure you do not use it on production blockchains, or else you risk losing funds.

truffle(develop)>

 

 

 

 

Truffle Console은 기본적으로 web3 객체를 내장하고 있습니다.

확인을 위해 아래 버전을 확인합니다.

➜  sample truffle version
Truffle v5.5.27 (core: 5.5.27)
Ganache v7.4.0
Solidity - 0.8.16 (solc-js)
Node v16.15.0
Web3.js v1.7.4

 

Truffle 자체에 Ganache, Solidity, Node, Web3.js 모듈을 내장하고 있습니다. 따라서 Web3 모듈을 사용해 계정정보와 컨트랙트들을 가져올 수 있습니다.

 

계정 정보 확인

web3.eth.getAccount() 함수를 사용합니다.

truffle(develop)> let acc = await web3.eth.getAccounts()
undefined
truffle(develop)> acc
[
  '0x7C21d996E69207a08A581911B7BB4DF2870144d0',
  '0xe4d2f38F58e34F6a0990491281FC1BA858289141',
  '0x7D4319324e5A2E81Ecd76E08fa0A180739DE7f38',
  '0x4632FC6f990FdEBd63b61b18CDcD46314414A31F',
  '0x780A75460f4eec3Df35642420053A2c462cA0EB8',
  '0xeC44A30707Bd60df81432924c6f7D76104b78d64',
  '0x49c667C33B5d310bb3492C330AD1C9EF8C971528',
  '0x879eB2c9156fB514c4415B10C1d4E588B69d733D',
  '0x8E45CDBcd513b520C611b9Ec55983B59C34ec2Cf',
  '0x0892A362C4767945fb8F3C486612B4e90d0D0DaA'
]

 

계정 잔액 확인

web3.eth.getBalance() 함수를 사용합니다.

truffle(develop)> let bal1 = await web3.eth.getBalance(acc[0])
undefined
truffle(develop)> bal1
'100000000000000000000'

 

 

 

 

Truffle Ropsten Deploy config migrate Testnet에 컨트랙트 배포 + verify 방법

Truffle은 이더리움 솔리디티로 제작된 스마트 컨트랙트를 컴파일, 테스트, 배포(Migrate) 할 수 있는 프레임 워크 입니다. Truffle에서 컴파일을 진행하면, ABI와 Bytecode 등 컨트랙트를 사용할 수 있는

about-tech.tistory.com

 

 

[Blockchain] Local 환경에서 NFT 민팅하는 방법

 로컬 환경에서 NFT 발행하기 NFT를 민팅해서 OpenSea 플랫폼에서 판매도 가능하지만 테스트 목적으로 NFT를 발행하는 경우 Local 환경에서도 가능합니다. 로컬 환경에서 컨트랙트를 블록체인에 배포

about-tech.tistory.com

 

 

[Blockchain] ERC-721 vs ERC-20 차이점 (NFT vs FT)

ERC-721 표준 스펙은 이더리움 블록체인에서 NFT(Non-Fungible Token)을 생성하는 표준입니다. 이더리움 개선 제안인 EIP에서 721번째 토론에서 나온 표준이며, 구분 가능한(대체 불가능한) 토큰 발행에 대

about-tech.tistory.com

 

댓글