# Kaikas, caver에서 smart contract 실행 실패

**URL:** <https://devforum.kaia.io/t/kaikas-caver-smart-contract/2697>\
**Category:** Kaia\
**Tags:** caver-js, smart-contract\
**Created:** [12월 8, 2021, 3:40오전 UTC](https://devforum.kaia.io/t/kaikas-caver-smart-contract/2697 "2021-12-08T03:40:13Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![klay](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/klay/32/1277_2.png) [@klay](https://devforum.kaia.io/u/klay)\
**Post date:** [12월 8, 2021, 3:40오전 UTC](https://devforum.kaia.io/t/kaikas-caver-smart-contract/2697/1 "2021-12-08T03:40:13Z")

</div>

클라이언트사이드 Web 에서 Kaikas 지갑과 caver를 이용해 개발중입니다.  
돈 보내는건 잘 되는데, 스마트 컨트랙트를 실행하면 지갑에서 다음과 같은 에러가 나면서 확인 버튼이 활성화 되질 않습니다.

**에러메시지** : _Kaikas는 한 번에 하나의 트랜잭션만 처리합니다. Kaikas를 열어 대기 중인 트랜잭션을 새로고침 해주세요. 만약 대기 상태가 계속된다면 이용 중인 서비스가 트랜잭션을 처리하지 않는 것이니 트랜잭션을 취소바랍니다._

별도로 대기중인 트랜잭션은 없는 상태인데도 메시지가 뜨고 있으며, 코드는 다음과 같습니다.

```auto
accounts = await connectKaikas();
account = accounts[0]

async function Question_1(){
	abi = [
		{
			"constant": false,
			"inputs": [{"name": "to", "type": "address"}],
			"name": "/함수명/",
			"outputs": [],
			"payable": true,
			"stateMutability": "payable",
			"type": "function"
		}
	]
	contractInstance = caver.contract.create(abi, '/스마트컨트랙트가 배포된 주소/')
        /* 이것도 안됨
        receipt = await contractInstance.methods./함수명/(account).send({ 
		from: account, 
		value: caver.utils.toPeb(20, "KLAY"), 
		gas: '0x4bfd200' 
	    })
        */
	receipt = await contractInstance.send({ 
		from: account, 
		value: caver.utils.toPeb(20, "KLAY"), 
		gas: '0x4bfd200' 
	}, '/함수명/', account)
}

```

그래서 예제에서 다른 방법을 찾아냈는데, 이렇게 하면 보내는 것 까지는 되지만 ,  
execution reverted 에러(0x9)가 납니다.

```auto
async function Question_2(){
	const data = caver.klay.abi.encodeFunctionCall(
	{
		name: '/함수명/',
		type: 'function',
		inputs: [{
			type: 'address',
			name: 'to'
		}]
	},[account])
	
	caver.klay.sendTransaction({
		type: 'SMART_CONTRACT_EXECUTION',
		from: account,
		to: '/스마트컨트랙트가 배포된 주소/',
		value : caver.utils.toPeb(20, 'KLAY'),
		gas: '8000000',
		data
	})
}

```

참고로 디플로이된 스마트 컨트랙트 해당 함수의 require는 다음과 같습니다.

`require(msg.value == 1000000000000000000 * 2);`

---

<div class="post-metadata">

**Author:** ![Johnny](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/johnny/32/845_2.png) [@Johnny](https://devforum.kaia.io/u/Johnny)\
**Post date:** [12월 8, 2021, 4:49오전 UTC](https://devforum.kaia.io/t/kaikas-caver-smart-contract/2697/2 "2021-12-08T04:49:00Z")

</div>

@klay  
안녕하세요  
Klaytn Forum에 찾아주셔서 감사합니다.

사용중이신 Caver-js 버전과 배포한 컨트랙트 주소, 사용한 메소드를 공유해주신다면 더 빠르고 정확한 답변드릴 수 있습니다!

감사합니다.

---

<div class="post-metadata">

**Author:** ![klay](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/klay/32/1277_2.png) [@klay](https://devforum.kaia.io/u/klay)\
**Post date:** [12월 9, 2021, 7:05오전 UTC](https://devforum.kaia.io/t/kaikas-caver-smart-contract/2697/3 "2021-12-09T07:05:32Z")

</div>

우선 caver.min.js 는 다른 홈페이지에서 가져온거라 정확히 버전을 모르겠는데,  
Sr.VERSION=“4.17.21” 라는 문자열이 보입니다.  
첫번째 방법으로는 해결이 안되고 두번째 방법이 그나마 지갑에서 보내는건 돼서 이 방법으로 시도 했구요, 두번째 방법에서 0x9 에러가 나던 것은, 제가 직접 디플로이 해서 해보니까 잘 돼서 알아보니  
컨트랙트 개발자가 require 값을 잘못 알려주었던 것이었습니다ㅠ  
답변 주셔서 감사합니다.

---

<div class="post-metadata">

**Author:** ![Johnny](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/johnny/32/845_2.png) [@Johnny](https://devforum.kaia.io/u/Johnny)\
**Post date:** [12월 9, 2021, 8:40오전 UTC](https://devforum.kaia.io/t/kaikas-caver-smart-contract/2697/4 "2021-12-09T08:40:16Z")

</div>

@klay  
해결이 되셨다니 다행이네요.  
좋은하루보내세요.  
감사합니다.
