Solidity에서 온체인 정렬을 통한 오프체인 정렬

3102 단어 solidity
이것은 독특한 접근 방식은 아니지만 계약 크기에서 몇 킬로바이트를 줄이고 가스 사용량을 줄여야 할 때 개인적으로 사용했던 것입니다. 내 사용 사례에서는 특정 승자, 순위, 가격 분포 등을 결정하기 위해 여러 정렬이 필요했습니다.

지금은 이 글을 작성할 때 이것을 시도할 백엔드 코드에 액세스할 수 없습니다. 아마도 나중에 일부 비계로 이것을 업데이트할 수 있지만 이것이 제가 이것을 구현하는 방법입니다.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;

contract Array {
    uint[] public arr;
    uint[] public arrSorted;
    address payable public _admin;

    constructor()
    {
        _admin = payable(msg.sender);
    }

    event sort(uint[]);

    function sortOffChain() public returns (uint[] memory)
    {
        emit sort(arr);
        return arrSorted;
    }

    function getSortedData(uint[] memory arrData) public
    {
        require(msg.sender == _admin);
        arrSorted = arrData;
    }
}


백엔드에서 알고리즘은 다음과 같습니다.
  • sort()에 대한 이벤트 리스너 수신
  • bubbleSort() [또는 당신에게 적합한 모든 것] 호출
  • getSortedData()의 반환 값으로 bubbleSort() 함수를 호출합니다.

  • 물론 이것은 모든 곳에서 사용되어서는 안되지만 데이터를 정렬하는 빠르고 쉬운 방법입니다.

    좋은 웹페이지 즐겨찾기