이번 장에서는 Baobab 네트워크와 서비스체인 간에 토큰을 전송하는 방법을 설명합니다. 운영자 계정에 KLAY를 확보하고 브릿지 컨트랙트 및 ERC-20 컨트랙트를 배포합니다. 그런 다음 SCN 서브 브릿지에 계약 주소를 등록합니다. 그리고 ERC-20 토큰 전송을 테스트합니다.
subbridge.parentOperator 및 subbridge.childOperator에는 트랜잭션을 보내기에 충분한 KLAY가 있어야 합니다. subbridge.parentOperator는 Baobab 네트워크의 계정이고 subbridge.childOperator는 ServiceChain 네트워크의 계정입니다. Baobab Wallet에서 테스트 계정을 만들고 faucet에서 테스트 KLAY를 받으세요. 그런 다음 일부 KLAY를 parentOperator에 전송합니다. childOperator는 homi가 생성한 테스트 계정에서 KLAY를 가져와야 합니다(EN 설정 및 SCN 연결 가이드 참조).
$ kscn account import ~/homi-output/keys_test/testkey1
Your new account is locked with a password. Please give a password. Do not forget this password.
Passphrase:
Repeat passphrase:
Address: {80119c31cdae67c42c8296929bb4f89b2a52cec4}
node erc20-transfer-1step.js명령을 실행하여 토큰을 전송합니다. ERC-20 토큰 컨트랙트의 구현을 수정하여 한번의 호출로(one-step) 토큰 전송이 가능합니다. 토큰 컨트랙트의 수정을 원하지 않거나 이미 배포된 토큰 컨트랙트가 있는 경우 ERC-20 Token Transfer (two-step)을 참조하십시오.
$ node erc20-transfer-1step.js
------------------------- erc20-transfer-1step START -------------------------
alice balance: 0
requestValueTransfer..
alice balance: 100
------------------------- erc20-transfer-1step END -------------------------
결과가 alice balance: 100이면 성공적으로 실행된 것입니다.
ERC-20 Token Transfer (two-step)
2번의 호출로 토큰 전송하기 위해 <0>erc20-transfer-2step.js</0>를 실행합니다. 2번의 호출로 토큰 전송하는 예는 ERC-20 토큰 컨트랙트를 수정하지 않고 그대로 사용합니다. 먼저 (1) 브릿지 컨트랙트를 승인한 다음 (2) 컨트랙트 함수인 requestERC20Transfer()를 호출하는 단계로 구성됩니다. 브릿지 및 토큰 컨트랙트를 이미 배포했으므로 이번 단계에서는 컨트랙트를 배포하지 않습니다. 만약 컨트랙트를 배포하지 않은 경우 먼저 컨트랙트 배포를 진행해야 합니다. node erc20-deploy.js명령으로 계약을 배포할 수 있습니다.
$ node erc20-transfer-2step.js
> ------------------------- erc20-transfer-2step START -------------------------
> alice balance: 100
> requestValueTransfer..
> alice balance: 200
------------------------- erc20-transfer-2step END -------------------------
KIP-7 Token Transfer via ERC-20 Interface (two-step)
KIP-7은 ERC-20과 호환되는 토큰 표준입니다. KIP-7 토큰 컨트랙트의 requestERC20Transfer() 함수를 호출하여 부모 체인과 자식 체인 간에 KIP-7 토큰을 전송할 수 있습니다. ERC-20 인터페이스를 통해 KIP-7 토큰을 전송하는 경우, 브릿지가 트랜잭션 발신자를 대신하여 토큰을 보낼 수 있도록 approve() 함수를 호출합니다. 그런 다음 requestERC20Transfer() 함수를 호출합니다. 아래 명령으로 브릿지 컨트랙트와 KIP-7 컨트랙트를 배포합니다.
Native Support for KIP-7 and KIP-17 (To Be Implemented)
현재 Klaytn 팀에서 제공하는 브릿지 컨트랙트는 토큰 전송을 위해 requestERC20Transfer() 및 requestERC721Transfer()만 지원합니다. KIP-7 및 KIP-17에 대한 기능은 곧 지원될 예정입니다. 구현이 완료되기 까지는 위의 설명과 같이 ERC-20 인터페이스를 사용하여 KIP-7 토큰을 전송할 수 있습니다.
ERC-721, KIP-17와 KLAY 토큰 전송
ERC-721, KIP-17, KLAY의 동작도 위와 동일합니다. erc721, kip17, and klay directories contain corresponding example source code.