117 ethereum hardhat : Hardhat 런타임 환경(HRE)

introduce
Using the HRE
global variables
Accessing the HRE from outside a task
Extending the HRE
hardhat Tutorials , hardhat 教程
Contact 联系方式

• 소개하다



Hardhat 런타임 환경(HRE)은 작업, 테스트 또는 스크립트를 실행할 때 Hardhat이 노출하는 모든 기능을 포함하는 개체입니다. 실제로 Hardhat은 HRE입니다.

Hardhat( const hardhat = require("hardhat") )이 필요한 경우 HRE 인스턴스를 가져옵니다.

초기화 중에 Hardhat 구성 파일은 기본적으로 HRE에 추가할 항목 목록을 구성합니다. 여기에는 작업, 구성 및 플러그인이 포함됩니다. 그러면 작업, 테스트 또는 스크립트가 실행될 때 HRE가 항상 존재하며 여기에 포함된 모든 항목에 액세스할 수 있습니다.

HRE는 모든 Hardhat 구성 요소에서 조정을 중앙 집중화하는 역할을 합니다. 이 아키텍처는 플러그인이 HRE에 액세스할 수 있는 모든 곳에서 사용할 수 있는 기능을 삽입할 수 있도록 합니다.

• HRE 사용



기본적으로 HRE는 작업 실행기 및 구성 시스템에 대한 프로그래밍 방식 액세스를 제공하고 EIP1193-compatible Ethereum 공급자를 내보냅니다.

플러그인은 HRE를 확장할 수 있습니다. 예를 들어 hardhat-ethers은 Ethers.js 인스턴스를 추가하여 작업, 테스트 및 스크립트에서 사용할 수 있도록 합니다.

• 전역 변수



작업, 테스트 또는 스크립트를 실행하기 전에 Hardhat은 HRE를 전역 범위에 주입하여 모든 필드를 전역 변수로 바꿉니다. 작업 실행이 완료되면 이러한 전역 변수가 제거되고 원래 값이 있는 경우 복원됩니다.

모든 사람이 마법의 전역 변수를 좋아하는 것은 아니며 Hardhat은 이러한 변수를 사용하도록 강요하지 않습니다. 작업, 테스트 및 스크립트에서 모든 것을 명시적으로 수행할 수 있습니다.

테스트 또는 스크립트를 작성할 때 require("hardhat")를 사용하여 HRE를 가져올 수 있습니다. 이에 대한 자세한 내용은 Accessing the HRE from outside a task에서 확인할 수 있습니다.

작업을 정의할 때 구성 API를 명시적으로 가져오고 HRE를 작업에 대한 인수로 명시적으로 받을 수 있습니다. 이에 대한 자세한 내용은 Creating your own tasks에서 확인할 수 있습니다.

• 작업 외부에서 HRE에 액세스



HRE는 모든 JavaScript 또는 TypeScript 파일에서 사용할 수 있습니다. 그렇게 하려면 require("hardhat") 로 가져오기만 하면 됩니다. 이렇게 하면 개발 워크플로를 더 잘 제어하거나, 고유한 도구를 만들거나, node.js 생태계의 다른 개발 도구와 함께 Hardhat을 사용할 수 있습니다.
npx hardhat test 대신 Mocha을 사용하여 직접 테스트를 실행하려면 다음과 같이 HRE를 명시적으로 가져와서 수행할 수 있습니다.

const hre = require("hardhat");
const assert = require("assert");

describe("Hardhat Runtime Environment", function () {
  it("should have a config field", function () {
    assert.notEqual(hre.config, undefined);
  });
});


이런 식으로 Hardhat용으로 작성된 테스트는 일반적인 Mocha 테스트일 뿐입니다. 이를 통해 Hardhat 전용 플러그인 없이도 즐겨 사용하는 편집기에서 실행할 수 있습니다. 예를 들어 run them from Visual Studio Code using Mocha Test Explorer .

• HRE 확장



HRE는 사용자와 플러그인 개발자가 Hardhat에서 빌드를 시작하는 데 필요한 핵심 기능만 제공합니다. 프로젝트에서 Ethereum과 직접 인터페이스하는 데 사용하는 것은 예상보다 다소 어려울 수 있습니다.

Ethers.js 또는 ethereum-waffle 과 같은 상위 수준 라이브러리를 사용하면 모든 것이 더 쉬워지지만 이러한 라이브러리가 작동하려면 약간의 초기화가 필요하며 반복될 수 있습니다.

Hardhat을 사용하면 HRE 구성에 연결하고 새로운 기능으로 확장할 수 있습니다. 이렇게 하면 모든 것을 한 번만 초기화하면 되며 HRE가 사용되는 모든 곳에서 새 기능이나 라이브러리를 사용할 수 있습니다.

HRE 익스텐더를 대기열에 추가하여 이를 수행할 수 있습니다. 이 익스텐더는 HRE를 수신하고 새 기능으로 여기에 필드를 추가하는 동기식 함수일 뿐입니다. 이러한 새 필드는 injected into the global scope during runtime도 가져옵니다.

예를 들어 Web3.js의 인스턴스를 HRE에 추가하려면 web3 패키지를 설치하고 hardhat.config.js에 다음을 추가하면 됩니다.

extendEnvironment((hre) => {
  const Web3 = require("web3");
  hre.Web3 = Web3;

  // hre.network.provider is an EIP1193-compatible provider.
  hre.web3 = new Web3(hre.network.provider);
});


• hardhat 자습서 , hardhat 教程



CN 중국어 Github hardhat 教程 : github.com/565ee/hardhat_CN
CN 중국어 CSDNhardhat 教程 : blog.csdn.net/wx468116118
EN 英文 Github hardhat Tutorials : github.com/565ee/hardhat_EN

• 연락처 联系方式



홈페이지 : 565.ee
GitHub : github.com/565ee
이메일 : [email protected]
페이스북 : facebook.com/565.ee
트위터 :
텔레그램 : t.me/ee_565

좋은 웹페이지 즐겨찾기