크로스체인 토큰 전송

이번 장에서는 Baobab 네트워크와 서비스체인 간에 토큰을 전송하는 방법을 설명합니다. 운영자 계정에 KLAY를 확보하고 브릿지 컨트랙트 및 ERC-20 컨트랙트를 배포합니다. 그런 다음 SCN 서브 브릿지에 계약 주소를 등록합니다. 그리고 ERC-20 토큰 전송을 테스트합니다.

Prerequisites

ERC-20 Token Transfer (one-step)

1 단계 : 운영자 계정에 KLAY 추가하기

SCN에 연결하여 subbridge.parentOperatorsubbridge.childOperator를 실행하여 계정 주소를 확인하세요.

$ kscn attach --datadir ~/data
> subbridge.childOperator
"0x10221f7f9355017cd0c11444e7eecb99621bacce"
> subbridge.parentOperator
"0x3ce216beeafc62d20547376396e89528e1d778ca"

subbridge.parentOperatorsubbridge.childOperator에는 트랜잭션을 보내기에 충분한 KLAY가 있어야 합니다. subbridge.parentOperator는 Baobab 네트워크의 계정이고 subbridge.childOperator는 ServiceChain 네트워크의 계정입니다. Baobab Walletarrow-up-right에서 테스트 계정을 만들고 faucet에서 테스트 KLAY를 받으세요. 그런 다음 일부 KLAY를 parentOperator에 전송합니다. childOperatorhomi가 생성한 테스트 계정에서 KLAY를 가져와야 합니다(EN 설정 및 SCN 연결 가이드 참조).

운영자 계정에 충분한 잔액이 있는지 확인하십시오. 서브브릿지가 설치된 SCN 노드의 콘솔에서 다음과 같이 조회할 수 있습니다.

2 단계 : 컨트랙트 배포

이 단계에서는 브리지 컨트랙트와 토큰 컨트랙트를 부모 체인과 자식 체인에 모두 배포합니다. 토큰 컨트랙트는 발행/전송 테스트를 위한 것이고 브리지 컨트랙트는 토큰 전송 요청을 수신/처리하는데 사용됩니다.

텍스트 편집기에서 아래와 같이 bridge_info.json을 수정합니다.

  • child 부분(ServiceChain 네트워크의 SCN 노드)에 있는 url을 SCN 노드 IP와 kscnd.conf에 있는 RPC_PORT의 포트 번호로 바꾸십시오.

  • child.keyhomi가 생성한 testkey1로 교체합니다.

  • child.operator를 이전 단계에서 조회한 subbridge.childOperator 주소로 설정합니다.

  • parent 부분(Baobab 네트워크의 EN 노드)에 있는 url을 EN 노드 IP와 kend.confRPC_PORT에 있는 포트 번호로 바꾸십시오.

  • parent.key를 이전 단계에서 Baobab Walletarrow-up-right에서 생성한 테스트 계정의 개인 키로 대체합니다.

  • parent.operator를 이전 단계의 subbridge.parentOperator로 설정합니다.

node erc20-deploy.js를 실행하여 토큰 컨트랙트를 배포합니다. 이 스크립트는 브리지 컨트랙트과 토큰 컨트랙트를 모두 배포하고 브릿지 쌍을 초기화하기 위한 API 사용법을 출력해 줍니다.

Step 3: Token transfer

node erc20-transfer-1step.js명령을 실행하여 토큰을 전송합니다. ERC-20 토큰 컨트랙트의 구현을 수정하여 한번의 호출로(one-step) 토큰 전송이 가능합니다. 토큰 컨트랙트의 수정을 원하지 않거나 이미 배포된 토큰 컨트랙트가 있는 경우 ERC-20 Token Transfer (two-step)을 참조하십시오.

결과가 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명령으로 계약을 배포할 수 있습니다.

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 컨트랙트를 배포합니다.

아래 명령어는 requestERC20Transfer()와 함께 ERC-20 인터페이스를 사용하여 KIP-7 토큰을 보내는 예제입니다.

service-chain-value-transfer-examplearrow-up-right을 참조하십시오.

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의 동작도 위와 동일합니다. erc721arrow-up-right, kip17arrow-up-right, and klayarrow-up-right directories contain corresponding example source code.

Last updated

Was this helpful?