7-1. Connect Contract to Frontend
src/klaytn
caver.js
KlaystagramContract.js
src/redux
1) src/klaytn
src/klaytn
src/klaytn
: Contains files that help interact with Klaytn blockchain.
src/klaytn/caver.js
: Instantiates caver within configured setting.참고) caver-js는 Klaytn 노드와 연결하여 해당 노드나 Klaytn에 배포된 컨트랙트와의 상호작용을 지원해주는 RPC 라이브러리입니다.
src/klaytn/Klaystagram.js
: Creates an instance of contract using caver-js API. 이 인스턴스를 통해 컨트랙트와 상호작용할 수 있습니다
caver.js
caver.js
연결 후 caver를 이용하여 스마트 컨트랙트의 메서드를 호출할 수 있습니다.
KlaystagramContract.js
KlaystagramContract.js
컨트랙트와 상호작용하려면 컨트랙트 인스턴스가 필요합니다.
KlaystagramContract
는 DEPLOYED_ABI
(Application Binary Interface)와 DEPLOYED_ADDRESS
를 cav.klay.Contract
API에 전달하여 배포된 Klaystagram 컨트랙트와 상호작용할 컨트랙트 인스턴스를 생성합니다.
Klaystagram.sol
컨트랙트를 컴파일 & 배포할 때(5. 컨트랙트 배포), deployedABI
과 deployedAddress
파일을 이미 생성하였습니다. 이 파일들은 Klaystagram 컨트랙트의 ABI와 배포된 컨트랙트의 주소를 담고 있습니다.
웹팩 설정 덕분에 변수(DEPLOYED_ADDRESS
, DEPLOYED_ABI
)를 통해 이들 파일에 접근할 수 있습니다.
DEPLOYED_ADDRESS
는 배포된 컨트랙트의 주소를 반환합니다.DEPLOYED_ABI
는 Klaystagram 컨트랙트의 ABI를 반환합니다.
cf) contract ABI
(Application Binary Interface)
contract ABI
is the interface for calling contract methods. 이러한 인터페이스를 통해 아래와 같이 컨트랙트 메서드를 호출할 수 있습니다.
contractInstance.methods.methodName().call()
contractInstance.methods.methodName().send({ ... })
Now we are ready to interact with contract in the application. cf. For more information, refer to caver.klay.Contract.
2) src/redux
src/redux
Klaystagram 인스턴스로 API 함수를 만들 것입니다. API 함수를 호출한 후 리덕스 스토어를 사용하여 모든 데이터의 흐름을 제어합니다.
컨트랙트 인스턴스를 임포트합니다.
컴포넌트가 컨트랙트와 상호작용해야 할 때
KlaystagramContract
인스턴스를 사용하여 컨트랙트 메서드를 호출할 수 있습니다.컨트랙트 메서드를 호출합니다.
컨트랙트에 데이터를 저장합니다.
트랜잭션 실행이 성공하면 컨트랙트에서 리덕스 스토어로 정보를 저장하기 위해 리덕스 액션을 호출합니다.
리덕스 스토어는 프론트엔드에서의 모든 데이터의 흐름을 제어합니다.
Last updated