컨트랙트 address,abi 는 어떻게 가져오나요?

안녕하세요!

truffle을 사용할땐 배포시 abi와 address를 추출할 수 있어서 이를 이용하여 컨트랙트 인스턴스를 만들어서 사용했는데요. 그런데 kas를 이용하면서부터 배포할때 truffle을 사용하기 어려워져 caver.kas.wallet.requestSmartContractDeploy(tx) 를 사용하기로 했습니다. 컨트랙트를 사용하려면 address와 abi가 필요한데 이는 어떻게 구할 수 있나요?

안녕하세요, 클레이튼 포럼에 질문을 올려주셔서 감사드립니다.

어떤 컨트랙트를 사용하려고 하시는지요? 컨트랙트 소스코드가 있으시다면 이를 이용하셔서 배포하시면 될 것 같습니다.

truffle에서는 truffle build를 실행하시면 contract byte code와 ABI를 build directory안에서 찾으실 수 있습니다.
이 링크를 참고 부탁드리겠습니다.

Klaytn IDERemix를 통해서도 bytecode와 ABI를 추출하실 수 있습니다.

byte code와 ABI를 통해 contract를 배포하는 것은 KAS Docs 를 참고 부탁드립니다.

감사합니다.

const HDWalletProvider=require('truffle-hdwallet-provider-klaytn')
const GASLIMIT='20000000'; //배포시 사용될 가스의 한도
const PRIVATE_KEY ='(비밀키)';

module.exports={
    networks:{
        mainnet:{//네트워크는 클레이튼을 사용한다는 의미
            provider: () => new HDWalletProvider(PRIVATE_KEY, "https://api.cypress.klaytn.net:8651"),
            //프라이빗키로 해당 URL의 클레이튼 네트워크에 연결하는 것
            network_id:'8217',
            gas:GASLIMIT,
            gasPrice:null,
        },
        kas:{
            provider: () => new HDWalletProvider(PRIVATE_KEY, "https://node-api.klaytnapi.com/v1/klaytn"),
            network_id:'8217',
            gas:GASLIMIT,
            gasPrice:null,
        } 
    },
} 

위와 같은 truffle-config.js 일때…

PS C:\Users\LG\Desktop\KlayArticle> truffle deploy --network mainnet
Using network 'mainnet'.

Running migration: 1_initial_migration.js
  Deploying Migrations...
  ... 0xc59aaee1b0be7dc510eeb0d5fe9099d3a416e443d7245520e4b1fc8ce0c19eac
  Migrations: 0xfbdd7814f2e525bd7c41638ce73c857d3f5f902a
Saving artifacts...
Running migration: 2_deploy_contract.js
  Deploying articleManager...
  ... 0x01b4389531cb43a33310b84f1d25b57dac7e20772c0dd2692c5f230eef498e3d
  articleManager: 0x0a7637f4e82189b7e0faa35d5ef84e2c273ff506
Saving artifacts...
파일에 Address 입력 성공
파일에 ABI 입력 성공
PS C:\Users\LG\Desktop\KlayArticle> truffle deploy --network kas
Compiling .\contracts\ArticleManager.sol...
Compiling .\contracts\Migrations.sol...
Writing artifacts to .\build\contracts

위와 같은 결과가 발생합니다. 그러니까 https://api.cypress.klaytn.net:8651 을 이용할땐 정상적으로 migration 폴더에 자바스크립트 파일이 실행되어 abi와 address 를 저장시킬 수 있는데 반해 https://node-api.klaytnapi.com/v1/klaytn 를 사용하면 build 만 생성되고 맙니다. 어떻게 하면 https://node-api.klaytnapi.com/v1/klaytn 를 사용하여 https://api.cypress.klaytn.net:8651 를 사용할때처럼 정상적으로 작동하게 만들 수 있나요?

안녕하세요, 현재 KAS Node API를 이용해서 해당 기능이 동작하지 않습니다. KAS에서 추가 기능지원이 필요하고 해당 기능은 2/24일에 릴리즈 될 예정입니다.

2월 24일 이후에 아래 truffle-config.js파일을 참고하시어 배포하시면 될 것 같습니다.

1 Like

안녕하세요! 혹시 해당 기능이 24일에 릴리즈 되었을까요?

mainnet: {
  provider: () => new HDWalletProvider(config.mnemonic, "https://api.cypress.klaytn.net:8651"),
  network_id: '8217', // Klaytn 메인넷 네트워크 ID
  gas: '8500000',
  gasPrice: null
}

truffle-config.js에 KAS를 사용해서 mainnet 배포할 방법을 찾고 있습니다.

안녕하세요,

먼저 위 댓글에 링크가 빠졌었네요. 아래 파일 참고 부탁드립니다.

릴리즈 일정이 조금 밀려서 아직 사용이 불가능합니다. 준비가 되는대로 알려드릴 수 있도록 하겠습니다.

감사합니다.

1 Like

@taeho_jung 안녕하세요! 이제 truffle 사용 가능합니다! 확인해보시고, 안된다면 또 문의 부탁드립니다.

감사합니다!

1 Like