대부분의 블록체인은 자체 네트워크 외부에 호스팅된 데이터에 접근할 수 없기 때문에, 일반적으로 외부 제3자 서비스인 오라클을 사용하여 네트워크 외부의 위치에서 정보를 가져오거나 정보를 전송합니다. Substrate 기반 블록체인에서는 오프체인 워커(OCW)가 이와 유사한 기능을 제공하지만, 온체인 상태에 접근할 수 있는 장점이 있습니다.
이 가이드에서는 오프체인 워커를 사용하여 GET 또는 POST 메서드를 사용하여 HTTP 요청을 하는 방법을 설명합니다. 이 가이드의 예제에서는 cryptocompare API에서 비트코인 가격을 가져오는 방법과 오프체인 워커 API를 사용하여 데이터를 제출하는 방법을 볼 수 있습니다.
Rust는 HTTP 요청을 보내기 위한 자체 라이브러리를 제공한다는 것을 알 수 있습니다. 그러나 오프체인 워커는 자체 WebAssembly 실행 환경인 no-std 환경에서 실행되므로 표준 Rust 라이브러리에 액세스할 수 없습니다. 대신, Substrate는 HTTP 요청을 보내기 위해 사용할 수 있는 자체 라이브러리를 제공합니다.
Substrate HTTP 라이브러리는 다음과 같은 메서드를 지원합니다:
GET
POST
PUT
PATCH
DELETE
데드라인 설정 및 HTTP 요청 인스턴스화
대부분의 경우, 오프체인 워커가 작업을 실행하는 데 허용되는 시간을 제한하고 싶을 것입니다. 이 예제에서는 외부 호출을 완료하기 위해 2초의 하드 코딩된 데드라인을 설정할 수 있습니다. 또한 응답을 무기한으로 기다릴 수도 있습니다. 그러나 무기한으로 기다리는 것은 외부 호스트 머신에서 타임아웃이 발생할 수 있습니다.
2초의 데드라인을 생성합니다.
let deadline = sp_io::offchain::timestamp().add(Duration::from_millis(2_000));