11L 이더리움 안전모 : 채굴 모드

introduce
Mempool behavior
Mining transactions in FIFO order
Removing and replacing transactions
Using RPC methods
hardhat Tutorials , hardhat 教程
Contact 联系方式

• 소개하다



Hardhat Network는 각 거래를 수신하는 즉시 블록을 자동 채굴하도록 구성하거나 가능한 한 많은 보류 중인 거래를 통합하여 새 블록을 주기적으로 채굴하는 간격 채굴을 위해 구성할 수 있습니다.

이러한 모드 중 하나를 사용하거나 둘 다 사용할 수 있습니다. 기본적으로 자동 모드만 활성화되어 있습니다.

자동 채굴이 비활성화되면 전송된 모든 트랜잭션이 미래에 채굴될 수 있는 모든 트랜잭션을 포함하는 mempool에 추가됩니다. 기본적으로 Hardhat Network의 mempool은 Geth와 동일한 규칙을 따릅니다. 이것은 무엇보다도 트랜잭션이 채굴자에게 지불된 수수료(및 도착 시간)에 따라 우선 순위가 지정되고 유효하지 않은 트랜잭션이 삭제됨을 의미합니다. 기본 mempool 동작 외에도 alternative FIFO behavior is also available .

자동 채굴이 비활성화된 경우 보류 중인 트랜잭션은 eth_getBlockByNumber RPC 방법(블록 번호 인수로 "pending" 사용)을 통해 쿼리할 수 있으며 hardhat_dropTransaction RPC 방법을 사용하여 제거할 수 있으며 새 트랜잭션을 제출하여 교체할 수 있습니다. nonce는 같지만 채굴자에게 지불하는 수수료가 10% 이상 증가한 트랜잭션입니다.

채굴 모드가 활성화되지 않은 경우 새 블록이 채굴되지 않지만 evm_mine RPC 방법을 사용하여 새 블록을 수동으로 채굴할 수 있습니다. 이렇게 하면 보류 중인 트랜잭션을 가능한 한 많이 포함하는 새 블록이 생성됩니다.

• 멤풀 동작



자동 채굴이 비활성화되면 전송된 모든 트랜잭션이 미래에 채굴될 수 있는 모든 트랜잭션을 포함하는 mempool에 추가됩니다. 기본적으로 Hardhat Network의 mempool은 Geth와 동일한 규칙을 따릅니다. 이것은 무엇보다도 다음을 의미합니다.
  • 가스 가격이 높은 트랜잭션이 먼저 포함됨
  • 두 개의 트랜잭션이 포함될 수 있고 둘 다 채굴자에게 동일한 총 수수료를 제공하는 경우 먼저 받은 트랜잭션이 먼저 포함됩니다
  • .
  • 트랜잭션이 유효하지 않은 경우(예: 트랜잭션의 nonce가 보낸 주소의 nonce보다 낮음) 트랜잭션이 삭제됩니다.

  • "pending"블록 태그를 사용하여 다음 블록에 포함될 보류 중인 트랜잭션 목록을 얻을 수 있습니다.

    const pendingBlock = await network.provider.send("eth_getBlockByNumber", [
      "pending",
      false,
    ]);
    


    • FIFO 순서의 마이닝 트랜잭션



    Hardhat Network의 mempool 주문 거래 방식은 사용자 정의할 수 있습니다. 기본적으로 Geth의 규칙에 따라 우선 순위가 지정되지만 대신 FIFO 동작을 활성화하여 트랜잭션이 전송된 순서대로 블록에 추가되도록 하고 다른 네트워크에서 블록을 재생성하는 데 유용합니다.

    다음을 사용하여 구성에서 FIFO 동작을 활성화할 수 있습니다.

    networks: {
      hardhat: {
        mining: {
          mempool: {
            order: "fifo"
          }
        }
      }
    }
    


    • 트랜잭션 제거 및 교체



    네트워크 도우미를 사용하여 mempool의 트랜잭션을 제거할 수 있습니다.

    const txHash = "0xabc...";
    await helpers.dropTransaction(txHash);
    


    이미 mempool에 있는 것과 동일한 nonce를 사용하지만 가스 가격이 더 높은 새 트랜잭션을 전송하여 트랜잭션을 교체할 수도 있습니다. Geth에서와 같이 이것이 작동하려면 새로운 가스/수수료 가격이 현재 거래의 가스 가격보다 최소 10% 높아야 합니다.

    • RPC 방법 사용


    evm_setAutomineevm_setIntervalMining 두 가지 RPC 방법을 사용하여 런타임 시 마이닝 동작을 변경할 수 있습니다. 예를 들어 자동 마이닝을 비활성화하려면 다음을 수행하십시오.

    await network.provider.send("evm_setAutomine", [false]);
    


    간격 마이닝을 활성화하려면:

    await network.provider.send("evm_setIntervalMining", [5000]);
    


    • 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

    좋은 웹페이지 즐겨찾기