Предел газового лимита при попытке рассчитать одноразовый номер для доказательства работы с основательностью - PullRequest
0 голосов
/ 25 апреля 2020

Я полный новичок ie по прочности, и я пытаюсь написать умный контракт с подтверждением работы для назначения.

I ha sh необходимые строки с одноразовым номером и проверьте, если первые 5 байтов дайджеста равны 0. Однако я не могу получить результат, так как используемый газ достигает предела газа. Что я могу сделать, чтобы вернуть правильный одноразовый номер?

Я использую Ethereum Studio IDE. Вот мой код:

pragma solidity ^0.5.10;

contract MyContract {

    uint256 nonce;
    bytes32 digest;

    constructor() public {
      nonce = 0;
      digest = getDigest();
    }

    function findNonce() public returns (uint256) {
        while (checkDigest() != true) {
            nonce++;
            digest = getDigest();
        }
        return nonce;
    }

    function getDigest() public view returns (bytes32) {
        return bytes32(sha256(abi.encodePacked("blockchain-course.org:", "211", nonce)));
    }

    function checkDigest() public view returns (bool) {
        bytes5 mask = 0xffffffffff;
        bytes5 first5 = bytes5(digest & mask);
        return first5 == 0x0000000000;
    }

}

Изменил мой код на это:

pragma solidity ^0.5.10;

contract MyContract {


    uint256 nonce;
    bytes5 digest;

    constructor() public {
      nonce = 525;
      digest = getDigest();
    }

    function findNonce() public returns (uint256) {
        while (checkDigest() != true) {
            nonce++;
            digest = getDigest();
        }
        return nonce;
    }

    function getDigest() public view returns (bytes5) {
        return bytes5(sha256(abi.encodePacked("blockchain-course.org:", "211", nonce)));
    }


    function checkDigest() public view returns (bool) {
        // bytes5 mask = 0xffffffffff;
        // bytes5 first5 = bytes5(digest & mask);
        return digest == 0x0000000000;
    }


}

При запуске его в Remix Online IDE произошел сбой браузера из-за нехватки памяти.

...